signalium 0.3.8 → 1.0.1

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 (287) hide show
  1. package/.turbo/turbo-build.log +3 -3
  2. package/CHANGELOG.md +21 -0
  3. package/build/react.js +19 -0
  4. package/build/transform.js +19 -0
  5. package/dist/cjs/config.d.ts +8 -3
  6. package/dist/cjs/config.d.ts.map +1 -1
  7. package/dist/cjs/config.js +14 -8
  8. package/dist/cjs/config.js.map +1 -1
  9. package/dist/cjs/debug.d.ts +2 -2
  10. package/dist/cjs/debug.d.ts.map +1 -1
  11. package/dist/cjs/debug.js +3 -3
  12. package/dist/cjs/debug.js.map +1 -1
  13. package/dist/cjs/hooks.d.ts +14 -42
  14. package/dist/cjs/hooks.d.ts.map +1 -1
  15. package/dist/cjs/hooks.js +19 -240
  16. package/dist/cjs/hooks.js.map +1 -1
  17. package/dist/cjs/index.d.ts +5 -3
  18. package/dist/cjs/index.d.ts.map +1 -1
  19. package/dist/cjs/index.js +18 -18
  20. package/dist/cjs/index.js.map +1 -1
  21. package/dist/cjs/internals/async.d.ts +52 -0
  22. package/dist/cjs/internals/async.d.ts.map +1 -0
  23. package/dist/cjs/internals/async.js +394 -0
  24. package/dist/cjs/internals/async.js.map +1 -0
  25. package/dist/cjs/internals/connect.d.ts +4 -0
  26. package/dist/cjs/internals/connect.d.ts.map +1 -0
  27. package/dist/cjs/internals/connect.js +37 -0
  28. package/dist/cjs/internals/connect.js.map +1 -0
  29. package/dist/cjs/internals/consumer.d.ts +6 -0
  30. package/dist/cjs/internals/consumer.d.ts.map +1 -0
  31. package/dist/cjs/internals/consumer.js +13 -0
  32. package/dist/cjs/internals/consumer.js.map +1 -0
  33. package/dist/cjs/internals/contexts.d.ts +33 -0
  34. package/dist/cjs/internals/contexts.d.ts.map +1 -0
  35. package/dist/cjs/internals/contexts.js +103 -0
  36. package/dist/cjs/internals/contexts.js.map +1 -0
  37. package/dist/cjs/internals/derived.d.ts +66 -0
  38. package/dist/cjs/internals/derived.d.ts.map +1 -0
  39. package/dist/cjs/internals/derived.js +128 -0
  40. package/dist/cjs/internals/derived.js.map +1 -0
  41. package/dist/cjs/internals/dirty.d.ts +5 -0
  42. package/dist/cjs/internals/dirty.d.ts.map +1 -0
  43. package/dist/cjs/internals/dirty.js +79 -0
  44. package/dist/cjs/internals/dirty.js.map +1 -0
  45. package/dist/cjs/internals/edge.d.ts +32 -0
  46. package/dist/cjs/internals/edge.d.ts.map +1 -0
  47. package/dist/cjs/internals/edge.js +59 -0
  48. package/dist/cjs/internals/edge.js.map +1 -0
  49. package/dist/cjs/internals/get.d.ts +10 -0
  50. package/dist/cjs/internals/get.d.ts.map +1 -0
  51. package/dist/cjs/internals/get.js +255 -0
  52. package/dist/cjs/internals/get.js.map +1 -0
  53. package/dist/cjs/internals/scheduling.d.ts +12 -0
  54. package/dist/cjs/internals/scheduling.d.ts.map +1 -0
  55. package/dist/cjs/internals/scheduling.js +117 -0
  56. package/dist/cjs/internals/scheduling.js.map +1 -0
  57. package/dist/cjs/internals/state.d.ts +18 -0
  58. package/dist/cjs/internals/state.d.ts.map +1 -0
  59. package/dist/cjs/internals/state.js +88 -0
  60. package/dist/cjs/internals/state.js.map +1 -0
  61. package/dist/cjs/internals/utils/debug-name.d.ts +2 -0
  62. package/dist/cjs/internals/utils/debug-name.d.ts.map +1 -0
  63. package/dist/cjs/internals/utils/debug-name.js +14 -0
  64. package/dist/cjs/internals/utils/debug-name.js.map +1 -0
  65. package/dist/cjs/internals/utils/equals.d.ts +3 -0
  66. package/dist/cjs/internals/utils/equals.d.ts.map +1 -0
  67. package/dist/cjs/internals/utils/equals.js +13 -0
  68. package/dist/cjs/internals/utils/equals.js.map +1 -0
  69. package/dist/cjs/internals/utils/hash.d.ts +7 -0
  70. package/dist/cjs/internals/utils/hash.d.ts.map +1 -0
  71. package/dist/cjs/internals/utils/hash.js +181 -0
  72. package/dist/cjs/internals/utils/hash.js.map +1 -0
  73. package/dist/cjs/internals/utils/stringify.d.ts +3 -0
  74. package/dist/cjs/internals/utils/stringify.d.ts.map +1 -0
  75. package/dist/cjs/{utils.js → internals/utils/stringify.js} +5 -27
  76. package/dist/cjs/internals/utils/stringify.js.map +1 -0
  77. package/dist/cjs/internals/utils/type-utils.d.ts +6 -0
  78. package/dist/cjs/internals/utils/type-utils.d.ts.map +1 -0
  79. package/dist/cjs/internals/utils/type-utils.js +22 -0
  80. package/dist/cjs/internals/utils/type-utils.js.map +1 -0
  81. package/dist/cjs/react/context.d.ts +1 -1
  82. package/dist/cjs/react/context.d.ts.map +1 -1
  83. package/dist/cjs/react/provider.d.ts +4 -3
  84. package/dist/cjs/react/provider.d.ts.map +1 -1
  85. package/dist/cjs/react/provider.js +7 -3
  86. package/dist/cjs/react/provider.js.map +1 -1
  87. package/dist/cjs/react/setup.d.ts.map +1 -1
  88. package/dist/cjs/react/setup.js +2 -1
  89. package/dist/cjs/react/setup.js.map +1 -1
  90. package/dist/cjs/react/signal-value.d.ts +5 -1
  91. package/dist/cjs/react/signal-value.d.ts.map +1 -1
  92. package/dist/cjs/react/signal-value.js +35 -45
  93. package/dist/cjs/react/signal-value.js.map +1 -1
  94. package/dist/cjs/trace.d.ts +32 -28
  95. package/dist/cjs/trace.d.ts.map +1 -1
  96. package/dist/cjs/trace.js +14 -16
  97. package/dist/cjs/trace.js.map +1 -1
  98. package/dist/cjs/transform.d.ts +6 -0
  99. package/dist/cjs/transform.d.ts.map +1 -0
  100. package/dist/cjs/transform.js +92 -0
  101. package/dist/cjs/transform.js.map +1 -0
  102. package/dist/cjs/types.d.ts +32 -40
  103. package/dist/cjs/types.d.ts.map +1 -1
  104. package/dist/esm/config.d.ts +8 -3
  105. package/dist/esm/config.d.ts.map +1 -1
  106. package/dist/esm/config.js +12 -7
  107. package/dist/esm/config.js.map +1 -1
  108. package/dist/esm/debug.d.ts +2 -2
  109. package/dist/esm/debug.d.ts.map +1 -1
  110. package/dist/esm/debug.js +2 -2
  111. package/dist/esm/debug.js.map +1 -1
  112. package/dist/esm/hooks.d.ts +14 -42
  113. package/dist/esm/hooks.d.ts.map +1 -1
  114. package/dist/esm/hooks.js +17 -226
  115. package/dist/esm/hooks.js.map +1 -1
  116. package/dist/esm/index.d.ts +5 -3
  117. package/dist/esm/index.d.ts.map +1 -1
  118. package/dist/esm/index.js +5 -3
  119. package/dist/esm/index.js.map +1 -1
  120. package/dist/esm/internals/async.d.ts +52 -0
  121. package/dist/esm/internals/async.d.ts.map +1 -0
  122. package/dist/esm/internals/async.js +387 -0
  123. package/dist/esm/internals/async.js.map +1 -0
  124. package/dist/esm/internals/connect.d.ts +4 -0
  125. package/dist/esm/internals/connect.d.ts.map +1 -0
  126. package/dist/esm/internals/connect.js +33 -0
  127. package/dist/esm/internals/connect.js.map +1 -0
  128. package/dist/esm/internals/consumer.d.ts +6 -0
  129. package/dist/esm/internals/consumer.d.ts.map +1 -0
  130. package/dist/esm/internals/consumer.js +9 -0
  131. package/dist/esm/internals/consumer.js.map +1 -0
  132. package/dist/esm/internals/contexts.d.ts +33 -0
  133. package/dist/esm/internals/contexts.d.ts.map +1 -0
  134. package/dist/esm/internals/contexts.js +92 -0
  135. package/dist/esm/internals/contexts.js.map +1 -0
  136. package/dist/esm/internals/derived.d.ts +66 -0
  137. package/dist/esm/internals/derived.d.ts.map +1 -0
  138. package/dist/esm/internals/derived.js +118 -0
  139. package/dist/esm/internals/derived.js.map +1 -0
  140. package/dist/esm/internals/dirty.d.ts +5 -0
  141. package/dist/esm/internals/dirty.d.ts.map +1 -0
  142. package/dist/esm/internals/dirty.js +75 -0
  143. package/dist/esm/internals/dirty.js.map +1 -0
  144. package/dist/esm/internals/edge.d.ts +32 -0
  145. package/dist/esm/internals/edge.d.ts.map +1 -0
  146. package/dist/esm/internals/edge.js +54 -0
  147. package/dist/esm/internals/edge.js.map +1 -0
  148. package/dist/esm/internals/get.d.ts +10 -0
  149. package/dist/esm/internals/get.d.ts.map +1 -0
  150. package/dist/esm/internals/get.js +247 -0
  151. package/dist/esm/internals/get.js.map +1 -0
  152. package/dist/esm/internals/scheduling.d.ts +12 -0
  153. package/dist/esm/internals/scheduling.d.ts.map +1 -0
  154. package/dist/esm/internals/scheduling.js +106 -0
  155. package/dist/esm/internals/scheduling.js.map +1 -0
  156. package/dist/esm/internals/state.d.ts +18 -0
  157. package/dist/esm/internals/state.d.ts.map +1 -0
  158. package/dist/esm/internals/state.js +82 -0
  159. package/dist/esm/internals/state.js.map +1 -0
  160. package/dist/esm/internals/utils/debug-name.d.ts +2 -0
  161. package/dist/esm/internals/utils/debug-name.d.ts.map +1 -0
  162. package/dist/esm/internals/utils/debug-name.js +11 -0
  163. package/dist/esm/internals/utils/debug-name.js.map +1 -0
  164. package/dist/esm/internals/utils/equals.d.ts +3 -0
  165. package/dist/esm/internals/utils/equals.d.ts.map +1 -0
  166. package/dist/esm/internals/utils/equals.js +9 -0
  167. package/dist/esm/internals/utils/equals.js.map +1 -0
  168. package/dist/esm/internals/utils/hash.d.ts +7 -0
  169. package/dist/esm/internals/utils/hash.d.ts.map +1 -0
  170. package/dist/esm/internals/utils/hash.js +174 -0
  171. package/dist/esm/internals/utils/hash.js.map +1 -0
  172. package/dist/esm/internals/utils/stringify.d.ts +3 -0
  173. package/dist/esm/internals/utils/stringify.d.ts.map +1 -0
  174. package/dist/esm/{utils.js → internals/utils/stringify.js} +4 -25
  175. package/dist/esm/internals/utils/stringify.js.map +1 -0
  176. package/dist/esm/internals/utils/type-utils.d.ts +6 -0
  177. package/dist/esm/internals/utils/type-utils.d.ts.map +1 -0
  178. package/dist/esm/internals/utils/type-utils.js +15 -0
  179. package/dist/esm/internals/utils/type-utils.js.map +1 -0
  180. package/dist/esm/react/context.d.ts +1 -1
  181. package/dist/esm/react/context.d.ts.map +1 -1
  182. package/dist/esm/react/provider.d.ts +4 -3
  183. package/dist/esm/react/provider.d.ts.map +1 -1
  184. package/dist/esm/react/provider.js +6 -2
  185. package/dist/esm/react/provider.js.map +1 -1
  186. package/dist/esm/react/setup.d.ts.map +1 -1
  187. package/dist/esm/react/setup.js +3 -2
  188. package/dist/esm/react/setup.js.map +1 -1
  189. package/dist/esm/react/signal-value.d.ts +5 -1
  190. package/dist/esm/react/signal-value.d.ts.map +1 -1
  191. package/dist/esm/react/signal-value.js +34 -45
  192. package/dist/esm/react/signal-value.js.map +1 -1
  193. package/dist/esm/trace.d.ts +32 -28
  194. package/dist/esm/trace.d.ts.map +1 -1
  195. package/dist/esm/trace.js +13 -15
  196. package/dist/esm/trace.js.map +1 -1
  197. package/dist/esm/transform.d.ts +6 -0
  198. package/dist/esm/transform.d.ts.map +1 -0
  199. package/dist/esm/transform.js +89 -0
  200. package/dist/esm/transform.js.map +1 -0
  201. package/dist/esm/types.d.ts +32 -40
  202. package/dist/esm/types.d.ts.map +1 -1
  203. package/package.json +23 -4
  204. package/src/__tests__/__snapshots__/context.test.ts.snap +2101 -0
  205. package/src/__tests__/__snapshots__/nesting.test.ts.snap +16201 -0
  206. package/src/__tests__/__snapshots__/params-and-state.test.ts.snap +1879 -0
  207. package/src/__tests__/async-task.test.ts +327 -0
  208. package/src/__tests__/context.test.ts +517 -0
  209. package/src/__tests__/nesting.test.ts +298 -0
  210. package/src/__tests__/params-and-state.test.ts +230 -0
  211. package/src/__tests__/reactive-async.test.ts +548 -0
  212. package/src/__tests__/reactive-sync.test.ts +130 -0
  213. package/src/__tests__/subscription.test.ts +510 -0
  214. package/src/__tests__/utils/async.ts +1 -1
  215. package/src/__tests__/utils/instrumented-hooks.ts +229 -124
  216. package/src/__tests__/utils/permute.ts +25 -14
  217. package/src/config.ts +19 -9
  218. package/src/debug.ts +2 -2
  219. package/src/hooks.ts +46 -380
  220. package/src/index.ts +7 -24
  221. package/src/internals/async.ts +558 -0
  222. package/src/internals/connect.ts +41 -0
  223. package/src/internals/consumer.ts +13 -0
  224. package/src/internals/contexts.ts +133 -0
  225. package/src/internals/derived.ts +208 -0
  226. package/src/internals/dirty.ts +91 -0
  227. package/src/internals/edge.ts +109 -0
  228. package/src/internals/get.ts +298 -0
  229. package/src/internals/scheduling.ts +140 -0
  230. package/src/internals/state.ts +111 -0
  231. package/src/internals/utils/debug-name.ts +14 -0
  232. package/src/internals/utils/equals.ts +12 -0
  233. package/src/internals/utils/hash.ts +221 -0
  234. package/src/{utils.ts → internals/utils/stringify.ts} +3 -29
  235. package/src/internals/utils/type-utils.ts +19 -0
  236. package/src/react/__tests__/async.test.tsx +704 -0
  237. package/src/react/__tests__/basic.test.tsx +95 -0
  238. package/src/react/__tests__/contexts.test.tsx +99 -0
  239. package/src/react/__tests__/subscriptions.test.tsx +49 -0
  240. package/src/react/__tests__/utils.tsx +40 -0
  241. package/src/react/context.ts +1 -1
  242. package/src/react/provider.tsx +12 -4
  243. package/src/react/setup.ts +3 -2
  244. package/src/react/signal-value.ts +47 -67
  245. package/src/trace.ts +43 -38
  246. package/src/transform.ts +113 -0
  247. package/src/types.ts +56 -46
  248. package/transform.js +19 -0
  249. package/vitest.workspace.ts +38 -2
  250. package/dist/cjs/scheduling.d.ts +0 -11
  251. package/dist/cjs/scheduling.d.ts.map +0 -1
  252. package/dist/cjs/scheduling.js +0 -108
  253. package/dist/cjs/scheduling.js.map +0 -1
  254. package/dist/cjs/signals.d.ts +0 -73
  255. package/dist/cjs/signals.d.ts.map +0 -1
  256. package/dist/cjs/signals.js +0 -632
  257. package/dist/cjs/signals.js.map +0 -1
  258. package/dist/cjs/utils.d.ts +0 -4
  259. package/dist/cjs/utils.d.ts.map +0 -1
  260. package/dist/cjs/utils.js.map +0 -1
  261. package/dist/esm/scheduling.d.ts +0 -11
  262. package/dist/esm/scheduling.d.ts.map +0 -1
  263. package/dist/esm/scheduling.js +0 -97
  264. package/dist/esm/scheduling.js.map +0 -1
  265. package/dist/esm/signals.d.ts +0 -73
  266. package/dist/esm/signals.d.ts.map +0 -1
  267. package/dist/esm/signals.js +0 -614
  268. package/dist/esm/signals.js.map +0 -1
  269. package/dist/esm/utils.d.ts +0 -4
  270. package/dist/esm/utils.d.ts.map +0 -1
  271. package/dist/esm/utils.js.map +0 -1
  272. package/src/__tests__/hooks/async-computed.test.ts +0 -190
  273. package/src/__tests__/hooks/async-task.test.ts +0 -334
  274. package/src/__tests__/hooks/computed.test.ts +0 -126
  275. package/src/__tests__/hooks/context.test.ts +0 -527
  276. package/src/__tests__/hooks/nesting.test.ts +0 -303
  277. package/src/__tests__/hooks/params-and-state.test.ts +0 -168
  278. package/src/__tests__/hooks/subscription.test.ts +0 -97
  279. package/src/__tests__/signals/async.test.ts +0 -416
  280. package/src/__tests__/signals/basic.test.ts +0 -399
  281. package/src/__tests__/signals/subscription.test.ts +0 -632
  282. package/src/__tests__/signals/watcher.test.ts +0 -253
  283. package/src/__tests__/utils/builders.ts +0 -22
  284. package/src/__tests__/utils/instrumented-signals.ts +0 -291
  285. package/src/react/__tests__/react.test.tsx +0 -227
  286. package/src/scheduling.ts +0 -130
  287. package/src/signals.ts +0 -824
