@assistant-ui/tap 0.5.11 → 0.5.13

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 (125) hide show
  1. package/README.md +21 -364
  2. package/dist/core/ResourceFiber.d.ts +9 -5
  3. package/dist/core/ResourceFiber.d.ts.map +1 -1
  4. package/dist/core/ResourceFiber.js +47 -45
  5. package/dist/core/ResourceFiber.js.map +1 -1
  6. package/dist/core/context.d.ts +7 -5
  7. package/dist/core/context.d.ts.map +1 -1
  8. package/dist/core/context.js +16 -15
  9. package/dist/core/context.js.map +1 -1
  10. package/dist/core/createResourceRoot.d.ts +8 -4
  11. package/dist/core/createResourceRoot.d.ts.map +1 -1
  12. package/dist/core/createResourceRoot.js +25 -26
  13. package/dist/core/createResourceRoot.js.map +1 -1
  14. package/dist/core/helpers/callResourceFn.d.ts +1 -2
  15. package/dist/core/helpers/callResourceFn.js +15 -13
  16. package/dist/core/helpers/callResourceFn.js.map +1 -1
  17. package/dist/core/helpers/commit.d.ts +7 -3
  18. package/dist/core/helpers/commit.d.ts.map +1 -1
  19. package/dist/core/helpers/commit.js +33 -50
  20. package/dist/core/helpers/commit.js.map +1 -1
  21. package/dist/core/helpers/env.d.ts +4 -1
  22. package/dist/core/helpers/env.d.ts.map +1 -1
  23. package/dist/core/helpers/env.js +5 -2
  24. package/dist/core/helpers/env.js.map +1 -1
  25. package/dist/core/helpers/execution-context.d.ts +8 -4
  26. package/dist/core/helpers/execution-context.d.ts.map +1 -1
  27. package/dist/core/helpers/execution-context.js +22 -27
  28. package/dist/core/helpers/execution-context.js.map +1 -1
  29. package/dist/core/helpers/root.d.ts +10 -6
  30. package/dist/core/helpers/root.d.ts.map +1 -1
  31. package/dist/core/helpers/root.js +45 -48
  32. package/dist/core/helpers/root.js.map +1 -1
  33. package/dist/core/resource.d.ts +8 -4
  34. package/dist/core/resource.d.ts.map +1 -1
  35. package/dist/core/resource.js +13 -9
  36. package/dist/core/resource.js.map +1 -1
  37. package/dist/core/scheduler.d.ts +11 -9
  38. package/dist/core/scheduler.d.ts.map +1 -1
  39. package/dist/core/scheduler.js +70 -83
  40. package/dist/core/scheduler.js.map +1 -1
  41. package/dist/core/types.d.ts +56 -55
  42. package/dist/core/types.d.ts.map +1 -1
  43. package/dist/core/types.js +0 -2
  44. package/dist/core/withKey.d.ts +6 -2
  45. package/dist/core/withKey.d.ts.map +1 -1
  46. package/dist/core/withKey.js +9 -2
  47. package/dist/core/withKey.js.map +1 -1
  48. package/dist/hooks/tap-callback.d.ts +4 -1
  49. package/dist/hooks/tap-callback.d.ts.map +1 -1
  50. package/dist/hooks/tap-callback.js +6 -3
  51. package/dist/hooks/tap-callback.js.map +1 -1
  52. package/dist/hooks/tap-const.d.ts +4 -1
  53. package/dist/hooks/tap-const.d.ts.map +1 -1
  54. package/dist/hooks/tap-const.js +7 -3
  55. package/dist/hooks/tap-const.js.map +1 -1
  56. package/dist/hooks/tap-effect-event.d.ts +4 -1
  57. package/dist/hooks/tap-effect-event.d.ts.map +1 -1
  58. package/dist/hooks/tap-effect-event.js +31 -29
  59. package/dist/hooks/tap-effect-event.js.map +1 -1
  60. package/dist/hooks/tap-effect.d.ts +8 -5
  61. package/dist/hooks/tap-effect.d.ts.map +1 -1
  62. package/dist/hooks/tap-effect.js +35 -45
  63. package/dist/hooks/tap-effect.js.map +1 -1
  64. package/dist/hooks/tap-memo.d.ts +4 -1
  65. package/dist/hooks/tap-memo.d.ts.map +1 -1
  66. package/dist/hooks/tap-memo.js +17 -13
  67. package/dist/hooks/tap-memo.js.map +1 -1
  68. package/dist/hooks/tap-reducer.d.ts +7 -5
  69. package/dist/hooks/tap-reducer.d.ts.map +1 -1
  70. package/dist/hooks/tap-reducer.js +70 -76
  71. package/dist/hooks/tap-reducer.js.map +1 -1
  72. package/dist/hooks/tap-ref.d.ts +9 -6
  73. package/dist/hooks/tap-ref.d.ts.map +1 -1
  74. package/dist/hooks/tap-ref.js +7 -5
  75. package/dist/hooks/tap-ref.js.map +1 -1
  76. package/dist/hooks/tap-resource.d.ts +7 -3
  77. package/dist/hooks/tap-resource.d.ts.map +1 -1
  78. package/dist/hooks/tap-resource.js +31 -22
  79. package/dist/hooks/tap-resource.js.map +1 -1
  80. package/dist/hooks/tap-resources.d.ts +6 -2
  81. package/dist/hooks/tap-resources.d.ts.map +1 -1
  82. package/dist/hooks/tap-resources.js +74 -96
  83. package/dist/hooks/tap-resources.js.map +1 -1
  84. package/dist/hooks/tap-state.d.ts +7 -7
  85. package/dist/hooks/tap-state.d.ts.map +1 -1
  86. package/dist/hooks/tap-state.js +7 -5
  87. package/dist/hooks/tap-state.js.map +1 -1
  88. package/dist/hooks/utils/depsShallowEqual.d.ts +4 -1
  89. package/dist/hooks/utils/depsShallowEqual.d.ts.map +1 -1
  90. package/dist/hooks/utils/depsShallowEqual.js +8 -8
  91. package/dist/hooks/utils/depsShallowEqual.js.map +1 -1
  92. package/dist/hooks/utils/tapHook.d.ts +8 -4
  93. package/dist/hooks/utils/tapHook.d.ts.map +1 -1
  94. package/dist/hooks/utils/tapHook.js +17 -20
  95. package/dist/hooks/utils/tapHook.js.map +1 -1
  96. package/dist/index.d.ts +18 -18
  97. package/dist/index.js +17 -23
  98. package/dist/react/index.d.ts +2 -2
  99. package/dist/react/index.js +2 -2
  100. package/dist/react/use-resource.d.ts +6 -2
  101. package/dist/react/use-resource.d.ts.map +1 -1
  102. package/dist/react/use-resource.js +41 -36
  103. package/dist/react/use-resource.js.map +1 -1
  104. package/dist/tapResourceRoot.d.ts +18 -14
  105. package/dist/tapResourceRoot.d.ts.map +1 -1
  106. package/dist/tapResourceRoot.js +68 -77
  107. package/dist/tapResourceRoot.js.map +1 -1
  108. package/package.json +8 -8
  109. package/src/__tests__/basic/tapEffect.basic.test.ts +4 -1
  110. package/src/__tests__/errors/errors.effect-errors.test.ts +3 -4
  111. package/src/__tests__/lifecycle/lifecycle.dependencies.test.ts +1 -1
  112. package/src/__tests__/strictmode/react-strictmode-behavior.test.tsx +1 -0
  113. package/src/__tests__/strictmode/react-strictmode-rerender-sources.test.tsx +17 -5
  114. package/src/__tests__/strictmode/tap-strictmode-rerender-sources.test.ts +1 -0
  115. package/src/core/types.ts +1 -2
  116. package/src/hooks/tap-callback.ts +1 -1
  117. package/src/hooks/tap-resource.ts +2 -2
  118. package/src/hooks/tap-resources.ts +1 -1
  119. package/src/react/use-resource.ts +2 -2
  120. package/dist/core/helpers/callResourceFn.d.ts.map +0 -1
  121. package/dist/core/types.js.map +0 -1
  122. package/dist/index.d.ts.map +0 -1
  123. package/dist/index.js.map +0 -1
  124. package/dist/react/index.d.ts.map +0 -1
  125. package/dist/react/index.js.map +0 -1
