@assistant-ui/tap 0.3.5 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/README.md +24 -23
  2. package/dist/core/ResourceFiber.d.ts +1 -1
  3. package/dist/core/ResourceFiber.d.ts.map +1 -1
  4. package/dist/core/ResourceFiber.js +15 -8
  5. package/dist/core/ResourceFiber.js.map +1 -1
  6. package/dist/core/commit.d.ts +1 -1
  7. package/dist/core/commit.d.ts.map +1 -1
  8. package/dist/core/commit.js +30 -48
  9. package/dist/core/commit.js.map +1 -1
  10. package/dist/core/context.d.ts +2 -2
  11. package/dist/core/context.d.ts.map +1 -1
  12. package/dist/core/context.js +2 -2
  13. package/dist/core/context.js.map +1 -1
  14. package/dist/core/createResource.d.ts +3 -2
  15. package/dist/core/createResource.d.ts.map +1 -1
  16. package/dist/core/createResource.js +33 -19
  17. package/dist/core/createResource.js.map +1 -1
  18. package/dist/core/env.d.ts +2 -0
  19. package/dist/core/env.d.ts.map +1 -0
  20. package/dist/core/env.js +3 -0
  21. package/dist/core/env.js.map +1 -0
  22. package/dist/core/execution-context.d.ts +1 -0
  23. package/dist/core/execution-context.d.ts.map +1 -1
  24. package/dist/core/execution-context.js +8 -0
  25. package/dist/core/execution-context.js.map +1 -1
  26. package/dist/core/resource.d.ts +3 -3
  27. package/dist/core/resource.d.ts.map +1 -1
  28. package/dist/core/resource.js.map +1 -1
  29. package/dist/core/scheduler.d.ts +1 -1
  30. package/dist/core/scheduler.d.ts.map +1 -1
  31. package/dist/core/scheduler.js +1 -1
  32. package/dist/core/scheduler.js.map +1 -1
  33. package/dist/core/types.d.ts +22 -21
  34. package/dist/core/types.d.ts.map +1 -1
  35. package/dist/core/types.js +1 -1
  36. package/dist/core/types.js.map +1 -1
  37. package/dist/core/withKey.d.ts +3 -0
  38. package/dist/core/withKey.d.ts.map +1 -0
  39. package/dist/core/withKey.js +4 -0
  40. package/dist/core/withKey.js.map +1 -0
  41. package/dist/hooks/tap-callback.d.ts.map +1 -1
  42. package/dist/hooks/tap-callback.js +1 -0
  43. package/dist/hooks/tap-callback.js.map +1 -1
  44. package/dist/hooks/tap-const.d.ts +2 -0
  45. package/dist/hooks/tap-const.d.ts.map +1 -0
  46. package/dist/hooks/tap-const.js +6 -0
  47. package/dist/hooks/tap-const.js.map +1 -0
  48. package/dist/hooks/tap-effect-event.d.ts.map +1 -1
  49. package/dist/hooks/tap-effect-event.js +11 -0
  50. package/dist/hooks/tap-effect-event.js.map +1 -1
  51. package/dist/hooks/tap-effect.d.ts.map +1 -1
  52. package/dist/hooks/tap-effect.js +43 -31
  53. package/dist/hooks/tap-effect.js.map +1 -1
  54. package/dist/hooks/tap-inline-resource.d.ts +2 -2
  55. package/dist/hooks/tap-inline-resource.d.ts.map +1 -1
  56. package/dist/hooks/tap-memo.js +1 -1
  57. package/dist/hooks/tap-memo.js.map +1 -1
  58. package/dist/hooks/tap-resource.d.ts +3 -3
  59. package/dist/hooks/tap-resource.d.ts.map +1 -1
  60. package/dist/hooks/tap-resource.js +17 -9
  61. package/dist/hooks/tap-resource.js.map +1 -1
  62. package/dist/hooks/tap-resources.d.ts +2 -10
  63. package/dist/hooks/tap-resources.d.ts.map +1 -1
  64. package/dist/hooks/tap-resources.js +74 -43
  65. package/dist/hooks/tap-resources.js.map +1 -1
  66. package/dist/hooks/tap-state.d.ts.map +1 -1
  67. package/dist/hooks/tap-state.js +37 -24
  68. package/dist/hooks/tap-state.js.map +1 -1
  69. package/dist/hooks/utils/depsShallowEqual.d.ts.map +1 -0
  70. package/dist/hooks/utils/depsShallowEqual.js.map +1 -0
  71. package/dist/hooks/utils/tapHook.d.ts +6 -0
  72. package/dist/hooks/utils/tapHook.d.ts.map +1 -0
  73. package/dist/hooks/utils/tapHook.js +24 -0
  74. package/dist/hooks/utils/tapHook.js.map +1 -0
  75. package/dist/index.d.ts +5 -3
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +4 -2
  78. package/dist/index.js.map +1 -1
  79. package/dist/react/use-resource.d.ts +2 -2
  80. package/dist/react/use-resource.d.ts.map +1 -1
  81. package/dist/react/use-resource.js +24 -10
  82. package/dist/react/use-resource.js.map +1 -1
  83. package/package.json +11 -4
  84. package/src/__tests__/basic/resourceHandle.test.ts +4 -4
  85. package/src/__tests__/basic/tapEffect.basic.test.ts +3 -2
  86. package/src/__tests__/basic/tapResources.basic.test.ts +84 -64
  87. package/src/__tests__/basic/tapState.basic.test.ts +8 -8
  88. package/src/__tests__/errors/errors.effect-errors.test.ts +8 -3
  89. package/src/__tests__/lifecycle/lifecycle.dependencies.test.ts +3 -2
  90. package/src/__tests__/lifecycle/lifecycle.mount-unmount.test.ts +2 -2
  91. package/src/__tests__/react/concurrent-mode.test.tsx +243 -0
  92. package/src/__tests__/strictmode/react-strictmode-behavior.test.tsx +709 -0
  93. package/src/__tests__/strictmode/react-strictmode-rerender-sources.test.tsx +392 -0
  94. package/src/__tests__/strictmode/strictmode.test.ts +270 -0
  95. package/src/__tests__/strictmode/tap-strictmode-rerender-sources.test.ts +723 -0
  96. package/src/__tests__/test-utils.ts +8 -6
  97. package/src/core/ResourceFiber.ts +21 -11
  98. package/src/core/commit.ts +29 -58
  99. package/src/core/context.ts +2 -2
  100. package/src/core/createResource.ts +46 -22
  101. package/src/core/env.ts +3 -0
  102. package/src/core/execution-context.ts +9 -0
  103. package/src/core/resource.ts +6 -3
  104. package/src/core/scheduler.ts +1 -1
  105. package/src/core/types.ts +25 -26
  106. package/src/core/withKey.ts +8 -0
  107. package/src/hooks/tap-callback.ts +1 -0
  108. package/src/hooks/tap-const.ts +6 -0
  109. package/src/hooks/tap-effect-event.ts +15 -0
  110. package/src/hooks/tap-effect.ts +48 -38
  111. package/src/hooks/tap-inline-resource.ts +2 -2
  112. package/src/hooks/tap-memo.ts +1 -1
  113. package/src/hooks/tap-resource.ts +24 -20
  114. package/src/hooks/tap-resources.ts +86 -63
  115. package/src/hooks/tap-state.ts +49 -26
  116. package/src/hooks/utils/tapHook.ts +35 -0
  117. package/src/index.ts +8 -3
  118. package/src/react/use-resource.ts +27 -16
  119. package/dist/hooks/depsShallowEqual.d.ts.map +0 -1
  120. package/dist/hooks/depsShallowEqual.js.map +0 -1
  121. /package/dist/hooks/{depsShallowEqual.d.ts → utils/depsShallowEqual.d.ts} +0 -0
  122. /package/dist/hooks/{depsShallowEqual.js → utils/depsShallowEqual.js} +0 -0
  123. /package/src/hooks/{depsShallowEqual.ts → utils/depsShallowEqual.ts} +0 -0