package/dist/cjs/index.js CHANGED
@@ -1,27 +1,27 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.stringifyArgs = exports.setConfig = exports.SignalScope = exports.watcher = exports.subscription = exports.asyncTask = exports.asyncComputed = exports.computed = exports.withContext = exports.useContext = exports.createContext = exports.state = exports.getCurrentConsumer = exports.createAsyncTaskSignal = exports.createWatcherSignal = exports.createSubscriptionSignal = exports.createAsyncComputedSignal = exports.createComputedSignal = exports.createStateSignal = void 0;
4
- var signals_js_1 = require("./signals.js");
5
- Object.defineProperty(exports, "createStateSignal", { enumerable: true, get: function () { return signals_js_1.createStateSignal; } });
6
- Object.defineProperty(exports, "createComputedSignal", { enumerable: true, get: function () { return signals_js_1.createComputedSignal; } });
7
- Object.defineProperty(exports, "createAsyncComputedSignal", { enumerable: true, get: function () { return signals_js_1.createAsyncComputedSignal; } });
8
- Object.defineProperty(exports, "createSubscriptionSignal", { enumerable: true, get: function () { return signals_js_1.createSubscriptionSignal; } });
9
- Object.defineProperty(exports, "createWatcherSignal", { enumerable: true, get: function () { return signals_js_1.createWatcherSignal; } });
10
- Object.defineProperty(exports, "createAsyncTaskSignal", { enumerable: true, get: function () { return signals_js_1.createAsyncTaskSignal; } });
11
- Object.defineProperty(exports, "getCurrentConsumer", { enumerable: true, get: function () { return signals_js_1.getCurrentConsumer; } });
3
+ exports.registerCustomHash = exports.hashValue = exports.setConfig = exports.CONTEXT_KEY = exports.SignalScope = exports.withContexts = exports.useContext = exports.createContext = exports.callback = exports.isReactiveSubscription = exports.isReactiveTask = exports.isReactivePromise = exports.watcher = exports.task = exports.subscription = exports.reactive = exports.state = void 0;
12
4
  var hooks_js_1 = require("./hooks.js");
