@cnstra/core 2.2.1 → 2.3.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/CNSNetwork.d.ts +8 -15
- package/dist/CNSNetwork.d.ts.map +1 -1
- package/dist/CNSStimulation.d.ts +1 -1
- package/dist/CNSStimulation.d.ts.map +1 -1
- package/dist/factory/index.d.ts.map +1 -1
- package/dist/index.cjs +74 -64
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +74 -64
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/CNSTaskQueue.d.ts +0 -12
- package/dist/CNSTaskQueue.d.ts.map +0 -1
package/dist/CNSNetwork.d.ts
CHANGED
|
@@ -7,8 +7,13 @@ export declare class CNSNetwork<TNeuron extends TCNSNeuron<any, any>, TDendrite
|
|
|
7
7
|
/**
|
|
8
8
|
* Strongly Connected Components of the neuron graph.
|
|
9
9
|
* Each component is a set of neuron objects that can reach each other.
|
|
10
|
+
*
|
|
11
|
+
* Computed lazily on first access: the SCC machinery is only needed for
|
|
12
|
+
* `autoCleanupContexts` (off by default), so most networks never pay for it.
|
|
10
13
|
*/
|
|
11
|
-
|
|
14
|
+
private _stronglyConnectedComponents;
|
|
15
|
+
private sccBuilt;
|
|
16
|
+
get stronglyConnectedComponents(): Set<TNeuron>[];
|
|
12
17
|
/**
|
|
13
18
|
* Quick lookup: neuron -> SCC index for fast reachability checks.
|
|
14
19
|
*/
|
|
@@ -26,18 +31,10 @@ export declare class CNSNetwork<TNeuron extends TCNSNeuron<any, any>, TDendrite
|
|
|
26
31
|
* Built once at construction time.
|
|
27
32
|
*/
|
|
28
33
|
private subIndex;
|
|
29
|
-
private dendriteIndex;
|
|
30
|
-
private collateralIndex;
|
|
31
34
|
private parentNeuronByCollateral;
|
|
32
35
|
constructor(neurons: TNeuron[]);
|
|
33
|
-
/**
|
|
34
|
-
|
|
35
|
-
* - (legacy) collateral instances used to be single-owner; in object-identity routing
|
|
36
|
-
* a collateral can be emitted by multiple neurons (fan-in), so we no longer
|
|
37
|
-
* enforce single ownership here.
|
|
38
|
-
* Throws aggregated error if violations are found.
|
|
39
|
-
*/
|
|
40
|
-
private validateUniqueIdentifiers;
|
|
36
|
+
/** Build the SCC analysis the first time anything needs it. */
|
|
37
|
+
private ensureSCC;
|
|
41
38
|
/**
|
|
42
39
|
* Build the neuron graph where neurons are connected if one can stimulate the other.
|
|
43
40
|
*/
|
|
@@ -55,10 +52,6 @@ export declare class CNSNetwork<TNeuron extends TCNSNeuron<any, any>, TDendrite
|
|
|
55
52
|
* Uses topological sort for efficient computation
|
|
56
53
|
*/
|
|
57
54
|
private buildSCCAncestors;
|
|
58
|
-
/**
|
|
59
|
-
* Get outgoing edges for a given SCC index
|
|
60
|
-
*/
|
|
61
|
-
private getOutgoingEdges;
|
|
62
55
|
/**
|
|
63
56
|
* Check if a neuron can be reached again (including self-calling).
|
|
64
57
|
* Returns true if the neuron is in a strongly connected component with more than one member,
|
package/dist/CNSNetwork.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CNSNetwork.d.ts","sourceRoot":"","sources":["../src/CNSNetwork.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,qBAAa,UAAU,CACnB,OAAO,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EACpC,SAAS,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"CNSNetwork.d.ts","sourceRoot":"","sources":["../src/CNSNetwork.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,qBAAa,UAAU,CACnB,OAAO,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EACpC,SAAS,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IA2CjC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAzCpC;;;;;;OAMG;IACH,OAAO,CAAC,4BAA4B,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAS;IAEzB,IAAW,2BAA2B,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAGvD;IAED;;OAEG;IACH,OAAO,CAAC,WAAW,CAA8B;IAEjD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAuC;IAErD;;OAEG;IACH,OAAO,CAAC,YAAY,CAAuC;IAE3D;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAGZ;IAEJ,OAAO,CAAC,wBAAwB,CAA8C;gBAEjD,OAAO,EAAE,OAAO,EAAE;IAM/C,+DAA+D;IAC/D,OAAO,CAAC,SAAS;IAMjB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiCxB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAqEhB;;OAEG;IACH,OAAO,CAAC,WAAW;IA6BnB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAmDzB;;;;OAIG;IACI,iBAAiB,CAAC,MAAM,EAAE,OAAO;IASxC;;OAEG;IACI,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;IAK/D;;;OAGG;IACI,yBAAyB,CAC5B,MAAM,EAAE,OAAO,EACf,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,OAAO;IA6BV,OAAO,CAAC,YAAY;IAsBb,2BAA2B,CAAC,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC;IAM9D,YAAY;IAaZ,cAAc;IAUd,cAAc,CACjB,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,GACnC,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE;CAG1C"}
|
package/dist/CNSStimulation.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export declare class CNSStimulation<TNeuron extends TCNSNeuron<any, any>, TDendr
|
|
|
23
23
|
private activeTasks?;
|
|
24
24
|
private pumping;
|
|
25
25
|
private needsPump;
|
|
26
|
-
private readonly
|
|
26
|
+
private readonly neuronVisitMap?;
|
|
27
27
|
private readonly instanceNeuronQueue;
|
|
28
28
|
private scheduledCount;
|
|
29
29
|
private pendingTasks?;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CNSStimulation.d.ts","sourceRoot":"","sources":["../src/CNSStimulation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACvF,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;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"CNSStimulation.d.ts","sourceRoot":"","sources":["../src/CNSStimulation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/factory/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/factory/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -25,6 +25,7 @@ var CNSStimulationContextStore = class {
|
|
|
25
25
|
};
|
|
26
26
|
|
|
27
27
|
// src/CNSStimulation.ts
|
|
28
|
+
var TASK_DENDRITE = /* @__PURE__ */ Symbol("cnstra.taskDendrite");
|
|
28
29
|
var CNSDendriteContext = class {
|
|
29
30
|
constructor(stimulation, neuron2, abortSignal, cns) {
|
|
30
31
|
this.stimulation = stimulation;
|
|
@@ -75,7 +76,7 @@ var CNSStimulation = class {
|
|
|
75
76
|
this.instanceNeuronQueue = instanceNeuronQueue;
|
|
76
77
|
this.onResponse = onResponse;
|
|
77
78
|
if (this.options?.maxNeuronHops) {
|
|
78
|
-
this.
|
|
79
|
+
this.neuronVisitMap = /* @__PURE__ */ new Map();
|
|
79
80
|
}
|
|
80
81
|
if (this.autoCleanupContextsEnabled) {
|
|
81
82
|
this.activeSccCounts = /* @__PURE__ */ new Map();
|
|
@@ -340,14 +341,14 @@ var CNSStimulation = class {
|
|
|
340
341
|
}
|
|
341
342
|
createSubscriberQueueItem(subscriber, inputSignal) {
|
|
342
343
|
if (this.options?.maxNeuronHops) {
|
|
343
|
-
if ((this.
|
|
344
|
+
if ((this.neuronVisitMap?.get(subscriber.neuron) ?? 0) >= this.options?.maxNeuronHops) {
|
|
344
345
|
throw new Error(
|
|
345
346
|
`Max neuron hops reached when trying to enqueue subscriber`
|
|
346
347
|
);
|
|
347
348
|
} else {
|
|
348
|
-
this.
|
|
349
|
+
this.neuronVisitMap?.set(
|
|
349
350
|
subscriber.neuron,
|
|
350
|
-
(this.
|
|
351
|
+
(this.neuronVisitMap?.get(subscriber.neuron) ?? 0) + 1
|
|
351
352
|
);
|
|
352
353
|
}
|
|
353
354
|
}
|
|
@@ -356,17 +357,20 @@ var CNSStimulation = class {
|
|
|
356
357
|
dendriteCollateral: subscriber.dendrite.collateral,
|
|
357
358
|
input: inputSignal
|
|
358
359
|
};
|
|
360
|
+
neuronActivationTask[TASK_DENDRITE] = subscriber;
|
|
359
361
|
return neuronActivationTask;
|
|
360
362
|
}
|
|
361
363
|
executeActivationTask(neuronActivationTask) {
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
364
|
+
let subscriber = neuronActivationTask[TASK_DENDRITE];
|
|
365
|
+
if (!subscriber) {
|
|
366
|
+
const subscribers = this.cns.network.getSubscribers(
|
|
367
|
+
neuronActivationTask.dendriteCollateral
|
|
368
|
+
);
|
|
369
|
+
for (let i = 0; i < subscribers.length; i++) {
|
|
370
|
+
if (subscribers[i].neuron === neuronActivationTask.neuron) {
|
|
371
|
+
subscriber = subscribers[i];
|
|
372
|
+
break;
|
|
373
|
+
}
|
|
370
374
|
}
|
|
371
375
|
}
|
|
372
376
|
if (!subscriber) {
|
|
@@ -556,7 +560,7 @@ var CNSStimulation = class {
|
|
|
556
560
|
inputSignal,
|
|
557
561
|
outputSignal,
|
|
558
562
|
this.qSize + this.scheduledCount,
|
|
559
|
-
this.options?.maxNeuronHops && emitter ? this.
|
|
563
|
+
this.options?.maxNeuronHops && emitter ? this.neuronVisitMap?.get(emitter) ?? 0 : void 0,
|
|
560
564
|
error
|
|
561
565
|
)
|
|
562
566
|
);
|
|
@@ -671,8 +675,12 @@ var CNSNetwork = class {
|
|
|
671
675
|
/**
|
|
672
676
|
* Strongly Connected Components of the neuron graph.
|
|
673
677
|
* Each component is a set of neuron objects that can reach each other.
|
|
678
|
+
*
|
|
679
|
+
* Computed lazily on first access: the SCC machinery is only needed for
|
|
680
|
+
* `autoCleanupContexts` (off by default), so most networks never pay for it.
|
|
674
681
|
*/
|
|
675
|
-
this.
|
|
682
|
+
this._stronglyConnectedComponents = [];
|
|
683
|
+
this.sccBuilt = false;
|
|
676
684
|
/**
|
|
677
685
|
* Quick lookup: neuron -> SCC index for fast reachability checks.
|
|
678
686
|
*/
|
|
@@ -690,21 +698,18 @@ var CNSNetwork = class {
|
|
|
690
698
|
* Built once at construction time.
|
|
691
699
|
*/
|
|
692
700
|
this.subIndex = /* @__PURE__ */ new Map();
|
|
693
|
-
this.dendriteIndex = /* @__PURE__ */ new Map();
|
|
694
|
-
this.collateralIndex = /* @__PURE__ */ new Set();
|
|
695
701
|
this.parentNeuronByCollateral = /* @__PURE__ */ new Map();
|
|
696
|
-
this.validateUniqueIdentifiers();
|
|
697
702
|
this.buildIndexes();
|
|
698
|
-
this.buildSCC();
|
|
699
703
|
}
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
704
|
+
get stronglyConnectedComponents() {
|
|
705
|
+
this.ensureSCC();
|
|
706
|
+
return this._stronglyConnectedComponents;
|
|
707
|
+
}
|
|
708
|
+
/** Build the SCC analysis the first time anything needs it. */
|
|
709
|
+
ensureSCC() {
|
|
710
|
+
if (this.sccBuilt) return;
|
|
711
|
+
this.sccBuilt = true;
|
|
712
|
+
this.buildSCC();
|
|
708
713
|
}
|
|
709
714
|
/**
|
|
710
715
|
* Build the neuron graph where neurons are connected if one can stimulate the other.
|
|
@@ -779,7 +784,7 @@ var CNSNetwork = class {
|
|
|
779
784
|
strongConnect(neuron2);
|
|
780
785
|
}
|
|
781
786
|
}
|
|
782
|
-
this.
|
|
787
|
+
this._stronglyConnectedComponents = components;
|
|
783
788
|
for (let i = 0; i < components.length; i++) {
|
|
784
789
|
for (const neuronId of Array.from(components[i])) {
|
|
785
790
|
this.neuronToSCC.set(neuronId, i);
|
|
@@ -793,11 +798,11 @@ var CNSNetwork = class {
|
|
|
793
798
|
*/
|
|
794
799
|
buildSCCDAG(neuronGraph) {
|
|
795
800
|
this.sccDag.clear();
|
|
796
|
-
for (let i = 0; i < this.
|
|
801
|
+
for (let i = 0; i < this._stronglyConnectedComponents.length; i++) {
|
|
797
802
|
this.sccDag.set(i, /* @__PURE__ */ new Set());
|
|
798
803
|
}
|
|
799
|
-
for (let i = 0; i < this.
|
|
800
|
-
const scc = this.
|
|
804
|
+
for (let i = 0; i < this._stronglyConnectedComponents.length; i++) {
|
|
805
|
+
const scc = this._stronglyConnectedComponents[i];
|
|
801
806
|
for (const neuron2 of Array.from(scc)) {
|
|
802
807
|
const neighbors = neuronGraph.get(neuron2) || /* @__PURE__ */ new Set();
|
|
803
808
|
for (const neighbor of Array.from(neighbors)) {
|
|
@@ -815,25 +820,27 @@ var CNSNetwork = class {
|
|
|
815
820
|
*/
|
|
816
821
|
buildSCCAncestors() {
|
|
817
822
|
this.sccAncestors.clear();
|
|
818
|
-
for (let i = 0; i < this.
|
|
823
|
+
for (let i = 0; i < this._stronglyConnectedComponents.length; i++) {
|
|
819
824
|
this.sccAncestors.set(i, /* @__PURE__ */ new Set());
|
|
820
825
|
}
|
|
826
|
+
const n = this._stronglyConnectedComponents.length;
|
|
827
|
+
const forward = Array.from({ length: n }, () => []);
|
|
821
828
|
const inDegree = /* @__PURE__ */ new Map();
|
|
822
829
|
const queue = [];
|
|
823
|
-
for (let
|
|
824
|
-
const
|
|
825
|
-
inDegree.set(
|
|
826
|
-
if (
|
|
827
|
-
|
|
830
|
+
for (let target = 0; target < n; target++) {
|
|
831
|
+
const sources = this.sccDag.get(target) || /* @__PURE__ */ new Set();
|
|
832
|
+
inDegree.set(target, sources.size);
|
|
833
|
+
if (sources.size === 0) queue.push(target);
|
|
834
|
+
for (const source of Array.from(sources)) {
|
|
835
|
+
forward[source].push(target);
|
|
828
836
|
}
|
|
829
837
|
}
|
|
830
838
|
while (queue.length > 0) {
|
|
831
839
|
const current = queue.shift();
|
|
832
|
-
const
|
|
833
|
-
for (const neighbor of
|
|
840
|
+
const currentAncestors = this.sccAncestors.get(current);
|
|
841
|
+
for (const neighbor of forward[current]) {
|
|
834
842
|
const neighborAncestors = this.sccAncestors.get(neighbor);
|
|
835
843
|
neighborAncestors.add(current);
|
|
836
|
-
const currentAncestors = this.sccAncestors.get(current);
|
|
837
844
|
for (const ancestor of Array.from(currentAncestors)) {
|
|
838
845
|
neighborAncestors.add(ancestor);
|
|
839
846
|
}
|
|
@@ -845,32 +852,22 @@ var CNSNetwork = class {
|
|
|
845
852
|
}
|
|
846
853
|
}
|
|
847
854
|
}
|
|
848
|
-
/**
|
|
849
|
-
* Get outgoing edges for a given SCC index
|
|
850
|
-
*/
|
|
851
|
-
getOutgoingEdges(sccIndex) {
|
|
852
|
-
const outgoing = /* @__PURE__ */ new Set();
|
|
853
|
-
for (const [targetScc, incomingEdges] of Array.from(this.sccDag)) {
|
|
854
|
-
if (incomingEdges.has(sccIndex)) {
|
|
855
|
-
outgoing.add(targetScc);
|
|
856
|
-
}
|
|
857
|
-
}
|
|
858
|
-
return outgoing;
|
|
859
|
-
}
|
|
860
855
|
/**
|
|
861
856
|
* Check if a neuron can be reached again (including self-calling).
|
|
862
857
|
* Returns true if the neuron is in a strongly connected component with more than one member,
|
|
863
858
|
* or if it's in a single-member SCC that can reach itself.
|
|
864
859
|
*/
|
|
865
860
|
getSCCSetByNeuron(neuron2) {
|
|
861
|
+
this.ensureSCC();
|
|
866
862
|
const sccIndex = this.neuronToSCC.get(neuron2);
|
|
867
863
|
if (sccIndex === void 0) return;
|
|
868
|
-
return this.
|
|
864
|
+
return this._stronglyConnectedComponents[sccIndex];
|
|
869
865
|
}
|
|
870
866
|
/**
|
|
871
867
|
* Get the SCC index for a given neuron
|
|
872
868
|
*/
|
|
873
869
|
getSccIndexByNeuron(neuron2) {
|
|
870
|
+
this.ensureSCC();
|
|
874
871
|
return this.neuronToSCC.get(neuron2);
|
|
875
872
|
}
|
|
876
873
|
/**
|
|
@@ -878,6 +875,7 @@ var CNSNetwork = class {
|
|
|
878
875
|
* This is the core logic for safe context cleanup.
|
|
879
876
|
*/
|
|
880
877
|
canNeuronBeGuaranteedDone(neuron2, activeSccCounts) {
|
|
878
|
+
this.ensureSCC();
|
|
881
879
|
const sccIndex = this.neuronToSCC.get(neuron2);
|
|
882
880
|
if (sccIndex === void 0) return true;
|
|
883
881
|
if (activeSccCounts.get(sccIndex) && activeSccCounts.get(sccIndex) > 0) {
|
|
@@ -895,8 +893,6 @@ var CNSNetwork = class {
|
|
|
895
893
|
buildIndexes() {
|
|
896
894
|
this.subIndex.clear();
|
|
897
895
|
this.parentNeuronByCollateral.clear();
|
|
898
|
-
this.dendriteIndex.clear();
|
|
899
|
-
this.collateralIndex.clear();
|
|
900
896
|
for (const neuron2 of this.neurons) {
|
|
901
897
|
for (const dendrite of neuron2.dendrites) {
|
|
902
898
|
const key = dendrite.collateral;
|
|
@@ -906,25 +902,40 @@ var CNSNetwork = class {
|
|
|
906
902
|
key,
|
|
907
903
|
arr
|
|
908
904
|
);
|
|
909
|
-
this.dendriteIndex.set(key, dendrite);
|
|
910
905
|
}
|
|
911
906
|
Object.values(neuron2.axon).forEach((collateral2) => {
|
|
912
907
|
this.parentNeuronByCollateral.set(
|
|
913
908
|
collateral2,
|
|
914
909
|
neuron2
|
|
915
910
|
);
|
|
916
|
-
this.collateralIndex.add(collateral2);
|
|
917
911
|
});
|
|
918
912
|
}
|
|
919
913
|
}
|
|
920
914
|
getParentNeuronByCollateral(collateral2) {
|
|
921
915
|
return this.parentNeuronByCollateral.get(collateral2);
|
|
922
916
|
}
|
|
917
|
+
// Computed on demand (rarely used): one dendrite per collateral, last wins —
|
|
918
|
+
// preserving the previous index semantics without building it every construct.
|
|
923
919
|
getDendrites() {
|
|
924
|
-
|
|
920
|
+
const byCollateral = /* @__PURE__ */ new Map();
|
|
921
|
+
for (const neuron2 of this.neurons) {
|
|
922
|
+
for (const dendrite of neuron2.dendrites) {
|
|
923
|
+
byCollateral.set(
|
|
924
|
+
dendrite.collateral,
|
|
925
|
+
dendrite
|
|
926
|
+
);
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
return Array.from(byCollateral.values());
|
|
925
930
|
}
|
|
926
931
|
getCollaterals() {
|
|
927
|
-
|
|
932
|
+
const collaterals = /* @__PURE__ */ new Set();
|
|
933
|
+
for (const neuron2 of this.neurons) {
|
|
934
|
+
for (const collateral2 of Object.values(neuron2.axon)) {
|
|
935
|
+
collaterals.add(collateral2);
|
|
936
|
+
}
|
|
937
|
+
}
|
|
938
|
+
return Array.from(collaterals);
|
|
928
939
|
}
|
|
929
940
|
getSubscribers(collateral2) {
|
|
930
941
|
return this.subIndex.get(collateral2) ?? [];
|
|
@@ -1198,27 +1209,26 @@ var neuron = (axon) => {
|
|
|
1198
1209
|
modality: singleModality,
|
|
1199
1210
|
modalities: multipleModalities,
|
|
1200
1211
|
afferentPaths: singleAfferentPaths,
|
|
1201
|
-
default:
|
|
1202
|
-
default: globalDefaultHandler,
|
|
1212
|
+
default: defaultHandler,
|
|
1203
1213
|
output
|
|
1204
1214
|
} = s;
|
|
1205
1215
|
const modalityConfigs = multipleModalities ? multipleModalities : singleModality ? [
|
|
1206
1216
|
{
|
|
1207
1217
|
modality: singleModality,
|
|
1208
1218
|
afferentPaths: singleAfferentPaths,
|
|
1209
|
-
default:
|
|
1219
|
+
default: defaultHandler
|
|
1210
1220
|
}
|
|
1211
1221
|
] : [];
|
|
1212
1222
|
const response = (payload, axon2, ctx) => {
|
|
1213
1223
|
const stimulation = ctx.stimulation;
|
|
1214
1224
|
const stimOptions = stimulation?.options;
|
|
1215
1225
|
const runGlobalDefault = () => {
|
|
1216
|
-
if (!
|
|
1226
|
+
if (!defaultHandler) {
|
|
1217
1227
|
throw new Error(
|
|
1218
1228
|
`modalityDendrite: No handler found for modality and no default handler provided`
|
|
1219
1229
|
);
|
|
1220
1230
|
}
|
|
1221
|
-
const res =
|
|
1231
|
+
const res = defaultHandler(payload, axon2, ctx);
|
|
1222
1232
|
if (res && typeof res.then === "function") {
|
|
1223
1233
|
return res.then(
|
|
1224
1234
|
(result) => output(result, axon2, ctx)
|
|
@@ -1237,7 +1247,7 @@ var neuron = (axon) => {
|
|
|
1237
1247
|
}
|
|
1238
1248
|
const stimAfferentPath = stimOptions.afferentPath;
|
|
1239
1249
|
const handler = stimAfferentPath && matchingConfig.afferentPaths ? matchingConfig.afferentPaths.get(stimAfferentPath) : void 0;
|
|
1240
|
-
const effectiveHandler = handler ?? matchingConfig.default ??
|
|
1250
|
+
const effectiveHandler = handler ?? matchingConfig.default ?? defaultHandler;
|
|
1241
1251
|
if (!effectiveHandler) {
|
|
1242
1252
|
throw new Error(
|
|
1243
1253
|
`modalityDendrite: No handler found for afferent path in modality and no default handler provided`
|