@esfaenza/flow-builder 20.3.3 → 20.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -13,8 +13,13 @@ import { EFMarkerType, EFConnectableSide } from '@foblex/flow';
13
13
  * - gli enum sono stringhe, ma i tipi sono aperti (`| string`) perche' gli elenchi
14
14
  * autoritativi arrivano da `GET /flows/dictionaries` e possono crescere (§13.11).
15
15
  */
16
- /** §4.2 — i sette tipi del sistema. Aperto: il dizionario `dataTypes` e' autoritativo. */
17
- type FlowDataType = 'String' | 'Integer' | 'Number' | 'Date' | 'Boolean' | 'Enum' | 'Object' | string;
16
+ /**
17
+ * §4.2 gli otto tipi del sistema. Aperto: il dizionario `dataTypes` e' autoritativo.
18
+ *
19
+ * `Structure` non e' un doppione di `Object` (§4.7): di un `Object` non record il flow non sa
20
+ * nulla oltre a trasportarlo, di una `Structure` legge e scrive i **membri**.
21
+ */
22
+ type FlowDataType = 'String' | 'Integer' | 'Number' | 'Date' | 'Boolean' | 'Enum' | 'Object' | 'Structure' | string;
18
23
  type FlowProcessType = 'Screen' | 'AutoLaunched' | 'Evaluation' | 'Orchestration' | string;
19
24
  type FlowVersionStatus = 'Draft' | 'InvalidDraft' | 'UnderReview' | 'Active' | 'Obsolete' | string;
20
25
  type FlowTriggerType = 'None' | 'RecordBeforeSave' | 'RecordAfterSave' | 'RecordBeforeDelete' | 'Scheduled' | 'Event' | string;
@@ -28,6 +33,9 @@ type FlowTransactionModel = 'Automatic' | 'CurrentTransaction' | 'NewTransaction
28
33
  * §4.2 — un riferimento **oppure** un valore letterale.
29
34
  * Va valorizzato **uno e un solo** campo; `formulaExpression` e' l'unica eccezione
30
35
  * (espressione + tipo atteso). Piu' campi insieme = `VALUE_AMBIGUOUS`.
36
+ *
37
+ * Non esiste un `structureValue` e non ci sara' (§4.7): un'istanza di classe nasce dal runtime
38
+ * e nel metadata si cita solo per riferimento, come un record.
31
39
  */
