@luna_ui/luna 0.11.0 → 0.20.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 (86) hide show
  1. package/dist/api-DAWeanTX.js +1 -0
  2. package/dist/api-qXll116-.d.ts +80 -0
  3. package/dist/cli.mjs +27 -22
  4. package/dist/css/index.js +1 -0
  5. package/dist/event-utils.d.ts +1 -1
  6. package/dist/event-utils.js +1 -1
  7. package/dist/{index-BZoM-af5.d.ts → index-VY8G32hr.d.ts} +16 -76
  8. package/dist/index.d.ts +4 -3
  9. package/dist/index.js +1 -1
  10. package/dist/jsx-dev-runtime.js +1 -1
  11. package/dist/jsx-runtime.d.ts +1 -1
  12. package/dist/jsx-runtime.js +1 -1
  13. package/dist/raw.d.ts +2 -0
  14. package/dist/raw.js +1 -0
  15. package/dist/resource.d.ts +41 -0
  16. package/dist/resource.js +1 -0
  17. package/dist/router-lite.d.ts +44 -0
  18. package/dist/router-lite.js +1 -0
  19. package/dist/signals-shared.d.ts +12 -0
  20. package/dist/signals-shared.js +1 -0
  21. package/dist/signals.d.ts +2 -3
  22. package/dist/signals.js +1 -1
  23. package/dist/vite-plugin.d.ts +7708 -2
  24. package/dist/vite-plugin.js +7 -6
  25. package/package.json +30 -11
  26. package/dist/event-utils-9cHYnvun.js +0 -1
  27. package/dist/src-BFWjzzPo.js +0 -1
  28. package/src/css/extract.ts +0 -798
  29. package/src/css/index.ts +0 -10
  30. package/src/css/inject.ts +0 -205
  31. package/src/css/inline.ts +0 -182
  32. package/src/css/minify.ts +0 -70
  33. package/src/css/optimizer.ts +0 -6
  34. package/src/css/runtime.ts +0 -344
  35. package/src/css-optimizer/README.md +0 -353
  36. package/src/css-optimizer/cooccurrence.ts +0 -100
  37. package/src/css-optimizer/core.ts +0 -263
  38. package/src/css-optimizer/extractors.ts +0 -243
  39. package/src/css-optimizer/hash.ts +0 -54
  40. package/src/css-optimizer/index.ts +0 -129
  41. package/src/css-optimizer/merge.ts +0 -109
  42. package/src/css-optimizer/moonbit-analyzer.ts +0 -210
  43. package/src/css-optimizer/parser.ts +0 -120
  44. package/src/css-optimizer/pattern.ts +0 -171
  45. package/src/css-optimizer/transformers.ts +0 -301
  46. package/src/css-optimizer/types.ts +0 -128
  47. package/src/event-utils.ts +0 -227
  48. package/src/hydration/createHydrator.ts +0 -62
  49. package/src/hydration/delegate.ts +0 -62
  50. package/src/hydration/drag.ts +0 -214
  51. package/src/hydration/index.ts +0 -12
  52. package/src/hydration/keyboard.ts +0 -64
  53. package/src/hydration/toggle.ts +0 -101
  54. package/src/index.ts +0 -908
  55. package/src/jsx-dev-runtime.ts +0 -2
  56. package/src/jsx-runtime.ts +0 -398
  57. package/src/signals.ts +0 -113
  58. package/src/vite-plugin.ts +0 -718
  59. package/tests/__screenshots__/apg.test.ts/APG-Components---Accessibility-Tests-Button-Pattern-disabled-button-has-aria-disabled-1.png +0 -0
  60. package/tests/__screenshots__/resource.test.ts/Resource-API--SolidJS-style--createResource-error-is-undefined-when-pending-1.png +0 -0
  61. package/tests/__screenshots__/resource.test.ts/Resource-API--SolidJS-style--createResource-transitions-to-success-on-resolve-1.png +0 -0
  62. package/tests/apg.test.ts +0 -466
  63. package/tests/context.test.ts +0 -118
  64. package/tests/css-optimizer-extractors.test.ts +0 -264
  65. package/tests/css-optimizer-integration.test.ts +0 -566
  66. package/tests/css-optimizer-transformers.test.ts +0 -301
  67. package/tests/css-optimizer.test.ts +0 -646
  68. package/tests/css-runtime.bench.ts +0 -442
  69. package/tests/css-runtime.test.ts +0 -342
  70. package/tests/debounced.test.ts +0 -165
  71. package/tests/dom.test.ts +0 -873
  72. package/tests/integration.test.ts +0 -405
  73. package/tests/issue-11-show-null-to-truthy.test.ts +0 -176
  74. package/tests/issue-5-for-infinite-loop.test.ts +0 -516
  75. package/tests/jsx-runtime.test.tsx +0 -393
  76. package/tests/lifecycle.test.ts +0 -833
  77. package/tests/move-before.bench.ts +0 -304
  78. package/tests/preact-signals-comparison.test.ts +0 -1608
  79. package/tests/resource.test.ts +0 -170
  80. package/tests/router.test.ts +0 -117
  81. package/tests/show-initial-mount-leak.test.tsx +0 -182
  82. package/tests/solidjs-api.test.ts +0 -660
  83. package/tests/static-perf.bench.ts +0 -64
  84. package/tests/store.test.ts +0 -263
  85. package/tests/tsx-syntax.test.tsx +0 -404
  86. /package/dist/{event-utils-BkTM7rk5.d.ts → event-utils-BvAf0NwN.d.ts} +0 -0
