@cadenza.io/core 3.4.1 → 3.5.1

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,6 +673,7 @@ 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>;
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,6 +673,7 @@ 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>;
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");
@@ -148,13 +149,27 @@ var SignalBroker = class _SignalBroker {
148
149
  "Executes queued signals and clears the stack"
149
150
  ).doOn("meta.process_signal_queue_requested").emits("meta.signal_broker.queue_empty");
150
151
  this.getSignalsTask = Cadenza.createMetaTask("Get signals", (ctx) => {
152
+ const uniqueSignals = Array.from(this.signalObservers.keys()).filter(
153
+ (s) => !s.includes(":")
154
+ );
155
+ const processedSignals = uniqueSignals.map((signal) => ({
156
+ signal,
157
+ data: {
158
+ registered: this.signalObservers.get(signal)?.registered ?? false
159
+ }
160
+ }));
151
161
  return {
152
- __signals: Array.from(this.signalObservers.entries()).map(
153
- ([signal, data]) => ({ signal, data })
154
- ),
162
+ __signals: processedSignals,
155
163
  ...ctx
156
164
  };
157
165
  });
166
+ this.registerSignalTask = Cadenza.createMetaTask(
167
+ "Register signal",
168
+ (ctx) => {
169
+ const { __signalName } = ctx;
170
+ this.signalObservers.get(__signalName).registered = true;
171
+ }
172
+ ).doOn("meta.signal.registered");
158
173
  }
159
174
  /**
160
175
  * Observes a signal with a routine/task.
@@ -194,6 +209,7 @@ var SignalBroker = class _SignalBroker {
194
209
  if (!this.emitStacks.has(execId)) this.emitStacks.set(execId, /* @__PURE__ */ new Map());
195
210
  const stack = this.emitStacks.get(execId);
196
211
  stack.set(signal, context);
212
+ this.addSignal(signal);
197
213
  let executed = false;
198
214
  try {
199
215
  executed = this.execute(signal, context);
@@ -984,8 +1000,7 @@ var GraphNode = class _GraphNode extends SignalEmitter {
984
1000
  });
985
1001
  }
986
1002
  }
987
- emitWithMetadata(signal, ctx) {
988
- const data = { ...ctx };
1003
+ emitWithMetadata(signal, data) {
989
1004
  if (!this.task?.isHidden) {
990
1005
  data.__signalEmission = {
991
1006
  taskName: this.task.name,
@@ -1001,8 +1016,7 @@ var GraphNode = class _GraphNode extends SignalEmitter {
1001
1016
  }
1002
1017
  this.emit(signal, data);
1003
1018
  }
1004
- emitMetricsWithMetadata(signal, ctx) {
1005
- const data = { ...ctx };
1019
+ emitMetricsWithMetadata(signal, data) {
1006
1020
  if (!this.task?.isHidden) {
1007
1021
  data.__signalEmission = {
1008
1022
  taskName: this.task.name,