@raphy-js/raph 1.0.0-dev.18

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 (186) hide show
  1. package/LICENSE +202 -0
  2. package/dist/api/Raph.d.ts +97 -0
  3. package/dist/api/RaphFacadeSession.d.ts +90 -0
  4. package/dist/api/RaphReactivityInstance.d.ts +72 -0
  5. package/dist/api/errors.d.ts +25 -0
  6. package/dist/api/types.d.ts +170 -0
  7. package/dist/core-CyilRD7s.js +1055 -0
  8. package/dist/core-ugchZNqC.cjs +1 -0
  9. package/dist/debug/api/Raph.cjs +1 -0
  10. package/dist/debug/api/Raph.js +421 -0
  11. package/dist/debug/api/RaphFacadeSession.cjs +1 -0
  12. package/dist/debug/api/RaphFacadeSession.js +306 -0
  13. package/dist/debug/api/RaphReactivityInstance.cjs +1 -0
  14. package/dist/debug/api/RaphReactivityInstance.js +149 -0
  15. package/dist/debug/api/errors.cjs +1 -0
  16. package/dist/debug/api/errors.js +17 -0
  17. package/dist/debug/api/types.cjs +1 -0
  18. package/dist/debug/api/types.js +1 -0
  19. package/dist/debug/path/DataPath.cjs +1 -0
  20. package/dist/debug/path/DataPath.js +394 -0
  21. package/dist/debug/path/PathRouter.cjs +1 -0
  22. package/dist/debug/path/PathRouter.js +86 -0
  23. package/dist/debug/path/RaphKernel.cjs +1 -0
  24. package/dist/debug/path/RaphKernel.js +687 -0
  25. package/dist/debug/path/data-path.types.cjs +1 -0
  26. package/dist/debug/path/data-path.types.js +1 -0
  27. package/dist/debug/path/data-path.utils.cjs +1 -0
  28. package/dist/debug/path/data-path.utils.js +56 -0
  29. package/dist/debug/path/derived/DerivedRegistry.cjs +1 -0
  30. package/dist/debug/path/derived/DerivedRegistry.js +157 -0
  31. package/dist/debug/path/derived/RaphDerivedHandle.cjs +1 -0
  32. package/dist/debug/path/derived/RaphDerivedHandle.js +125 -0
  33. package/dist/debug/path/derived/derived-collection.types.cjs +1 -0
  34. package/dist/debug/path/derived/derived-collection.types.js +1 -0
  35. package/dist/debug/path/derived/derived-collection.utils.cjs +1 -0
  36. package/dist/debug/path/derived/derived-collection.utils.js +179 -0
  37. package/dist/debug/path/derived/derived-strategy.types.cjs +1 -0
  38. package/dist/debug/path/derived/derived-strategy.types.js +1 -0
  39. package/dist/debug/path/derived/derived-strategy.utils.cjs +1 -0
  40. package/dist/debug/path/derived/derived-strategy.utils.js +20 -0
  41. package/dist/debug/path/meta/MetaController.cjs +1 -0
  42. package/dist/debug/path/meta/MetaController.js +214 -0
  43. package/dist/debug/path/meta/RaphMeta.cjs +1 -0
  44. package/dist/debug/path/meta/RaphMeta.js +68 -0
  45. package/dist/debug/path/meta/RaphMetaStore.cjs +1 -0
  46. package/dist/debug/path/meta/RaphMetaStore.js +184 -0
  47. package/dist/debug/path/meta/meta.types.cjs +1 -0
  48. package/dist/debug/path/meta/meta.types.js +1 -0
  49. package/dist/debug/path/path.types.cjs +1 -0
  50. package/dist/debug/path/path.types.js +1 -0
  51. package/dist/debug/path/pathSegmentKey.cjs +1 -0
  52. package/dist/debug/path/pathSegmentKey.js +12 -0
  53. package/dist/debug/path/storage/AdapterPathStore.cjs +1 -0
  54. package/dist/debug/path/storage/AdapterPathStore.js +133 -0
  55. package/dist/debug/path/storage/DefaultDataAdapter.cjs +1 -0
  56. package/dist/debug/path/storage/DefaultDataAdapter.js +356 -0
  57. package/dist/debug/path/storage/PathEventHub.cjs +1 -0
  58. package/dist/debug/path/storage/PathEventHub.js +148 -0
  59. package/dist/debug/path/storage/PathStore.cjs +1 -0
  60. package/dist/debug/path/storage/PathStore.js +326 -0
  61. package/dist/debug/path/storage/createDataDraft.cjs +1 -0
  62. package/dist/debug/path/storage/createDataDraft.js +71 -0
  63. package/dist/debug/path/storage/data-adapter.types.cjs +1 -0
  64. package/dist/debug/path/storage/data-adapter.types.js +1 -0
  65. package/dist/debug/reactivity/engine.cjs +1 -0
  66. package/dist/debug/reactivity/engine.js +1305 -0
  67. package/dist/debug/reactivity/reactive-object.cjs +1 -0
  68. package/dist/debug/reactivity/reactive-object.js +280 -0
  69. package/dist/debug/reactivity/scope.cjs +1 -0
  70. package/dist/debug/reactivity/scope.js +274 -0
  71. package/dist/debug/reactivity/types.cjs +1 -0
  72. package/dist/debug/reactivity/types.js +1 -0
  73. package/dist/debug/reactivity/watch.cjs +1 -0
  74. package/dist/debug/reactivity/watch.js +64 -0
  75. package/dist/debug/runtime/RaphRuntime.cjs +1 -0
  76. package/dist/debug/runtime/RaphRuntime.js +979 -0
  77. package/dist/debug/runtime/diagnostics/RaphDebug.cjs +1 -0
  78. package/dist/debug/runtime/diagnostics/RaphDebug.js +297 -0
  79. package/dist/debug/runtime/errors.cjs +1 -0
  80. package/dist/debug/runtime/errors.js +15 -0
  81. package/dist/debug/runtime/ownership/RaphEffectScope.cjs +1 -0
  82. package/dist/debug/runtime/ownership/RaphEffectScope.js +171 -0
  83. package/dist/debug/runtime/ownership/RaphNode.cjs +1 -0
  84. package/dist/debug/runtime/ownership/RaphNode.js +206 -0
  85. package/dist/debug/runtime/ownership/RaphScope.cjs +1 -0
  86. package/dist/debug/runtime/ownership/RaphScope.js +101 -0
  87. package/dist/debug/runtime/ownership/parent-graph.types.cjs +1 -0
  88. package/dist/debug/runtime/ownership/parent-graph.types.js +1 -0
  89. package/dist/debug/runtime/ownership/parentGraph.cjs +1 -0
  90. package/dist/debug/runtime/ownership/parentGraph.js +10 -0
  91. package/dist/debug/runtime/ownership/throwDisposalErrors.cjs +1 -0
  92. package/dist/debug/runtime/ownership/throwDisposalErrors.js +9 -0
  93. package/dist/debug/runtime/phases/RaphFrameLoop.cjs +1 -0
  94. package/dist/debug/runtime/phases/RaphFrameLoop.js +106 -0
  95. package/dist/debug/runtime/phases/RaphPhasePipeline.cjs +1 -0
  96. package/dist/debug/runtime/phases/RaphPhasePipeline.js +587 -0
  97. package/dist/debug/runtime/phases/orderPhaseTasks.cjs +1 -0
  98. package/dist/debug/runtime/phases/orderPhaseTasks.js +59 -0
  99. package/dist/debug/runtime/phases/phase.types.cjs +1 -0
  100. package/dist/debug/runtime/phases/phase.types.js +8 -0
  101. package/dist/debug/runtime/reactivity/PathHandle.cjs +1 -0
  102. package/dist/debug/runtime/reactivity/PathHandle.js +175 -0
  103. package/dist/debug/runtime/reactivity/RaphMetaSource.cjs +1 -0
  104. package/dist/debug/runtime/reactivity/RaphMetaSource.js +112 -0
  105. package/dist/debug/runtime/reactivity/RaphWorkGraph.cjs +1 -0
  106. package/dist/debug/runtime/reactivity/RaphWorkGraph.js +995 -0
  107. package/dist/debug/runtime/reactivity/RuntimeReactivity.cjs +1 -0
  108. package/dist/debug/runtime/reactivity/RuntimeReactivity.js +156 -0
  109. package/dist/debug/runtime/reactivity/RuntimeWatch.cjs +1 -0
  110. package/dist/debug/runtime/reactivity/RuntimeWatch.js +88 -0
  111. package/dist/debug/runtime/reactivity/runtime-reactivity.types.cjs +1 -0
  112. package/dist/debug/runtime/reactivity/runtime-reactivity.types.js +1 -0
  113. package/dist/entrypoints/machine-testing.d.ts +2 -0
  114. package/dist/entrypoints/machine.d.ts +5 -0
  115. package/dist/entrypoints/path.d.ts +14 -0
  116. package/dist/entrypoints/reactivity.d.ts +1 -0
  117. package/dist/entrypoints/runtime.d.ts +17 -0
  118. package/dist/index.cjs +1 -0
  119. package/dist/index.js +48 -0
  120. package/dist/machine/compiler.d.ts +71 -0
  121. package/dist/machine/core.d.ts +50 -0
  122. package/dist/machine/persistence.d.ts +5 -0
  123. package/dist/machine/runtime.d.ts +4 -0
  124. package/dist/machine/testing.d.ts +43 -0
  125. package/dist/machine/types.d.ts +155 -0
  126. package/dist/machine-testing.cjs +1 -0
  127. package/dist/machine-testing.js +188 -0
  128. package/dist/machine.cjs +1 -0
  129. package/dist/machine.js +837 -0
  130. package/dist/main.d.ts +20 -0
  131. package/dist/path/DataPath.d.ts +73 -0
  132. package/dist/path/PathRouter.d.ts +21 -0
  133. package/dist/path/RaphKernel.d.ts +169 -0
  134. package/dist/path/data-path.types.d.ts +34 -0
  135. package/dist/path/data-path.utils.d.ts +9 -0
  136. package/dist/path/derived/DerivedRegistry.d.ts +67 -0
  137. package/dist/path/derived/RaphDerivedHandle.d.ts +97 -0
  138. package/dist/path/derived/derived-collection.types.d.ts +12 -0
  139. package/dist/path/derived/derived-collection.utils.d.ts +20 -0
  140. package/dist/path/derived/derived-strategy.types.d.ts +12 -0
  141. package/dist/path/derived/derived-strategy.utils.d.ts +4 -0
  142. package/dist/path/meta/MetaController.d.ts +85 -0
  143. package/dist/path/meta/RaphMeta.d.ts +45 -0
  144. package/dist/path/meta/RaphMetaStore.d.ts +45 -0
  145. package/dist/path/meta/meta.types.d.ts +31 -0
  146. package/dist/path/path.types.d.ts +27 -0
  147. package/dist/path/pathSegmentKey.d.ts +2 -0
  148. package/dist/path/storage/AdapterPathStore.d.ts +45 -0
  149. package/dist/path/storage/DefaultDataAdapter.d.ts +63 -0
  150. package/dist/path/storage/PathEventHub.d.ts +48 -0
  151. package/dist/path/storage/PathStore.d.ts +51 -0
  152. package/dist/path/storage/createDataDraft.d.ts +4 -0
  153. package/dist/path/storage/data-adapter.types.d.ts +17 -0
  154. package/dist/path.cjs +1 -0
  155. package/dist/path.js +18 -0
  156. package/dist/raph.cjs +1 -0
  157. package/dist/raph.js +48 -0
  158. package/dist/reactivity/engine.d.ts +393 -0
  159. package/dist/reactivity/reactive-object.d.ts +36 -0
  160. package/dist/reactivity/scope.d.ts +146 -0
  161. package/dist/reactivity/types.d.ts +175 -0
  162. package/dist/reactivity/watch.d.ts +15 -0
  163. package/dist/reactivity.cjs +1 -0
  164. package/dist/reactivity.js +14 -0
  165. package/dist/runtime/RaphRuntime.d.ts +225 -0
  166. package/dist/runtime/diagnostics/RaphDebug.d.ts +239 -0
  167. package/dist/runtime/errors.d.ts +21 -0
  168. package/dist/runtime/ownership/RaphEffectScope.d.ts +29 -0
  169. package/dist/runtime/ownership/RaphNode.d.ts +40 -0
  170. package/dist/runtime/ownership/RaphScope.d.ts +38 -0
  171. package/dist/runtime/ownership/parent-graph.types.d.ts +4 -0
  172. package/dist/runtime/ownership/parentGraph.d.ts +3 -0
  173. package/dist/runtime/ownership/throwDisposalErrors.d.ts +1 -0
  174. package/dist/runtime/phases/RaphFrameLoop.d.ts +51 -0
  175. package/dist/runtime/phases/RaphPhasePipeline.d.ts +79 -0
  176. package/dist/runtime/phases/orderPhaseTasks.d.ts +6 -0
  177. package/dist/runtime/phases/phase.types.d.ts +92 -0
  178. package/dist/runtime/reactivity/PathHandle.d.ts +80 -0
  179. package/dist/runtime/reactivity/RaphMetaSource.d.ts +32 -0
  180. package/dist/runtime/reactivity/RaphWorkGraph.d.ts +171 -0
  181. package/dist/runtime/reactivity/RuntimeReactivity.d.ts +45 -0
  182. package/dist/runtime/reactivity/RuntimeWatch.d.ts +34 -0
  183. package/dist/runtime/reactivity/runtime-reactivity.types.d.ts +11 -0
  184. package/dist/runtime.cjs +1 -0
  185. package/dist/runtime.js +23 -0
  186. package/package.json +141 -0
