@cadenza.io/core 1.9.1 → 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.mjs CHANGED
@@ -119,16 +119,27 @@ var SignalBroker = class _SignalBroker {
119
119
  }
120
120
  }
121
121
  execute(signal, context) {
122
+ const isMeta = signal.startsWith("meta");
123
+ const emittedAt = Date.now();
124
+ const data = {
125
+ ...context,
126
+ __signalEmission: {
127
+ ...context.__signalEmission,
128
+ signalName: signal,
129
+ emittedAt,
130
+ isMeta
131
+ }
132
+ };
122
133
  let executed;
123
- executed = this.executeListener(signal, context);
134
+ executed = this.executeListener(signal, data);
124
135
  const parts = signal.slice(0, Math.max(signal.lastIndexOf(":"), signal.lastIndexOf("."))).split(".");
125
136
  for (let i = parts.length; i > 0; i--) {
126
137
  const parent = parts.slice(0, i).join(".");
127
- executed = executed || this.executeListener(parent + ".*", context);
138
+ executed = executed || this.executeListener(parent + ".*", data);
128
139
  }
129
140
  if (this.debug) {
130
141
  console.log(
131
- `Emitted signal ${signal} with context ${JSON.stringify(context)}`,
142
+ `Emitted signal ${signal} with context ${JSON.stringify(data)}`,
132
143
  executed ? "\u2705" : "\u274C"
133
144
  );
134
145
  }
@@ -136,7 +147,8 @@ var SignalBroker = class _SignalBroker {
136
147
  }
137
148
  executeListener(signal, context) {
138
149
  const obs = this.signalObservers.get(signal);
139
- const runner = signal.startsWith("meta") ? this.metaRunner : this.runner;
150
+ const isMeta = signal.startsWith("meta");
151
+ const runner = isMeta ? this.metaRunner : this.runner;
140
152
  if (obs && obs.tasks.size && runner) {
141
153
  obs.fn(runner, Array.from(obs.tasks), context);
142
154
  return true;
@@ -144,13 +156,26 @@ var SignalBroker = class _SignalBroker {
144
156
  return false;
145
157
  }
146
158
  addSignal(signal) {
147
- if (!this.signalObservers.has(signal)) {
148
- this.validateSignalName(signal);
149
- this.signalObservers.set(signal, {
159
+ let _signal = signal;
160
+ if (!this.signalObservers.has(_signal)) {
161
+ this.validateSignalName(_signal);
162
+ this.signalObservers.set(_signal, {
150
163
  fn: (runner, tasks, context) => runner.run(tasks, context),
151
164
  tasks: /* @__PURE__ */ new Set()
152
165
  });
153
- this.emit("meta.signal_broker.added", { __signalName: signal });
166
+ const sections = _signal.split(":");
167
+ if (sections.length === 2) {
168
+ _signal = sections[0];
169
+ if (!this.signalObservers.has(sections[0])) {
170
+ this.signalObservers.set(_signal, {
171
+ fn: (runner, tasks, context) => runner.run(tasks, context),
172
+ tasks: /* @__PURE__ */ new Set()
173
+ });
174
+ } else {
175
+ return;
176
+ }
177
+ }
178
+ this.emit("meta.signal_broker.added", { __signalName: _signal });
154
179
  }
155
180
  }
156
181
  // TODO schedule signals
@@ -703,24 +728,23 @@ var GraphNode = class _GraphNode extends SignalEmitter {
703
728
  if (shouldSchedule) {
704
729
  this.layer = layer;
705
730
  layer.add(this);
706
- this.emit("meta.node.scheduled", {
731
+ const scheduledAt = Date.now();
732
+ this.emitWithMetadata("meta.node.scheduled", {
707
733
  ...this.lightExport(),
708
- __scheduled: Date.now()
734
+ __scheduled: scheduledAt
709
735
  });
710
736
  const context = this.context.getFullContext();
711
- if (context.__emittedSignal !== void 0 && context.__consumedByNode === void 0 && !context.__emittedSignal.includes("meta.")) {
712
- this.emit("meta.node.consumed_signal", {
713
- __signal_log: {
714
- signal_name: context.__emittedSignal,
715
- log_type: "consume",
716
- consumed_by_task_id: this.task.id,
717
- task_execution_id: this.id,
718
- relation_type: "listener",
719
- metadata: {},
720
- is_meta: false
737
+ if (context.__signalEmission !== void 0 && (!this.isMeta() || this.debug)) {
738
+ this.emitWithMetadata("meta.node.consumed_signal", {
739
+ __signalConsumption: {
740
+ signalName: context.__signalEmission.signalName,
741
+ taskId: this.task.id,
742
+ taskExecutionId: this.id,
743
+ consumedAt: scheduledAt
721
744
  }
722
745
  });
723
- context.__consumedByNode = this.id;
746
+ delete context.__signalEmission;
747
+ this.migrate(context);
724
748
  }
725
749
  }
726
750
  }
@@ -730,12 +754,12 @@ var GraphNode = class _GraphNode extends SignalEmitter {
730
754
  }
731
755
  const memento = this.lightExport();
732
756
  if (this.previousNodes.length === 0) {
733
- this.emit("meta.node.started_routine_execution", memento);
757
+ this.emitWithMetadata("meta.node.started_routine_execution", memento);
734
758
  }
735
759
  if (this.debug) {
736
760
  this.log();
737
761
  }
738
- this.emit("meta.node.started", memento);
762
+ this.emitWithMetadata("meta.node.started", memento);
739
763
  return this.executionStart;
740
764
  }
741
765
  end() {
@@ -747,11 +771,11 @@ var GraphNode = class _GraphNode extends SignalEmitter {
747
771
  this.executionTime = end - this.executionStart;
748
772
  const memento = this.lightExport();
749
773
  if (this.errored || this.failed) {
750
- this.emit("meta.node.errored", memento);
774
+ this.emitWithMetadata("meta.node.errored", memento);
751
775
  }
752
- this.emit("meta.node.ended", memento);
776
+ this.emitWithMetadata("meta.node.ended", memento);
753
777
  if (this.graphDone()) {
754
- this.emit(
778
+ this.emitWithMetadata(
755
779
  `meta.node.ended_routine_execution:${this.routineExecId}`,
756
780
  memento
757
781
  );
@@ -814,30 +838,19 @@ var GraphNode = class _GraphNode extends SignalEmitter {
814
838
  });
815
839
  }
816
840
  }
817
- emitWithMetadata(signal, context) {
841
+ emitWithMetadata(signal, ctx) {
818
842
  this.emit(signal, {
819
- ...context,
820
- __emittedSignal: signal,
821
- __emittedByNode: this.id
843
+ ...ctx,
844
+ __signalEmission: {
845
+ taskId: this.task.id,
846
+ taskExecutionId: this.id
847
+ }
822
848
  });
823
- if (!signal.includes(".meta")) {
824
- this.emit("meta.node.emitted_signal", {
825
- __signal_log: {
826
- signal_name: signal,
827
- log_type: "emit",
828
- emitted_by_task_id: this.task.id,
829
- task_execution_id: this.id,
830
- relation_type: "emitter",
831
- metadata: {},
832
- is_meta: false
833
- }
834
- });
835
- }
836
849
  }
837
850
  onProgress(progress) {
838
851
  var _a, _b, _c;
839
852
  progress = Math.min(Math.max(0, progress), 1);
840
- this.emit(`meta.node.progress:${this.routineExecId}`, {
853
+ this.emitWithMetadata(`meta.node.progress:${this.routineExecId}`, {
841
854
  __nodeId: this.id,
842
855
  __routineExecId: this.routineExecId,
843
856
  __progress: progress,