32
40
  interface FlowValue {
33
41
  elementReference?: string;
@@ -98,7 +106,11 @@ interface FlowVariable {
98
106
  name?: string;
99
107
  description?: string;
100
108
  dataType?: FlowDataType;
101
- /** Obbligatorio per `Object` ed `Enum`: nome dell'entita' o del tipo di enum. */
109
+ /**
110
+ * Obbligatorio per `Object`, `Enum` e `Structure`: nome dell'entita', del tipo di enum o
111
+ * della classe. Su una `Structure` la sua assenza e' un **errore** (`OBJECT_TYPE_MISSING`),
112
+ * non un avviso: senza il nome della classe il runtime non ha nulla da istanziare (§4.7).
113
+ */
102
114
  objectType?: string;
103
115
  isCollection?: boolean;
104
116
  isInput?: boolean;
@@ -348,6 +360,10 @@ interface FlowCustomError extends FlowNodeBase {
348
360
  /** §5.12 */
349
361
  interface FlowTransformValueAction {
350
362
  transformType?: FlowTransformType;
363
+ /**
364
+ * Il campo di destinazione, oppure — se il target e' una `Structure` — il nome del
365
+ * **membro** della classe (§5.12, §4.7).
366
+ */
351
367
  outputFieldApiName?: string;
352
368
  value?: FlowValue;
353
369
  inputParameters?: FlowInputParameter[];
@@ -539,10 +555,19 @@ interface FlowDictionaryEntry {
539
555
  }
540
556
  interface FlowDataTypeEntry extends FlowDictionaryEntry {
541
557
  value: FlowDataType;
542
- /** `Object` ed `Enum` richiedono `objectType` (§4.6). */
558
+ /**
559
+ * `Object`, `Enum` e `Structure` richiedono `objectType` (§4.6). Su una `Structure` la sua
560
+ * assenza e' un errore e non un avviso: vedi {@link isStructure} e §4.7.
561
+ */
543
562
  requiresObjectType?: boolean;
544
563
  /** `scale` si applica solo ai numerici (§4.6). */
545
564
  supportsScale?: boolean;
565
+ /**
566
+ * §4.7 — il tipo e' un'istanza di classe: `objectType` porta il nome della classe, i valori
567
+ * proponibili arrivano da `listStructures()` e i suoi **membri** da
568
+ * `describeStructure()`. Non ha una forma letterale con cui esprimersi.
569
+ */
570
+ isStructure?: boolean;
546
571
  }
547
572
  /** §3.2 — la voce che descrive un tipo di elemento. */
548
573
  interface FlowElementTypeEntry extends FlowDictionaryEntry {
@@ -658,20 +683,69 @@ interface FlowFieldDescription {
658
683
  label?: string | null;
659
684
  dataType?: FlowDataType;
660
685
  objectType?: string | null;
686
+ /**
687
+ * `false` → non si puo' filtrare su questo campo. Non e' un dettaglio: la chiave di
688
+ * un'entita' con chiave composta puo' essere **non filtrabile** (porta la forma canonica
689
+ * della chiave), e il filtro «per identificativo» va scritto una colonna alla volta (§5.7).
690
+ */
661
691
  isFilterable?: boolean;
662
692
  isSortable?: boolean;
693
+ /** Aggiornabile da un Update: altrimenti `FIELD_NOT_UPDATEABLE` (§5.7). */
663
694
  isUpdateable?: boolean;
695
+ /**
696
+ * Valorizzabile da un Create: altrimenti `FIELD_NOT_CREATEABLE` (§5.7). **Non** e' lo stesso
697
+ * insieme di `isUpdateable` — la colonna di una chiave naturale la scrive chi crea il record
698
+ * e non si cambia dopo, un identificativo generato dal database e' l'opposto.
699
+ */
700
+ isCreateable?: boolean;
664
701
  isRequired?: boolean;
665
702
  /** `true` → i valori ammessi si chiedono a `.../fields/{field}/values`. */
666
703
  hasClosedValueSet?: boolean;
667
704
  }
668
- /** `any` | `filterable` | `sortable` | `updateable` (§6.4). */
669
- type FlowFieldUsage = 'any' | 'filterable' | 'sortable' | 'updateable';
705
+ /** `any` | `filterable` | `sortable` | `updateable` | `createable` (§6.4). */
706
+ type FlowFieldUsage = 'any' | 'filterable' | 'sortable' | 'updateable' | 'createable';
670
707
  interface FlowFieldValue {
671
708
  value: string;
672
709
  label?: string | null;
673
710
  }
674
- /** Voce di catalogo per action, script, form, eventi, tipi di enum. */
711
+ /**
712
+ * §4.7 — un membro di una classe utilizzabile come `Structure`.
713
+ *
714
+ * È l'analogo di {@link FlowFieldDescription} per le classi, e la colonna che conta e'
715
+ * `isWritable`: un membro calcolato (una property senza setter) si legge in una condizione ma
716
+ * assegnarlo e' `TARGET_NOT_WRITABLE`. Nei campi che chiedono una **destinazione** si propongono
717
+ * quindi solo i membri scrivibili.
718
+ */
719
+ interface FlowStructureMember {
720
+ name: string;
721
+ label?: string | null;
722
+ description?: string | null;
723
+ dataType?: FlowDataType;
724
+ isCollection?: boolean;
725
+ /** Per un membro `Object`, `Enum` o `Structure`: l'entita', l'enum o la classe annidata. */
726
+ objectType?: string | null;
727
+ isWritable?: boolean;
728
+ }
729
+ /**
730
+ * §4.7.1 — la risposta di `GET /catalog/structures/{className}/members`: **non** un array di
731
+ * membri, ma la descrizione della classe con l'array sotto `members`.
732
+ *
733
+ * L'involucro porta la `label` della classe, che l'array nudo perderebbe e che serve
734
+ * all'intestazione dell'elenco dei membri; `className` e' ridondante rispetto al path e rende la
735
+ * risposta autoconsistente se finisce in cache. `members` e' **piatto e non ricorsivo**: un membro
736
+ * di tipo `Structure` porta la classe annidata in `objectType` e i suoi membri sono una seconda
737
+ * chiamata, altrimenti una classe che si referenzia renderebbe la risposta infinita.
738
+ */
739
+ interface FlowStructureDescription {
740
+ className?: string;
741
+ label?: string | null;
742
+ /**
743
+ * Vuoto significa **membri non dichiarati**, non "classe inesistente": quella e' un 404, e le
744
+ * due cose portano a comportamenti opposti (digitare a mano contro segnalare la classe).
745
+ */
746
+ members?: FlowStructureMember[];
747
+ }
748
+ /** Voce di catalogo per action, script, form, eventi, tipi di enum, classi. */
675
749
  interface FlowCatalogEntry {
676
750
  name: string;
677
751
  label?: string | null;
@@ -852,10 +926,35 @@ type FlowInterviewStatus = 'Completed' | 'WaitingForScreen' | 'Paused' | 'Suspen
852
926
  /** I criteri dello Start non erano soddisfatti: non e' un errore (§6.5). */
853
927
  | 'NotStarted' | string;
854
928
  type FlowScreenNavigation = 'Next' | 'Previous' | 'Pause' | 'Finish' | string;
855
- /** Il tipo dichiarato **vince** in lettura: distingue `Integer` da `Number` (§6.5). */
929
+ /** §6.5 un record dentro un valore tipizzato: forma propria, non `value`. */
930
+ interface FlowRecordValue {
931
+ objectType?: string;
932
+ id?: string | null;
933
+ fields?: Record<string, unknown>;
934
+ }
935
+ /**
936
+ * §4.7, §6.5 — un'istanza di classe: `className` piu' i **membri**, ognuno a sua volta un
937
+ * valore tipizzato. È la stessa forma in lettura e in scrittura: passando un'istanza come input
938
+ * si scrive `className` e i soli membri che si vogliono valorizzare.
939
+ */
940
+ interface FlowStructureInstance {
941
+ className?: string;
942
+ members?: Record<string, FlowTypedValue>;
943
+ }
944
+ /**
945
+ * Il tipo dichiarato **vince** in lettura: distingue `Integer` da `Number` (§6.5).
946
+ *
947
+ * Due tipi hanno una forma propria invece di `value`: un record (`record`) e un'istanza di
948
+ * classe (`instance`). Chi legge guarda `type` e poi il campo giusto — un `Structure` con
949
+ * `value` valorizzato non esiste.
950
+ */
856
951
  interface FlowTypedValue {
857
952
  type?: FlowDataType;
858
953
  value?: unknown;
954
+ /** Con `type: 'Object'` su un record (§6.5). */
955
+ record?: FlowRecordValue;
956
+ /** Con `type: 'Structure'` (§4.7). */
957
+ instance?: FlowStructureInstance;
859
958
  }
860
959
  interface FlowPendingScreen {
861
960
  elementName?: string;
@@ -975,7 +1074,15 @@ type FlowErrorCategory =
975
1074
  /** Qualcun altro ha salvato: proponi ricarica (§9). */
976
1075
  | 'VersionConflict'
977
1076
  /** Funzione non configurata su questo ambiente: disabilita il comando. */
978
- | 'MissingService' | 'InvalidToken' | 'InterviewNotFound'
1077
+ | 'MissingService'
1078
+ /**
1079
+ * §4.7.1 — classe non registrata (o `IStructureMgr` assente sull'host): il 404 dei membri di
1080
+ * una classe. **Non e' una lista vuota**: quella dice "membri non dichiarati" e lascia
1081
+ * digitare il nome, questa dice "classe sconosciuta" e va segnalata sulla risorsa
1082
+ * (`STRUCTURE_TYPE_UNKNOWN`). Categoria propria perche' altrimenti un 404 ricadrebbe su
1083
+ * `FlowNotFound`, che qui vorrebbe dire una cosa diversa e falsa.
1084
+ */
1085
+ | 'StructureNotFound' | 'InvalidToken' | 'InterviewNotFound'
979
1086
  /** Fallback per un errore di trasporto non categorizzato. */
980
1087
  | 'Unknown' | string;
981
1088
  /** L'errore che ogni primitiva puo' rifiutare (§6, §10). */
@@ -1121,6 +1228,38 @@ declare abstract class FlowBuilderApi {
1121
1228
  abstract listFormParameters(formName: string): Promise<FlowCatalogParameter[]>;
1122
1229
  /** `GET /catalog/enum-types` — per `objectType` delle risorse `Enum`. */
1123
1230
  abstract listEnumTypes(): Promise<FlowCatalogEntry[]>;
1231
+ /**
1232
+ * `GET /catalog/structures` — le classi utilizzabili come `objectType` di una risorsa
1233
+ * `Structure` (§4.7). È un **elenco di classi** nella forma di ogni altro catalogo: i membri
1234
+ * non ci sono, si chiedono con {@link describeStructure} (§4.7.1).
1235
+ *
1236
+ * Opzionale di proposito: un ambiente che non la espone non deve rompersi. L'effetto e' che le
1237
+ * classi non sono verificabili — elenco vuoto significa "non lo so", non "nessuna" — e il nome
1238
+ * si scrive a mano, esattamente come per un catalogo non popolato (§7).
1239
+ */
1240
+ listStructures(): Promise<FlowCatalogEntry[]>;
1241
+ /**
1242
+ * `GET /catalog/structures/{className}/members` — la **descrizione** di una classe: l'analogo di
1243
+ * `listFields` per le `Structure` (§4.7). Si chiama `describeStructure` e non
1244
+ * `listStructureMembers` perche' la risposta non e' un elenco: e' un oggetto con `className`,
1245
+ * `label` e l'array sotto `members` (§4.7.1, `IStructureMgr.DescribeStructure`).
1246
+ *
1247
+ * `members` e' **piatto**: nessuna paginazione e **nessun membro annidato** — un membro di tipo
1248
+ * `Structure` porta la classe in `objectType` e i suoi membri si chiedono con una seconda
1249
+ * chiamata. La risposta e' non ricorsiva di proposito: una classe che si referenzia sarebbe
1250
+ * infinita.
1251
+ *
1252
+ * `isWritable` e' la colonna che decide: nei campi che chiedono una **destinazione** si
1253
+ * propongono solo i membri scrivibili, perche' un membro calcolato si legge ma assegnarlo e'
1254
+ * `TARGET_NOT_WRITABLE`.
1255
+ *
1256
+ * **Tre esiti, non due** (§4.7.1): `members` popolato e' un elenco **autorevole** (fuori
1257
+ * elenco = `STRUCTURE_MEMBER_UNKNOWN`); `members` **vuoto** dice "membri non dichiarati" e il
1258
+ * nome del membro va lasciato digitare; un rifiuto `StructureNotFound` dice "classe non
1259
+ * registrata", ed e' la classe che va segnalata, non il membro. Chi implementa l'interfaccia
1260
+ * non deve appiattire il rifiuto in una descrizione vuota: sono cose diverse.
1261
+ */
1262
+ describeStructure(className: string): Promise<FlowStructureDescription>;
1124
1263
  /** `GET /catalog/events` — per gli eventi di un Wait. */
1125
1264
  abstract listEvents(): Promise<FlowCatalogEntry[]>;
1126
1265
  /**
@@ -1217,6 +1356,18 @@ declare class HttpFlowBuilderApi extends FlowBuilderApi {
1217
1356
  listForms(): Promise<FlowCatalogEntry[]>;
1218
1357
  listFormParameters(formName: string): Promise<FlowCatalogParameter[]>;
1219
1358
  listEnumTypes(): Promise<FlowCatalogEntry[]>;
1359
+ /** §4.7.1 — solo l'elenco delle classi: i membri **non** ci sono, si chiedono a parte. */
1360
+ listStructures(): Promise<FlowCatalogEntry[]>;
1361
+ /**
1362
+ * §4.7.1 — la descrizione della classe: `className`, `label` e i membri sotto `members`. Non e'
1363
+ * un array nudo, e leggerlo come tale darebbe zero membri senza un errore.
1364
+ *
1365
+ * Il 404 non e' `members: []`, e qui e' l'unico posto che lo sappia: senza questa traduzione
1366
+ * ricadrebbe su `FlowNotFound` («il flow non esiste piu’»), che sarebbe falso e indistinguibile
1367
+ * da "membri non dichiarati". Diventa `StructureNotFound`, e chi chiama decide: classe
1368
+ * sconosciuta = segnalare, lista vuota = lasciar digitare.
1369
+ */
1370
+ describeStructure(className: string): Promise<FlowStructureDescription>;
1220
1371
  listEvents(): Promise<FlowCatalogEntry[]>;
1221
1372
  listSubflowCandidates(excluding?: string): Promise<FlowSummary[]>;
1222
1373
  startInterview(request: FlowStartInterviewRequest): Promise<FlowInterviewResult>;
@@ -1717,13 +1868,48 @@ declare class FlowDictionaryStore {
1717
1868
  /** `stepInteractive` e `stepApproval` vogliono gli assegnatari (§5.13). */
1718
1869
  stageStepRequiresAssignees(actionType: string | undefined | null): boolean;
1719
1870
  dataType(value: string | undefined | null): FlowDataTypeEntry | undefined;
1720
- /** §4.6 — `Object` ed `Enum` richiedono `objectType`. */
1871
+ /** §4.6, §4.7 — `Object`, `Enum` e `Structure` richiedono `objectType`. */
1721
1872
  requiresObjectType(dataType: string | undefined | null): boolean;
1873
+ /**
1874
+ * §4.7 — il tipo e' un'istanza di classe. Il flag arriva dal dizionario (`isStructure`); il
1875
+ * fallback sul nome serve solo se il backend non lo dichiara.
1876
+ */
1877
+ isStructure(dataType: string | undefined | null): boolean;
1878
+ /**
1879
+ * §4.7 — su una `Structure` un `objectType` mancante **blocca l'attivazione**: e' un errore
1880
+ * (`OBJECT_TYPE_MISSING`), non un avviso, perche' il runtime non ha nulla da istanziare. La
1881
+ * differenza serve all'interfaccia, che deve mostrare i due casi con colori diversi.
1882
+ */
1883
+ objectTypeIsError(dataType: string | undefined | null): boolean;
1722
1884
  /** §4.6 — `scale` si applica solo ai numerici. */
1723
1885
  supportsScale(dataType: string | undefined | null): boolean;
1724
1886
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlowDictionaryStore, never>;
1725
1887
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<FlowDictionaryStore>;
1726
1888
  }
1889
+ /**
1890
+ * §4.7.1 — la descrizione di una classe come la vede la UI: i membri, la `label` della classe che
1891
+ * arriva dall'involucro della risposta, e l'**esito**, che ha **tre** casi da non confondere:
1892
+ *
1893
+ * - `declared`: elenco **autorevole**. Si propongono solo questi, e un membro fuori elenco e'
1894
+ * `STRUCTURE_MEMBER_UNKNOWN`.
1895
+ * - `undeclared`: la classe e' valida ma `members` e' vuoto — i membri non sono dichiarati (un
1896
+ * host con `IStructureMgr` a registro esplicito). Tendina vuota, nome del membro
1897
+ * **digitabile**, e nessuna accusa: non si sa, non e' "sbagliato".
1898
+ * - `unknown-class`: 404, la classe non e' registrata. Non si propone e non si digita niente di
1899
+ * utile: e' la **classe** a essere segnalata (`STRUCTURE_TYPE_UNKNOWN`), una volta sulla
1900
+ * risorsa e non a ogni riferimento.
1901
+ * - `unknown-catalog`: la primitiva non c'e' o la richiesta e' fallita. Come `undeclared` per
1902
+ * la UI, ma per un motivo diverso, e non dice nulla sulla classe.
1903
+ *
1904
+ * Trattare il 404 come "nessun membro" farebbe digitare membri che il runtime rifiutera';
1905
+ * trattare `members: []` come un 404 renderebbe inutilizzabile una classe perfettamente valida.
1906
+ */
1907
+ interface FlowStructureDescribed {
1908
+ status: 'declared' | 'undeclared' | 'unknown-class' | 'unknown-catalog';
1909
+ members: FlowStructureMember[];
1910
+ /** La `label` della classe, quando la descrizione l'ha portata: `null` = ricadi sul nome. */
1911
+ label?: string | null;
1912
+ }
1727
1913
  declare class FlowCatalogStore {
1728
1914
  private readonly api;
1729
1915
  private readonly objectsCache;
@@ -1731,6 +1917,7 @@ declare class FlowCatalogStore {
1731
1917
  private readonly fieldValuesCache;
1732
1918
  private readonly entriesCache;
1733
1919
  private readonly parametersCache;
1920
+ private readonly membersCache;
1734
1921
  /**
1735
1922
  * Una lista vuota significa "non lo so", non "nessuno": con il catalogo non popolato la
1736
1923
  * validazione salta i controlli invece di produrre falsi allarmi (§7). L'editor fa lo
@@ -1750,6 +1937,22 @@ declare class FlowCatalogStore {
1750
1937
  listForms(): Promise<FlowCatalogEntry[]>;
1751
1938
  listFormParameters(formName: string): Promise<FlowCatalogParameter[]>;
1752
1939
  listEnumTypes(): Promise<FlowCatalogEntry[]>;
1940
+ /**
1941
+ * §4.7 — le classi utilizzabili come `objectType` di una `Structure`. La primitiva e'
1942
+ * opzionale: se l'ambiente non la espone, l'errore non si memoizza e l'elenco resta vuoto —
1943
+ * che significa "non lo so", e il nome della classe si scrive a mano.
1944
+ */
1945
+ listStructures(): Promise<FlowCatalogEntry[]>;
1946
+ /**
1947
+ * §4.7.1 — la descrizione di una classe, **con l'esito**: sono tre e non due, e appiattirli in
1948
+ * una lista vuota perde l'informazione che serve alla UI. Vedi {@link FlowStructureDescribed}.
1949
+ */
1950
+ describeStructure(className: string): Promise<FlowStructureDescribed>;
1951
+ /**
1952
+ * §4.7 — i soli membri, per chi non deve distinguere gli esiti. Chi mostra un avviso o accusa
1953
+ * un membro usa {@link describeStructure}: qui una lista vuota e' ambigua per costruzione.
1954
+ */
1955
+ listStructureMembers(className: string): Promise<FlowStructureMember[]>;
1753
1956
  listEvents(): Promise<FlowCatalogEntry[]>;
1754
1957
  /** Da chiamare se lo schema cambia sotto i piedi (raro, ma il comando esiste). */
1755
1958
  clear(): void;
@@ -2206,6 +2409,7 @@ declare class ReferencePickerComponent {
2206
2409
  private readonly api;
2207
2410
  private readonly store;
2208
2411
  private readonly dictionaries;
2412
+ private readonly catalog;
2209
2413
  readonly value: _angular_core.InputSignal<string | undefined>;
2210
2414
  readonly label: _angular_core.InputSignal<string>;
2211
2415
  readonly placeholder: _angular_core.InputSignal<string>;
@@ -2231,6 +2435,14 @@ declare class ReferencePickerComponent {
2231
2435
  readonly isOpen: _angular_core.WritableSignal<boolean>;
2232
2436
  readonly query: _angular_core.WritableSignal<string>;
2233
2437
  constructor();
2438
+ /**
2439
+ * §4.7 — la risorsa `Structure` da cui il valore corrente sta navigando, se c'e'. È quella
2440
+ * che rende i membri proponibili: senza classe non c'e' catalogo da interrogare.
2441
+ */
2442
+ readonly structureRoot: _angular_core.Signal<FlowReference | undefined>;
2443
+ private readonly members;
2444
+ /** I membri come riferimenti navigati: `Richiesta.Ragione`, col tipo del membro. */
2445
+ private readonly memberReferences;
2234
2446
  readonly options: _angular_core.Signal<FlowReference[]>;
2235
2447
  /** Le opzioni raggruppate per `kind`, così gli output automatici si distinguono. */
2236
2448
  readonly groups: _angular_core.Signal<{
@@ -2246,12 +2458,19 @@ declare class ReferencePickerComponent {
2246
2458
  * output automatico navigato): la validazione non verifica i percorsi con il punto,
2247
2459
  * quindi si accetta senza segnalare;
2248
2460
  * - `host`: scope del sistema ospite che **non dichiara percorsi**: non verificabile (§4.1);
2461
+ * - `member`: membro di una classe, esistente: qui il percorso **e'** verificato (§4.7);
2462
+ * - `memberUnknown`: la radice e' una `Structure` ma il membro non c'e': e'
2463
+ * `STRUCTURE_MEMBER_UNKNOWN`, e a differenza di un campo di record si sa per certo;
2464
+ * - `memberNotWritable`: il membro esiste, e' calcolato, e questo campo vuole una
2465
+ * destinazione: `TARGET_NOT_WRITABLE`;
2249
2466
  * - `unknown`: nessuna corrispondenza: si avvisa, senza bloccare. Ci finisce anche il
2250
2467
  * percorso inesistente di uno scope che i percorsi li dichiara, perche' lì il backend
2251
2468
  * risponderebbe `GLOBAL_UNKNOWN`.
2252
2469
  */
2253
- readonly valueState: _angular_core.Signal<"empty" | "known" | "navigated" | "host" | "unknown">;
2470
+ readonly valueState: _angular_core.Signal<"empty" | "known" | "navigated" | "host" | "member" | "memberUnknown" | "memberNotWritable" | "unknown">;
2254
2471
  readonly hint: _angular_core.Signal<string | null>;
2472
+ /** I due stati che sono errori e non avvisi: il colore deve dirlo. */
2473
+ readonly isHintError: _angular_core.Signal<boolean>;
2255
2474
  readonly errorMessage: _angular_core.Signal<string | null>;
2256
2475
  open(): void;
2257
2476
  close(): void;
@@ -2329,7 +2548,7 @@ declare class FieldPickerComponent {
2329
2548
  readonly isRelationPath: _angular_core.Signal<boolean>;
2330
2549
  readonly isUnknown: _angular_core.Signal<boolean>;
2331
2550
  /** L'avviso dipende dall'uso: un campo puo' esistere e non essere filtrabile. */
2332
- readonly unknownMessage: _angular_core.Signal<"Questo campo non e’ fra quelli filtrabili dell’oggetto." | "Questo campo non e’ fra quelli su cui si puo’ ordinare." | "Questo campo non e’ fra quelli aggiornabili dell’oggetto." | "Questo campo non e’ fra quelli dell’oggetto.">;
2551
+ readonly unknownMessage: _angular_core.Signal<"Questo campo non e’ fra quelli filtrabili dell’oggetto." | "Questo campo non e’ fra quelli su cui si puo’ ordinare." | "Questo campo non e’ fra quelli aggiornabili dell’oggetto." | "Questo campo non e’ fra quelli valorizzabili alla creazione." | "Questo campo non e’ fra quelli dell’oggetto.">;
2333
2552
  readonly describeValue: _angular_core.Signal<string | null>;
2334
2553
  readonly loadErrored: _angular_core.Signal<boolean>;
2335
2554
  open(): void;
@@ -2386,6 +2605,85 @@ declare class NamePickerComponent {
2386
2605
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NamePickerComponent, "fb-name-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "unknownMessage": { "alias": "unknownMessage"; "required": false; "isSignal": true; }; "unknownSeverity": { "alias": "unknownSeverity"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "isMono": { "alias": "isMono"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
2387
2606
  }
2388
2607
 
2608
+ declare class StructurePickerComponent {
2609
+ private readonly catalog;
2610
+ readonly value: _angular_core.InputSignal<string | undefined>;
2611
+ readonly label: _angular_core.InputSignal<string>;
2612
+ readonly placeholder: _angular_core.InputSignal<string>;
2613
+ readonly disabled: _angular_core.InputSignal<boolean>;
2614
+ readonly valueChange: _angular_core.OutputEmitterRef<string | undefined>;
2615
+ private readonly structures;
2616
+ constructor();
2617
+ readonly options: _angular_core.Signal<NamePickerOption[]>;
2618
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StructurePickerComponent, never>;
2619
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StructurePickerComponent, "fb-structure-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
2620
+ }
2621
+
2622
+ /** `any` per un membro da leggere, `writable` per una destinazione. */
2623
+ type StructureMemberUsage = 'any' | 'writable';
2624
+ declare class StructureMemberPickerComponent {
2625
+ private readonly catalog;
2626
+ readonly value: _angular_core.InputSignal<string | undefined>;
2627
+ /** La classe di cui elencare i membri: senza classe non c'e' catalogo. */
2628
+ readonly className: _angular_core.InputSignal<string | undefined>;
2629
+ readonly usage: _angular_core.InputSignal<StructureMemberUsage>;
2630
+ readonly label: _angular_core.InputSignal<string>;
2631
+ readonly placeholder: _angular_core.InputSignal<string>;
2632
+ readonly disabled: _angular_core.InputSignal<boolean>;
2633
+ readonly valueChange: _angular_core.OutputEmitterRef<string | undefined>;
2634
+ /**
2635
+ * §4.7.1 — non basta l'elenco: serve l'**esito**. Elenco vuoto perche' i membri non sono
2636
+ * dichiarati (si digita a mano) e classe non registrata (non c'e' niente da digitare) hanno
2637
+ * la stessa lista e messaggi opposti.
2638
+ */
2639
+ private readonly result;
2640
+ private readonly members;
2641
+ readonly isOpen: _angular_core.WritableSignal<boolean>;
2642
+ /** Il testo digitato mentre il pannello e' aperto: filtra l'elenco. */
2643
+ private readonly query;
2644
+ constructor();
2645
+ readonly text: _angular_core.Signal<string>;
2646
+ /** Con `usage="writable"` i membri di sola lettura non si propongono affatto. */
2647
+ readonly available: _angular_core.Signal<FlowStructureMember[]>;
2648
+ readonly options: _angular_core.Signal<FlowStructureMember[]>;
2649
+ /**
2650
+ * Come chiamare la classe: la `label` la porta l'involucro della descrizione, ed e' il motivo
2651
+ * per cui l'involucro esiste (§4.7.1). Assente, si mostra il nome della classe.
2652
+ */
2653
+ readonly classLabel: _angular_core.Signal<string>;
2654
+ /** Elenco autorevole: solo qui un membro fuori elenco e' un errore (§4.7.1). */
2655
+ readonly hasCatalog: _angular_core.Signal<boolean>;
2656
+ /** 404: la classe non e' registrata. Il nome del membro non c'e' modo di indovinarlo. */
2657
+ readonly isClassUnknown: _angular_core.Signal<boolean>;
2658
+ /** Classe valida, membri non dichiarati: si digita, e non si segnala niente. */
2659
+ readonly isUndeclared: _angular_core.Signal<boolean>;
2660
+ /** Il primo segmento: e' l'unico che si puo' verificare (§4.7). */
2661
+ private readonly firstSegment;
2662
+ /** `true` se il valore naviga dentro un membro: oltre il primo segmento non si verifica. */
2663
+ readonly isNestedPath: _angular_core.Signal<boolean>;
2664
+ private readonly declared;
2665
+ readonly isUnknown: _angular_core.Signal<boolean>;
2666
+ /** Il messaggio elenca i disponibili: dire solo "non esiste" non aiuta a correggere. */
2667
+ readonly unknownMessage: _angular_core.Signal<string>;
2668
+ /**
2669
+ * Un membro che esiste ma non e' scrivibile, scelto dove serve una destinazione: capita su un
2670
+ * documento scritto altrove, e va detto qui invece di lasciarlo scoprire dall'attivazione.
2671
+ */
2672
+ readonly isNotWritable: _angular_core.Signal<boolean>;
2673
+ readonly describeValue: _angular_core.Signal<string | null>;
2674
+ /** Catalogo assente per un motivo che non riguarda la classe: "non lo so". */
2675
+ readonly loadErrored: _angular_core.Signal<boolean>;
2676
+ open(): void;
2677
+ close(): void;
2678
+ toggle(): void;
2679
+ onInput(text: string): void;
2680
+ choose(member: FlowStructureMember): void;
2681
+ clear(): void;
2682
+ describe(member: FlowStructureMember): string;
2683
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StructureMemberPickerComponent, never>;
2684
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StructureMemberPickerComponent, "fb-structure-member-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "usage": { "alias": "usage"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
2685
+ }
2686
+
2389
2687
  /** Le modalita' offerte: una per campo del modello. */
2390
2688
  type ValueMode = 'reference' | 'literal' | 'formula' | 'globalConstant' | 'empty';
2391
2689
  declare class ValueEditorComponent {
@@ -2409,13 +2707,19 @@ declare class ValueEditorComponent {
2409
2707
  */
2410
2708
  readonly filledFieldCount: _angular_core.Signal<number>;
2411
2709
  readonly isAmbiguous: _angular_core.Signal<boolean>;
2412
- /** Il campo del valore che corrisponde al `dataType` (§4.2, tabella dei sette tipi). */
2710
+ /**
2711
+ * Il campo del valore che corrisponde al `dataType` (§4.2, tabella degli otto tipi). `Object` e
2712
+ * `Structure` non ci sono: si passano per riferimento, e {@link literalAllowed} li esclude.
2713
+ */
2413
2714
  readonly literalField: _angular_core.Signal<keyof FlowValue>;
2414
2715
  /**
2415
2716
  * `Object` non ha un campo letterale: un record si passa per riferimento (§4.2).
2416
- * Lo stesso vale per una collection.
2717
+ * Lo stesso vale per una collection e per una `Structure`, che non ha un `structureValue` e
2718
+ * non lo avra': un'istanza nasce dal runtime e nel metadata si cita per riferimento (§4.7).
2417
2719
  */
2418
2720
  readonly literalAllowed: _angular_core.Signal<boolean>;
2721
+ /** §4.7 — la destinazione e' un'istanza di classe: si passa per riferimento e basta. */
2722
+ readonly isStructureTarget: _angular_core.Signal<boolean>;
2419
2723
  readonly literalInputType: _angular_core.Signal<string>;
2420
2724
  readonly literalText: _angular_core.Signal<string>;
2421
2725
  readonly booleanValue: _angular_core.Signal<boolean>;
@@ -2558,9 +2862,17 @@ declare class RecordFilterEditorComponent {
2558
2862
  readonly emptyWarningSeverity: _angular_core.InputSignal<"error" | "warn">;
2559
2863
  readonly changed: _angular_core.OutputEmitterRef<(holder: FilterHolder) => void>;
2560
2864
  private readonly fields;
2865
+ /** Tutti i campi, filtrabili o no: serve solo a riconoscere le chiavi composte (§5.7). */
2866
+ private readonly allFields;
2561
2867
  readonly filters: _angular_core.Signal<FlowRecordFilter[]>;
2562
2868
  readonly operators: _angular_core.Signal<_esfaenza_flow_builder.FlowDictionaryEntry[]>;
2563
2869
  constructor();
2870
+ /**
2871
+ * §5.7 — l'identificativo esiste ma **non e' filtrabile**: e' il caso di una chiave composta,
2872
+ * dove `Id` porta la forma canonica della chiave e le colonne filtrabili sono altre. Dirlo
2873
+ * evita la ricerca di un campo che nell'elenco non c'e' e non ci sara'.
2874
+ */
2875
+ readonly identifierNotFilterable: _angular_core.Signal<boolean>;
2564
2876
  readonly logicMode: _angular_core.Signal<"and" | "or" | "formula" | "custom">;
2565
2877
  readonly customLogic: _angular_core.Signal<string>;
2566
2878
  readonly showEmptyWarning: _angular_core.Signal<boolean>;
@@ -2637,6 +2949,8 @@ declare class FieldAssignmentEditorComponent {
2637
2949
  private readonly catalog;
2638
2950
  readonly holder: _angular_core.InputSignal<FieldAssignmentHolder>;
2639
2951
  readonly object: _angular_core.InputSignal<string | undefined>;
2952
+ /** `createable` su un Create, `updateable` su un Update: lo decide il chiamante (§5.7). */
2953
+ readonly usage: _angular_core.InputSignal<FlowFieldUsage>;
2640
2954
  readonly title: _angular_core.InputSignal<string>;
2641
2955
  readonly disabledReason: _angular_core.InputSignal<string | null>;
2642
2956
  readonly changed: _angular_core.OutputEmitterRef<(holder: FieldAssignmentHolder) => void>;
@@ -2656,7 +2970,7 @@ declare class FieldAssignmentEditorComponent {
2656
2970
  */
2657
2971
  describe(name: string | undefined): FlowFieldDescription | undefined;
2658
2972
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FieldAssignmentEditorComponent, never>;
2659
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FieldAssignmentEditorComponent, "fb-field-assignment-editor", never, { "holder": { "alias": "holder"; "required": true; "isSignal": true; }; "object": { "alias": "object"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "disabledReason": { "alias": "disabledReason"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, never, never, true, never>;
2973
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FieldAssignmentEditorComponent, "fb-field-assignment-editor", never, { "holder": { "alias": "holder"; "required": true; "isSignal": true; }; "object": { "alias": "object"; "required": false; "isSignal": true; }; "usage": { "alias": "usage"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "disabledReason": { "alias": "disabledReason"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, never, never, true, never>;
2660
2974
  }
2661
2975
 
2662
2976
  declare class ConnectorEditorComponent {
@@ -2969,6 +3283,16 @@ declare class ResourcePanelComponent {
2969
3283
  requiresObjectType(reference: FlowResourceRef): boolean;
2970
3284
  supportsScale(reference: FlowResourceRef): boolean;
2971
3285
  isEnum(reference: FlowResourceRef): boolean;
3286
+ /** §4.7 — un'istanza di classe: `objectType` e' il nome della classe, non di un'entita'. */
3287
+ isStructure(reference: FlowResourceRef): boolean;
3288
+ /**
3289
+ * §4.7 — una `Structure` non ha una forma letterale: nasce dal runtime come istanza vuota e i
3290
+ * membri si assegnano uno alla volta. Mostrare un campo «valore iniziale» prometterebbe una
3291
+ * cosa che il modello non sa esprimere.
3292
+ */
3293
+ supportsInitialValue(reference: FlowResourceRef): boolean;
3294
+ /** Su una `Structure` l'`objectType` mancante e' un errore, non un avviso (§4.7). */
3295
+ missingObjectType(reference: FlowResourceRef): boolean;
2972
3296
  /** Una costante che referenzia una risorsa e' `CONSTANT_REFERENCES_RESOURCE`. */
2973
3297
  constantReferencesResource(reference: FlowResourceRef): boolean;
2974
3298
  /** `stageOrder` duplicati: quale stage sia il corrente all'avvio diventa arbitrario. */
@@ -3037,6 +3361,9 @@ declare class DebugPanelComponent {
3037
3361
  private readonly api;
3038
3362
  private readonly store;
3039
3363
  private readonly session;
3364
+ private readonly dictionaries;
3365
+ private readonly catalog;
3366
+ constructor();
3040
3367
  readonly closed: _angular_core.OutputEmitterRef<void>;
3041
3368
  /** Chiede all'host di evidenziare l'elemento corrente dell'esecuzione. */
3042
3369
  readonly elementFocused: _angular_core.OutputEmitterRef<string>;
@@ -3050,6 +3377,14 @@ declare class DebugPanelComponent {
3050
3377
  readonly screenOutputs: _angular_core.WritableSignal<Record<string, string>>;
3051
3378
  /** Le variabili `isInput` del flow: il contratto verso chi lo invoca (§4.6). */
3052
3379
  readonly inputVariables: _angular_core.Signal<FlowVariable[]>;
3380
+ /**
3381
+ * §4.7 — i membri delle classi delle variabili `Structure` di input, per classe. Un'istanza si
3382
+ * compila un membro alla volta: non c'e' un letterale con cui scriverla in un campo solo.
3383
+ */
3384
+ private readonly membersByClass;
3385
+ /** I membri **scrivibili** di una classe: gli altri li calcola il backend. */
3386
+ membersOf(className: string | undefined): FlowStructureMember[];
3387
+ isStructureVariable(variable: FlowVariable): boolean;
3053
3388
  readonly canRun: _angular_core.Signal<boolean>;
3054
3389
  readonly status: _angular_core.Signal<string | null>;
3055
3390
  readonly pendingScreen: _angular_core.Signal<_esfaenza_flow_builder.FlowPendingScreen | null>;
@@ -3081,10 +3416,17 @@ declare class DebugPanelComponent {
3081
3416
  }[]>;
3082
3417
  /** I nomi degli output dichiarati dallo screen, per generare i campi da compilare. */
3083
3418
  readonly screenOutputNames: _angular_core.Signal<string[]>;
3419
+ /**
3420
+ * §6.5 — il tipo dichiarato vince, e due tipi hanno una forma propria invece di `value`: un
3421
+ * record e un'istanza di classe. Cercare `value` su un `Structure` mostrerebbe «—» pur avendo
3422
+ * i dati sotto gli occhi (§4.7).
3423
+ */
3084
3424
  private static render;
3085
3425
  setDebugEnabled(value: boolean): void;
3086
3426
  setInputValue(name: string, value: string): void;
3087
3427
  setScreenOutput(name: string, value: string): void;
3428
+ /** Converte un valore del form nel tipo dichiarato: il tipo vince, anche in scrittura (§6.5). */
3429
+ private static coerce;
3088
3430
  /** Converte i valori del form nel tipo dichiarato dalla variabile. */
3089
3431
  private coerceInputs;
3090
3432
  start(): Promise<void>;
@@ -3140,7 +3482,7 @@ declare class FlowBuilderComponent {
3140
3482
  * troppo. `panel` tiene il form nel pannello laterale, che e' piu' comodo quando si
3141
3483
  * modificano molti elementi di fila perche' non c'e' niente da aprire e chiudere.
3142
3484
  */
3143
- readonly inspectorMode: _angular_core.InputSignal<"dialog" | "panel">;
3485
+ readonly inspectorMode: _angular_core.InputSignal<"panel" | "dialog">;
3144
3486
  readonly saved: _angular_core.OutputEmitterRef<FlowSaveResult>;
3145
3487
  readonly activated: _angular_core.OutputEmitterRef<FlowSaveResult>;
3146
3488
  readonly closeRequested: _angular_core.OutputEmitterRef<void>;
@@ -3264,5 +3606,5 @@ declare class SelectValueDirective implements AfterViewChecked {
3264
3606
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectValueDirective, "select[fbValue]", never, { "fbValue": { "alias": "fbValue"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3265
3607
  }
3266
3608
 
3267
- export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, ElementDialogComponent, ElementInspectorComponent, ElementPaletteComponent, FALLBACK_COLLECTION_BY_TYPE, FALLBACK_TYPE_LABEL, FLOW_BUILDER_HTTP_CONFIG, FLOW_ELEMENT_ICONS, FLOW_ELEMENT_VARIANT_FIELDS, FLOW_ELEMENT_VARIANT_ICONS, FLOW_ERROR_FALLBACK_MESSAGE, FLOW_ERROR_HTTP_STATUS, FLOW_NAME_PATTERN, FLOW_NODE_COLLECTIONS, FLOW_NODE_HEIGHT, FLOW_NODE_WIDTH, FLOW_RESOURCE_COLLECTIONS, FieldAssignmentEditorComponent, FieldPickerComponent, FlowApiError, FlowBuilderApi, FlowBuilderComponent, FlowCanvasComponent, FlowCatalogStore, FlowDictionaryStore, FlowDocumentStore, FlowEditorSession, FlowLayoutService, FlowValidationStore, HttpFlowBuilderApi, NamePickerComponent, NodeInspectorBase, ORCHESTRATION_CONDITION_OUTPUT, ObjectPickerComponent, OrchestratedStageInspectorComponent, ParameterEditorComponent, ProblemsPanelComponent, RecordFilterEditorComponent, ReferencePickerComponent, ResourcePanelComponent, START_NODE_NAME, SelectValueDirective, StartInspectorComponent, TYPES_WITH_AUTOMATIC_OUTPUT, TYPE_BY_COLLECTION, UNSUPPORTED_TYPES, ValueEditorComponent, VersionPanelComponent, areTypesComparable, canvasNodeId, checkConditionLogic, checkFlowName, elementIcon, emptyFlowDefinition, flowNodeWidth, flowNodeWidthClass, isCustomConditionLogic, isGlobalReference, isNumericType, isTypeCheckedOperator, isValidFlowName, moveCondition, outletByKey, outletsOf, parseCanvasNodeId, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, referenceRoot, remapConditionLogic, removeCondition, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, uniqueFlowName, variantFieldOf, variantOf, variantPresetOf };
3268
- export type { FieldAssignmentHolder, FilterHolder, FlowActionCall, FlowAnyNode, FlowAssignment, FlowAssignmentItem, FlowAssignmentOperator, FlowAssignmentOperatorEntry, FlowBuilderHttpConfig, FlowCanvasEdge, FlowCanvasNode, FlowCatalogEntry, FlowCatalogParameter, FlowChoice, FlowCloneRequest, FlowCollectionProcessor, FlowCollectionProcessorType, FlowComparisonOperator, FlowComparisonOperatorEntry, FlowCondition, FlowConditionHolder, FlowConditionLogic, FlowConflictState, FlowConnectionKind, FlowConnector, FlowConnectorTarget, FlowConstant, FlowCreateRequest, FlowCustomError, FlowCustomErrorMessage, FlowCustomProperty, FlowDataType, FlowDataTypeEntry, FlowDecision, FlowDecisionRule, FlowDefinition, FlowDictionaries, FlowDictionaryEntry, FlowDynamicChoiceSet, FlowEdge, FlowElementType, FlowElementTypeEntry, FlowErrorCategory, FlowExportQuery, FlowFieldDescription, FlowFieldUsage, FlowFieldValue, FlowFormula, FlowGlobalVariableEntry, FlowInputFieldAssignment, FlowInputParameter, FlowInterviewResult, FlowInterviewStatus, FlowIssueSeverity, FlowLayoutDirection, FlowLayoutNodeInput, FlowLayoutOptions, FlowLayoutResult, FlowListQuery, FlowLoop, FlowNameCheck, FlowNameProblem, FlowNewVersionRequest, FlowNodeBase, FlowNodeCollection, FlowNodeRef, FlowObjectDescription, FlowObjectSummary, FlowOffsetUnit, FlowOrchestratedStage, FlowOutlet, FlowOutline, FlowOutlineConnection, FlowOutlineNode, FlowOutputFieldAssignment, FlowOutputParameter, FlowPalettePick, FlowPendingScreen, FlowProcessType, FlowRecordCreate, FlowRecordDelete, FlowRecordFilter, FlowRecordFilterOperator, FlowRecordLookup, FlowRecordRollback, FlowRecordTriggerType, FlowRecordUpdate, FlowReference, FlowReferenceKind, FlowReferenceQuery, FlowResourceCollection, FlowResourceKindEntry, FlowResourceRef, FlowResumeRequest, FlowSaveRequest, FlowSaveResult, FlowSchedule, FlowScheduledPath, FlowScreen, FlowScreenNavigation, FlowScreenResponseRequest, FlowScriptPluginCall, FlowSortOption, FlowSortOrder, FlowStage, FlowStageStep, FlowStageStepActionType, FlowStageStepAssignee, FlowStageStepConditionActionType, FlowStageStepRequest, FlowStageStepState, FlowStageStepStatus, FlowStageStepTypeEntry, FlowStart, FlowStartInterviewRequest, FlowSubflow, FlowSubflowInputAssignment, FlowSubflowOutputAssignment, FlowSummary, FlowTextTemplate, FlowTraceEntry, FlowTransactionModel, FlowTransform, FlowTransformType, FlowTransformValue, FlowTransformValueAction, FlowTriggerType, FlowTypedValue, FlowUnsupportedNode, FlowValidationIssue, FlowValidationResult, FlowValue, FlowVariable, FlowVersionStatus, FlowVersionSummary, FlowWait, FlowWaitEvent, NamePickerOption, PaletteGroup, PaletteItem, ParameterHolder, ValueMode };
3609
+ export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, ElementDialogComponent, ElementInspectorComponent, ElementPaletteComponent, FALLBACK_COLLECTION_BY_TYPE, FALLBACK_TYPE_LABEL, FLOW_BUILDER_HTTP_CONFIG, FLOW_ELEMENT_ICONS, FLOW_ELEMENT_VARIANT_FIELDS, FLOW_ELEMENT_VARIANT_ICONS, FLOW_ERROR_FALLBACK_MESSAGE, FLOW_ERROR_HTTP_STATUS, FLOW_NAME_PATTERN, FLOW_NODE_COLLECTIONS, FLOW_NODE_HEIGHT, FLOW_NODE_WIDTH, FLOW_RESOURCE_COLLECTIONS, FieldAssignmentEditorComponent, FieldPickerComponent, FlowApiError, FlowBuilderApi, FlowBuilderComponent, FlowCanvasComponent, FlowCatalogStore, FlowDictionaryStore, FlowDocumentStore, FlowEditorSession, FlowLayoutService, FlowValidationStore, HttpFlowBuilderApi, NamePickerComponent, NodeInspectorBase, ORCHESTRATION_CONDITION_OUTPUT, ObjectPickerComponent, OrchestratedStageInspectorComponent, ParameterEditorComponent, ProblemsPanelComponent, RecordFilterEditorComponent, ReferencePickerComponent, ResourcePanelComponent, START_NODE_NAME, SelectValueDirective, StartInspectorComponent, StructureMemberPickerComponent, StructurePickerComponent, TYPES_WITH_AUTOMATIC_OUTPUT, TYPE_BY_COLLECTION, UNSUPPORTED_TYPES, ValueEditorComponent, VersionPanelComponent, areTypesComparable, canvasNodeId, checkConditionLogic, checkFlowName, elementIcon, emptyFlowDefinition, flowNodeWidth, flowNodeWidthClass, isCustomConditionLogic, isGlobalReference, isNumericType, isTypeCheckedOperator, isValidFlowName, moveCondition, outletByKey, outletsOf, parseCanvasNodeId, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, referenceRoot, remapConditionLogic, removeCondition, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, uniqueFlowName, variantFieldOf, variantOf, variantPresetOf };
3610
+ export type { FieldAssignmentHolder, FilterHolder, FlowActionCall, FlowAnyNode, FlowAssignment, FlowAssignmentItem, FlowAssignmentOperator, FlowAssignmentOperatorEntry, FlowBuilderHttpConfig, FlowCanvasEdge, FlowCanvasNode, FlowCatalogEntry, FlowCatalogParameter, FlowChoice, FlowCloneRequest, FlowCollectionProcessor, FlowCollectionProcessorType, FlowComparisonOperator, FlowComparisonOperatorEntry, FlowCondition, FlowConditionHolder, FlowConditionLogic, FlowConflictState, FlowConnectionKind, FlowConnector, FlowConnectorTarget, FlowConstant, FlowCreateRequest, FlowCustomError, FlowCustomErrorMessage, FlowCustomProperty, FlowDataType, FlowDataTypeEntry, FlowDecision, FlowDecisionRule, FlowDefinition, FlowDictionaries, FlowDictionaryEntry, FlowDynamicChoiceSet, FlowEdge, FlowElementType, FlowElementTypeEntry, FlowErrorCategory, FlowExportQuery, FlowFieldDescription, FlowFieldUsage, FlowFieldValue, FlowFormula, FlowGlobalVariableEntry, FlowInputFieldAssignment, FlowInputParameter, FlowInterviewResult, FlowInterviewStatus, FlowIssueSeverity, FlowLayoutDirection, FlowLayoutNodeInput, FlowLayoutOptions, FlowLayoutResult, FlowListQuery, FlowLoop, FlowNameCheck, FlowNameProblem, FlowNewVersionRequest, FlowNodeBase, FlowNodeCollection, FlowNodeRef, FlowObjectDescription, FlowObjectSummary, FlowOffsetUnit, FlowOrchestratedStage, FlowOutlet, FlowOutline, FlowOutlineConnection, FlowOutlineNode, FlowOutputFieldAssignment, FlowOutputParameter, FlowPalettePick, FlowPendingScreen, FlowProcessType, FlowRecordCreate, FlowRecordDelete, FlowRecordFilter, FlowRecordFilterOperator, FlowRecordLookup, FlowRecordRollback, FlowRecordTriggerType, FlowRecordUpdate, FlowRecordValue, FlowReference, FlowReferenceKind, FlowReferenceQuery, FlowResourceCollection, FlowResourceKindEntry, FlowResourceRef, FlowResumeRequest, FlowSaveRequest, FlowSaveResult, FlowSchedule, FlowScheduledPath, FlowScreen, FlowScreenNavigation, FlowScreenResponseRequest, FlowScriptPluginCall, FlowSortOption, FlowSortOrder, FlowStage, FlowStageStep, FlowStageStepActionType, FlowStageStepAssignee, FlowStageStepConditionActionType, FlowStageStepRequest, FlowStageStepState, FlowStageStepStatus, FlowStageStepTypeEntry, FlowStart, FlowStartInterviewRequest, FlowStructureDescribed, FlowStructureDescription, FlowStructureInstance, FlowStructureMember, FlowSubflow, FlowSubflowInputAssignment, FlowSubflowOutputAssignment, FlowSummary, FlowTextTemplate, FlowTraceEntry, FlowTransactionModel, FlowTransform, FlowTransformType, FlowTransformValue, FlowTransformValueAction, FlowTriggerType, FlowTypedValue, FlowUnsupportedNode, FlowValidationIssue, FlowValidationResult, FlowValue, FlowVariable, FlowVersionStatus, FlowVersionSummary, FlowWait, FlowWaitEvent, NamePickerOption, PaletteGroup, PaletteItem, ParameterHolder, StructureMemberUsage, ValueMode };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esfaenza/flow-builder",
3
- "version": "20.3.3",
3
+ "version": "20.3.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.3.25",
6
6
  "@angular/core": "^20.3.25",