@@ -0,0 +1,214 @@
1
+ var v = Object.defineProperty;
2
+ var p = (d, e, t) => e in d ? v(d, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : d[e] = t;
3
+ var l = (d, e, t) => p(d, typeof e != "symbol" ? e + "" : e, t);
4
+ import { DataPath as f } from "../DataPath.js";
5
+ import { PathRouter as g } from "../PathRouter.js";
6
+ import { RaphMeta as m } from "./RaphMeta.js";
7
+ import { RaphMetaStore as _ } from "./RaphMetaStore.js";
8
+ class k {
9
+ /**
10
+ * Создаёт lifecycle-контроллер metadata для одного Kernel.
11
+ */
12
+ constructor(e, t, r) {
13
+ // Лениво создают metadata facade, storage и routing только при первом использовании.
14
+ l(this, "_facade");
15
+ l(this, "_store");
16
+ l(this, "_router");
17
+ l(this, "_pending");
18
+ // Управляют reentrant publication и режимами активных watchers.
19
+ l(this, "_publishing", !1);
20
+ l(this, "_watcherCount", 0);
21
+ l(this, "_deferredWatcherCount", 0);
22
+ this._kernel = e, this._ownerExists = t, this._publicationDeferred = r;
23
+ }
24
+ /**
25
+ * Возвращает metadata facade, принадлежащий контроллеру.
26
+ */
27
+ get facade() {
28
+ return this._facade ?? (this._facade = new m(this._kernel));
29
+ }
30
+ /**
31
+ * Возвращает число зарегистрированных записей.
32
+ */
33
+ get size() {
34
+ var e;
35
+ return ((e = this._store) == null ? void 0 : e.size) ?? 0;
36
+ }
37
+ /**
38
+ * Показывает, есть ли активные синхронные metadata/path watchers.
39
+ */
40
+ get hasWatchers() {
41
+ return this._router !== void 0;
42
+ }
43
+ /**
44
+ * Показывает, есть ли watchers с отложенной публикацией.
45
+ */
46
+ get hasDeferredWatchers() {
47
+ return this._deferredWatcherCount !== 0;
48
+ }
49
+ /**
50
+ * Возвращает значение по пути без создания отсутствующих данных.
51
+ */
52
+ get(e, t) {
53
+ var r;
54
+ return (r = this._store) == null ? void 0 : r.get(e, t);
55
+ }
56
+ /**
57
+ * Проверяет наличие значения по указанному пути.
58
+ */
59
+ has(e, t) {
60
+ var r;
61
+ return ((r = this._store) == null ? void 0 : r.has(e, t)) ?? !1;
62
+ }
63
+ /**
64
+ * Записывает значение и публикует соответствующее изменение.
65
+ */
66
+ set(e, t, r, i) {
67
+ (this._store ?? (this._store = new _())).set(e, t, r), this.record("set", e, t, "explicit", i);
68
+ }
69
+ /**
70
+ * Объединяет значение по пути и публикует соответствующее изменение.
71
+ */
72
+ merge(e, t, r, i) {
73
+ (this._store ?? (this._store = new _())).merge(e, t, r), this.record("merge", e, t, "explicit", i);
74
+ }
75
+ /**
76
+ * Удаляет значение по пути и публикует изменение при наличии данных.
77
+ */
78
+ delete(e, t, r) {
79
+ var i;
80
+ return (i = this._store) != null && i.delete(e, t) ? (this.record("delete", e, t ?? null, "explicit", r), !0) : !1;
81
+ }
82
+ /**
83
+ * Удаляет metadata всего поддерева указанного data-owner.
84
+ */
85
+ deleteSubtree(e, t) {
86
+ const r = this._store;
87
+ if (r !== void 0)
88
+ for (const i of r.deleteSubtree(e))
89
+ this.record("delete", i, null, t);
90
+ }
91
+ /**
92
+ * Удаляет metadata, владельцы которой отсутствуют в data tree.
93
+ */
94
+ pruneMissing(e, t) {
95
+ const r = this._store;
96
+ if (r === void 0 || r.size === 0)
97
+ return;
98
+ const o = e.segments().findIndex(
99
+ (s) => s.kind === "index" || s.kind === "selector"
100
+ ), c = o === -1 ? e : f.fromPlain({ segs: e.toPlain().segs.slice(0, o) });
101
+ for (const s of r.pruneMissing(
102
+ c,
103
+ (n) => this._ownerExists(n)
104
+ ))
105
+ this.record("delete", s, null, t);
106
+ }
107
+ /**
108
+ * Подписывает callback на подходящие изменения и возвращает disposer.
109
+ */
110
+ watch(e, t, r = {}, i) {
111
+ const o = Array.isArray(e) ? e : [e];
112
+ if (o.length === 0)
113
+ throw new TypeError("[RaphMeta] watch requires at least one mask.");
114
+ const c = /* @__PURE__ */ new Map();
115
+ for (const a of o) {
116
+ const u = f.from(a, r)._asMask();
117
+ c.set(u.canonical, u);
118
+ }
119
+ const s = {
120
+ active: !0,
121
+ callback: t,
122
+ afterPublish: i,
123
+ ...r.namespace === void 0 ? {} : { namespace: r.namespace }
124
+ }, n = this._router ?? (this._router = new g()), h = [...c.values()].map((a) => n.add(a, s));
125
+ return this._watcherCount++, i !== void 0 && this._deferredWatcherCount++, w(() => {
126
+ s.active = !1, s.callback = void 0, s.afterPublish = void 0;
127
+ for (const a of h)
128
+ a();
129
+ this._watcherCount--, i !== void 0 && this._deferredWatcherCount--, this._watcherCount === 0 && (this._router = void 0);
130
+ });
131
+ }
132
+ /**
133
+ * Добавляет событие в текущую batch либо публикует его сразу.
134
+ */
135
+ record(e, t, r, i, o) {
136
+ (this._pending ?? (this._pending = [])).push({
137
+ event: { kind: e, path: t, namespace: r, cause: i },
138
+ invalidate: (o == null ? void 0 : o.invalidate) ?? !0
139
+ }), !this._publicationDeferred() && !this._publishing && this.publish();
140
+ }
141
+ /**
142
+ * Публикует накопленные metadata-события с учётом watcher mode.
143
+ */
144
+ publish() {
145
+ const e = this._pending;
146
+ if (e === void 0 || e.length === 0 || this._publishing)
147
+ return;
148
+ const t = [], r = /* @__PURE__ */ new Map();
149
+ this._publishing = !0;
150
+ try {
151
+ for (; e.length !== 0; ) {
152
+ const i = e.splice(0), o = this._router;
153
+ if (o === void 0)
154
+ continue;
155
+ const c = /* @__PURE__ */ new Map();
156
+ for (const s of i) {
157
+ const n = s.event;
158
+ for (const h of o.match(n.path._asExact().segments)) {
159
+ if (h.namespace !== void 0 && n.namespace !== null && h.namespace !== n.namespace)
160
+ continue;
161
+ const a = c.get(h);
162
+ a === void 0 ? c.set(h, {
163
+ events: [n],
164
+ invalidate: s.invalidate
165
+ }) : (a.events.push(n), s.invalidate && (a.invalidate = !0));
166
+ }
167
+ }
168
+ for (const [s, n] of c) {
169
+ if (!s.active || s.callback === void 0)
170
+ continue;
171
+ const h = s.afterPublish;
172
+ h !== void 0 && r.set(
173
+ h,
174
+ (r.get(h) ?? !1) || n.invalidate
175
+ );
176
+ try {
177
+ s.callback({ events: n.events });
178
+ } catch (a) {
179
+ t.push(a);
180
+ }
181
+ }
182
+ }
183
+ } finally {
184
+ this._publishing = !1;
185
+ }
186
+ for (const [i, o] of r)
187
+ try {
188
+ i(o);
189
+ } catch (c) {
190
+ t.push(c);
191
+ }
192
+ if (t.length === 1)
193
+ throw t[0];
194
+ if (t.length > 1)
195
+ throw new AggregateError(t, "[RaphMeta] Multiple watchers failed.");
196
+ }
197
+ /**
198
+ * Очищает metadata storage, subscriptions и pending publication state.
199
+ */
200
+ dispose() {
201
+ var e;
202
+ (e = this._store) == null || e.clear(), this._store = void 0, this._facade = void 0, this._router = void 0, this._pending = void 0, this._watcherCount = 0, this._deferredWatcherCount = 0;
203
+ }
204
+ }
205
+ function w(d) {
206
+ let e = d;
207
+ return () => {
208
+ const t = e;
209
+ e = void 0, t == null || t();
210
+ };
211
+ }
212
+ export {
213
+ k as MetaController
214
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class s{constructor(r,a={}){this._kernel=r,this._binding=a}get(r,a,t){var e,i;return(i=(e=this._binding).assertReadable)==null||i.call(e),this._kernel.getMeta(r,a,t)}has(r,a,t){var e,i;return(i=(e=this._binding).assertReadable)==null||i.call(e),this._kernel.hasMeta(r,a,t)}set(r,a,t,e){var i,h;(h=(i=this._binding).assertWritable)==null||h.call(i),this._write(()=>this._kernel.setMeta(r,a,t,e),(e==null?void 0:e.invalidate)??!0)}merge(r,a,t,e){var i,h;(h=(i=this._binding).assertWritable)==null||h.call(i),this._write(()=>this._kernel.mergeMeta(r,a,t,e),(e==null?void 0:e.invalidate)??!0)}delete(r,a,t){var e,i;(i=(e=this._binding).assertWritable)==null||i.call(e),this._write(()=>this._kernel.deleteMeta(r,a,t),(t==null?void 0:t.invalidate)??!0)}watch(r,a,t={}){var e,i;if((i=(e=this._binding).assertReadable)==null||i.call(e),this._binding.watch===void 0)throw new Error("[RaphMeta] watch requires a runtime-bound Meta facade.");return this._binding.watch(r,a,t)}_write(r,a){const t=this._binding.runWrite;t===void 0?r():t(r,a)}}exports.RaphMeta=s;
@@ -0,0 +1,68 @@
1
+ class n {
2
+ /**
3
+ * Создаёт metadata facade поверх указанного Kernel.
4
+ */
5
+ constructor(r, a = {}) {
6
+ this._kernel = r, this._binding = a;
7
+ }
8
+ /**
9
+ * Возвращает значение по пути без создания отсутствующих данных.
10
+ */
11
+ get(r, a, t) {
12
+ var e, i;
13
+ return (i = (e = this._binding).assertReadable) == null || i.call(e), this._kernel.getMeta(r, a, t);
14
+ }
15
+ /**
16
+ * Проверяет наличие значения по указанному пути.
17
+ */
18
+ has(r, a, t) {
19
+ var e, i;
20
+ return (i = (e = this._binding).assertReadable) == null || i.call(e), this._kernel.hasMeta(r, a, t);
21
+ }
22
+ /**
23
+ * Записывает значение и публикует соответствующее изменение.
24
+ */
25
+ set(r, a, t, e) {
26
+ var i, h;
27
+ (h = (i = this._binding).assertWritable) == null || h.call(i), this._write(
28
+ () => this._kernel.setMeta(r, a, t, e),
29
+ (e == null ? void 0 : e.invalidate) ?? !0
30
+ );
31
+ }
32
+ /**
33
+ * Объединяет значение по пути и публикует соответствующее изменение.
34
+ */
35
+ merge(r, a, t, e) {
36
+ var i, h;
37
+ (h = (i = this._binding).assertWritable) == null || h.call(i), this._write(
38
+ () => this._kernel.mergeMeta(r, a, t, e),
39
+ (e == null ? void 0 : e.invalidate) ?? !0
40
+ );
41
+ }
42
+ /**
43
+ * Удаляет значение по пути и публикует изменение при наличии данных.
44
+ */
45
+ delete(r, a, t) {
46
+ var e, i;
47
+ (i = (e = this._binding).assertWritable) == null || i.call(e), this._write(
48
+ () => this._kernel.deleteMeta(r, a, t),
49
+ (t == null ? void 0 : t.invalidate) ?? !0
50
+ );
51
+ }
52
+ /**
53
+ * Подписывает callback на metadata-изменения и возвращает disposer.
54
+ */
55
+ watch(r, a, t = {}) {
56
+ var e, i;
57
+ if ((i = (e = this._binding).assertReadable) == null || i.call(e), this._binding.watch === void 0)
58
+ throw new Error("[RaphMeta] watch requires a runtime-bound Meta facade.");
59
+ return this._binding.watch(r, a, t);
60
+ }
61
+ _write(r, a) {
62
+ const t = this._binding.runWrite;
63
+ t === void 0 ? r() : t(r, a);
64
+ }
65
+ }
66
+ export {
67
+ n as RaphMeta
68
+ };
@@ -0,0 +1 @@
1
+ "use strict";var p=Object.defineProperty;var _=(n,e,t)=>e in n?p(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var a=(n,e,t)=>_(n,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("../pathSegmentKey.cjs");function d(){return{children:new Map,namespaces:new Map,path:void 0}}class g{constructor(){a(this,"_root",d());a(this,"size",0)}get(e,t){const r=this._find(e);if(r!==void 0)return t===void 0?Object.fromEntries(r.namespaces):r.namespaces.get(t)}has(e,t){const r=this._find(e);return r===void 0?!1:t===void 0?r.namespaces.size!==0:r.namespaces.has(t)}set(e,t,r){const s=this._ensure(e);s.namespaces.has(t)||this.size++,s.namespaces.set(t,r),s.path=e}merge(e,t,r){const s=this.get(e,t);if(l(s)&&l(r)){for(const i of Object.keys(r))y(s,i,r[i]);return}this.set(e,t,r)}delete(e,t){var i;const r=this._findStack(e),s=(i=r.at(-1))==null?void 0:i.node;if(s===void 0)return!1;if(t===void 0){if(s.namespaces.size===0)return!1;this.size-=s.namespaces.size,s.namespaces.clear()}else{if(!s.namespaces.delete(t))return!1;this.size--}return this._pruneEmpty(r),!0}deleteSubtree(e){const t=o(e);if(t.length===0)return this.clear();let r=this._root;for(let c=0;c<t.length-1;c++){const u=r.children.get(t[c]);if(u===void 0)return[];r=u}const s=r.children.get(t.at(-1));if(s===void 0)return[];const i=h(s);return this.size-=f(s),r.children.delete(t.at(-1)),i}pruneMissing(e,t){const r=this._find(e);if(r===void 0)return[];const s=[];return this._pruneMissingNode(r,t,s),s}clear(){const e=h(this._root);return this._root.children.clear(),this._root.namespaces.clear(),this._root.path=void 0,this.size=0,e}_find(e){let t=this._root;for(const r of o(e)){const s=t.children.get(r);if(s===void 0)return;t=s}return t}_ensure(e){let t=this._root;for(const r of o(e)){let s=t.children.get(r);s===void 0&&(s=d(),t.children.set(r,s)),t=s}return t}_findStack(e){const t=[{key:void 0,node:this._root}];let r=this._root;for(const s of o(e)){const i=r.children.get(s);if(i===void 0)return[];t.push({key:s,node:i}),r=i}return t}_pruneEmpty(e){for(let t=e.length-1;t>0;t--){const r=e[t];if(r.node.namespaces.size!==0||r.node.children.size!==0)return;e[t-1].node.children.delete(r.key)}}_pruneMissingNode(e,t,r){for(const[s,i]of[...e.children])this._pruneMissingNode(i,t,r)&&e.children.delete(s);return e.path!==void 0&&e.namespaces.size!==0&&!t(e.path)&&(this.size-=e.namespaces.size,e.namespaces.clear(),r.push(e.path)),e!==this._root&&e.namespaces.size===0&&e.children.size===0}}function o(n){return n.segments().map(m.pathSegmentKey)}function h(n){const e=n.path!==void 0&&n.namespaces.size!==0?[n.path]:[];for(const t of n.children.values())e.push(...h(t));return e}function f(n){let e=n.namespaces.size;for(const t of n.children.values())e+=f(t);return e}function l(n){if(typeof n!="object"||n===null||Array.isArray(n))return!1;const e=Object.getPrototypeOf(n);return e===Object.prototype||e===null}function y(n,e,t){if(e!=="__proto__"){n[e]=t;return}Object.defineProperty(n,e,{configurable:!0,enumerable:!0,value:t,writable:!0})}exports.RaphMetaStore=g;
@@ -0,0 +1,184 @@
1
+ var p = Object.defineProperty;
2
+ var _ = (n, e, t) => e in n ? p(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t;
3
+ var h = (n, e, t) => _(n, typeof e != "symbol" ? e + "" : e, t);
4
+ import { pathSegmentKey as m } from "../pathSegmentKey.js";
5
+ function f() {
6
+ return { children: /* @__PURE__ */ new Map(), namespaces: /* @__PURE__ */ new Map(), path: void 0 };
7
+ }
8
+ class v {
9
+ constructor() {
10
+ // Хранят metadata tree и точное число записанных namespaces.
11
+ h(this, "_root", f());
12
+ h(this, "size", 0);
13
+ }
14
+ /**
15
+ * Возвращает значение по пути без создания отсутствующих данных.
16
+ */
17
+ get(e, t) {
18
+ const r = this._find(e);
19
+ if (r !== void 0)
20
+ return t === void 0 ? Object.fromEntries(r.namespaces) : r.namespaces.get(t);
21
+ }
22
+ /**
23
+ * Проверяет наличие значения по указанному пути.
24
+ */
25
+ has(e, t) {
26
+ const r = this._find(e);
27
+ return r === void 0 ? !1 : t === void 0 ? r.namespaces.size !== 0 : r.namespaces.has(t);
28
+ }
29
+ /**
30
+ * Записывает значение namespace в metadata tree.
31
+ */
32
+ set(e, t, r) {
33
+ const s = this._ensure(e);
34
+ s.namespaces.has(t) || this.size++, s.namespaces.set(t, r), s.path = e;
35
+ }
36
+ /**
37
+ * Объединяет object metadata либо заменяет значение namespace.
38
+ */
39
+ merge(e, t, r) {
40
+ const s = this.get(e, t);
41
+ if (l(s) && l(r)) {
42
+ for (const i of Object.keys(r))
43
+ g(s, i, r[i]);
44
+ return;
45
+ }
46
+ this.set(e, t, r);
47
+ }
48
+ /**
49
+ * Удаляет namespace либо все metadata указанного owner.
50
+ */
51
+ delete(e, t) {
52
+ var i;
53
+ const r = this._findStack(e), s = (i = r.at(-1)) == null ? void 0 : i.node;
54
+ if (s === void 0)
55
+ return !1;
56
+ if (t === void 0) {
57
+ if (s.namespaces.size === 0)
58
+ return !1;
59
+ this.size -= s.namespaces.size, s.namespaces.clear();
60
+ } else {
61
+ if (!s.namespaces.delete(t))
62
+ return !1;
63
+ this.size--;
64
+ }
65
+ return this._pruneEmpty(r), !0;
66
+ }
67
+ /**
68
+ * Удаляет metadata всего поддерева указанного data-owner.
69
+ */
70
+ deleteSubtree(e) {
71
+ const t = o(e);
72
+ if (t.length === 0)
73
+ return this.clear();
74
+ let r = this._root;
75
+ for (let c = 0; c < t.length - 1; c++) {
76
+ const d = r.children.get(t[c]);
77
+ if (d === void 0)
78
+ return [];
79
+ r = d;
80
+ }
81
+ const s = r.children.get(t.at(-1));
82
+ if (s === void 0)
83
+ return [];
84
+ const i = a(s);
85
+ return this.size -= u(s), r.children.delete(t.at(-1)), i;
86
+ }
87
+ /**
88
+ * Удаляет metadata, владельцы которой отсутствуют в data tree.
89
+ */
90
+ pruneMissing(e, t) {
91
+ const r = this._find(e);
92
+ if (r === void 0)
93
+ return [];
94
+ const s = [];
95
+ return this._pruneMissingNode(r, t, s), s;
96
+ }
97
+ /**
98
+ * Полностью очищает metadata storage.
99
+ */
100
+ clear() {
101
+ const e = a(this._root);
102
+ return this._root.children.clear(), this._root.namespaces.clear(), this._root.path = void 0, this.size = 0, e;
103
+ }
104
+ _find(e) {
105
+ let t = this._root;
106
+ for (const r of o(e)) {
107
+ const s = t.children.get(r);
108
+ if (s === void 0)
109
+ return;
110
+ t = s;
111
+ }
112
+ return t;
113
+ }
114
+ _ensure(e) {
115
+ let t = this._root;
116
+ for (const r of o(e)) {
117
+ let s = t.children.get(r);
118
+ s === void 0 && (s = f(), t.children.set(r, s)), t = s;
119
+ }
120
+ return t;
121
+ }
122
+ _findStack(e) {
123
+ const t = [
124
+ { key: void 0, node: this._root }
125
+ ];
126
+ let r = this._root;
127
+ for (const s of o(e)) {
128
+ const i = r.children.get(s);
129
+ if (i === void 0)
130
+ return [];
131
+ t.push({ key: s, node: i }), r = i;
132
+ }
133
+ return t;
134
+ }
135
+ _pruneEmpty(e) {
136
+ for (let t = e.length - 1; t > 0; t--) {
137
+ const r = e[t];
138
+ if (r.node.namespaces.size !== 0 || r.node.children.size !== 0)
139
+ return;
140
+ e[t - 1].node.children.delete(r.key);
141
+ }
142
+ }
143
+ _pruneMissingNode(e, t, r) {
144
+ for (const [s, i] of [...e.children])
145
+ this._pruneMissingNode(i, t, r) && e.children.delete(s);
146
+ return e.path !== void 0 && e.namespaces.size !== 0 && !t(e.path) && (this.size -= e.namespaces.size, e.namespaces.clear(), r.push(e.path)), e !== this._root && e.namespaces.size === 0 && e.children.size === 0;
147
+ }
148
+ }
149
+ function o(n) {
150
+ return n.segments().map(m);
151
+ }
152
+ function a(n) {
153
+ const e = n.path !== void 0 && n.namespaces.size !== 0 ? [n.path] : [];
154
+ for (const t of n.children.values())
155
+ e.push(...a(t));
156
+ return e;
157
+ }
158
+ function u(n) {
159
+ let e = n.namespaces.size;
160
+ for (const t of n.children.values())
161
+ e += u(t);
162
+ return e;
163
+ }
164
+ function l(n) {
165
+ if (typeof n != "object" || n === null || Array.isArray(n))
166
+ return !1;
167
+ const e = Object.getPrototypeOf(n);
168
+ return e === Object.prototype || e === null;
169
+ }
170
+ function g(n, e, t) {
171
+ if (e !== "__proto__") {
172
+ n[e] = t;
173
+ return;
174
+ }
175
+ Object.defineProperty(n, e, {
176
+ configurable: !0,
177
+ enumerable: !0,
178
+ value: t,
179
+ writable: !0
180
+ });
181
+ }
182
+ export {
183
+ v as RaphMetaStore
184
+ };
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1 @@
1
+
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1 @@
1
+
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function e(n){return n.kind==="key"?`k${r(n.key)}`:n.kind==="index"?`i:${n.index}`:n.kind==="selector"?`s${r(n.key)}${i(n.value)}`:`w:${n.indexed?"index":"key"}`}function r(n){return`:${n.length}:${n}`}function i(n){return n===null?":null":typeof n=="string"?`:string${r(n)}`:typeof n=="boolean"?n?":boolean:1":":boolean:0":`:number:${Object.is(n,-0)?"-0":String(n)}`}exports.pathSegmentKey=e;
@@ -0,0 +1,12 @@
1
+ function t(n) {
2
+ return n.kind === "key" ? `k${r(n.key)}` : n.kind === "index" ? `i:${n.index}` : n.kind === "selector" ? `s${r(n.key)}${i(n.value)}` : `w:${n.indexed ? "index" : "key"}`;
3
+ }
4
+ function r(n) {
5
+ return `:${n.length}:${n}`;
6
+ }
7
+ function i(n) {
8
+ return n === null ? ":null" : typeof n == "string" ? `:string${r(n)}` : typeof n == "boolean" ? n ? ":boolean:1" : ":boolean:0" : `:number:${Object.is(n, -0) ? "-0" : String(n)}`;
9
+ }
10
+ export {
11
+ t as pathSegmentKey
12
+ };
@@ -0,0 +1 @@
1
+ "use strict";var p=Object.defineProperty;var l=(r,t,e)=>t in r?p(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e;var d=(r,t,e)=>l(r,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../data-path.utils.cjs"),_=require("./PathEventHub.cjs");class b{constructor(t){d(this,"_eventHub",new _.PathEventHub("[Raph] Adapter batch and publication failed."));this._adapter=t}get(t,e){const a=i.parseDataPath(t,e);return this._adapter.get(a.canonical)}peek(t,e){return this.get(t,e)}has(t,e){var n,s;const a=i.parseDataPath(t,e);return((s=(n=this._adapter).has)==null?void 0:s.call(n,a.canonical))??u(this._adapter.root(),a.segments)}set(t,e,a){const n=i.parseDataPath(t,a),s=this._eventHub.hasWatchers?this._adapter.get(n.canonical):void 0;this._adapter.set(n.canonical,e),this._eventHub.record({kind:"set",path:n.canonical,previous:s,value:this._eventHub.hasWatchers?this._adapter.get(n.canonical):void 0})}merge(t,e,a){const n=i.parseDataPath(t,a),s=this._eventHub.hasWatchers?this._adapter.get(n.canonical):void 0,c=o(s)&&o(e)?f(s):s;this._adapter.merge(n.canonical,e),this._eventHub.record({kind:"merge",path:n.canonical,previous:c,value:this._eventHub.hasWatchers?this._adapter.get(n.canonical):void 0})}delete(t,e){var c,h;const a=i.parseDataPath(t,e);if(!(((h=(c=this._adapter).has)==null?void 0:h.call(c,a.canonical))??u(this._adapter.root(),a.segments)))return;const s=this._eventHub.hasWatchers?this._adapter.get(a.canonical):void 0;this._adapter.delete(a.canonical),this._eventHub.record({kind:"delete",path:a.canonical,previous:s,value:void 0})}batch(t){return this._eventHub.batch(t)}watch(t,e){return this._eventHub.watch(t,e)}}function u(r,t){let e=r;for(const a of t)if(a.kind==="key"){if(!v(e)||!Object.hasOwn(e,a.key))return!1;e=e[a.key]}else if(a.kind==="index"){if(!Array.isArray(e)||!Object.hasOwn(e,a.index))return!1;e=e[a.index]}else{if(!Array.isArray(e))return!1;const n=e.findIndex(s=>o(s)&&Object.hasOwn(s,a.key)&&Object.is(s[a.key],a.value));if(n===-1)return!1;e=e[n]}return!0}function f(r){const t=Object.create(Object.getPrototypeOf(r));for(const e of Object.keys(r))e==="__proto__"?Object.defineProperty(t,e,{configurable:!0,enumerable:!0,value:r[e],writable:!0}):t[e]=r[e];return t}function o(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)}function v(r){return Array.isArray(r)||o(r)}exports.AdapterPathStore=b;
@@ -0,0 +1,133 @@
1
+ var p = Object.defineProperty;
2
+ var l = (r, t, e) => t in r ? p(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e;
3
+ var d = (r, t, e) => l(r, typeof t != "symbol" ? t + "" : t, e);
4
+ import { parseDataPath as i } from "../data-path.utils.js";
5
+ import { PathEventHub as _ } from "./PathEventHub.js";
6
+ class k {
7
+ /**
8
+ * Связывает внешний DataAdapter с path events и watchers Kernel.
9
+ */
10
+ constructor(t) {
11
+ // Публикует изменения внешнего adapter через общий path event lifecycle.
12
+ d(this, "_eventHub", new _(
13
+ "[Raph] Adapter batch and publication failed."
14
+ ));
15
+ this._adapter = t;
16
+ }
17
+ /**
18
+ * Возвращает значение по пути без создания отсутствующих данных.
19
+ */
20
+ get(t, e) {
21
+ const a = i(t, e);
22
+ return this._adapter.get(a.canonical);
23
+ }
24
+ /**
25
+ * Читает значение по пути без регистрации реактивной зависимости.
26
+ */
27
+ peek(t, e) {
28
+ return this.get(t, e);
29
+ }
30
+ /**
31
+ * Проверяет наличие значения по указанному пути.
32
+ */
33
+ has(t, e) {
34
+ var n, s;
35
+ const a = i(t, e);
36
+ return ((s = (n = this._adapter).has) == null ? void 0 : s.call(n, a.canonical)) ?? u(this._adapter.root(), a.segments);
37
+ }
38
+ /**
39
+ * Записывает значение и публикует соответствующее изменение.
40
+ */
41
+ set(t, e, a) {
42
+ const n = i(t, a), s = this._eventHub.hasWatchers ? this._adapter.get(n.canonical) : void 0;
43
+ this._adapter.set(n.canonical, e), this._eventHub.record({
44
+ kind: "set",
45
+ path: n.canonical,
46
+ previous: s,
47
+ value: this._eventHub.hasWatchers ? this._adapter.get(n.canonical) : void 0
48
+ });
49
+ }
50
+ /**
51
+ * Объединяет значение по пути и публикует соответствующее изменение.
52
+ */
53
+ merge(t, e, a) {
54
+ const n = i(t, a), s = this._eventHub.hasWatchers ? this._adapter.get(n.canonical) : void 0, c = o(s) && o(e) ? b(s) : s;
55
+ this._adapter.merge(n.canonical, e), this._eventHub.record({
56
+ kind: "merge",
57
+ path: n.canonical,
58
+ previous: c,
59
+ value: this._eventHub.hasWatchers ? this._adapter.get(n.canonical) : void 0
60
+ });
61
+ }
62
+ /**
63
+ * Удаляет значение по пути и публикует изменение при наличии данных.
64
+ */
65
+ delete(t, e) {
66
+ var c, h;
67
+ const a = i(t, e);
68
+ if (!(((h = (c = this._adapter).has) == null ? void 0 : h.call(c, a.canonical)) ?? u(this._adapter.root(), a.segments)))
69
+ return;
70
+ const s = this._eventHub.hasWatchers ? this._adapter.get(a.canonical) : void 0;
71
+ this._adapter.delete(a.canonical), this._eventHub.record({
72
+ kind: "delete",
73
+ path: a.canonical,
74
+ previous: s,
75
+ value: void 0
76
+ });
77
+ }
78
+ /**
79
+ * Выполняет операцию в общей синхронной batch boundary.
80
+ */
81
+ batch(t) {
82
+ return this._eventHub.batch(t);
83
+ }
84
+ /**
85
+ * Подписывает callback на подходящие изменения и возвращает disposer.
86
+ */
87
+ watch(t, e) {
88
+ return this._eventHub.watch(t, e);
89
+ }
90
+ }
91
+ function u(r, t) {
92
+ let e = r;
93
+ for (const a of t)
94
+ if (a.kind === "key") {
95
+ if (!f(e) || !Object.hasOwn(e, a.key))
96
+ return !1;
97
+ e = e[a.key];
98
+ } else if (a.kind === "index") {
99
+ if (!Array.isArray(e) || !Object.hasOwn(e, a.index))
100
+ return !1;
101
+ e = e[a.index];
102
+ } else {
103
+ if (!Array.isArray(e))
104
+ return !1;
105
+ const n = e.findIndex(
106
+ (s) => o(s) && Object.hasOwn(s, a.key) && Object.is(s[a.key], a.value)
107
+ );
108
+ if (n === -1)
109
+ return !1;
110
+ e = e[n];
111
+ }
112
+ return !0;
113
+ }
114
+ function b(r) {
115
+ const t = Object.create(Object.getPrototypeOf(r));
116
+ for (const e of Object.keys(r))
117
+ e === "__proto__" ? Object.defineProperty(t, e, {
118
+ configurable: !0,
119
+ enumerable: !0,
120
+ value: r[e],
121
+ writable: !0
122
+ }) : t[e] = r[e];
123
+ return t;
124
+ }
125
+ function o(r) {
126
+ return typeof r == "object" && r !== null && !Array.isArray(r);
127
+ }
128
+ function f(r) {
129
+ return Array.isArray(r) || o(r);
130
+ }
131
+ export {
132
+ k as AdapterPathStore
133
+ };
@@ -0,0 +1 @@
1
+ "use strict";var j=Object.defineProperty;var S=(o,e,t)=>e in o?j(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var y=(o,e,t)=>S(o,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("../data-path.utils.cjs"),C=require("./createDataDraft.cjs");class g{constructor(e=p(),t={}){y(this,"_root");y(this,"_options");y(this,"_indexes");this._root=x(e),this._options={arrayDelete:t.arrayDelete??"unset",autoCreate:t.autoCreate??!0,indexEnabled:t.indexEnabled??!0,indexStrategy:t.indexStrategy??"eager-all-keys"}}root(){return this._root}fork(){const e=new g({},this._options);return e._root=C.createDataDraft(this._root,t=>{var r;return(r=e._indexes)==null?void 0:r.delete(t)}).root,e}replaceRoot(e){this._root=x(e),this._indexes=void 0}options(e){e.arrayDelete!==void 0&&(this._options.arrayDelete=e.arrayDelete),e.autoCreate!==void 0&&(this._options.autoCreate=e.autoCreate),e.indexEnabled!==void 0&&(this._options.indexEnabled=e.indexEnabled),e.indexStrategy!==void 0&&(this._options.indexStrategy=e.indexStrategy),this._indexes=void 0}get(e,t){return this._read(h.parseDataPath(e,t)).value}has(e,t){return this._read(h.parseDataPath(e,t)).exists}set(e,t,r){const i=h.parseDataPath(e,r);if(i.segments.length===0){this.replaceRoot(x(t));return}let s=this._root,n;for(let a=0;a<i.segments.length-1;a++){const d=i.segments[a],c=i.segments[a+1],l=this._readOrCreateChild(s,d,c,i.canonical);s=l.value,n=l.indexedParent}this._writeSegment(s,i.segments[i.segments.length-1],t,i.canonical,n)}merge(e,t,r){const i=this.get(e,r);if(f(i)&&f(t)){for(const s of Object.keys(t))b(i,s,t[s]);this._indexes=void 0;return}this.set(e,t,r)}delete(e,t){const r=h.parseDataPath(e,t);if(r.segments.length===0){this._root=p(),this._indexes=void 0;return}let i=this._root;for(let n=0;n<r.segments.length-1;n++){if(!u(i))return;i=this._readSegment(i,r.segments[n])}if(!u(i))return;const s=r.segments[r.segments.length-1];if(s.kind==="key")delete i[s.key];else if(s.kind==="index"){if(!Array.isArray(i))return;this._options.arrayDelete==="splice"?i.splice(s.index,1):delete i[s.index]}else{if(!Array.isArray(i))return;const n=this._findSelector(i,s.key,s.value);if(n===-1)return;this._options.arrayDelete==="splice"?i.splice(n,1):delete i[n]}this._indexes=void 0}indexOf(e,t){const r=h.parseDataPath(e,t);let i=this._root;for(let s=0;s<r.segments.length;s++){const n=r.segments[s],a=s===r.segments.length-1;if(n.kind==="key"){if(!u(i)||!Object.hasOwn(i,n.key))return-1;i=i[n.key];continue}if(!Array.isArray(i))return-1;if(n.kind==="index"){if(!Object.hasOwn(i,n.index))return-1;if(a)return n.index;i=i[n.index];continue}const d=this._findSelector(i,n.key,n.value);if(d===-1)return-1;if(a)return d;i=i[d]}return-1}_read(e){let t=this._root;for(const r of e.segments)if(r.kind==="key"){if(!u(t)||!Object.hasOwn(t,r.key))return{exists:!1,value:void 0};t=t[r.key]}else if(r.kind==="index"){if(!Array.isArray(t)||!Object.hasOwn(t,r.index))return{exists:!1,value:void 0};t=t[r.index]}else{if(!Array.isArray(t))return{exists:!1,value:void 0};const i=this._findSelector(t,r.key,r.value);if(i===-1)return{exists:!1,value:void 0};t=t[i]}return{exists:!0,value:t}}_readSegment(e,t){if(t.kind==="key")return Object.hasOwn(e,t.key)?e[t.key]:void 0;if(!Array.isArray(e))return;if(t.kind==="index")return e[t.index];const r=this._findSelector(e,t.key,t.value);return r===-1?void 0:e[r]}_readOrCreateChild(e,t,r,i){if(t.kind==="key"){let n=e[t.key];if(!Object.hasOwn(e,t.key)||n===void 0){if(!this._options.autoCreate)throw _(i);n=v(r),b(e,t.key,n)}return{value:k(n,i)}}if(!Array.isArray(e))throw w(i);if(t.kind==="index"){let n=e[t.index];if(!Object.hasOwn(e,t.index)||n===void 0){if(!this._options.autoCreate)throw _(i);n=v(r),e[t.index]=n}return{value:k(n,i),indexedParent:{array:e,index:t.index}}}let s=this._findSelector(e,t.key,t.value);if(s===-1){if(!this._options.autoCreate)throw _(i);const n=Object.create(null);n[t.key]=t.value,e.push(n),s=e.length-1,this._invalidateArray(e)}return{value:k(e[s],i),indexedParent:{array:e,index:s}}}_writeSegment(e,t,r,i,s){if(t.kind==="key"){b(e,t.key,r),s!==void 0&&s.array[s.index]===e&&this._invalidateIndexKey(s.array,t.key);return}if(!Array.isArray(e))throw w(i);if(t.kind==="index"){e[t.index]=r,this._invalidateArray(e);return}if(!f(r))throw new TypeError(`[Raph] New selector target at "${i}" must be an object.`);if(Object.hasOwn(r,t.key)&&!Object.is(r[t.key],t.value))throw new TypeError(`[Raph] Selector target at "${i}" has a conflicting key.`);const n=this._findSelector(e,t.key,t.value);if(n===-1&&!this._options.autoCreate)throw _(i);const a=Object.hasOwn(r,t.key)?r:{...r,[t.key]:t.value};n===-1?e.push(a):e[n]=a,this._invalidateArray(e)}_invalidateArray(e){var t;(t=this._indexes)==null||t.delete(e)}_invalidateIndexKey(e,t){var i;const r=(i=this._indexes)==null?void 0:i.get(e);r!==void 0&&(r.delete(t),r.size===0&&this._indexes.delete(e))}_findSelector(e,t,r){var d;if(!this._options.indexEnabled)return O(e,t,r);const i=(d=this._indexes)==null?void 0:d.get(e);let s=i==null?void 0:i.get(t);s===void 0&&(s=this._createIndex(e,t));const n=s.get(r);if(n!==void 0&&f(e[n])&&Object.is(e[n][t],r))return n;const a=O(e,t,r);return a===-1?s.delete(r):s.set(r,a),a}_createIndex(e,t){const r=this._indexes??(this._indexes=new WeakMap);let i=r.get(e);if(i===void 0&&(i=new Map,r.set(e,i)),this._options.indexStrategy==="eager-all-keys")for(let n=0;n<e.length;n++){const a=e[n];if(f(a))for(const d of Object.keys(a)){const c=a[d];if(!A(c))continue;let l=i.get(d);l===void 0&&(l=new Map,i.set(d,l)),l.has(c)||l.set(c,n)}}let s=i.get(t);if(s!==void 0)return s;s=new Map;for(let n=0;n<e.length;n++){const a=e[n];if(!f(a))continue;const d=a[t];A(d)&&!s.has(d)&&s.set(d,n)}return i.set(t,s),s}}function O(o,e,t){for(let r=0;r<o.length;r++){const i=o[r];if(f(i)&&Object.hasOwn(i,e)&&Object.is(i[e],t))return r}return-1}function v(o){return o.kind==="index"||o.kind==="selector"?[]:p()}function p(){return Object.create(null)}function x(o){if(u(o))return o;throw new TypeError("[Raph] Root value must be an object or array.")}function k(o,e){if(u(o))return o;throw w(e)}function f(o){return typeof o=="object"&&o!==null&&!Array.isArray(o)}function u(o){return Array.isArray(o)||f(o)}function A(o){return o===null||typeof o=="string"||typeof o=="number"||typeof o=="boolean"}function b(o,e,t){if(e==="__proto__"){Object.defineProperty(o,e,{configurable:!0,enumerable:!0,value:t,writable:!0});return}o[e]=t}function w(o){return new TypeError(`[Raph] Cannot traverse non-container data at "${o}".`)}function _(o){return new Error(`[Raph] Cannot create missing container at "${o}" (autoCreate=false).`)}exports.DefaultDataAdapter=g;