@praxisjs/decorators 1.7.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/dist/component/component.d.ts +1 -1
  3. package/dist/component/component.d.ts.map +1 -1
  4. package/dist/component/component.js +8 -15
  5. package/dist/component/component.js.map +1 -1
  6. package/dist/component/lazy.d.ts +1 -1
  7. package/dist/component/lazy.d.ts.map +1 -1
  8. package/dist/component/lazy.js +44 -36
  9. package/dist/component/lazy.js.map +1 -1
  10. package/dist/create-class-decorator.d.ts +27 -5
  11. package/dist/create-class-decorator.d.ts.map +1 -1
  12. package/dist/create-class-decorator.js +53 -18
  13. package/dist/create-class-decorator.js.map +1 -1
  14. package/dist/create-field-decorator.d.ts +42 -3
  15. package/dist/create-field-decorator.d.ts.map +1 -1
  16. package/dist/create-field-decorator.js +63 -27
  17. package/dist/create-field-decorator.js.map +1 -1
  18. package/dist/create-getter-decorator.d.ts +81 -16
  19. package/dist/create-getter-decorator.d.ts.map +1 -1
  20. package/dist/create-getter-decorator.js +127 -15
  21. package/dist/create-getter-decorator.js.map +1 -1
  22. package/dist/create-lifecycle-method-decorator.d.ts +21 -3
  23. package/dist/create-lifecycle-method-decorator.d.ts.map +1 -1
  24. package/dist/create-lifecycle-method-decorator.js +25 -18
  25. package/dist/create-lifecycle-method-decorator.js.map +1 -1
  26. package/dist/create-method-decorator.d.ts +43 -3
  27. package/dist/create-method-decorator.d.ts.map +1 -1
  28. package/dist/create-method-decorator.js +49 -8
  29. package/dist/create-method-decorator.js.map +1 -1
  30. package/dist/events/command.d.ts +2 -1
  31. package/dist/events/command.d.ts.map +1 -1
  32. package/dist/events/command.js +10 -8
  33. package/dist/events/command.js.map +1 -1
  34. package/dist/events/emit.d.ts +2 -2
  35. package/dist/events/emit.d.ts.map +1 -1
  36. package/dist/events/emit.js +18 -24
  37. package/dist/events/emit.js.map +1 -1
  38. package/dist/events/on-command.d.ts +2 -1
  39. package/dist/events/on-command.d.ts.map +1 -1
  40. package/dist/events/on-command.js +12 -14
  41. package/dist/events/on-command.js.map +1 -1
  42. package/dist/field.d.ts +51 -0
  43. package/dist/field.d.ts.map +1 -0
  44. package/dist/field.js +82 -0
  45. package/dist/field.js.map +1 -0
  46. package/dist/functions/bind.d.ts +2 -1
  47. package/dist/functions/bind.d.ts.map +1 -1
  48. package/dist/functions/bind.js +4 -4
  49. package/dist/functions/bind.js.map +1 -1
  50. package/dist/functions/debounce.d.ts +2 -2
  51. package/dist/functions/debounce.d.ts.map +1 -1
  52. package/dist/functions/debounce.js +25 -23
  53. package/dist/functions/debounce.js.map +1 -1
  54. package/dist/functions/log.d.ts +2 -1
  55. package/dist/functions/log.d.ts.map +1 -1
  56. package/dist/functions/log.js +38 -40
  57. package/dist/functions/log.js.map +1 -1
  58. package/dist/functions/memo.d.ts +2 -1
  59. package/dist/functions/memo.d.ts.map +1 -1
  60. package/dist/functions/memo.js +41 -40
  61. package/dist/functions/memo.js.map +1 -1
  62. package/dist/functions/once.d.ts +2 -1
  63. package/dist/functions/once.d.ts.map +1 -1
  64. package/dist/functions/once.js +10 -14
  65. package/dist/functions/once.js.map +1 -1
  66. package/dist/functions/retry.d.ts +2 -1
  67. package/dist/functions/retry.d.ts.map +1 -1
  68. package/dist/functions/retry.js +21 -23
  69. package/dist/functions/retry.js.map +1 -1
  70. package/dist/functions/throttle.d.ts +2 -1
  71. package/dist/functions/throttle.d.ts.map +1 -1
  72. package/dist/functions/throttle.js +12 -14
  73. package/dist/functions/throttle.js.map +1 -1
  74. package/dist/functions/until.d.ts +2 -1
  75. package/dist/functions/until.d.ts.map +1 -1
  76. package/dist/functions/until.js +13 -14
  77. package/dist/functions/until.js.map +1 -1
  78. package/dist/functions/watch.d.ts +1 -1
  79. package/dist/functions/watch.d.ts.map +1 -1
  80. package/dist/functions/watch.js +36 -34
  81. package/dist/functions/watch.js.map +1 -1
  82. package/dist/functions/when.d.ts +1 -1
  83. package/dist/functions/when.d.ts.map +1 -1
  84. package/dist/functions/when.js +19 -21
  85. package/dist/functions/when.js.map +1 -1
  86. package/dist/index.d.ts +5 -5
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +2 -2
  89. package/dist/index.js.map +1 -1
  90. package/dist/lifecycle.d.ts +24 -0
  91. package/dist/lifecycle.d.ts.map +1 -0
  92. package/dist/lifecycle.js +55 -0
  93. package/dist/lifecycle.js.map +1 -0
  94. package/dist/properties/compose.d.ts +3 -2
  95. package/dist/properties/compose.d.ts.map +1 -1
  96. package/dist/properties/compose.js +33 -19
  97. package/dist/properties/compose.js.map +1 -1
  98. package/dist/properties/computed.d.ts +12 -10
  99. package/dist/properties/computed.d.ts.map +1 -1
  100. package/dist/properties/computed.js +26 -21
  101. package/dist/properties/computed.js.map +1 -1
  102. package/dist/properties/deep-state.d.ts +2 -1
  103. package/dist/properties/deep-state.d.ts.map +1 -1
  104. package/dist/properties/deep-state.js +66 -60
  105. package/dist/properties/deep-state.js.map +1 -1
  106. package/dist/properties/function-prop.d.ts +2 -1
  107. package/dist/properties/function-prop.d.ts.map +1 -1
  108. package/dist/properties/function-prop.js +20 -22
  109. package/dist/properties/function-prop.js.map +1 -1
  110. package/dist/properties/history.d.ts +2 -2
  111. package/dist/properties/history.d.ts.map +1 -1
  112. package/dist/properties/history.js +34 -33
  113. package/dist/properties/history.js.map +1 -1
  114. package/dist/properties/index.d.ts +1 -0
  115. package/dist/properties/index.d.ts.map +1 -1
  116. package/dist/properties/index.js +1 -0
  117. package/dist/properties/index.js.map +1 -1
  118. package/dist/properties/persisted.d.ts +2 -1
  119. package/dist/properties/persisted.d.ts.map +1 -1
  120. package/dist/properties/persisted.js +24 -18
  121. package/dist/properties/persisted.js.map +1 -1
  122. package/dist/properties/prop.d.ts +2 -1
  123. package/dist/properties/prop.d.ts.map +1 -1
  124. package/dist/properties/prop.js +26 -22
  125. package/dist/properties/prop.js.map +1 -1
  126. package/dist/properties/ref.d.ts +2 -1
  127. package/dist/properties/ref.d.ts.map +1 -1
  128. package/dist/properties/ref.js +11 -8
  129. package/dist/properties/ref.js.map +1 -1
  130. package/dist/properties/resource.d.ts.map +1 -1
  131. package/dist/properties/resource.js +21 -16
  132. package/dist/properties/resource.js.map +1 -1
  133. package/dist/properties/selector.d.ts +12 -0
  134. package/dist/properties/selector.d.ts.map +1 -0
  135. package/dist/properties/selector.js +25 -0
  136. package/dist/properties/selector.js.map +1 -0
  137. package/dist/properties/slot.d.ts +2 -1
  138. package/dist/properties/slot.d.ts.map +1 -1
  139. package/dist/properties/slot.js +22 -20
  140. package/dist/properties/slot.js.map +1 -1
  141. package/dist/properties/state.d.ts.map +1 -1
  142. package/dist/properties/state.js +27 -16
  143. package/dist/properties/state.js.map +1 -1
  144. package/dist/properties/synced.d.ts +2 -1
  145. package/dist/properties/synced.d.ts.map +1 -1
  146. package/dist/properties/synced.js +27 -19
  147. package/dist/properties/synced.js.map +1 -1
  148. package/dist/shared-method.d.ts +14 -0
  149. package/dist/shared-method.d.ts.map +1 -0
  150. package/dist/shared-method.js +87 -0
  151. package/dist/shared-method.js.map +1 -0
  152. package/package.json +14 -5
  153. package/src/component/component.ts +8 -27
  154. package/src/component/lazy.ts +51 -41
  155. package/src/create-class-decorator.ts +90 -31
  156. package/src/create-field-decorator.ts +120 -43
  157. package/src/create-getter-decorator.ts +263 -66
  158. package/src/create-lifecycle-method-decorator.ts +50 -28
  159. package/src/create-method-decorator.ts +119 -13
  160. package/src/events/command.ts +11 -9
  161. package/src/events/emit.ts +16 -22
  162. package/src/events/on-command.ts +17 -18
  163. package/src/field.ts +116 -0
  164. package/src/functions/bind.ts +4 -4
  165. package/src/functions/debounce.ts +25 -23
  166. package/src/functions/log.ts +44 -46
  167. package/src/functions/memo.ts +39 -37
  168. package/src/functions/once.ts +10 -13
  169. package/src/functions/retry.ts +19 -21
  170. package/src/functions/throttle.ts +12 -13
  171. package/src/functions/until.ts +14 -14
  172. package/src/functions/watch.ts +37 -36
  173. package/src/functions/when.ts +18 -20
  174. package/src/index.ts +12 -5
  175. package/src/lifecycle.ts +74 -0
  176. package/src/properties/compose.ts +33 -20
  177. package/src/properties/computed.ts +35 -45
  178. package/src/properties/deep-state.ts +66 -64
  179. package/src/properties/function-prop.ts +25 -27
  180. package/src/properties/history.ts +34 -35
  181. package/src/properties/index.ts +1 -0
  182. package/src/properties/persisted.ts +30 -20
  183. package/src/properties/prop.ts +30 -22
  184. package/src/properties/ref.ts +12 -10
  185. package/src/properties/resource.ts +22 -17
  186. package/src/properties/selector.ts +45 -0
  187. package/src/properties/slot.ts +28 -22
  188. package/src/properties/state.ts +32 -16
  189. package/src/properties/synced.ts +31 -19
  190. package/src/shared-method.ts +101 -0
  191. package/dist/__tests__/component.test.d.ts +0 -2
  192. package/dist/__tests__/component.test.d.ts.map +0 -1
  193. package/dist/__tests__/component.test.js +0 -147
  194. package/dist/__tests__/component.test.js.map +0 -1
  195. package/dist/__tests__/compose.test.d.ts +0 -2
  196. package/dist/__tests__/compose.test.d.ts.map +0 -1
  197. package/dist/__tests__/compose.test.js +0 -164
  198. package/dist/__tests__/compose.test.js.map +0 -1
  199. package/dist/__tests__/deep-state.test.d.ts +0 -2
  200. package/dist/__tests__/deep-state.test.d.ts.map +0 -1
  201. package/dist/__tests__/deep-state.test.js +0 -221
  202. package/dist/__tests__/deep-state.test.js.map +0 -1
  203. package/dist/__tests__/events.test.d.ts +0 -2
  204. package/dist/__tests__/events.test.d.ts.map +0 -1
  205. package/dist/__tests__/events.test.js +0 -295
  206. package/dist/__tests__/events.test.js.map +0 -1
  207. package/dist/__tests__/functions.test.d.ts +0 -2
  208. package/dist/__tests__/functions.test.d.ts.map +0 -1
  209. package/dist/__tests__/functions.test.js +0 -618
  210. package/dist/__tests__/functions.test.js.map +0 -1
  211. package/dist/__tests__/lazy.test.d.ts +0 -2
  212. package/dist/__tests__/lazy.test.d.ts.map +0 -1
  213. package/dist/__tests__/lazy.test.js +0 -227
  214. package/dist/__tests__/lazy.test.js.map +0 -1
  215. package/dist/__tests__/memo.test.d.ts +0 -2
  216. package/dist/__tests__/memo.test.d.ts.map +0 -1
  217. package/dist/__tests__/memo.test.js +0 -249
  218. package/dist/__tests__/memo.test.js.map +0 -1
  219. package/dist/__tests__/properties-browser.test.d.ts +0 -2
  220. package/dist/__tests__/properties-browser.test.d.ts.map +0 -1
  221. package/dist/__tests__/properties-browser.test.js +0 -227
  222. package/dist/__tests__/properties-browser.test.js.map +0 -1
  223. package/dist/__tests__/properties.test.d.ts +0 -2
  224. package/dist/__tests__/properties.test.d.ts.map +0 -1
  225. package/dist/__tests__/properties.test.js +0 -1253
  226. package/dist/__tests__/properties.test.js.map +0 -1
  227. package/dist/__tests__/ref.test.d.ts +0 -2
  228. package/dist/__tests__/ref.test.d.ts.map +0 -1
  229. package/dist/__tests__/ref.test.js +0 -106
  230. package/dist/__tests__/ref.test.js.map +0 -1
  231. package/dist/__tests__/resource.test.d.ts +0 -2
  232. package/dist/__tests__/resource.test.d.ts.map +0 -1
  233. package/dist/__tests__/resource.test.js +0 -217
  234. package/dist/__tests__/resource.test.js.map +0 -1
  235. package/dist/__tests__/slot.test.d.ts +0 -2
  236. package/dist/__tests__/slot.test.d.ts.map +0 -1
  237. package/dist/__tests__/slot.test.js +0 -147
  238. package/dist/__tests__/slot.test.js.map +0 -1
  239. package/dist/__tests__/synced.test.d.ts +0 -2
  240. package/dist/__tests__/synced.test.d.ts.map +0 -1
  241. package/dist/__tests__/synced.test.js +0 -161
  242. package/dist/__tests__/synced.test.js.map +0 -1
  243. package/dist/__tests__/until.test.d.ts +0 -2
  244. package/dist/__tests__/until.test.d.ts.map +0 -1
  245. package/dist/__tests__/until.test.js +0 -88
  246. package/dist/__tests__/until.test.js.map +0 -1
  247. package/dist/create-accessor-decorator.d.ts +0 -14
  248. package/dist/create-accessor-decorator.d.ts.map +0 -1
  249. package/dist/create-accessor-decorator.js +0 -27
  250. package/dist/create-accessor-decorator.js.map +0 -1
  251. package/src/__tests__/component.test.ts +0 -167
  252. package/src/__tests__/compose.test.ts +0 -202
  253. package/src/__tests__/deep-state.test.ts +0 -265
  254. package/src/__tests__/events.test.ts +0 -366
  255. package/src/__tests__/functions.test.ts +0 -803
  256. package/src/__tests__/lazy.test.ts +0 -296
  257. package/src/__tests__/memo.test.ts +0 -293
  258. package/src/__tests__/properties-browser.test.ts +0 -288
  259. package/src/__tests__/properties.test.ts +0 -1556
  260. package/src/__tests__/ref.test.ts +0 -131
  261. package/src/__tests__/resource.test.ts +0 -246
  262. package/src/__tests__/slot.test.ts +0 -179
  263. package/src/__tests__/synced.test.ts +0 -193
  264. package/src/__tests__/until.test.ts +0 -113
  265. package/src/create-accessor-decorator.ts +0 -45
  266. package/tsconfig.json +0 -9