package/README.md CHANGED
@@ -176,20 +176,18 @@ const Timer = resource(() => {
176
176
 
177
177
  ### `tapResources`
178
178
 
179
- Renders multiple resources from a record/map, similar to React's list rendering. Returns a record with the same keys mapping to each resource's result.
179
+ Renders multiple resources from an array, similar to React's list rendering. Returns an array with each resource's result.
180
180
 
181
181
  ```typescript
182
- tapResources<T, R, K extends string | number>(
183
- map: Record<K, T>,
184
- getElement: (value: T, key: K) => ResourceElement<R>,
185
- getElementDeps?: any[]
186
- ): Record<K, R>
182
+ tapResources<E extends ResourceElement<any, any>>(
183
+ getElements: () => readonly E[],
184
+ getElementsDeps: readonly any[]
185
+ ): ExtractResourceReturnType<E>[]
187
186
  ```
188
187
 
189
188
  **Parameters:**
190
- - `map`: A record/object where keys identify each resource instance
191
- - `getElement`: A function that receives each value and key, returning a ResourceElement
192
- - `getElementDeps`: Optional dependency array for memoizing the getElement function
189
+ - `getElements`: A function that returns an array of ResourceElements
190
+ - `getElementsDeps`: Dependency array for memoizing the getElements function
193
191
 
194
192
  **Example:**
195
193
 
@@ -201,45 +199,48 @@ const TodoItem = resource((props: { text: string }) => {
201
199
 
202
200
  const TodoList = resource(() => {
203
201
  const todos = tapMemo(
204
- () => ({
205
- "1": { text: "Learn tap" },
206
- "2": { text: "Build something awesome" },
207
- }),
202
+ () => [
203
+ { id: "1", text: "Learn tap" },
204
+ { id: "2", text: "Build something awesome" },
205
+ ],
208
206
  [],
209
207
  );
210
208
 
211
- // Returns Record<string, { text, completed, setCompleted }>
212
- const todoItems = tapResources(todos, (todo) => TodoItem({ text: todo.text }));
209
+ // Returns Array<{ text, completed, setCompleted }>
210
+ const todoItems = tapResources(
211
+ () => todos.map((todo) => TodoItem({ text: todo.text })),
212
+ [todos]
213
+ );
213
214
 
214
215
  return todoItems;
215
216
  });
216
217
  ```
217
218
 
218
219
  **Key features:**
219
- - Resource instances are preserved when keys remain the same
220
- - Automatically cleans up resources when keys are removed
220
+ - Resource instances are preserved when keys remain the same (use `withKey()` to provide stable keys)
221
+ - Automatically cleans up resources when removed from the array
221
222
  - Handles resource type changes (recreates fiber if type changes)
222
223
 
223
- ### `tapContext` and Context Support
224
+ ### `tap` and Context Support
224
225
 
225
226
  Create and use context to pass values through resource boundaries without prop drilling.
226
227
 
227
228
  ```typescript
228
229
  import {
229
- createContext,
230
- tapContext,
230
+ createResourceContext,
231
+ tap,
231
232
  withContextProvider,
232
233
  } from "@assistant-ui/tap";
233
234
 
234
- const MyContext = createContext(defaultValue);
235
+ const MyContext = createResourceContext(defaultValue);
235
236
 
236
237
  // Provide context
237
238
  withContextProvider(MyContext, value, () => {
238
- // Inside this function, tapContext can access the value
239
+ // Inside this function, tap can access the value
239
240
  });
240
241
 
241
242
  // Access context in a resource
242
- const value = tapContext(MyContext);
243
+ const value = tap(MyContext);
243
244
  ```
244
245
 
245
246
  ## Resource Management
@@ -1,5 +1,5 @@
1
1
  import { ResourceFiber, RenderResult, Resource } from "./types.js";
2
- export declare function createResourceFiber<R, P>(resource: Resource<R, P>, scheduleRerender: () => void): ResourceFiber<R, P>;
2
+ export declare function createResourceFiber<R, P>(type: Resource<R, P>, dispatchUpdate: (callback: () => boolean) => void, strictMode?: "root" | "child" | null): ResourceFiber<R, P>;
3
3
  export declare function unmountResourceFiber<R, P>(fiber: ResourceFiber<R, P>): void;
4
4
  export declare function renderResourceFiber<R, P>(fiber: ResourceFiber<R, P>, props: P): RenderResult;
5
5
  export declare function commitResourceFiber<R, P>(fiber: ResourceFiber<R, P>, result: RenderResult): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceFiber.d.ts","sourceRoot":"","sources":["../../src/core/ResourceFiber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,mBAAgB;AAKhE,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EACtC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EACxB,gBAAgB,EAAE,MAAM,IAAI,GAC3B,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAWrB;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAI3E;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EACtC,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,CAAC,GACP,YAAY,CAiBd;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EACtC,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,MAAM,EAAE,YAAY,GACnB,IAAI,CAKN"}
1
+ {"version":3,"file":"ResourceFiber.d.ts","sourceRoot":"","sources":["../../src/core/ResourceFiber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,mBAAgB;AAMhE,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EACtC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,OAAO,KAAK,IAAI,EACjD,UAAU,GAAE,MAAM,GAAG,OAAO,GAAG,IAA8B,GAC5D,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAYrB;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAM3E;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EACtC,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,CAAC,GACP,YAAY,CAiBd;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EACtC,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,MAAM,EAAE,YAAY,GACnB,IAAI,CAUN"}
@@ -1,10 +1,12 @@
1
1
  import { commitRender, cleanupAllEffects } from "./commit.js";
2
- import { withResourceFiber } from "./execution-context.js";
2
+ import { getDevStrictMode, withResourceFiber } from "./execution-context.js";
3
3
  import { callResourceFn } from "./callResourceFn.js";
4
- export function createResourceFiber(resource, scheduleRerender) {
4
+ import { isDevelopment } from "./env.js";
5
+ export function createResourceFiber(type, dispatchUpdate, strictMode = getDevStrictMode(false)) {
5
6
  return {
6
- resource,
7
- scheduleRerender,
7
+ type,
8
+ dispatchUpdate,
9
+ devStrictMode: strictMode,
8
10
  cells: [],
9
11
  currentIndex: 0,
10
12
  renderContext: undefined,
@@ -14,7 +16,8 @@ export function createResourceFiber(resource, scheduleRerender) {
14
16
  };
15
17
  }
16
18
  export function unmountResourceFiber(fiber) {
17
- // Clean up all effects
19
+ if (!fiber.isMounted)
20
+ throw new Error("Tried to unmount a fiber that is already unmounted");
18
21
  fiber.isMounted = false;
19
22
  cleanupAllEffects(fiber);
20
23
  }
@@ -22,12 +25,12 @@ export function renderResourceFiber(fiber, props) {
22
25
  const result = {
23
26
  commitTasks: [],
24
27
  props,
25
- state: undefined,
28
+ output: undefined,
26
29
  };
27
30
  withResourceFiber(fiber, () => {
28
31
  fiber.renderContext = result;
29
32
  try {
30
- result.state = callResourceFn(fiber.resource, props);
33
+ result.output = callResourceFn(fiber.type, props);
31
34
  }
32
35
  finally {
33
36
  fiber.renderContext = undefined;
@@ -37,7 +40,11 @@ export function renderResourceFiber(fiber, props) {
37
40
  }
38
41
  export function commitResourceFiber(fiber, result) {
39
42
  fiber.isMounted = true;
43
+ if (isDevelopment && fiber.isNeverMounted && fiber.devStrictMode === "root") {
44
+ commitRender(result);
45
+ cleanupAllEffects(fiber);
46
+ }
40
47
  fiber.isNeverMounted = false;
41
- commitRender(result, fiber);
48
+ commitRender(result);
42
49
  }
43
50
  //# sourceMappingURL=ResourceFiber.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceFiber.js","sourceRoot":"","sources":["../../src/core/ResourceFiber.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAiB;AAC3D,OAAO,EAAE,iBAAiB,EAAE,+BAA4B;AACxD,OAAO,EAAE,cAAc,EAAE,4BAAyB;AAElD,MAAM,UAAU,mBAAmB,CACjC,QAAwB,EACxB,gBAA4B;IAE5B,OAAO;QACL,QAAQ;QACR,gBAAgB;QAChB,KAAK,EAAE,EAAE;QACT,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,SAAS;QACxB,aAAa,EAAE,IAAI;QACnB,SAAS,EAAE,KAAK;QAChB,cAAc,EAAE,IAAI;KACrB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAO,KAA0B;IACnE,uBAAuB;IACvB,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;IACxB,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAA0B,EAC1B,KAAQ;IAER,MAAM,MAAM,GAAiB;QAC3B,WAAW,EAAE,EAAE;QACf,KAAK;QACL,KAAK,EAAE,SAAS;KACjB,CAAC;IAEF,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE;QAC5B,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;QAClC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAA0B,EAC1B,MAAoB;IAEpB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC;IAE7B,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"ResourceFiber.js","sourceRoot":"","sources":["../../src/core/ResourceFiber.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAiB;AAC3D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,+BAA4B;AAC1E,OAAO,EAAE,cAAc,EAAE,4BAAyB;AAClD,OAAO,EAAE,aAAa,EAAE,iBAAc;AAEtC,MAAM,UAAU,mBAAmB,CACjC,IAAoB,EACpB,cAAiD,EACjD,aAAsC,gBAAgB,CAAC,KAAK,CAAC;IAE7D,OAAO;QACL,IAAI;QACJ,cAAc;QACd,aAAa,EAAE,UAAU;QACzB,KAAK,EAAE,EAAE;QACT,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,SAAS;QACxB,aAAa,EAAE,IAAI;QACnB,SAAS,EAAE,KAAK;QAChB,cAAc,EAAE,IAAI;KACrB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAO,KAA0B;IACnE,IAAI,CAAC,KAAK,CAAC,SAAS;QAClB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAExE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;IACxB,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAA0B,EAC1B,KAAQ;IAER,MAAM,MAAM,GAAG;QACb,WAAW,EAAE,EAAE;QACf,KAAK;QACL,MAAM,EAAE,SAA0B;KACnC,CAAC;IAEF,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE;QAC5B,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;QAClC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAA0B,EAC1B,MAAoB;IAEpB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;IAEvB,IAAI,aAAa,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;QAC5E,YAAY,CAAC,MAAM,CAAC,CAAC;QACrB,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC;IAC7B,YAAY,CAAC,MAAM,CAAC,CAAC;AACvB,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { ResourceFiber, RenderResult } from "./types.js";
2
- export declare function commitRender<R, P>(renderResult: RenderResult, fiber: ResourceFiber<R, P>): void;
2
+ export declare function commitRender(renderResult: RenderResult): void;
3
3
  export declare function cleanupAllEffects<R, P>(executionContext: ResourceFiber<R, P>): void;
4
4
  //# sourceMappingURL=commit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"commit.d.ts","sourceRoot":"","sources":["../../src/core/commit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,mBAAgB;AAEtD,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAC/B,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GACzB,IAAI,CAiDN;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,QAgB5E"}
1
+ {"version":3,"file":"commit.d.ts","sourceRoot":"","sources":["../../src/core/commit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,mBAAgB;AAEtD,wBAAgB,YAAY,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAkB7D;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,QAqB5E"}
@@ -1,63 +1,45 @@
1
- export function commitRender(renderResult, fiber) {
2
- // Process all tasks collected during render
3
- renderResult.commitTasks.forEach((task) => {
4
- const cellIndex = task.cellIndex;
5
- const effectCell = fiber.cells[cellIndex];
6
- if (effectCell.type !== "effect") {
7
- throw new Error("Cannot find effect cell");
1
+ export function commitRender(renderResult) {
2
+ const errors = [];
3
+ for (const task of renderResult.commitTasks) {
4
+ try {
5
+ task();
8
6
  }
9
- // Check if deps changed
10
- let shouldRunEffect = true;
11
- if (effectCell.deps !== undefined && task.deps !== undefined) {
12
- shouldRunEffect =
13
- effectCell.deps.length !== task.deps.length ||
14
- effectCell.deps.some((dep, j) => !Object.is(dep, task.deps[j]));
7
+ catch (error) {
8
+ errors.push(error);
15
9
  }
16
- // Run cleanup if effect will re-run
17
- if (shouldRunEffect) {
18
- if (effectCell.mounted) {
19
- if (typeof effectCell.deps !== typeof task.deps) {
20
- throw new Error("tapEffect called with and without dependencies across re-renders");
21
- }
22
- try {
23
- if (effectCell.mounted && effectCell.cleanup) {
24
- effectCell.cleanup();
25
- }
26
- }
27
- finally {
28
- effectCell.mounted = false;
29
- }
30
- }
31
- const cleanup = task.effect();
32
- if (cleanup !== undefined && typeof cleanup !== "function") {
33
- throw new Error("An effect function must either return a cleanup function or nothing. " +
34
- `Received: ${typeof cleanup}`);
35
- }
36
- effectCell.mounted = true;
37
- effectCell.cleanup = typeof cleanup === "function" ? cleanup : undefined;
38
- effectCell.deps = task.deps;
10
+ }
11
+ if (errors.length > 0) {
12
+ if (errors.length === 1) {
13
+ throw errors[0];
14
+ }
15
+ else {
16
+ throw new AggregateError(errors, "Errors during commit");
39
17
  }
40
- });
18
+ }
41
19
  }
42
20
  export function cleanupAllEffects(executionContext) {
43
- let firstError = null;
44
- // Run cleanups in reverse order
45
- for (let i = executionContext.cells.length - 1; i >= 0; i--) {
46
- const cell = executionContext.cells[i];
47
- if (cell?.type === "effect" && cell.mounted && cell.cleanup) {
21
+ const errors = [];
22
+ for (const cell of executionContext.cells) {
23
+ if (cell?.type === "effect" && cell.cleanup) {
48
24
  try {
49
- cell.cleanup();
25
+ cell.cleanup?.();
50
26
  }
51
27
  catch (e) {
52
- if (firstError == null)
53
- firstError = e;
28
+ errors.push(e);
54
29
  }
55
30
  finally {
56
- cell.mounted = false;
31
+ cell.cleanup = undefined;
32
+ cell.deps = null; // Reset deps so effect runs again on next mount
57
33
  }
58
34
  }
59
35
  }
60
- if (firstError != null)
61
- throw firstError;
36
+ if (errors.length > 0) {
37
+ if (errors.length === 1) {
38
+ throw errors[0];
39
+ }
40
+ else {
41
+ throw new AggregateError(errors, "Errors during cleanup");
42
+ }
43
+ }
62
44
  }
63
45
  //# sourceMappingURL=commit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"commit.js","sourceRoot":"","sources":["../../src/core/commit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commit.js","sourceRoot":"","sources":["../../src/core/commit.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,YAAY,CAAC,YAA0B;IACrD,MAAM,MAAM,GAAc,EAAE,CAAC;IAE7B,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC;YACH,IAAI,EAAE,CAAC;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAO,gBAAqC;IAC3E,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC1C,IAAI,IAAI,EAAE,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACnB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;gBACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,gDAAgD;YACpE,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -2,8 +2,8 @@ declare const contextValue: unique symbol;
2
2
  type Context<T> = {
3
3
  [contextValue]: T;
4
4
  };
5
- export declare const createContext: <T>(defaultValue: T) => Context<T>;
5
+ export declare const createResourceContext: <T>(defaultValue: T) => Context<T>;
6
6
  export declare const withContextProvider: <T, TResult>(context: Context<T>, value: T, fn: () => TResult) => TResult;
7
- export declare const tapContext: <T>(context: Context<T>) => T;
7
+ export declare const tap: <T>(context: Context<T>) => T;
8
8
  export {};
9
9
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,YAAY,EAAE,OAAO,MAA8B,CAAC;AAC1D,KAAK,OAAO,CAAC,CAAC,IAAI;IAChB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,cAAc,CAAC,KAAG,OAAO,CAAC,CAAC,CAI3D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,CAAC,EAAE,OAAO,EAC5C,SAAS,OAAO,CAAC,CAAC,CAAC,EACnB,OAAO,CAAC,EACR,IAAI,MAAM,OAAO,YASlB,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,SAAS,OAAO,CAAC,CAAC,CAAC,MAEhD,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,YAAY,EAAE,OAAO,MAA8B,CAAC;AAC1D,KAAK,OAAO,CAAC,CAAC,IAAI;IAChB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,CAAC,EAAE,cAAc,CAAC,KAAG,OAAO,CAAC,CAAC,CAInE,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,CAAC,EAAE,OAAO,EAC5C,SAAS,OAAO,CAAC,CAAC,CAAC,EACnB,OAAO,CAAC,EACR,IAAI,MAAM,OAAO,YASlB,CAAC;AAEF,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,SAAS,OAAO,CAAC,CAAC,CAAC,MAEzC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  const contextValue = Symbol("tap.Context");
2
- export const createContext = (defaultValue) => {
2
+ export const createResourceContext = (defaultValue) => {
3
3
  return {
4
4
  [contextValue]: defaultValue,
5
5
  };
@@ -14,7 +14,7 @@ export const withContextProvider = (context, value, fn) => {
14
14
  context[contextValue] = previousValue;
15
15
  }
16
16
  };
17
- export const tapContext = (context) => {
17
+ export const tap = (context) => {
18
18
  return context[contextValue];
19
19
  };
20
20
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAkB,MAAM,CAAC,aAAa,CAAC,CAAC;AAK1D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAI,YAAe,EAAc,EAAE;IAC9D,OAAO;QACL,CAAC,YAAY,CAAC,EAAE,YAAY;KAC7B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,OAAmB,EACnB,KAAQ,EACR,EAAiB,EACjB,EAAE;IACF,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5C,OAAO,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;IAC9B,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,YAAY,CAAC,GAAG,aAAa,CAAC;IACxC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAI,OAAmB,EAAE,EAAE;IACnD,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC;AAC/B,CAAC,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAkB,MAAM,CAAC,aAAa,CAAC,CAAC;AAK1D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAI,YAAe,EAAc,EAAE;IACtE,OAAO;QACL,CAAC,YAAY,CAAC,EAAE,YAAY;KAC7B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,OAAmB,EACnB,KAAQ,EACR,EAAiB,EACjB,EAAE;IACF,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5C,OAAO,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;IAC9B,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,YAAY,CAAC,GAAG,aAAa,CAAC;IACxC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,CAAI,OAAmB,EAAE,EAAE;IAC5C,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC;AAC/B,CAAC,CAAC"}
@@ -2,13 +2,14 @@ import { ResourceElement } from "./types.js";
2
2
  export declare namespace createResource {
3
3
  type Unsubscribe = () => void;
4
4
  interface Handle<R, P> {
5
- getState(): R;
5
+ getValue(): R;
6
6
  subscribe(callback: () => void): Unsubscribe;
7
7
  render(element: ResourceElement<R, P>): void;
8
8
  unmount(): void;
9
9
  }
10
10
  }
11
- export declare const createResource: <R, P>(element: ResourceElement<R, P>, { mount }?: {
11
+ export declare const createResource: <R, P>(element: ResourceElement<R, P>, { mount, devStrictMode, }?: {
12
12
  mount?: boolean;
13
+ devStrictMode?: boolean;
13
14
  }) => createResource.Handle<R, P>;
14
15
  //# sourceMappingURL=createResource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createResource.d.ts","sourceRoot":"","sources":["../../src/core/createResource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,eAAe,EAAE,mBAAgB;AAexD,yBAAiB,cAAc,CAAC;IAC9B,KAAY,WAAW,GAAG,MAAM,IAAI,CAAC;IAErC,UAAiB,MAAM,CAAC,CAAC,EAAE,CAAC;QAC1B,QAAQ,IAAI,CAAC,CAAC;QACd,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW,CAAC;QAC7C,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;QAC7C,OAAO,IAAI,IAAI,CAAC;KACjB;CACF;AA4CD,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,CAAC,EACjC,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,YAAkB;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,KACzC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CA4C5B,CAAC"}
1
+ {"version":3,"file":"createResource.d.ts","sourceRoot":"","sources":["../../src/core/createResource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,eAAe,EAAE,mBAAgB;AAkBxD,yBAAiB,cAAc,CAAC;IAC9B,KAAY,WAAW,GAAG,MAAM,IAAI,CAAC;IAErC,UAAiB,MAAM,CAAC,CAAC,EAAE,CAAC;QAC1B,QAAQ,IAAI,CAAC,CAAC;QACd,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW,CAAC;QAC7C,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;QAC7C,OAAO,IAAI,IAAI,CAAC;KACjB;CACF;AAgDD,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,CAAC,EACjC,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,4BAGG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,KACnD,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CA0D5B,CAAC"}
@@ -1,50 +1,57 @@
1
1
  import { createResourceFiber, unmountResourceFiber, renderResourceFiber, commitResourceFiber, } from "./ResourceFiber.js";
2
- import { flushSync, UpdateScheduler } from "./scheduler.js";
2
+ import { flushResourcesSync, UpdateScheduler } from "./scheduler.js";
3
3
  import { tapRef } from "../hooks/tap-ref.js";
4
4
  import { tapState } from "../hooks/tap-state.js";
5
5
  import { tapMemo } from "../hooks/tap-memo.js";
6
6
  import { tapEffect } from "../hooks/tap-effect.js";
7
7
  import { resource } from "./resource.js";
8
8
  import { tapResource } from "../hooks/tap-resource.js";
9
+ import { tapConst } from "../hooks/tap-const.js";
10
+ import { getDevStrictMode } from "./execution-context.js";
11
+ import { isDevelopment } from "./env.js";
9
12
  const HandleWrapperResource = resource((state) => {
10
- const [, setElement] = tapState(state.element);
11
- const value = tapResource(state.element);
12
- const subscribers = tapRef(new Set()).current;
13
- const valueRef = tapRef(value);
13
+ const [, setElement] = tapState(state.elementRef.current);
14
+ const output = tapResource(state.elementRef.current);
15
+ const subscribers = tapConst(() => new Set(), []);
16
+ const valueRef = tapRef(output);
14
17
  tapEffect(() => {
15
- if (value !== valueRef.current) {
16
- valueRef.current = value;
18
+ if (output !== valueRef.current) {
19
+ valueRef.current = output;
17
20
  subscribers.forEach((callback) => callback());
18
21
  }
19
22
  });
20
23
  const handle = tapMemo(() => ({
21
- getState: () => valueRef.current,
24
+ getValue: () => valueRef.current,
22
25
  subscribe: (callback) => {
23
26
  subscribers.add(callback);
24
27
  return () => subscribers.delete(callback);
25
28
  },
26
- render: (element) => {
27
- const changed = state.element !== element;
28
- state.element = element;
29
+ render: (el) => {
30
+ const changed = state.elementRef.current !== el;
31
+ state.elementRef.current = el;
29
32
  if (state.onRender(changed)) {
30
- setElement(element);
33
+ setElement(el);
31
34
  }
32
35
  },
33
36
  unmount: state.onUnmount,
34
- }), []);
37
+ }), [state]);
35
38
  return handle;
36
39
  });
37
- export const createResource = (element, { mount = true } = {}) => {
40
+ export const createResource = (element, { mount = true, devStrictMode = false, } = {}) => {
38
41
  let isMounted = mount;
39
42
  let render;
40
43
  const props = {
41
- element,
44
+ elementRef: { current: element },
42
45
  onRender: (changed) => {
43
46
  if (isMounted)
44
47
  return changed;
45
48
  isMounted = true;
46
- flushSync(() => {
49
+ flushResourcesSync(() => {
47
50
  if (changed) {
51
+ // In strict mode, render twice to detect side effects
52
+ if (isDevelopment && fiber.devStrictMode === "root") {
53
+ void renderResourceFiber(fiber, props);
54
+ }
48
55
  render = renderResourceFiber(fiber, props);
49
56
  }
50
57
  if (scheduler.isDirty)
@@ -61,15 +68,22 @@ export const createResource = (element, { mount = true } = {}) => {
61
68
  },
62
69
  };
63
70
  const scheduler = new UpdateScheduler(() => {
71
+ // In strict mode, render twice to detect side effects
72
+ if (isDevelopment && fiber.devStrictMode === "root") {
73
+ void renderResourceFiber(fiber, props);
74
+ }
64
75
  render = renderResourceFiber(fiber, props);
65
76
  if (scheduler.isDirty || !isMounted)
66
77
  return;
67
78
  commitResourceFiber(fiber, render);
68
79
  });
69
- const fiber = createResourceFiber((HandleWrapperResource), () => scheduler.markDirty());
70
- flushSync(() => {
80
+ const fiber = createResourceFiber((HandleWrapperResource), (callback) => {
81
+ if (callback())
82
+ scheduler.markDirty();
83
+ }, getDevStrictMode(devStrictMode));
84
+ flushResourcesSync(() => {
71
85
  scheduler.markDirty();
72
86
  });
73
- return render.state;
87
+ return render.output;
74
88
  };
75
89
  //# sourceMappingURL=createResource.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createResource.js","sourceRoot":"","sources":["../../src/core/createResource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createResource.js","sourceRoot":"","sources":["../../src/core/createResource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const isDevelopment: boolean;
2
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/core/env.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,SAEU,CAAC"}
@@ -0,0 +1,3 @@
1
+ export const isDevelopment = process.env["NODE_ENV"] === "development" ||
2
+ process.env["NODE_ENV"] === "test";
3
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/core/env.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GACxB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,aAAa;IACzC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,MAAM,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { ResourceFiber } from "./types.js";
2
2
  export declare function withResourceFiber<R, P>(fiber: ResourceFiber<R, P>, fn: () => void): void;
3
3
  export declare function getCurrentResourceFiber(): ResourceFiber<unknown, unknown>;
4
+ export declare function getDevStrictMode(enable: boolean): "root" | "child" | null;
4
5
  //# sourceMappingURL=execution-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"execution-context.d.ts","sourceRoot":"","sources":["../../src/core/execution-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAgB;AAIxC,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EACpC,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,EAAE,EAAE,MAAM,IAAI,GACb,IAAI,CAoBN;AACD,wBAAgB,uBAAuB,IAAI,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAKzE"}
1
+ {"version":3,"file":"execution-context.d.ts","sourceRoot":"","sources":["../../src/core/execution-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,mBAAgB;AAIxC,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EACpC,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,EAAE,EAAE,MAAM,IAAI,GACb,IAAI,CAoBN;AACD,wBAAgB,uBAAuB,IAAI,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAKzE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,2BAM/C"}
@@ -1,3 +1,4 @@
1
+ import { isDevelopment } from "./env.js";
1
2
  let currentResourceFiber = null;
2
3
  export function withResourceFiber(fiber, fn) {
3
4
  fiber.currentIndex = 0;
@@ -22,4 +23,11 @@ export function getCurrentResourceFiber() {
22
23
  }
23
24
  return currentResourceFiber;
24
25
  }
26
+ export function getDevStrictMode(enable) {
27
+ if (!isDevelopment)
28
+ return null;
29
+ if (currentResourceFiber?.devStrictMode)
30
+ return currentResourceFiber.isFirstRender ? "child" : "root";
31
+ return enable ? "root" : null;
32
+ }
25
33
  //# sourceMappingURL=execution-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"execution-context.js","sourceRoot":"","sources":["../../src/core/execution-context.ts"],"names":[],"mappings":"AAEA,IAAI,oBAAoB,GAAmC,IAAI,CAAC;AAEhE,MAAM,UAAU,iBAAiB,CAC/B,KAA0B,EAC1B,EAAc;IAEd,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;IAEvB,MAAM,eAAe,GAAG,oBAAoB,CAAC;IAC7C,oBAAoB,GAAG,KAAK,CAAC;IAC7B,IAAI,CAAC;QACH,EAAE,EAAE,CAAC;QAEL,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;QAE5B,4BAA4B;QAC5B,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,YAAY,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,YAAY,KAAK,CAAC,YAAY,uBAAuB,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI;gBACzE,+DAA+D,CAClE,CAAC;QACJ,CAAC;IACH,CAAC;YAAS,CAAC;QACT,oBAAoB,GAAG,eAAe,CAAC;IACzC,CAAC;AACH,CAAC;AACD,MAAM,UAAU,uBAAuB;IACrC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,oBAAoB,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"execution-context.js","sourceRoot":"","sources":["../../src/core/execution-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,iBAAc;AAGtC,IAAI,oBAAoB,GAAmC,IAAI,CAAC;AAEhE,MAAM,UAAU,iBAAiB,CAC/B,KAA0B,EAC1B,EAAc;IAEd,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;IAEvB,MAAM,eAAe,GAAG,oBAAoB,CAAC;IAC7C,oBAAoB,GAAG,KAAK,CAAC;IAC7B,IAAI,CAAC;QACH,EAAE,EAAE,CAAC;QAEL,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;QAE5B,4BAA4B;QAC5B,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,YAAY,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,YAAY,KAAK,CAAC,YAAY,uBAAuB,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI;gBACzE,+DAA+D,CAClE,CAAC;QACJ,CAAC;IACH,CAAC;YAAS,CAAC;QACT,oBAAoB,GAAG,eAAe,CAAC;IACzC,CAAC;AACH,CAAC;AACD,MAAM,UAAU,uBAAuB;IACrC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAe;IAC9C,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,oBAAoB,EAAE,aAAa;QACrC,OAAO,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAE/D,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { Resource } from "./types.js";
2
- export declare function resource<R>(fn: () => R): Resource<R, undefined>;
3
- export declare function resource<R, P>(fn: (props: P) => R): Resource<R, P>;
1
+ import { ResourceElement } from "./types.js";
2
+ export declare function resource<R>(fn: () => R): () => ResourceElement<R, undefined>;
3
+ export declare function resource<R, P>(fn: (props: P) => R): (props: P) => ResourceElement<R, P>;
4
4
  //# sourceMappingURL=resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/core/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAmB,mBAAgB;AAEpD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACjE,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/core/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,mBAAgB;AAG1C,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,MAAM,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAC9E,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAC3B,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAClB,CAAC,KAAK,EAAE,CAAC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../src/core/resource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,4BAAyB;AAG5C,MAAM,UAAU,QAAQ,CAAmB,EAAmB;IAC5D,MAAM,IAAI,GAAG,CAAC,KAAS,EAAE,EAAE;QACzB,OAAO;YACL,IAAI;YACJ,KAAK,EAAE,KAAM;SACkB,CAAC;IACpC,CAAC,CAAC;IAEF,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IAEpB,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../src/core/resource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,4BAAyB;AAM5C,MAAM,UAAU,QAAQ,CAAmB,EAAmB;IAC5D,MAAM,IAAI,GAAG,CAAC,KAAS,EAAE,EAAE;QACzB,OAAO;YACL,IAAI;YACJ,KAAK,EAAE,KAAM;SACkB,CAAC;IACpC,CAAC,CAAC;IAEF,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IAEpB,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -7,6 +7,6 @@ export declare class UpdateScheduler {
7
7
  markDirty(): void;
8
8
  runTask(): void;
9
9
  }
10
- export declare const flushSync: <T>(callback: () => T) => T;
10
+ export declare const flushResourcesSync: <T>(callback: () => T) => T;
11
11
  export {};
12
12
  //# sourceMappingURL=scheduler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/core/scheduler.ts"],"names":[],"mappings":"AAAA,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;AAavB,qBAAa,eAAe;IAGd,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFlC,OAAO,CAAC,QAAQ,CAAS;gBAEI,KAAK,EAAE,IAAI;IAExC,IAAI,OAAO,YAEV;IAED,SAAS;IAOT,OAAO;CAIR;AA8CD,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,UAAU,MAAM,CAAC,KAAG,CAehD,CAAC"}
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/core/scheduler.ts"],"names":[],"mappings":"AAAA,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;AAavB,qBAAa,eAAe;IAGd,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFlC,OAAO,CAAC,QAAQ,CAAS;gBAEI,KAAK,EAAE,IAAI;IAExC,IAAI,OAAO,YAEV;IAED,SAAS;IAOT,OAAO;CAIR;AA8CD,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,UAAU,MAAM,CAAC,KAAG,CAezD,CAAC"}
@@ -62,7 +62,7 @@ const flushScheduled = () => {
62
62
  flushState.isScheduled = false;
63
63
  }
64
64
  };
65
- export const flushSync = (callback) => {
65
+ export const flushResourcesSync = (callback) => {
66
66
  const prev = flushState;
67
67
  flushState = {
68
68
  schedulers: new Set([]),
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/core/scheduler.ts"],"names":[],"mappings":"AAOA,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,IAAI,UAAU,GAAqB;IACjC,UAAU,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC;IACvB,WAAW,EAAE,KAAK;CACnB,CAAC;AAEF,MAAM,OAAO,eAAe;IAGG;IAFrB,QAAQ,GAAG,KAAK,CAAC;IAEzB,YAA6B,KAAW;QAAX,UAAK,GAAL,KAAK,CAAM;IAAG,CAAC;IAE5C,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,SAAS;QACP,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,aAAa,EAAE,CAAC;IAClB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;CACF;AAED,MAAM,aAAa,GAAG,GAAG,EAAE;IACzB,IAAI,UAAU,CAAC,WAAW;QAAE,OAAO;IACnC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC;IAC9B,cAAc,CAAC,cAAc,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,GAAG,EAAE;IAC1B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YAC9C,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,SAAS,CAAC,OAAO;gBAAE,SAAS;YAEjC,UAAU,EAAE,CAAC;YAEb,IAAI,UAAU,GAAG,eAAe,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CACb,iEAAiE;oBAC/D,6CAA6C,CAChD,CAAC;YACJ,CAAC;YAED,IAAI,CAAC;gBACH,SAAS,CAAC,OAAO,EAAE,CAAC;YACtB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC9B,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC;IACjC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAI,QAAiB,EAAK,EAAE;IACnD,MAAM,IAAI,GAAG,UAAU,CAAC;IACxB,UAAU,GAAG;QACX,UAAU,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC;QACvB,WAAW,EAAE,IAAI;KAClB,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC;QAC1B,cAAc,EAAE,CAAC;QAEjB,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/core/scheduler.ts"],"names":[],"mappings":"AAOA,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,IAAI,UAAU,GAAqB;IACjC,UAAU,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC;IACvB,WAAW,EAAE,KAAK;CACnB,CAAC;AAEF,MAAM,OAAO,eAAe;IAGG;IAFrB,QAAQ,GAAG,KAAK,CAAC;IAEzB,YAA6B,KAAW;QAAX,UAAK,GAAL,KAAK,CAAM;IAAG,CAAC;IAE5C,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,SAAS;QACP,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,aAAa,EAAE,CAAC;IAClB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;CACF;AAED,MAAM,aAAa,GAAG,GAAG,EAAE;IACzB,IAAI,UAAU,CAAC,WAAW;QAAE,OAAO;IACnC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC;IAC9B,cAAc,CAAC,cAAc,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,GAAG,EAAE;IAC1B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YAC9C,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,SAAS,CAAC,OAAO;gBAAE,SAAS;YAEjC,UAAU,EAAE,CAAC;YAEb,IAAI,UAAU,GAAG,eAAe,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CACb,iEAAiE;oBAC/D,6CAA6C,CAChD,CAAC;YACJ,CAAC;YAED,IAAI,CAAC;gBACH,SAAS,CAAC,OAAO,EAAE,CAAC;YACtB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC9B,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC;IACjC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAI,QAAiB,EAAK,EAAE;IAC5D,MAAM,IAAI,GAAG,UAAU,CAAC;IACxB,UAAU,GAAG;QACX,UAAU,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC;QACvB,WAAW,EAAE,IAAI;KAClB,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC;QAC1B,cAAc,EAAE,CAAC;QAEjB,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;AACH,CAAC,CAAC"}