@hardlydifficult/workflow-engine 1.0.0 → 1.0.2
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/dist/WorkflowEngine.d.ts
CHANGED
|
@@ -17,6 +17,8 @@ export declare class WorkflowEngine<TStatus extends string, TData> {
|
|
|
17
17
|
get isLoaded(): boolean;
|
|
18
18
|
/** Whether disk storage is available */
|
|
19
19
|
get isPersistent(): boolean;
|
|
20
|
+
/** ISO timestamp of the last transition or update */
|
|
21
|
+
get updatedAt(): string;
|
|
20
22
|
/** Whether the current status is terminal (no outgoing transitions) */
|
|
21
23
|
get isTerminal(): boolean;
|
|
22
24
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowEngine.d.ts","sourceRoot":"","sources":["../src/WorkflowEngine.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EAIX,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,qBAAa,cAAc,CAAC,OAAO,SAAS,MAAM,EAAE,KAAK;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAEtB;IACV,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,EAAE,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkflowEngine.d.ts","sourceRoot":"","sources":["../src/WorkflowEngine.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EAIX,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,qBAAa,cAAc,CAAC,OAAO,SAAS,MAAM,EAAE,KAAK;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAEtB;IACV,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,EAAE,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC;IAwB1D,qBAAqB;IACrB,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,+BAA+B;IAC/B,IAAI,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,CAE1B;IAED,qCAAqC;IACrC,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,wCAAwC;IACxC,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,qDAAqD;IACrD,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,uEAAuE;IACvE,IAAI,UAAU,IAAI,OAAO,CAExB;IAED;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B;;;;;;OAMG;IACG,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B1E;;;;;;OAMG;IACG,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAexD,oEAAoE;IACpE,aAAa,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO;IAInC,iDAAiD;IACjD,kBAAkB,IAAI,SAAS,OAAO,EAAE;IAIxC,uCAAuC;IACjC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,OAAO,CAAC,SAAS;CAclB"}
|
package/dist/WorkflowEngine.js
CHANGED
|
@@ -20,7 +20,11 @@ class WorkflowEngine {
|
|
|
20
20
|
this.onTransitionCb = options.onTransition;
|
|
21
21
|
this.tracker = new state_tracker_1.StateTracker({
|
|
22
22
|
key: options.key,
|
|
23
|
-
default: {
|
|
23
|
+
default: {
|
|
24
|
+
status: initialStatus,
|
|
25
|
+
data: options.initialData,
|
|
26
|
+
updatedAt: new Date().toISOString(),
|
|
27
|
+
},
|
|
24
28
|
stateDirectory: options.stateDirectory,
|
|
25
29
|
autoSaveMs: options.autoSaveMs ?? 5000,
|
|
26
30
|
});
|
|
@@ -41,6 +45,10 @@ class WorkflowEngine {
|
|
|
41
45
|
get isPersistent() {
|
|
42
46
|
return this.tracker.isPersistent;
|
|
43
47
|
}
|
|
48
|
+
/** ISO timestamp of the last transition or update */
|
|
49
|
+
get updatedAt() {
|
|
50
|
+
return this.tracker.state.updatedAt;
|
|
51
|
+
}
|
|
44
52
|
/** Whether the current status is terminal (no outgoing transitions) */
|
|
45
53
|
get isTerminal() {
|
|
46
54
|
return this.transitions[this.status].length === 0;
|
|
@@ -75,7 +83,11 @@ class WorkflowEngine {
|
|
|
75
83
|
if (updater !== undefined) {
|
|
76
84
|
updater(data);
|
|
77
85
|
}
|
|
78
|
-
this.tracker.set({
|
|
86
|
+
this.tracker.set({
|
|
87
|
+
status: to,
|
|
88
|
+
data,
|
|
89
|
+
updatedAt: new Date().toISOString(),
|
|
90
|
+
});
|
|
79
91
|
await this.tracker.saveAsync();
|
|
80
92
|
this.emitEvent("transition", from, to);
|
|
81
93
|
}
|
|
@@ -89,7 +101,11 @@ class WorkflowEngine {
|
|
|
89
101
|
async update(updater) {
|
|
90
102
|
const data = structuredClone(this.tracker.state.data);
|
|
91
103
|
updater(data);
|
|
92
|
-
this.tracker.set({
|
|
104
|
+
this.tracker.set({
|
|
105
|
+
status: this.status,
|
|
106
|
+
data,
|
|
107
|
+
updatedAt: new Date().toISOString(),
|
|
108
|
+
});
|
|
93
109
|
await this.tracker.saveAsync();
|
|
94
110
|
this.emitEvent("update");
|
|
95
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowEngine.js","sourceRoot":"","sources":["../src/WorkflowEngine.ts"],"names":[],"mappings":";;;AAAA,kEAA8D;AAU9D;;;GAGG;AACH,MAAa,cAAc;IACR,OAAO,CAA+C;IACtD,WAAW,CAAyB;IACpC,cAAc,CAErB;IACF,MAAM,GAAG,KAAK,CAAC;IAEvB,YAAY,OAA8C;QACxD,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;QAE/C,IAAI,CAAC,CAAC,aAAa,IAAI,WAAW,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,kBAAkB,aAAa,uCAAuC,CACvE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC;QAE3C,IAAI,CAAC,OAAO,GAAG,IAAI,4BAAY,CAAiC;YAC9D,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"WorkflowEngine.js","sourceRoot":"","sources":["../src/WorkflowEngine.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -40,10 +40,11 @@ export interface WorkflowEngineOptions<TStatus extends string, TData> {
|
|
|
40
40
|
onTransition?: (event: TransitionEvent<TStatus, TData>) => void;
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
43
|
-
* Internal persisted shape: status + data together.
|
|
43
|
+
* Internal persisted shape: status + data + updatedAt together.
|
|
44
44
|
*/
|
|
45
45
|
export interface PersistedState<TStatus extends string, TData> {
|
|
46
46
|
status: TStatus;
|
|
47
47
|
data: TData;
|
|
48
|
+
updatedAt: string;
|
|
48
49
|
}
|
|
49
50
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,MAAM,IAAI,MAAM,CACxD,OAAO,EACP,SAAS,OAAO,EAAE,CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,OAAO,SAAS,MAAM,EAAE,KAAK;IAC5D,IAAI,EAAE,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;IACvC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,OAAO,SAAS,MAAM,EAAE,KAAK;IAClE,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,aAAa,EAAE,OAAO,CAAC;IACvB,gDAAgD;IAChD,WAAW,EAAE,KAAK,CAAC;IACnB,kEAAkE;IAClE,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,sCAAsC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;CACjE;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,OAAO,SAAS,MAAM,EAAE,KAAK;IAC3D,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,MAAM,IAAI,MAAM,CACxD,OAAO,EACP,SAAS,OAAO,EAAE,CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,OAAO,SAAS,MAAM,EAAE,KAAK;IAC5D,IAAI,EAAE,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;IACvC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,OAAO,SAAS,MAAM,EAAE,KAAK;IAClE,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,aAAa,EAAE,OAAO,CAAC;IACvB,gDAAgD;IAChD,WAAW,EAAE,KAAK,CAAC;IACnB,kEAAkE;IAClE,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,sCAAsC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;CACjE;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,OAAO,SAAS,MAAM,EAAE,KAAK;IAC3D,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,KAAK,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB"}
|