@cadenza.io/core 1.9.0 → 1.10.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
@@ -228,7 +228,7 @@ declare class GraphNode extends SignalEmitter implements Graph {
228
228
  private workAsync;
229
229
  private executeAsync;
230
230
  private work;
231
- protected emitWithMetadata(signal: string, context: AnyObject): void;
231
+ protected emitWithMetadata(signal: string, ctx: AnyObject): void;
232
232
  private onProgress;
233
233
  private postProcess;
234
234
  private onError;
package/dist/index.d.ts CHANGED
@@ -228,7 +228,7 @@ declare class GraphNode extends SignalEmitter implements Graph {
228
228
  private workAsync;
229
229
  private executeAsync;
230
230
  private work;
231
- protected emitWithMetadata(signal: string, context: AnyObject): void;
231
+ protected emitWithMetadata(signal: string, ctx: AnyObject): void;
232
232
  private onProgress;
233
233
  private postProcess;
234
234
  private onError;
package/dist/index.js CHANGED
@@ -157,16 +157,27 @@ var SignalBroker = class _SignalBroker {
157
157
  }
158
158
  }
159
159
  execute(signal, context) {
160
+ const isMeta = signal.startsWith("meta");
161
+ const emittedAt = Date.now();
162
+ const data = {
163
+ ...context,
164
+ __signalEmission: {
165
+ ...context.__signalEmission,
166
+ signalName: signal,
167
+ emittedAt,
168
+ isMeta
169
+ }
170
+ };
160
171
  let executed;
161
- executed = this.executeListener(signal, context);
172
+ executed = this.executeListener(signal, data);
162
173
  const parts = signal.slice(0, Math.max(signal.lastIndexOf(":"), signal.lastIndexOf("."))).split(".");
163
174
  for (let i = parts.length; i > 0; i--) {
164
175
  const parent = parts.slice(0, i).join(".");
165
- executed = executed || this.executeListener(parent + ".*", context);
176
+ executed = executed || this.executeListener(parent + ".*", data);
166
177
  }
167
178
  if (this.debug) {
168
179
  console.log(
169
- `Emitted signal ${signal} with context ${JSON.stringify(context)}`,
180
+ `Emitted signal ${signal} with context ${JSON.stringify(data)}`,
170
181
  executed ? "\u2705" : "\u274C"
171
182
  );
172
183
  }
@@ -174,7 +185,8 @@ var SignalBroker = class _SignalBroker {
174
185
  }
175
186
  executeListener(signal, context) {
176
187
  const obs = this.signalObservers.get(signal);
177
- const runner = signal.startsWith("meta") ? this.metaRunner : this.runner;
188
+ const isMeta = signal.startsWith("meta");
189
+ const runner = isMeta ? this.metaRunner : this.runner;
178
190
  if (obs && obs.tasks.size && runner) {
179
191
  obs.fn(runner, Array.from(obs.tasks), context);
180
192
  return true;
@@ -182,13 +194,26 @@ var SignalBroker = class _SignalBroker {
182
194
  return false;
183
195
  }
184
196
  addSignal(signal) {
185
- if (!this.signalObservers.has(signal)) {
186
- this.validateSignalName(signal);
187
- this.signalObservers.set(signal, {
197
+ let _signal = signal;
198
+ if (!this.signalObservers.has(_signal)) {
199
+ this.validateSignalName(_signal);
200
+ this.signalObservers.set(_signal, {
188
201
  fn: (runner, tasks, context) => runner.run(tasks, context),
189
202
  tasks: /* @__PURE__ */ new Set()
190
203
  });
191
- this.emit("meta.signal_broker.added", { __signalName: signal });
204
+ const sections = _signal.split(":");
205
+ if (sections.length === 2) {
206
+ _signal = sections[0];
207
+ if (!this.signalObservers.has(sections[0])) {
208
+ this.signalObservers.set(_signal, {
209
+ fn: (runner, tasks, context) => runner.run(tasks, context),
210
+ tasks: /* @__PURE__ */ new Set()
211
+ });
212
+ } else {
213
+ return;
214
+ }
215
+ }
216
+ this.emit("meta.signal_broker.added", { __signalName: _signal });
192
217
  }
193
218
  }
194
219
  // TODO schedule signals
@@ -741,23 +766,23 @@ var GraphNode = class _GraphNode extends SignalEmitter {
741
766
  if (shouldSchedule) {
742
767
  this.layer = layer;
743
768
  layer.add(this);
744
- this.emit("meta.node.scheduled", {
769
+ const scheduledAt = Date.now();
770
+ this.emitWithMetadata("meta.node.scheduled", {
745
771
  ...this.lightExport(),
746
- __scheduled: Date.now()
772
+ __scheduled: scheduledAt
747
773
  });
748
774
  const context = this.context.getFullContext();
749
- if (context.__signalName !== void 0 && !context.__signalName.includes("meta.")) {
750
- this.emit("meta.node.consumed_signal", {
751
- __signal_log: {
752
- signal_name: context.__signalName,
753
- log_type: "consume",
754
- consumed_by_task_id: this.task.id,
755
- task_execution_id: this.id,
756
- relation_type: "listener",
757
- metadata: {},
758
- is_meta: false
775
+ if (context.__signalEmission !== void 0 && (!this.isMeta() || this.debug)) {
776
+ this.emitWithMetadata("meta.node.consumed_signal", {
777
+ __signalConsumption: {
778
+ signalName: context.__signalEmission.signalName,
779
+ taskId: this.task.id,
780
+ taskExecutionId: this.id,
781
+ consumedAt: scheduledAt
759
782
  }
760
783
  });
784
+ delete context.__signalEmission;
785
+ this.migrate(context);
761
786
  }
762
787
  }
763
788
  }
@@ -767,12 +792,12 @@ var GraphNode = class _GraphNode extends SignalEmitter {
767
792
  }
768
793
  const memento = this.lightExport();
769
794
  if (this.previousNodes.length === 0) {
770
- this.emit("meta.node.started_routine_execution", memento);
795
+ this.emitWithMetadata("meta.node.started_routine_execution", memento);
771
796
  }
772
797
  if (this.debug) {
773
798
  this.log();
774
799
  }
775
- this.emit("meta.node.started", memento);
800
+ this.emitWithMetadata("meta.node.started", memento);
776
801
  return this.executionStart;
777
802
  }
778
803
  end() {
@@ -784,11 +809,11 @@ var GraphNode = class _GraphNode extends SignalEmitter {
784
809
  this.executionTime = end - this.executionStart;
785
810
  const memento = this.lightExport();
786
811
  if (this.errored || this.failed) {
787
- this.emit("meta.node.errored", memento);
812
+ this.emitWithMetadata("meta.node.errored", memento);
788
813
  }
789
- this.emit("meta.node.ended", memento);
814
+ this.emitWithMetadata("meta.node.ended", memento);
790
815
  if (this.graphDone()) {
791
- this.emit(
816
+ this.emitWithMetadata(
792
817
  `meta.node.ended_routine_execution:${this.routineExecId}`,
793
818
  memento
794
819
  );
@@ -851,30 +876,19 @@ var GraphNode = class _GraphNode extends SignalEmitter {
851
876
  });
852
877
  }
853
878
  }
854
- emitWithMetadata(signal, context) {
879
+ emitWithMetadata(signal, ctx) {
855
880
  this.emit(signal, {
856
- ...context,
857
- __emittedSignal: signal,
858
- __emittedByNode: this.id
881
+ ...ctx,
882
+ __signalEmission: {
883
+ taskId: this.task.id,
884
+ taskExecutionId: this.id
885
+ }
859
886
  });
860
- if (!signal.includes(".meta")) {
861
- this.emit("meta.node.emitted_signal", {
862
- __signal_log: {
863
- signal_name: signal,
864
- log_type: "emit",
865
- emitted_by_task_id: this.task.id,
866
- task_execution_id: this.id,
867
- relation_type: "emitter",
868
- metadata: {},
869
- is_meta: false
870
- }
871
- });
872
- }
873
887
  }
874
888
  onProgress(progress) {
875
889
  var _a, _b, _c;
876
890
  progress = Math.min(Math.max(0, progress), 1);
877
- this.emit(`meta.node.progress:${this.routineExecId}`, {
891
+ this.emitWithMetadata(`meta.node.progress:${this.routineExecId}`, {
878
892
  __nodeId: this.id,
879
893
  __routineExecId: this.routineExecId,
880
894
  __progress: progress,