mol_wire_pub 1.0.30 → 1.0.34
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/node.d.ts +2 -3
- package/node.deps.json +1 -1
- package/node.esm.js +4 -16
- package/node.esm.js.map +1 -1
- package/node.js +4 -16
- package/node.js.map +1 -1
- package/node.test.js +48 -51
- package/node.test.js.map +1 -1
- package/package.json +1 -1
- package/web.d.ts +2 -3
- package/web.deps.json +1 -1
- package/web.esm.js +4 -16
- package/web.esm.js.map +1 -1
- package/web.js +4 -16
- package/web.js.map +1 -1
- package/web.test.js +44 -35
- package/web.test.js.map +1 -1
package/node.d.ts
CHANGED
|
@@ -38,9 +38,8 @@ declare namespace $ {
|
|
|
38
38
|
promote(): void;
|
|
39
39
|
up(): void;
|
|
40
40
|
down(): void;
|
|
41
|
-
emit(): void;
|
|
42
|
-
|
|
43
|
-
affect(quant: number): boolean;
|
|
41
|
+
emit(quant?: $mol_wire_cursor): void;
|
|
42
|
+
absorb(quant?: $mol_wire_cursor): boolean;
|
|
44
43
|
peer_move(from_pos: number, to_pos: number): void;
|
|
45
44
|
peer_repos(peer_pos: number, self_pos: number): void;
|
|
46
45
|
}
|
package/node.deps.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"files":["LICENSE","README.md","lang.lang.tree","mam.jam.js","mam.ts","package.json","sandbox.config.json","tsconfig.json","tsfmt.json","yarn.lock","mol/CNAME","mol/CODE_OF_CONDUCT.md","mol/CONTRIBUTING.md","mol/LICENSE","mol/index.html","mol/mol.meta.tree","mol/readme.md","mol/fail/fail.ts","mol/wire/cursor/cursor.ts","mol/wire/pub/pub.ts","mol/wire/sub/sub.ts","mol/wire/README.md","mol/wire/wire.ts"],"mods":{},"deps_in":{"mol/wire":{},"mol":{"mol/wire":-9007199254740991,"mol/fail":-9007199254740991},"":{"mol":-9007199254740991},"mol/wire/sub":{"mol/wire":-1},"mol/wire/pub":{"mol/wire/sub":-1},"mol/fail":{"mol/wire/pub":-4},"mol/wire/cursor":{"mol/wire/pub":-
|
|
1
|
+
{"files":["LICENSE","README.md","lang.lang.tree","mam.jam.js","mam.ts","package.json","sandbox.config.json","tsconfig.json","tsfmt.json","yarn.lock","mol/CNAME","mol/CODE_OF_CONDUCT.md","mol/CONTRIBUTING.md","mol/LICENSE","mol/index.html","mol/mol.meta.tree","mol/readme.md","mol/fail/fail.ts","mol/wire/cursor/cursor.ts","mol/wire/pub/pub.ts","mol/wire/sub/sub.ts","mol/wire/README.md","mol/wire/wire.ts"],"mods":{},"deps_in":{"mol/wire":{},"mol":{"mol/wire":-9007199254740991,"mol/fail":-9007199254740991},"":{"mol":-9007199254740991},"mol/wire/sub":{"mol/wire":-1},"mol/wire/pub":{"mol/wire/sub":-1},"mol/fail":{"mol/wire/pub":-4},"mol/wire/cursor":{"mol/wire/pub":-2}},"deps_out":{"mol/wire/pub":{"mol/fail":-4,"mol/wire/cursor":-2},"mol/wire":{"mol":-9007199254740991,"mol/wire/sub":-1},"mol":{"":-9007199254740991},"mol/wire/sub":{"mol/wire/pub":-1},"mol/fail":{"mol":-9007199254740991},"mol/wire/cursor":{}},"sloc":{"LICENSE":113,"md":602,"tree":31,"js":10,"ts":170,"json":85,"lock":939,"CNAME":1,"html":1},"deps":{"mol/wire/pub":{"..":-9007199254740991,"/mol/wire/pub":-1,"/mol/wire/sub":-3,"/mol/fail":-4,"/mol/wire/auto":-3,"/mol/wire/cursor/stale":-2,"/mol/wire/cursor/doubt":-3},"mol/wire":{"..":-9007199254740991,"/mol/wire/auto":-1,"/mol/wire/sub":-1,"/mol/wire/affected":-1},"mol":{"..":-9007199254740991},"":{},"mol/wire/sub":{"..":-9007199254740991,"/mol/wire/sub":-1,"/mol/wire/pub":-1},"mol/fail":{"..":-9007199254740991,"/mol/fail":-1},"mol/wire/cursor":{"..":-9007199254740991,"/mol/wire/cursor":-1}}}
|
package/node.esm.js
CHANGED
|
@@ -102,26 +102,14 @@ var $;
|
|
|
102
102
|
}
|
|
103
103
|
up() { }
|
|
104
104
|
down() { }
|
|
105
|
-
emit() {
|
|
105
|
+
emit(quant = $mol_wire_cursor.stale) {
|
|
106
106
|
for (let i = this.sub_from; i < this.length; i += 2) {
|
|
107
107
|
;
|
|
108
|
-
this[i].
|
|
108
|
+
this[i].absorb(quant);
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
|
-
stale
|
|
112
|
-
|
|
113
|
-
return false;
|
|
114
|
-
while ($mol_wire_affected.length) {
|
|
115
|
-
const next = $mol_wire_affected.pop();
|
|
116
|
-
next.affect($mol_wire_cursor.doubt);
|
|
117
|
-
}
|
|
118
|
-
return true;
|
|
119
|
-
}
|
|
120
|
-
affect(quant) {
|
|
121
|
-
for (let i = this.sub_from; i < this.length; i += 2) {
|
|
122
|
-
const sub = this[i];
|
|
123
|
-
$mol_wire_affected.push(sub);
|
|
124
|
-
}
|
|
111
|
+
absorb(quant = $mol_wire_cursor.stale) {
|
|
112
|
+
this.emit($mol_wire_cursor.doubt);
|
|
125
113
|
return true;
|
|
126
114
|
}
|
|
127
115
|
peer_move(from_pos, to_pos) {
|
package/node.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../mam.jam.js","-","../../../../mam.ts","../../../fail/mol/fail/fail.ts","../../cursor/mol/wire/cursor/cursor.ts","../mol/wire/pub/pub.ts","../../sub/sub.ts","../../mol/wire/wire.ts"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACbA;AACA;AACA;AACA;;ACHA,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC;AAK3B,IAAU,CAAC,CAMV;AAND,WAAU,CAAC;AAMX,CAAC,EANS,CAAC,KAAD,CAAC,QAMV;AAED,MAAM,CAAC,OAAO,GAAG,CAAC,CAAA;;;ADblB;AACA;AACA;;AEFA,IAAU,CAAC,CAMV;AAND,WAAU,CAAC;IAEV,SAAgB,SAAS,CAAE,KAAW;QACrC,MAAM,KAAK,CAAA;IACZ,CAAC;IAFe,WAAS,YAExB,CAAA;AAEF,CAAC,EANS,CAAC,KAAD,CAAC,QAMV;;;;ACND,IAAU,CAAC,CAmBV;AAnBD,WAAU,CAAC;IAGV,IAAY,gBAcX;IAdD,WAAY,gBAAgB;QAG3B,6CAAQ,IAAI,CAAE,MAAM,KAAM,SAAQ,MAAM;YAAG,QAAQ,KAAI,OAAO,IAAI,CAAA,CAAC,CAAC;SAAE,CAAE,CAAE,CAAC,CAAC,CAAmB,WAAA,CAAA;QAG/F,6CAAQ,IAAI,CAAE,MAAM,KAAM,SAAQ,MAAM;YAAG,QAAQ,KAAI,OAAO,IAAI,CAAA,CAAC,CAAC;SAAE,CAAE,CAAE,CAAC,CAAC,CAAmB,WAAA,CAAA;QAG/F,6CAAQ,IAAI,CAAE,MAAM,KAAM,SAAQ,MAAM;YAAG,QAAQ,KAAI,OAAO,IAAI,CAAA,CAAC,CAAC;SAAE,CAAE,CAAE,CAAC,CAAC,CAAmB,WAAA,CAAA;QAG/F,6CAAQ,IAAI,CAAE,MAAM,KAAM,SAAQ,MAAM;YAAG,QAAQ,KAAI,OAAO,IAAI,CAAA,CAAC,CAAC;SAAE,CAAE,CAAE,CAAC,CAAC,CAAmB,WAAA,CAAA;IAEhG,CAAC,EAdW,gBAAgB,GAAhB,kBAAgB,KAAhB,kBAAgB,QAc3B;AAEF,CAAC,EAnBS,CAAC,KAAD,CAAC,QAmBV;;;;ACnBD,IAAU,CAAC,
|
|
1
|
+
{"version":3,"sources":["../../../../mam.jam.js","-","../../../../mam.ts","../../../fail/mol/fail/fail.ts","../../cursor/mol/wire/cursor/cursor.ts","../mol/wire/pub/pub.ts","../../sub/sub.ts","../../mol/wire/wire.ts"],"names":[],"mappings":"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","file":"node.esm.js","sourcesContent":[null,null,"Error.stackTraceLimit = 50;\n\ndeclare let _$_: { new(): {} } & typeof globalThis\ndeclare class $ extends _$_ {}\n\nnamespace $ {\n\texport type $ = typeof $$\n\texport declare class $$ extends $ {}\n\tnamespace $$ {\n\t\texport type $$ = $\n\t}\n}\n\nmodule.exports = $\n","namespace $ {\n\n\texport function $mol_fail( error : any ) : never {\n\t\tthrow error\n\t}\n\n}\n","namespace $ {\n\t\n\t/** Special status statuses. */\n\texport enum $mol_wire_cursor {\n\t\t\n\t\t/** Update required. */\n\t\tstale = new ( class stale extends Number { toString(){ return '🔴' } } )( -1 ) as any as number,\n\t\t\n\t\t/** Some of (transitive) pub update required. */\n\t\tdoubt = new ( class doubt extends Number { toString(){ return '🟡' } } )( -2 ) as any as number,\n\t\t\n\t\t/** Actual state but may be dropped. */\n\t\tfresh = new ( class fresh extends Number { toString(){ return '🟢' } } )( -3 ) as any as number,\n\t\t\n\t\t/** State will never be changed. */\n\t\tfinal = new ( class solid extends Number { toString(){ return '🔵' } } )( -4 ) as any as number,\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\t/**\n\t * Collects subscribers in compact array. 28B\n\t */\n\texport class $mol_wire_pub extends Array< unknown > {\n\t\t\n\t\t// Derived objects should be Arrays.\n\t\tstatic get [ Symbol.species ]() {\n\t\t\treturn Array\n\t\t}\n\t\t\n\t\t/**\n\t\t * Index of first subscriber.\n\t\t */\n\t\tprotected sub_from = 0 // 4B\n\t\t\n\t\t/**\n\t\t * All current subscribers.\n\t\t */\n\t\tget sub_list() {\n\t\t\tconst res = [] as $mol_wire_sub[]\n\t\t\tfor( let i = this.sub_from; i < this.length; i += 2 ) {\n\t\t\t\tres.push( this[i] as $mol_wire_sub )\n\t\t\t}\n\t\t\treturn res as readonly $mol_wire_sub[]\n\t\t}\n\t\t\n\t\t/**\n\t\t * Has any subscribers or not.\n\t\t */\n\t\tget sub_empty() {\n\t\t\treturn this.sub_from === this.length\n\t\t}\n\t\t\n\t\t/**\n\t\t * Subscribe subscriber to this publisher events and return position of subscriber that required to unsubscribe.\n\t\t */\n\t\tsub_on( sub: $mol_wire_pub, pub_pos: number ) {\n\t\t\tconst pos = this.length\n\t\t\tthis.push( sub, pub_pos )\n\t\t\treturn pos\n\t\t}\n\t\t\n\t\t/**\n\t\t * Unsubscribe subscriber from this publisher events by subscriber position provided by `on(pub)`.\n\t\t */\n\t\tsub_off( sub_pos: number ) {\n\t\t\t\n\t\t\tif(!( sub_pos < this.length )) {\n\t\t\t\t$mol_fail( new Error( `Wrong pos ${ sub_pos }` ) )\n\t\t\t}\n\t\t\t\n\t\t\tconst end = this.length - 2\n\t\t\tif( sub_pos !== end ) {\n\t\t\t\tthis.peer_move( end, sub_pos )\n\t\t\t}\n\t\t\t\n\t\t\tthis.pop()\n\t\t\tthis.pop()\n\t\t\t\n\t\t\tif( this.length === this.sub_from ) this.reap()\n\t\t\t\n\t\t}\n\t\t\n\t\t/**\n\t\t * Called when last sub was unsubscribed.\n\t\t **/\n\t\treap() { }\n\t\t\n\t\t/**\n\t\t * Autowire this publisher with current subscriber.\n\t\t **/\n\t\tpromote() {\n\t\t\t$mol_wire_auto?.track_next( this )\n\t\t}\n\t\t\n\t\t/**\n\t\t * Enforce actualization. Should not throw errors.\n\t\t */\n\t\tup() {}\n\t\t\n\t\t/**\n\t\t * Subscriber stabilized and allows to free.\n\t\t */\n\t\tdown() {}\n\t\t\n\t\t/**\n\t\t * Notify subscribers about self changes.\n\t\t */\n\t\temit( quant = $mol_wire_cursor.stale ) {\n\t\t\tfor( let i = this.sub_from; i < this.length; i += 2 ) {\n\t\t\t\t;( this[i] as $mol_wire_pub ).absorb( quant )\n\t\t\t}\n\t\t}\n\t\t\n\t\t/**\n\t\t * Receive notification about publisher changes.\n\t\t */\n\t\tabsorb( quant = $mol_wire_cursor.stale ) {\n\t\t\tthis.emit( $mol_wire_cursor.doubt )\n\t\t\treturn true\n\t\t}\n\t\t\n\t\t/**\n\t\t * Moves peer from one position to another. Doesn't clear data at old position!\n\t\t */\n\t\tpeer_move( from_pos: number, to_pos: number ) {\n\t\t\t\n\t\t\tconst peer = this[ from_pos ] as $mol_wire_pub\n\t\t\tconst self_pos = this[ from_pos + 1 ] as number\n\t\t\t\n\t\t\tthis[ to_pos ] = peer\n\t\t\tthis[ to_pos + 1 ] = self_pos\n\t\t\t\n\t\t\tpeer.peer_repos( self_pos, to_pos )\n\t\t}\n\t\t\n\t\t/**\n\t\t * Updates self position in the peer.\n\t\t */\n\t\tpeer_repos( peer_pos: number, self_pos: number ) {\n\t\t\tthis[ peer_pos + 1 ] = self_pos\n\t\t}\n\t\t\n\t}\n\t\n}\n",null,"namespace $ {\n\t\n\t/**\n\t * When fulfilled, all publishers are promoted to this subscriber on access to its.\n\t */\n\texport let $mol_wire_auto: $mol_wire_sub | null = null\n\t\n\t/**\n\t * Affection queue. Used to prevent accidental stack overflow on emit.\n\t */\n\texport const $mol_wire_affected = [] as ( $mol_wire_sub | number )[]\n\t\n}\n"]}
|
package/node.js
CHANGED
|
@@ -102,26 +102,14 @@ var $;
|
|
|
102
102
|
}
|
|
103
103
|
up() { }
|
|
104
104
|
down() { }
|
|
105
|
-
emit() {
|
|
105
|
+
emit(quant = $mol_wire_cursor.stale) {
|
|
106
106
|
for (let i = this.sub_from; i < this.length; i += 2) {
|
|
107
107
|
;
|
|
108
|
-
this[i].
|
|
108
|
+
this[i].absorb(quant);
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
|
-
stale
|
|
112
|
-
|
|
113
|
-
return false;
|
|
114
|
-
while ($mol_wire_affected.length) {
|
|
115
|
-
const next = $mol_wire_affected.pop();
|
|
116
|
-
next.affect($mol_wire_cursor.doubt);
|
|
117
|
-
}
|
|
118
|
-
return true;
|
|
119
|
-
}
|
|
120
|
-
affect(quant) {
|
|
121
|
-
for (let i = this.sub_from; i < this.length; i += 2) {
|
|
122
|
-
const sub = this[i];
|
|
123
|
-
$mol_wire_affected.push(sub);
|
|
124
|
-
}
|
|
111
|
+
absorb(quant = $mol_wire_cursor.stale) {
|
|
112
|
+
this.emit($mol_wire_cursor.doubt);
|
|
125
113
|
return true;
|
|
126
114
|
}
|
|
127
115
|
peer_move(from_pos, to_pos) {
|
package/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../mam.jam.js","-","../../../../mam.ts","../../../fail/mol/fail/fail.ts","../../cursor/mol/wire/cursor/cursor.ts","../mol/wire/pub/pub.ts","../../sub/sub.ts","../../mol/wire/wire.ts"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACbA;AACA;AACA;AACA;;ACHA,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC;AAK3B,IAAU,CAAC,CAMV;AAND,WAAU,CAAC;AAMX,CAAC,EANS,CAAC,KAAD,CAAC,QAMV;AAED,MAAM,CAAC,OAAO,GAAG,CAAC,CAAA;;;ADblB;AACA;AACA;;AEFA,IAAU,CAAC,CAMV;AAND,WAAU,CAAC;IAEV,SAAgB,SAAS,CAAE,KAAW;QACrC,MAAM,KAAK,CAAA;IACZ,CAAC;IAFe,WAAS,YAExB,CAAA;AAEF,CAAC,EANS,CAAC,KAAD,CAAC,QAMV;;;;ACND,IAAU,CAAC,CAmBV;AAnBD,WAAU,CAAC;IAGV,IAAY,gBAcX;IAdD,WAAY,gBAAgB;QAG3B,6CAAQ,IAAI,CAAE,MAAM,KAAM,SAAQ,MAAM;YAAG,QAAQ,KAAI,OAAO,IAAI,CAAA,CAAC,CAAC;SAAE,CAAE,CAAE,CAAC,CAAC,CAAmB,WAAA,CAAA;QAG/F,6CAAQ,IAAI,CAAE,MAAM,KAAM,SAAQ,MAAM;YAAG,QAAQ,KAAI,OAAO,IAAI,CAAA,CAAC,CAAC;SAAE,CAAE,CAAE,CAAC,CAAC,CAAmB,WAAA,CAAA;QAG/F,6CAAQ,IAAI,CAAE,MAAM,KAAM,SAAQ,MAAM;YAAG,QAAQ,KAAI,OAAO,IAAI,CAAA,CAAC,CAAC;SAAE,CAAE,CAAE,CAAC,CAAC,CAAmB,WAAA,CAAA;QAG/F,6CAAQ,IAAI,CAAE,MAAM,KAAM,SAAQ,MAAM;YAAG,QAAQ,KAAI,OAAO,IAAI,CAAA,CAAC,CAAC;SAAE,CAAE,CAAE,CAAC,CAAC,CAAmB,WAAA,CAAA;IAEhG,CAAC,EAdW,gBAAgB,GAAhB,kBAAgB,KAAhB,kBAAgB,QAc3B;AAEF,CAAC,EAnBS,CAAC,KAAD,CAAC,QAmBV;;;;ACnBD,IAAU,CAAC,
|
|
1
|
+
{"version":3,"sources":["../../../../mam.jam.js","-","../../../../mam.ts","../../../fail/mol/fail/fail.ts","../../cursor/mol/wire/cursor/cursor.ts","../mol/wire/pub/pub.ts","../../sub/sub.ts","../../mol/wire/wire.ts"],"names":[],"mappings":"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","file":"node.js","sourcesContent":[null,null,"Error.stackTraceLimit = 50;\n\ndeclare let _$_: { new(): {} } & typeof globalThis\ndeclare class $ extends _$_ {}\n\nnamespace $ {\n\texport type $ = typeof $$\n\texport declare class $$ extends $ {}\n\tnamespace $$ {\n\t\texport type $$ = $\n\t}\n}\n\nmodule.exports = $\n","namespace $ {\n\n\texport function $mol_fail( error : any ) : never {\n\t\tthrow error\n\t}\n\n}\n","namespace $ {\n\t\n\t/** Special status statuses. */\n\texport enum $mol_wire_cursor {\n\t\t\n\t\t/** Update required. */\n\t\tstale = new ( class stale extends Number { toString(){ return '🔴' } } )( -1 ) as any as number,\n\t\t\n\t\t/** Some of (transitive) pub update required. */\n\t\tdoubt = new ( class doubt extends Number { toString(){ return '🟡' } } )( -2 ) as any as number,\n\t\t\n\t\t/** Actual state but may be dropped. */\n\t\tfresh = new ( class fresh extends Number { toString(){ return '🟢' } } )( -3 ) as any as number,\n\t\t\n\t\t/** State will never be changed. */\n\t\tfinal = new ( class solid extends Number { toString(){ return '🔵' } } )( -4 ) as any as number,\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\t/**\n\t * Collects subscribers in compact array. 28B\n\t */\n\texport class $mol_wire_pub extends Array< unknown > {\n\t\t\n\t\t// Derived objects should be Arrays.\n\t\tstatic get [ Symbol.species ]() {\n\t\t\treturn Array\n\t\t}\n\t\t\n\t\t/**\n\t\t * Index of first subscriber.\n\t\t */\n\t\tprotected sub_from = 0 // 4B\n\t\t\n\t\t/**\n\t\t * All current subscribers.\n\t\t */\n\t\tget sub_list() {\n\t\t\tconst res = [] as $mol_wire_sub[]\n\t\t\tfor( let i = this.sub_from; i < this.length; i += 2 ) {\n\t\t\t\tres.push( this[i] as $mol_wire_sub )\n\t\t\t}\n\t\t\treturn res as readonly $mol_wire_sub[]\n\t\t}\n\t\t\n\t\t/**\n\t\t * Has any subscribers or not.\n\t\t */\n\t\tget sub_empty() {\n\t\t\treturn this.sub_from === this.length\n\t\t}\n\t\t\n\t\t/**\n\t\t * Subscribe subscriber to this publisher events and return position of subscriber that required to unsubscribe.\n\t\t */\n\t\tsub_on( sub: $mol_wire_pub, pub_pos: number ) {\n\t\t\tconst pos = this.length\n\t\t\tthis.push( sub, pub_pos )\n\t\t\treturn pos\n\t\t}\n\t\t\n\t\t/**\n\t\t * Unsubscribe subscriber from this publisher events by subscriber position provided by `on(pub)`.\n\t\t */\n\t\tsub_off( sub_pos: number ) {\n\t\t\t\n\t\t\tif(!( sub_pos < this.length )) {\n\t\t\t\t$mol_fail( new Error( `Wrong pos ${ sub_pos }` ) )\n\t\t\t}\n\t\t\t\n\t\t\tconst end = this.length - 2\n\t\t\tif( sub_pos !== end ) {\n\t\t\t\tthis.peer_move( end, sub_pos )\n\t\t\t}\n\t\t\t\n\t\t\tthis.pop()\n\t\t\tthis.pop()\n\t\t\t\n\t\t\tif( this.length === this.sub_from ) this.reap()\n\t\t\t\n\t\t}\n\t\t\n\t\t/**\n\t\t * Called when last sub was unsubscribed.\n\t\t **/\n\t\treap() { }\n\t\t\n\t\t/**\n\t\t * Autowire this publisher with current subscriber.\n\t\t **/\n\t\tpromote() {\n\t\t\t$mol_wire_auto?.track_next( this )\n\t\t}\n\t\t\n\t\t/**\n\t\t * Enforce actualization. Should not throw errors.\n\t\t */\n\t\tup() {}\n\t\t\n\t\t/**\n\t\t * Subscriber stabilized and allows to free.\n\t\t */\n\t\tdown() {}\n\t\t\n\t\t/**\n\t\t * Notify subscribers about self changes.\n\t\t */\n\t\temit( quant = $mol_wire_cursor.stale ) {\n\t\t\tfor( let i = this.sub_from; i < this.length; i += 2 ) {\n\t\t\t\t;( this[i] as $mol_wire_pub ).absorb( quant )\n\t\t\t}\n\t\t}\n\t\t\n\t\t/**\n\t\t * Receive notification about publisher changes.\n\t\t */\n\t\tabsorb( quant = $mol_wire_cursor.stale ) {\n\t\t\tthis.emit( $mol_wire_cursor.doubt )\n\t\t\treturn true\n\t\t}\n\t\t\n\t\t/**\n\t\t * Moves peer from one position to another. Doesn't clear data at old position!\n\t\t */\n\t\tpeer_move( from_pos: number, to_pos: number ) {\n\t\t\t\n\t\t\tconst peer = this[ from_pos ] as $mol_wire_pub\n\t\t\tconst self_pos = this[ from_pos + 1 ] as number\n\t\t\t\n\t\t\tthis[ to_pos ] = peer\n\t\t\tthis[ to_pos + 1 ] = self_pos\n\t\t\t\n\t\t\tpeer.peer_repos( self_pos, to_pos )\n\t\t}\n\t\t\n\t\t/**\n\t\t * Updates self position in the peer.\n\t\t */\n\t\tpeer_repos( peer_pos: number, self_pos: number ) {\n\t\t\tthis[ peer_pos + 1 ] = self_pos\n\t\t}\n\t\t\n\t}\n\t\n}\n",null,"namespace $ {\n\t\n\t/**\n\t * When fulfilled, all publishers are promoted to this subscriber on access to its.\n\t */\n\texport let $mol_wire_auto: $mol_wire_sub | null = null\n\t\n\t/**\n\t * Affection queue. Used to prevent accidental stack overflow on emit.\n\t */\n\texport const $mol_wire_affected = [] as ( $mol_wire_sub | number )[]\n\t\n}\n"]}
|
package/node.test.js
CHANGED
|
@@ -94,26 +94,14 @@ var $;
|
|
|
94
94
|
}
|
|
95
95
|
up() { }
|
|
96
96
|
down() { }
|
|
97
|
-
emit() {
|
|
97
|
+
emit(quant = $mol_wire_cursor.stale) {
|
|
98
98
|
for (let i = this.sub_from; i < this.length; i += 2) {
|
|
99
99
|
;
|
|
100
|
-
this[i].
|
|
100
|
+
this[i].absorb(quant);
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
|
-
stale
|
|
104
|
-
|
|
105
|
-
return false;
|
|
106
|
-
while ($mol_wire_affected.length) {
|
|
107
|
-
const next = $mol_wire_affected.pop();
|
|
108
|
-
next.affect($mol_wire_cursor.doubt);
|
|
109
|
-
}
|
|
110
|
-
return true;
|
|
111
|
-
}
|
|
112
|
-
affect(quant) {
|
|
113
|
-
for (let i = this.sub_from; i < this.length; i += 2) {
|
|
114
|
-
const sub = this[i];
|
|
115
|
-
$mol_wire_affected.push(sub);
|
|
116
|
-
}
|
|
103
|
+
absorb(quant = $mol_wire_cursor.stale) {
|
|
104
|
+
this.emit($mol_wire_cursor.doubt);
|
|
117
105
|
return true;
|
|
118
106
|
}
|
|
119
107
|
peer_move(from_pos, to_pos) {
|
|
@@ -1928,8 +1916,9 @@ var $;
|
|
|
1928
1916
|
$.$mol_wire_mem = $mol_wire_mem;
|
|
1929
1917
|
function $mol_wire_mem_func(keys) {
|
|
1930
1918
|
return (func) => {
|
|
1919
|
+
const persist = $mol_wire_fiber.persist(func, keys);
|
|
1931
1920
|
const wrapper = function (...args) {
|
|
1932
|
-
let atom =
|
|
1921
|
+
let atom = persist.call(this, ...args.slice(0, keys));
|
|
1933
1922
|
if (args.length <= keys || args[keys] === undefined)
|
|
1934
1923
|
return atom.sync();
|
|
1935
1924
|
try {
|
|
@@ -2250,13 +2239,20 @@ var $;
|
|
|
2250
2239
|
}
|
|
2251
2240
|
this.sub_from = this.cursor;
|
|
2252
2241
|
}
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2242
|
+
absorb(quant = $mol_wire_cursor.stale) {
|
|
2243
|
+
switch (this.cursor) {
|
|
2244
|
+
case $mol_wire_cursor.final:
|
|
2245
|
+
return false;
|
|
2246
|
+
case $mol_wire_cursor.stale:
|
|
2247
|
+
return false;
|
|
2248
|
+
case $mol_wire_cursor.doubt:
|
|
2249
|
+
if (quant === $mol_wire_cursor.doubt)
|
|
2250
|
+
return false;
|
|
2251
|
+
}
|
|
2252
|
+
if (typeof this.cursor === 'number')
|
|
2257
2253
|
return false;
|
|
2258
2254
|
this.cursor = quant;
|
|
2259
|
-
return super.
|
|
2255
|
+
return super.absorb(quant);
|
|
2260
2256
|
}
|
|
2261
2257
|
[$mol_dev_format_head]() {
|
|
2262
2258
|
return $mol_dev_format_native(this);
|
|
@@ -2503,36 +2499,37 @@ var $;
|
|
|
2503
2499
|
}
|
|
2504
2500
|
return new this(host, task, `${host?.[Symbol.toStringTag] ?? host}.${task.name}(#)`, ...args);
|
|
2505
2501
|
}
|
|
2506
|
-
static persist(
|
|
2502
|
+
static persist(task, keys) {
|
|
2507
2503
|
const field = task.name + '()';
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
|
|
2504
|
+
if (keys) {
|
|
2505
|
+
return function $mol_wire_fiber_persist(...args) {
|
|
2506
|
+
let dict, key, fiber;
|
|
2507
|
+
key = `${this?.[Symbol.toStringTag] ?? this}.${task.name}(${args.map(v => $mol_key(v)).join(',')})`;
|
|
2508
|
+
dict = Object.getOwnPropertyDescriptor(this ?? task, field)?.value;
|
|
2509
|
+
if (dict) {
|
|
2510
|
+
const existen = dict.get(key);
|
|
2511
|
+
if (existen)
|
|
2512
|
+
return existen;
|
|
2513
|
+
}
|
|
2514
|
+
else {
|
|
2515
|
+
dict = (this ?? task)[field] = new Map();
|
|
2516
|
+
}
|
|
2517
|
+
fiber = new $mol_wire_fiber(this, task, key, ...args);
|
|
2518
|
+
dict.set(key, fiber);
|
|
2519
|
+
return fiber;
|
|
2520
|
+
};
|
|
2516
2521
|
}
|
|
2517
2522
|
else {
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
break reuse;
|
|
2528
|
-
return existen;
|
|
2523
|
+
return function $mol_wire_fiber_persist(...args) {
|
|
2524
|
+
const existen = Object.getOwnPropertyDescriptor(this ?? task, field)?.value;
|
|
2525
|
+
if (existen)
|
|
2526
|
+
return existen;
|
|
2527
|
+
const key = `${this?.[Symbol.toStringTag] ?? this}.${field}`;
|
|
2528
|
+
const fiber = new $mol_wire_fiber(this, task, key, ...args);
|
|
2529
|
+
(this ?? task)[field] = fiber;
|
|
2530
|
+
return fiber;
|
|
2531
|
+
};
|
|
2529
2532
|
}
|
|
2530
|
-
fiber = new this(host, task, key, ...args);
|
|
2531
|
-
if (args.length)
|
|
2532
|
-
dict.set(key, fiber);
|
|
2533
|
-
else
|
|
2534
|
-
(host ?? task)[field] = fiber;
|
|
2535
|
-
return fiber;
|
|
2536
2533
|
}
|
|
2537
2534
|
static warm = true;
|
|
2538
2535
|
static planning = [];
|
|
@@ -2630,8 +2627,8 @@ var $;
|
|
|
2630
2627
|
get $() {
|
|
2631
2628
|
return (this.host ?? this.task)['$'];
|
|
2632
2629
|
}
|
|
2633
|
-
|
|
2634
|
-
if (!super.
|
|
2630
|
+
absorb(quant = $mol_wire_cursor.stale) {
|
|
2631
|
+
if (!super.absorb(quant))
|
|
2635
2632
|
return false;
|
|
2636
2633
|
if (this.sub_from === this.length) {
|
|
2637
2634
|
this.plan();
|
|
@@ -2679,7 +2676,7 @@ var $;
|
|
|
2679
2676
|
if (result instanceof Promise && !handled.has(result)) {
|
|
2680
2677
|
result = Object.assign(result.finally(() => {
|
|
2681
2678
|
if (this.cache === result)
|
|
2682
|
-
this.
|
|
2679
|
+
this.absorb();
|
|
2683
2680
|
}), {
|
|
2684
2681
|
destructor: result['destructor']
|
|
2685
2682
|
});
|