@cnstra/core 1.4.0 → 1.6.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/README.md +112 -36
- package/dist/CNS.d.ts +18 -8
- package/dist/CNS.d.ts.map +1 -1
- package/dist/CNSCollateral.d.ts +5 -5
- package/dist/CNSFunctionalQueue.d.ts +4 -4
- package/dist/CNSFunctionalQueue.d.ts.map +1 -1
- package/dist/CNSStimulation.d.ts +14 -10
- package/dist/CNSStimulation.d.ts.map +1 -1
- package/dist/factory/index.d.ts +14 -10
- package/dist/factory/index.d.ts.map +1 -1
- package/dist/index.cjs +214 -76
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +214 -77
- package/dist/index.js.map +1 -1
- package/dist/interfaces/ICNS.d.ts +11 -3
- package/dist/interfaces/ICNS.d.ts.map +1 -1
- package/dist/interfaces/ICNSCollateral.d.ts +3 -3
- package/dist/types/TCNSAxon.d.ts +2 -2
- package/dist/types/TCNSDendrite.d.ts +6 -4
- package/dist/types/TCNSDendrite.d.ts.map +1 -1
- package/dist/types/TCNSLocalContextValueStore.d.ts +1 -0
- package/dist/types/TCNSLocalContextValueStore.d.ts.map +1 -1
- package/dist/types/TCNSNeuron.d.ts +4 -2
- package/dist/types/TCNSNeuron.d.ts.map +1 -1
- package/dist/types/TCNSNeuronResponseReturn.d.ts +1 -1
- package/dist/types/TCNSNeuronResponseReturn.d.ts.map +1 -1
- package/dist/types/TCNSSerializedSignal.d.ts +10 -0
- package/dist/types/TCNSSerializedSignal.d.ts.map +1 -0
- package/dist/types/TCNSSignal.d.ts +2 -3
- package/dist/types/TCNSSignal.d.ts.map +1 -1
- package/dist/types/TCNSStimulationOptions.d.ts +3 -3
- package/dist/types/TCNSStimulationOptions.d.ts.map +1 -1
- package/dist/types/TCNSStimulationQueueItem.d.ts +2 -2
- package/dist/types/TCNSStimulationResponse.d.ts +3 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
**Graph-routed, type-safe orchestration for reactive apps — no global event bus.**
|
|
4
4
|
|
|
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/cancel)
|
|
6
|
+
|
|
5
7
|
## 🧠 What is CNStra?
|
|
6
8
|
|
|
7
9
|
**CNStra (Central Nervous System Orchestrator)** models your app as a **typed neuron graph**.
|
|
@@ -9,16 +11,18 @@ You explicitly start a run with `cns.stimulate(...)`; CNStra then performs a **d
|
|
|
9
11
|
|
|
10
12
|
> **Zero dependencies:** CNS has no third-party dependencies, making it suitable for any JavaScript/TypeScript environment - browsers, Node.js, serverless, edge functions, React Native, or embedded systems.
|
|
11
13
|
|
|
12
|
-
|
|
14
|
+
**No pub/sub:** there are no ambient listeners or global `emit`. Only the **signal you return** from a dendrite continues the traversal; returning `null`/`undefined` ends that branch. Hop limits guard against cycles.
|
|
15
|
+
|
|
16
|
+
We follow the **IERG approach — Inverted Explicit Reactive Graph**. You explicitly stimulate the graph; reactions are local and deterministic; no background listeners or buses exist.
|
|
13
17
|
|
|
14
18
|
## 💡 Why CNStra
|
|
15
19
|
|
|
16
|
-
|
|
20
|
+
IERG is our inverted control flow: you start the run, we walk the reaction graph explicitly. This is not Flux and not an event bus.
|
|
17
21
|
|
|
18
22
|
- **Deterministic routing**: signals are delivered along an explicit neuron graph, not broadcast to whoever “happens to listen”.
|
|
19
23
|
- **Readable, reliable flows**: each step is local and typed; branches are explicit, so debugging feels like reading a storyboard, not a log stream.
|
|
20
24
|
- **Backpressure & concurrency**: built‑in per‑stimulation and per‑neuron concurrency limits keep workloads controlled without custom plumbing.
|
|
21
|
-
- **Saga‑grade orchestration**:
|
|
25
|
+
- **Saga‑grade orchestration**: IERG already models long‑running, multi‑step reactions with retries/cancellation hooks (abort), so you rarely need to hand‑roll “sagas”.
|
|
22
26
|
- **Safer than ad‑hoc events**: no hidden global listeners, no accidental fan‑out; every continuation must be returned explicitly.
|
|
23
27
|
|
|
24
28
|
## 🏗️ Core Model
|
|
@@ -108,6 +112,12 @@ const myNeuron = neuron('my-neuron', {
|
|
|
108
112
|
|
|
109
113
|
Adds a dendrite (input receptor) to a neuron. Returns the neuron for chaining.
|
|
110
114
|
|
|
115
|
+
The `response` function can return:
|
|
116
|
+
- A single signal: `axon.output.createSignal(data)`
|
|
117
|
+
- An array of signals: `[axon.output1.createSignal(data1), axon.output2.createSignal(data2)]`
|
|
118
|
+
- A Promise of either
|
|
119
|
+
- `undefined`/`void` to end processing
|
|
120
|
+
|
|
111
121
|
```typescript
|
|
112
122
|
myNeuron
|
|
113
123
|
.dendrite({
|
|
@@ -117,6 +127,8 @@ myNeuron
|
|
|
117
127
|
if (ctx.abortSignal?.aborted) return; // graceful cancel
|
|
118
128
|
const prev = ctx.get();
|
|
119
129
|
ctx.set({ ...prev, handled: true });
|
|
130
|
+
|
|
131
|
+
// Return single signal or array of signals
|
|
120
132
|
return axon.output.createSignal(result);
|
|
121
133
|
}
|
|
122
134
|
});
|
|
@@ -187,20 +199,27 @@ const unsubscribe = cns.addResponseListener(r => {
|
|
|
187
199
|
|
|
188
200
|
#### `stimulate()` Method
|
|
189
201
|
```typescript
|
|
190
|
-
cns.stimulate(signal, options?)
|
|
202
|
+
cns.stimulate(signal | signal[], options?)
|
|
191
203
|
```
|
|
192
204
|
|
|
193
205
|
**Parameters:**
|
|
194
|
-
- `signal`: A signal created by `collateral.createSignal(payload)`
|
|
206
|
+
- `signal`: A signal or array of signals created by `collateral.createSignal(payload)`
|
|
195
207
|
- `options`: Optional stimulation configuration
|
|
196
208
|
|
|
197
209
|
**Returns:** `Promise<void>` that resolves when stimulation completes
|
|
198
210
|
|
|
199
211
|
**Example:**
|
|
200
212
|
```typescript
|
|
213
|
+
// Single signal
|
|
201
214
|
await cns.stimulate(
|
|
202
215
|
userCreated.createSignal({ id: '123', name: 'John' })
|
|
203
216
|
);
|
|
217
|
+
|
|
218
|
+
// Multiple signals at once
|
|
219
|
+
await cns.stimulate([
|
|
220
|
+
userCreated.createSignal({ id: '123', name: 'John' }),
|
|
221
|
+
userCreated.createSignal({ id: '456', name: 'Jane' })
|
|
222
|
+
]);
|
|
204
223
|
```
|
|
205
224
|
|
|
206
225
|
## ⚙️ Stimulation Options
|
|
@@ -265,12 +284,12 @@ await cns.stimulate(signal, {
|
|
|
265
284
|
});
|
|
266
285
|
```
|
|
267
286
|
|
|
268
|
-
### `
|
|
269
|
-
Filter which collateral
|
|
287
|
+
### `allowName?: (collateralName: string) => boolean`
|
|
288
|
+
Filter which collateral names can be processed.
|
|
270
289
|
|
|
271
290
|
```typescript
|
|
272
291
|
await cns.stimulate(signal, {
|
|
273
|
-
|
|
292
|
+
allowName: (name) => name.startsWith('user:') // Only process user-related signals
|
|
274
293
|
});
|
|
275
294
|
```
|
|
276
295
|
|
|
@@ -338,33 +357,6 @@ await cns.stimulate(input.createSignal({ value: 5 }));
|
|
|
338
357
|
// Flows: input(5) → middle(10) → output("Final: 10")
|
|
339
358
|
```
|
|
340
359
|
|
|
341
|
-
### Fan-out Processing
|
|
342
|
-
|
|
343
|
-
```typescript
|
|
344
|
-
const trigger = collateral<{ data: string }>('trigger');
|
|
345
|
-
const branch1 = collateral<{ result: string }>('branch1');
|
|
346
|
-
const branch2 = collateral<{ result: string }>('branch2');
|
|
347
|
-
|
|
348
|
-
const processor1 = neuron('proc1', { branch1 }).dendrite({
|
|
349
|
-
collateral: trigger,
|
|
350
|
-
response: (payload, axon) => {
|
|
351
|
-
return axon.branch1.createSignal({ result: `A-${payload.data}` });
|
|
352
|
-
}
|
|
353
|
-
});
|
|
354
|
-
|
|
355
|
-
const processor2 = neuron('proc2', { branch2 }).dendrite({
|
|
356
|
-
collateral: trigger,
|
|
357
|
-
response: (payload, axon) => {
|
|
358
|
-
return axon.branch2.createSignal({ result: `B-${payload.data}` });
|
|
359
|
-
}
|
|
360
|
-
});
|
|
361
|
-
|
|
362
|
-
const cns = new CNS([processor1, processor2]);
|
|
363
|
-
|
|
364
|
-
await cns.stimulate(trigger.createSignal({ data: 'test' }));
|
|
365
|
-
// Flows: trigger("test") → [branch1("A-test"), branch2("B-test")]
|
|
366
|
-
```
|
|
367
|
-
|
|
368
360
|
### Context-Aware Processing
|
|
369
361
|
|
|
370
362
|
```typescript
|
|
@@ -393,6 +385,88 @@ await cns.stimulate(input.createSignal({ increment: 5 })); // count: 5
|
|
|
393
385
|
await cns.stimulate(input.createSignal({ increment: 3 })); // count: 8 (separate context)
|
|
394
386
|
```
|
|
395
387
|
|
|
388
|
+
### Multiple Signals (Fan-out Pattern)
|
|
389
|
+
|
|
390
|
+
Neurons can return arrays of signals for parallel processing:
|
|
391
|
+
|
|
392
|
+
```typescript
|
|
393
|
+
const orderPlaced = collateral<{ orderId: string; items: string[] }>('order:placed');
|
|
394
|
+
const updateInventory = collateral<{ orderId: string; item: string }>('update:inventory');
|
|
395
|
+
const sendEmail = collateral<{ orderId: string }>('send:email');
|
|
396
|
+
const logAudit = collateral<{ orderId: string }>('log:audit');
|
|
397
|
+
|
|
398
|
+
const orderProcessor = neuron('order-processor', {
|
|
399
|
+
updateInventory,
|
|
400
|
+
sendEmail,
|
|
401
|
+
logAudit
|
|
402
|
+
}).dendrite({
|
|
403
|
+
collateral: orderPlaced,
|
|
404
|
+
response: (payload, axon) => {
|
|
405
|
+
// Return array of signals - each will be processed independently
|
|
406
|
+
return [
|
|
407
|
+
// Create signal for each item
|
|
408
|
+
...payload.items.map(item =>
|
|
409
|
+
axon.updateInventory.createSignal({ orderId: payload.orderId, item })
|
|
410
|
+
),
|
|
411
|
+
// Also send confirmation email
|
|
412
|
+
axon.sendEmail.createSignal({ orderId: payload.orderId }),
|
|
413
|
+
// And log the action
|
|
414
|
+
axon.logAudit.createSignal({ orderId: payload.orderId })
|
|
415
|
+
];
|
|
416
|
+
}
|
|
417
|
+
});
|
|
418
|
+
|
|
419
|
+
// Downstream neurons process each signal independently
|
|
420
|
+
const inventoryService = neuron('inventory-service', {}).dendrite({
|
|
421
|
+
collateral: updateInventory,
|
|
422
|
+
response: (payload) => {
|
|
423
|
+
console.log(`Updating inventory for ${payload.item}`);
|
|
424
|
+
// Each item gets its own execution
|
|
425
|
+
}
|
|
426
|
+
});
|
|
427
|
+
|
|
428
|
+
const cns = new CNS([orderProcessor, inventoryService /* ... */]);
|
|
429
|
+
|
|
430
|
+
// Single order triggers multiple parallel operations
|
|
431
|
+
await cns.stimulate(
|
|
432
|
+
orderPlaced.createSignal({ orderId: 'ORD-001', items: ['A', 'B', 'C'] })
|
|
433
|
+
);
|
|
434
|
+
// Flows: orderPlaced → [inventory(A), inventory(B), inventory(C), email, audit]
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
**Conditional Arrays:**
|
|
438
|
+
```typescript
|
|
439
|
+
const validator = neuron('validator', { success, error, audit }).dendrite({
|
|
440
|
+
collateral: input,
|
|
441
|
+
response: (payload, axon) => {
|
|
442
|
+
const signals = [];
|
|
443
|
+
|
|
444
|
+
// Conditionally add signals
|
|
445
|
+
if (isValid(payload.data)) {
|
|
446
|
+
signals.push(axon.success.createSignal({ validated: payload.data }));
|
|
447
|
+
} else {
|
|
448
|
+
signals.push(axon.error.createSignal({ error: 'Invalid' }));
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
// Always audit
|
|
452
|
+
signals.push(axon.audit.createSignal({ attempted: true }));
|
|
453
|
+
|
|
454
|
+
return signals; // Return empty array to emit nothing
|
|
455
|
+
}
|
|
456
|
+
});
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
**Starting with Multiple Signals:**
|
|
460
|
+
```typescript
|
|
461
|
+
// Process multiple orders in parallel
|
|
462
|
+
await cns.stimulate([
|
|
463
|
+
orderPlaced.createSignal({ orderId: 'ORD-001', items: ['X'] }),
|
|
464
|
+
orderPlaced.createSignal({ orderId: 'ORD-002', items: ['Y', 'Z'] })
|
|
465
|
+
]);
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
See [Multiple Signals Recipe](https://cnstra.org/docs/recipes/multiple-signals) for more patterns and best practices.
|
|
469
|
+
|
|
396
470
|
## 🧠 Memory & Performance
|
|
397
471
|
|
|
398
472
|
### Memory-Efficient Design
|
|
@@ -413,6 +487,8 @@ await cns.stimulate(input.createSignal({ increment: 3 })); // count: 8 (separate
|
|
|
413
487
|
- Use synchronous responses when possible
|
|
414
488
|
- Set reasonable `maxNeuronHops` limits
|
|
415
489
|
- Implement proper error handling in `onResponse`
|
|
490
|
+
- Use array returns for genuine fan-out patterns, not just convenience
|
|
491
|
+
- Consider concurrency limits when returning many signals
|
|
416
492
|
|
|
417
493
|
## 🎯 Common Use Cases
|
|
418
494
|
|
|
@@ -446,7 +522,7 @@ const cns = new CNS([validator, handler]);
|
|
|
446
522
|
|
|
447
523
|
### Event Sourcing
|
|
448
524
|
```typescript
|
|
449
|
-
const eventReceived = collateral<{
|
|
525
|
+
const eventReceived = collateral<{ name: string; data: any }>('event:received');
|
|
450
526
|
const eventStored = collateral<{ eventId: string }>('event:stored');
|
|
451
527
|
const stateUpdated = collateral<{ aggregateId: string }>('state:updated');
|
|
452
528
|
|
package/dist/CNS.d.ts
CHANGED
|
@@ -4,17 +4,22 @@ import { ICNS } from './interfaces/ICNS';
|
|
|
4
4
|
import { TCNSSubscriber } from './types/TCNSSubscriber';
|
|
5
5
|
import { TCNSOptions } from './types/TCNSOptions';
|
|
6
6
|
import { TCNSStimulationOptions } from './types/TCNSStimulationOptions';
|
|
7
|
+
import { CNSCollateral } from './CNSCollateral';
|
|
7
8
|
import { TCNSSignal } from './types/TCNSSignal';
|
|
8
9
|
import { CNSInstanceNeuronQueue } from './CNSInstanceNeuronQueue';
|
|
9
|
-
|
|
10
|
+
import { TCNSStimulationResponse } from './types/TCNSStimulationResponse';
|
|
11
|
+
export declare class CNS<TCollateralName extends string, TNeuronName extends string, TNeuron extends TCNSNeuron<any, TNeuronName, any, any, any, any, any>, TDendrite extends TCNSDendrite<any, any, any, any, any, any>> implements ICNS<TNeuron, TDendrite> {
|
|
10
12
|
protected readonly neurons: TNeuron[];
|
|
11
13
|
readonly options?: TCNSOptions | undefined;
|
|
12
14
|
/**
|
|
13
|
-
* Fast lookup:
|
|
15
|
+
* Fast lookup: collateralName -> list of (neuron, dendrite) subscribers.
|
|
14
16
|
* Built once at construction time.
|
|
15
17
|
*/
|
|
16
18
|
private subIndex;
|
|
17
|
-
private
|
|
19
|
+
private neuronIndex;
|
|
20
|
+
private dendriteIndex;
|
|
21
|
+
private collateralIndex;
|
|
22
|
+
private parentNeuronByCollateralName;
|
|
18
23
|
/**
|
|
19
24
|
* Strongly Connected Components of the neuron graph.
|
|
20
25
|
* Each component is a set of neuron IDs that can reach each other.
|
|
@@ -55,8 +60,8 @@ export declare class CNS<TCollateralType extends string, TNeuronName extends str
|
|
|
55
60
|
* Throws aggregated error if violations are found.
|
|
56
61
|
*/
|
|
57
62
|
private validateUniqueIdentifiers;
|
|
58
|
-
addResponseListener(listener: (response:
|
|
59
|
-
wrapOnResponse<T>(local?: (response: T) => void): (response: T) => void
|
|
63
|
+
addResponseListener(listener: <TInputPayload, TOutputPayload>(response: TCNSStimulationResponse<TCollateralName, TInputPayload, TOutputPayload>) => void | Promise<void>): () => void;
|
|
64
|
+
wrapOnResponse<T>(local?: (response: T) => void | Promise<void>): (response: T) => void | Promise<void>;
|
|
60
65
|
protected runWithNeuronConcurrency(neuron: TNeuron, fn: () => (() => void) | Promise<() => void>): Promise<void>;
|
|
61
66
|
private buildIndexes;
|
|
62
67
|
/**
|
|
@@ -95,8 +100,13 @@ export declare class CNS<TCollateralType extends string, TNeuronName extends str
|
|
|
95
100
|
* This is the core logic for safe context cleanup.
|
|
96
101
|
*/
|
|
97
102
|
canNeuronBeGuaranteedDone(neuronName: string, activeSccCounts: Map<number, number>): boolean;
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
103
|
+
getParentNeuronByCollateralName(collateralName: TCollateralName): TNeuron | undefined;
|
|
104
|
+
getDendrites(): TDendrite[];
|
|
105
|
+
getCollaterals(): CNSCollateral<TCollateralName, unknown>[];
|
|
106
|
+
getNeurons(): TNeuron[];
|
|
107
|
+
getCollateralByName<TName extends string = string>(collateralName: TName): CNSCollateral<TName, unknown> | undefined;
|
|
108
|
+
getNeuronByName<TName extends string = string>(neuronName: TName): TNeuron | undefined;
|
|
109
|
+
getSubscribers(collateralName: TCollateralName): TCNSSubscriber<TNeuron, TDendrite>[];
|
|
110
|
+
stimulate<TInputPayload extends TOutputPayload, TOutputPayload>(signalOrSignals: TCNSSignal<TCollateralName, TInputPayload> | TCNSSignal<TCollateralName, TInputPayload>[], options?: TCNSStimulationOptions<TCollateralName, TInputPayload, TOutputPayload>): Promise<void>;
|
|
101
111
|
}
|
|
102
112
|
//# sourceMappingURL=CNS.d.ts.map
|
package/dist/CNS.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CNS.d.ts","sourceRoot":"","sources":["../src/CNS.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"CNS.d.ts","sourceRoot":"","sources":["../src/CNS.ts"],"names":[],"mappings":"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"}
|
package/dist/CNSCollateral.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { TCNSSignal } from './types/TCNSSignal';
|
|
2
2
|
import { ICNSCollateral } from './interfaces/ICNSCollateral';
|
|
3
|
-
export declare class CNSCollateral<
|
|
4
|
-
readonly
|
|
5
|
-
constructor(
|
|
6
|
-
createSignal(): TCNSSignal<
|
|
7
|
-
createSignal(payload: TPayload): TCNSSignal<
|
|
3
|
+
export declare class CNSCollateral<TName extends string, TPayload> implements ICNSCollateral<TName, TPayload> {
|
|
4
|
+
readonly name: TName;
|
|
5
|
+
constructor(name: TName);
|
|
6
|
+
createSignal(): TCNSSignal<TName, TPayload>;
|
|
7
|
+
createSignal(payload: TPayload): TCNSSignal<TName, TPayload>;
|
|
8
8
|
}
|
|
9
9
|
//# sourceMappingURL=CNSCollateral.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TCNSSerializedQueueItem } from './types/TCNSSerializedSignal';
|
|
2
2
|
import { TCNSNeuron } from './types/TCNSNeuron';
|
|
3
3
|
import { TCNSDendrite } from './types/TCNSDendrite';
|
|
4
|
-
export declare class CNSFunctionalQueue<
|
|
4
|
+
export declare class CNSFunctionalQueue<TCollateralName extends string, TNeuronName extends string, TNeuron extends TCNSNeuron<any, TNeuronName, TCollateralName, any, any, any, any>, TDendrite extends TCNSDendrite<any, any, any, any, any, any>> {
|
|
5
5
|
private readonly processor;
|
|
6
6
|
protected readonly concurrency?: number | undefined;
|
|
7
7
|
protected readonly abortSignal?: AbortSignal | undefined;
|
|
@@ -13,13 +13,13 @@ export declare class CNSFunctionalQueue<TCollateralType extends string, TNeuronN
|
|
|
13
13
|
protected activeOperations: number;
|
|
14
14
|
private pumping;
|
|
15
15
|
private needsPump;
|
|
16
|
-
constructor(processor: (item:
|
|
16
|
+
constructor(processor: (item: TCNSSerializedQueueItem<TCollateralName, TNeuronName>) => (() => void) | Promise<() => void>, concurrency?: number | undefined, abortSignal?: AbortSignal | undefined, initialCapacity?: number);
|
|
17
17
|
protected get canStartOperation(): boolean;
|
|
18
18
|
private resize;
|
|
19
19
|
private dequeue;
|
|
20
20
|
private enqueueItem;
|
|
21
21
|
protected pump(): void;
|
|
22
|
-
enqueue(x:
|
|
22
|
+
enqueue(x: TCNSSerializedQueueItem<TCollateralName, TNeuronName>): void;
|
|
23
23
|
get length(): number;
|
|
24
24
|
getActiveOperationsCount(): number;
|
|
25
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CNSFunctionalQueue.d.ts","sourceRoot":"","sources":["../src/CNSFunctionalQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"CNSFunctionalQueue.d.ts","sourceRoot":"","sources":["../src/CNSFunctionalQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,qBAAa,kBAAkB,CAC3B,eAAe,SAAS,MAAM,EAC9B,WAAW,SAAS,MAAM,EAC1B,OAAO,SAAS,UAAU,CACtB,GAAG,EACH,WAAW,EACX,eAAe,EACf,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,CACN,EACD,SAAS,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAcxD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAG1B,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM;IACvC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW;IAhBhD,OAAO,CAAC,KAAK,CAA+D;IAC5E,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,QAAQ,CAAM;IACtB,SAAS,CAAC,gBAAgB,SAAK;IAG/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;gBAGL,SAAS,EAAE,CACxB,IAAI,EAAE,uBAAuB,CAAC,eAAe,EAAE,WAAW,CAAC,KAC1D,CAAC,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,EACpB,WAAW,CAAC,EAAE,MAAM,YAAA,EACpB,WAAW,CAAC,EAAE,WAAW,YAAA,EAC5C,eAAe,CAAC,EAAE,MAAM;IAQ5B,SAAS,KAAK,iBAAiB,IAAI,OAAO,CAGzC;IAED,OAAO,CAAC,MAAM;IAgBd,OAAO,CAAC,OAAO;IAaf,OAAO,CAAC,WAAW;IAYnB,SAAS,CAAC,IAAI;IAwDd,OAAO,CAAC,CAAC,EAAE,uBAAuB,CAAC,eAAe,EAAE,WAAW,CAAC;IAOhE,IAAI,MAAM,WAET;IAED,wBAAwB;CAG3B"}
|
package/dist/CNSStimulation.d.ts
CHANGED
|
@@ -5,20 +5,27 @@ import { TCNSDendrite } from './types/TCNSDendrite';
|
|
|
5
5
|
import { TCNSSubscriber } from './types/TCNSSubscriber';
|
|
6
6
|
import { CNSInstanceNeuronQueue } from './CNSInstanceNeuronQueue';
|
|
7
7
|
import { TCNSSignal } from './types/TCNSSignal';
|
|
8
|
-
|
|
8
|
+
import { TCNSSerializedQueueItem } from './types/TCNSSerializedSignal';
|
|
9
|
+
export declare class CNSStimulation<TCollateralName extends string, TNeuronName extends string, TNeuron extends TCNSNeuron<any, TNeuronName, TCollateralName, any, any, any, any>, TDendrite extends TCNSDendrite<any, any, any, any, any, any>, TInputPayload, TOutputPayload> {
|
|
9
10
|
private readonly cns;
|
|
10
|
-
readonly options?: TCNSStimulationOptions<
|
|
11
|
+
readonly options?: TCNSStimulationOptions<TCollateralName, TInputPayload, TOutputPayload> | undefined;
|
|
11
12
|
private readonly ctx;
|
|
12
13
|
private readonly queue;
|
|
13
14
|
private readonly nueronVisitMap?;
|
|
14
15
|
private readonly instanceNeuronQueue;
|
|
15
16
|
private scheduledCount;
|
|
17
|
+
private completed;
|
|
18
|
+
private resolveCompleted;
|
|
19
|
+
private rejectCompleted;
|
|
20
|
+
private isCompleted;
|
|
16
21
|
/**
|
|
17
22
|
* Track active SCCs: SCC index -> count of active neurons in that SCC
|
|
18
23
|
*/
|
|
19
24
|
private readonly activeSccCounts;
|
|
20
25
|
readonly id: string;
|
|
21
|
-
constructor(cns: ICNS<TNeuron, TDendrite>, instanceNeuronQueue: CNSInstanceNeuronQueue<TNeuron>, options?: TCNSStimulationOptions<
|
|
26
|
+
constructor(cns: ICNS<TNeuron, TDendrite>, instanceNeuronQueue: CNSInstanceNeuronQueue<TNeuron>, options?: TCNSStimulationOptions<TCollateralName, TInputPayload, TOutputPayload> | undefined);
|
|
27
|
+
private tryResolveCompleted;
|
|
28
|
+
waitUntilComplete(): Promise<void>;
|
|
22
29
|
protected get concurrencyEnabled(): boolean;
|
|
23
30
|
protected get autoCleanupContextsEnabled(): boolean;
|
|
24
31
|
/**
|
|
@@ -42,13 +49,10 @@ export declare class CNSStimulation<TCollateralType extends string, TNeuronName
|
|
|
42
49
|
*/
|
|
43
50
|
protected canNeuronBeGuaranteedDone(neuronId: TNeuronName): boolean;
|
|
44
51
|
protected cleanupCtxIfNeeded(neuron: TNeuron): void;
|
|
45
|
-
protected createSubscriberQueueItem(subscriber: TCNSSubscriber<TNeuron, TDendrite>, inputSignal?: TCNSSignal<
|
|
46
|
-
neuronId: TNeuronName;
|
|
47
|
-
subscriber: TCNSSubscriber<TNeuron, TDendrite>;
|
|
48
|
-
inputSignal: TCNSSignal<TCollateralType, any> | undefined;
|
|
49
|
-
};
|
|
52
|
+
protected createSubscriberQueueItem(subscriber: TCNSSubscriber<TNeuron, TDendrite>, inputSignal?: TCNSSignal<TCollateralName, any>): TCNSSerializedQueueItem<TCollateralName, TNeuronName>;
|
|
50
53
|
private processQueueItem;
|
|
51
|
-
protected
|
|
52
|
-
|
|
54
|
+
protected processResponseOrResponses(inputSignal?: TCNSSignal<TCollateralName, TInputPayload>, outputSignalOrSignals?: TCNSSignal<TCollateralName, TOutputPayload> | TCNSSignal<TCollateralName, TOutputPayload>[], error?: any): void;
|
|
55
|
+
protected processResponse(inputSignal?: TCNSSignal<TCollateralName, TInputPayload>, outputSignal?: TCNSSignal<TCollateralName, TOutputPayload>, error?: any): void;
|
|
56
|
+
responseToSignal(signalOrSignals: TCNSSignal<TCollateralName, TOutputPayload> | TCNSSignal<TCollateralName, TOutputPayload>[]): void;
|
|
53
57
|
}
|
|
54
58
|
//# sourceMappingURL=CNSStimulation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CNSStimulation.d.ts","sourceRoot":"","sources":["../src/CNSStimulation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"CNSStimulation.d.ts","sourceRoot":"","sources":["../src/CNSStimulation.ts"],"names":[],"mappings":"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"}
|
package/dist/factory/index.d.ts
CHANGED
|
@@ -1,21 +1,25 @@
|
|
|
1
1
|
import { CNSCollateral } from '../CNSCollateral';
|
|
2
2
|
import { TCNSAxon } from '../types/TCNSAxon';
|
|
3
3
|
import { TCNSDendrite } from '../types/TCNSDendrite';
|
|
4
|
-
export declare const collateral: <TPayload = undefined,
|
|
5
|
-
type
|
|
4
|
+
export declare const collateral: <TPayload = undefined, TName extends string = string>(name: TName) => CNSCollateral<TName, TPayload>;
|
|
5
|
+
type PayloadOf<TAxon, K extends keyof TAxon> = TAxon[K] extends CNSCollateral<any, infer P> ? P : never;
|
|
6
|
+
type NameOf<TAxon, K extends keyof TAxon> = TAxon[K] extends CNSCollateral<infer N, any> ? N : never;
|
|
7
|
+
type InterNeuronAPI<TContextValue, TNameType extends string, TReceiverCollateralName extends string, TReceiverAxonCollateralPayload, TAxonType extends TCNSAxon<TReceiverCollateralName, TReceiverAxonCollateralPayload>> = {
|
|
6
8
|
name: TNameType;
|
|
7
9
|
axon: TAxonType;
|
|
8
10
|
concurrency?: number;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
maxDuration?: number;
|
|
12
|
+
dendrites: TCNSDendrite<TContextValue, string, unknown, TReceiverCollateralName, TReceiverAxonCollateralPayload, TAxonType>[];
|
|
13
|
+
setConcurrency: (n: number | undefined) => InterNeuronAPI<TContextValue, TNameType, TReceiverCollateralName, TReceiverAxonCollateralPayload, TAxonType>;
|
|
14
|
+
setMaxDuration: (ms: number | undefined) => InterNeuronAPI<TContextValue, TNameType, TReceiverCollateralName, TReceiverAxonCollateralPayload, TAxonType>;
|
|
15
|
+
bind: <TFollowAxon extends Record<string, CNSCollateral<any, any>>>(axon: TFollowAxon, dendrites: {
|
|
16
|
+
[K in keyof TFollowAxon]: TCNSDendrite<TContextValue, NameOf<TFollowAxon, K> & string, PayloadOf<TFollowAxon, K>, TReceiverCollateralName, TReceiverAxonCollateralPayload, TAxonType> | TCNSDendrite<TContextValue, NameOf<TFollowAxon, K> & string, PayloadOf<TFollowAxon, K>, TReceiverCollateralName, TReceiverAxonCollateralPayload, TAxonType>['response'];
|
|
17
|
+
}) => InterNeuronAPI<TContextValue, TNameType, TReceiverCollateralName, TReceiverAxonCollateralPayload, TAxonType>;
|
|
18
|
+
dendrite: <TSenderExactCollateralName extends string, TSenderExactAxonCollateralPayload>(s: TCNSDendrite<TContextValue, TSenderExactCollateralName, TSenderExactAxonCollateralPayload, TReceiverCollateralName, TReceiverAxonCollateralPayload, TAxonType>) => InterNeuronAPI<TContextValue, TNameType, TReceiverCollateralName, TReceiverAxonCollateralPayload, TAxonType>;
|
|
15
19
|
};
|
|
16
|
-
export declare const neuron: <TContextValue, TNameType extends string,
|
|
20
|
+
export declare const neuron: <TContextValue, TNameType extends string, TProvidedAxon extends Record<string, CNSCollateral<any, any>>, TReceiverCollateralName extends keyof TProvidedAxon & string = keyof TProvidedAxon & string, TReceiverAxonCollateralPayload = TProvidedAxon[keyof TProvidedAxon] extends CNSCollateral<any, infer P> ? P : never>(name: TNameType, axon: TProvidedAxon) => InterNeuronAPI<TContextValue, TNameType, TReceiverCollateralName, TReceiverAxonCollateralPayload, TCNSAxon<TReceiverCollateralName, TReceiverAxonCollateralPayload>>;
|
|
17
21
|
export declare const withCtx: <TContextValue>() => {
|
|
18
|
-
neuron: <TNameType extends string,
|
|
22
|
+
neuron: <TNameType extends string, TProvidedAxon extends Record<string, CNSCollateral<any, any>>>(name: TNameType, axon: TProvidedAxon) => InterNeuronAPI<TContextValue, TNameType, keyof TProvidedAxon & string, TProvidedAxon[keyof TProvidedAxon] extends CNSCollateral<any, infer P> ? P : never, TCNSAxon<keyof TProvidedAxon & string, TProvidedAxon[keyof TProvidedAxon] extends CNSCollateral<any, infer P> ? P : never>>;
|
|
19
23
|
};
|
|
20
24
|
export {};
|
|
21
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/factory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,eAAO,MAAM,UAAU,GAAI,QAAQ,GAAG,SAAS,EAAE,KAAK,SAAS,MAAM,GAAG,MAAM,EAC1E,MAAM,KAAK,mCAC8B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/factory/index.ts"],"names":[],"mappings":"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"}
|