@@ -1,50 +1,40 @@
1
+ import { registerRenderMountTask, tapHook } from "./utils/tapHook.js";
1
2
  import { depsShallowEqual } from "./utils/depsShallowEqual.js";
2
- import { tapHook, registerRenderMountTask } from "./utils/tapHook.js";
3
+ //#region src/hooks/tap-effect.ts
3
4
  const newEffect = () => ({
4
- type: "effect",
5
- cleanup: undefined,
6
- deps: null, // null means the effect has never been run
5
+ type: "effect",
6
+ cleanup: void 0,
7
+ deps: null
7
8
  });
8
- export function tapEffect(effect, deps) {
9
- const cell = tapHook("effect", newEffect);
10
- if (deps && cell.deps && depsShallowEqual(cell.deps, deps))
11
- return;
12
- if (cell.deps !== null && !!deps !== !!cell.deps)
13
- throw new Error("tapEffect called with and without dependencies across re-renders");
14
- registerRenderMountTask(() => {
15
- const errors = [];
16
- try {
17
- cell.cleanup?.();
18
- }
19
- catch (error) {
20
- errors.push(error);
21
- }
22
- finally {
23
- cell.cleanup = undefined;
24
- }
25
- try {
26
- const cleanup = effect();
27
- if (cleanup !== undefined && typeof cleanup !== "function") {
28
- throw new Error("An effect function must either return a cleanup function or nothing. " +
29
- `Received: ${typeof cleanup}`);
30
- }
31
- cell.cleanup = cleanup;
32
- }
33
- catch (error) {
34
- errors.push(error);
35
- }
36
- cell.deps = deps;
37
- if (errors.length > 0) {
38
- if (errors.length === 1) {
39
- throw errors[0];
40
- }
41
- else {
42
- for (const error of errors) {
43
- console.error(error);
44
- }
45
- throw new AggregateError(errors, "Errors during commit");
46
- }
47
- }
48
- });
9
+ function tapEffect(effect, deps) {
10
+ const cell = tapHook("effect", newEffect);
11
+ if (deps && cell.deps && depsShallowEqual(cell.deps, deps)) return;
12
+ if (cell.deps !== null && !!deps !== !!cell.deps) throw new Error("tapEffect called with and without dependencies across re-renders");
13
+ registerRenderMountTask(() => {
14
+ const errors = [];
15
+ try {
16
+ cell.cleanup?.();
17
+ } catch (error) {
18
+ errors.push(error);
19
+ } finally {
20
+ cell.cleanup = void 0;
21
+ }
22
+ try {
23
+ const cleanup = effect();
24
+ if (cleanup !== void 0 && typeof cleanup !== "function") throw new Error(`An effect function must either return a cleanup function or nothing. Received: ${typeof cleanup}`);
25
+ cell.cleanup = cleanup;
26
+ } catch (error) {
27
+ errors.push(error);
28
+ }
29
+ cell.deps = deps;
30
+ if (errors.length > 0) if (errors.length === 1) throw errors[0];
31
+ else {
32
+ for (const error of errors) console.error(error);
33
+ throw new AggregateError(errors, "Errors during commit");
34
+ }
35
+ });
49
36
  }
37
+ //#endregion
38
+ export { tapEffect };
39
+
50
40
  //# sourceMappingURL=tap-effect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap-effect.js","sourceRoot":"","sources":["../../src/hooks/tap-effect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,oCAAiC;AAC5D,OAAO,EAAE,OAAO,EAAE,uBAAuB,EAAE,2BAAwB;AAEnE,MAAM,SAAS,GAAG,GAA8B,EAAE,CAAC,CAAC;IAClD,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,IAAI,EAAE,2CAA2C;CACxD,CAAC,CAAC;AAYH,MAAM,UAAU,SAAS,CACvB,MAAgC,EAChC,IAAyB;IAEzB,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE1C,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO;IACnE,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI;QAC9C,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;IAEJ,uBAAuB,CAAC,GAAG,EAAE;QAC3B,MAAM,MAAM,GAAc,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC;YAEzB,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC3D,MAAM,IAAI,KAAK,CACb,uEAAuE;oBACrE,aAAa,OAAO,OAAO,EAAE,CAChC,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,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,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;gBACD,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"tap-effect.js","names":[],"sources":["../../src/hooks/tap-effect.ts"],"sourcesContent":["import type { Cell } from \"../core/types\";\nimport { depsShallowEqual } from \"./utils/depsShallowEqual\";\nimport { tapHook, registerRenderMountTask } from \"./utils/tapHook\";\n\nconst newEffect = (): Cell & { type: \"effect\" } => ({\n type: \"effect\",\n cleanup: undefined,\n deps: null, // null means the effect has never been run\n});\n\nexport namespace tapEffect {\n export type Destructor = () => void;\n export type EffectCallback = () => Destructor | undefined;\n}\n\nexport function tapEffect(effect: tapEffect.EffectCallback): void;\nexport function tapEffect(\n effect: tapEffect.EffectCallback,\n deps: readonly unknown[],\n): void;\nexport function tapEffect(\n effect: tapEffect.EffectCallback,\n deps?: readonly unknown[],\n): void {\n const cell = tapHook(\"effect\", newEffect);\n\n if (deps && cell.deps && depsShallowEqual(cell.deps, deps)) return;\n if (cell.deps !== null && !!deps !== !!cell.deps)\n throw new Error(\n \"tapEffect called with and without dependencies across re-renders\",\n );\n\n registerRenderMountTask(() => {\n const errors: unknown[] = [];\n\n try {\n cell.cleanup?.();\n } catch (error) {\n errors.push(error);\n } finally {\n cell.cleanup = undefined;\n }\n\n try {\n const cleanup = effect();\n\n if (cleanup !== undefined && typeof cleanup !== \"function\") {\n throw new Error(\n \"An effect function must either return a cleanup function or nothing. \" +\n `Received: ${typeof cleanup}`,\n );\n }\n\n cell.cleanup = cleanup;\n } catch (error) {\n errors.push(error);\n }\n\n cell.deps = deps;\n\n if (errors.length > 0) {\n if (errors.length === 1) {\n throw errors[0];\n } else {\n for (const error of errors) {\n console.error(error);\n }\n throw new AggregateError(errors, \"Errors during commit\");\n }\n }\n });\n}\n"],"mappings":";;;AAIA,MAAM,mBAA8C;CAClD,MAAM;CACN,SAAS,KAAA;CACT,MAAM;AACR;AAYA,SAAgB,UACd,QACA,MACM;CACN,MAAM,OAAO,QAAQ,UAAU,SAAS;CAExC,IAAI,QAAQ,KAAK,QAAQ,iBAAiB,KAAK,MAAM,IAAI,GAAG;CAC5D,IAAI,KAAK,SAAS,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,MAC1C,MAAM,IAAI,MACR,kEACF;CAEF,8BAA8B;EAC5B,MAAM,SAAoB,CAAC;EAE3B,IAAI;GACF,KAAK,UAAU;EACjB,SAAS,OAAO;GACd,OAAO,KAAK,KAAK;EACnB,UAAU;GACR,KAAK,UAAU,KAAA;EACjB;EAEA,IAAI;GACF,MAAM,UAAU,OAAO;GAEvB,IAAI,YAAY,KAAA,KAAa,OAAO,YAAY,YAC9C,MAAM,IAAI,MACR,kFACe,OAAO,SACxB;GAGF,KAAK,UAAU;EACjB,SAAS,OAAO;GACd,OAAO,KAAK,KAAK;EACnB;EAEA,KAAK,OAAO;EAEZ,IAAI,OAAO,SAAS,GAClB,IAAI,OAAO,WAAW,GACpB,MAAM,OAAO;OACR;GACL,KAAK,MAAM,SAAS,QAClB,QAAQ,MAAM,KAAK;GAErB,MAAM,IAAI,eAAe,QAAQ,sBAAsB;EACzD;CAEJ,CAAC;AACH"}
@@ -1,2 +1,5 @@
1
- export declare const tapMemo: <T>(fn: () => T, deps: readonly unknown[]) => T;
1
+ //#region src/hooks/tap-memo.d.ts
2
+ declare const tapMemo: <T>(fn: () => T, deps: readonly unknown[]) => T;
3
+ //#endregion
4
+ export { tapMemo };
2
5
  //# sourceMappingURL=tap-memo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap-memo.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-memo.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,MAAM,SAAS,OAAO,EAAE,KAAG,CAkBlE,CAAC"}
1
+ {"version":3,"file":"tap-memo.d.ts","names":[],"sources":["../../src/hooks/tap-memo.ts"],"mappings":";cAWa,OAAA,MAAc,EAAA,QAAU,CAAA,EAAG,IAAA,yBAA2B,CAkBlE"}
@@ -2,20 +2,24 @@ import { isDevelopment } from "../core/helpers/env.js";
2
2
  import { getCurrentResourceFiber } from "../core/helpers/execution-context.js";
3
3
  import { tapReducerWithDerivedState } from "./tap-reducer.js";
4
4
  import { depsShallowEqual } from "./utils/depsShallowEqual.js";
5
+ //#region src/hooks/tap-memo.ts
5
6
  const memoReducer = () => {
6
- throw new Error("Memo reducer should not be called");
7
+ throw new Error("Memo reducer should not be called");
7
8
  };
8
- export const tapMemo = (fn, deps) => {
9
- const fiber = getCurrentResourceFiber();
10
- const [state] = tapReducerWithDerivedState(memoReducer, (state) => {
11
- if (state && depsShallowEqual(state.deps, deps))
12
- return state;
13
- const value = fn();
14
- if (isDevelopment && fiber.devStrictMode) {
15
- void fn();
16
- }
17
- return { value, deps };
18
- }, null);
19
- return state.value;
9
+ const tapMemo = (fn, deps) => {
10
+ const fiber = getCurrentResourceFiber();
11
+ const [state] = tapReducerWithDerivedState(memoReducer, (state) => {
12
+ if (state && depsShallowEqual(state.deps, deps)) return state;
13
+ const value = fn();
14
+ if (isDevelopment && fiber.devStrictMode) fn();
15
+ return {
16
+ value,
17
+ deps
18
+ };
19
+ }, null);
20
+ return state.value;
20
21
  };
22
+ //#endregion
23
+ export { tapMemo };
24
+
21
25
  //# sourceMappingURL=tap-memo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap-memo.js","sourceRoot":"","sources":["../../src/hooks/tap-memo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,+BAA4B;AACpD,OAAO,EAAE,uBAAuB,EAAE,6CAA0C;AAC5E,OAAO,EAAE,0BAA0B,EAAE,yBAAsB;AAC3D,OAAO,EAAE,gBAAgB,EAAE,oCAAiC;AAE5D,MAAM,WAAW,GAAG,GAAG,EAAE;IACvB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACvD,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAI,EAAW,EAAE,IAAwB,EAAK,EAAE;IACrE,MAAM,KAAK,GAAG,uBAAuB,EAAE,CAAC;IACxC,MAAM,CAAC,KAAK,CAAC,GAAG,0BAA0B,CACxC,WAAW,EACX,CAAC,KAA0B,EAAgB,EAAE;QAC3C,IAAI,KAAK,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAE9D,MAAM,KAAK,GAAG,EAAE,EAAE,CAAC;QAEnB,IAAI,aAAa,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACzC,KAAK,EAAE,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC,EACD,IAAI,CACL,CAAC;IACF,OAAO,KAAK,CAAC,KAAK,CAAC;AACrB,CAAC,CAAC"}
1
+ {"version":3,"file":"tap-memo.js","names":[],"sources":["../../src/hooks/tap-memo.ts"],"sourcesContent":["import { isDevelopment } from \"../core/helpers/env\";\nimport { getCurrentResourceFiber } from \"../core/helpers/execution-context\";\nimport { tapReducerWithDerivedState } from \"./tap-reducer\";\nimport { depsShallowEqual } from \"./utils/depsShallowEqual\";\n\nconst memoReducer = () => {\n throw new Error(\"Memo reducer should not be called\");\n};\n\ntype MemoState<T> = { value: T; deps: readonly unknown[] };\n\nexport const tapMemo = <T>(fn: () => T, deps: readonly unknown[]): T => {\n const fiber = getCurrentResourceFiber();\n const [state] = tapReducerWithDerivedState(\n memoReducer,\n (state: MemoState<T> | null): MemoState<T> => {\n if (state && depsShallowEqual(state.deps, deps)) return state;\n\n const value = fn();\n\n if (isDevelopment && fiber.devStrictMode) {\n void fn();\n }\n\n return { value, deps };\n },\n null,\n );\n return state.value;\n};\n"],"mappings":";;;;;AAKA,MAAM,oBAAoB;CACxB,MAAM,IAAI,MAAM,mCAAmC;AACrD;AAIA,MAAa,WAAc,IAAa,SAAgC;CACtE,MAAM,QAAQ,wBAAwB;CACtC,MAAM,CAAC,SAAS,2BACd,cACC,UAA6C;EAC5C,IAAI,SAAS,iBAAiB,MAAM,MAAM,IAAI,GAAG,OAAO;EAExD,MAAM,QAAQ,GAAG;EAEjB,IAAI,iBAAiB,MAAM,eACzB,GAAQ;EAGV,OAAO;GAAE;GAAO;EAAK;CACvB,GACA,IACF;CACA,OAAO,MAAM;AACf"}
@@ -1,7 +1,9 @@
1
+ //#region src/hooks/tap-reducer.d.ts
1
2
  type Dispatch<A> = (action: A) => void;
2
- export declare function tapReducer<S, A>(reducer: (state: S, action: A) => S, initialState: S): [S, Dispatch<A>];
3
- export declare function tapReducer<S, A, I>(reducer: (state: S, action: A) => S, initialArg: I, init: (arg: I) => S): [S, Dispatch<A>];
4
- export declare function tapReducerWithDerivedState<S, A, R extends S>(reducer: (state: S, action: A) => S, getDerivedState: (state: S) => R, initialState: S): [R, Dispatch<A>];
5
- export declare function tapReducerWithDerivedState<S, A, I, R extends S>(reducer: (state: S, action: A) => S, getDerivedState: (state: S) => R, initialArg: I, init: (arg: I) => S): [R, Dispatch<A>];
6
- export {};
3
+ declare function tapReducer<S, A>(reducer: (state: S, action: A) => S, initialState: S): [S, Dispatch<A>];
4
+ declare function tapReducer<S, A, I>(reducer: (state: S, action: A) => S, initialArg: I, init: (arg: I) => S): [S, Dispatch<A>];
5
+ declare function tapReducerWithDerivedState<S, A, R extends S>(reducer: (state: S, action: A) => S, getDerivedState: (state: S) => R, initialState: S): [R, Dispatch<A>];
6
+ declare function tapReducerWithDerivedState<S, A, I, R extends S>(reducer: (state: S, action: A) => S, getDerivedState: (state: S) => R, initialArg: I, init: (arg: I) => S): [R, Dispatch<A>];
7
+ //#endregion
8
+ export { tapReducer, tapReducerWithDerivedState };
7
9
  //# sourceMappingURL=tap-reducer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap-reducer.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-reducer.ts"],"names":[],"mappings":"AAMA,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;AAqGvC,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAC7B,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EACnC,YAAY,EAAE,CAAC,GACd,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAChC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EACnC,UAAU,EAAE,CAAC,EACb,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAClB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAcpB,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,EAC1D,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EACnC,eAAe,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAChC,YAAY,EAAE,CAAC,GACd,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,EAC7D,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EACnC,eAAe,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAChC,UAAU,EAAE,CAAC,EACb,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAClB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"tap-reducer.d.ts","names":[],"sources":["../../src/hooks/tap-reducer.ts"],"mappings":";KAMK,QAAA,OAAe,MAAA,EAAQ,CAAC;AAAA,iBAqGb,UAAA,MAAA,CACd,OAAA,GAAU,KAAA,EAAO,CAAA,EAAG,MAAA,EAAQ,CAAA,KAAM,CAAA,EAClC,YAAA,EAAc,CAAA,IACZ,CAAA,EAAG,QAAA,CAAS,CAAA;AAAA,iBACA,UAAA,SAAA,CACd,OAAA,GAAU,KAAA,EAAO,CAAA,EAAG,MAAA,EAAQ,CAAA,KAAM,CAAA,EAClC,UAAA,EAAY,CAAA,EACZ,IAAA,GAAO,GAAA,EAAK,CAAA,KAAM,CAAA,IAChB,CAAA,EAAG,QAAA,CAAS,CAAA;AAAA,iBAcA,0BAAA,iBAA2C,CAAA,CAAA,CACzD,OAAA,GAAU,KAAA,EAAO,CAAA,EAAG,MAAA,EAAQ,CAAA,KAAM,CAAA,EAClC,eAAA,GAAkB,KAAA,EAAO,CAAA,KAAM,CAAA,EAC/B,YAAA,EAAc,CAAA,IACZ,CAAA,EAAG,QAAA,CAAS,CAAA;AAAA,iBACA,0BAAA,oBAA8C,CAAA,CAAA,CAC5D,OAAA,GAAU,KAAA,EAAO,CAAA,EAAG,MAAA,EAAQ,CAAA,KAAM,CAAA,EAClC,eAAA,GAAkB,KAAA,EAAO,CAAA,KAAM,CAAA,EAC/B,UAAA,EAAY,CAAA,EACZ,IAAA,GAAO,GAAA,EAAK,CAAA,KAAM,CAAA,IAChB,CAAA,EAAG,QAAA,CAAS,CAAA"}
@@ -2,86 +2,80 @@ import { isDevelopment } from "../core/helpers/env.js";
2
2
  import { getCurrentResourceFiber } from "../core/helpers/execution-context.js";
3
3
  import { markCellDirty } from "../core/helpers/root.js";
4
4
  import { tapHook } from "./utils/tapHook.js";
5
+ //#region src/hooks/tap-reducer.ts
5
6
  const dispatchOnFiber = (fiber, callback) => {
6
- if (fiber.renderContext) {
7
- throw new Error("Resource updated during render");
8
- }
9
- if (fiber.isNeverMounted) {
10
- throw new Error("Resource updated before mount");
11
- }
12
- fiber.root.dispatchUpdate(() => {
13
- const result = callback();
14
- if (result) {
15
- result();
16
- fiber.root.changelog.push(result);
17
- return true;
18
- }
19
- return false;
20
- });
7
+ if (fiber.renderContext) throw new Error("Resource updated during render");
8
+ if (fiber.isNeverMounted) throw new Error("Resource updated before mount");
9
+ fiber.root.dispatchUpdate(() => {
10
+ const result = callback();
11
+ if (result) {
12
+ result();
13
+ fiber.root.changelog.push(result);
14
+ return true;
15
+ }
16
+ return false;
17
+ });
21
18
  };
22
19
  function tapReducerImpl(reducer, getDerivedState, initialArg, initFn) {
23
- const cell = tapHook("reducer", () => {
24
- const fiber = getCurrentResourceFiber();
25
- // First render: compute initial state
26
- const initialState = initFn ? initFn(initialArg) : initialArg;
27
- if (isDevelopment && fiber.devStrictMode && initFn) {
28
- void initFn(initialArg);
29
- }
30
- return {
31
- type: "reducer",
32
- queue: new Set(),
33
- dirty: false,
34
- workInProgress: initialState,
35
- current: initialState,
36
- reducer,
37
- dispatch: (action) => {
38
- const entry = {
39
- action,
40
- hasEagerState: false,
41
- eagerState: undefined,
42
- };
43
- dispatchOnFiber(fiber, () => {
44
- if (fiber.root.dirtyCells.length === 0 && !entry.hasEagerState) {
45
- entry.eagerState = reducer(cell.workInProgress, action);
46
- entry.hasEagerState = true;
47
- if (Object.is(cell.current, entry.eagerState))
48
- return null;
49
- }
50
- return () => {
51
- markCellDirty(fiber, cell);
52
- cell.queue.add(entry);
53
- };
54
- });
55
- },
56
- };
57
- });
58
- const fiber = getCurrentResourceFiber();
59
- const sameReducer = reducer === cell.reducer;
60
- cell.reducer = reducer;
61
- for (const item of cell.queue) {
62
- if (!item.hasEagerState || !sameReducer) {
63
- item.eagerState = reducer(cell.workInProgress, item.action);
64
- item.hasEagerState = true;
65
- }
66
- if (isDevelopment && fiber.devStrictMode) {
67
- void reducer(cell.workInProgress, item.action);
68
- }
69
- cell.workInProgress = item.eagerState;
70
- }
71
- cell.queue.clear();
72
- if (getDerivedState) {
73
- const derived = getDerivedState(cell.workInProgress);
74
- if (!Object.is(derived, cell.workInProgress)) {
75
- markCellDirty(fiber, cell);
76
- cell.workInProgress = derived;
77
- }
78
- }
79
- return [cell.workInProgress, cell.dispatch];
20
+ const cell = tapHook("reducer", () => {
21
+ const fiber = getCurrentResourceFiber();
22
+ const initialState = initFn ? initFn(initialArg) : initialArg;
23
+ if (isDevelopment && fiber.devStrictMode && initFn) initFn(initialArg);
24
+ return {
25
+ type: "reducer",
26
+ queue: /* @__PURE__ */ new Set(),
27
+ dirty: false,
28
+ workInProgress: initialState,
29
+ current: initialState,
30
+ reducer,
31
+ dispatch: (action) => {
32
+ const entry = {
33
+ action,
34
+ hasEagerState: false,
35
+ eagerState: void 0
36
+ };
37
+ dispatchOnFiber(fiber, () => {
38
+ if (fiber.root.dirtyCells.length === 0 && !entry.hasEagerState) {
39
+ entry.eagerState = reducer(cell.workInProgress, action);
40
+ entry.hasEagerState = true;
41
+ if (Object.is(cell.current, entry.eagerState)) return null;
42
+ }
43
+ return () => {
44
+ markCellDirty(fiber, cell);
45
+ cell.queue.add(entry);
46
+ };
47
+ });
48
+ }
49
+ };
50
+ });
51
+ const fiber = getCurrentResourceFiber();
52
+ const sameReducer = reducer === cell.reducer;
53
+ cell.reducer = reducer;
54
+ for (const item of cell.queue) {
55
+ if (!item.hasEagerState || !sameReducer) {
56
+ item.eagerState = reducer(cell.workInProgress, item.action);
57
+ item.hasEagerState = true;
58
+ }
59
+ if (isDevelopment && fiber.devStrictMode) reducer(cell.workInProgress, item.action);
60
+ cell.workInProgress = item.eagerState;
61
+ }
62
+ cell.queue.clear();
63
+ if (getDerivedState) {
64
+ const derived = getDerivedState(cell.workInProgress);
65
+ if (!Object.is(derived, cell.workInProgress)) {
66
+ markCellDirty(fiber, cell);
67
+ cell.workInProgress = derived;
68
+ }
69
+ }
70
+ return [cell.workInProgress, cell.dispatch];
80
71
  }
81
- export function tapReducer(reducer, initialArg, init) {
82
- return tapReducerImpl(reducer, undefined, initialArg, init);
72
+ function tapReducer(reducer, initialArg, init) {
73
+ return tapReducerImpl(reducer, void 0, initialArg, init);
83
74
  }
84
- export function tapReducerWithDerivedState(reducer, getDerivedState, initialArg, init) {
85
- return tapReducerImpl(reducer, getDerivedState, initialArg, init);
75
+ function tapReducerWithDerivedState(reducer, getDerivedState, initialArg, init) {
76
+ return tapReducerImpl(reducer, getDerivedState, initialArg, init);
86
77
  }
78
+ //#endregion
79
+ export { tapReducer, tapReducerWithDerivedState };
80
+
87
81
  //# sourceMappingURL=tap-reducer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap-reducer.js","sourceRoot":"","sources":["../../src/hooks/tap-reducer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tap-reducer.js","names":[],"sources":["../../src/hooks/tap-reducer.ts"],"sourcesContent":["import { isDevelopment } from \"../core/helpers/env\";\nimport { getCurrentResourceFiber } from \"../core/helpers/execution-context\";\nimport type { ReducerQueueEntry, ResourceFiber } from \"../core/types\";\nimport { markCellDirty } from \"../core/helpers/root\";\nimport { tapHook } from \"./utils/tapHook\";\n\ntype Dispatch<A> = (action: A) => void;\n\nconst dispatchOnFiber = (\n fiber: ResourceFiber<any, any>,\n callback: () => (() => void) | null,\n): void => {\n if (fiber.renderContext) {\n throw new Error(\"Resource updated during render\");\n }\n if (fiber.isNeverMounted) {\n throw new Error(\"Resource updated before mount\");\n }\n\n fiber.root.dispatchUpdate(() => {\n const result = callback();\n if (result) {\n result();\n fiber.root.changelog.push(result);\n return true;\n }\n return false;\n });\n};\n\nfunction tapReducerImpl<S, A, I, R extends S>(\n reducer: (state: S, action: A) => S,\n getDerivedState: ((state: S) => R) | undefined,\n initialArg: S | I,\n initFn: ((arg: I) => S) | undefined,\n): [R, Dispatch<A>] {\n const cell = tapHook(\"reducer\", () => {\n const fiber = getCurrentResourceFiber();\n\n // First render: compute initial state\n const initialState = initFn ? initFn(initialArg as I) : initialArg;\n\n if (isDevelopment && fiber.devStrictMode && initFn) {\n void initFn(initialArg as I);\n }\n\n return {\n type: \"reducer\",\n queue: new Set(),\n dirty: false,\n workInProgress: initialState,\n current: initialState,\n reducer,\n dispatch: (action: A) => {\n const entry: ReducerQueueEntry = {\n action,\n hasEagerState: false,\n eagerState: undefined,\n };\n\n dispatchOnFiber(fiber, () => {\n if (fiber.root.dirtyCells.length === 0 && !entry.hasEagerState) {\n entry.eagerState = reducer(cell.workInProgress, action);\n entry.hasEagerState = true;\n\n if (Object.is(cell.current, entry.eagerState)) return null;\n }\n\n return () => {\n markCellDirty(fiber, cell);\n cell.queue.add(entry);\n };\n });\n },\n };\n });\n\n const fiber = getCurrentResourceFiber();\n const sameReducer = reducer === cell.reducer;\n cell.reducer = reducer;\n\n for (const item of cell.queue) {\n if (!item.hasEagerState || !sameReducer) {\n item.eagerState = reducer(cell.workInProgress, item.action);\n item.hasEagerState = true;\n }\n\n if (isDevelopment && fiber.devStrictMode) {\n void reducer(cell.workInProgress, item.action);\n }\n\n cell.workInProgress = item.eagerState;\n }\n cell.queue.clear();\n\n if (getDerivedState) {\n const derived = getDerivedState(cell.workInProgress);\n\n if (!Object.is(derived, cell.workInProgress)) {\n markCellDirty(fiber, cell);\n cell.workInProgress = derived;\n }\n }\n\n return [cell.workInProgress, cell.dispatch];\n}\n\nexport function tapReducer<S, A>(\n reducer: (state: S, action: A) => S,\n initialState: S,\n): [S, Dispatch<A>];\nexport function tapReducer<S, A, I>(\n reducer: (state: S, action: A) => S,\n initialArg: I,\n init: (arg: I) => S,\n): [S, Dispatch<A>];\nexport function tapReducer<S, A, I>(\n reducer: (state: S, action: A) => S,\n initialArg: S | I,\n init?: (arg: I) => S,\n): [S, Dispatch<A>] {\n return tapReducerImpl(\n reducer,\n undefined,\n initialArg as S,\n init as ((arg: S) => S) | undefined,\n );\n}\n\nexport function tapReducerWithDerivedState<S, A, R extends S>(\n reducer: (state: S, action: A) => S,\n getDerivedState: (state: S) => R,\n initialState: S,\n): [R, Dispatch<A>];\nexport function tapReducerWithDerivedState<S, A, I, R extends S>(\n reducer: (state: S, action: A) => S,\n getDerivedState: (state: S) => R,\n initialArg: I,\n init: (arg: I) => S,\n): [R, Dispatch<A>];\nexport function tapReducerWithDerivedState<S, A, I, R extends S>(\n reducer: (state: S, action: A) => S,\n getDerivedState: (state: S) => R,\n initialArg: I,\n init?: (arg: I) => S,\n): [R, Dispatch<A>] {\n return tapReducerImpl(reducer, getDerivedState, initialArg, init);\n}\n"],"mappings":";;;;;AAQA,MAAM,mBACJ,OACA,aACS;CACT,IAAI,MAAM,eACR,MAAM,IAAI,MAAM,gCAAgC;CAElD,IAAI,MAAM,gBACR,MAAM,IAAI,MAAM,+BAA+B;CAGjD,MAAM,KAAK,qBAAqB;EAC9B,MAAM,SAAS,SAAS;EACxB,IAAI,QAAQ;GACV,OAAO;GACP,MAAM,KAAK,UAAU,KAAK,MAAM;GAChC,OAAO;EACT;EACA,OAAO;CACT,CAAC;AACH;AAEA,SAAS,eACP,SACA,iBACA,YACA,QACkB;CAClB,MAAM,OAAO,QAAQ,iBAAiB;EACpC,MAAM,QAAQ,wBAAwB;EAGtC,MAAM,eAAe,SAAS,OAAO,UAAe,IAAI;EAExD,IAAI,iBAAiB,MAAM,iBAAiB,QAC1C,OAAY,UAAe;EAG7B,OAAO;GACL,MAAM;GACN,uBAAO,IAAI,IAAI;GACf,OAAO;GACP,gBAAgB;GAChB,SAAS;GACT;GACA,WAAW,WAAc;IACvB,MAAM,QAA2B;KAC/B;KACA,eAAe;KACf,YAAY,KAAA;IACd;IAEA,gBAAgB,aAAa;KAC3B,IAAI,MAAM,KAAK,WAAW,WAAW,KAAK,CAAC,MAAM,eAAe;MAC9D,MAAM,aAAa,QAAQ,KAAK,gBAAgB,MAAM;MACtD,MAAM,gBAAgB;MAEtB,IAAI,OAAO,GAAG,KAAK,SAAS,MAAM,UAAU,GAAG,OAAO;KACxD;KAEA,aAAa;MACX,cAAc,OAAO,IAAI;MACzB,KAAK,MAAM,IAAI,KAAK;KACtB;IACF,CAAC;GACH;EACF;CACF,CAAC;CAED,MAAM,QAAQ,wBAAwB;CACtC,MAAM,cAAc,YAAY,KAAK;CACrC,KAAK,UAAU;CAEf,KAAK,MAAM,QAAQ,KAAK,OAAO;EAC7B,IAAI,CAAC,KAAK,iBAAiB,CAAC,aAAa;GACvC,KAAK,aAAa,QAAQ,KAAK,gBAAgB,KAAK,MAAM;GAC1D,KAAK,gBAAgB;EACvB;EAEA,IAAI,iBAAiB,MAAM,eACzB,QAAa,KAAK,gBAAgB,KAAK,MAAM;EAG/C,KAAK,iBAAiB,KAAK;CAC7B;CACA,KAAK,MAAM,MAAM;CAEjB,IAAI,iBAAiB;EACnB,MAAM,UAAU,gBAAgB,KAAK,cAAc;EAEnD,IAAI,CAAC,OAAO,GAAG,SAAS,KAAK,cAAc,GAAG;GAC5C,cAAc,OAAO,IAAI;GACzB,KAAK,iBAAiB;EACxB;CACF;CAEA,OAAO,CAAC,KAAK,gBAAgB,KAAK,QAAQ;AAC5C;AAWA,SAAgB,WACd,SACA,YACA,MACkB;CAClB,OAAO,eACL,SACA,KAAA,GACA,YACA,IACF;AACF;AAaA,SAAgB,2BACd,SACA,iBACA,YACA,MACkB;CAClB,OAAO,eAAe,SAAS,iBAAiB,YAAY,IAAI;AAClE"}
@@ -1,8 +1,11 @@
1
- export declare namespace tapRef {
2
- interface RefObject<T> {
3
- current: T;
4
- }
1
+ //#region src/hooks/tap-ref.d.ts
2
+ declare namespace tapRef {
3
+ interface RefObject<T> {
4
+ current: T;
5
+ }
5
6
  }
6
- export declare function tapRef<T>(initialValue: T): tapRef.RefObject<T>;
7
- export declare function tapRef<T = undefined>(): tapRef.RefObject<T | undefined>;
7
+ declare function tapRef<T>(initialValue: T): tapRef.RefObject<T>;
8
+ declare function tapRef<T = undefined>(): tapRef.RefObject<T | undefined>;
9
+ //#endregion
10
+ export { tapRef };
8
11
  //# sourceMappingURL=tap-ref.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap-ref.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-ref.ts"],"names":[],"mappings":"AAEA,yBAAiB,MAAM,CAAC;IACtB,UAAiB,SAAS,CAAC,CAAC;QAC1B,OAAO,EAAE,CAAC,CAAC;KACZ;CACF;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAChE,wBAAgB,MAAM,CAAC,CAAC,GAAG,SAAS,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"tap-ref.d.ts","names":[],"sources":["../../src/hooks/tap-ref.ts"],"mappings":";kBAEiB,MAAA;EAAA,UACE,SAAA;IACf,OAAA,EAAS,CAAC;EAAA;AAAA;AAAA,iBAIE,MAAA,GAAA,CAAU,YAAA,EAAc,CAAA,GAAI,MAAA,CAAO,SAAA,CAAU,CAAA;AAAA,iBAC7C,MAAA,eAAA,CAAA,GAAyB,MAAA,CAAO,SAAS,CAAC,CAAA"}
@@ -1,8 +1,10 @@
1
1
  import { tapState } from "./tap-state.js";
2
- export function tapRef(initialValue) {
3
- const [state] = tapState(() => ({
4
- current: initialValue,
5
- }));
6
- return state;
2
+ //#region src/hooks/tap-ref.ts
3
+ function tapRef(initialValue) {
4
+ const [state] = tapState(() => ({ current: initialValue }));
5
+ return state;
7
6
  }
7
+ //#endregion
8
+ export { tapRef };
9
+
8
10
  //# sourceMappingURL=tap-ref.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap-ref.js","sourceRoot":"","sources":["../../src/hooks/tap-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,uBAAoB;AAUvC,MAAM,UAAU,MAAM,CAAI,YAAgB;IACxC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9B,OAAO,EAAE,YAAY;KACtB,CAAC,CAAC,CAAC;IACJ,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"tap-ref.js","names":[],"sources":["../../src/hooks/tap-ref.ts"],"sourcesContent":["import { tapState } from \"./tap-state\";\n\nexport namespace tapRef {\n export interface RefObject<T> {\n current: T;\n }\n}\n\nexport function tapRef<T>(initialValue: T): tapRef.RefObject<T>;\nexport function tapRef<T = undefined>(): tapRef.RefObject<T | undefined>;\nexport function tapRef<T>(initialValue?: T): tapRef.RefObject<T | undefined> {\n const [state] = tapState(() => ({\n current: initialValue,\n }));\n return state;\n}\n"],"mappings":";;AAUA,SAAgB,OAAU,cAAmD;CAC3E,MAAM,CAAC,SAAS,gBAAgB,EAC9B,SAAS,aACX,EAAE;CACF,OAAO;AACT"}
@@ -1,4 +1,8 @@
1
- import type { ExtractResourceReturnType, ResourceElement } from "../core/types.js";
2
- export declare function tapResource<E extends ResourceElement<any, any>>(element: E): ExtractResourceReturnType<E>;
3
- export declare function tapResource<E extends ResourceElement<any, any>>(element: E, propsDeps: readonly unknown[]): ExtractResourceReturnType<E>;
1
+ import { ExtractResourceReturnType, ResourceElement } from "../core/types.js";
2
+
3
+ //#region src/hooks/tap-resource.d.ts
4
+ declare function tapResource<E extends ResourceElement<any, any>>(element: E): ExtractResourceReturnType<E>;
5
+ declare function tapResource<E extends ResourceElement<any, any>>(element: E, propsDeps: readonly unknown[]): ExtractResourceReturnType<E>;
6
+ //#endregion
7
+ export { tapResource };
4
8
  //# sourceMappingURL=tap-resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap-resource.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-resource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,eAAe,EAAE,yBAAsB;AAYhF,wBAAgB,WAAW,CAAC,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EAC7D,OAAO,EAAE,CAAC,GACT,yBAAyB,CAAC,CAAC,CAAC,CAAC;AAChC,wBAAgB,WAAW,CAAC,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EAC7D,OAAO,EAAE,CAAC,EACV,SAAS,EAAE,SAAS,OAAO,EAAE,GAC5B,yBAAyB,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"tap-resource.d.ts","names":[],"sources":["../../src/hooks/tap-resource.ts"],"mappings":";;;iBAYgB,WAAA,WAAsB,eAAA,WAAA,CACpC,OAAA,EAAS,CAAA,GACR,yBAAA,CAA0B,CAAA;AAAA,iBACb,WAAA,WAAsB,eAAA,WAAA,CACpC,OAAA,EAAS,CAAA,EACT,SAAA,uBACC,yBAAA,CAA0B,CAAA"}
@@ -1,26 +1,35 @@
1
+ import { getCurrentResourceFiber } from "../core/helpers/execution-context.js";
1
2
  import { tapEffect } from "./tap-effect.js";
2
- import { createResourceFiber, unmountResourceFiber, renderResourceFiber, commitResourceFiber, } from "../core/ResourceFiber.js";
3
- import { tapMemo } from "./tap-memo.js";
4
3
  import { tapRef } from "./tap-ref.js";
5
- import { getCurrentResourceFiber } from "../core/helpers/execution-context.js";
6
- export function tapResource(element, propsDeps) {
7
- const parentFiber = getCurrentResourceFiber();
8
- const versionRef = tapRef(0);
9
- const fiber = tapMemo(() => {
10
- void element.key;
11
- return createResourceFiber(element.type, parentFiber.root, () => {
12
- versionRef.current++;
13
- parentFiber.markDirty?.();
14
- });
15
- }, [element.type, element.key, parentFiber]);
16
- const result = propsDeps
17
- ? // biome-ignore lint/correctness/useExhaustiveDependencies: user provided deps instead of prop identity
18
- tapMemo(() => renderResourceFiber(fiber, element.props), [fiber, ...propsDeps, versionRef.current])
19
- : renderResourceFiber(fiber, element.props);
20
- tapEffect(() => () => unmountResourceFiber(fiber), [fiber]);
21
- tapEffect(() => {
22
- commitResourceFiber(fiber, result);
23
- }, [fiber, result]);
24
- return result.output;
4
+ import { tapMemo } from "./tap-memo.js";
5
+ import { commitResourceFiber, createResourceFiber, renderResourceFiber, unmountResourceFiber } from "../core/ResourceFiber.js";
6
+ //#region src/hooks/tap-resource.ts
7
+ function tapResource(element, propsDeps) {
8
+ const parentFiber = getCurrentResourceFiber();
9
+ const versionRef = tapRef(0);
10
+ const fiber = tapMemo(() => {
11
+ element.key;
12
+ return createResourceFiber(element.type, parentFiber.root, () => {
13
+ versionRef.current++;
14
+ parentFiber.markDirty?.();
15
+ });
16
+ }, [
17
+ element.type,
18
+ element.key,
19
+ parentFiber
20
+ ]);
21
+ const result = propsDeps ? tapMemo(() => renderResourceFiber(fiber, element.props), [
22
+ fiber,
23
+ ...propsDeps,
24
+ versionRef.current
25
+ ]) : renderResourceFiber(fiber, element.props);
26
+ tapEffect(() => () => unmountResourceFiber(fiber), [fiber]);
27
+ tapEffect(() => {
28
+ commitResourceFiber(fiber, result);
29
+ }, [fiber, result]);
30
+ return result.output;
25
31
  }
32
+ //#endregion
33
+ export { tapResource };
34
+
26
35
  //# sourceMappingURL=tap-resource.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap-resource.js","sourceRoot":"","sources":["../../src/hooks/tap-resource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,wBAAqB;AACzC,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,GACpB,iCAA8B;AAC/B,OAAO,EAAE,OAAO,EAAE,sBAAmB;AACrC,OAAO,EAAE,MAAM,EAAE,qBAAkB;AACnC,OAAO,EAAE,uBAAuB,EAAE,6CAA0C;AAS5E,MAAM,UAAU,WAAW,CACzB,OAAU,EACV,SAA8B;IAE9B,MAAM,WAAW,GAAG,uBAAuB,EAAE,CAAC;IAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,KAAK,OAAO,CAAC,GAAG,CAAC;QACjB,OAAO,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE;YAC9D,UAAU,CAAC,OAAO,EAAE,CAAC;YACrB,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,SAAS;QACtB,CAAC,CAAC,uGAAuG;YACvG,OAAO,CACL,GAAG,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,EAC/C,CAAC,KAAK,EAAE,GAAG,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,CAC1C;QACH,CAAC,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAE9C,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,SAAS,CAAC,GAAG,EAAE;QACb,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAEpB,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"tap-resource.js","names":[],"sources":["../../src/hooks/tap-resource.ts"],"sourcesContent":["import type { ExtractResourceReturnType, ResourceElement } from \"../core/types\";\nimport { tapEffect } from \"./tap-effect\";\nimport {\n createResourceFiber,\n unmountResourceFiber,\n renderResourceFiber,\n commitResourceFiber,\n} from \"../core/ResourceFiber\";\nimport { tapMemo } from \"./tap-memo\";\nimport { tapRef } from \"./tap-ref\";\nimport { getCurrentResourceFiber } from \"../core/helpers/execution-context\";\n\nexport function tapResource<E extends ResourceElement<any, any>>(\n element: E,\n): ExtractResourceReturnType<E>;\nexport function tapResource<E extends ResourceElement<any, any>>(\n element: E,\n propsDeps: readonly unknown[],\n): ExtractResourceReturnType<E>;\nexport function tapResource<E extends ResourceElement<any, any>>(\n element: E,\n propsDeps?: readonly unknown[],\n): ExtractResourceReturnType<E> {\n const parentFiber = getCurrentResourceFiber();\n const versionRef = tapRef(0);\n const fiber = tapMemo(() => {\n void element.key;\n return createResourceFiber(element.type, parentFiber.root, () => {\n versionRef.current++;\n parentFiber.markDirty?.();\n });\n }, [element.type, element.key, parentFiber]);\n\n const result = propsDeps\n ? tapMemo(\n () => renderResourceFiber(fiber, element.props),\n // oxlint-disable-next-line tap-hooks/exhaustive-deps -- props identity replaced by user-provided deps\n [fiber, ...propsDeps, versionRef.current],\n )\n : renderResourceFiber(fiber, element.props);\n\n tapEffect(() => () => unmountResourceFiber(fiber), [fiber]);\n tapEffect(() => {\n commitResourceFiber(fiber, result);\n }, [fiber, result]);\n\n return result.output;\n}\n"],"mappings":";;;;;;AAmBA,SAAgB,YACd,SACA,WAC8B;CAC9B,MAAM,cAAc,wBAAwB;CAC5C,MAAM,aAAa,OAAO,CAAC;CAC3B,MAAM,QAAQ,cAAc;EAC1B,QAAa;EACb,OAAO,oBAAoB,QAAQ,MAAM,YAAY,YAAY;GAC/D,WAAW;GACX,YAAY,YAAY;EAC1B,CAAC;CACH,GAAG;EAAC,QAAQ;EAAM,QAAQ;EAAK;CAAW,CAAC;CAE3C,MAAM,SAAS,YACX,cACQ,oBAAoB,OAAO,QAAQ,KAAK,GAE9C;EAAC;EAAO,GAAG;EAAW,WAAW;CAAO,CAC1C,IACA,oBAAoB,OAAO,QAAQ,KAAK;CAE5C,sBAAsB,qBAAqB,KAAK,GAAG,CAAC,KAAK,CAAC;CAC1D,gBAAgB;EACd,oBAAoB,OAAO,MAAM;CACnC,GAAG,CAAC,OAAO,MAAM,CAAC;CAElB,OAAO,OAAO;AAChB"}
@@ -1,3 +1,7 @@
1
- import type { ExtractResourceReturnType, ResourceElement } from "../core/types.js";
2
- export declare function tapResources<E extends ResourceElement<any, any>>(getElements: () => readonly E[], getElementsDeps?: readonly unknown[]): ExtractResourceReturnType<E>[];
1
+ import { ExtractResourceReturnType, ResourceElement } from "../core/types.js";
2
+
3
+ //#region src/hooks/tap-resources.d.ts
4
+ declare function tapResources<E extends ResourceElement<any, any>>(getElements: () => readonly E[], getElementsDeps?: readonly unknown[]): ExtractResourceReturnType<E>[];
5
+ //#endregion
6
+ export { tapResources };
3
7
  //# sourceMappingURL=tap-resources.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap-resources.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EAEzB,eAAe,EAEhB,yBAAsB;AAsBvB,wBAAgB,YAAY,CAAC,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EAC9D,WAAW,EAAE,MAAM,SAAS,CAAC,EAAE,EAC/B,eAAe,CAAC,EAAE,SAAS,OAAO,EAAE,GACnC,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAqHhC"}
1
+ {"version":3,"file":"tap-resources.d.ts","names":[],"sources":["../../src/hooks/tap-resources.ts"],"mappings":";;;iBA2BgB,YAAA,WAAuB,eAAA,WAAA,CACrC,WAAA,iBAA4B,CAAA,IAC5B,eAAA,wBACC,yBAAA,CAA0B,CAAA"}