@cadenza.io/core 1.6.0 → 1.7.0
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/index.d.mts +6 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.js +46 -7
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +46 -7
- package/dist/index.mjs.map +1 -1
- package/package.json +14 -3
package/dist/index.d.mts
CHANGED
|
@@ -605,6 +605,9 @@ declare class SignalBroker {
|
|
|
605
605
|
* @returns The broker instance.
|
|
606
606
|
*/
|
|
607
607
|
static get instance(): SignalBroker;
|
|
608
|
+
private debug;
|
|
609
|
+
setDebug(value: boolean): void;
|
|
610
|
+
protected sanitizeSignalName(signalName: string): void;
|
|
608
611
|
protected runner: GraphRunner | undefined;
|
|
609
612
|
protected metaRunner: GraphRunner | undefined;
|
|
610
613
|
getSignalsTask: Task | undefined;
|
|
@@ -652,7 +655,6 @@ declare class SignalBroker {
|
|
|
652
655
|
* @returns Array of signals.
|
|
653
656
|
*/
|
|
654
657
|
listObservedSignals(): string[];
|
|
655
|
-
private getRunner;
|
|
656
658
|
reset(): void;
|
|
657
659
|
}
|
|
658
660
|
|
|
@@ -733,17 +735,20 @@ interface TaskOptions {
|
|
|
733
735
|
outputSchema?: SchemaDefinition;
|
|
734
736
|
validateOutputContext?: boolean;
|
|
735
737
|
}
|
|
738
|
+
type CadenzaMode = "dev" | "debug" | "production";
|
|
736
739
|
declare class Cadenza {
|
|
737
740
|
static broker: SignalBroker;
|
|
738
741
|
static runner: GraphRunner;
|
|
739
742
|
static metaRunner: GraphRunner;
|
|
740
743
|
static registry: GraphRegistry;
|
|
741
744
|
protected static isBootstrapped: boolean;
|
|
745
|
+
protected static mode: CadenzaMode;
|
|
742
746
|
protected static bootstrap(): void;
|
|
743
747
|
static get runStrategy(): {
|
|
744
748
|
PARALLEL: GraphAsyncRun;
|
|
745
749
|
SEQUENTIAL: GraphStandardRun;
|
|
746
750
|
};
|
|
751
|
+
static setMode(mode: CadenzaMode): void;
|
|
747
752
|
/**
|
|
748
753
|
* Validates a name for uniqueness and non-emptiness.
|
|
749
754
|
* @param name The name to validate.
|
package/dist/index.d.ts
CHANGED
|
@@ -605,6 +605,9 @@ declare class SignalBroker {
|
|
|
605
605
|
* @returns The broker instance.
|
|
606
606
|
*/
|
|
607
607
|
static get instance(): SignalBroker;
|
|
608
|
+
private debug;
|
|
609
|
+
setDebug(value: boolean): void;
|
|
610
|
+
protected sanitizeSignalName(signalName: string): void;
|
|
608
611
|
protected runner: GraphRunner | undefined;
|
|
609
612
|
protected metaRunner: GraphRunner | undefined;
|
|
610
613
|
getSignalsTask: Task | undefined;
|
|
@@ -652,7 +655,6 @@ declare class SignalBroker {
|
|
|
652
655
|
* @returns Array of signals.
|
|
653
656
|
*/
|
|
654
657
|
listObservedSignals(): string[];
|
|
655
|
-
private getRunner;
|
|
656
658
|
reset(): void;
|
|
657
659
|
}
|
|
658
660
|
|
|
@@ -733,17 +735,20 @@ interface TaskOptions {
|
|
|
733
735
|
outputSchema?: SchemaDefinition;
|
|
734
736
|
validateOutputContext?: boolean;
|
|
735
737
|
}
|
|
738
|
+
type CadenzaMode = "dev" | "debug" | "production";
|
|
736
739
|
declare class Cadenza {
|
|
737
740
|
static broker: SignalBroker;
|
|
738
741
|
static runner: GraphRunner;
|
|
739
742
|
static metaRunner: GraphRunner;
|
|
740
743
|
static registry: GraphRegistry;
|
|
741
744
|
protected static isBootstrapped: boolean;
|
|
745
|
+
protected static mode: CadenzaMode;
|
|
742
746
|
protected static bootstrap(): void;
|
|
743
747
|
static get runStrategy(): {
|
|
744
748
|
PARALLEL: GraphAsyncRun;
|
|
745
749
|
SEQUENTIAL: GraphStandardRun;
|
|
746
750
|
};
|
|
751
|
+
static setMode(mode: CadenzaMode): void;
|
|
747
752
|
/**
|
|
748
753
|
* Validates a name for uniqueness and non-emptiness.
|
|
749
754
|
* @param name The name to validate.
|
package/dist/index.js
CHANGED
|
@@ -38,9 +38,10 @@ module.exports = __toCommonJS(index_exports);
|
|
|
38
38
|
var SignalBroker = class _SignalBroker {
|
|
39
39
|
// execId -> emitted signals
|
|
40
40
|
constructor() {
|
|
41
|
+
this.debug = false;
|
|
41
42
|
this.signalObservers = /* @__PURE__ */ new Map();
|
|
42
43
|
this.emitStacks = /* @__PURE__ */ new Map();
|
|
43
|
-
this.addSignal("meta.
|
|
44
|
+
this.addSignal("meta.signal_broker.added");
|
|
44
45
|
}
|
|
45
46
|
/**
|
|
46
47
|
* Singleton instance for signal management.
|
|
@@ -52,6 +53,28 @@ var SignalBroker = class _SignalBroker {
|
|
|
52
53
|
}
|
|
53
54
|
return this.instance_;
|
|
54
55
|
}
|
|
56
|
+
setDebug(value) {
|
|
57
|
+
this.debug = value;
|
|
58
|
+
}
|
|
59
|
+
sanitizeSignalName(signalName) {
|
|
60
|
+
if (signalName.length > 100) {
|
|
61
|
+
throw new Error("Signal name must be less than 100 characters");
|
|
62
|
+
}
|
|
63
|
+
if (signalName.includes(" ")) {
|
|
64
|
+
throw new Error("Signal name must not contain spaces");
|
|
65
|
+
}
|
|
66
|
+
if (signalName.includes("/")) {
|
|
67
|
+
throw new Error("Signal name must not contain slashes");
|
|
68
|
+
}
|
|
69
|
+
if (signalName.includes("\\")) {
|
|
70
|
+
throw new Error("Signal name must not contain backslashes");
|
|
71
|
+
}
|
|
72
|
+
if (/[A-Z]/.test(signalName.split(".").slice(1).join("."))) {
|
|
73
|
+
throw new Error(
|
|
74
|
+
"Signal name must not contain uppercase letters in the middle of the signal name. It is only allowed in the first part of the signal name."
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
55
78
|
/**
|
|
56
79
|
* Initializes with runners.
|
|
57
80
|
* @param runner Standard runner for user signals.
|
|
@@ -117,7 +140,7 @@ var SignalBroker = class _SignalBroker {
|
|
|
117
140
|
* @throws Error on detected loop.
|
|
118
141
|
*/
|
|
119
142
|
emit(signal, context = {}) {
|
|
120
|
-
const execId = context.
|
|
143
|
+
const execId = context.__routineExecId || "global";
|
|
121
144
|
if (!this.emitStacks.has(execId)) this.emitStacks.set(execId, /* @__PURE__ */ new Map());
|
|
122
145
|
const stack = this.emitStacks.get(execId);
|
|
123
146
|
stack.set(signal, context);
|
|
@@ -140,20 +163,26 @@ var SignalBroker = class _SignalBroker {
|
|
|
140
163
|
}
|
|
141
164
|
executeListener(signal, context) {
|
|
142
165
|
const obs = this.signalObservers.get(signal);
|
|
143
|
-
const runner =
|
|
166
|
+
const runner = signal.startsWith("meta") ? this.metaRunner : this.runner;
|
|
144
167
|
if (obs && obs.tasks.size && runner) {
|
|
145
168
|
obs.fn(runner, Array.from(obs.tasks), context);
|
|
169
|
+
if (this.debug) {
|
|
170
|
+
console.log(
|
|
171
|
+
`Emitted signal ${signal} with context ${JSON.stringify(context)}`
|
|
172
|
+
);
|
|
173
|
+
}
|
|
146
174
|
return true;
|
|
147
175
|
}
|
|
148
176
|
return false;
|
|
149
177
|
}
|
|
150
178
|
addSignal(signal) {
|
|
151
179
|
if (!this.signalObservers.has(signal)) {
|
|
180
|
+
this.sanitizeSignalName(signal);
|
|
152
181
|
this.signalObservers.set(signal, {
|
|
153
182
|
fn: (runner, tasks, context) => runner.run(tasks, context),
|
|
154
183
|
tasks: /* @__PURE__ */ new Set()
|
|
155
184
|
});
|
|
156
|
-
this.emit("meta.
|
|
185
|
+
this.emit("meta.signal_broker.added", { __signalName: signal });
|
|
157
186
|
}
|
|
158
187
|
}
|
|
159
188
|
/**
|
|
@@ -163,9 +192,6 @@ var SignalBroker = class _SignalBroker {
|
|
|
163
192
|
listObservedSignals() {
|
|
164
193
|
return Array.from(this.signalObservers.keys());
|
|
165
194
|
}
|
|
166
|
-
getRunner(signal) {
|
|
167
|
-
return signal.startsWith("meta") ? this.metaRunner : this.runner;
|
|
168
|
-
}
|
|
169
195
|
reset() {
|
|
170
196
|
this.emitStacks.clear();
|
|
171
197
|
this.signalObservers.clear();
|
|
@@ -1851,6 +1877,7 @@ var GraphRunner = class extends SignalEmitter {
|
|
|
1851
1877
|
});
|
|
1852
1878
|
const ctx = new GraphContext(context || {});
|
|
1853
1879
|
const routineExecId = (_a = context.__routineExecId) != null ? _a : (0, import_uuid6.v4)();
|
|
1880
|
+
context.__routineExecId = routineExecId;
|
|
1854
1881
|
const data = {
|
|
1855
1882
|
__routineExecId: routineExecId,
|
|
1856
1883
|
__routineName: routineName,
|
|
@@ -1865,6 +1892,11 @@ var GraphRunner = class extends SignalEmitter {
|
|
|
1865
1892
|
__scheduled: Date.now()
|
|
1866
1893
|
};
|
|
1867
1894
|
this.emit("meta.runner.added_tasks", data);
|
|
1895
|
+
if (this.debug) {
|
|
1896
|
+
console.log(
|
|
1897
|
+
`Running routine ${routineName} with context ${JSON.stringify(ctx.getContext())}`
|
|
1898
|
+
);
|
|
1899
|
+
}
|
|
1868
1900
|
allTasks.forEach(
|
|
1869
1901
|
(task) => this.currentRun.addNode(new GraphNode(task, ctx, routineExecId))
|
|
1870
1902
|
);
|
|
@@ -2578,6 +2610,12 @@ var Cadenza = class {
|
|
|
2578
2610
|
SEQUENTIAL: new GraphStandardRun()
|
|
2579
2611
|
};
|
|
2580
2612
|
}
|
|
2613
|
+
static setMode(mode) {
|
|
2614
|
+
this.mode = mode;
|
|
2615
|
+
if (mode === "debug" || mode === "dev") {
|
|
2616
|
+
this.broker.setDebug(true);
|
|
2617
|
+
}
|
|
2618
|
+
}
|
|
2581
2619
|
/**
|
|
2582
2620
|
* Validates a name for uniqueness and non-emptiness.
|
|
2583
2621
|
* @param name The name to validate.
|
|
@@ -2941,6 +2979,7 @@ var Cadenza = class {
|
|
|
2941
2979
|
}
|
|
2942
2980
|
};
|
|
2943
2981
|
Cadenza.isBootstrapped = false;
|
|
2982
|
+
Cadenza.mode = "production";
|
|
2944
2983
|
|
|
2945
2984
|
// src/graph/definition/SignalTask.ts
|
|
2946
2985
|
var SignalTask = class extends Task {
|