@assistant-ui/tap 0.3.6 → 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 +8 -1
  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
@@ -1,39 +1,41 @@
1
1
  import type { tapEffect } from "../hooks/tap-effect.js";
2
2
  import type { tapState } from "../hooks/tap-state.js";
3
- import { fnSymbol } from "./callResourceFn.js";
3
+ import type { fnSymbol } from "./callResourceFn.js";
4
4
  export type ResourceElement<R, P = any> = {
5
- type: Resource<R, P> & {
5
+ readonly type: Resource<R, P> & {
6
6
  [fnSymbol]: (props: P) => R;
7
7
  };
8
- props: P;
8
+ readonly props: P;
9
+ readonly key?: string | number;
9
10
  };
10
- type ResourceArgs<P> = undefined extends P ? [props?: P] : [props: P];
11
- export type Resource<R, P> = (...args: ResourceArgs<P>) => ResourceElement<R, P>;
12
- export type ContravariantResource<R, P> = (...args: ResourceArgs<P>) => ResourceElement<R>;
13
- export type ExtractResourceOutput<T> = T extends ResourceElement<infer R, any> ? R : never;
11
+ export type Resource<R, P> = (props: P) => ResourceElement<R, P>;
12
+ export type ContravariantResource<R, P> = (props: P) => ResourceElement<R>;
13
+ export type ExtractResourceReturnType<T> = T extends ResourceElement<infer R, any> ? R : T extends Resource<infer R, any> ? R : never;
14
14
  export type Cell = {
15
- type: "state";
15
+ readonly type: "state";
16
16
  value: any;
17
17
  set: (updater: tapState.StateUpdater<any>) => void;
18
18
  } | {
19
- type: "effect";
20
- mounted: boolean;
21
- cleanup?: tapEffect.Destructor | undefined;
22
- deps?: readonly unknown[] | undefined;
19
+ readonly type: "effect";
20
+ cleanup: tapEffect.Destructor | void;
21
+ deps: readonly unknown[] | null | undefined;
23
22
  };
24
23
  export interface EffectTask {
25
- effect: tapEffect.EffectCallback;
26
- deps?: readonly unknown[] | undefined;
27
- cellIndex: number;
24
+ readonly effect: tapEffect.EffectCallback;
25
+ readonly deps: readonly unknown[] | undefined;
26
+ readonly cell: Cell & {
27
+ type: "effect";
28
+ };
28
29
  }
29
30
  export interface RenderResult {
30
- state: any;
31
- props: any;
32
- commitTasks: EffectTask[];
31
+ readonly output: any;
32
+ readonly props: any;
33
+ readonly commitTasks: (() => void)[];
33
34
  }
34
35
  export interface ResourceFiber<R, P> {
35
- readonly scheduleRerender: () => void;
36
- readonly resource: Resource<R, P>;
36
+ readonly dispatchUpdate: (callback: () => boolean) => void;
37
+ readonly type: Resource<R, P>;
38
+ readonly devStrictMode: "root" | "child" | null;
37
39
  cells: Cell[];
38
40
  currentIndex: number;
39
41
  renderContext: RenderResult | undefined;
@@ -41,5 +43,4 @@ export interface ResourceFiber<R, P> {
41
43
  isFirstRender: boolean;
42
44
  isNeverMounted: boolean;
43
45
  }
44
- export {};
45
46
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,+BAA4B;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,8BAA2B;AACnD,OAAO,EAAE,QAAQ,EAAE,4BAAyB;AAE5C,MAAM,MAAM,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI;IACxC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAA;KAAE,CAAC;IACvD,KAAK,EAAE,CAAC,CAAC;CACV,CAAC;AAEF,KAAK,YAAY,CAAC,CAAC,IAAI,SAAS,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACtE,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAC3B,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,KACrB,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE3B,MAAM,MAAM,qBAAqB,CAAC,CAAC,EAAE,CAAC,IAAI,CACxC,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,KACrB,eAAe,CAAC,CAAC,CAAC,CAAC;AAExB,MAAM,MAAM,qBAAqB,CAAC,CAAC,IACjC,CAAC,SAAS,eAAe,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEtD,MAAM,MAAM,IAAI,GACZ;IACE,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,GAAG,CAAC;IACX,GAAG,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;CACpD,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC;IAC3C,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAC;CACvC,CAAC;AAEN,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC;IACjC,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,GAAG,CAAC;IACX,KAAK,EAAE,GAAG,CAAC;IACX,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,EAAE,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAElC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IAErB,aAAa,EAAE,YAAY,GAAG,SAAS,CAAC;IAExC,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;CACzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,+BAA4B;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,8BAA2B;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,4BAAyB;AAEjD,MAAM,MAAM,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI;IACxC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAA;KAAE,CAAC;IAChE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjE,MAAM,MAAM,qBAAqB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC,CAAC;AAE3E,MAAM,MAAM,yBAAyB,CAAC,CAAC,IACrC,CAAC,SAAS,eAAe,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GACnC,CAAC,GACD,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAC9B,CAAC,GACD,KAAK,CAAC;AAEd,MAAM,MAAM,IAAI,GACZ;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,GAAG,CAAC;IACX,GAAG,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;CACpD,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,OAAO,EAAE,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC;IACrC,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEN,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAC;CAC1C;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,EAAE,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,OAAO,KAAK,IAAI,CAAC;IAC3D,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IAEhD,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IAErB,aAAa,EAAE,YAAY,GAAG,SAAS,CAAC;IAExC,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;CACzB"}
@@ -1,2 +1,2 @@
1
- import { fnSymbol } from "./callResourceFn.js";
1
+ export {};
2
2
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,4BAAyB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import { ResourceElement } from "./types.js";
2
+ export declare function withKey<E extends ResourceElement<any, any>>(key: string | number, element: E): E;
3
+ //# sourceMappingURL=withKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withKey.d.ts","sourceRoot":"","sources":["../../src/core/withKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,mBAAgB;AAE1C,wBAAgB,OAAO,CAAC,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EACzD,GAAG,EAAE,MAAM,GAAG,MAAM,EACpB,OAAO,EAAE,CAAC,GACT,CAAC,CAEH"}
@@ -0,0 +1,4 @@
1
+ export function withKey(key, element) {
2
+ return { ...element, key };
3
+ }
4
+ //# sourceMappingURL=withKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withKey.js","sourceRoot":"","sources":["../../src/core/withKey.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,OAAO,CACrB,GAAoB,EACpB,OAAU;IAEV,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,CAAC;AAC7B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tap-callback.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-callback.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAC3D,IAAI,CAAC,EACL,MAAM,SAAS,OAAO,EAAE,KACvB,CAEF,CAAC"}
1
+ {"version":3,"file":"tap-callback.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-callback.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAC3D,IAAI,CAAC,EACL,MAAM,SAAS,OAAO,EAAE,KACvB,CAGF,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { tapMemo } from "./tap-memo.js";
2
2
  export const tapCallback = (fn, deps) => {
3
+ // biome-ignore lint/correctness/useExhaustiveDependencies: user provided deps instead of callback identity
3
4
  return tapMemo(() => fn, deps);
4
5
  };
5
6
  //# sourceMappingURL=tap-callback.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap-callback.js","sourceRoot":"","sources":["../../src/hooks/tap-callback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,sBAAmB;AAErC,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,EAAK,EACL,IAAwB,EACrB,EAAE;IACL,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC,CAAC"}
1
+ {"version":3,"file":"tap-callback.js","sourceRoot":"","sources":["../../src/hooks/tap-callback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,sBAAmB;AAErC,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,EAAK,EACL,IAAwB,EACrB,EAAE;IACL,2GAA2G;IAC3G,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function tapConst<T>(getValue: () => T, _deps: readonly never[]): T;
2
+ //# sourceMappingURL=tap-const.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tap-const.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-const.ts"],"names":[],"mappings":"AAEA,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,KAAK,EAAE,GAAG,CAAC,CAGzE"}
@@ -0,0 +1,6 @@
1
+ import { tapState } from "./tap-state.js";
2
+ export function tapConst(getValue, _deps) {
3
+ const [state] = tapState(getValue);
4
+ return state;
5
+ }
6
+ //# sourceMappingURL=tap-const.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tap-const.js","sourceRoot":"","sources":["../../src/hooks/tap-const.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,uBAAoB;AAEvC,MAAM,UAAU,QAAQ,CAAI,QAAiB,EAAE,KAAuB;IACpE,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tap-effect-event.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-effect-event.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAC9D,QAAQ,EAAE,CAAC,GACV,CAAC,CAQH"}
1
+ {"version":3,"file":"tap-effect-event.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-effect-event.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAC9D,QAAQ,EAAE,CAAC,GACV,CAAC,CAoBH"}
@@ -1,5 +1,8 @@
1
1
  import { tapRef } from "./tap-ref.js";
2
2
  import { tapEffect } from "./tap-effect.js";
3
+ import { isDevelopment } from "../core/env.js";
4
+ import { tapCallback } from "./tap-callback.js";
5
+ import { getCurrentResourceFiber } from "../core/execution-context.js";
3
6
  /**
4
7
  * Creates a stable function reference that always calls the most recent version of the callback.
5
8
  * Similar to React's useEffectEvent hook.
@@ -20,6 +23,14 @@ export function tapEffectEvent(callback) {
20
23
  tapEffect(() => {
21
24
  callbackRef.current = callback;
22
25
  });
26
+ if (isDevelopment) {
27
+ const fiber = getCurrentResourceFiber();
28
+ return tapCallback(((...args) => {
29
+ if (fiber.renderContext)
30
+ throw new Error("tapEffectEvent cannot be called during render");
31
+ return callbackRef.current(...args);
32
+ }), []);
33
+ }
23
34
  return callbackRef.current;
24
35
  }
25
36
  //# sourceMappingURL=tap-effect-event.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap-effect-event.js","sourceRoot":"","sources":["../../src/hooks/tap-effect-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,qBAAkB;AACnC,OAAO,EAAE,SAAS,EAAE,wBAAqB;AAEzC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAW;IAEX,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAErC,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"tap-effect-event.js","sourceRoot":"","sources":["../../src/hooks/tap-effect-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,qBAAkB;AACnC,OAAO,EAAE,SAAS,EAAE,wBAAqB;AACzC,OAAO,EAAE,aAAa,EAAE,uBAAoB;AAC5C,OAAO,EAAE,WAAW,EAAE,0BAAuB;AAC7C,OAAO,EAAE,uBAAuB,EAAE,qCAAkC;AAEpE;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAW;IAEX,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAErC,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,uBAAuB,EAAE,CAAC;QACxC,OAAO,WAAW,CAChB,CAAC,CAAC,GAAG,IAAmB,EAAE,EAAE;YAC1B,IAAI,KAAK,CAAC,aAAa;gBACrB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;YACnE,OAAO,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QACtC,CAAC,CAAM,EACP,EAAE,CACH,CAAC;IACJ,CAAC;IAED,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tap-effect.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-effect.ts"],"names":[],"mappings":"AAiCA,yBAAiB,SAAS,CAAC;IACzB,KAAY,UAAU,GAAG,MAAM,IAAI,CAAC;IACpC,KAAY,cAAc,GAAG,MAAM,IAAI,GAAG,UAAU,CAAC;CACtD;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC;AAClE,wBAAgB,SAAS,CACvB,MAAM,EAAE,SAAS,CAAC,cAAc,EAChC,IAAI,EAAE,SAAS,OAAO,EAAE,GACvB,IAAI,CAAC"}
1
+ {"version":3,"file":"tap-effect.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-effect.ts"],"names":[],"mappings":"AAUA,yBAAiB,SAAS,CAAC;IACzB,KAAY,UAAU,GAAG,MAAM,IAAI,CAAC;IACpC,KAAY,cAAc,GAAG,MAAM,IAAI,GAAG,UAAU,CAAC;CACtD;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC;AAClE,wBAAgB,SAAS,CACvB,MAAM,EAAE,SAAS,CAAC,cAAc,EAChC,IAAI,EAAE,SAAS,OAAO,EAAE,GACvB,IAAI,CAAC"}
@@ -1,35 +1,47 @@
1
- import { getCurrentResourceFiber } from "../core/execution-context.js";
2
- function getEffectCell() {
3
- const fiber = getCurrentResourceFiber();
4
- const index = fiber.currentIndex++;
5
- // Check if we're trying to use more hooks than in previous renders
6
- if (!fiber.isFirstRender && index >= fiber.cells.length) {
7
- throw new Error("Rendered more hooks than during the previous render. " +
8
- "Hooks must be called in the exact same order in every render.");
9
- }
10
- if (!fiber.cells[index]) {
11
- // Create the effect cell
12
- const cell = {
13
- type: "effect",
14
- mounted: false,
15
- };
16
- fiber.cells[index] = cell;
17
- }
18
- const cell = fiber.cells[index];
19
- if (cell.type !== "effect") {
20
- throw new Error("Hook order changed between renders");
21
- }
22
- return index;
23
- }
1
+ import { depsShallowEqual } from "./utils/depsShallowEqual.js";
2
+ import { tapHook, registerRenderMountTask } from "./utils/tapHook.js";
3
+ const newEffect = () => ({
4
+ type: "effect",
5
+ cleanup: undefined,
6
+ deps: null, // null means the effect has never been run
7
+ });
24
8
  export function tapEffect(effect, deps) {
25
- const fiber = getCurrentResourceFiber();
26
- // Reserve a spot for the effect cell and get its index
27
- const cellIndex = getEffectCell();
28
- // Add task to render context for execution in commit phase
29
- fiber.renderContext.commitTasks.push({
30
- effect,
31
- deps,
32
- cellIndex,
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
+ throw new AggregateError(errors, "Errors during commit");
43
+ }
44
+ }
33
45
  });
34
46
  }
35
47
  //# sourceMappingURL=tap-effect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap-effect.js","sourceRoot":"","sources":["../../src/hooks/tap-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,qCAAkC;AAGpE,SAAS,aAAa;IACpB,MAAM,KAAK,GAAG,uBAAuB,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IAEnC,mEAAmE;IACnE,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,uDAAuD;YACrD,+DAA+D,CAClE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,yBAAyB;QACzB,MAAM,IAAI,GAA8B;YACtC,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,KAAK;SACf,CAAC;QAEF,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAYD,MAAM,UAAU,SAAS,CACvB,MAAgC,EAChC,IAAyB;IAEzB,MAAM,KAAK,GAAG,uBAAuB,EAAE,CAAC;IAExC,uDAAuD;IACvD,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAElC,2DAA2D;IAC3D,KAAK,CAAC,aAAc,CAAC,WAAW,CAAC,IAAI,CAAC;QACpC,MAAM;QACN,IAAI;QACJ,SAAS;KACV,CAAC,CAAC;AACL,CAAC"}
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,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,3 +1,3 @@
1
- import { ExtractResourceOutput, ResourceElement } from "../core/types.js";
2
- export declare function tapInlineResource<E extends ResourceElement<any, any>>(element: E): ExtractResourceOutput<E>;
1
+ import { ExtractResourceReturnType, ResourceElement } from "../core/types.js";
2
+ export declare function tapInlineResource<E extends ResourceElement<any, any>>(element: E): ExtractResourceReturnType<E>;
3
3
  //# sourceMappingURL=tap-inline-resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap-inline-resource.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-inline-resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,yBAAsB;AAGvE,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EACnE,OAAO,EAAE,CAAC,GACT,qBAAqB,CAAC,CAAC,CAAC,CAE1B"}
1
+ {"version":3,"file":"tap-inline-resource.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-inline-resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,yBAAsB;AAG3E,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EACnE,OAAO,EAAE,CAAC,GACT,yBAAyB,CAAC,CAAC,CAAC,CAE9B"}
@@ -1,5 +1,5 @@
1
1
  import { tapRef } from "./tap-ref.js";
2
- import { depsShallowEqual } from "./depsShallowEqual.js";
2
+ import { depsShallowEqual } from "./utils/depsShallowEqual.js";
3
3
  export const tapMemo = (fn, deps) => {
4
4
  const dataRef = tapRef();
5
5
  if (!dataRef.current) {
@@ -1 +1 @@
1
- {"version":3,"file":"tap-memo.js","sourceRoot":"","sources":["../../src/hooks/tap-memo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,qBAAkB;AACnC,OAAO,EAAE,gBAAgB,EAAE,8BAA2B;AAEtD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAI,EAAW,EAAE,IAAwB,EAAE,EAAE;IAClE,MAAM,OAAO,GAAG,MAAM,EAA0C,CAAC;IACjE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC;QAC7B,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/B,CAAC,CAAC"}
1
+ {"version":3,"file":"tap-memo.js","sourceRoot":"","sources":["../../src/hooks/tap-memo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,qBAAkB;AACnC,OAAO,EAAE,gBAAgB,EAAE,oCAAiC;AAE5D,MAAM,CAAC,MAAM,OAAO,GAAG,CAAI,EAAW,EAAE,IAAwB,EAAE,EAAE;IAClE,MAAM,OAAO,GAAG,MAAM,EAA0C,CAAC;IACjE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC;QAC7B,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/B,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { ExtractResourceOutput, ResourceElement } from "../core/types.js";
2
- export declare function tapResource<E extends ResourceElement<any, any>>(element: E): ExtractResourceOutput<E>;
3
- export declare function tapResource<E extends ResourceElement<any, any>>(element: E, deps: readonly unknown[]): ExtractResourceOutput<E>;
1
+ import { 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>;
4
4
  //# 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,EAAE,qBAAqB,EAAE,eAAe,EAAE,yBAAsB;AAWvE,wBAAgB,WAAW,CAAC,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EAC7D,OAAO,EAAE,CAAC,GACT,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC5B,wBAAgB,WAAW,CAAC,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EAC7D,OAAO,EAAE,CAAC,EACV,IAAI,EAAE,SAAS,OAAO,EAAE,GACvB,qBAAqB,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"tap-resource.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,yBAAsB;AAY3E,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"}
@@ -2,17 +2,25 @@ import { tapEffect } from "./tap-effect.js";
2
2
  import { createResourceFiber, unmountResourceFiber, renderResourceFiber, commitResourceFiber, } from "../core/ResourceFiber.js";
3
3
  import { tapMemo } from "./tap-memo.js";
4
4
  import { tapState } from "./tap-state.js";
5
- export function tapResource(element, deps) {
6
- const [stateVersion, rerender] = tapState({});
7
- const fiber = tapMemo(() => createResourceFiber(element.type, () => rerender({})), [element.type]);
8
- const props = deps ? tapMemo(() => element.props, deps) : element.props;
9
- const result = tapMemo(() => renderResourceFiber(fiber, props), [fiber, props, stateVersion]);
10
- tapEffect(() => {
11
- return () => unmountResourceFiber(fiber);
12
- }, [fiber]);
5
+ import { tapConst } from "./tap-const.js";
6
+ export function tapResource(element, propsDeps) {
7
+ const [version, setVersion] = tapState(0);
8
+ const rerender = tapConst(() => () => setVersion((v) => v + 1), []);
9
+ const fiber = tapMemo(() => {
10
+ void element.key;
11
+ return createResourceFiber(element.type, (callback) => {
12
+ if (callback())
13
+ rerender();
14
+ });
15
+ }, [element.type, element.key]);
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, version])
19
+ : renderResourceFiber(fiber, element.props);
20
+ tapEffect(() => () => unmountResourceFiber(fiber), [fiber]);
13
21
  tapEffect(() => {
14
22
  commitResourceFiber(fiber, result);
15
23
  }, [fiber, result]);
16
- return result.state;
24
+ return result.output;
17
25
  }
18
26
  //# 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,QAAQ,EAAE,uBAAoB;AASvC,MAAM,UAAU,WAAW,CACzB,OAAU,EACV,IAAyB;IAEzB,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAC3D,CAAC,OAAO,CAAC,IAAI,CAAC,CACf,CAAC;IAEF,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACxE,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,EACvC,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAC7B,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,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,KAAK,CAAC;AACtB,CAAC"}
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,QAAQ,EAAE,uBAAoB;AACvC,OAAO,EAAE,QAAQ,EAAE,uBAAoB;AASvC,MAAM,UAAU,WAAW,CACzB,OAAU,EACV,SAA8B;IAE9B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEpE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,KAAK,OAAO,CAAC,GAAG,CAAC;QACjB,OAAO,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE;YACpD,IAAI,QAAQ,EAAE;gBAAE,QAAQ,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAEhC,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,OAAO,CAAC,CAC/B;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,11 +1,3 @@
1
- import { ExtractResourceOutput, RenderResult, ResourceElement, ResourceFiber } from "../core/types.js";
2
- export type TapResourcesRenderResult<R, K extends string | number | symbol> = {
3
- add: [K, ResourceFiber<R, any>][];
4
- remove: K[];
5
- commit: [K, RenderResult][];
6
- return: Record<K, R>;
7
- };
8
- export declare function tapResources<M extends Record<string | number | symbol, any>, E extends ResourceElement<any, any>>(map: M, getElement: (t: M[keyof M], key: keyof M) => E, getElementDeps: any[]): {
9
- [K in keyof M]: ExtractResourceOutput<E>;
10
- };
1
+ import { ExtractResourceReturnType, ResourceElement } from "../core/types.js";
2
+ export declare function tapResources<E extends ResourceElement<any, any>>(getElements: () => readonly E[], getElementsDeps?: readonly unknown[]): ExtractResourceReturnType<E>[];
11
3
  //# 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,EACL,qBAAqB,EACrB,YAAY,EACZ,eAAe,EACf,aAAa,EACd,yBAAsB;AAYvB,MAAM,MAAM,wBAAwB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI;IAC5E,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;IAClC,MAAM,EAAE,CAAC,EAAE,CAAC;IACZ,MAAM,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACtB,CAAC;AAEF,wBAAgB,YAAY,CAC1B,CAAC,SAAS,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,EAC/C,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EAEnC,GAAG,EAAE,CAAC,EACN,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,EAC9C,cAAc,EAAE,GAAG,EAAE,GACpB;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;CAAE,CAgF9C"}
1
+ {"version":3,"file":"tap-resources.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-resources.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EAEzB,eAAe,EAEhB,yBAAsB;AAqBvB,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,CAyGhC"}
@@ -3,68 +3,99 @@ import { tapMemo } from "./tap-memo.js";
3
3
  import { tapState } from "./tap-state.js";
4
4
  import { tapCallback } from "./tap-callback.js";
5
5
  import { createResourceFiber, unmountResourceFiber, renderResourceFiber, commitResourceFiber, } from "../core/ResourceFiber.js";
6
- export function tapResources(map, getElement, getElementDeps) {
6
+ import { tapConst } from "./tap-const.js";
7
+ export function tapResources(getElements, getElementsDeps) {
7
8
  const [version, setVersion] = tapState(0);
8
- const rerender = tapCallback(() => setVersion((v) => v + 1), []);
9
- const [fibers] = tapState(() => new Map());
10
- const getElementMemo = tapMemo(() => getElement, getElementDeps);
9
+ const rerender = tapConst(() => () => setVersion((v) => v + 1), []);
10
+ const fibers = tapConst(() => new Map(), []);
11
+ const getElementsMemo = getElementsDeps
12
+ ? // biome-ignore lint/correctness/useExhaustiveDependencies: library code
13
+ tapCallback(getElements, getElementsDeps)
14
+ : getElements;
11
15
  // Process each element
12
- const results = tapMemo(() => {
13
- const results = {
14
- remove: [],
15
- add: [],
16
- commit: [],
17
- return: {},
18
- };
16
+ const res = tapMemo(() => {
17
+ void version;
18
+ const elementsArray = getElementsMemo();
19
+ const seenKeys = new Set();
20
+ const results = [];
21
+ let newCount = 0;
19
22
  // Create/update fibers and render
20
- for (const key in map) {
21
- const value = map[key];
22
- const element = getElementMemo(value, key);
23
- let fiber = fibers.get(key);
24
- // Create new fiber if needed or type changed
25
- if (!fiber || fiber.resource !== element.type) {
26
- if (fiber)
27
- results.remove.push(key);
28
- fiber = createResourceFiber(element.type, rerender);
29
- results.add.push([key, fiber]);
23
+ for (let i = 0; i < elementsArray.length; i++) {
24
+ const element = elementsArray[i];
25
+ const elementKey = element.key;
26
+ if (elementKey === undefined) {
27
+ throw new Error(`tapResources did not provide a key for array at index ${i}`);
28
+ }
29
+ if (seenKeys.has(elementKey))
30
+ throw new Error(`Duplicate key ${elementKey} in tapResources`);
31
+ seenKeys.add(elementKey);
32
+ let state = fibers.get(elementKey);
33
+ if (!state) {
34
+ const fiber = createResourceFiber(element.type, (callback) => {
35
+ if (callback())
36
+ rerender();
37
+ });
38
+ const result = renderResourceFiber(fiber, element.props);
39
+ state = {
40
+ fiber,
41
+ next: result,
42
+ };
43
+ newCount++;
44
+ fibers.set(elementKey, state);
45
+ results.push(result.output);
46
+ }
47
+ else if (state.fiber.type !== element.type) {
48
+ const fiber = createResourceFiber(element.type, (callback) => {
49
+ if (callback())
50
+ rerender();
51
+ });
52
+ const result = renderResourceFiber(fiber, element.props);
53
+ state.next = [fiber, result];
54
+ results.push(result.output);
55
+ }
56
+ else {
57
+ state.next = renderResourceFiber(state.fiber, element.props);
58
+ results.push(state.next.output);
30
59
  }
31
- // Render with current props
32
- const renderResult = renderResourceFiber(fiber, element.props);
33
- results.commit.push([key, renderResult]);
34
- results.return[key] = renderResult.state;
35
60
  }
36
61
  // Clean up removed fibers (only if there might be stale ones)
37
- if (fibers.size >
38
- results.commit.length - results.add.length + results.remove.length) {
62
+ if (fibers.size > results.length - newCount) {
39
63
  for (const key of fibers.keys()) {
40
- if (!(key in map)) {
41
- results.remove.push(key);
64
+ if (!seenKeys.has(key)) {
65
+ fibers.get(key).next = "delete";
42
66
  }
43
67
  }
44
68
  }
45
69
  return results;
46
- }, [map, getElementMemo, version]);
70
+ }, [getElementsMemo, version]);
47
71
  // Cleanup on unmount
48
72
  tapEffect(() => {
49
73
  return () => {
50
74
  for (const key of fibers.keys()) {
51
- unmountResourceFiber(fibers.get(key));
52
- fibers.delete(key);
75
+ const fiber = fibers.get(key).fiber;
76
+ unmountResourceFiber(fiber);
53
77
  }
54
78
  };
55
79
  }, []);
56
80
  tapEffect(() => {
57
- for (const key of results.remove) {
58
- unmountResourceFiber(fibers.get(key));
59
- fibers.delete(key);
60
- }
61
- for (const [key, fiber] of results.add) {
62
- fibers.set(key, fiber);
63
- }
64
- for (const [key, result] of results.commit) {
65
- commitResourceFiber(fibers.get(key), result);
81
+ res; // as a performance optimization, we only run if the results have changed
82
+ for (const [key, state] of fibers.entries()) {
83
+ if (state.next === "delete") {
84
+ if (state.fiber.isMounted) {
85
+ unmountResourceFiber(state.fiber);
86
+ }
87
+ fibers.delete(key);
88
+ }
89
+ else if (Array.isArray(state.next)) {
90
+ unmountResourceFiber(state.fiber);
91
+ state.fiber = state.next[0];
92
+ commitResourceFiber(state.fiber, state.next[1]);
93
+ }
94
+ else {
95
+ commitResourceFiber(state.fiber, state.next);
96
+ }
66
97
  }
67
- }, [results]);
68
- return results.return;
98
+ }, [res]);
99
+ return res;
69
100
  }
70
101
  //# sourceMappingURL=tap-resources.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap-resources.js","sourceRoot":"","sources":["../../src/hooks/tap-resources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tap-resources.js","sourceRoot":"","sources":["../../src/hooks/tap-resources.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tap-state.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-state.ts"],"names":[],"mappings":"AAGA,yBAAiB,QAAQ,CAAC;IACxB,KAAY,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CACpD;AAgED,wBAAgB,QAAQ,CAAC,CAAC,GAAG,SAAS,KAAK;IACzC,CAAC,GAAG,SAAS;IACb,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI;CAC5C,CAAC;AACF,wBAAgB,QAAQ,CAAC,CAAC,EACxB,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GACrB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"tap-state.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-state.ts"],"names":[],"mappings":"AAIA,yBAAiB,QAAQ,CAAC;IACxB,KAAY,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CACpD;AAsFD,wBAAgB,QAAQ,CAAC,CAAC,GAAG,SAAS,KAAK;IACzC,CAAC,GAAG,SAAS;IACb,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI;CAC5C,CAAC;AACF,wBAAgB,QAAQ,CAAC,CAAC,EACxB,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GACrB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC"}