voodoojs 0.12.4 → 0.13.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.
- package/README.md +1 -1
- package/dist/{chunk-XGZ7SXD3.js → chunk-2LGAXVD7.js} +4 -4
- package/dist/{chunk-XIMSOXWF.js → chunk-4IJE5BWY.js} +5 -5
- package/dist/{chunk-FAWOJTRM.js → chunk-FMDHZ5GI.js} +139 -9
- package/dist/{chunk-OHISQWSW.js → chunk-GE4JWATC.js} +5 -5
- package/dist/{chunk-2GSZT3CX.js → chunk-H2NGDLMD.js} +363 -76
- package/dist/{chunk-AR6WDY7K.js → chunk-IBIZ6OUI.js} +4 -4
- package/dist/{chunk-7XRFOONN.js → chunk-IJQ2PFXU.js} +3 -3
- package/dist/{chunk-ELIX2DRQ.js → chunk-JBUNTP7F.js} +19 -7
- package/dist/{chunk-NKQGUWVF.js → chunk-MV73OSCS.js} +4 -4
- package/dist/{chunk-3MPIJH5X.js → chunk-OIH4BR2H.js} +6 -6
- package/dist/{chunk-FNTYILLW.js → chunk-TEVCUTTC.js} +3 -3
- package/dist/essential.cjs +508 -74
- package/dist/essential.d.cts +1 -1
- package/dist/essential.d.ts +1 -1
- package/dist/essential.js +10 -10
- package/dist/gpu.cjs +7 -1
- package/dist/gpu.js +10 -10
- package/dist/http.cjs +1 -1
- package/dist/http.js +5 -5
- package/dist/index.cjs +556 -122
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +20 -20
- package/dist/reactivity.cjs +138 -5
- package/dist/reactivity.d.cts +32 -1
- package/dist/reactivity.d.ts +32 -1
- package/dist/reactivity.js +2 -2
- package/dist/socket.cjs +115 -5
- package/dist/socket.d.cts +1 -1
- package/dist/socket.d.ts +1 -1
- package/dist/socket.js +9 -9
- package/dist/style-E22XVZ33.js +5 -0
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +2 -2
- package/dist/voodoo.core.js +572 -72
- package/dist/voodoo.core.min.js +17 -17
- package/dist/voodoo.full.js +621 -121
- package/dist/voodoo.full.min.js +62 -62
- package/dist/voodoo.js +575 -75
- package/dist/voodoo.min.js +26 -26
- package/package.json +1 -1
- package/dist/style-DA6RFLKO.js +0 -5
- package/dist/{query-XooOh4vB.d.cts → query-D_BGQw8m.d.cts} +28 -28
- package/dist/{query-DzHfm8Kg.d.ts → query-Dl6Urlwd.d.ts} +28 -28
package/README.md
CHANGED
|
@@ -22,7 +22,7 @@ npm install voodoojs
|
|
|
22
22
|
Or drop it into a page, with nothing else:
|
|
23
23
|
|
|
24
24
|
```html
|
|
25
|
-
<script src="https://cdn.jsdelivr.net/npm/voodoojs@0.
|
|
25
|
+
<script src="https://cdn.jsdelivr.net/npm/voodoojs@0.13.0/dist/voodoo.full.min.js" defer></script>
|
|
26
26
|
|
|
27
27
|
<div v-data="{ count: 0 }">
|
|
28
28
|
<button @click="count++">Clicked { count } times</button>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { __export } from './chunk-
|
|
1
|
+
import { __export } from './chunk-IJQ2PFXU.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Voodoo.js v0.
|
|
4
|
+
* Voodoo.js v0.13.0
|
|
5
5
|
* JavaScript feels like magic.
|
|
6
6
|
* (c) 2026 Voodoo.js contributors. MIT License.
|
|
7
7
|
*/
|
|
@@ -397,5 +397,5 @@ var device = {
|
|
|
397
397
|
};
|
|
398
398
|
|
|
399
399
|
export { capitalize, chunk, clone, debounce, device, escapeHtml, formatCurrency, formatDate, formatFileSize, formatNumber, formatPercent, get, groupBy, isBrowser, matchesMedia, memoize, merge, once, parseDuration, random, relativeTime, sample, set, setFormatDefaults, sleep, slugify, sortBy, stripTags, throttle, titleCase, truncate, uid, unique, utils_exports, uuid };
|
|
400
|
-
//# sourceMappingURL=chunk-
|
|
401
|
-
//# sourceMappingURL=chunk-
|
|
400
|
+
//# sourceMappingURL=chunk-2LGAXVD7.js.map
|
|
401
|
+
//# sourceMappingURL=chunk-2LGAXVD7.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { reactive } from './chunk-
|
|
2
|
-
import { warnOnce } from './chunk-
|
|
1
|
+
import { reactive } from './chunk-FMDHZ5GI.js';
|
|
2
|
+
import { warnOnce } from './chunk-IBIZ6OUI.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* Voodoo.js v0.
|
|
5
|
+
* Voodoo.js v0.13.0
|
|
6
6
|
* JavaScript feels like magic.
|
|
7
7
|
* (c) 2026 Voodoo.js contributors. MIT License.
|
|
8
8
|
*/
|
|
@@ -942,5 +942,5 @@ Object.defineProperty(factory, "open", {
|
|
|
942
942
|
var socket = factory;
|
|
943
943
|
|
|
944
944
|
export { ENGINE, SIO, createSocket, decodeEngine, decodeSocketIo, devtoolsBus, encodeSocketIo, engineURL, resolveSocketURL, socket, socketSupported };
|
|
945
|
-
//# sourceMappingURL=chunk-
|
|
946
|
-
//# sourceMappingURL=chunk-
|
|
945
|
+
//# sourceMappingURL=chunk-4IJE5BWY.js.map
|
|
946
|
+
//# sourceMappingURL=chunk-4IJE5BWY.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { __publicField } from './chunk-
|
|
1
|
+
import { __publicField } from './chunk-IJQ2PFXU.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Voodoo.js v0.
|
|
4
|
+
* Voodoo.js v0.13.0
|
|
5
5
|
* JavaScript feels like magic.
|
|
6
6
|
* (c) 2026 Voodoo.js contributors. MIT License.
|
|
7
7
|
*/
|
|
@@ -277,7 +277,9 @@ function trigger(target, type, key, _newValue) {
|
|
|
277
277
|
if (!isArr) add(depsMap.get(ITERATE_KEY));
|
|
278
278
|
else if (isIntegerKey(key)) add(depsMap.get("length"));
|
|
279
279
|
} else if (type === "delete" /* DELETE */) {
|
|
280
|
-
|
|
280
|
+
add(depsMap.get(ITERATE_KEY));
|
|
281
|
+
} else if (isArr && isIntegerKey(key)) {
|
|
282
|
+
add(depsMap.get(ITERATE_KEY));
|
|
281
283
|
} else if (isArr && key === "length") {
|
|
282
284
|
const newLen = Number(_newValue);
|
|
283
285
|
depsMap.forEach((dep, k) => {
|
|
@@ -290,6 +292,59 @@ function trigger(target, type, key, _newValue) {
|
|
|
290
292
|
else queueJob(e);
|
|
291
293
|
}
|
|
292
294
|
}
|
|
295
|
+
function triggerArrayRange(target, from) {
|
|
296
|
+
const depsMap = targetMap.get(target);
|
|
297
|
+
if (!depsMap) return;
|
|
298
|
+
const effects = /* @__PURE__ */ new Set();
|
|
299
|
+
const add = (dep) => {
|
|
300
|
+
if (!dep) return;
|
|
301
|
+
for (const e of dep) if (e !== activeEffect) effects.add(e);
|
|
302
|
+
};
|
|
303
|
+
add(depsMap.get("length"));
|
|
304
|
+
add(depsMap.get(ITERATE_KEY));
|
|
305
|
+
if (from >= 0) {
|
|
306
|
+
depsMap.forEach((dep, k) => {
|
|
307
|
+
if (typeof k === "string" && isIntegerKey(k) && Number(k) >= from) add(dep);
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
for (const e of effects) {
|
|
311
|
+
if (e.scheduler) e.scheduler();
|
|
312
|
+
else queueJob(e);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
var ArrayOp = /* @__PURE__ */ ((ArrayOp2) => {
|
|
316
|
+
ArrayOp2[ArrayOp2["SPLICE"] = 1] = "SPLICE";
|
|
317
|
+
ArrayOp2[ArrayOp2["SET"] = 2] = "SET";
|
|
318
|
+
ArrayOp2[ArrayOp2["RESET"] = 3] = "RESET";
|
|
319
|
+
return ArrayOp2;
|
|
320
|
+
})(ArrayOp || {});
|
|
321
|
+
var LOG_LIMIT = 32;
|
|
322
|
+
var mutationLogs = /* @__PURE__ */ new WeakMap();
|
|
323
|
+
function record(target, type, index, removed, added) {
|
|
324
|
+
let log = mutationLogs.get(target);
|
|
325
|
+
if (!log) mutationLogs.set(target, log = { version: 0, ops: [] });
|
|
326
|
+
log.version++;
|
|
327
|
+
if (type === 3 /* RESET */) {
|
|
328
|
+
log.ops.length = 0;
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
log.ops.push({ type, index, removed, added });
|
|
332
|
+
if (log.ops.length > LOG_LIMIT) log.ops.shift();
|
|
333
|
+
}
|
|
334
|
+
var NO_MUTATIONS = [];
|
|
335
|
+
function arrayVersion(target) {
|
|
336
|
+
const log = mutationLogs.get(target);
|
|
337
|
+
return log ? log.version : 0;
|
|
338
|
+
}
|
|
339
|
+
function mutationsSince(target, since) {
|
|
340
|
+
const log = mutationLogs.get(target);
|
|
341
|
+
if (!log) return since === 0 ? NO_MUTATIONS : null;
|
|
342
|
+
if (since > log.version) return null;
|
|
343
|
+
const missing = log.version - since;
|
|
344
|
+
if (missing === 0) return NO_MUTATIONS;
|
|
345
|
+
if (missing > log.ops.length) return null;
|
|
346
|
+
return log.ops.slice(log.ops.length - missing);
|
|
347
|
+
}
|
|
293
348
|
function isIntegerKey(key) {
|
|
294
349
|
return typeof key === "string" && key !== "NaN" && key[0] !== "-" && String(parseInt(key, 10)) === key;
|
|
295
350
|
}
|
|
@@ -310,14 +365,61 @@ var arrayInstrumentations = /* @__PURE__ */ (() => {
|
|
|
310
365
|
return res;
|
|
311
366
|
};
|
|
312
367
|
}
|
|
313
|
-
for (const key of ["push", "pop", "shift", "unshift", "splice"]) {
|
|
368
|
+
for (const key of ["push", "pop", "shift", "unshift", "splice", "reverse", "sort"]) {
|
|
314
369
|
inst[key] = function(...args) {
|
|
370
|
+
const raw = toRaw(this);
|
|
371
|
+
const before = raw.length;
|
|
372
|
+
for (let i = 0; i < args.length; i++) args[i] = toRaw(args[i]);
|
|
315
373
|
pauseTracking();
|
|
374
|
+
let result;
|
|
316
375
|
try {
|
|
317
|
-
|
|
376
|
+
result = raw[key].apply(raw, args);
|
|
318
377
|
} finally {
|
|
319
378
|
resetTracking();
|
|
320
379
|
}
|
|
380
|
+
const after = raw.length;
|
|
381
|
+
let from = -1;
|
|
382
|
+
if (key === "push") {
|
|
383
|
+
if (args.length) {
|
|
384
|
+
record(raw, 1 /* SPLICE */, before, 0, args.length);
|
|
385
|
+
from = before;
|
|
386
|
+
}
|
|
387
|
+
} else if (key === "unshift") {
|
|
388
|
+
if (args.length) {
|
|
389
|
+
record(raw, 1 /* SPLICE */, 0, 0, args.length);
|
|
390
|
+
from = 0;
|
|
391
|
+
}
|
|
392
|
+
} else if (key === "pop") {
|
|
393
|
+
if (before > 0) {
|
|
394
|
+
record(raw, 1 /* SPLICE */, after, 1, 0);
|
|
395
|
+
from = after;
|
|
396
|
+
}
|
|
397
|
+
} else if (key === "shift") {
|
|
398
|
+
if (before > 0) {
|
|
399
|
+
record(raw, 1 /* SPLICE */, 0, 1, 0);
|
|
400
|
+
from = 0;
|
|
401
|
+
}
|
|
402
|
+
} else if (key === "splice") {
|
|
403
|
+
const removed = result.length;
|
|
404
|
+
const added = args.length > 2 ? args.length - 2 : 0;
|
|
405
|
+
if (removed || added) {
|
|
406
|
+
record(raw, 1 /* SPLICE */, spliceStart(args[0], before), removed, added);
|
|
407
|
+
from = spliceStart(args[0], before);
|
|
408
|
+
}
|
|
409
|
+
} else {
|
|
410
|
+
if (before > 1) {
|
|
411
|
+
record(raw, 3 /* RESET */, 0, before, after);
|
|
412
|
+
from = 0;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
if (from >= 0) triggerArrayRange(raw, from);
|
|
416
|
+
if (key === "pop" || key === "shift") return isObject(result) ? reactive(result) : result;
|
|
417
|
+
if (key === "splice") {
|
|
418
|
+
const out = result;
|
|
419
|
+
for (let i = 0; i < out.length; i++) if (isObject(out[i])) out[i] = reactive(out[i]);
|
|
420
|
+
return out;
|
|
421
|
+
}
|
|
422
|
+
return key === "reverse" || key === "sort" ? this : result;
|
|
321
423
|
};
|
|
322
424
|
}
|
|
323
425
|
return inst;
|
|
@@ -325,6 +427,11 @@ var arrayInstrumentations = /* @__PURE__ */ (() => {
|
|
|
325
427
|
function isObject(val) {
|
|
326
428
|
return val !== null && typeof val === "object";
|
|
327
429
|
}
|
|
430
|
+
function spliceStart(raw, length) {
|
|
431
|
+
const n = Math.trunc(Number(raw)) || 0;
|
|
432
|
+
if (n < 0) return Math.max(length + n, 0);
|
|
433
|
+
return Math.min(n, length);
|
|
434
|
+
}
|
|
328
435
|
var NON_REACTIVE = /* @__PURE__ */ new Set([
|
|
329
436
|
"Date",
|
|
330
437
|
"RegExp",
|
|
@@ -348,6 +455,23 @@ function canObserve(value) {
|
|
|
348
455
|
if (NON_REACTIVE.has(tag)) return false;
|
|
349
456
|
return tag === "Object" || tag === "Array" || tag === "Map" || tag === "Set";
|
|
350
457
|
}
|
|
458
|
+
function recordDirectWrite(target, key, lengthBefore, hadKey, oldValue, value) {
|
|
459
|
+
if (key === "length") {
|
|
460
|
+
const next = target.length;
|
|
461
|
+
if (next < lengthBefore) record(target, 1 /* SPLICE */, next, lengthBefore - next, 0);
|
|
462
|
+
else if (next > lengthBefore) record(target, 3 /* RESET */, 0, 0, 0);
|
|
463
|
+
return;
|
|
464
|
+
}
|
|
465
|
+
if (!isIntegerKey(key)) return;
|
|
466
|
+
const index = Number(key);
|
|
467
|
+
if (hadKey) {
|
|
468
|
+
if (hasChanged(value, oldValue)) record(target, 2 /* SET */, index, 1, 1);
|
|
469
|
+
} else if (index === lengthBefore) {
|
|
470
|
+
record(target, 1 /* SPLICE */, index, 0, 1);
|
|
471
|
+
} else {
|
|
472
|
+
record(target, 3 /* RESET */, 0, 0, 0);
|
|
473
|
+
}
|
|
474
|
+
}
|
|
351
475
|
function markRaw(value) {
|
|
352
476
|
Object.defineProperty(value, SKIP, { value: true, enumerable: false, configurable: true });
|
|
353
477
|
return value;
|
|
@@ -396,8 +520,11 @@ var baseHandlers = {
|
|
|
396
520
|
return true;
|
|
397
521
|
}
|
|
398
522
|
const hadKey = Array.isArray(target) && isIntegerKey(key) ? Number(key) < target.length : Object.prototype.hasOwnProperty.call(target, key);
|
|
523
|
+
const isArr = Array.isArray(target);
|
|
524
|
+
const arrayLength = isArr ? target.length : 0;
|
|
399
525
|
const result = Reflect.set(target, key, value, receiver);
|
|
400
526
|
if (target === toRaw(receiver)) {
|
|
527
|
+
if (isArr) recordDirectWrite(target, key, arrayLength, hadKey, oldValue, value);
|
|
401
528
|
if (!hadKey) trigger(target, "add" /* ADD */, key, value);
|
|
402
529
|
else if (hasChanged(value, oldValue)) trigger(target, "set" /* SET */, key, value);
|
|
403
530
|
}
|
|
@@ -406,7 +533,10 @@ var baseHandlers = {
|
|
|
406
533
|
deleteProperty(target, key) {
|
|
407
534
|
const hadKey = Object.prototype.hasOwnProperty.call(target, key);
|
|
408
535
|
const result = Reflect.deleteProperty(target, key);
|
|
409
|
-
if (result && hadKey)
|
|
536
|
+
if (result && hadKey) {
|
|
537
|
+
if (Array.isArray(target)) record(target, 3 /* RESET */, 0, 0, 0);
|
|
538
|
+
trigger(target, "delete" /* DELETE */, key);
|
|
539
|
+
}
|
|
410
540
|
return result;
|
|
411
541
|
},
|
|
412
542
|
has(target, key) {
|
|
@@ -636,6 +766,6 @@ function traverse(value, seen = /* @__PURE__ */ new Set()) {
|
|
|
636
766
|
return value;
|
|
637
767
|
}
|
|
638
768
|
|
|
639
|
-
export { EffectScope, ITERATE_KEY, ReactiveEffect, TriggerType, computed, effect, effectScope, enableTracking, flushSync, getActiveEffect, getActiveScope, handleError, hasChanged, isReactive, isRef, markRaw, nextTick, pauseTracking, queueJob, queuePostFlush, reactive, ref, resetTracking, setErrorHandler, shallowRef, stop, toRaw, track, trigger, unref, warn, watch, watchEffect };
|
|
640
|
-
//# sourceMappingURL=chunk-
|
|
641
|
-
//# sourceMappingURL=chunk-
|
|
769
|
+
export { ArrayOp, EffectScope, ITERATE_KEY, ReactiveEffect, TriggerType, arrayVersion, computed, effect, effectScope, enableTracking, flushSync, getActiveEffect, getActiveScope, handleError, hasChanged, isReactive, isRef, markRaw, mutationsSince, nextTick, pauseTracking, queueJob, queuePostFlush, reactive, ref, resetTracking, setErrorHandler, shallowRef, stop, toRaw, track, trigger, unref, warn, watch, watchEffect };
|
|
770
|
+
//# sourceMappingURL=chunk-FMDHZ5GI.js.map
|
|
771
|
+
//# sourceMappingURL=chunk-FMDHZ5GI.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { handleError } from './chunk-
|
|
2
|
-
import { warn } from './chunk-
|
|
1
|
+
import { handleError } from './chunk-FMDHZ5GI.js';
|
|
2
|
+
import { warn } from './chunk-IBIZ6OUI.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* Voodoo.js v0.
|
|
5
|
+
* Voodoo.js v0.13.0
|
|
6
6
|
* JavaScript feels like magic.
|
|
7
7
|
* (c) 2026 Voodoo.js contributors. MIT License.
|
|
8
8
|
*/
|
|
@@ -1192,5 +1192,5 @@ var gpu = {
|
|
|
1192
1192
|
};
|
|
1193
1193
|
|
|
1194
1194
|
export { clock, compute, describeWgslType, destroy, effect, findEntry, flattenValue, frame, frameLoop, gpu, inferStruct, init, packStruct, reflectBindings, reflectEntries, reflectStructs, reflectWgsl, resetShared, shared, splitTopLevel, stripWgslComments, supported, surface, target, uniforms, writeField, writeStruct };
|
|
1195
|
-
//# sourceMappingURL=chunk-
|
|
1196
|
-
//# sourceMappingURL=chunk-
|
|
1195
|
+
//# sourceMappingURL=chunk-GE4JWATC.js.map
|
|
1196
|
+
//# sourceMappingURL=chunk-GE4JWATC.js.map
|