@cnstra/core 2.0.0 → 2.0.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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @cnstra/core
2
2
 
3
- **Graph-routed, type-safe orchestration for reactive apps — no global event bus.**
3
+ **Workflow / orchestration engine for TypeScript — deterministic, embeddable, in-memory.**
4
4
 
5
5
  📚 **[Full Documentation →](https://cnstra.org/)** | [Quick Start](https://cnstra.org/docs/core/quick-start) | [API Reference](https://cnstra.org/docs/core/api) | [Recipes](https://cnstra.org/docs/recipes)
6
6
 
@@ -10,6 +10,10 @@
10
10
 
11
11
  **Zero dependencies** • **No pub/sub** • **CNS approach** (Central Neural Network of your app)
12
12
 
13
+ Common backend use-cases:
14
+ - **Jobs** (queues/workers), **sync/integrations** (webhooks), **ETL/pipelines**
15
+ - **Retries/timeouts/cancellation** and **saga-style compensations**
16
+
13
17
  👉 **[Read the full documentation →](https://cnstra.org/)**
14
18
 
15
19
  ## Quick Start
@@ -0,0 +1,22 @@
1
+ import { CNSCollateral } from './CNSCollateral';
2
+ import { CNSStimulation } from './CNSStimulation';
3
+ import { TCNSAxon } from './types/TCNSAxon';
4
+ import { TCNSNeuron } from './types/TCNSNeuron';
5
+ import { TCNSCollateralPersistOptions, TCNSNeuronPersistOptions, TCNSStimulationPersistOptions } from './types/TCNSPersist';
6
+ export declare class CNSPersistOptionsRegistry {
7
+ private neurons;
8
+ private neuronNames;
9
+ private collaterals;
10
+ private stimulations;
11
+ addNeuron(neuron: TCNSNeuron<unknown, TCNSAxon>, options: TCNSNeuronPersistOptions<TCNSNeuron<unknown, TCNSAxon>>): void;
12
+ getNeuron(name: string): TCNSNeuron<unknown, TCNSAxon> | undefined;
13
+ getNeuronName(neuron: TCNSNeuron<unknown, TCNSAxon>): string | undefined;
14
+ removeNeuron(name: string): void;
15
+ addCollateral(collateral: CNSCollateral<unknown>, options: TCNSCollateralPersistOptions): void;
16
+ getCollateral(name: string): CNSCollateral<unknown> | undefined;
17
+ removeCollateral(name: string): void;
18
+ addStimulation(stimulation: CNSStimulation<TCNSNeuron<unknown, TCNSAxon>>, options: TCNSStimulationPersistOptions): void;
19
+ getStimulation(stimulationId: string): CNSStimulation<TCNSNeuron<unknown, TCNSAxon>> | undefined;
20
+ removeStimulation(stimulationId: string): void;
21
+ }
22
+ //# sourceMappingURL=CNSPersistOptionsRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CNSPersistOptionsRegistry.d.ts","sourceRoot":"","sources":["../src/CNSPersistOptionsRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EACH,4BAA4B,EAC5B,wBAAwB,EACxB,6BAA6B,EAChC,MAAM,qBAAqB,CAAC;AAE7B,qBAAa,yBAAyB;IAClC,OAAO,CAAC,OAAO,CAAoD;IACnE,OAAO,CAAC,WAAW,CAAwD;IAE3E,OAAO,CAAC,WAAW,CAA6C;IAEhE,OAAO,CAAC,YAAY,CAGhB;IAEJ,SAAS,CACL,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,EACrC,OAAO,EAAE,wBAAwB,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,GACjE,IAAI;IAKP,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,SAAS;IAIlE,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,GAAG,SAAS;IAIxE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMhC,aAAa,CACT,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,EAClC,OAAO,EAAE,4BAA4B,GACtC,IAAI;IAIP,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,SAAS;IAI/D,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIpC,cAAc,CACV,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,EAC1D,OAAO,EAAE,6BAA6B,GACvC,IAAI;IAIP,cAAc,CACV,aAAa,EAAE,MAAM,GACtB,cAAc,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,GAAG,SAAS;IAI5D,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;CAGjD"}
@@ -1 +1 @@
1
- {"version":3,"file":"CNSStimulation.d.ts","sourceRoot":"","sources":["../src/CNSStimulation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CNSStimulation.d.ts","sourceRoot":"","sources":["../src/CNSStimulation.ts"],"names":[],"mappings":"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"}
package/dist/index.cjs CHANGED
@@ -957,6 +957,55 @@ var CNSCollateral = class {
957
957
  }
958
958
  };
959
959
 
960
+ // src/utils/CNSDrainGuard.ts
961
+ var CNSDrainGuard = class {
962
+ constructor(guardOptions) {
963
+ this.guardOptions = guardOptions;
964
+ }
965
+ isDraining() {
966
+ return this.currentDrain !== void 0;
967
+ }
968
+ getCurrentStimulation() {
969
+ return this.currentStimulation;
970
+ }
971
+ drain() {
972
+ if (this.currentDrain) return this.currentDrain;
973
+ const stimulation = this.guardOptions.cns.stimulate(
974
+ this.guardOptions.signal,
975
+ this.createStimulationOptions()
976
+ );
977
+ const drain = stimulation.waitUntilComplete().finally(() => {
978
+ if (this.currentDrain !== drain) return;
979
+ this.currentDrain = void 0;
980
+ this.currentStimulation = void 0;
981
+ this.currentAbortController = void 0;
982
+ });
983
+ this.currentStimulation = stimulation;
984
+ this.currentDrain = drain;
985
+ return drain;
986
+ }
987
+ abort(reason) {
988
+ if (!this.currentAbortController) return false;
989
+ if (this.currentAbortController.signal.aborted) return false;
990
+ this.currentAbortController.abort(reason);
991
+ return true;
992
+ }
993
+ createStimulationOptions() {
994
+ const options = this.guardOptions.options;
995
+ if (options?.abortSignal) {
996
+ return options;
997
+ }
998
+ if (typeof AbortController === "undefined") {
999
+ return options ?? {};
1000
+ }
1001
+ this.currentAbortController = new AbortController();
1002
+ return {
1003
+ ...options,
1004
+ abortSignal: this.currentAbortController.signal
1005
+ };
1006
+ }
1007
+ };
1008
+
960
1009
  // src/factory/index.ts
961
1010
  var collateral = () => new CNSCollateral();
962
1011
  var neuron = (axon) => {
@@ -1102,6 +1151,7 @@ var modality = (afferentPaths) => {
1102
1151
 
1103
1152
  exports.CNS = CNS;
1104
1153
  exports.CNSCollateral = CNSCollateral;
1154
+ exports.CNSDrainGuard = CNSDrainGuard;
1105
1155
  exports.CNSStimulationContextStore = CNSStimulationContextStore;
1106
1156
  exports.afferentPath = afferentPath;
1107
1157
  exports.collateral = collateral;