@@ -1,227 +0,0 @@
1
- // @vitest-environment jsdom
2
- import { beforeEach, afterEach, describe, it, expect, vi } from "vitest";
3
- import { StatefulComponent } from "@praxisjs/core";
4
- import { setComponentAnchor } from "@praxisjs/core/internal";
5
- import { Lazy } from "../component/lazy";
6
- function applyLazy(cls, placeholderOrOptions) {
7
- if (placeholderOrOptions === undefined)
8
- return Lazy()(cls, {});
9
- return Lazy(placeholderOrOptions)(cls, {});
10
- }
11
- /** render() now returns a reactive thunk — resolve it to get the actual DOM output. */
12
- function resolveRender(instance) {
13
- const result = instance.render();
14
- if (typeof result === "function")
15
- return result();
16
- return result;
17
- }
18
- class BaseComp extends StatefulComponent {
19
- render() {
20
- return document.createTextNode("content");
21
- }
22
- }
23
- describe("Lazy decorator", () => {
24
- let intersectionCallback = () => { };
25
- let mockObserve;
26
- let mockDisconnect;
27
- beforeEach(() => {
28
- intersectionCallback = () => { };
29
- mockObserve = vi.fn();
30
- mockDisconnect = vi.fn();
31
- globalThis.IntersectionObserver = class {
32
- constructor(cb) {
33
- intersectionCallback = cb;
34
- }
35
- observe = mockObserve;
36
- disconnect = mockDisconnect;
37
- };
38
- });
39
- afterEach(() => {
40
- // @ts-expect-error – removing test stub
41
- delete globalThis.IntersectionObserver;
42
- });
43
- it("returns null from render before visibility", () => {
44
- const Wrapped = applyLazy(BaseComp);
45
- const instance = new Wrapped();
46
- expect(resolveRender(instance)).toBeNull();
47
- });
48
- it("sets lazy visibility to true when IntersectionObserver is not supported", () => {
49
- // Remove IntersectionObserver to simulate unsupported environment
50
- // @ts-expect-error – removing test stub
51
- delete globalThis.IntersectionObserver;
52
- const Wrapped = applyLazy(BaseComp);
53
- const instance = new Wrapped();
54
- // Simulate anchor with parent element
55
- const parent = document.createElement("div");
56
- document.body.appendChild(parent);
57
- const anchor = document.createComment("end");
58
- parent.appendChild(anchor);
59
- setComponentAnchor(instance, anchor);
60
- instance.onMount?.();
61
- // Without IntersectionObserver, component should immediately become visible
62
- expect(instance.render()).not.toBeNull();
63
- document.body.removeChild(parent);
64
- });
65
- it("sets minHeight placeholder on mount", () => {
66
- const Wrapped = applyLazy(BaseComp, 300);
67
- const instance = new Wrapped();
68
- const parent = document.createElement("div");
69
- document.body.appendChild(parent);
70
- const anchor = document.createComment("end");
71
- parent.appendChild(anchor);
72
- setComponentAnchor(instance, anchor);
73
- instance.onMount?.();
74
- expect(parent.style.minHeight).toBe("300px");
75
- document.body.removeChild(parent);
76
- });
77
- it("sets _lazyVisible and clears minHeight when intersecting", () => {
78
- const Wrapped = applyLazy(BaseComp, 200);
79
- const instance = new Wrapped();
80
- const parent = document.createElement("div");
81
- document.body.appendChild(parent);
82
- const anchor = document.createComment("end");
83
- parent.appendChild(anchor);
84
- setComponentAnchor(instance, anchor);
85
- instance.onMount?.();
86
- expect(resolveRender(instance)).toBeNull();
87
- intersectionCallback([{ isIntersecting: true }], null);
88
- expect(parent.style.minHeight).toBe("");
89
- expect(resolveRender(instance)).not.toBeNull(); // component became visible after intersection
90
- expect(mockDisconnect).toHaveBeenCalled();
91
- document.body.removeChild(parent);
92
- });
93
- it("does nothing when the anchor has no parent", () => {
94
- const Wrapped = applyLazy(BaseComp);
95
- const instance = new Wrapped();
96
- const anchor = document.createComment("end");
97
- setComponentAnchor(instance, anchor);
98
- // Should not throw even though anchor has no parent
99
- expect(() => instance.onMount?.()).not.toThrow();
100
- });
101
- it("disconnects observer on unmount", () => {
102
- const Wrapped = applyLazy(BaseComp);
103
- const instance = new Wrapped();
104
- const parent = document.createElement("div");
105
- document.body.appendChild(parent);
106
- const anchor = document.createComment("end");
107
- parent.appendChild(anchor);
108
- setComponentAnchor(instance, anchor);
109
- instance.onMount?.();
110
- instance.onUnmount?.();
111
- expect(mockDisconnect).toHaveBeenCalled();
112
- document.body.removeChild(parent);
113
- });
114
- it("onMount does nothing when anchor is undefined", () => {
115
- const Wrapped = applyLazy(BaseComp);
116
- const instance = new Wrapped();
117
- expect(() => instance.onMount?.()).not.toThrow();
118
- });
119
- it("render() returns original content after becoming visible", () => {
120
- const Wrapped = applyLazy(BaseComp, 200);
121
- const instance = new Wrapped();
122
- const parent = document.createElement("div");
123
- document.body.appendChild(parent);
124
- const anchor = document.createComment("end");
125
- parent.appendChild(anchor);
126
- setComponentAnchor(instance, anchor);
127
- instance.onMount?.();
128
- expect(resolveRender(instance)).toBeNull(); // not yet visible
129
- intersectionCallback([{ isIntersecting: true }], null);
130
- // Now visible: render() must delegate to the original render()
131
- const result = resolveRender(instance);
132
- expect(result).not.toBeNull();
133
- document.body.removeChild(parent);
134
- });
135
- it("observer stays active and minHeight is preserved when entry is not intersecting", () => {
136
- const Wrapped = applyLazy(BaseComp, 200);
137
- const instance = new Wrapped();
138
- const parent = document.createElement("div");
139
- document.body.appendChild(parent);
140
- const anchor = document.createComment("end");
141
- parent.appendChild(anchor);
142
- setComponentAnchor(instance, anchor);
143
- instance.onMount?.();
144
- // Fire callback with isIntersecting=false — should be a no-op
145
- intersectionCallback([{ isIntersecting: false }], null);
146
- expect(resolveRender(instance)).toBeNull();
147
- expect(mockDisconnect).not.toHaveBeenCalled();
148
- expect(parent.style.minHeight).toBe("200px");
149
- document.body.removeChild(parent);
150
- });
151
- it("accepts a LazyOptions object instead of a number (line 74 false branch)", () => {
152
- const Wrapped = applyLazy(BaseComp, { placeholder: 150, rootMargin: "50px" });
153
- const instance = new Wrapped();
154
- const parent = document.createElement("div");
155
- document.body.appendChild(parent);
156
- const anchor = document.createComment("end");
157
- parent.appendChild(anchor);
158
- setComponentAnchor(instance, anchor);
159
- instance.onMount?.();
160
- expect(parent.style.minHeight).toBe("150px");
161
- document.body.removeChild(parent);
162
- });
163
- it("uses root.current as the IntersectionObserver root when provided (line 42 false branch)", () => {
164
- const rootEl = document.createElement("div");
165
- document.body.appendChild(rootEl);
166
- let capturedInit;
167
- globalThis.IntersectionObserver = class {
168
- constructor(cb, init) {
169
- intersectionCallback = cb;
170
- capturedInit = init;
171
- }
172
- observe = mockObserve;
173
- disconnect = mockDisconnect;
174
- };
175
- const Wrapped = applyLazy(BaseComp, { root: { current: rootEl } });
176
- const instance = new Wrapped();
177
- const parent = document.createElement("div");
178
- document.body.appendChild(parent);
179
- const anchor = document.createComment("end");
180
- parent.appendChild(anchor);
181
- setComponentAnchor(instance, anchor);
182
- instance.onMount?.();
183
- expect(capturedInit?.root).toBe(rootEl);
184
- document.body.removeChild(parent);
185
- document.body.removeChild(rootEl);
186
- });
187
- it("falls back to null root when root.current is null (line 42 ?? null branch)", () => {
188
- let capturedInit;
189
- globalThis.IntersectionObserver = class {
190
- constructor(cb, init) {
191
- intersectionCallback = cb;
192
- capturedInit = init;
193
- }
194
- observe = mockObserve;
195
- disconnect = mockDisconnect;
196
- };
197
- const Wrapped = applyLazy(BaseComp, { root: { current: null } });
198
- const instance = new Wrapped();
199
- const parent = document.createElement("div");
200
- document.body.appendChild(parent);
201
- const anchor = document.createComment("end");
202
- parent.appendChild(anchor);
203
- setComponentAnchor(instance, anchor);
204
- instance.onMount?.();
205
- expect(capturedInit?.root).toBeNull();
206
- document.body.removeChild(parent);
207
- });
208
- it("does not re-apply minHeight on remount when already visible", () => {
209
- const Wrapped = applyLazy(BaseComp, 300);
210
- const instance = new Wrapped();
211
- const parent = document.createElement("div");
212
- document.body.appendChild(parent);
213
- const anchor = document.createComment("end");
214
- parent.appendChild(anchor);
215
- setComponentAnchor(instance, anchor);
216
- // First mount — become visible
217
- instance.onMount?.();
218
- intersectionCallback([{ isIntersecting: true }], null);
219
- instance.onUnmount?.();
220
- // Second mount — lazy visibility is already true
221
- instance.onMount?.();
222
- // minHeight must NOT be re-applied because lazy visibility is true
223
- expect(parent.style.minHeight).toBe("");
224
- document.body.removeChild(parent);
225
- });
226
- });
227
- //# sourceMappingURL=lazy.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lazy.test.js","sourceRoot":"","sources":["../../src/__tests__/lazy.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=memo.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memo.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/memo.test.ts"],"names":[],"mappings":""}
@@ -1,249 +0,0 @@
1
- import { describe, it, expect, vi } from "vitest";
2
- import { effect, signal } from "@praxisjs/core/internal";
3
- import { Memo } from "../functions/memo";
4
- function mockCtx(name) {
5
- const initializers = [];
6
- return {
7
- name,
8
- kind: "method",
9
- addInitializer(fn) {
10
- initializers.push(fn);
11
- },
12
- runInitializers(instance) {
13
- initializers.forEach((fn) => { fn.call(instance); });
14
- },
15
- };
16
- }
17
- describe("Memo", () => {
18
- it("returns the computed value", () => {
19
- const fn = vi.fn((x) => x * 2);
20
- const ctx = mockCtx("double");
21
- Memo()(fn, ctx);
22
- const obj = {};
23
- ctx.runInitializers(obj);
24
- const method = obj.double;
25
- expect(method(5)).toBe(10);
26
- });
27
- it("caches result for same args — calls original only once", () => {
28
- const fn = vi.fn((x) => x + 1);
29
- const ctx = mockCtx("inc");
30
- Memo()(fn, ctx);
31
- const obj = {};
32
- ctx.runInitializers(obj);
33
- const method = obj.inc;
34
- method(3);
35
- method(3);
36
- method(3);
37
- expect(fn).toHaveBeenCalledTimes(1);
38
- });
39
- it("computes separately for different args", () => {
40
- const fn = vi.fn((x) => x * 10);
41
- const ctx = mockCtx("mul");
42
- Memo()(fn, ctx);
43
- const obj = {};
44
- ctx.runInitializers(obj);
45
- const method = obj.mul;
46
- expect(method(2)).toBe(20);
47
- expect(method(3)).toBe(30);
48
- expect(fn).toHaveBeenCalledTimes(2);
49
- });
50
- it("is per-instance — different instances have separate caches", () => {
51
- const fn = vi.fn(() => Math.random());
52
- const ctx = mockCtx("rand");
53
- Memo()(fn, ctx);
54
- const a = {};
55
- const b = {};
56
- ctx.runInitializers(a);
57
- ctx.runInitializers(b);
58
- const methodA = a.rand;
59
- const methodB = b.rand;
60
- const v1 = methodA();
61
- const v2 = methodB();
62
- expect(fn).toHaveBeenCalledTimes(2);
63
- expect(v1).not.toBe(v2); // different random values per instance
64
- });
65
- it("serializes no-args calls with __no_args__ key", () => {
66
- const fn = vi.fn(() => 42);
67
- const ctx = mockCtx("noop");
68
- Memo()(fn, ctx);
69
- const obj = {};
70
- ctx.runInitializers(obj);
71
- const method = obj.noop;
72
- method();
73
- method();
74
- expect(fn).toHaveBeenCalledTimes(1);
75
- });
76
- it("serializes object args via JSON.stringify", () => {
77
- const fn = vi.fn((o) => JSON.stringify(o));
78
- const ctx = mockCtx("obj");
79
- Memo()(fn, ctx);
80
- const obj = {};
81
- ctx.runInitializers(obj);
82
- const method = obj.obj;
83
- method({ a: 1 });
84
- method({ a: 1 }); // same key
85
- expect(fn).toHaveBeenCalledTimes(1);
86
- });
87
- it("re-evaluates when a reactive signal read inside the method changes", () => {
88
- const s = signal(1);
89
- const fn = vi.fn(() => s() * 10);
90
- const ctx = mockCtx("reactive");
91
- Memo()(fn, ctx);
92
- const obj = {};
93
- ctx.runInitializers(obj);
94
- const method = obj.reactive;
95
- expect(method()).toBe(10);
96
- expect(fn).toHaveBeenCalledTimes(1);
97
- s.set(5);
98
- // The computed tracks s() — next read triggers recomputation
99
- expect(method()).toBe(50);
100
- expect(fn).toHaveBeenCalledTimes(2);
101
- });
102
- it("serializes symbol args via toString()", () => {
103
- const fn = vi.fn((s) => String(s));
104
- const ctx = mockCtx("sym");
105
- Memo()(fn, ctx);
106
- const obj = {};
107
- ctx.runInitializers(obj);
108
- const method = obj.sym;
109
- const sym = Symbol("test");
110
- method(sym);
111
- method(sym);
112
- expect(fn).toHaveBeenCalledTimes(1);
113
- });
114
- it("circular object argument does not crash — falls back to stable identity key", () => {
115
- const fn = vi.fn((o) => o);
116
- const ctx = mockCtx("circular");
117
- Memo()(fn, ctx);
118
- const obj = {};
119
- ctx.runInitializers(obj);
120
- const method = obj.circular;
121
- // Create a circular reference
122
- const circ = {};
123
- circ.self = circ;
124
- expect(() => method(circ)).not.toThrow();
125
- // Calling again with the same object should hit cache (not call fn again)
126
- method(circ);
127
- expect(fn).toHaveBeenCalledTimes(1);
128
- });
129
- it("two circular objects produce different cache keys", () => {
130
- const fn = vi.fn((o) => o);
131
- const ctx = mockCtx("circular2");
132
- Memo()(fn, ctx);
133
- const obj = {};
134
- ctx.runInitializers(obj);
135
- const method = obj.circular2;
136
- const a = {};
137
- a.self = a;
138
- const b = {};
139
- b.self = b;
140
- method(a);
141
- method(b);
142
- expect(fn).toHaveBeenCalledTimes(2);
143
- });
144
- it("undefined vs null as arguments produce different cache keys", () => {
145
- const fn = vi.fn((x) => x);
146
- const ctx = mockCtx("nullUndef");
147
- Memo()(fn, ctx);
148
- const obj = {};
149
- ctx.runInitializers(obj);
150
- const method = obj.nullUndef;
151
- method(undefined);
152
- method(null);
153
- expect(fn).toHaveBeenCalledTimes(2);
154
- });
155
- it("BigInt argument does not crash JSON.stringify path", () => {
156
- const fn = vi.fn((x) => x);
157
- const ctx = mockCtx("bigint");
158
- Memo()(fn, ctx);
159
- const obj = {};
160
- ctx.runInitializers(obj);
161
- const method = obj.bigint;
162
- // BigInt is a non-object, non-symbol primitive — goes through String() path
163
- expect(() => method(BigInt(42))).not.toThrow();
164
- method(BigInt(42));
165
- expect(fn).toHaveBeenCalledTimes(1);
166
- });
167
- });
168
- describe("Memo({ max })", () => {
169
- function setup(max) {
170
- const fn = vi.fn((x) => x * 2);
171
- const ctx = mockCtx("dbl");
172
- Memo({ max })(fn, ctx);
173
- const obj = {};
174
- ctx.runInitializers(obj);
175
- const method = obj.dbl;
176
- return { fn, method };
177
- }
178
- it("keeps at most max entries, evicting the oldest first", () => {
179
- const { fn, method } = setup(2);
180
- method(1);
181
- method(2);
182
- method(3); // evicts 1
183
- expect(fn).toHaveBeenCalledTimes(3);
184
- method(2);
185
- method(3);
186
- expect(fn).toHaveBeenCalledTimes(3);
187
- method(1); // recomputed
188
- expect(fn).toHaveBeenCalledTimes(4);
189
- });
190
- it("a cache hit refreshes recency so the used entry survives", () => {
191
- const { fn, method } = setup(2);
192
- method(1);
193
- method(2);
194
- method(1); // 1 is now the most recent
195
- method(3); // evicts 2
196
- fn.mockClear();
197
- method(1);
198
- expect(fn).not.toHaveBeenCalled();
199
- method(2);
200
- expect(fn).toHaveBeenCalledTimes(1);
201
- });
202
- it("keeps 100 combinations by default and drops the oldest beyond that", () => {
203
- const fn = vi.fn((x) => x);
204
- const ctx = mockCtx("id");
205
- Memo()(fn, ctx);
206
- const obj = {};
207
- ctx.runInitializers(obj);
208
- const method = obj.id;
209
- for (let i = 0; i < 101; i++)
210
- method(i);
211
- fn.mockClear();
212
- method(100);
213
- expect(fn).not.toHaveBeenCalled();
214
- method(0);
215
- expect(fn).toHaveBeenCalledTimes(1);
216
- });
217
- it("max: Infinity keeps every combination", () => {
218
- const fn = vi.fn((x) => x);
219
- const ctx = mockCtx("id");
220
- Memo({ max: Infinity })(fn, ctx);
221
- const obj = {};
222
- ctx.runInitializers(obj);
223
- const method = obj.id;
224
- for (let i = 0; i < 200; i++)
225
- method(i);
226
- fn.mockClear();
227
- for (let i = 0; i < 200; i++)
228
- method(i);
229
- expect(fn).not.toHaveBeenCalled();
230
- });
231
- it("an evicted entry that a binding still uses keeps updating", async () => {
232
- const s = signal(1);
233
- const fn = vi.fn((x) => x * s());
234
- const ctx = mockCtx("scaled");
235
- Memo({ max: 1 })(fn, ctx);
236
- const obj = {};
237
- ctx.runInitializers(obj);
238
- const method = obj.scaled;
239
- let seen;
240
- effect(() => {
241
- seen = method(10);
242
- });
243
- method(20); // evicts the entry the effect reads
244
- s.set(2);
245
- await Promise.resolve();
246
- expect(seen).toBe(20);
247
- });
248
- });
249
- //# sourceMappingURL=memo.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memo.test.js","sourceRoot":"","sources":["../../src/__tests__/memo.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=properties-browser.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"properties-browser.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/properties-browser.test.ts"],"names":[],"mappings":""}