@@ -1,304 +0,0 @@
1
- /**
2
- * DOM operation benchmark tests
3
- * Run with: pnpm test:browser
4
- */
5
-
6
- import { describe, test, expect, beforeEach, afterEach } from "vitest";
7
-
8
- // Extend Element interface for moveBefore (Chrome 133+)
9
- declare global {
10
- interface Element {
11
- moveBefore(node: Node, child: Node | null): Node;
12
- }
13
- }
14
-
15
- // Benchmark helper (silent - no console output)
16
- function bench(name: string, fn: () => void, iterations = 1000, warmup = 100) {
17
- // Warmup
18
- for (let i = 0; i < warmup; i++) {
19
- fn();
20
- }
21
-
22
- // Actual run
23
- const start = performance.now();
24
- for (let i = 0; i < iterations; i++) {
25
- fn();
26
- }
27
- const elapsed = performance.now() - start;
28
- const perOp = elapsed / iterations;
29
-
30
- return { name, elapsed, perOp };
31
- }
32
-
33
- describe("moveBefore API", () => {
34
- let container: HTMLDivElement;
35
-
36
- beforeEach(() => {
37
- container = document.createElement("div");
38
- document.body.appendChild(container);
39
- });
40
-
41
- afterEach(() => {
42
- container.remove();
43
- });
44
-
45
- test("moveBefore preserves element reference", () => {
46
- const ul = document.createElement("ul");
47
- const li1 = document.createElement("li");
48
- const li2 = document.createElement("li");
49
- li1.textContent = "Item 1";
50
- li2.textContent = "Item 2";
51
- ul.appendChild(li1);
52
- ul.appendChild(li2);
53
- container.appendChild(ul);
54
-
55
- // Store reference
56
- const originalLi1 = li1;
57
-
58
- // Move li1 to end
59
- ul.moveBefore(li1, null);
60
-
61
- // Verify it's the same element
62
- expect(ul.lastChild).toBe(originalLi1);
63
- expect(ul.children[1]).toBe(originalLi1);
64
- });
65
-
66
- test("insertBefore also preserves element reference", () => {
67
- const ul = document.createElement("ul");
68
- const li1 = document.createElement("li");
69
- const li2 = document.createElement("li");
70
- li1.textContent = "Item 1";
71
- li2.textContent = "Item 2";
72
- ul.appendChild(li1);
73
- ul.appendChild(li2);
74
- container.appendChild(ul);
75
-
76
- // Store reference
77
- const originalLi1 = li1;
78
-
79
- // Move li1 to end using insertBefore
80
- ul.insertBefore(li1, null);
81
-
82
- // Verify it's the same element
83
- expect(ul.lastChild).toBe(originalLi1);
84
- });
85
- });
86
-
87
- describe("moveBefore vs insertBefore benchmark", () => {
88
- let container: HTMLDivElement;
89
-
90
- beforeEach(() => {
91
- container = document.createElement("div");
92
- document.body.appendChild(container);
93
- });
94
-
95
- afterEach(() => {
96
- container.remove();
97
- });
98
-
99
- const setupList = (count: number): HTMLUListElement => {
100
- const ul = document.createElement("ul");
101
- for (let i = 0; i < count; i++) {
102
- const li = document.createElement("li");
103
- li.textContent = `Item ${i}`;
104
- ul.appendChild(li);
105
- }
106
- container.appendChild(ul);
107
- return ul;
108
- };
109
-
110
- test("benchmark: single element move", () => {
111
- const results: { name: string; perOp: number }[] = [];
112
-
113
- results.push(
114
- bench("insertBefore_single", () => {
115
- const ul = setupList(10);
116
- const first = ul.firstChild!;
117
- ul.insertBefore(first, null);
118
- ul.remove();
119
- })
120
- );
121
-
122
- results.push(
123
- bench("moveBefore_single", () => {
124
- const ul = setupList(10);
125
- const first = ul.firstChild!;
126
- ul.moveBefore(first, null);
127
- ul.remove();
128
- })
129
- );
130
-
131
- expect(results.length).toBe(2);
132
- });
133
-
134
- test("benchmark: shuffle 10 elements", () => {
135
- const results: { name: string; perOp: number }[] = [];
136
-
137
- results.push(
138
- bench("insertBefore_shuffle_10", () => {
139
- const ul = setupList(10);
140
- const children = Array.from(ul.children);
141
- for (let i = children.length - 1; i >= 0; i--) {
142
- ul.insertBefore(children[i], ul.firstChild);
143
- }
144
- ul.remove();
145
- })
146
- );
147
-
148
- results.push(
149
- bench("moveBefore_shuffle_10", () => {
150
- const ul = setupList(10);
151
- const children = Array.from(ul.children);
152
- for (let i = children.length - 1; i >= 0; i--) {
153
- ul.moveBefore(children[i], ul.firstChild);
154
- }
155
- ul.remove();
156
- })
157
- );
158
-
159
- expect(results.length).toBe(2);
160
- });
161
-
162
- test("benchmark: shuffle 50 elements", () => {
163
- const results: { name: string; perOp: number }[] = [];
164
-
165
- results.push(
166
- bench(
167
- "insertBefore_shuffle_50",
168
- () => {
169
- const ul = setupList(50);
170
- const children = Array.from(ul.children);
171
- for (let i = children.length - 1; i >= 0; i--) {
172
- ul.insertBefore(children[i], ul.firstChild);
173
- }
174
- ul.remove();
175
- },
176
- 500
177
- )
178
- );
179
-
180
- results.push(
181
- bench(
182
- "moveBefore_shuffle_50",
183
- () => {
184
- const ul = setupList(50);
185
- const children = Array.from(ul.children);
186
- for (let i = children.length - 1; i >= 0; i--) {
187
- ul.moveBefore(children[i], ul.firstChild);
188
- }
189
- ul.remove();
190
- },
191
- 500
192
- )
193
- );
194
-
195
- expect(results.length).toBe(2);
196
- });
197
-
198
- test("moveBefore preserves iframe state", async () => {
199
- // Create container with iframe
200
- const wrapper = document.createElement("div");
201
- const section1 = document.createElement("section");
202
- const section2 = document.createElement("section");
203
- const iframe = document.createElement("iframe");
204
- iframe.srcdoc = "<html><body>Test content</body></html>";
205
-
206
- wrapper.appendChild(section1);
207
- wrapper.appendChild(section2);
208
- section1.appendChild(iframe);
209
- container.appendChild(wrapper);
210
-
211
- // Wait for iframe to load
212
- await new Promise((resolve) => {
213
- iframe.onload = resolve;
214
- setTimeout(resolve, 100); // Fallback timeout
215
- });
216
-
217
- // Get iframe content before move
218
- const contentBefore = iframe.contentDocument?.body?.textContent;
219
-
220
- // Move iframe to section2 using moveBefore
221
- section2.moveBefore(iframe, null);
222
-
223
- // Check iframe content after move
224
- const contentAfter = iframe.contentDocument?.body?.textContent;
225
-
226
- // moveBefore should preserve iframe state
227
- expect(iframe.parentElement).toBe(section2);
228
- expect(contentAfter).toBe(contentBefore);
229
- });
230
- });
231
-
232
- describe("DOM operation microbenchmarks", () => {
233
- let container: HTMLDivElement;
234
-
235
- beforeEach(() => {
236
- container = document.createElement("div");
237
- document.body.appendChild(container);
238
- });
239
-
240
- afterEach(() => {
241
- container.remove();
242
- });
243
-
244
- test("benchmark: createElement", () => {
245
- const result = bench("createElement_div", () => {
246
- document.createElement("div");
247
- }, 10000);
248
- expect(result.perOp).toBeLessThan(1);
249
- });
250
-
251
- test("benchmark: appendChild", () => {
252
- const result = bench("appendChild", () => {
253
- const div = document.createElement("div");
254
- container.appendChild(div);
255
- div.remove();
256
- }, 5000);
257
- expect(result.perOp).toBeLessThan(1);
258
- });
259
-
260
- test("benchmark: textContent assignment", () => {
261
- const div = document.createElement("div");
262
- container.appendChild(div);
263
-
264
- const result = bench("textContent_set", () => {
265
- div.textContent = "Hello World";
266
- }, 10000);
267
-
268
- expect(result.perOp).toBeLessThan(1);
269
- });
270
-
271
- test("benchmark: innerHTML clear", () => {
272
- const result = bench("innerHTML_clear", () => {
273
- const div = document.createElement("div");
274
- div.innerHTML = "<span>test</span><span>test2</span>";
275
- container.appendChild(div);
276
- div.innerHTML = "";
277
- div.remove();
278
- }, 5000);
279
- expect(result.perOp).toBeLessThan(1);
280
- });
281
-
282
- test("benchmark: setAttribute", () => {
283
- const div = document.createElement("div");
284
- container.appendChild(div);
285
-
286
- const result = bench("setAttribute", () => {
287
- div.setAttribute("class", "test-class");
288
- }, 10000);
289
-
290
- expect(result.perOp).toBeLessThan(1);
291
- });
292
-
293
- test("benchmark: classList.add", () => {
294
- const div = document.createElement("div");
295
- container.appendChild(div);
296
-
297
- const result = bench("classList_add", () => {
298
- div.classList.add("test-class");
299
- div.classList.remove("test-class");
300
- }, 10000);
301
-
302
- expect(result.perOp).toBeLessThan(1);
303
- });
304
- });