@spearwolf/shadow-objects 0.33.0 → 0.34.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 (210) hide show
  1. package/CHANGELOG.md +320 -61
  2. package/README.md +57 -13
  3. package/bundle.js +5 -54
  4. package/package.json +7 -3
  5. package/src/ChangeTrailRefusedError.d.ts +27 -0
  6. package/src/ChangeTrailRefusedError.d.ts.map +1 -0
  7. package/src/ChangeTrailRefusedError.js +12 -0
  8. package/src/ChangeTrailRefusedError.js.map +7 -0
  9. package/src/EntityUuidInUseError.d.ts +19 -0
  10. package/src/EntityUuidInUseError.d.ts.map +1 -0
  11. package/src/EntityUuidInUseError.js +11 -0
  12. package/src/EntityUuidInUseError.js.map +7 -0
  13. package/src/WorkerTimeoutError.d.ts +25 -0
  14. package/src/WorkerTimeoutError.d.ts.map +1 -0
  15. package/src/WorkerTimeoutError.js +12 -0
  16. package/src/WorkerTimeoutError.js.map +7 -0
  17. package/src/bundle.d.ts +1 -1
  18. package/src/bundle.d.ts.map +1 -1
  19. package/src/bundle.js +1 -1
  20. package/src/bundle.js.map +2 -2
  21. package/src/constants.d.ts +9 -2
  22. package/src/constants.d.ts.map +1 -1
  23. package/src/constants.js +1 -1
  24. package/src/constants.js.map +2 -2
  25. package/src/create-worker.bundle.d.ts +1 -1
  26. package/src/create-worker.bundle.d.ts.map +1 -1
  27. package/src/create-worker.bundle.js.map +1 -1
  28. package/src/create-worker.d.ts +1 -1
  29. package/src/create-worker.d.ts.map +1 -1
  30. package/src/create-worker.js.map +1 -1
  31. package/src/elements/ShaeElement.d.ts +70 -2
  32. package/src/elements/ShaeElement.d.ts.map +1 -1
  33. package/src/elements/ShaeElement.js +129 -25
  34. package/src/elements/ShaeElement.js.map +3 -3
  35. package/src/elements/ShaeEntElement.d.ts +39 -1
  36. package/src/elements/ShaeEntElement.d.ts.map +1 -1
  37. package/src/elements/ShaeEntElement.js +397 -167
  38. package/src/elements/ShaeEntElement.js.map +2 -2
  39. package/src/elements/ShaeLifecycleElement.d.ts +71 -0
  40. package/src/elements/ShaeLifecycleElement.d.ts.map +1 -0
  41. package/src/elements/ShaeLifecycleElement.js +83 -0
  42. package/src/elements/ShaeLifecycleElement.js.map +7 -0
  43. package/src/elements/ShaePropElement.d.ts +52 -2
  44. package/src/elements/ShaePropElement.d.ts.map +1 -1
  45. package/src/elements/ShaePropElement.js +240 -219
  46. package/src/elements/ShaePropElement.js.map +2 -2
  47. package/src/elements/ShaeWorkerElement.d.ts +49 -5
  48. package/src/elements/ShaeWorkerElement.d.ts.map +1 -1
  49. package/src/elements/ShaeWorkerElement.js +204 -73
  50. package/src/elements/ShaeWorkerElement.js.map +2 -2
  51. package/src/elements/constants.d.ts +6 -0
  52. package/src/elements/constants.d.ts.map +1 -1
  53. package/src/elements/constants.js +12 -0
  54. package/src/elements/constants.js.map +2 -2
  55. package/src/elements/deferredTeardown.d.ts +24 -0
  56. package/src/elements/deferredTeardown.d.ts.map +1 -0
  57. package/src/elements/deferredTeardown.js +30 -0
  58. package/src/elements/deferredTeardown.js.map +7 -0
  59. package/src/elements/displayContentsRule.d.ts +25 -0
  60. package/src/elements/displayContentsRule.d.ts.map +1 -0
  61. package/src/elements/displayContentsRule.js +37 -0
  62. package/src/elements/displayContentsRule.js.map +7 -0
  63. package/src/elements/events.d.ts +10 -7
  64. package/src/elements/events.d.ts.map +1 -1
  65. package/src/elements/forwardCustomEvents.d.ts +19 -0
  66. package/src/elements/forwardCustomEvents.d.ts.map +1 -0
  67. package/src/elements/forwardCustomEvents.js +47 -0
  68. package/src/elements/forwardCustomEvents.js.map +7 -0
  69. package/src/elements/hostedSlots.d.ts +36 -0
  70. package/src/elements/hostedSlots.d.ts.map +1 -0
  71. package/src/elements/hostedSlots.js +118 -0
  72. package/src/elements/hostedSlots.js.map +7 -0
  73. package/src/elements/parentRemoval.d.ts +18 -0
  74. package/src/elements/parentRemoval.d.ts.map +1 -0
  75. package/src/elements/parentRemoval.js +60 -0
  76. package/src/elements/parentRemoval.js.map +7 -0
  77. package/src/elements/propValueConverters.d.ts +3 -0
  78. package/src/elements/propValueConverters.d.ts.map +1 -0
  79. package/src/elements/propValueConverters.js +54 -0
  80. package/src/elements/propValueConverters.js.map +7 -0
  81. package/src/elements/requestEntAncestor.d.ts +32 -0
  82. package/src/elements/requestEntAncestor.d.ts.map +1 -0
  83. package/src/elements/requestEntAncestor.js +16 -0
  84. package/src/elements/requestEntAncestor.js.map +7 -0
  85. package/src/elements.js.map +1 -1
  86. package/src/in-the-dark/Entity.d.ts +113 -3
  87. package/src/in-the-dark/Entity.d.ts.map +1 -1
  88. package/src/in-the-dark/Entity.js +292 -63
  89. package/src/in-the-dark/Entity.js.map +3 -3
  90. package/src/in-the-dark/Kernel.d.ts +76 -17
  91. package/src/in-the-dark/Kernel.d.ts.map +1 -1
  92. package/src/in-the-dark/Kernel.js +410 -378
  93. package/src/in-the-dark/Kernel.js.map +3 -3
  94. package/src/in-the-dark/Registry.d.ts.map +1 -1
  95. package/src/in-the-dark/Registry.js +83 -14
  96. package/src/in-the-dark/Registry.js.map +2 -2
  97. package/src/in-the-dark/ShadowObject.d.ts.map +1 -1
  98. package/src/in-the-dark/ShadowObject.js +1 -0
  99. package/src/in-the-dark/ShadowObject.js.map +2 -2
  100. package/src/in-the-dark/ShadowObjectCreationScope.d.ts +126 -0
  101. package/src/in-the-dark/ShadowObjectCreationScope.d.ts.map +1 -0
  102. package/src/in-the-dark/ShadowObjectCreationScope.js +596 -0
  103. package/src/in-the-dark/ShadowObjectCreationScope.js.map +7 -0
  104. package/src/in-the-dark/SignalsPath.d.ts.map +1 -1
  105. package/src/in-the-dark/SignalsPath.js +2 -2
  106. package/src/in-the-dark/SignalsPath.js.map +2 -2
  107. package/src/in-the-dark/events.js.map +1 -1
  108. package/src/in-the-dark/importModule.d.ts +7 -0
  109. package/src/in-the-dark/importModule.d.ts.map +1 -1
  110. package/src/in-the-dark/importModule.js +5 -2
  111. package/src/in-the-dark/importModule.js.map +2 -2
  112. package/src/index.d.ts +7 -1
  113. package/src/index.d.ts.map +1 -1
  114. package/src/index.js +5 -1
  115. package/src/index.js.map +2 -2
  116. package/src/shadow-objects.d.ts +2 -0
  117. package/src/shadow-objects.d.ts.map +1 -1
  118. package/src/shadow-objects.js +2 -0
  119. package/src/shadow-objects.js.map +2 -2
  120. package/src/shadow-objects.worker.js +0 -1
  121. package/src/shadow-objects.worker.js.map +2 -2
  122. package/src/shae-ent.js.map +1 -1
  123. package/src/shae-prop.js +2 -2
  124. package/src/shae-prop.js.map +2 -2
  125. package/src/shae-worker.js.map +1 -1
  126. package/src/types.d.ts +35 -4
  127. package/src/types.d.ts.map +1 -1
  128. package/src/utils/ConsoleLogger.d.ts +45 -10
  129. package/src/utils/ConsoleLogger.d.ts.map +1 -1
  130. package/src/utils/ConsoleLogger.js +51 -26
  131. package/src/utils/ConsoleLogger.js.map +2 -2
  132. package/src/utils/FrameLoop.d.ts +42 -3
  133. package/src/utils/FrameLoop.d.ts.map +1 -1
  134. package/src/utils/FrameLoop.js +71 -10
  135. package/src/utils/FrameLoop.js.map +2 -2
  136. package/src/utils/MicrotaskCollector.d.ts +45 -0
  137. package/src/utils/MicrotaskCollector.d.ts.map +1 -0
  138. package/src/utils/MicrotaskCollector.js +33 -0
  139. package/src/utils/MicrotaskCollector.js.map +7 -0
  140. package/src/utils/MicrotaskGate.d.ts +17 -0
  141. package/src/utils/MicrotaskGate.d.ts.map +1 -0
  142. package/src/utils/MicrotaskGate.js +20 -0
  143. package/src/utils/MicrotaskGate.js.map +7 -0
  144. package/src/utils/array-utils.js.map +1 -1
  145. package/src/utils/attr-utils.d.ts +6 -0
  146. package/src/utils/attr-utils.d.ts.map +1 -1
  147. package/src/utils/attr-utils.js +3 -1
  148. package/src/utils/attr-utils.js.map +2 -2
  149. package/src/utils/constants.js.map +1 -1
  150. package/src/utils/generateUUID.d.ts +11 -0
  151. package/src/utils/generateUUID.d.ts.map +1 -1
  152. package/src/utils/generateUUID.js +31 -266
  153. package/src/utils/generateUUID.js.map +2 -2
  154. package/src/utils/props-utils.d.ts +3 -2
  155. package/src/utils/props-utils.d.ts.map +1 -1
  156. package/src/utils/props-utils.js +13 -24
  157. package/src/utils/props-utils.js.map +2 -2
  158. package/src/utils/runGuarded.d.ts +27 -0
  159. package/src/utils/runGuarded.d.ts.map +1 -0
  160. package/src/utils/runGuarded.js +11 -0
  161. package/src/utils/runGuarded.js.map +7 -0
  162. package/src/utils/toMaybe.d.ts.map +1 -1
  163. package/src/utils/toMaybe.js.map +1 -1
  164. package/src/utils/toNamespace.d.ts.map +1 -1
  165. package/src/utils/toNamespace.js.map +1 -1
  166. package/src/utils/toUrlString.d.ts +12 -0
  167. package/src/utils/toUrlString.d.ts.map +1 -1
  168. package/src/utils/toUrlString.js.map +2 -2
  169. package/src/utils/waitForMessageOfType.d.ts +12 -1
  170. package/src/utils/waitForMessageOfType.d.ts.map +1 -1
  171. package/src/utils/waitForMessageOfType.js +16 -1
  172. package/src/utils/waitForMessageOfType.js.map +2 -2
  173. package/src/view/ComponentChanges.d.ts +88 -1
  174. package/src/view/ComponentChanges.d.ts.map +1 -1
  175. package/src/view/ComponentChanges.js +243 -73
  176. package/src/view/ComponentChanges.js.map +2 -2
  177. package/src/view/ComponentContext.d.ts +206 -16
  178. package/src/view/ComponentContext.d.ts.map +1 -1
  179. package/src/view/ComponentContext.js +548 -91
  180. package/src/view/ComponentContext.js.map +2 -2
  181. package/src/view/ComponentMemory.d.ts +3 -3
  182. package/src/view/ComponentMemory.d.ts.map +1 -1
  183. package/src/view/ComponentMemory.js.map +1 -1
  184. package/src/view/IShadowObjectEnvProxy.d.ts +29 -3
  185. package/src/view/IShadowObjectEnvProxy.d.ts.map +1 -1
  186. package/src/view/LocalShadowObjectEnv.d.ts +1 -1
  187. package/src/view/LocalShadowObjectEnv.d.ts.map +1 -1
  188. package/src/view/LocalShadowObjectEnv.js +8 -6
  189. package/src/view/LocalShadowObjectEnv.js.map +2 -2
  190. package/src/view/RemoteWorkerEnv.d.ts +89 -5
  191. package/src/view/RemoteWorkerEnv.d.ts.map +1 -1
  192. package/src/view/RemoteWorkerEnv.js +195 -77
  193. package/src/view/RemoteWorkerEnv.js.map +2 -2
  194. package/src/view/ShadowEnv.d.ts +49 -2
  195. package/src/view/ShadowEnv.d.ts.map +1 -1
  196. package/src/view/ShadowEnv.js +223 -60
  197. package/src/view/ShadowEnv.js.map +2 -2
  198. package/src/view/ViewComponent.d.ts +78 -14
  199. package/src/view/ViewComponent.d.ts.map +1 -1
  200. package/src/view/ViewComponent.js +90 -14
  201. package/src/view/ViewComponent.js.map +2 -2
  202. package/src/view/cloneChangeTrail.js.map +2 -2
  203. package/src/worker/MessageRouter.d.ts +14 -0
  204. package/src/worker/MessageRouter.d.ts.map +1 -1
  205. package/src/worker/MessageRouter.js +75 -15
  206. package/src/worker/MessageRouter.js.map +2 -2
  207. package/src/worker/WorkerRuntime.d.ts +22 -1
  208. package/src/worker/WorkerRuntime.d.ts.map +1 -1
  209. package/src/worker/WorkerRuntime.js +60 -8
  210. package/src/worker/WorkerRuntime.js.map +2 -2
