@spearwolf/shadow-objects 0.16.0 → 0.18.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.
Files changed (61) hide show
  1. package/bundle.js +2 -2
  2. package/package.json +1 -1
  3. package/src/{entities → in-the-dark}/Entity.d.ts +3 -0
  4. package/src/in-the-dark/Entity.d.ts.map +1 -0
  5. package/src/{entities → in-the-dark}/Entity.js +47 -10
  6. package/src/in-the-dark/Entity.js.map +1 -0
  7. package/src/{entities → in-the-dark}/Kernel.d.ts +2 -0
  8. package/src/in-the-dark/Kernel.d.ts.map +1 -0
  9. package/src/{entities → in-the-dark}/Kernel.js +45 -12
  10. package/src/in-the-dark/Kernel.js.map +1 -0
  11. package/src/{entities → in-the-dark}/Registry.d.ts +2 -2
  12. package/src/in-the-dark/Registry.d.ts.map +1 -0
  13. package/src/in-the-dark/Registry.js +122 -0
  14. package/src/in-the-dark/Registry.js.map +1 -0
  15. package/src/in-the-dark/ShadowObject.d.ts.map +1 -0
  16. package/src/in-the-dark/ShadowObject.js.map +1 -0
  17. package/src/in-the-dark/SignalsPath.d.ts +14 -0
  18. package/src/in-the-dark/SignalsPath.d.ts.map +1 -0
  19. package/src/{entities → in-the-dark}/SignalsPath.js +43 -24
  20. package/src/in-the-dark/SignalsPath.js.map +1 -0
  21. package/src/in-the-dark/events.d.ts.map +1 -0
  22. package/src/in-the-dark/events.js.map +1 -0
  23. package/src/in-the-dark/importModule.d.ts.map +1 -0
  24. package/src/in-the-dark/importModule.js.map +1 -0
  25. package/src/shadow-objects.d.ts +4 -4
  26. package/src/shadow-objects.d.ts.map +1 -1
  27. package/src/shadow-objects.js +4 -4
  28. package/src/shadow-objects.js.map +1 -1
  29. package/src/types.d.ts +2 -1
  30. package/src/types.d.ts.map +1 -1
  31. package/src/view/LocalShadowObjectEnv.d.ts +2 -2
  32. package/src/view/LocalShadowObjectEnv.d.ts.map +1 -1
  33. package/src/view/LocalShadowObjectEnv.js +2 -2
  34. package/src/view/LocalShadowObjectEnv.js.map +1 -1
  35. package/src/worker/MessageRouter.d.ts +1 -1
  36. package/src/worker/MessageRouter.d.ts.map +1 -1
  37. package/src/worker/MessageRouter.js +2 -2
  38. package/src/worker/MessageRouter.js.map +1 -1
  39. package/tsconfig.lib.tsbuildinfo +1 -1
  40. package/src/entities/Entity.d.ts.map +0 -1
  41. package/src/entities/Entity.js.map +0 -1
  42. package/src/entities/Kernel.d.ts.map +0 -1
  43. package/src/entities/Kernel.js.map +0 -1
  44. package/src/entities/Registry.d.ts.map +0 -1
  45. package/src/entities/Registry.js +0 -72
  46. package/src/entities/Registry.js.map +0 -1
  47. package/src/entities/ShadowObject.d.ts.map +0 -1
  48. package/src/entities/ShadowObject.js.map +0 -1
  49. package/src/entities/SignalsPath.d.ts +0 -13
  50. package/src/entities/SignalsPath.d.ts.map +0 -1
  51. package/src/entities/SignalsPath.js.map +0 -1
  52. package/src/entities/events.d.ts.map +0 -1
  53. package/src/entities/events.js.map +0 -1
  54. package/src/entities/importModule.d.ts.map +0 -1
  55. package/src/entities/importModule.js.map +0 -1
  56. /package/src/{entities → in-the-dark}/ShadowObject.d.ts +0 -0
  57. /package/src/{entities → in-the-dark}/ShadowObject.js +0 -0
  58. /package/src/{entities → in-the-dark}/events.d.ts +0 -0
  59. /package/src/{entities → in-the-dark}/events.js +0 -0
  60. /package/src/{entities → in-the-dark}/importModule.d.ts +0 -0
  61. /package/src/{entities → in-the-dark}/importModule.js +0 -0