13
5
  Object.defineProperty(exports, "state", { enumerable: true, get: function () { return hooks_js_1.state; } });
14
- Object.defineProperty(exports, "createContext", { enumerable: true, get: function () { return hooks_js_1.createContext; } });
15
- Object.defineProperty(exports, "useContext", { enumerable: true, get: function () { return hooks_js_1.useContext; } });
16
- Object.defineProperty(exports, "withContext", { enumerable: true, get: function () { return hooks_js_1.withContext; } });
17
- Object.defineProperty(exports, "computed", { enumerable: true, get: function () { return hooks_js_1.computed; } });
18
- Object.defineProperty(exports, "asyncComputed", { enumerable: true, get: function () { return hooks_js_1.asyncComputed; } });
19
- Object.defineProperty(exports, "asyncTask", { enumerable: true, get: function () { return hooks_js_1.asyncTask; } });
6
+ Object.defineProperty(exports, "reactive", { enumerable: true, get: function () { return hooks_js_1.reactive; } });
20
7
  Object.defineProperty(exports, "subscription", { enumerable: true, get: function () { return hooks_js_1.subscription; } });
8
+ Object.defineProperty(exports, "task", { enumerable: true, get: function () { return hooks_js_1.task; } });
21
9
  Object.defineProperty(exports, "watcher", { enumerable: true, get: function () { return hooks_js_1.watcher; } });
22
- Object.defineProperty(exports, "SignalScope", { enumerable: true, get: function () { return hooks_js_1.SignalScope; } });
10
+ var async_js_1 = require("./internals/async.js");
11
+ Object.defineProperty(exports, "isReactivePromise", { enumerable: true, get: function () { return async_js_1.isReactivePromise; } });
12
+ Object.defineProperty(exports, "isReactiveTask", { enumerable: true, get: function () { return async_js_1.isReactiveTask; } });
13
+ Object.defineProperty(exports, "isReactiveSubscription", { enumerable: true, get: function () { return async_js_1.isReactiveSubscription; } });
14
+ var get_js_1 = require("./internals/get.js");
15
+ Object.defineProperty(exports, "callback", { enumerable: true, get: function () { return get_js_1.callback; } });
16
+ var contexts_js_1 = require("./internals/contexts.js");
17
+ Object.defineProperty(exports, "createContext", { enumerable: true, get: function () { return contexts_js_1.createContext; } });
18
+ Object.defineProperty(exports, "useContext", { enumerable: true, get: function () { return contexts_js_1.useContext; } });
19
+ Object.defineProperty(exports, "withContexts", { enumerable: true, get: function () { return contexts_js_1.withContexts; } });
20
+ Object.defineProperty(exports, "SignalScope", { enumerable: true, get: function () { return contexts_js_1.SignalScope; } });
21
+ Object.defineProperty(exports, "CONTEXT_KEY", { enumerable: true, get: function () { return contexts_js_1.CONTEXT_KEY; } });
23
22
  var config_js_1 = require("./config.js");
24
23
  Object.defineProperty(exports, "setConfig", { enumerable: true, get: function () { return config_js_1.setConfig; } });
