mol_wire_pub 1.0.26 → 1.0.30

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
@@ -110,7 +110,7 @@ let counter = 0
110
110
  const pub = new Publisher
111
111
 
112
112
  export function state() {
113
- pub.track_promote()
113
+ pub.promote()
114
114
  return counter
115
115
  }
116
116
 
package/node.d.ts CHANGED
@@ -35,7 +35,7 @@ declare namespace $ {
35
35
  sub_on(sub: $mol_wire_pub, pub_pos: number): number;
36
36
  sub_off(sub_pos: number): void;
37
37
  reap(): void;
38
- track_promote(): void;
38
+ promote(): void;
39
39
  up(): void;
40
40
  down(): void;
41
41
  emit(): void;
package/node.esm.js CHANGED
@@ -97,7 +97,7 @@ var $;
97
97
  this.reap();
98
98
  }
99
99
  reap() { }
100
- track_promote() {
100
+ promote() {
101
101
  $mol_wire_auto?.track_next(this);
102
102
  }
103
103
  up() { }
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":"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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. 24B\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\ttrack_promote() {\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() {\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 ).stale()\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\tstale() {\n\t\t\t\n\t\t\tif( !this.affect( $mol_wire_cursor.stale ) ) return false\n\t\t\t\n\t\t\twhile( $mol_wire_affected.length ) {\n\t\t\t\tconst next = $mol_wire_affected.pop()! as $mol_wire_sub\n\t\t\t\tnext.affect( $mol_wire_cursor.doubt )\n\t\t\t}\n\t\t\t\n\t\t\treturn true\n\t\t}\n\t\t\n\t\t/**\n\t\t * Add self subscribers to affection queue.\n\t\t */\n\t\taffect( quant: number ) {\n\t\t\tfor( let i = this.sub_from; i < this.length; i += 2 ) {\n\t\t\t\tconst sub = this[i] as $mol_wire_sub\n\t\t\t\t$mol_wire_affected.push( sub )\n\t\t\t}\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"]}
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() {\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 ).stale()\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\tstale() {\n\t\t\t\n\t\t\tif( !this.affect( $mol_wire_cursor.stale ) ) return false\n\t\t\t\n\t\t\twhile( $mol_wire_affected.length ) {\n\t\t\t\tconst next = $mol_wire_affected.pop()! as $mol_wire_sub\n\t\t\t\tnext.affect( $mol_wire_cursor.doubt )\n\t\t\t}\n\t\t\t\n\t\t\treturn true\n\t\t}\n\t\t\n\t\t/**\n\t\t * Add self subscribers to affection queue.\n\t\t */\n\t\taffect( quant: number ) {\n\t\t\tfor( let i = this.sub_from; i < this.length; i += 2 ) {\n\t\t\t\tconst sub = this[i] as $mol_wire_sub\n\t\t\t\t$mol_wire_affected.push( sub )\n\t\t\t}\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
@@ -97,7 +97,7 @@ var $;
97
97
  this.reap();
98
98
  }
99
99
  reap() { }
100
- track_promote() {
100
+ promote() {
101
101
  $mol_wire_auto?.track_next(this);
102
102
  }
103
103
  up() { }
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":"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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. 24B\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\ttrack_promote() {\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() {\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 ).stale()\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\tstale() {\n\t\t\t\n\t\t\tif( !this.affect( $mol_wire_cursor.stale ) ) return false\n\t\t\t\n\t\t\twhile( $mol_wire_affected.length ) {\n\t\t\t\tconst next = $mol_wire_affected.pop()! as $mol_wire_sub\n\t\t\t\tnext.affect( $mol_wire_cursor.doubt )\n\t\t\t}\n\t\t\t\n\t\t\treturn true\n\t\t}\n\t\t\n\t\t/**\n\t\t * Add self subscribers to affection queue.\n\t\t */\n\t\taffect( quant: number ) {\n\t\t\tfor( let i = this.sub_from; i < this.length; i += 2 ) {\n\t\t\t\tconst sub = this[i] as $mol_wire_sub\n\t\t\t\t$mol_wire_affected.push( sub )\n\t\t\t}\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"]}
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() {\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 ).stale()\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\tstale() {\n\t\t\t\n\t\t\tif( !this.affect( $mol_wire_cursor.stale ) ) return false\n\t\t\t\n\t\t\twhile( $mol_wire_affected.length ) {\n\t\t\t\tconst next = $mol_wire_affected.pop()! as $mol_wire_sub\n\t\t\t\tnext.affect( $mol_wire_cursor.doubt )\n\t\t\t}\n\t\t\t\n\t\t\treturn true\n\t\t}\n\t\t\n\t\t/**\n\t\t * Add self subscribers to affection queue.\n\t\t */\n\t\taffect( quant: number ) {\n\t\t\tfor( let i = this.sub_from; i < this.length; i += 2 ) {\n\t\t\t\tconst sub = this[i] as $mol_wire_sub\n\t\t\t\t$mol_wire_affected.push( sub )\n\t\t\t}\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
@@ -89,7 +89,7 @@ var $;
89
89
  this.reap();
90
90
  }
91
91
  reap() { }
92
- track_promote() {
92
+ promote() {
93
93
  $mol_wire_auto?.track_next(this);
94
94
  }
95
95
  up() { }
@@ -2094,9 +2094,9 @@ var $;
2094
2094
  const sub = new $mol_wire_pub_sub;
2095
2095
  const bu1 = sub.track_on();
2096
2096
  try {
2097
- pub1.track_promote();
2098
- pub2.track_promote();
2099
- pub2.track_promote();
2097
+ pub1.promote();
2098
+ pub2.promote();
2099
+ pub2.promote();
2100
2100
  }
2101
2101
  finally {
2102
2102
  sub.track_cut();
@@ -2107,9 +2107,9 @@ var $;
2107
2107
  $mol_assert_like(sub.pub_list, [pub1, pub2, pub2]);
2108
2108
  const bu2 = sub.track_on();
2109
2109
  try {
2110
- pub1.track_promote();
2111
- pub1.track_promote();
2112
- pub2.track_promote();
2110
+ pub1.promote();
2111
+ pub1.promote();
2112
+ pub2.promote();
2113
2113
  }
2114
2114
  finally {
2115
2115
  sub.track_cut();
@@ -2126,7 +2126,7 @@ var $;
2126
2126
  try {
2127
2127
  const bu2 = sub2.track_on();
2128
2128
  try {
2129
- $mol_assert_fail(() => sub1.track_promote(), 'Circular subscription');
2129
+ $mol_assert_fail(() => sub1.promote(), 'Circular subscription');
2130
2130
  }
2131
2131
  finally {
2132
2132
  sub2.track_cut();
@@ -2162,11 +2162,11 @@ var $;
2162
2162
  $mol_wire_auto = this;
2163
2163
  return sub;
2164
2164
  }
2165
- track_promote() {
2165
+ promote() {
2166
2166
  if (this.cursor >= this.pub_from) {
2167
2167
  $mol_fail(new Error('Circular subscription'));
2168
2168
  }
2169
- super.track_promote();
2169
+ super.promote();
2170
2170
  }
2171
2171
  track_next(pub) {
2172
2172
  if (this.cursor < 0)
@@ -2734,7 +2734,7 @@ var $;
2734
2734
  if (!$mol_wire_fiber.warm) {
2735
2735
  return this.result;
2736
2736
  }
2737
- this.track_promote();
2737
+ this.promote();
2738
2738
  this.up();
2739
2739
  if (this.cache instanceof Error) {
2740
2740
  return $mol_fail_hidden(this.cache);