@esfaenza/flow-builder 20.3.37 → 20.3.38
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/README.md +24 -12
- package/fesm2022/esfaenza-flow-builder.mjs +91 -110
- package/fesm2022/esfaenza-flow-builder.mjs.map +1 -1
- package/index.d.ts +87 -65
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -1385,50 +1385,67 @@ interface FlowStartInterviewRequest {
|
|
|
1385
1385
|
debug?: boolean;
|
|
1386
1386
|
}
|
|
1387
1387
|
/**
|
|
1388
|
-
*
|
|
1388
|
+
* Cio' che l'editor **annuncia** quando si preme «Esegui» o «Debug»: il payload dell'output
|
|
1389
|
+
* `runRequested` di `<fb-flow-builder>`.
|
|
1389
1390
|
*
|
|
1390
|
-
* Non e' una primitiva della §6.5: l'editor **non** esegue niente
|
|
1391
|
-
*
|
|
1392
|
-
*
|
|
1393
|
-
*
|
|
1394
|
-
*
|
|
1395
|
-
*
|
|
1391
|
+
* Non e' una primitiva della §6.5 e non e' nemmeno una chiamata: l'editor **non** esegue niente
|
|
1392
|
+
* e non decide cosa significhi eseguire. Raccoglie l'unica cosa che l'esecuzione non puo'
|
|
1393
|
+
* inventare — i valori delle variabili `isInput` — e lo dice a chi lo ospita, che sa dove gira
|
|
1394
|
+
* il motore e con quale interfaccia lo si guarda: una navigazione, una chiamata a delle sue API,
|
|
1395
|
+
* una finestra con l'interview dentro, o niente. Nessuna primitiva di `FlowBuilderApi` viene
|
|
1396
|
+
* toccata, quindi non c'e' nessun `MissingService` da gestire: un ospite che non ascolta
|
|
1397
|
+
* l'output semplicemente non fa niente.
|
|
1396
1398
|
*
|
|
1397
|
-
*
|
|
1398
|
-
*
|
|
1399
|
-
*
|
|
1399
|
+
* Ci sta **tutto** cio' che l'editor sa del momento in cui e' stato premuto il comando, perche'
|
|
1400
|
+
* l'ospite non ha modo di chiederlo dopo: nome e versione salvati, gli ingressi già convertiti,
|
|
1401
|
+
* il tipo di processo, se il documento in mano ha modifiche non salvate e il documento stesso.
|
|
1402
|
+
* `flowName`/`version` identificano cio' che e' **salvato** (§6.1) — `definition` e' quello che
|
|
1403
|
+
* si sta editando, e con `isDirty: true` le due cose non coincidono: quale delle due eseguire lo
|
|
1404
|
+
* decide l'ospite, non l'editor.
|
|
1400
1405
|
*/
|
|
1401
1406
|
interface FlowRunRequest {
|
|
1407
|
+
/**
|
|
1408
|
+
* `true` sul comando «Debug». L'ospite ne fa cio' che vuole — traccia, breakpoint, passo
|
|
1409
|
+
* passo — ma il contratto ricorda che una traccia riporta i valori di **tutte** le risorse,
|
|
1410
|
+
* dati personali compresi (§6.5).
|
|
1411
|
+
*/
|
|
1412
|
+
debug: boolean;
|
|
1413
|
+
/** Il nome con cui il flow e' salvato: il comando si accende solo su un flow che ne ha uno. */
|
|
1402
1414
|
flowName: string;
|
|
1403
1415
|
/** Assente → l'ospite decide (di norma l'attiva, altrimenti l'ultima), come in §6.1. */
|
|
1404
1416
|
version?: number;
|
|
1405
1417
|
/**
|
|
1406
1418
|
* I valori delle variabili `isInput`, per nome. Sono già convertiti al tipo dichiarato: un
|
|
1407
1419
|
* `Number` e' un numero, non la stringa digitata. Un'istanza di classe segue la forma della
|
|
1408
|
-
* §4.7 (`{type, instance:{className, members}}`), la stessa in lettura e in scrittura.
|
|
1420
|
+
* §4.7 (`{type, instance:{className, members}}`), la stessa in lettura e in scrittura. Un
|
|
1421
|
+
* campo lasciato vuoto **non c'e'**: «non valorizzato» e «stringa vuota» sono due cose diverse.
|
|
1409
1422
|
*/
|
|
1410
1423
|
inputs?: Record<string, unknown>;
|
|
1424
|
+
/** Il `processType` del documento: dice da se' se l'esecuzione avra' un'interfaccia (§3.2). */
|
|
1425
|
+
processType?: FlowProcessType;
|
|
1426
|
+
/** Il documento ha modifiche non salvate: cio' che e' salvato non e' cio' che si vede. */
|
|
1427
|
+
isDirty: boolean;
|
|
1411
1428
|
/**
|
|
1412
|
-
*
|
|
1413
|
-
*
|
|
1414
|
-
*
|
|
1429
|
+
* Il documento **in mano all'editor**, non quello salvato. C'e' perche' un ospite puo' voler
|
|
1430
|
+
* provare la bozza senza scriverla, o mandare la definizione al suo motore: senza, l'unico
|
|
1431
|
+
* modo sarebbe rileggerla dal backend, che risponderebbe un'altra cosa.
|
|
1415
1432
|
*/
|
|
1416
|
-
|
|
1433
|
+
definition: FlowDefinition;
|
|
1417
1434
|
}
|
|
1418
1435
|
/**
|
|
1419
|
-
* Cio' che l'ospite puo' **
|
|
1420
|
-
* pannello «Debug
|
|
1436
|
+
* Cio' che l'ospite puo' **ridare** all'editor dopo un `runRequested`, passandolo all'input
|
|
1437
|
+
* `runOutcome` di `<fb-flow-builder>`: e' quello che il pannello «Debug» mostra.
|
|
1421
1438
|
*
|
|
1422
|
-
*
|
|
1423
|
-
* un
|
|
1439
|
+
* Non torna da nessuna chiamata — l'editor non ne fa nessuna — ed e' facoltativo: un ospite che
|
|
1440
|
+
* apre un suo runner e ci mostra tutto lì non passa niente, e il pannello lo dice invece di
|
|
1441
|
+
* sembrare rotto. Esiste per un caso preciso: un flow che non ha schermate — un `AutoLaunched`,
|
|
1442
|
+
* o un'orchestrazione che gira tutta in background — non ha nessuna interfaccia in cui guardare
|
|
1424
1443
|
* cosa e' successo. Non c'e' un form da compilare, non c'e' una finestra del runtime: c'e' solo
|
|
1425
1444
|
* la traccia, e il posto in cui la si vuole e' l'editor, accanto al grafo su cui si sta
|
|
1426
1445
|
* lavorando. Ogni voce della traccia porta un `elementName`, e il pannello lo usa per portare
|
|
1427
1446
|
* l'utente sull'elemento.
|
|
1428
1447
|
*
|
|
1429
|
-
*
|
|
1430
|
-
* risolve con `void`, e l'editor si limita a dire che l'esecuzione e' partita. Un ospite che
|
|
1431
|
-
* parla già la §6.5 puo' restituire il suo `FlowInterviewResult` così com'e': i campi
|
|
1448
|
+
* Un ospite che parla già la §6.5 puo' passare il suo `FlowInterviewResult` così com'e': i campi
|
|
1432
1449
|
* interattivi (token, `pendingScreen`) l'editor non li guarda, perche' non e' lui a condurre
|
|
1433
1450
|
* l'esecuzione.
|
|
1434
1451
|
*
|
|
@@ -1763,29 +1780,6 @@ declare abstract class FlowBuilderApi {
|
|
|
1763
1780
|
* escluso quello corrente (§5.10).
|
|
1764
1781
|
*/
|
|
1765
1782
|
abstract listSubflowCandidates(excluding?: string): Promise<FlowSummary[]>;
|
|
1766
|
-
/**
|
|
1767
|
-
* «Esegui»: avvia il flow **salvato** con i valori raccolti dalla finestra.
|
|
1768
|
-
*
|
|
1769
|
-
* Chi integra l'editor la implementa. Non c'e' un default che «prova» il flow: l'editor non
|
|
1770
|
-
* ha un motore, e nascondere l'assenza dietro un'esecuzione finta e' il modo piu' veloce di
|
|
1771
|
-
* far credere che un flow funzioni.
|
|
1772
|
-
*
|
|
1773
|
-
* Il ritorno e' **facoltativo** ed e' l'unica cosa che l'editor sa dell'esecuzione: un
|
|
1774
|
-
* {@link FlowRunOutcome} finisce nel pannello «Debug» — stato, traccia, risorse, output —
|
|
1775
|
-
* mentre `void` significa «guardo altrove», e l'editor dice solo che e' partita. Serve
|
|
1776
|
-
* soprattutto ai flow **senza schermate**: lì non c'e' nessuna interfaccia del runtime in cui
|
|
1777
|
-
* vedere cos'e' successo, e la traccia accanto al grafo e' tutto cio' che si ha.
|
|
1778
|
-
*/
|
|
1779
|
-
runFlow(request: FlowRunRequest): Promise<FlowRunOutcome | void>;
|
|
1780
|
-
/**
|
|
1781
|
-
* «Debug»: come {@link runFlow}, ma `request.debug` e' `true` — ed e' il caso in cui il
|
|
1782
|
-
* ritorno conta davvero, perche' `trace` e `resources` esistono solo in debug (§6.5).
|
|
1783
|
-
*
|
|
1784
|
-
* Sono due metodi e non un flag perche' quasi sempre sono due strade diverse dell'ospite —
|
|
1785
|
-
* l'una avvia e basta, l'altra apre un ispettore — e perche' un ambiente puo' esporre l'una
|
|
1786
|
-
* senza l'altra: due `MissingService` distinti dicono quale delle due manca.
|
|
1787
|
-
*/
|
|
1788
|
-
debugFlow(request: FlowRunRequest): Promise<FlowRunOutcome | void>;
|
|
1789
1783
|
/**
|
|
1790
1784
|
* `POST /interviews` — avvia. Ricorda: `status: 'Failed'` **non** e' un errore
|
|
1791
1785
|
* di trasporto, e `debug: true` popola `trace` e `resources` con dati che
|
|
@@ -4603,7 +4597,7 @@ declare class ReferencePickerComponent {
|
|
|
4603
4597
|
* percorso inesistente di uno scope che i percorsi li dichiara, perche' lì il backend
|
|
4604
4598
|
* risponderebbe `GLOBAL_UNKNOWN`.
|
|
4605
4599
|
*/
|
|
4606
|
-
readonly valueState: _angular_core.Signal<"
|
|
4600
|
+
readonly valueState: _angular_core.Signal<"member" | "empty" | "unknown" | "known" | "navigated" | "host" | "containerRoot" | "memberUnknown" | "memberNotWritable" | "pathUnverified" | "globalPathUntyped" | "globalPathInvalid">;
|
|
4607
4601
|
/** Le parole cambiano con la tappa: un campo di un'entita' non e' un membro di una classe. */
|
|
4608
4602
|
private readonly tailIsObject;
|
|
4609
4603
|
private readonly tailContainer;
|
|
@@ -6526,14 +6520,14 @@ declare class RunDialogComponent {
|
|
|
6526
6520
|
private readonly store;
|
|
6527
6521
|
private readonly dictionaries;
|
|
6528
6522
|
private readonly catalog;
|
|
6529
|
-
/** `debug` cambia il titolo, l'avviso sui dati e
|
|
6530
|
-
readonly mode: _angular_core.InputSignal<"
|
|
6523
|
+
/** `debug` cambia il titolo, l'avviso sui dati e il flag nel payload annunciato. */
|
|
6524
|
+
readonly mode: _angular_core.InputSignal<"run" | "debug">;
|
|
6531
6525
|
/** Il flow che verra' eseguito: e' quello **salvato**, non il documento in mano. */
|
|
6532
6526
|
readonly flowName: _angular_core.InputSignal<string | null>;
|
|
6533
6527
|
readonly version: _angular_core.InputSignal<number | null>;
|
|
6534
6528
|
/** Con modifiche non salvate si esegue la versione salvata: dirlo evita la sorpresa. */
|
|
6535
6529
|
readonly isDirty: _angular_core.InputSignal<boolean>;
|
|
6536
|
-
/** L'ospite
|
|
6530
|
+
/** L'ospite dice che l'esecuzione di prima e' in corso: il bottone resta spento. */
|
|
6537
6531
|
readonly isBusy: _angular_core.InputSignal<boolean>;
|
|
6538
6532
|
readonly confirmed: _angular_core.OutputEmitterRef<Record<string, unknown>>;
|
|
6539
6533
|
readonly cancelled: _angular_core.OutputEmitterRef<void>;
|
|
@@ -6686,9 +6680,34 @@ declare class FlowBuilderComponent {
|
|
|
6686
6680
|
* modificano molti elementi di fila perche' non c'e' niente da aprire e chiudere.
|
|
6687
6681
|
*/
|
|
6688
6682
|
readonly inspectorMode: _angular_core.InputSignal<"dialog" | "panel">;
|
|
6683
|
+
/**
|
|
6684
|
+
* L'esito dell'ultima esecuzione, se l'ospite ne ha uno da mostrare.
|
|
6685
|
+
*
|
|
6686
|
+
* E' l'altra meta' di {@link runRequested}: l'editor non esegue e non aspetta niente, quindi
|
|
6687
|
+
* l'unico modo per far arrivare una traccia nel pannello «Debug» e' che l'ospite la passi di
|
|
6688
|
+
* qui quando l'ha. Lasciarlo `null` e' legittimo — chi mostra tutto in una sua interfaccia non
|
|
6689
|
+
* ha niente da dire all'editor — e il pannello distingue i tre casi (niente, in corso, esito
|
|
6690
|
+
* vuoto) perche' i rimedi sono diversi.
|
|
6691
|
+
*/
|
|
6692
|
+
readonly runOutcome: _angular_core.InputSignal<FlowRunOutcome | null>;
|
|
6693
|
+
/**
|
|
6694
|
+
* L'esecuzione annunciata e' ancora in corso. Solo l'ospite lo sa: dopo l'emit l'editor non ha
|
|
6695
|
+
* piu' notizie. Accende il puntino sul tab «Debug» e tiene spento il bottone della finestra.
|
|
6696
|
+
*/
|
|
6697
|
+
readonly isRunning: _angular_core.InputSignal<boolean>;
|
|
6689
6698
|
readonly saved: _angular_core.OutputEmitterRef<FlowSaveResult>;
|
|
6690
6699
|
readonly activated: _angular_core.OutputEmitterRef<FlowSaveResult>;
|
|
6691
6700
|
readonly closeRequested: _angular_core.OutputEmitterRef<void>;
|
|
6701
|
+
/**
|
|
6702
|
+
* «Esegui» / «Debug»: l'editor **annuncia**, non esegue.
|
|
6703
|
+
*
|
|
6704
|
+
* Cosa significhi eseguire lo decide chi ospita l'editor — una navigazione, una chiamata a
|
|
6705
|
+
* delle sue API, una finestra con l'interview dentro — e il payload porta tutto cio' che
|
|
6706
|
+
* serve per deciderlo (nome, versione, ingressi convertiti, `processType`, `isDirty`, il
|
|
6707
|
+
* documento in mano). Un ospite che non ascolta questo output non fa niente: non c'e' nessuna
|
|
6708
|
+
* primitiva che possa mancare, quindi nessun errore da mostrare.
|
|
6709
|
+
*/
|
|
6710
|
+
readonly runRequested: _angular_core.OutputEmitterRef<FlowRunRequest>;
|
|
6692
6711
|
readonly selectedName: _angular_core.WritableSignal<string | null>;
|
|
6693
6712
|
readonly activePanel: _angular_core.WritableSignal<SidePanel>;
|
|
6694
6713
|
/** La dialog del dettaglio e' aperta. Vale solo con `inspectorMode = 'dialog'`. */
|
|
@@ -6953,18 +6972,17 @@ declare class FlowBuilderComponent {
|
|
|
6953
6972
|
/** Scrive la copia e continua a lavorare su di essa (§6.2). */
|
|
6954
6973
|
confirmCopy(): Promise<void>;
|
|
6955
6974
|
/** Quale delle due finestre e' aperta; `null` = nessuna. */
|
|
6956
|
-
readonly runMode: _angular_core.WritableSignal<"
|
|
6957
|
-
/** La chiamata all'ospite e' in volo: il bottone della finestra resta spento. */
|
|
6958
|
-
readonly isStartingRun: _angular_core.WritableSignal<boolean>;
|
|
6975
|
+
readonly runMode: _angular_core.WritableSignal<"run" | "debug" | null>;
|
|
6959
6976
|
/**
|
|
6960
|
-
* L'esito
|
|
6977
|
+
* L'esito da mostrare nel pannello.
|
|
6961
6978
|
*
|
|
6962
|
-
*
|
|
6963
|
-
*
|
|
6964
|
-
*
|
|
6979
|
+
* E' l'input dell'ospite, ma **scartabile**: «Svuota» e' un gesto locale — l'esito di prima
|
|
6980
|
+
* non riguarda piu' il documento che si sta editando — e un input non si puo' rimettere a
|
|
6981
|
+
* `null` da dentro. Con `linkedSignal` il valore torna quello dell'ospite ogni volta che ne
|
|
6982
|
+
* arriva uno nuovo, quindi due esecuzioni di fila non restano nascoste da una pulizia.
|
|
6965
6983
|
*/
|
|
6966
|
-
readonly
|
|
6967
|
-
/** L'ultima esecuzione era in debug: senza, traccia e risorse non arrivano ed e' normale. */
|
|
6984
|
+
readonly shownOutcome: _angular_core.WritableSignal<FlowRunOutcome | null>;
|
|
6985
|
+
/** L'ultima esecuzione annunciata era in debug: senza, traccia e risorse non arrivano ed e' normale. */
|
|
6968
6986
|
readonly wasRunInDebug: _angular_core.WritableSignal<boolean>;
|
|
6969
6987
|
/**
|
|
6970
6988
|
* Si esegue cio' che e' **salvato**: su un flow mai scritto non c'e' niente da avviare, e il
|
|
@@ -6976,14 +6994,18 @@ declare class FlowBuilderComponent {
|
|
|
6976
6994
|
/** Svuota il pannello: l'esito di prima non riguarda piu' il documento che si sta editando. */
|
|
6977
6995
|
clearRunOutcome(): void;
|
|
6978
6996
|
/**
|
|
6979
|
-
*
|
|
6997
|
+
* Annuncia l'esecuzione all'ospite, con tutto cio' che sappiamo del momento in cui e' stato
|
|
6998
|
+
* premuto il comando.
|
|
6999
|
+
*
|
|
7000
|
+
* La finestra si chiude **subito**: non c'e' niente da attendere — l'emit e' sincrono — e
|
|
7001
|
+
* un'esecuzione puo' durare quanto vuole, con schermate da compilare puo' finire minuti dopo.
|
|
7002
|
+
* Tenere aperto il form degli ingressi per tutto quel tempo coprirebbe proprio il grafo che si
|
|
7003
|
+
* sta guardando.
|
|
6980
7004
|
*
|
|
6981
|
-
*
|
|
6982
|
-
*
|
|
6983
|
-
* degli ingressi per tutto quel tempo coprirebbe proprio il grafo che si sta guardando. Il
|
|
6984
|
-
* pannello «Debug» prende il posto dell'attesa, e l'esito ci arriva quando arriva.
|
|
7005
|
+
* Il pannello «Debug» si apre lo stesso, e non e' l'editor che presume un esito: e' il posto in
|
|
7006
|
+
* cui l'esito arrivera' **se** arrivera', e dice a chiare lettere quando non c'e' niente.
|
|
6985
7007
|
*/
|
|
6986
|
-
confirmRun(inputs: Record<string, unknown>):
|
|
7008
|
+
confirmRun(inputs: Record<string, unknown>): void;
|
|
6987
7009
|
createNewVersion(): Promise<void>;
|
|
6988
7010
|
activate(): Promise<void>;
|
|
6989
7011
|
/** §9.3 — prima opzione davanti a un conflitto. */
|
|
@@ -7008,7 +7030,7 @@ declare class FlowBuilderComponent {
|
|
|
7008
7030
|
dismissNotice(): void;
|
|
7009
7031
|
private showError;
|
|
7010
7032
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlowBuilderComponent, never>;
|
|
7011
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlowBuilderComponent, "fb-flow-builder", never, { "flowName": { "alias": "flowName"; "required": false; "isSignal": true; }; "version": { "alias": "version"; "required": false; "isSignal": true; }; "author": { "alias": "author"; "required": false; "isSignal": true; }; "defaultProcessType": { "alias": "defaultProcessType"; "required": false; "isSignal": true; }; "inspectorMode": { "alias": "inspectorMode"; "required": false; "isSignal": true; }; }, { "saved": "saved"; "activated": "activated"; "closeRequested": "closeRequested"; }, never, never, true, never>;
|
|
7033
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlowBuilderComponent, "fb-flow-builder", never, { "flowName": { "alias": "flowName"; "required": false; "isSignal": true; }; "version": { "alias": "version"; "required": false; "isSignal": true; }; "author": { "alias": "author"; "required": false; "isSignal": true; }; "defaultProcessType": { "alias": "defaultProcessType"; "required": false; "isSignal": true; }; "inspectorMode": { "alias": "inspectorMode"; "required": false; "isSignal": true; }; "runOutcome": { "alias": "runOutcome"; "required": false; "isSignal": true; }; "isRunning": { "alias": "isRunning"; "required": false; "isSignal": true; }; }, { "saved": "saved"; "activated": "activated"; "closeRequested": "closeRequested"; "runRequested": "runRequested"; }, never, never, true, never>;
|
|
7012
7034
|
}
|
|
7013
7035
|
|
|
7014
7036
|
declare class SelectValueDirective implements AfterViewChecked {
|