25
- var utils_js_1 = require("./utils.js");
26
- Object.defineProperty(exports, "stringifyArgs", { enumerable: true, get: function () { return utils_js_1.hashValue; } });
24
+ var hash_js_1 = require("./internals/utils/hash.js");
25
+ Object.defineProperty(exports, "hashValue", { enumerable: true, get: function () { return hash_js_1.hashValue; } });
26
+ Object.defineProperty(exports, "registerCustomHash", { enumerable: true, get: function () { return hash_js_1.registerCustomHash; } });
27
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAEA,2CAQsB;AAPpB,+GAAA,iBAAiB,OAAA;AACjB,kHAAA,oBAAoB,OAAA;AACpB,uHAAA,yBAAyB,OAAA;AACzB,sHAAA,wBAAwB,OAAA;AACxB,iHAAA,mBAAmB,OAAA;AACnB,mHAAA,qBAAqB,OAAA;AACrB,gHAAA,kBAAkB,OAAA;AAGpB,uCAaoB;AAZlB,iGAAA,KAAK,OAAA;AACL,yGAAA,aAAa,OAAA;AACb,sGAAA,UAAU,OAAA;AACV,uGAAA,WAAW,OAAA;AACX,oGAAA,QAAQ,OAAA;AACR,yGAAA,aAAa,OAAA;AACb,qGAAA,SAAS,OAAA;AACT,wGAAA,YAAY,OAAA;AACZ,mGAAA,OAAO,OAAA;AACP,uGAAA,WAAW,OAAA;AAKb,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAElB,uCAAwD;AAA/C,yGAAA,SAAS,OAAiB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAEA,uCAA0E;AAAjE,iGAAA,KAAK,OAAA;AAAE,oGAAA,QAAQ,OAAA;AAAE,wGAAA,YAAY,OAAA;AAAE,gGAAA,IAAI,OAAA;AAAE,mGAAA,OAAO,OAAA;AAErD,iDAAiG;AAAxF,6GAAA,iBAAiB,OAAA;AAAE,0GAAA,cAAc,OAAA;AAAE,kHAAA,sBAAsB,OAAA;AAElE,6CAA8C;AAArC,kGAAA,QAAQ,OAAA;AAEjB,uDAA4G;AAAnG,4GAAA,aAAa,OAAA;AAAE,yGAAA,UAAU,OAAA;AAAE,2GAAA,YAAY,OAAA;AAAE,0GAAA,WAAW,OAAA;AAAE,0GAAA,WAAW,OAAA;AAE1E,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAElB,qDAA0E;AAAjE,oGAAA,SAAS,OAAA;AAAE,6GAAA,kBAAkB,OAAA"}
@@ -0,0 +1,52 @@
1
+ import { BaseReactivePromise, ReactiveSubscription, ReactiveTask, ReactivePromise as IReactivePromise, SignalOptionsWithInit, SignalSubscribe } from '../types.js';
2
+ import { DerivedSignal } from './derived.js';
3
+ import { PromiseEdge } from './edge.js';
4
+ import { SignalScope } from './contexts.js';
5
+ export declare class ReactivePromise<T, Args extends unknown[] = unknown[]> implements BaseReactivePromise<T> {
6
+ private _value;
7
+ private _error;
8
+ private _flags;
9
+ private _signal;
10
+ private _equals;
11
+ private _promise;
12
+ private _pending;
13
+ private _stateSubs;
14
+ _awaitSubs: Map<WeakRef<DerivedSignal<unknown, unknown[]>>, PromiseEdge>;
15
+ private _version;
16
+ private _boundRun;
17
+ static createPromise<T>(promise: Promise<T>, signal?: DerivedSignal<T, unknown[]>, initValue?: T | undefined): ReactivePromise<unknown, unknown[]>;
18
+ static createSubscription<T>(subscribe: SignalSubscribe<T>, scope: SignalScope, opts?: Partial<SignalOptionsWithInit<T, unknown[]>>): ReactivePromise<T, unknown[]>;
19
+ static createTask<T, Args extends unknown[]>(task: (...args: Args) => Promise<T>, scope: SignalScope, opts?: Partial<SignalOptionsWithInit<T, Args>>): ReactiveTask<T, Args>;
20
+ private _initFlags;
21
+ private _consumeFlags;
22
+ private _connect;
23
+ private _setFlags;
24
+ _setPending(): void;
25
+ _setPromise(promise: Promise<T>): Promise<void>;
26
+ private _setValue;
27
+ private _setError;
28
+ private _scheduleSubs;
29
+ get value(): T | undefined;
30
+ get error(): unknown;
31
+ get isPending(): boolean;
32
+ get isRejected(): boolean;
33
+ get isResolved(): boolean;
34
+ get isReady(): boolean;
35
+ get isSettled(): boolean;
36
+ get data(): T | undefined;
37
+ get isFetching(): boolean;
38
+ get isSuccess(): boolean;
39
+ get isError(): boolean;
40
+ get isFetched(): boolean;
41
+ _run(...args: Args): this;
42
+ run: (...args: Args) => this;
43
+ get rerun(): () => ReactivePromise<T, Args>;
44
+ then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
45
+ catch<TResult = never>(onrejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null): Promise<T | TResult>;
46
+ finally(onfinally?: (() => void) | null): Promise<T>;
47
+ get [Symbol.toStringTag](): string;
48
+ }
49
+ export declare function isReactivePromise(obj: unknown): obj is IReactivePromise<unknown>;
50
+ export declare function isReactiveTask(obj: unknown): obj is ReactiveTask<unknown, unknown[]>;
51
+ export declare function isReactiveSubscription<T, Args extends unknown[]>(obj: unknown): obj is ReactiveSubscription<T>;
52
+ //# sourceMappingURL=async.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../../../src/internals/async.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,394 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReactivePromise = void 0;
4
+ exports.isReactivePromise = isReactivePromise;
5
+ exports.isReactiveTask = isReactiveTask;
6
+ exports.isReactiveSubscription = isReactiveSubscription;
7
+ const derived_js_1 = require("./derived.js");
8
+ const get_js_1 = require("./get.js");
9
+ const dirty_js_1 = require("./dirty.js");
10
+ const scheduling_js_1 = require("./scheduling.js");
11
+ const edge_js_1 = require("./edge.js");
12
+ const contexts_js_1 = require("./contexts.js");
13
+ const state_js_1 = require("./state.js");
14
+ const type_utils_js_1 = require("./utils/type-utils.js");
15
+ const equals_js_1 = require("./utils/equals.js");
16
+ class ReactivePromise {
17
+ _value = undefined;
18
+ _error = undefined;
19
+ _flags = 0;
20
+ _signal = undefined;
21
+ _equals;
22
+ _promise;
23
+ _pending = [];
24
+ _stateSubs = new Map();
25
+ _awaitSubs = new Map();
26
+ // Version is not really needed in a pure signal world, but when integrating
27
+ // with non-signal code, it's sometimes needed to entangle changes to the promise.
28
+ // For example, in React we need to entangle each promise immediately after it
29
+ // was used because we can't dynamically call hooks.
30
+ _version = (0, state_js_1.createStateSignal)(0);
31
+ _boundRun;
32
+ static createPromise(promise, signal, initValue) {
33
+ const p = new ReactivePromise();
34
+ p._signal = signal;
35
+ p._equals = signal?.equals ?? ((a, b) => a === b);
36
+ p._initFlags(1 /* AsyncFlags.Pending */, initValue);
37
+ if (promise) {
38
+ p._setPromise(promise);
39
+ }
40
+ return p;
41
+ }
42
+ static createSubscription(subscribe, scope, opts) {
43
+ const p = new ReactivePromise();
44
+ const initValue = opts?.initValue;
45
+ let active = false;
46
+ let currentSub;
47
+ const unsubscribe = () => {
48
+ if (typeof currentSub === 'function') {
49
+ currentSub();
50
+ }
51
+ else if (currentSub !== undefined) {
52
+ currentSub.unsubscribe?.();
53
+ }
54
+ const signal = p._signal;
55
+ // Reset the signal state, preparing it for next activation
56
+ signal.subs = new Map();
57
+ signal._state = 2 /* SignalState.Dirty */;
58
+ signal.watchCount = 0;
59
+ active = false;
60
+ currentSub = undefined;
61
+ };
62
+ const state = {
63
+ get: () => p._value,
64
+ set: (value) => {
65
+ if (value !== null && typeof value === 'object' && (0, type_utils_js_1.isPromise)(value)) {
66
+ p._setPromise(value);
67
+ }
68
+ else {
69
+ p._setValue(value);
70
+ }
71
+ },
72
+ setError: (error) => {
73
+ p._setError(error);
74
+ },
75
+ };
76
+ p._signal = (0, derived_js_1.createDerivedSignal)(() => {
77
+ if (active === false) {
78
+ currentSub = subscribe(state);
79
+ active = true;
80
+ }
81
+ else if (typeof currentSub === 'function' || currentSub === undefined) {
82
+ currentSub?.();
83
+ currentSub = subscribe(state);
84
+ }
85
+ else {
86
+ currentSub.update?.();
87
+ }
88
+ return unsubscribe;
89
+ }, [], undefined, scope, opts, true);
90
+ p._equals = (0, equals_js_1.equalsFrom)(opts?.equals);
91
+ p._initFlags(128 /* AsyncFlags.isSubscription */ | 1 /* AsyncFlags.Pending */, initValue);
92
+ return p;
93
+ }
94
+ static createTask(task, scope, opts) {
95
+ const p = new ReactivePromise();
96
+ const initValue = opts?.initValue;
97
+ p._signal = (...args) => {
98
+ return (0, contexts_js_1.withScope)(scope, () => {
99
+ const result = task(...args);
100
+ return typeof result === 'object' && result !== null && (0, type_utils_js_1.isGeneratorResult)(result)
101
+ ? (0, get_js_1.generatorResultToPromise)(result, undefined)
102
+ : result;
103
+ });
104
+ };
105
+ p._equals = (0, equals_js_1.equalsFrom)(opts?.equals);
106
+ p._initFlags(64 /* AsyncFlags.isRunnable */, initValue);
107
+ return p;
108
+ }
109
+ _initFlags(baseFlags, initValue) {
110
+ let flags = baseFlags;
111
+ if (initValue !== undefined) {
112
+ flags |= 8 /* AsyncFlags.Ready */;
113
+ }
114
+ this._flags = flags;
115
+ this._value = initValue;
116
+ }
117
+ _consumeFlags(flags) {
118
+ if (get_js_1.CURRENT_CONSUMER === undefined)
119
+ return;
120
+ if ((this._flags & 128 /* AsyncFlags.isSubscription */) !== 0) {
121
+ this._connect();
122
+ }
123
+ const ref = get_js_1.CURRENT_CONSUMER.ref;
124
+ const subs = this._stateSubs;
125
+ const subbedFlags = subs.get(ref) ?? 0;
126
+ subs.set(ref, subbedFlags | flags);
127
+ }
128
+ _connect() {
129
+ const signal = this._signal;
130
+ if (get_js_1.CURRENT_CONSUMER?.watchCount === 0) {
131
+ const { ref, computedCount, deps } = get_js_1.CURRENT_CONSUMER;
132
+ const prevEdge = deps.get(signal);
133
+ if (prevEdge?.consumedAt !== computedCount) {
134
+ const newEdge = (0, edge_js_1.createEdge)(prevEdge, 0 /* EdgeType.Signal */, signal, signal.updatedCount, computedCount);
135
+ signal.subs.set(ref, newEdge);
136
+ deps.set(signal, newEdge);
137
+ }
138
+ }
139
+ else {
140
+ (0, get_js_1.getSignal)(signal);
141
+ }
142
+ }
143
+ _setFlags(setTrue, setFalse = 0, notify = 0) {
144
+ const prevFlags = this._flags;
145
+ const nextFlags = (prevFlags & ~setFalse) | setTrue;
146
+ const allChanged = (prevFlags ^ nextFlags) | notify;
147
+ this._flags = nextFlags;
148
+ if (allChanged === 0) {
149
+ return;
150
+ }
151
+ const subs = this._stateSubs;
152
+ for (const [signalRef, subbedFlags] of subs) {
153
+ if ((subbedFlags & allChanged) !== 0) {
154
+ const signal = signalRef.deref();
155
+ if (signal) {
156
+ (0, dirty_js_1.dirtySignal)(signal);
157
+ }
158
+ subs.delete(signalRef);
159
+ }
160
+ }
161
+ this._version.update(v => v + 1);
162
+ }
163
+ _setPending() {
164
+ this._setFlags(1 /* AsyncFlags.Pending */);
165
+ }
166
+ async _setPromise(promise) {
167
+ // Store the current promise so we can check if it's the same promise in the
168
+ // then handlers. If it's not the same promise, it means that the promise has
169
+ // been recomputed and replaced, so we should not update state.
170
+ this._promise = promise;
171
+ const flags = this._flags;
172
+ let awaitSubs = this._awaitSubs;
173
+ // If we were not already pending, we need to propagate the dirty state to any
174
+ // consumers that were added since the promise was resolved last.
175
+ if ((flags & 1 /* AsyncFlags.Pending */) === 0) {
176
+ this._setPending();
177
+ (0, dirty_js_1.dirtySignalConsumers)(awaitSubs);
178
+ this._awaitSubs = awaitSubs = new Map();
179
+ }
180
+ try {
181
+ const nextValue = await promise;
182
+ if (promise !== this._promise) {
183
+ return;
184
+ }
185
+ this._setValue(nextValue, awaitSubs);
186
+ }
187
+ catch (nextError) {
188
+ if (promise !== this._promise) {
189
+ return;
190
+ }
191
+ this._setError(nextError, awaitSubs);
192
+ }
193
+ }
194
+ _setValue(nextValue, awaitSubs = this._awaitSubs) {
195
+ let flags = this._flags;
196
+ let value = this._value;
197
+ let notifyFlags = 0;
198
+ if ((flags & 8 /* AsyncFlags.Ready */) === 0 || this._equals(value, nextValue) === false) {
199
+ this._value = value = nextValue;
200
+ notifyFlags = 16 /* AsyncFlags.Value */;
201
+ }
202
+ if (flags & 2 /* AsyncFlags.Rejected */) {
203
+ notifyFlags = 32 /* AsyncFlags.Error */;
204
+ this._error = undefined;
205
+ }
206
+ this._scheduleSubs(awaitSubs, notifyFlags !== 0);
207
+ this._setFlags(4 /* AsyncFlags.Resolved */ | 8 /* AsyncFlags.Ready */, 1 /* AsyncFlags.Pending */ | 2 /* AsyncFlags.Rejected */, notifyFlags);
208
+ for (const { ref, edge, resolve } of this._pending) {
209
+ resolve?.(value);
210
+ if (ref !== undefined) {
211
+ awaitSubs.set(ref, edge);
212
+ }
213
+ }
214
+ this._pending = [];
215
+ }
216
+ _setError(nextError, awaitSubs = this._awaitSubs) {
217
+ let error = this._error;
218
+ let notifyFlags = 0;
219
+ if (error !== nextError) {
220
+ this._error = error = nextError;
221
+ notifyFlags = 32 /* AsyncFlags.Error */;
222
+ }
223
+ this._scheduleSubs(awaitSubs, notifyFlags !== 0);
224
+ this._setFlags(2 /* AsyncFlags.Rejected */, 1 /* AsyncFlags.Pending */ | 4 /* AsyncFlags.Resolved */, notifyFlags);
225
+ for (const { ref, edge, reject } of this._pending) {
226
+ reject?.(error);
227
+ if (ref !== undefined) {
228
+ awaitSubs.set(ref, edge);
229
+ }
230
+ }
231
+ this._pending = [];
232
+ }
233
+ _scheduleSubs(awaitSubs, dirty) {
234
+ // Await subscribers that have been added since the promise was set are specifically
235
+ // subscribers that were previously notified and MaybeDirty, were removed from the
236
+ // signal, and then were checked (e.g. checkSignal was called on them) and they
237
+ // halted and added themselves back as dependencies.
238
+ //
239
+ // If the value actually changed, then these consumers are Dirty and will notify and
240
+ // schedule themselves the standard way here. If the value did not change, then the
241
+ // consumers are not notified and end up back in the same state as before the promise
242
+ // was set (because nothing changed), and instead they will be scheduled to continue
243
+ // the computation from where they left off.
244
+ const newState = dirty ? 2 /* SignalState.Dirty */ : 3 /* SignalState.MaybeDirty */;
245
+ for (const ref of awaitSubs.keys()) {
246
+ const signal = ref.deref();
247
+ if (signal === undefined) {
248
+ continue;
249
+ }
250
+ signal._state = newState;
251
+ (0, scheduling_js_1.scheduleAsyncPull)(signal);
252
+ }
253
+ }
254
+ get value() {
255
+ this._consumeFlags(16 /* AsyncFlags.Value */);
256
+ return this._value;
257
+ }
258
+ get error() {
259
+ this._consumeFlags(32 /* AsyncFlags.Error */);
260
+ return this._error;
261
+ }
262
+ get isPending() {
263
+ this._consumeFlags(1 /* AsyncFlags.Pending */);
264
+ return (this._flags & 1 /* AsyncFlags.Pending */) !== 0;
265
+ }
266
+ get isRejected() {
267
+ this._consumeFlags(2 /* AsyncFlags.Rejected */);
268
+ return (this._flags & 2 /* AsyncFlags.Rejected */) !== 0;
269
+ }
270
+ get isResolved() {
271
+ this._consumeFlags(4 /* AsyncFlags.Resolved */);
272
+ return (this._flags & 4 /* AsyncFlags.Resolved */) !== 0;
273
+ }
274
+ get isReady() {
275
+ this._consumeFlags(8 /* AsyncFlags.Ready */);
276
+ return (this._flags & 8 /* AsyncFlags.Ready */) !== 0;
277
+ }
278
+ get isSettled() {
279
+ this._consumeFlags(6 /* AsyncFlags.Settled */);
280
+ return (this._flags & 6 /* AsyncFlags.Settled */) !== 0;
281
+ }
282
+ // Aliases for backwards compatibility (TODO: Figure out how to do this better)
283
+ get data() {
284
+ return this.value;
285
+ }
286
+ get isFetching() {
287
+ return this.isPending;
288
+ }
289
+ get isSuccess() {
290
+ return this.isResolved;
291
+ }
292
+ get isError() {
293
+ return this.isRejected;
294
+ }
295
+ get isFetched() {
296
+ return this.isSettled;
297
+ }
298
+ _run(...args) {
299
+ const flags = this._flags;
300
+ const signal = this._signal;
301
+ if ((flags & 64 /* AsyncFlags.isRunnable */) !== 0) {
302
+ this._setPromise(signal(...args));
303
+ }
304
+ else if (signal) {
305
+ (0, dirty_js_1.dirtySignal)(signal);
306
+ }
307
+ else {
308
+ throw new Error('ReactivePromise is not runnable. If you are using run() on a ReactivePromise, make sure you used `task` to create this promise. If you are using rerun(), make sure its a promise that was generated by a reactive async function.');
309
+ }
310
+ return this;
311
+ }
312
+ run = this._run.bind(this);
313
+ get rerun() {
314
+ return this.run;
315
+ }
316
+ then(onfulfilled, onrejected) {
317
+ const flags = this._flags;
318
+ // Create a new Promise that will be returned
319
+ return new Promise((resolve, reject) => {
320
+ let ref, edge;
321
+ if (get_js_1.CURRENT_CONSUMER !== undefined) {
322
+ if ((flags & 128 /* AsyncFlags.isSubscription */) !== 0) {
323
+ this._connect();
324
+ }
325
+ ref = get_js_1.CURRENT_CONSUMER.ref;
326
+ const prevEdge = this._awaitSubs.get(ref) ?? (0, edge_js_1.findAndRemoveDirty)(get_js_1.CURRENT_CONSUMER, this);
327
+ edge = (0, edge_js_1.createEdge)(prevEdge, 1 /* EdgeType.Promise */, this, -1, get_js_1.CURRENT_CONSUMER.computedCount);
328
+ }
329
+ // Create wrapper functions that will call the original callbacks and then resolve/reject the new Promise
330
+ const wrappedFulfilled = onfulfilled
331
+ ? (value) => {
332
+ try {
333
+ const result = onfulfilled(value);
334
+ resolve(result);
335
+ }
336
+ catch (error) {
337
+ reject(error);
338
+ }
339
+ }
340
+ : resolve;
341
+ const wrappedRejected = onrejected
342
+ ? (reason) => {
343
+ try {
344
+ const result = onrejected(reason);
345
+ resolve(result);
346
+ }
347
+ catch (error) {
348
+ reject(error);
349
+ }
350
+ }
351
+ : reject;
352
+ if (flags & 1 /* AsyncFlags.Pending */) {
353
+ this._pending.push({ ref, edge, resolve: wrappedFulfilled, reject: wrappedRejected });
354
+ }
355
+ else {
356
+ if (flags & 4 /* AsyncFlags.Resolved */) {
357
+ wrappedFulfilled(this._value);
358
+ }
359
+ else if (flags & 2 /* AsyncFlags.Rejected */) {
360
+ wrappedRejected(this._error);
361
+ }
362
+ if (ref) {
363
+ this._awaitSubs.set(ref, edge);
364
+ }
365
+ }
366
+ });
367
+ }
368
+ catch(onrejected) {
369
+ return this.then(null, onrejected);
370
+ }
371
+ finally(onfinally) {
372
+ return this.then(value => {
373
+ onfinally?.();
374
+ return value;
375
+ }, reason => {
376
+ onfinally?.();
377
+ throw reason;
378
+ });
379
+ }
380
+ get [Symbol.toStringTag]() {
381
+ return 'ReactivePromise';
382
+ }
383
+ }
384
+ exports.ReactivePromise = ReactivePromise;
385
+ function isReactivePromise(obj) {
386
+ return obj instanceof ReactivePromise && (obj['_flags'] & (128 /* AsyncFlags.isSubscription */ & 64 /* AsyncFlags.isRunnable */)) === 0;
387
+ }
388
+ function isReactiveTask(obj) {
389
+ return obj instanceof ReactivePromise && (obj['_flags'] & 64 /* AsyncFlags.isRunnable */) !== 0;
390
+ }
391
+ function isReactiveSubscription(obj) {
392
+ return obj instanceof ReactivePromise && (obj['_flags'] & 128 /* AsyncFlags.isSubscription */) !== 0;
393
+ }
394
+ //# sourceMappingURL=async.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.js","sourceRoot":"","sources":["../../../src/internals/async.ts"],"names":[],"mappings":";;;AAmiBA,8CAEC;AAED,wCAEC;AAED,wDAEC;AAniBD,6CAA+E;AAC/E,qCAAiF;AACjF,yCAA+D;AAC/D,mDAA+E;AAC/E,uCAAwF;AACxF,+CAAoF;AACpF,yCAA+C;AAE/C,yDAAqE;AACrE,iDAA+C;AAgC/C,MAAa,eAAe;IAClB,MAAM,GAAkB,SAAS,CAAC;IAElC,MAAM,GAAwB,SAAS,CAAC;IACxC,MAAM,GAAG,CAAC,CAAC;IAEX,OAAO,GAA0D,SAAS,CAAC;IAC3E,OAAO,CAAmB;IAC1B,QAAQ,CAAyB;IAEjC,QAAQ,GAAwB,EAAE,CAAC;IAEnC,UAAU,GAAG,IAAI,GAAG,EAAsD,CAAC;IACnF,UAAU,GAAG,IAAI,GAAG,EAA2D,CAAC;IAEhF,4EAA4E;IAC5E,kFAAkF;IAClF,8EAA8E;IAC9E,oDAAoD;IAC5C,QAAQ,GAAG,IAAA,4BAAiB,EAAC,CAAC,CAAC,CAAC;IAChC,SAAS,CAA4D;IAE7E,MAAM,CAAC,aAAa,CAAI,OAAmB,EAAE,MAAoC,EAAE,SAAyB;QAC1G,MAAM,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC;QAEhC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC;QACnB,CAAC,CAAC,OAAO,GAAG,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAElD,CAAC,CAAC,UAAU,6BAAqB,SAAS,CAAC,CAAC;QAE5C,IAAI,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,CAAC,kBAAkB,CACvB,SAA6B,EAC7B,KAAkB,EAClB,IAAmD;QAEnD,MAAM,CAAC,GAAG,IAAI,eAAe,EAAK,CAAC;QACnC,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,CAAC;QAElC,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,UAAgE,CAAC;QAErE,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;gBACrC,UAAU,EAAE,CAAC;YACf,CAAC;iBAAM,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBACpC,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC;YAC7B,CAAC;YAED,MAAM,MAAM,GAAG,CAAC,CAAC,OAAkC,CAAC;YAEpD,2DAA2D;YAC3D,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;YACxB,MAAM,CAAC,MAAM,4BAAoB,CAAC;YAClC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;YACtB,MAAM,GAAG,KAAK,CAAC;YACf,UAAU,GAAG,SAAS,CAAC;QACzB,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG;YACZ,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,MAAW;YAExB,GAAG,EAAE,CAAC,KAAqB,EAAE,EAAE;gBAC7B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,yBAAS,EAAC,KAAK,CAAC,EAAE,CAAC;oBACpE,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACN,CAAC,CAAC,SAAS,CAAC,KAAU,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;YAED,QAAQ,EAAE,CAAC,KAAc,EAAE,EAAE;gBAC3B,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;SACF,CAAC;QAEF,CAAC,CAAC,OAAO,GAAG,IAAA,gCAAmB,EAC7B,GAAG,EAAE;YACH,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC9B,MAAM,GAAG,IAAI,CAAC;YAChB,CAAC;iBAAM,IAAI,OAAO,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBACxE,UAAU,EAAE,EAAE,CAAC;gBACf,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YACxB,CAAC;YAED,OAAO,WAAW,CAAC;QACrB,CAAC,EACD,EAAE,EACF,SAAS,EACT,KAAK,EACL,IAAsF,EACtF,IAAI,CACL,CAAC;QAEF,CAAC,CAAC,OAAO,GAAG,IAAA,sBAAU,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC,CAAC,UAAU,CAAC,gEAA8C,EAAE,SAAc,CAAC,CAAC;QAE7E,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,CAAC,UAAU,CACf,IAAmC,EACnC,KAAkB,EAClB,IAA8C;QAE9C,MAAM,CAAC,GAAG,IAAI,eAAe,EAAW,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,CAAC;QAElC,CAAC,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE;YACtB,OAAO,IAAA,uBAAS,EAAC,KAAK,EAAE,GAAG,EAAE;gBAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBAE7B,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,IAAA,iCAAiB,EAAC,MAAM,CAAC;oBAC/E,CAAC,CAAC,IAAA,iCAAwB,EAAC,MAAM,EAAE,SAAS,CAAC;oBAC7C,CAAC,CAAC,MAAM,CAAC;YACb,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,CAAC,CAAC,OAAO,GAAG,IAAA,sBAAU,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC,CAAC,UAAU,iCAAwB,SAAc,CAAC,CAAC;QAEpD,OAAO,CAA0B,CAAC;IACpC,CAAC;IAEO,UAAU,CAAC,SAAiB,EAAE,SAAa;QACjD,IAAI,KAAK,GAAG,SAAS,CAAC;QAEtB,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,KAAK,4BAAoB,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,SAAc,CAAC;IAC/B,CAAC;IAEO,aAAa,CAAC,KAAa;QACjC,IAAI,yBAAgB,KAAK,SAAS;YAAE,OAAO;QAE3C,IAAI,CAAC,IAAI,CAAC,MAAM,sCAA4B,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;QAED,MAAM,GAAG,GAAG,yBAAgB,CAAC,GAAG,CAAC;QAEjC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAE7B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,KAAK,CAAC,CAAC;IACrC,CAAC;IAEO,QAAQ;QACd,MAAM,MAAM,GAAG,IAAI,CAAC,OAAkC,CAAC;QAEvD,IAAI,yBAAgB,EAAE,UAAU,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,yBAAiB,CAAC;YACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAElC,IAAI,QAAQ,EAAE,UAAU,KAAK,aAAa,EAAE,CAAC;gBAC3C,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,QAAQ,2BAAmB,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;gBAElG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAC9B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAA,kBAAS,EAAC,MAAM,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,OAAe,EAAE,QAAQ,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;QAE9B,MAAM,SAAS,GAAG,CAAC,SAAS,GAAG,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;QACpD,MAAM,UAAU,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,MAAM,CAAC;QAEpD,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAExB,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAE7B,KAAK,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;gBAEjC,IAAI,MAAM,EAAE,CAAC;oBACX,IAAA,sBAAW,EAAC,MAAM,CAAC,CAAC;gBACtB,CAAC;gBAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,WAAW;QACT,IAAI,CAAC,SAAS,4BAAoB,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAmB;QACnC,4EAA4E;QAC5E,6EAA6E;QAC7E,+DAA+D;QAC/D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAExB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAEhC,8EAA8E;QAC9E,iEAAiE;QACjE,IAAI,CAAC,KAAK,6BAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAA,+BAAoB,EAAC,SAAS,CAAC,CAAC;YAChC,IAAI,CAAC,UAAU,GAAG,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAEhC,IAAI,OAAO,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC9B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,SAAS,EAAE,CAAC;YACnB,IAAI,OAAO,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC9B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,SAAY,EAAE,SAAS,GAAG,IAAI,CAAC,UAAU;QACzD,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QACxB,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAExB,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,IAAI,CAAC,KAAK,2BAAmB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAM,EAAE,SAAS,CAAC,KAAK,KAAK,EAAE,CAAC;YAClF,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;YAChC,WAAW,4BAAmB,CAAC;QACjC,CAAC;QAED,IAAI,KAAK,8BAAsB,EAAE,CAAC;YAChC,WAAW,4BAAmB,CAAC;YAC/B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,KAAK,CAAC,CAAC,CAAC;QAEjD,IAAI,CAAC,SAAS,CAAC,sDAAsC,EAAE,wDAAwC,EAAE,WAAW,CAAC,CAAC;QAE9G,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnD,OAAO,EAAE,CAAC,KAAM,CAAC,CAAC;YAElB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAK,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAEO,SAAS,CAAC,SAAkB,EAAE,SAAS,GAAG,IAAI,CAAC,UAAU;QAC/D,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAExB,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;YAChC,WAAW,4BAAmB,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,KAAK,CAAC,CAAC,CAAC;QAEjD,IAAI,CAAC,SAAS,8BAAsB,wDAAwC,EAAE,WAAW,CAAC,CAAC;QAE3F,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClD,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;YAEhB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAK,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAEO,aAAa,CAAC,SAAuE,EAAE,KAAc;QAC3G,oFAAoF;QACpF,kFAAkF;QAClF,+EAA+E;QAC/E,oDAAoD;QACpD,EAAE;QACF,oFAAoF;QACpF,mFAAmF;QACnF,qFAAqF;QACrF,oFAAoF;QACpF,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,2BAAmB,CAAC,+BAAuB,CAAC;QAEpE,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;YAE3B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,SAAS;YACX,CAAC;YAED,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC;YAEzB,IAAA,iCAAiB,EAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,KAAK;QACP,IAAI,CAAC,aAAa,2BAAkB,CAAC;QAErC,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,KAAK;QACP,IAAI,CAAC,aAAa,2BAAkB,CAAC;QAErC,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,SAAS;QACX,IAAI,CAAC,aAAa,4BAAoB,CAAC;QAEvC,OAAO,CAAC,IAAI,CAAC,MAAM,6BAAqB,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,UAAU;QACZ,IAAI,CAAC,aAAa,6BAAqB,CAAC;QAExC,OAAO,CAAC,IAAI,CAAC,MAAM,8BAAsB,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,UAAU;QACZ,IAAI,CAAC,aAAa,6BAAqB,CAAC;QAExC,OAAO,CAAC,IAAI,CAAC,MAAM,8BAAsB,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,OAAO;QACT,IAAI,CAAC,aAAa,0BAAkB,CAAC;QAErC,OAAO,CAAC,IAAI,CAAC,MAAM,2BAAmB,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,SAAS;QACX,IAAI,CAAC,aAAa,4BAAoB,CAAC;QAEvC,OAAO,CAAC,IAAI,CAAC,MAAM,6BAAqB,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,+EAA+E;IAC/E,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,CAAC,GAAG,IAAU;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAE5B,IAAI,CAAC,KAAK,iCAAwB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,WAAW,CAAE,MAA0B,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACzD,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,IAAA,sBAAW,EAAC,MAAiC,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,oOAAoO,CACrO,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE3B,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,GAAqC,CAAC;IACpD,CAAC;IAED,IAAI,CACF,WAAqE,EACrE,UAA2E;QAE3E,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAE1B,6CAA6C;QAC7C,OAAO,IAAI,OAAO,CAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1D,IAAI,GAAG,EAAE,IAAI,CAAC;YAEd,IAAI,yBAAgB,KAAK,SAAS,EAAE,CAAC;gBACnC,IAAI,CAAC,KAAK,sCAA4B,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,CAAC;gBAED,GAAG,GAAG,yBAAgB,CAAC,GAAG,CAAC;gBAE3B,MAAM,QAAQ,GACZ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAI,CAAC,IAAI,IAAA,4BAAkB,EAAC,yBAAgB,EAAE,IAA4B,CAAC,CAAC;gBAElG,IAAI,GAAG,IAAA,oBAAU,EAAC,QAAQ,4BAAoB,IAA4B,EAAE,CAAC,CAAC,EAAE,yBAAgB,CAAC,aAAa,CAAC,CAAC;YAClH,CAAC;YACD,yGAAyG;YACzG,MAAM,gBAAgB,GAAG,WAAW;gBAClC,CAAC,CAAC,CAAC,KAAQ,EAAE,EAAE;oBACX,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;wBAClC,OAAO,CAAC,MAAM,CAAC,CAAC;oBAClB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,MAAM,CAAC,KAAK,CAAC,CAAC;oBAChB,CAAC;gBACH,CAAC;gBACH,CAAC,CAAE,OAAyC,CAAC;YAE/C,MAAM,eAAe,GAAG,UAAU;gBAChC,CAAC,CAAC,CAAC,MAAe,EAAE,EAAE;oBAClB,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;wBAClC,OAAO,CAAC,MAAM,CAAC,CAAC;oBAClB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,MAAM,CAAC,KAAK,CAAC,CAAC;oBAChB,CAAC;gBACH,CAAC;gBACH,CAAC,CAAC,MAAM,CAAC;YAEX,IAAI,KAAK,6BAAqB,EAAE,CAAC;gBAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;YACxF,CAAC;iBAAM,CAAC;gBACN,IAAI,KAAK,8BAAsB,EAAE,CAAC;oBAChC,gBAAgB,CAAC,IAAI,CAAC,MAAO,CAAC,CAAC;gBACjC,CAAC;qBAAM,IAAI,KAAK,8BAAsB,EAAE,CAAC;oBACvC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC/B,CAAC;gBAED,IAAI,GAAG,EAAE,CAAC;oBACR,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,IAAK,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CACH,UAAyE;QAEzE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,SAA+B;QACrC,OAAO,IAAI,CAAC,IAAI,CACd,KAAK,CAAC,EAAE;YACN,SAAS,EAAE,EAAE,CAAC;YACd,OAAO,KAAK,CAAC;QACf,CAAC,EACD,MAAM,CAAC,EAAE;YACP,SAAS,EAAE,EAAE,CAAC;YACd,MAAM,MAAM,CAAC;QACf,CAAC,CACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;CACF;AA9eD,0CA8eC;AAED,SAAgB,iBAAiB,CAAC,GAAY;IAC5C,OAAO,GAAG,YAAY,eAAe,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,oEAAiD,CAAC,CAAC,KAAK,CAAC,CAAC;AACvH,CAAC;AAED,SAAgB,cAAc,CAAC,GAAY;IACzC,OAAO,GAAG,YAAY,eAAe,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,iCAAwB,CAAC,KAAK,CAAC,CAAC;AACzF,CAAC;AAED,SAAgB,sBAAsB,CAA4B,GAAY;IAC5E,OAAO,GAAG,YAAY,eAAe,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,sCAA4B,CAAC,KAAK,CAAC,CAAC;AAC7F,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { DerivedSignal } from './derived.js';
2
+ export declare function watchSignal(signal: DerivedSignal<any, any>): void;
3
+ export declare function unwatchSignal(signal: DerivedSignal<any, any>, count?: number): void;
4
+ //# sourceMappingURL=connect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../src/internals/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkB,MAAM,cAAc,CAAC;AAG7D,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAiBjE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,SAAI,QAkBvE"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.watchSignal = watchSignal;
4
+ exports.unwatchSignal = unwatchSignal;
5
+ const derived_js_1 = require("./derived.js");
6
+ const get_js_1 = require("./get.js");
7
+ function watchSignal(signal) {
8
+ const { watchCount } = signal;
9
+ const newWatchCount = watchCount + 1;
10
+ signal.watchCount = newWatchCount;
11
+ // If > 0, already watching, return
12
+ if (watchCount > 0)
13
+ return;
14
+ for (const dep of signal.deps.keys()) {
15
+ watchSignal(dep);
16
+ }
17
+ if ((0, derived_js_1.isSubscription)(signal)) {
18
+ // Bootstrap the subscription
19
+ (0, get_js_1.checkSignal)(signal);
20
+ }
21
+ }
22
+ function unwatchSignal(signal, count = 1) {
23
+ const { watchCount } = signal;
24
+ const newWatchCount = Math.max(watchCount - count, 0);
25
+ signal.watchCount = newWatchCount;
26
+ if (newWatchCount > 0) {
27
+ return;
28
+ }
29
+ for (const dep of signal.deps.keys()) {
30
+ unwatchSignal(dep);
31
+ }
32
+ if ((0, derived_js_1.isSubscription)(signal)) {
33
+ // teardown the subscription
34
+ signal.value?.();
35
+ }
36
+ }
37
+ //# sourceMappingURL=connect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../src/internals/connect.ts"],"names":[],"mappings":";;AAGA,kCAiBC;AAED,sCAkBC;AAxCD,6CAA6D;AAC7D,qCAAuC;AAEvC,SAAgB,WAAW,CAAC,MAA+B;IACzD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAC9B,MAAM,aAAa,GAAG,UAAU,GAAG,CAAC,CAAC;IAErC,MAAM,CAAC,UAAU,GAAG,aAAa,CAAC;IAElC,mCAAmC;IACnC,IAAI,UAAU,GAAG,CAAC;QAAE,OAAO;IAE3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACrC,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,IAAI,IAAA,2BAAc,EAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,6BAA6B;QAC7B,IAAA,oBAAW,EAAC,MAAM,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAgB,aAAa,CAAC,MAA+B,EAAE,KAAK,GAAG,CAAC;IACtE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;IAEtD,MAAM,CAAC,UAAU,GAAG,aAAa,CAAC;IAElC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO;IACT,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACrC,aAAa,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,IAAI,IAAA,2BAAc,EAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,4BAA4B;QAC5B,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { DerivedSignal } from './derived.js';
2
+ export declare let CURRENT_CONSUMER: DerivedSignal<any, any> | undefined;
3
+ export declare let IS_WATCHING: boolean;
4
+ export declare const setIsWatching: (isWatching: boolean) => void;
5
+ export declare const setCurrentConsumer: (consumer: DerivedSignal<any, any> | undefined) => void;
6
+ //# sourceMappingURL=consumer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumer.d.ts","sourceRoot":"","sources":["../../../src/internals/consumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,eAAO,IAAI,gBAAgB,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;AAEjE,eAAO,IAAI,WAAW,SAAQ,CAAC;AAE/B,eAAO,MAAM,aAAa,eAAgB,OAAO,SAEhD,CAAC;AAEF,eAAO,MAAM,kBAAkB,aAAc,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS,SAE/E,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setCurrentConsumer = exports.setIsWatching = exports.IS_WATCHING = exports.CURRENT_CONSUMER = void 0;
4
+ exports.IS_WATCHING = false;
5
+ const setIsWatching = (isWatching) => {
6
+ exports.IS_WATCHING = isWatching;
7
+ };
8
+ exports.setIsWatching = setIsWatching;
9
+ const setCurrentConsumer = (consumer) => {
10
+ exports.CURRENT_CONSUMER = consumer;
11
+ };
12
+ exports.setCurrentConsumer = setCurrentConsumer;
13
+ //# sourceMappingURL=consumer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumer.js","sourceRoot":"","sources":["../../../src/internals/consumer.ts"],"names":[],"mappings":";;;AAIW,QAAA,WAAW,GAAG,KAAK,CAAC;AAExB,MAAM,aAAa,GAAG,CAAC,UAAmB,EAAE,EAAE;IACnD,mBAAW,GAAG,UAAU,CAAC;AAC3B,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB;AAEK,MAAM,kBAAkB,GAAG,CAAC,QAA6C,EAAE,EAAE;IAClF,wBAAgB,GAAG,QAAQ,CAAC;AAC9B,CAAC,CAAC;AAFW,QAAA,kBAAkB,sBAE7B"}
@@ -0,0 +1,33 @@
1
+ import { SignalOptionsWithInit } from '../types.js';
2
+ import { DerivedSignal } from './derived.js';
3
+ export declare const CONTEXT_KEY: unique symbol;
4
+ export type Context<T> = {
5
+ defaultValue: T;
6
+ };
7
+ export type ContextPair<T extends unknown[]> = {
8
+ [K in keyof T]: [Context<T[K]>, NoInfer<T[K]>];
9
+ };
10
+ export declare class ContextImpl<T> {
11
+ readonly defaultValue: T;
12
+ _key: symbol;
13
+ _description: string;
14
+ constructor(defaultValue: T, desc?: string);
15
+ }
16
+ export declare const createContext: <T>(initialValue: T, description?: string) => Context<T>;
17
+ export declare class SignalScope {
18
+ constructor(contexts: [ContextImpl<unknown>, unknown][], parent?: SignalScope);
19
+ private parentScope?;
20
+ private contexts;
21
+ private children;
22
+ private signals;
23
+ getChild(contexts: [ContextImpl<unknown>, unknown][]): SignalScope;
24
+ getContext<T>(_context: Context<T>): T | undefined;
25
+ get<T, Args extends unknown[]>(fn: (...args: Args) => T, args: Args, opts?: Partial<SignalOptionsWithInit<T, Args>>): DerivedSignal<T, Args>;
26
+ }
27
+ export declare let ROOT_SCOPE: SignalScope;
28
+ export declare const clearRootScope: () => void;
29
+ export declare const getCurrentScope: () => SignalScope;
30
+ export declare function withContexts<C extends unknown[], U>(contexts: [...ContextPair<C>], fn: () => U): U;
31
+ export declare const withScope: <T>(scope: SignalScope, fn: () => T) => T;
32
+ export declare const useContext: <T>(context: Context<T>) => T;
33
+ //# sourceMappingURL=contexts.d.ts.map