@@ -0,0 +1,126 @@
1
+ import { on, once } from '@spearwolf/eventize';
2
+ import { type CompareFunc, createEffect, createMemo, type Signal, type SignalReader } from '@spearwolf/signalize';
3
+ import type { Maybe, ProvideContextOptions, ShadowObjectCreationAPI, ShadowObjectType, SignalValueOptions } from '../types.js';
4
+ import type { ConsoleLogger } from '../utils/ConsoleLogger.js';
5
+ import type { Entity } from './Entity.js';
6
+ /**
7
+ * Everything a single shadow-object was given at construction time, and the end of all of it.
8
+ *
9
+ * The scope holds the signals, links and subscriptions the creation API hands out, and it hands the API
10
+ * itself to the kernel through `createAPI()`. The instance stays with the kernel: a shadow-object only ever
11
+ * sees the API object, never the scope behind it.
12
+ *
13
+ * One scope belongs to exactly one shadow-object, and it ends with it -- or, where the constructor throws,
14
+ * without it: a scope that never reached `bindTo()` is torn down by the kernel on the spot, and everything the
15
+ * constructor registered before the throw is released, although no shadow-object came out of it.
16
+ *
17
+ * Eight methods share their name with a module-level import: `on`, `once`, `emit`, `onDestroy`,
18
+ * `onViewEvent`, `createSignal`, `createEffect` and `createMemo`. They are named that way deliberately,
19
+ * because those names are part of the `ShadowObjectCreationAPI` contract a shadow-object destructures by
20
+ * name. Seven of them call or reference their namesake inside their own body; `onDestroy` is the exception,
21
+ * as its import is the entity event that `bindTo()` subscribes to. A bare name inside one of these eight
22
+ * bodies is therefore always the import, and a call on the method of the same name always carries `this.`
23
+ * -- `inertSignal`, `inertEffect` and `noSubscription` are bare names of a different kind, module-level
24
+ * functions with no method of the same name to tell them apart from.
25
+ */
26
+ export declare class ShadowObjectCreationScope {
27
+ #private;
28
+ /**
29
+ * The name the kernel gave this scope, taken from the constructor it belongs to rather than from
30
+ * the shadow-object that came out of it. The two agree for most forms -- a class and a function
31
+ * that returns nothing both leave their own name on the instance's `constructor` -- but not for a
32
+ * function that returns an object literal: `new` hands that literal back, and it reports `Object`.
33
+ * Reports about the shadow-object are keyed by this name, so the kernel reads it here instead of
34
+ * asking the instance.
35
+ */
36
+ get displayName(): string;
37
+ constructor(entity: Entity, logger: ConsoleLogger, displayName: string, shownDeprecations: Set<string>);
38
+ /**
39
+ * The object that goes into `new construct(…)`.
40
+ *
41
+ * Every member is a bound function, because a shadow-object constructor is expected to destructure the
42
+ * API in its parameter list — a member that took its receiver from the call site would lose it there.
43
+ */
44
+ createAPI(): ShadowObjectCreationAPI;
45
+ /**
46
+ * Binds the scope to the shadow-object it made the API for and subscribes to the destruction of the entity.
47
+ *
48
+ * A shadow-object reaches its end on two independent paths: the entity is destroyed, or the shadow-object
49
+ * leaves the constructor set of a still living entity (token or route change). Both run the same teardown,
50
+ * and each path reaches it through a handle of its own.
51
+ *
52
+ * The kernel keeps two releases rather than one, because they belong to opposite ends of the teardown:
53
+ * `releaseScope` runs at its start, `forgetShadowObject` at its end.
54
+ *
55
+ * One scope serves one shadow-object, once: the call is part of the contract, and both ways of breaking
56
+ * it are refused below.
57
+ */
58
+ bindTo(shadowObject: ShadowObjectType, releaseScope: () => void, forgetShadowObject: () => void): void;
59
+ /**
60
+ * Runs once, whichever path reaches it first.
61
+ *
62
+ * Three lead here. Two belong to a shadow-object that lived: its entity is destroyed, or it leaves the
63
+ * constructor set of an entity that stays. On the third, the kernel calls this directly on a scope that
64
+ * `bindTo()` never saw, because the constructor threw -- there is no shadow-object then, and three of the
65
+ * handles below are still unset (`#releaseScope` and `#unsubscribeFromEntityDestroy` at the start,
66
+ * `#forgetShadowObject` at the end), which is why all three are called optionally.
67
+ *
68
+ * The provider feeds are released after everything else, so that a write made on the way out reaches the
69
+ * entity-side signal rather than stopping at the provider, and so that the entity hands the context over to
70
+ * a provider that stays only once that write is through.
71
+ *
72
+ * The flag makes the teardown a one-time act: a destroy callback reaching back into the kernel finds no
73
+ * way to start it a second time. Releasing both handles right after ends the retention in both directions
74
+ * -- the kernel's map points from the shadow-object to this scope, the subscription points from the entity
75
+ * to the same scope.
76
+ *
77
+ * The kernel is told to forget the shadow-object at the very end, so a destroy callback that reaches back
78
+ * into the kernel still finds its shadow-object listed among the ones the constructor created. Once that
79
+ * call is through, the four handles above are let go of as well -- the shadow-object, both kernel releases
80
+ * and the entity subscription -- so a scope past this point holds none of the four through these fields.
81
+ *
82
+ * Every step below runs behind its own guard, so a callback or signal teardown that throws does not stop
83
+ * the ones after it: the remaining callbacks, the remaining signal releases, and the provider feed
84
+ * hand-over all still happen. A caught error goes to the logger by displayName and the label of the step
85
+ * that failed, and is not re-thrown -- neither `changeToken()` nor `destroyEntity()` deliver it to their
86
+ * caller, nor does it stop the destroy notification the entity is still delivering to whatever comes after
87
+ * this shadow-object in the same run.
88
+ *
89
+ * The creation API is closed as the very last step, after everything above has run. Until then it
90
+ * is open, because the cleanup callbacks of the shadow-object run inside this method and are
91
+ * entitled to it -- a last message to the view, a last write to a context. What such a callback
92
+ * registers is still reached by the steps behind it. The two sets of cleanup callbacks are run
93
+ * in rounds until neither has anything left, so a callback that another one registers is reached
94
+ * whichever of the two it lands in. The context feed releases follow all of them. What arrives
95
+ * once this method has returned is not, and is turned away by `#refuseAfterTearDown()`.
96
+ */
97
+ tearDown(): void;
98
+ useProperty<T = unknown>(name: string, options?: SignalValueOptions<T> | CompareFunc<T | undefined>): SignalReader<Maybe<T>>;
99
+ useProperties<T extends Record<string, unknown> = Record<string, unknown>>(props: {
100
+ [K in keyof T]: string;
101
+ }): {
102
+ [K in keyof T]: SignalReader<Maybe<T[K]>>;
103
+ };
104
+ provideContext<T = unknown>(name: string | symbol, sourceOrInitialValue?: T | SignalReader<T> | SignalReader<T | undefined>, options?: ProvideContextOptions<T> | CompareFunc<T | undefined>): Signal<any>;
105
+ provideGlobalContext<T = unknown>(name: string | symbol, sourceOrInitialValue?: T | SignalReader<T> | SignalReader<T | undefined>, options?: ProvideContextOptions<T> | CompareFunc<T | undefined>): Signal<any>;
106
+ useContext<T = unknown>(name: string | symbol, options?: SignalValueOptions<T> | CompareFunc<T | undefined>): SignalReader<any>;
107
+ useParentContext<T = unknown>(name: string | symbol, options?: SignalValueOptions<T> | CompareFunc<T | undefined>): SignalReader<any>;
108
+ createSignal(...args: any[]): any;
109
+ createEffect(...args: any[]): ReturnType<typeof createEffect>;
110
+ createMemo<T = unknown>(...args: Parameters<typeof createMemo<T>>): SignalReader<T>;
111
+ createResource<T = unknown>(factory: () => T | undefined, cleanup?: (resource: NonNullable<T>) => unknown): Signal<Maybe<T>>;
112
+ on(...args: any[]): ReturnType<typeof on>;
113
+ once(...args: any[]): ReturnType<typeof once>;
114
+ /**
115
+ * The plain `emit()`, deliberately, where every notification the framework sends out of its own
116
+ * accord runs on the guarded dispatch. This one is outbound and belongs to the Shadow Object: it
117
+ * owns the listeners, a throw from one of them is its own bug, and letting it surface where it
118
+ * happened is the fastest way to find it. A listener that needs a policy of its own carries a
119
+ * `try`/`catch` in its own body, which is where that decision belongs.
120
+ */
121
+ emit(...args: any[]): void;
122
+ onViewEvent(callback: (type: string, data: unknown) => any): void;
123
+ onDestroy(callback: () => any): void;
124
+ dispatchMessageToView(type: string, data?: unknown, transferables?: Transferable[], traverseChildren?: boolean): void;
125
+ }
126
+ //# sourceMappingURL=ShadowObjectCreationScope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShadowObjectCreationScope.d.ts","sourceRoot":"","sources":["../../../src/in-the-dark/ShadowObjectCreationScope.ts"],"names":[],"mappings":"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"}