@@ -39,9 +39,12 @@ export declare class Entity {
39
39
  getProperty<T = unknown>(key: string): T;
40
40
  propKeys(): string[];
41
41
  propEntries(): [string, unknown][];
42
+ clearTruthyPropsCache(): void;
43
+ truthyProps(): Set<string> | undefined;
42
44
  hasContext(name: ContextNameType): boolean;
43
45
  useContext<T = unknown>(name: ContextNameType): SignalReader<T>;
44
46
  provideContext<T = unknown>(name: ContextNameType): Signal<T>;
47
+ provideGlobalContext<T = unknown>(name: ContextNameType): Signal<T>;
45
48
  }
46
49
  export {};
47
50
  //# sourceMappingURL=Entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Entity.d.ts","sourceRoot":"","sources":["../../../src/in-the-dark/Entity.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,MAAM,EAGN,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,aAAa,CAAC;AACjD,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AAInC,KAAK,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC;AA+BvC;;;;;;GAMG;AACH,qBAAa,MAAM;;IAiBjB,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAOtB;IAED,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IAED,IAAI,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAW5C;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAK/B;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAEpC;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,QAAQ,IAAI,SAAS,MAAM,EAAE,CAEhC;gBAEW,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAMxC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;IAO3C,SAAS;IA2BT,QAAQ,CAAC,KAAK,EAAE,MAAM;IA0BtB,cAAc;IAId,WAAW,CAAC,KAAK,EAAE,MAAM;IAQzB,gBAAgB;IAoBhB,2BAA2B;IAM3B,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,YAAY,EAAE,EAAE,gBAAgB,UAAQ;IAI5G,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE;IAM5C,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;IAQ7C,iBAAiB,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC;IAI5D,iBAAiB,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC;IAI5D,aAAa,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAS7C,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAIvC,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC;IAIxC,QAAQ,IAAI,MAAM,EAAE;IAIpB,WAAW,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAMlC,qBAAqB;IAIrB,WAAW,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS;IAiBtC,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO;IAM1C,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC;IAM/D,cAAc,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC;IAI7D,oBAAoB,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC;CA+CpE"}
