@cadenza.io/core 3.4.0 → 3.5.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 CHANGED
@@ -229,8 +229,8 @@ declare class GraphNode extends SignalEmitter implements Graph {
229
229
  workAsync(): Promise<void>;
230
230
  executeAsync(): Promise<GraphNode[]>;
231
231
  work(): TaskResult | Promise<TaskResult>;
232
- emitWithMetadata(signal: string, ctx: AnyObject): void;
233
- emitMetricsWithMetadata(signal: string, ctx: AnyObject): void;
232
+ emitWithMetadata(signal: string, data: AnyObject): void;
233
+ emitMetricsWithMetadata(signal: string, data: AnyObject): void;
234
234
  onProgress(progress: number): void;
235
235
  postProcess(): GraphNode[] | Promise<GraphNode[]>;
236
236
  postProcessAsync(nextNodes: Promise<GraphNode[]>): Promise<GraphNode[]>;
@@ -673,9 +673,11 @@ declare class SignalBroker {
673
673
  metaRunner: GraphRunner | undefined;
674
674
  clearSignalsTask: Task | undefined;
675
675
  getSignalsTask: Task | undefined;
676
+ registerSignalTask: Task | undefined;
676
677
  signalObservers: Map<string, {
677
678
  fn: (runner: GraphRunner, tasks: (Task | GraphRoutine)[], context: AnyObject) => void;
678
679
  tasks: Set<Task | GraphRoutine>;
680
+ registered: boolean;
679
681
  }>;
680
682
  emitStacks: Map<string, Map<string, AnyObject>>;
681
683
  constructor();
package/dist/index.d.ts CHANGED
@@ -229,8 +229,8 @@ declare class GraphNode extends SignalEmitter implements Graph {
229
229
  workAsync(): Promise<void>;
230
230
  executeAsync(): Promise<GraphNode[]>;
231
231
  work(): TaskResult | Promise<TaskResult>;
232
- emitWithMetadata(signal: string, ctx: AnyObject): void;
233
- emitMetricsWithMetadata(signal: string, ctx: AnyObject): void;
232
+ emitWithMetadata(signal: string, data: AnyObject): void;
233
+ emitMetricsWithMetadata(signal: string, data: AnyObject): void;
234
234
  onProgress(progress: number): void;
235
235
  postProcess(): GraphNode[] | Promise<GraphNode[]>;
236
236
  postProcessAsync(nextNodes: Promise<GraphNode[]>): Promise<GraphNode[]>;
@@ -673,9 +673,11 @@ declare class SignalBroker {
673
673
  metaRunner: GraphRunner | undefined;
674
674
  clearSignalsTask: Task | undefined;
675
675
  getSignalsTask: Task | undefined;
676
+ registerSignalTask: Task | undefined;
676
677
  signalObservers: Map<string, {
677
678
  fn: (runner: GraphRunner, tasks: (Task | GraphRoutine)[], context: AnyObject) => void;
678
679
  tasks: Set<Task | GraphRoutine>;
680
+ registered: boolean;
679
681
  }>;
680
682
  emitStacks: Map<string, Map<string, AnyObject>>;
681
683
  constructor();
package/dist/index.js CHANGED
@@ -83,6 +83,7 @@ var SignalBroker = class _SignalBroker {
83
83
  constructor() {
84
84
  this.debug = false;
85
85
  this.verbose = false;
86
+ // TODO: Signals should be a class with a the observers, registered flag and other data.
86
87
  this.signalObservers = /* @__PURE__ */ new Map();
87
88
  this.emitStacks = /* @__PURE__ */ new Map();
88
89
  this.addSignal("meta.signal_broker.added");
@@ -149,10 +150,22 @@ var SignalBroker = class _SignalBroker {
149
150
  ).doOn("meta.process_signal_queue_requested").emits("meta.signal_broker.queue_empty");
150
151
  this.getSignalsTask = Cadenza.createMetaTask("Get signals", (ctx) => {
151
152
  return {
152
- __signals: Array.from(this.signalObservers.keys()),
153
+ __signals: Array.from(this.signalObservers.entries()).map(
154
+ ([signal, data]) => ({
155
+ signal,
156
+ data: { registered: data.registered }
157
+ })
158
+ ),
153
159
  ...ctx
154
160
  };
155
161
  });
162
+ this.registerSignalTask = Cadenza.createMetaTask(
163
+ "Register signal",
164
+ (ctx) => {
165
+ const { __signalName } = ctx;
166
+ this.signalObservers.get(__signalName).registered = true;
167
+ }
168
+ ).doOn("meta.signal.registered");
156
169
  }
157
170
  /**
158
171
  * Observes a signal with a routine/task.
@@ -192,6 +205,7 @@ var SignalBroker = class _SignalBroker {
192
205
  if (!this.emitStacks.has(execId)) this.emitStacks.set(execId, /* @__PURE__ */ new Map());
193
206
  const stack = this.emitStacks.get(execId);
194
207
  stack.set(signal, context);
208
+ this.addSignal(signal);
195
209
  let executed = false;
196
210
  try {
197
211
  executed = this.execute(signal, context);
@@ -252,7 +266,8 @@ var SignalBroker = class _SignalBroker {
252
266
  this.validateSignalName(_signal);
253
267
  this.signalObservers.set(_signal, {
254
268
  fn: (runner, tasks, context) => runner.run(tasks, context),
255
- tasks: /* @__PURE__ */ new Set()
269
+ tasks: /* @__PURE__ */ new Set(),
270
+ registered: false
256
271
  });
257
272
  const sections = _signal.split(":");
258
273
  if (sections.length === 2) {
@@ -260,7 +275,8 @@ var SignalBroker = class _SignalBroker {
260
275
  if (!this.signalObservers.has(sections[0])) {
261
276
  this.signalObservers.set(_signal, {
262
277
  fn: (runner, tasks, context) => runner.run(tasks, context),
263
- tasks: /* @__PURE__ */ new Set()
278
+ tasks: /* @__PURE__ */ new Set(),
279
+ registered: false
264
280
  });
265
281
  } else {
266
282
  return;
@@ -980,8 +996,7 @@ var GraphNode = class _GraphNode extends SignalEmitter {
980
996
  });
981
997
  }
982
998
  }
983
- emitWithMetadata(signal, ctx) {
984
- const data = { ...ctx };
999
+ emitWithMetadata(signal, data) {
985
1000
  if (!this.task?.isHidden) {
986
1001
  data.__signalEmission = {
987
1002
  taskName: this.task.name,
@@ -997,8 +1012,7 @@ var GraphNode = class _GraphNode extends SignalEmitter {
997
1012
  }
998
1013
  this.emit(signal, data);
999
1014
  }
1000
- emitMetricsWithMetadata(signal, ctx) {
1001
- const data = { ...ctx };
1015
+ emitMetricsWithMetadata(signal, data) {
1002
1016
  if (!this.task?.isHidden) {
1003
1017
  data.__signalEmission = {
1004
1018
  taskName: this.task.name,