/** * Digestion RUNTIME d'un costum servi par `getcostumjson` (format legacy brut) en * `CostumRuntimeContext` par collection — permet de résoudre un costum HORS du registre bundlé sans * re-publication (RFC doc/31 fil C, option 3bis). Port fidèle de `tools/parity/scripts/costum-fields.mjs` * (backend), SANS l'inférence de type par valeurs stockées (pas d'accès base côté client ; en pratique * inutile — `setType` BSON natif ne concerne aucun costum déployé). Le type reste DÉCLARÉ (inputType/ * rules), l'enum vient de `lists`, la multiplicité de la config. */ import type { CostumRuntimeContext } from "./runtime.js"; import type { Collection } from "./types.js"; /** Sous-objet `costum` renvoyé par `getcostumjson` (data). Champs utiles à la digestion. */ export interface CostumJsonData { slug?: string; typeObj?: Record; lists?: Record; } interface TypeObjNode { sameAs?: string; add?: boolean; createLabel?: string; dynFormCostum?: { beforeBuild?: { properties?: Record; }; onload?: { actions?: OnloadActions; }; onLoads?: { onload?: { actions?: OnloadActions; }; }; }; } interface OnloadActions { presetValue?: Record; hide?: Record; } interface FieldDef { inputType?: string; label?: string; multiple?: boolean; select2?: { multiple?: boolean; }; maximumSelectionLength?: number | string; rules?: { number?: unknown; }; list?: string; tagsList?: string; savePath?: string; } /** * Digère `getcostumjson` → `CostumRuntimeContext` pour UNE collection (null si le costum ne couvre pas * cette collection). `meta` = identité de l'élément porteur (costumId/costumType, résolue par slug/getinfo). */ /** Contexte digéré + capacités de création (add/createLabel) + clé `typeObj` (sous-type) du node. */ export type DigestedCostum = CostumRuntimeContext & { add: boolean; createLabel: string | null; typeKey: string; }; /** * Énumère les FORMULAIRES d'un costum (une entrée par clé `typeObj` portant un `dynFormCostum`) — permet à * l'assistant de générer un CostumFormSchema PAR SOUS-TYPE (ex. poi → `recoveryCenter` ET `article`), là où * `digestCostumJson(collection)` n'en renvoie qu'un. `discriminator` = valeur de `presetValue.type` (le type * estampillé au save qui distingue le sous-type), sinon la clé elle-même. */ export declare function listCostumFormNodes(data: CostumJsonData): Array<{ typeKey: string; collection: string; add: boolean; createLabel: string | null; discriminator?: string; }>; export declare function digestCostumJson(data: CostumJsonData, collection: Collection, meta: { costumId: string; costumType: string; slug?: string; baseFieldNames?: string[]; }, opts?: { typeKey?: string; }): DigestedCostum | null; export {};