@@ -31,6 +31,7 @@ export class Entity {
31
31
  #uuid;
32
32
  #props = new SignalAutoMap();
33
33
  #context = new Map();
34
+ #rootContexts = new Map();
34
35
  #parentUuid;
35
36
  #parent;
36
37
  #childrenUuids = new Set();
@@ -95,10 +96,15 @@ export class Entity {
95
96
  onDestroy() {
96
97
  this.#props.clear();
97
98
  off(this);
99
+ for (const rootCtx of this.#rootContexts.values()) {
100
+ rootCtx.cleanup();
101
+ rootCtx.signal.destroy();
102
+ }
103
+ this.#rootContexts.clear();
98
104
  for (const ctx of this.#context.values()) {
99
105
  ctx.context.set(undefined);
100
106
  ctx.unsubscribePathValue();
101
- ctx.unsubscribeParent?.();
107
+ ctx.unsubscribeFromParent?.();
102
108
  ctx.valuePath.dispose();
103
109
  ctx.inherited.destroy();
104
110
  ctx.provide.destroy();
@@ -146,9 +152,9 @@ export class Entity {
146
152
  this.#parent = undefined;
147
153
  this.#parentUuid = undefined;
148
154
  for (const [, ctx] of this.#context) {
149
- if (ctx.unsubscribeParent) {
150
- ctx.unsubscribeParent();
151
- ctx.unsubscribeParent = undefined;
155
+ if (ctx.unsubscribeFromParent) {
156
+ ctx.unsubscribeFromParent();
157
+ ctx.unsubscribeFromParent = undefined;
152
158
  }
153
159
  }
154
160
  // this.emit(onRemoveFromParent, this, prevParent);
@@ -180,6 +186,7 @@ export class Entity {
180
186
  return this.#getPropSignal(key).set;
181
187
  }
182
188
  setProperties(properties) {
189
+ this.clearTruthyPropsCache();
183
190
  batch(() => {
184
191
  for (const [key, val] of properties) {
185
192
  this.setProperty(key, val);
@@ -198,6 +205,26 @@ export class Entity {
198
205
  propEntries() {
199
206
  return Array.from(this.#props.entries()).map(([key, sig]) => [key, sig.value]);
200
207
  }
208
+ #truthyPropsCache;
209
+ clearTruthyPropsCache() {
210
+ this.#truthyPropsCache = undefined;
211
+ }
212
+ truthyProps() {
213
+ if (this.#truthyPropsCache) {
214
+ return this.#truthyPropsCache.size ? this.#truthyPropsCache : undefined;
215
+ }
216
+ const truthyProps = new Set();
217
+ for (const [key, sig] of this.#props.entries()) {
218
+ if (typeof key === 'string') {
219
+ const val = sig.value;
220
+ if (val != null && val !== false && val !== '') {
221
+ truthyProps.add(key);
222
+ }
223
+ }
224
+ }
225
+ this.#truthyPropsCache = truthyProps;
226
+ return truthyProps.size ? truthyProps : undefined;
227
+ }
201
228
  hasContext(name) {
202
229
  return this.#context.has(name);
203
230
  }
@@ -209,6 +236,16 @@ export class Entity {
209
236
  provideContext(name) {
210
237
  return this.#findOrCreateContext(name).provide;
211
238
  }
239
+ provideGlobalContext(name) {
240
+ if (this.#rootContexts.has(name)) {
241
+ return this.#rootContexts.get(name).signal;
242
+ }
243
+ const rootCtx = this.#kernel.findOrCreateRootContext(name);
244
+ const signal = createSignal();
245
+ const cleanup = rootCtx.add(signal);
246
+ this.#rootContexts.set(name, { cleanup, signal });
247
+ return signal;
248
+ }
212
249
  #findOrCreateContext(name) {
213
250
  if (this.#context.has(name)) {
214
251
  return this.#context.get(name);
@@ -226,17 +263,17 @@ export class Entity {
226
263
  return ctx;
227
264
  }
228
265
  #subscribeToParent(ctx) {
229
- ctx.unsubscribeParent?.();
230
- ctx.unsubscribeParent = undefined;
266
+ ctx.unsubscribeFromParent?.();
267
+ ctx.unsubscribeFromParent = undefined;
231
268
  if (this.parent) {
232
269
  const parentCtx = this.parent.#findOrCreateContext(ctx.name);
233
270
  const linkToParent = link(parentCtx.context, ctx.inherited);
234
- ctx.unsubscribeParent = () => {
235
- linkToParent.destroy();
236
- };
271
+ ctx.unsubscribeFromParent = linkToParent.destroy.bind(linkToParent);
237
272
  }
238
273
  else {
239
- ctx.inherited.set(undefined);
274
+ const rootCtx = this.#kernel.findOrCreateRootContext(ctx.name);
275
+ const linkToRoot = link(rootCtx.value$, ctx.inherited);
276
+ ctx.unsubscribeFromParent = linkToRoot.destroy.bind(linkToRoot);
240
277
  }
241
278
  }
242
279
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Entity.js","sourceRoot":"","sources":["../../../src/in-the-dark/Entity.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { IComponentEvent, ShadowObjectType, SyncEvent } from '../types.js';
2
2
  import { ConsoleLogger } from '../utils/ConsoleLogger.js';
3
3
  import { Entity } from './Entity.js';
4
4
  import { Registry } from './Registry.js';
5
+ import { SignalsPath } from './SignalsPath.js';
5
6
  export interface MessageToViewEvent {
6
7
  uuid: string;
7
8
  type: string;
@@ -56,6 +57,7 @@ export declare class Kernel {
56
57
  findShadowObjects(uuid: string): ShadowObjectType[];
57
58
  private attachShadowObject;
58
59
  private destroyShadowObject;
60
+ findOrCreateRootContext(name: string | symbol): SignalsPath;
59
61
  destroy(): void;
60
62
  }
61
63
  export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Kernel.d.ts","sourceRoot":"","sources":["../../../src/in-the-dark/Kernel.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAuB,eAAe,EAA2B,gBAAgB,EAAE,SAAS,EAAC,MAAM,aAAa,CAAC;AAC7H,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AAEnC,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AACvC,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAE7C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAE5B;AAQD,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAUD;;;;;;GAMG;AACH,qBAAa,MAAM;;IACjB,QAAQ,EAAE,QAAQ,CAAC;IAEnB,QAAQ,CAAC,MAAM,gBAA+B;gBAWlC,QAAQ,CAAC,EAAE,QAAQ;IAK/B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAQ/B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhC;;OAEG;IACH,qBAAqB,CAAC,OAAO,UAAQ,GAAG,MAAM,EAAE;IAgChD,cAAc,IAAI,eAAe,EAAE;IAInC,OAAO,CAAC,kBAAkB;IAY1B,eAAe,IAAI,IAAI;IAcvB,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAW3B,OAAO,CAAC,KAAK;IAoCb,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,SAAI,EAAE,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI;IAwBjH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAcjC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,IAAI;IA0B7D,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI9C,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI;IAIrE,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI;IAKrE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAY9C,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAMxD;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAqC3B,OAAO,CAAC,qBAAqB;IA2K7B,OAAO,CAAC,mBAAmB;IAQ3B,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAcnD,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,mBAAmB;IAU3B,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW;IAS3D,OAAO,IAAI,IAAI;CAUhB"}
@@ -3,8 +3,9 @@ import { batch, createEffect, createMemo, createSignal, destroySignal, link, Sig
3
3
  import { ComponentChangeType, MessageToView } from '../constants.js';
4
4
  import { ConsoleLogger } from '../utils/ConsoleLogger.js';
5
5
  import { Entity } from './Entity.js';
6
- import { Registry } from './Registry.js';
7
6
  import { onCreate, onDestroy, onParentChanged } from './events.js';
7
+ import { Registry } from './Registry.js';
8
+ import { SignalsPath } from './SignalsPath.js';
8
9
  var ShadowObjectAction;
9
10
  (function (ShadowObjectAction) {
10
11
  ShadowObjectAction[ShadowObjectAction["CreateAndDestroy"] = 0] = "CreateAndDestroy";
@@ -25,11 +26,13 @@ export class Kernel {
25
26
  #allEntities;
26
27
  #allEntitiesReversed;
27
28
  #allEntitiesNeedUpdate;
29
+ #rootContexts;
28
30
  constructor(registry) {
29
31
  this.logger = new ConsoleLogger('Kernel');
30
32
  this.#entities = new Map();
31
33
  this.#rootEntities = new Set();
32
34
  this.#allEntitiesNeedUpdate = true;
35
+ this.#rootContexts = new Map();
33
36
  eventize(this);
34
37
  this.registry = Registry.get(registry);
35
38
  }
@@ -86,12 +89,14 @@ export class Kernel {
86
89
  };
87
90
  }
88
91
  upgradeEntities() {
92
+ const entityConstructors = new Map();
89
93
  for (const entity of this.traverseLevelOrderBFS(true)) {
90
- this.updateShadowObjects(entity.uuid, ShadowObjectAction.DestroyOnly);
94
+ entityConstructors.set(entity.uuid, this.updateShadowObjects(entity.uuid, ShadowObjectAction.DestroyOnly));
91
95
  }
92
96
  for (const entity of this.traverseLevelOrderBFS(false)) {
93
- this.updateShadowObjects(entity.uuid, ShadowObjectAction.JustCreate);
97
+ this.updateShadowObjects(entity.uuid, ShadowObjectAction.JustCreate, entityConstructors.get(entity.uuid));
94
98
  }
99
+ entityConstructors.clear();
95
100
  }
96
101
  run(event) {
97
102
  if (this.logger.isDebug) {
@@ -187,6 +192,7 @@ export class Kernel {
187
192
  }
188
193
  changeProperties(uuid, properties) {
189
194
  this.getEntity(uuid).setProperties(properties);
195
+ this.updateShadowObjects(uuid);
190
196
  }
191
197
  changeToken(uuid, token) {
192
198
  if (!this.#entities.has(uuid))
@@ -206,9 +212,9 @@ export class Kernel {
206
212
  * Create or destroy the shadow-objects of an entity using the registered constructors.
207
213
  * After a token change or registry changes, an entity may be given different shadow-objects.
208
214
  */
209
- updateShadowObjects(uuid, action = ShadowObjectAction.CreateAndDestroy) {
215
+ updateShadowObjects(uuid, action = ShadowObjectAction.CreateAndDestroy, nextConstructors) {
210
216
  const entry = this.#entities.get(uuid);
211
- const nextConstructors = new Set(this.registry.findConstructors(entry.token));
217
+ nextConstructors ??= new Set(this.registry.findConstructors(entry.token, entry.entity.truthyProps()));
212
218
  const shouldDestroy = action === ShadowObjectAction.CreateAndDestroy || action === ShadowObjectAction.DestroyOnly;
213
219
  const shouldCreate = action === ShadowObjectAction.CreateAndDestroy || action === ShadowObjectAction.JustCreate;
214
220
  // destroy all shadow-objects created by constructors no longer in the list
@@ -232,23 +238,34 @@ export class Kernel {
232
238
  }
233
239
  }
234
240
  }
241
+ return nextConstructors;
235
242
  }
236
243
  constructShadowObject(constructor, entry) {
237
244
  const unsubscribePrimary = new Set();
238
245
  const unsubscribeSecondary = new Set();
239
246
  const contextReaders = new Map();
240
247
  const contextProviders = new Map();
248
+ const contextRootProviders = new Map();
241
249
  const propertyReaders = new Map();
242
250
  const shadowObject = eventize(new constructor({
243
251
  entity: entry.entity,
244
- // TODO provideContext(.. {global: true}) or provideGlobalContext(...)?
245
- provideContext(name, initialValue, compare) {
252
+ provideContext(name, initialValue, isEqual) {
246
253
  let ctxProvider = contextProviders.get(name);
247
- if (ctxProvider === undefined) {
248
- ctxProvider = createSignal(initialValue, compare ? { compare } : undefined);
254
+ if (ctxProvider == null) {
255
+ ctxProvider = createSignal(initialValue, isEqual ? { compare: isEqual } : undefined);
256
+ const ln = link(ctxProvider, entry.entity.provideContext(name));
257
+ unsubscribeSecondary.add(ln.destroy.bind(ln));
249
258
  contextProviders.set(name, ctxProvider);
250
- const con = link(ctxProvider, entry.entity.provideContext(name));
251
- unsubscribeSecondary.add(con.destroy.bind(con));
259
+ }
260
+ return ctxProvider;
261
+ },
262
+ provideGlobalContext(name, initialValue, isEqual) {
263
+ let ctxProvider = contextRootProviders.get(name);
264
+ if (ctxProvider == null) {
265
+ ctxProvider = createSignal(initialValue, isEqual ? { compare: isEqual } : undefined);
266
+ const ln = link(ctxProvider, entry.entity.provideGlobalContext(name));
267
+ unsubscribeSecondary.add(ln.destroy.bind(ln));
268
+ contextRootProviders.set(name, ctxProvider);
252
269
  }
253
270
  return ctxProvider;
254
271
  },
@@ -330,11 +347,15 @@ export class Kernel {
330
347
  for (const sig of contextProviders.values()) {
331
348
  destroySignal(sig);
332
349
  }
350
+ for (const sig of contextRootProviders.values()) {
351
+ destroySignal(sig);
352
+ }
333
353
  unsubscribePrimary.clear();
334
354
  unsubscribeSecondary.clear();
335
355
  contextReaders.clear();
336
356
  propertyReaders.clear();
337
357
  contextProviders.clear();
358
+ contextRootProviders.clear();
338
359
  const otherShadowObjects = entry.usedConstructors.get(constructor);
339
360
  if (otherShadowObjects) {
340
361
  otherShadowObjects.delete(shadowObject);
@@ -357,7 +378,7 @@ export class Kernel {
357
378
  }
358
379
  createShadowObjects(uuid) {
359
380
  const entry = this.#entities.get(uuid);
360
- this.registry.findConstructors(entry.token)?.forEach((constructor) => {
381
+ this.registry.findConstructors(entry.token, entry.entity.truthyProps())?.forEach((constructor) => {
361
382
  this.constructShadowObject(constructor, entry);
362
383
  });
363
384
  }
@@ -386,7 +407,19 @@ export class Kernel {
386
407
  emit(shadowObject, onDestroy, entity);
387
408
  off(entity, shadowObject);
388
409
  }
410
+ findOrCreateRootContext(name) {
411
+ let ctx = this.#rootContexts.get(name);
412
+ if (!ctx) {
413
+ ctx = new SignalsPath();
414
+ this.#rootContexts.set(name, ctx);
415
+ }
416
+ return ctx;
417
+ }
389
418
  destroy() {
419
+ for (const ctx of this.#rootContexts.values()) {
420
+ ctx.dispose();
421
+ }
422
+ this.#rootContexts.clear();
390
423
  for (const entity of this.traverseLevelOrderBFS().reverse()) {
391
424
  this.destroyEntity(entity.uuid);
392
425
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Kernel.js","sourceRoot":"","sources":["../../../src/in-the-dark/Kernel.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,8 @@ export declare class Registry {
7
7
  define(token: string, constructor: ShadowObjectConstructor): void;
8
8
  appendRoute(token: string, routes: string[]): void;
9
9
  clearRoute(route: string): void;
10
- findTokensByRoute(route: string): string[];
11
- findConstructors(route: string): ShadowObjectConstructor[] | undefined;
10
+ findTokensByRoute(route: string, truthyProps?: Set<string>): Set<string>;
11
+ findConstructors(route: string, truthyProps?: Set<string>): ShadowObjectConstructor[] | undefined;
12
12
  hasToken(token: string): boolean;
13
13
  hasRoute(route: string): boolean;
14
14
  clear(): void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Registry.d.ts","sourceRoot":"","sources":["../../../src/in-the-dark/Registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,aAAa,CAAC;AA+BzD,uCAAuC;AACvC,qBAAa,QAAQ;;IACnB,6EAA6E;IAC7E,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,QAAQ;IAQ9B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,uBAAuB;IAQ1D,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;IAiB3C,UAAU,CAAC,KAAK,EAAE,MAAM;IASxB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;IA2CxE,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,uBAAuB,EAAE,GAAG,SAAS;IAWjG,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIhC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIhC,KAAK;CAIN"}
@@ -0,0 +1,122 @@
1
+ import { appendTo } from '../utils/array-utils.js';
2
+ const toPropRoute = (route) => {
3
+ const parts = route.split('@').map((part) => part.trim());
4
+ if (parts.length === 2 && parts[1]) {
5
+ return parts[0] ? { key: `${parts[0]}@${parts[1]}`, prop: parts[1], token: parts[0] } : { key: parts[1], prop: parts[1] };
6
+ }
7
+ else {
8
+ return undefined;
9
+ }
10
+ };
11
+ const addRoutes = (set, routes) => {
12
+ for (const route of routes) {
13
+ set.add(route);
14
+ }
15
+ };
16
+ const addConstructors = (entry, constructors) => {
17
+ if (entry != null) {
18
+ for (const constructor of entry.constructors) {
19
+ constructors.add(constructor);
20
+ }
21
+ }
22
+ };
23
+ /** The shadow-object class registry */
24
+ export class Registry {
25
+ /** return the specified registry or, if not defined, the default registry */
26
+ static get(registry) {
27
+ return registry ?? defaultRegistry;
28
+ }
29
+ #registry = new Map();
30
+ #routes = new Map();
31
+ #truthyPropRoutes = new Map();
32
+ define(token, constructor) {
33
+ if (this.#registry.has(token)) {
34
+ appendTo(this.#registry.get(token).constructors, constructor);
35
+ }
36
+ else {
37
+ this.#registry.set(token, { token, constructors: [constructor] });
38
+ }
39
+ }
40
+ appendRoute(token, routes) {
41
+ const propRoute = toPropRoute(token);
42
+ if (propRoute) {
43
+ if (this.#truthyPropRoutes.has(propRoute.key)) {
44
+ addRoutes(this.#truthyPropRoutes.get(propRoute.key).routes, routes);
45
+ }
46
+ else {
47
+ this.#truthyPropRoutes.set(propRoute.key, { routes: new Set(routes), token: propRoute.token });
48
+ }
49
+ }
50
+ else {
51
+ if (this.#routes.has(token)) {
52
+ addRoutes(this.#routes.get(token), routes);
53
+ }
54
+ else {
55
+ this.#routes.set(token, new Set(routes));
56
+ }
57
+ }
58
+ }
59
+ clearRoute(route) {
60
+ const propRoute = toPropRoute(route);
61
+ if (propRoute) {
62
+ this.#truthyPropRoutes.delete(propRoute.key);
63
+ }
64
+ else {
65
+ this.#routes.delete(route);
66
+ }
67
+ }
68
+ findTokensByRoute(route, truthyProps) {
69
+ const tokens = new Set([route]);
70
+ const next = this.#routes.has(route) ? [...this.#routes.get(route)] : [];
71
+ while (next.length) {
72
+ const cur = next.shift();
73
+ if (tokens.has(cur)) {
74
+ continue;
75
+ }
76
+ tokens.add(cur);
77
+ if (this.#routes.has(cur)) {
78
+ next.push(...Array.from(this.#routes.get(cur)).filter((route) => !tokens.has(route)));
79
+ }
80
+ }
81
+ if (truthyProps) {
82
+ for (const prop of truthyProps) {
83
+ if (this.#truthyPropRoutes.has(prop)) {
84
+ addRoutes(tokens, this.#truthyPropRoutes.get(prop).routes);
85
+ }
86
+ }
87
+ let tokenCountBefore;
88
+ do {
89
+ tokenCountBefore = tokens.size;
90
+ for (const token of new Set(tokens)) {
91
+ for (const prop of truthyProps) {
92
+ const key = `${token}@${prop}`;
93
+ if (this.#truthyPropRoutes.has(key)) {
94
+ addRoutes(tokens, this.#truthyPropRoutes.get(key).routes);
95
+ }
96
+ }
97
+ }
98
+ } while (tokenCountBefore !== tokens.size);
99
+ }
100
+ return tokens;
101
+ }
102
+ findConstructors(route, truthyProps) {
103
+ const tokens = this.findTokensByRoute(route, truthyProps);
104
+ const constructors = new Set();
105
+ for (const token of tokens) {
106
+ addConstructors(this.#registry.get(token), constructors);
107
+ }
108
+ return constructors.size > 0 ? Array.from(constructors) : undefined;
109
+ }
110
+ hasToken(token) {
111
+ return this.#registry.has(token);
112
+ }
113
+ hasRoute(route) {
114
+ return this.#routes.has(route);
115
+ }
116
+ clear() {
117
+ this.#registry.clear();
118
+ this.#routes.clear();
119
+ }
120
+ }
121
+ const defaultRegistry = new Registry();
122
+ //# sourceMappingURL=Registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Registry.js","sourceRoot":"","sources":["../../../src/in-the-dark/Registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShadowObject.d.ts","sourceRoot":"","sources":["../../../src/in-the-dark/ShadowObject.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,aAAa,CAAC;AACzD,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAEvC,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,oCAAoC;AACpC,wBAAgB,YAAY,CAAC,OAAO,EAAE,4BAA4B,IAC/C,CAAC,SAAS,uBAAuB,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG;kBAGpD,GAAG,EAAE;;MAW/B;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;kBACV,MAAM,eAAe,uBAAuB,aAAa,QAAQ;CAGhF,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShadowObject.js","sourceRoot":"","sources":["../../../src/in-the-dark/ShadowObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAOvC,oCAAoC;AACpC,MAAM,UAAU,YAAY,CAAC,OAAqC;IAChE,OAAO,UAA6C,MAAS,EAAE,QAAc;QAC3E,aAAa;QACb,MAAM,cAAc,GAAG,KAAM,SAAQ,MAAM;YACzC,YAAY,GAAG,IAAW;gBACxB,aAAa;gBACb,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;gBACf,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;SACF,CAAC;QAEF,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAErE,OAAO,cAAc,CAAC;IACxB,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,MAAM,CAAC,KAAa,EAAE,WAAoC,EAAE,QAAmB;QAC7E,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACpD,CAAC;CACF,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { type Signal, type SignalLike } from '@spearwolf/signalize';
2
+ export declare class SignalsPath {
3
+ #private;
4
+ static readonly Value = "value";
5
+ accessor value: any;
6
+ readonly value$: Signal<any>;
7
+ constructor(signals?: SignalLike<any>[]);
8
+ add(...signals: (Signal<any> | SignalLike<any>)[]): () => void;
9
+ unshift(...signals: SignalLike<any>[]): () => void;
10
+ remove(...signals: SignalLike<any>[]): void;
11
+ clear(): void;
12
+ dispose(): void;
13
+ }
14
+ //# sourceMappingURL=SignalsPath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignalsPath.d.ts","sourceRoot":"","sources":["../../../src/in-the-dark/SignalsPath.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,MAAM,EACX,KAAK,UAAU,EAChB,MAAM,sBAAsB,CAAC;AAK9B,qBAAa,WAAW;;IACtB,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAS;IAKP,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAa;IAEvD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;gBAEjB,OAAO,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE;IAWvC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;IAMjD,OAAO,CAAC,GAAG,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE;IAMrC,MAAM,CAAC,GAAG,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE;IAIpC,KAAK;IAKL,OAAO;CA6CR"}
@@ -22,7 +22,7 @@ let SignalsPath = (() => {
22
22
  set value(value) { this.#value_accessor_storage = value; }
23
23
  constructor(signals) {
24
24
  this.#signals = [];
25
- this.#value_accessor_storage = __runInitializers(this, _value_initializers, void 0);
25
+ this.#value_accessor_storage = __runInitializers(this, _value_initializers, undefined);
26
26
  this.value$ = __runInitializers(this, _value_extraInitializers);
27
27
  retain(this, VALUE);
28
28
  this.value$ = findObjectSignalByName(this, VALUE);
@@ -32,43 +32,62 @@ let SignalsPath = (() => {
32
32
  }
33
33
  }
34
34
  add(...signals) {
35
- for (const sig of signals) {
36
- this.#signals.push(sig);
37
- }
38
- this.#updateEffect();
35
+ this.#signals.push(...signals);
36
+ this.#updateGetValueFromSignalsEffect();
37
+ return this.#makeRemoveFunc(signals);
38
+ }
39
+ unshift(...signals) {
40
+ this.#signals.unshift(...signals);
41
+ this.#updateGetValueFromSignalsEffect();
42
+ return this.#makeRemoveFunc(signals);
39
43
  }
40
- pop() {
41
- this.#signals.pop();
42
- this.#updateEffect();
44
+ remove(...signals) {
45
+ this.#makeRemoveFunc(signals)();
43
46
  }
44
47
  clear() {
45
48
  this.#signals.length = 0;
46
- this.#clearEffect();
49
+ this.#updateGetValueFromSignalsEffect();
47
50
  }
48
51
  dispose() {
49
52
  this.clear();
53
+ this.#effect?.destroy();
54
+ this.#effect = undefined;
50
55
  retainClear(this, VALUE);
51
56
  off(this);
52
- destroyObjectSignals(this);
53
57
  this.value$.destroy();
58
+ destroyObjectSignals(this);
54
59
  }
55
- #clearEffect() {
56
- this.#effect?.destroy();
57
- this.#effect = undefined;
58
- }
59
- #updateEffect() {
60
- this.#clearEffect();
61
- this.#effect = createEffect(() => {
62
- for (const sig of this.#signals) {
63
- const val = value(sig);
64
- if (val != null) {
65
- this.value = val;
66
- return;
60
+ #makeRemoveFunc(signals) {
61
+ return () => {
62
+ for (const sig of signals) {
63
+ const idx = this.#signals.indexOf(sig);
64
+ if (idx !== -1) {
65
+ this.#signals.splice(idx, 1);
67
66
  }
68
67
  }
68
+ this.#updateGetValueFromSignalsEffect();
69
+ };
70
+ }
71
+ #updateGetValueFromSignalsEffect() {
72
+ this.#effect?.destroy();
73
+ if (this.#signals.length === 0) {
74
+ this.#effect = undefined;
69
75
  this.value = undefined;
70
- }, this.#signals);
71
- this.#effect.run();
76
+ }
77
+ else {
78
+ this.#effect = createEffect(() => {
79
+ let valueFromSignals = undefined;
80
+ for (const sig of this.#signals) {
81
+ const val = value(sig);
82
+ if (val != null) {
83
+ valueFromSignals = val;
84
+ break;
85
+ }
86
+ }
87
+ this.value = valueFromSignals;
88
+ }, this.#signals);
89
+ this.#effect.run();
90
+ }
72
91
  }
73
92
  };
74
93
  })();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignalsPath.js","sourceRoot":"","sources":["../../../src/in-the-dark/SignalsPath.ts"],"names":[],"mappings":"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"}