@rpgjs/client 5.0.0-alpha.8 → 5.0.0-beta.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.
- package/dist/Game/AnimationManager.d.ts +8 -0
- package/dist/Game/AnimationManager.js +26 -0
- package/dist/Game/AnimationManager.js.map +1 -0
- package/dist/Game/Event.d.ts +1 -1
- package/dist/Game/Event.js +12 -0
- package/dist/Game/Event.js.map +1 -0
- package/dist/Game/Map.d.ts +23 -2
- package/dist/Game/Map.js +80 -0
- package/dist/Game/Map.js.map +1 -0
- package/dist/Game/Object.d.ts +157 -0
- package/dist/Game/Object.js +211 -0
- package/dist/Game/Object.js.map +1 -0
- package/dist/Game/Player.d.ts +1 -1
- package/dist/Game/Player.js +12 -0
- package/dist/Game/Player.js.map +1 -0
- package/dist/Gui/Gui.d.ts +177 -5
- package/dist/Gui/Gui.js +445 -0
- package/dist/Gui/Gui.js.map +1 -0
- package/dist/Gui/NotificationManager.d.ts +23 -0
- package/dist/Gui/NotificationManager.js +49 -0
- package/dist/Gui/NotificationManager.js.map +1 -0
- package/dist/Resource.d.ts +97 -0
- package/dist/Resource.js +133 -0
- package/dist/Resource.js.map +1 -0
- package/dist/RpgClient.d.ts +290 -58
- package/dist/RpgClientEngine.d.ts +649 -9
- package/dist/RpgClientEngine.js +1334 -0
- package/dist/RpgClientEngine.js.map +1 -0
- package/dist/Sound.d.ts +199 -0
- package/dist/Sound.js +167 -0
- package/dist/Sound.js.map +1 -0
- package/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js +9 -0
- package/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/decorateMetadata.js +6 -0
- package/dist/components/animations/animation.ce.js +24 -0
- package/dist/components/animations/animation.ce.js.map +1 -0
- package/dist/components/animations/hit.ce.js +70 -0
- package/dist/components/animations/hit.ce.js.map +1 -0
- package/dist/components/animations/index.d.ts +4 -0
- package/dist/components/animations/index.js +11 -0
- package/dist/components/animations/index.js.map +1 -0
- package/dist/components/character.ce.js +392 -0
- package/dist/components/character.ce.js.map +1 -0
- package/dist/components/dynamics/parse-value.d.ts +1 -0
- package/dist/components/dynamics/parse-value.js +44 -0
- package/dist/components/dynamics/parse-value.js.map +1 -0
- package/dist/components/dynamics/text.ce.js +73 -0
- package/dist/components/dynamics/text.ce.js.map +1 -0
- package/dist/components/gui/box.ce.js +28 -0
- package/dist/components/gui/box.ce.js.map +1 -0
- package/dist/components/gui/dialogbox/index.ce.js +205 -0
- package/dist/components/gui/dialogbox/index.ce.js.map +1 -0
- package/dist/components/gui/gameover.ce.js +193 -0
- package/dist/components/gui/gameover.ce.js.map +1 -0
- package/dist/components/gui/hud/hud.ce.js +92 -0
- package/dist/components/gui/hud/hud.ce.js.map +1 -0
- package/dist/components/gui/index.d.ts +15 -3
- package/dist/components/gui/index.js +14 -0
- package/dist/components/gui/menu/equip-menu.ce.js +481 -0
- package/dist/components/gui/menu/equip-menu.ce.js.map +1 -0
- package/dist/components/gui/menu/exit-menu.ce.js +54 -0
- package/dist/components/gui/menu/exit-menu.ce.js.map +1 -0
- package/dist/components/gui/menu/items-menu.ce.js +344 -0
- package/dist/components/gui/menu/items-menu.ce.js.map +1 -0
- package/dist/components/gui/menu/main-menu.ce.js +417 -0
- package/dist/components/gui/menu/main-menu.ce.js.map +1 -0
- package/dist/components/gui/menu/options-menu.ce.js +48 -0
- package/dist/components/gui/menu/options-menu.ce.js.map +1 -0
- package/dist/components/gui/menu/skills-menu.ce.js +107 -0
- package/dist/components/gui/menu/skills-menu.ce.js.map +1 -0
- package/dist/components/gui/mobile/index.d.ts +8 -0
- package/dist/components/gui/mobile/index.js +21 -0
- package/dist/components/gui/mobile/index.js.map +1 -0
- package/dist/components/gui/mobile/mobile.ce.js +78 -0
- package/dist/components/gui/mobile/mobile.ce.js.map +1 -0
- package/dist/components/gui/notification/notification.ce.js +64 -0
- package/dist/components/gui/notification/notification.ce.js.map +1 -0
- package/dist/components/gui/save-load.ce.js +389 -0
- package/dist/components/gui/save-load.ce.js.map +1 -0
- package/dist/components/gui/shop/shop.ce.js +652 -0
- package/dist/components/gui/shop/shop.ce.js.map +1 -0
- package/dist/components/gui/title-screen.ce.js +190 -0
- package/dist/components/gui/title-screen.ce.js.map +1 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +4 -0
- package/dist/components/prebuilt/hp-bar.ce.js +116 -0
- package/dist/components/prebuilt/hp-bar.ce.js.map +1 -0
- package/dist/components/prebuilt/index.d.ts +19 -0
- package/dist/components/prebuilt/index.js +2 -0
- package/dist/components/prebuilt/light-halo.ce.js +94 -0
- package/dist/components/prebuilt/light-halo.ce.js.map +1 -0
- package/dist/components/scenes/canvas.ce.js +60 -0
- package/dist/components/scenes/canvas.ce.js.map +1 -0
- package/dist/components/scenes/draw-map.ce.js +89 -0
- package/dist/components/scenes/draw-map.ce.js.map +1 -0
- package/dist/components/scenes/event-layer.ce.js +28 -0
- package/dist/components/scenes/event-layer.ce.js.map +1 -0
- package/dist/core/inject.js +18 -0
- package/dist/core/inject.js.map +1 -0
- package/dist/core/setup.js +16 -0
- package/dist/core/setup.js.map +1 -0
- package/dist/index.d.ts +15 -1
- package/dist/index.js +44 -14
- package/dist/module.d.ts +43 -4
- package/dist/module.js +176 -0
- package/dist/module.js.map +1 -0
- package/dist/node_modules/.pnpm/@signe_di@2.9.0/node_modules/@signe/di/dist/index.js +277 -0
- package/dist/node_modules/.pnpm/@signe_di@2.9.0/node_modules/@signe/di/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@signe_reactive@2.8.3/node_modules/@signe/reactive/dist/index.js +457 -0
- package/dist/node_modules/.pnpm/@signe_reactive@2.8.3/node_modules/@signe/reactive/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@signe_reactive@2.9.0/node_modules/@signe/reactive/dist/index.js +463 -0
- package/dist/node_modules/.pnpm/@signe_reactive@2.9.0/node_modules/@signe/reactive/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@signe_room@2.9.0/node_modules/@signe/room/dist/index.js +2191 -0
- package/dist/node_modules/.pnpm/@signe_room@2.9.0/node_modules/@signe/room/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/chunk-7QVYU63E.js +10 -0
- package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/chunk-7QVYU63E.js.map +1 -0
- package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/client/index.js +91 -0
- package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/client/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/index.js +325 -0
- package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.js +14 -0
- package/dist/node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-HAC622V3.js +115 -0
- package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-HAC622V3.js.map +1 -0
- package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-S74YV6PU.js +401 -0
- package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-S74YV6PU.js.map +1 -0
- package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/index.js +2 -0
- package/dist/node_modules/.pnpm/zod@3.24.2/node_modules/zod/lib/index.js +3756 -0
- package/dist/node_modules/.pnpm/zod@3.24.2/node_modules/zod/lib/index.js.map +1 -0
- package/dist/presets/animation.d.ts +31 -0
- package/dist/presets/animation.js +39 -0
- package/dist/presets/animation.js.map +1 -0
- package/dist/presets/faceset.d.ts +30 -0
- package/dist/presets/faceset.js +51 -0
- package/dist/presets/faceset.js.map +1 -0
- package/dist/presets/icon.d.ts +20 -0
- package/dist/presets/icon.js +15 -0
- package/dist/presets/icon.js.map +1 -0
- package/dist/presets/index.d.ts +123 -0
- package/dist/presets/index.js +17 -0
- package/dist/presets/index.js.map +1 -0
- package/dist/presets/lpc.d.ts +89 -0
- package/dist/presets/lpc.js +98 -0
- package/dist/presets/lpc.js.map +1 -0
- package/dist/presets/rmspritesheet.js +42 -0
- package/dist/presets/rmspritesheet.js.map +1 -0
- package/dist/services/AbstractSocket.d.ts +9 -5
- package/dist/services/AbstractSocket.js +11 -0
- package/dist/services/AbstractSocket.js.map +1 -0
- package/dist/services/keyboardControls.d.ts +15 -0
- package/dist/services/keyboardControls.js +23 -0
- package/dist/services/keyboardControls.js.map +1 -0
- package/dist/services/loadMap.js +123 -0
- package/dist/services/loadMap.js.map +1 -0
- package/dist/services/mmorpg.d.ts +21 -9
- package/dist/services/mmorpg.js +131 -0
- package/dist/services/mmorpg.js.map +1 -0
- package/dist/services/save.d.ts +19 -0
- package/dist/services/save.js +77 -0
- package/dist/services/save.js.map +1 -0
- package/dist/services/standalone.d.ts +67 -7
- package/dist/services/standalone.js +168 -0
- package/dist/services/standalone.js.map +1 -0
- package/dist/utils/getEntityProp.d.ts +39 -0
- package/dist/utils/getEntityProp.js +52 -0
- package/dist/utils/getEntityProp.js.map +1 -0
- package/package.json +13 -9
- package/src/Game/{EffectManager.ts → AnimationManager.ts} +3 -2
- package/src/Game/Event.ts +1 -1
- package/src/Game/Map.ts +95 -3
- package/src/Game/Object.ts +330 -14
- package/src/Game/Player.ts +1 -1
- package/src/Gui/Gui.ts +506 -18
- package/src/Gui/NotificationManager.ts +69 -0
- package/src/Resource.ts +150 -0
- package/src/RpgClient.ts +300 -58
- package/src/RpgClientEngine.ts +1707 -48
- package/src/Sound.ts +253 -0
- package/src/components/{effects → animations}/animation.ce +3 -6
- package/src/components/{effects → animations}/index.ts +1 -1
- package/src/components/character.ce +406 -40
- package/src/components/dynamics/parse-value.ts +80 -0
- package/src/components/dynamics/text.ce +183 -0
- package/src/components/gui/box.ce +17 -0
- package/src/components/gui/dialogbox/index.ce +204 -187
- package/src/components/gui/gameover.ce +158 -0
- package/src/components/gui/hud/hud.ce +61 -0
- package/src/components/gui/index.ts +30 -4
- package/src/components/gui/menu/equip-menu.ce +410 -0
- package/src/components/gui/menu/exit-menu.ce +41 -0
- package/src/components/gui/menu/items-menu.ce +317 -0
- package/src/components/gui/menu/main-menu.ce +294 -0
- package/src/components/gui/menu/options-menu.ce +35 -0
- package/src/components/gui/menu/skills-menu.ce +83 -0
- package/src/components/gui/mobile/index.ts +24 -0
- package/src/components/gui/mobile/mobile.ce +80 -0
- package/src/components/gui/notification/notification.ce +51 -0
- package/src/components/gui/save-load.ce +208 -0
- package/src/components/gui/shop/shop.ce +493 -0
- package/src/components/gui/title-screen.ce +163 -0
- package/src/components/index.ts +3 -0
- package/src/components/prebuilt/hp-bar.ce +255 -0
- package/src/components/prebuilt/index.ts +24 -0
- package/src/components/prebuilt/light-halo.ce +148 -0
- package/src/components/scenes/canvas.ce +20 -15
- package/src/components/scenes/draw-map.ce +60 -13
- package/src/components/scenes/event-layer.ce +9 -2
- package/src/components/scenes/transition.ce +60 -0
- package/src/index.ts +16 -2
- package/src/module.ts +145 -9
- package/src/presets/animation.ts +46 -0
- package/src/presets/faceset.ts +60 -0
- package/src/presets/icon.ts +17 -0
- package/src/presets/index.ts +9 -1
- package/src/presets/lpc.ts +108 -0
- package/src/services/AbstractSocket.ts +10 -2
- package/src/services/keyboardControls.ts +20 -0
- package/src/services/loadMap.ts +1 -1
- package/src/services/mmorpg.ts +100 -12
- package/src/services/save.ts +103 -0
- package/src/services/standalone.ts +110 -18
- package/src/utils/getEntityProp.ts +87 -0
- package/tsconfig.json +1 -1
- package/vite.config.ts +4 -2
- package/dist/Game/EffectManager.d.ts +0 -5
- package/dist/components/effects/index.d.ts +0 -4
- package/dist/index.js.map +0 -1
- package/dist/index10.js +0 -8
- package/dist/index10.js.map +0 -1
- package/dist/index11.js +0 -10
- package/dist/index11.js.map +0 -1
- package/dist/index12.js +0 -8
- package/dist/index12.js.map +0 -1
- package/dist/index13.js +0 -17
- package/dist/index13.js.map +0 -1
- package/dist/index14.js +0 -91
- package/dist/index14.js.map +0 -1
- package/dist/index15.js +0 -50
- package/dist/index15.js.map +0 -1
- package/dist/index16.js +0 -191
- package/dist/index16.js.map +0 -1
- package/dist/index17.js +0 -9
- package/dist/index17.js.map +0 -1
- package/dist/index18.js +0 -387
- package/dist/index18.js.map +0 -1
- package/dist/index19.js +0 -31
- package/dist/index19.js.map +0 -1
- package/dist/index2.js +0 -112
- package/dist/index2.js.map +0 -1
- package/dist/index20.js +0 -24
- package/dist/index20.js.map +0 -1
- package/dist/index21.js +0 -2421
- package/dist/index21.js.map +0 -1
- package/dist/index22.js +0 -114
- package/dist/index22.js.map +0 -1
- package/dist/index23.js +0 -109
- package/dist/index23.js.map +0 -1
- package/dist/index24.js +0 -71
- package/dist/index24.js.map +0 -1
- package/dist/index25.js +0 -21
- package/dist/index25.js.map +0 -1
- package/dist/index26.js +0 -41
- package/dist/index26.js.map +0 -1
- package/dist/index27.js +0 -5
- package/dist/index27.js.map +0 -1
- package/dist/index28.js +0 -322
- package/dist/index28.js.map +0 -1
- package/dist/index29.js +0 -27
- package/dist/index29.js.map +0 -1
- package/dist/index3.js +0 -87
- package/dist/index3.js.map +0 -1
- package/dist/index30.js +0 -11
- package/dist/index30.js.map +0 -1
- package/dist/index31.js +0 -11
- package/dist/index31.js.map +0 -1
- package/dist/index32.js +0 -12
- package/dist/index32.js.map +0 -1
- package/dist/index33.js +0 -4403
- package/dist/index33.js.map +0 -1
- package/dist/index34.js +0 -316
- package/dist/index34.js.map +0 -1
- package/dist/index35.js +0 -174
- package/dist/index35.js.map +0 -1
- package/dist/index36.js +0 -501
- package/dist/index36.js.map +0 -1
- package/dist/index37.js +0 -61
- package/dist/index37.js.map +0 -1
- package/dist/index38.js +0 -20
- package/dist/index38.js.map +0 -1
- package/dist/index39.js +0 -20
- package/dist/index39.js.map +0 -1
- package/dist/index4.js +0 -67
- package/dist/index4.js.map +0 -1
- package/dist/index5.js +0 -16
- package/dist/index5.js.map +0 -1
- package/dist/index6.js +0 -17
- package/dist/index6.js.map +0 -1
- package/dist/index7.js +0 -39
- package/dist/index7.js.map +0 -1
- package/dist/index8.js +0 -90
- package/dist/index8.js.map +0 -1
- package/dist/index9.js +0 -76
- package/dist/index9.js.map +0 -1
- package/src/components/gui/dialogbox/itemMenu.ce +0 -23
- package/src/components/gui/dialogbox/selection.ce +0 -67
- /package/src/components/{effects → animations}/hit.ce +0 -0
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
import { __name } from "./chunk-7QVYU63E.js";
|
|
2
|
+
import { isArraySubject, isComputed, isObjectSubject, isSignal } from "../../../../../@signe_reactive@2.9.0/node_modules/@signe/reactive/dist/index.js";
|
|
3
|
+
//#region ../../node_modules/.pnpm/@signe+sync@2.9.0/node_modules/@signe/sync/dist/index.js
|
|
4
|
+
function isFunction(val) {
|
|
5
|
+
return {}.toString.call(val) === "[object Function]";
|
|
6
|
+
}
|
|
7
|
+
__name(isFunction, "isFunction");
|
|
8
|
+
function isClass(obj) {
|
|
9
|
+
return typeof obj === "function" && obj.prototype && obj.prototype.constructor === obj;
|
|
10
|
+
}
|
|
11
|
+
__name(isClass, "isClass");
|
|
12
|
+
var isObject = /* @__PURE__ */ __name((item) => item && typeof item === "object" && !Array.isArray(item) && item !== null, "isObject");
|
|
13
|
+
function isInstanceOfClass(value) {
|
|
14
|
+
if (value === null || typeof value !== "object" || value === void 0 || Array.isArray(value)) return false;
|
|
15
|
+
return Object.getPrototypeOf(value) !== Object.prototype;
|
|
16
|
+
}
|
|
17
|
+
__name(isInstanceOfClass, "isInstanceOfClass");
|
|
18
|
+
function generateShortUUID() {
|
|
19
|
+
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
20
|
+
let uuid = "";
|
|
21
|
+
for (let i = 0; i < 8; i++) {
|
|
22
|
+
const randomIndex = Math.floor(Math.random() * 62);
|
|
23
|
+
uuid += chars[randomIndex];
|
|
24
|
+
}
|
|
25
|
+
return uuid;
|
|
26
|
+
}
|
|
27
|
+
__name(generateShortUUID, "generateShortUUID");
|
|
28
|
+
var DELETE_TOKEN = "$delete";
|
|
29
|
+
var syncClass = /* @__PURE__ */ __name((instance, options = {}) => {
|
|
30
|
+
const cacheSync = /* @__PURE__ */ new Map();
|
|
31
|
+
const cachePersist = /* @__PURE__ */ new Map();
|
|
32
|
+
instance.$valuesChanges = {
|
|
33
|
+
set: /* @__PURE__ */ __name((path, value) => {
|
|
34
|
+
cacheSync.set(path, value);
|
|
35
|
+
options.onSync?.(cacheSync);
|
|
36
|
+
}, "set"),
|
|
37
|
+
setPersist: /* @__PURE__ */ __name((path, value) => {
|
|
38
|
+
if (path == "") path = ".";
|
|
39
|
+
cachePersist.set(path, value);
|
|
40
|
+
options.onPersist?.(cachePersist);
|
|
41
|
+
}, "setPersist"),
|
|
42
|
+
has: /* @__PURE__ */ __name((path) => {
|
|
43
|
+
return cacheSync.has(path);
|
|
44
|
+
}, "has"),
|
|
45
|
+
get: /* @__PURE__ */ __name((path) => {
|
|
46
|
+
return cacheSync.get(path);
|
|
47
|
+
}, "get")
|
|
48
|
+
};
|
|
49
|
+
createSyncClass(instance);
|
|
50
|
+
}, "syncClass");
|
|
51
|
+
function createStatesSnapshot(instance) {
|
|
52
|
+
let persistObject = {};
|
|
53
|
+
if (instance?.$snapshot) for (const key of instance.$snapshot.keys()) {
|
|
54
|
+
const signal = instance.$snapshot.get(key);
|
|
55
|
+
const persist2 = signal.options.persist ?? true;
|
|
56
|
+
let value = signal();
|
|
57
|
+
if (isObject(value) || Array.isArray(value)) continue;
|
|
58
|
+
if (persist2) persistObject[key] = value;
|
|
59
|
+
}
|
|
60
|
+
return persistObject;
|
|
61
|
+
}
|
|
62
|
+
__name(createStatesSnapshot, "createStatesSnapshot");
|
|
63
|
+
var SNAPSHOT_SKIP = Symbol("snapshot-skip");
|
|
64
|
+
var serializeSnapshotDeep = /* @__PURE__ */ __name((value, path, options, seen) => {
|
|
65
|
+
if (isSignal(value)) return serializeSnapshotDeep(value(), path, options, seen);
|
|
66
|
+
if (value instanceof Map) return SNAPSHOT_SKIP;
|
|
67
|
+
if (options.filter && !options.filter(value, path)) return SNAPSHOT_SKIP;
|
|
68
|
+
if (value instanceof Date) return options.dateToString ? options.dateToString(value) : value.toISOString();
|
|
69
|
+
if (value && typeof value === "object") {
|
|
70
|
+
if (seen.has(value)) return SNAPSHOT_SKIP;
|
|
71
|
+
seen.add(value);
|
|
72
|
+
if (Array.isArray(value)) {
|
|
73
|
+
const result2 = [];
|
|
74
|
+
value.forEach((item, index) => {
|
|
75
|
+
const serialized = serializeSnapshotDeep(item, path ? `${path}.${index}` : String(index), options, seen);
|
|
76
|
+
if (serialized !== SNAPSHOT_SKIP) result2.push(serialized);
|
|
77
|
+
});
|
|
78
|
+
return result2;
|
|
79
|
+
}
|
|
80
|
+
const result = {};
|
|
81
|
+
const idKey = isInstanceOfClass(value) ? value.constructor?._propertyMetadata?.get("id") : void 0;
|
|
82
|
+
const entries = Object.entries(value).filter(([key]) => isInstanceOfClass(value) ? key.startsWith("__") || (idKey ? key === idKey : false) : true);
|
|
83
|
+
for (const [key, childValue] of entries) {
|
|
84
|
+
const normalizedKey = key.startsWith("__") ? key.slice(2) : key;
|
|
85
|
+
const serialized = serializeSnapshotDeep(childValue, path ? `${path}.${normalizedKey}` : normalizedKey, options, seen);
|
|
86
|
+
if (serialized !== SNAPSHOT_SKIP) result[normalizedKey] = serialized;
|
|
87
|
+
}
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
return value;
|
|
91
|
+
}, "serializeSnapshotDeep");
|
|
92
|
+
function createStatesSnapshotDeep(instance, options = {}) {
|
|
93
|
+
const persistObject = {};
|
|
94
|
+
if (instance?.$snapshot) for (const key of instance.$snapshot.keys()) {
|
|
95
|
+
const signal = instance.$snapshot.get(key);
|
|
96
|
+
if (!(signal.options.persist ?? true)) continue;
|
|
97
|
+
const serialized = serializeSnapshotDeep(signal(), key, options, /* @__PURE__ */ new WeakSet());
|
|
98
|
+
if (serialized !== SNAPSHOT_SKIP) persistObject[key] = serialized;
|
|
99
|
+
}
|
|
100
|
+
return persistObject;
|
|
101
|
+
}
|
|
102
|
+
__name(createStatesSnapshotDeep, "createStatesSnapshotDeep");
|
|
103
|
+
function setMetadata(target, key, value) {
|
|
104
|
+
const propId = target.constructor._propertyMetadata?.get(key);
|
|
105
|
+
if (propId) if (isSignal(target[propId])) target[propId].set(value);
|
|
106
|
+
else target[propId] = value;
|
|
107
|
+
}
|
|
108
|
+
__name(setMetadata, "setMetadata");
|
|
109
|
+
var createSyncClass = /* @__PURE__ */ __name((currentClass, parentKey = null, parentClass = null, path = "") => {
|
|
110
|
+
currentClass.$path = path;
|
|
111
|
+
if (parentClass) currentClass.$valuesChanges = parentClass.$valuesChanges;
|
|
112
|
+
if (parentKey) setMetadata(currentClass, "id", parentKey);
|
|
113
|
+
if (currentClass.$snapshot) for (const key of currentClass.$snapshot.keys()) {
|
|
114
|
+
const signal = currentClass.$snapshot.get(key);
|
|
115
|
+
const syncToClient = signal.options?.syncToClient ?? true;
|
|
116
|
+
const persist2 = signal.options?.persist ?? true;
|
|
117
|
+
const transform = signal.options?.transform;
|
|
118
|
+
let signalValue = signal();
|
|
119
|
+
if (transform) signalValue = transform(signalValue);
|
|
120
|
+
if (isObject(signalValue) || Array.isArray(signalValue)) signalValue = { ...signalValue };
|
|
121
|
+
const transformedValue = signalValue;
|
|
122
|
+
const newPath = (path ? path + "." : "") + key;
|
|
123
|
+
if (syncToClient) currentClass.$valuesChanges.set(newPath, transformedValue);
|
|
124
|
+
if (persist2) {
|
|
125
|
+
if (parentClass) currentClass.$valuesChanges.setPersist(path, transformedValue);
|
|
126
|
+
}
|
|
127
|
+
if (isComputed(signal)) signal.observable.subscribe((newValue) => {
|
|
128
|
+
if (syncToClient) {
|
|
129
|
+
const transformedNewValue = transform ? transform(newValue) : newValue;
|
|
130
|
+
currentClass.$valuesChanges.set(newPath, transformedNewValue);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}, "createSyncClass");
|
|
135
|
+
var type = /* @__PURE__ */ __name((_signal, path, options = {}, currentInstance) => {
|
|
136
|
+
const { syncToClient = true, persist: persist2 = true, transform } = options;
|
|
137
|
+
let init = true;
|
|
138
|
+
const handleObjectSubject = /* @__PURE__ */ __name((value, propPath) => {
|
|
139
|
+
const newPath = `${propPath}${value.key ? `.${value.key}` : ""}`;
|
|
140
|
+
if ([
|
|
141
|
+
"add",
|
|
142
|
+
"reset",
|
|
143
|
+
"update"
|
|
144
|
+
].includes(value.type)) if (isInstanceOfClass(value.value)) createSyncClass(value.value, value.key, currentInstance, newPath);
|
|
145
|
+
else if (value.type === "update" && (isObject(value.value) || Array.isArray(value.value))) createSyncClass(value.value, value.key, currentInstance, newPath);
|
|
146
|
+
else savePath(newPath, value.value);
|
|
147
|
+
else if (value.type === "remove") savePath(newPath, DELETE_TOKEN);
|
|
148
|
+
}, "handleObjectSubject");
|
|
149
|
+
const handleArraySubject = /* @__PURE__ */ __name((value, propPath) => {
|
|
150
|
+
if (value.type === "reset" && Array.isArray(value.items)) {
|
|
151
|
+
value.items.forEach((item, index) => {
|
|
152
|
+
const newPath2 = `${propPath}.${index}`;
|
|
153
|
+
if (isInstanceOfClass(item)) createSyncClass(item, value.key, currentInstance, newPath2);
|
|
154
|
+
else savePath(newPath2, item);
|
|
155
|
+
});
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
const newPath = `${propPath}.${value.index}`;
|
|
159
|
+
const firstItem = value.items?.[0];
|
|
160
|
+
if (["add", "update"].includes(value.type) && firstItem !== void 0) if (isInstanceOfClass(firstItem)) createSyncClass(firstItem, value.key, currentInstance, newPath);
|
|
161
|
+
else if (value.type === "update" && (isObject(firstItem) || Array.isArray(firstItem))) createSyncClass(firstItem, value.key, currentInstance, newPath);
|
|
162
|
+
else savePath(newPath, firstItem);
|
|
163
|
+
else if (value.type === "remove") savePath(newPath, DELETE_TOKEN);
|
|
164
|
+
}, "handleArraySubject");
|
|
165
|
+
const savePath = /* @__PURE__ */ __name((propPath, value) => {
|
|
166
|
+
const transformedValue = transform && value !== "$delete" ? transform(value) : value;
|
|
167
|
+
if (syncToClient) currentInstance.$valuesChanges.set(propPath, transformedValue);
|
|
168
|
+
if (persist2 && currentInstance.$path !== void 0) currentInstance.$valuesChanges.setPersist(transformedValue == "$delete" ? propPath : currentInstance.$path, transformedValue);
|
|
169
|
+
}, "savePath");
|
|
170
|
+
const setupSubscription = /* @__PURE__ */ __name((signal, signalPath) => {
|
|
171
|
+
if (!isSignal(signal)) return;
|
|
172
|
+
if (syncToClient && currentInstance.$valuesChanges) {
|
|
173
|
+
const initialValue = signal();
|
|
174
|
+
const transformedInitialValue = transform ? transform(initialValue) : initialValue;
|
|
175
|
+
currentInstance.$valuesChanges.set(signalPath, transformedInitialValue);
|
|
176
|
+
}
|
|
177
|
+
signal.options = options;
|
|
178
|
+
signal.observable.subscribe((value) => {
|
|
179
|
+
if (init) return;
|
|
180
|
+
if (currentInstance.$path !== void 0) {
|
|
181
|
+
const fullPath = `${currentInstance.$path ? currentInstance.$path + "." : ""}${signalPath}`;
|
|
182
|
+
if (isComputed(signal)) savePath(fullPath, value);
|
|
183
|
+
else if (isObjectSubject(signal._subject)) handleObjectSubject(value, fullPath);
|
|
184
|
+
else if (isArraySubject(signal._subject)) handleArraySubject(value, fullPath);
|
|
185
|
+
else savePath(fullPath, value);
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
if (!currentInstance.$snapshot) currentInstance.$snapshot = /* @__PURE__ */ new Map();
|
|
189
|
+
currentInstance.$snapshot.set(path, signal);
|
|
190
|
+
}, "setupSubscription");
|
|
191
|
+
if (!isSignal(_signal)) {
|
|
192
|
+
if (_signal && typeof _signal === "object" && !Array.isArray(_signal)) {
|
|
193
|
+
for (const key in _signal) if (Object.prototype.hasOwnProperty.call(_signal, key)) {
|
|
194
|
+
const value = _signal[key];
|
|
195
|
+
const propertyPath = `${path}.${key}`;
|
|
196
|
+
if (isSignal(value)) setupSubscription(value, propertyPath);
|
|
197
|
+
else if (value && typeof value === "object" && !Array.isArray(value)) type(value, propertyPath, options, currentInstance);
|
|
198
|
+
}
|
|
199
|
+
init = false;
|
|
200
|
+
}
|
|
201
|
+
return _signal;
|
|
202
|
+
}
|
|
203
|
+
setupSubscription(_signal, path);
|
|
204
|
+
init = false;
|
|
205
|
+
return _signal;
|
|
206
|
+
}, "type");
|
|
207
|
+
function sync(options) {
|
|
208
|
+
let classType;
|
|
209
|
+
let persist2 = true;
|
|
210
|
+
let syncToClient = true;
|
|
211
|
+
let transform;
|
|
212
|
+
if (typeof options === "function") classType = options;
|
|
213
|
+
else if (typeof options === "object") {
|
|
214
|
+
classType = options.classType;
|
|
215
|
+
if (options.hasOwnProperty("persist")) persist2 = options.persist;
|
|
216
|
+
if (options.hasOwnProperty("syncToClient")) syncToClient = options.syncToClient;
|
|
217
|
+
if (options.hasOwnProperty("transform")) transform = options.transform;
|
|
218
|
+
}
|
|
219
|
+
return function(target, propertyKey) {
|
|
220
|
+
const privatePropertyKey = `__${propertyKey}`;
|
|
221
|
+
Object.defineProperty(target, propertyKey, {
|
|
222
|
+
get: /* @__PURE__ */ __name(function() {
|
|
223
|
+
return this[privatePropertyKey];
|
|
224
|
+
}, "getter"),
|
|
225
|
+
set: /* @__PURE__ */ __name(function(newVal) {
|
|
226
|
+
this[privatePropertyKey] = type(newVal, propertyKey, {
|
|
227
|
+
classType,
|
|
228
|
+
persist: persist2,
|
|
229
|
+
syncToClient,
|
|
230
|
+
transform
|
|
231
|
+
}, this);
|
|
232
|
+
}, "setter"),
|
|
233
|
+
enumerable: true,
|
|
234
|
+
configurable: true
|
|
235
|
+
});
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
__name(sync, "sync");
|
|
239
|
+
function id() {
|
|
240
|
+
return function(target, propertyKey) {
|
|
241
|
+
if (!target.constructor._propertyMetadata) target.constructor._propertyMetadata = /* @__PURE__ */ new Map();
|
|
242
|
+
target.constructor._propertyMetadata.set("id", propertyKey);
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
__name(id, "id");
|
|
246
|
+
function users(options) {
|
|
247
|
+
return function(target, propertyKey) {
|
|
248
|
+
if (!target.constructor._propertyMetadata) target.constructor._propertyMetadata = /* @__PURE__ */ new Map();
|
|
249
|
+
target.constructor._propertyMetadata.set("users", propertyKey);
|
|
250
|
+
sync(options)(target, propertyKey);
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
__name(users, "users");
|
|
254
|
+
function persist() {
|
|
255
|
+
return sync({
|
|
256
|
+
persist: true,
|
|
257
|
+
syncToClient: false
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
__name(persist, "persist");
|
|
261
|
+
function connected() {
|
|
262
|
+
return function(target, propertyKey) {
|
|
263
|
+
if (!target.constructor._propertyMetadata) target.constructor._propertyMetadata = /* @__PURE__ */ new Map();
|
|
264
|
+
target.constructor._propertyMetadata.set("connected", propertyKey);
|
|
265
|
+
sync({ persist: false })(target, propertyKey);
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
__name(connected, "connected");
|
|
269
|
+
function load(rootInstance, values, valueIsObject) {
|
|
270
|
+
if (valueIsObject) loadFromObject(rootInstance, values);
|
|
271
|
+
else loadFromPaths(rootInstance, values);
|
|
272
|
+
}
|
|
273
|
+
__name(load, "load");
|
|
274
|
+
function loadFromPaths(rootInstance, values) {
|
|
275
|
+
for (const [path, value] of Object.entries(values)) loadValue(rootInstance, path.split("."), value);
|
|
276
|
+
}
|
|
277
|
+
__name(loadFromPaths, "loadFromPaths");
|
|
278
|
+
function loadFromObject(rootInstance, values, currentPath = "") {
|
|
279
|
+
for (let key in values) {
|
|
280
|
+
const value = values[key];
|
|
281
|
+
const newPath = currentPath ? `${currentPath}.${key}` : key;
|
|
282
|
+
if (typeof value === "object" && !Array.isArray(value) && value !== null) loadFromObject(rootInstance, value, newPath);
|
|
283
|
+
else loadValue(rootInstance, newPath.split("."), value);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
__name(loadFromObject, "loadFromObject");
|
|
287
|
+
function loadValue(rootInstance, parts, value) {
|
|
288
|
+
let current = rootInstance;
|
|
289
|
+
for (let i = 0; i < parts.length; i++) {
|
|
290
|
+
const part = parts[i];
|
|
291
|
+
if (i === parts.length - 1) if (value == "$delete") {
|
|
292
|
+
if (isSignal(current)) current = current();
|
|
293
|
+
Reflect.deleteProperty(current, part);
|
|
294
|
+
} else if (current[part]?._subject) current[part].set(value);
|
|
295
|
+
else if (isSignal(current) && Array.isArray(current()) && !isNaN(Number(part))) current()[Number(part)] = value;
|
|
296
|
+
else current[part] = value;
|
|
297
|
+
else {
|
|
298
|
+
if (isSignal(current)) current = current();
|
|
299
|
+
if (current[part] === void 0) {
|
|
300
|
+
const classType = getByPath(rootInstance, parts.slice(0, i).join("."))?.options?.classType;
|
|
301
|
+
if (classType) {
|
|
302
|
+
current[part] = !isClass(classType) ? classType(part) : new classType();
|
|
303
|
+
setMetadata(current[part], "id", part);
|
|
304
|
+
} else current[part] = {};
|
|
305
|
+
}
|
|
306
|
+
current = current[part];
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
__name(loadValue, "loadValue");
|
|
311
|
+
function getByPath(root, path) {
|
|
312
|
+
const parts = path.split(".");
|
|
313
|
+
let current = root;
|
|
314
|
+
for (const part of parts) {
|
|
315
|
+
if (isSignal(current)) current = current();
|
|
316
|
+
if (current[part]) current = current[part];
|
|
317
|
+
else return;
|
|
318
|
+
}
|
|
319
|
+
return current;
|
|
320
|
+
}
|
|
321
|
+
__name(getByPath, "getByPath");
|
|
322
|
+
//#endregion
|
|
323
|
+
export { DELETE_TOKEN, createStatesSnapshot, createStatesSnapshotDeep, generateShortUUID, getByPath, id, load, persist, sync, syncClass, users };
|
|
324
|
+
|
|
325
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["isSignal2"],"sources":["../../../../../../../../../../node_modules/.pnpm/@signe+sync@2.9.0/node_modules/@signe/sync/dist/index.js"],"sourcesContent":["import {\n __name\n} from \"./chunk-7QVYU63E.js\";\n\n// src/core.ts\nimport { isArraySubject, isObjectSubject, isSignal, isComputed } from \"@signe/reactive\";\n\n// src/utils.ts\nfunction isFunction(val) {\n return {}.toString.call(val) === \"[object Function]\";\n}\n__name(isFunction, \"isFunction\");\nfunction isClass(obj) {\n return typeof obj === \"function\" && obj.prototype && obj.prototype.constructor === obj;\n}\n__name(isClass, \"isClass\");\nvar isObject = /* @__PURE__ */ __name((item) => item && typeof item === \"object\" && !Array.isArray(item) && item !== null, \"isObject\");\nfunction isInstanceOfClass(value) {\n if (value === null || typeof value !== \"object\" || value === void 0 || Array.isArray(value)) {\n return false;\n }\n return Object.getPrototypeOf(value) !== Object.prototype;\n}\n__name(isInstanceOfClass, \"isInstanceOfClass\");\nfunction generateShortUUID() {\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let uuid = \"\";\n for (let i = 0; i < 8; i++) {\n const randomIndex = Math.floor(Math.random() * chars.length);\n uuid += chars[randomIndex];\n }\n return uuid;\n}\n__name(generateShortUUID, \"generateShortUUID\");\n\n// src/core.ts\nvar DELETE_TOKEN = \"$delete\";\nvar syncClass = /* @__PURE__ */ __name((instance, options = {}) => {\n const cacheSync = /* @__PURE__ */ new Map();\n const cachePersist = /* @__PURE__ */ new Map();\n instance.$valuesChanges = {\n set: /* @__PURE__ */ __name((path, value) => {\n cacheSync.set(path, value);\n options.onSync?.(cacheSync);\n }, \"set\"),\n setPersist: /* @__PURE__ */ __name((path, value) => {\n if (path == \"\") path = \".\";\n cachePersist.set(path, value);\n options.onPersist?.(cachePersist);\n }, \"setPersist\"),\n has: /* @__PURE__ */ __name((path) => {\n return cacheSync.has(path);\n }, \"has\"),\n get: /* @__PURE__ */ __name((path) => {\n return cacheSync.get(path);\n }, \"get\")\n };\n createSyncClass(instance);\n}, \"syncClass\");\nfunction createStatesSnapshot(instance) {\n let persistObject = {};\n if (instance?.$snapshot) {\n for (const key of instance.$snapshot.keys()) {\n const signal = instance.$snapshot.get(key);\n const persist2 = signal.options.persist ?? true;\n let value = signal();\n if (isObject(value) || Array.isArray(value)) {\n continue;\n }\n if (persist2) {\n persistObject[key] = value;\n }\n }\n }\n return persistObject;\n}\n__name(createStatesSnapshot, \"createStatesSnapshot\");\nvar SNAPSHOT_SKIP = Symbol(\"snapshot-skip\");\nvar serializeSnapshotDeep = /* @__PURE__ */ __name((value, path, options, seen) => {\n if (isSignal(value)) {\n return serializeSnapshotDeep(value(), path, options, seen);\n }\n if (value instanceof Map) {\n return SNAPSHOT_SKIP;\n }\n if (options.filter && !options.filter(value, path)) {\n return SNAPSHOT_SKIP;\n }\n if (value instanceof Date) {\n return options.dateToString ? options.dateToString(value) : value.toISOString();\n }\n if (value && typeof value === \"object\") {\n if (seen.has(value)) {\n return SNAPSHOT_SKIP;\n }\n seen.add(value);\n if (Array.isArray(value)) {\n const result2 = [];\n value.forEach((item, index) => {\n const itemPath = path ? `${path}.${index}` : String(index);\n const serialized = serializeSnapshotDeep(item, itemPath, options, seen);\n if (serialized !== SNAPSHOT_SKIP) {\n result2.push(serialized);\n }\n });\n return result2;\n }\n const result = {};\n const idKey = isInstanceOfClass(value) ? value.constructor?._propertyMetadata?.get(\"id\") : void 0;\n const entries = Object.entries(value).filter(([key]) => isInstanceOfClass(value) ? key.startsWith(\"__\") || (idKey ? key === idKey : false) : true);\n for (const [key, childValue] of entries) {\n const normalizedKey = key.startsWith(\"__\") ? key.slice(2) : key;\n const childPath = path ? `${path}.${normalizedKey}` : normalizedKey;\n const serialized = serializeSnapshotDeep(childValue, childPath, options, seen);\n if (serialized !== SNAPSHOT_SKIP) {\n result[normalizedKey] = serialized;\n }\n }\n return result;\n }\n return value;\n}, \"serializeSnapshotDeep\");\nfunction createStatesSnapshotDeep(instance, options = {}) {\n const persistObject = {};\n if (instance?.$snapshot) {\n for (const key of instance.$snapshot.keys()) {\n const signal = instance.$snapshot.get(key);\n const persist2 = signal.options.persist ?? true;\n if (!persist2) {\n continue;\n }\n const value = signal();\n const serialized = serializeSnapshotDeep(value, key, options, /* @__PURE__ */ new WeakSet());\n if (serialized !== SNAPSHOT_SKIP) {\n persistObject[key] = serialized;\n }\n }\n }\n return persistObject;\n}\n__name(createStatesSnapshotDeep, \"createStatesSnapshotDeep\");\nfunction setMetadata(target, key, value) {\n const meta = target.constructor._propertyMetadata;\n const propId = meta?.get(key);\n if (propId) {\n if (isSignal(target[propId])) {\n target[propId].set(value);\n } else {\n target[propId] = value;\n }\n }\n}\n__name(setMetadata, \"setMetadata\");\nvar createSyncClass = /* @__PURE__ */ __name((currentClass, parentKey = null, parentClass = null, path = \"\") => {\n currentClass.$path = path;\n if (parentClass) {\n currentClass.$valuesChanges = parentClass.$valuesChanges;\n }\n if (parentKey) {\n setMetadata(currentClass, \"id\", parentKey);\n }\n if (currentClass.$snapshot) {\n for (const key of currentClass.$snapshot.keys()) {\n const signal = currentClass.$snapshot.get(key);\n const syncToClient = signal.options?.syncToClient ?? true;\n const persist2 = signal.options?.persist ?? true;\n const transform = signal.options?.transform;\n let signalValue = signal();\n if (transform) {\n signalValue = transform(signalValue);\n }\n if (isObject(signalValue) || Array.isArray(signalValue)) {\n signalValue = {\n ...signalValue\n };\n }\n const transformedValue = signalValue;\n const newPath = (path ? path + \".\" : \"\") + key;\n if (syncToClient) {\n currentClass.$valuesChanges.set(newPath, transformedValue);\n }\n if (persist2) {\n if (parentClass) currentClass.$valuesChanges.setPersist(path, transformedValue);\n }\n if (isComputed(signal)) {\n signal.observable.subscribe((newValue) => {\n if (syncToClient) {\n const transformedNewValue = transform ? transform(newValue) : newValue;\n currentClass.$valuesChanges.set(newPath, transformedNewValue);\n }\n });\n }\n }\n }\n}, \"createSyncClass\");\nvar type = /* @__PURE__ */ __name((_signal, path, options = {}, currentInstance) => {\n const { syncToClient = true, persist: persist2 = true, transform } = options;\n let init = true;\n const handleObjectSubject = /* @__PURE__ */ __name((value, propPath) => {\n const newPath = `${propPath}${value.key ? `.${value.key}` : \"\"}`;\n if ([\n \"add\",\n \"reset\",\n \"update\"\n ].includes(value.type)) {\n if (isInstanceOfClass(value.value)) {\n createSyncClass(value.value, value.key, currentInstance, newPath);\n } else if (value.type === \"update\" && (isObject(value.value) || Array.isArray(value.value))) {\n createSyncClass(value.value, value.key, currentInstance, newPath);\n } else {\n savePath(newPath, value.value);\n }\n } else if (value.type === \"remove\") {\n savePath(newPath, DELETE_TOKEN);\n }\n }, \"handleObjectSubject\");\n const handleArraySubject = /* @__PURE__ */ __name((value, propPath) => {\n if (value.type === \"reset\" && Array.isArray(value.items)) {\n value.items.forEach((item, index) => {\n const newPath2 = `${propPath}.${index}`;\n if (isInstanceOfClass(item)) {\n createSyncClass(item, value.key, currentInstance, newPath2);\n } else {\n savePath(newPath2, item);\n }\n });\n return;\n }\n const newPath = `${propPath}.${value.index}`;\n const firstItem = value.items?.[0];\n if ([\n \"add\",\n \"update\"\n ].includes(value.type) && firstItem !== void 0) {\n if (isInstanceOfClass(firstItem)) {\n createSyncClass(firstItem, value.key, currentInstance, newPath);\n } else if (value.type === \"update\" && (isObject(firstItem) || Array.isArray(firstItem))) {\n createSyncClass(firstItem, value.key, currentInstance, newPath);\n } else {\n savePath(newPath, firstItem);\n }\n } else if (value.type === \"remove\") {\n savePath(newPath, DELETE_TOKEN);\n }\n }, \"handleArraySubject\");\n const savePath = /* @__PURE__ */ __name((propPath, value) => {\n const transformedValue = transform && value !== DELETE_TOKEN ? transform(value) : value;\n if (syncToClient) {\n currentInstance.$valuesChanges.set(propPath, transformedValue);\n }\n if (persist2 && currentInstance.$path !== void 0) {\n currentInstance.$valuesChanges.setPersist(transformedValue == DELETE_TOKEN ? propPath : currentInstance.$path, transformedValue);\n }\n }, \"savePath\");\n const setupSubscription = /* @__PURE__ */ __name((signal, signalPath) => {\n if (!isSignal(signal)) return;\n if (syncToClient && currentInstance.$valuesChanges) {\n const initialValue = signal();\n const transformedInitialValue = transform ? transform(initialValue) : initialValue;\n currentInstance.$valuesChanges.set(signalPath, transformedInitialValue);\n }\n signal.options = options;\n signal.observable.subscribe((value) => {\n if (init) return;\n if (currentInstance.$path !== void 0) {\n const fullPath = `${currentInstance.$path ? currentInstance.$path + \".\" : \"\"}${signalPath}`;\n if (isComputed(signal)) {\n savePath(fullPath, value);\n } else if (isObjectSubject(signal._subject)) {\n handleObjectSubject(value, fullPath);\n } else if (isArraySubject(signal._subject)) {\n handleArraySubject(value, fullPath);\n } else {\n savePath(fullPath, value);\n }\n }\n });\n if (!currentInstance.$snapshot) {\n currentInstance.$snapshot = /* @__PURE__ */ new Map();\n }\n currentInstance.$snapshot.set(path, signal);\n }, \"setupSubscription\");\n if (!isSignal(_signal)) {\n if (_signal && typeof _signal === \"object\" && !Array.isArray(_signal)) {\n for (const key in _signal) {\n if (Object.prototype.hasOwnProperty.call(_signal, key)) {\n const value = _signal[key];\n const propertyPath = `${path}.${key}`;\n if (isSignal(value)) {\n setupSubscription(value, propertyPath);\n } else if (value && typeof value === \"object\" && !Array.isArray(value)) {\n type(value, propertyPath, options, currentInstance);\n }\n }\n }\n init = false;\n }\n return _signal;\n }\n setupSubscription(_signal, path);\n init = false;\n return _signal;\n}, \"type\");\n\n// src/decorators.ts\nfunction sync(options) {\n let classType;\n let persist2 = true;\n let syncToClient = true;\n let transform;\n if (typeof options === \"function\") {\n classType = options;\n } else if (typeof options === \"object\") {\n classType = options.classType;\n if (options.hasOwnProperty(\"persist\")) {\n persist2 = options.persist;\n }\n if (options.hasOwnProperty(\"syncToClient\")) {\n syncToClient = options.syncToClient;\n }\n if (options.hasOwnProperty(\"transform\")) {\n transform = options.transform;\n }\n }\n return function(target, propertyKey) {\n const privatePropertyKey = `__${propertyKey}`;\n const getter = /* @__PURE__ */ __name(function() {\n return this[privatePropertyKey];\n }, \"getter\");\n const setter = /* @__PURE__ */ __name(function(newVal) {\n this[privatePropertyKey] = type(newVal, propertyKey, {\n classType,\n persist: persist2,\n syncToClient,\n transform\n }, this);\n }, \"setter\");\n Object.defineProperty(target, propertyKey, {\n get: getter,\n set: setter,\n enumerable: true,\n configurable: true\n });\n };\n}\n__name(sync, \"sync\");\nfunction id() {\n return function(target, propertyKey) {\n if (!target.constructor._propertyMetadata) {\n target.constructor._propertyMetadata = /* @__PURE__ */ new Map();\n }\n target.constructor._propertyMetadata.set(\"id\", propertyKey);\n };\n}\n__name(id, \"id\");\nfunction users(options) {\n return function(target, propertyKey) {\n if (!target.constructor._propertyMetadata) {\n target.constructor._propertyMetadata = /* @__PURE__ */ new Map();\n }\n target.constructor._propertyMetadata.set(\"users\", propertyKey);\n sync(options)(target, propertyKey);\n };\n}\n__name(users, \"users\");\nfunction persist() {\n return sync({\n persist: true,\n syncToClient: false\n });\n}\n__name(persist, \"persist\");\nfunction connected() {\n return function(target, propertyKey) {\n if (!target.constructor._propertyMetadata) {\n target.constructor._propertyMetadata = /* @__PURE__ */ new Map();\n }\n target.constructor._propertyMetadata.set(\"connected\", propertyKey);\n sync({\n persist: false\n })(target, propertyKey);\n };\n}\n__name(connected, \"connected\");\n\n// src/load.ts\nimport { isSignal as isSignal2 } from \"@signe/reactive\";\nfunction load(rootInstance, values, valueIsObject) {\n if (valueIsObject) {\n loadFromObject(rootInstance, values);\n } else {\n loadFromPaths(rootInstance, values);\n }\n}\n__name(load, \"load\");\nfunction loadFromPaths(rootInstance, values) {\n for (const [path, value] of Object.entries(values)) {\n const parts = path.split(\".\");\n loadValue(rootInstance, parts, value);\n }\n}\n__name(loadFromPaths, \"loadFromPaths\");\nfunction loadFromObject(rootInstance, values, currentPath = \"\") {\n for (let key in values) {\n const value = values[key];\n const newPath = currentPath ? `${currentPath}.${key}` : key;\n if (typeof value === \"object\" && !Array.isArray(value) && value !== null) {\n loadFromObject(rootInstance, value, newPath);\n } else {\n const parts = newPath.split(\".\");\n loadValue(rootInstance, parts, value);\n }\n }\n}\n__name(loadFromObject, \"loadFromObject\");\nfunction loadValue(rootInstance, parts, value) {\n let current = rootInstance;\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (i === parts.length - 1) {\n if (value == DELETE_TOKEN) {\n if (isSignal2(current)) {\n current = current();\n }\n Reflect.deleteProperty(current, part);\n } else if (current[part]?._subject) {\n current[part].set(value);\n } else if (isSignal2(current) && Array.isArray(current()) && !isNaN(Number(part))) {\n current()[Number(part)] = value;\n } else {\n current[part] = value;\n }\n } else {\n if (isSignal2(current)) {\n current = current();\n }\n const currentValue = current[part];\n if (currentValue === void 0) {\n const parentInstance = getByPath(rootInstance, parts.slice(0, i).join(\".\"));\n const classType = parentInstance?.options?.classType;\n if (classType) {\n current[part] = !isClass(classType) ? classType(part) : new classType();\n setMetadata(current[part], \"id\", part);\n } else {\n current[part] = {};\n }\n }\n current = current[part];\n }\n }\n}\n__name(loadValue, \"loadValue\");\nfunction getByPath(root, path) {\n const parts = path.split(\".\");\n let current = root;\n for (const part of parts) {\n if (isSignal2(current)) {\n current = current();\n }\n if (current[part]) {\n current = current[part];\n } else {\n return void 0;\n }\n }\n return current;\n}\n__name(getByPath, \"getByPath\");\nexport {\n DELETE_TOKEN,\n connected,\n createStatesSnapshot,\n createStatesSnapshotDeep,\n createSyncClass,\n generateShortUUID,\n getByPath,\n id,\n isClass,\n isFunction,\n isInstanceOfClass,\n isObject,\n load,\n persist,\n setMetadata,\n sync,\n syncClass,\n type,\n users\n};\n//# sourceMappingURL=index.js.map"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region ../../node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.mjs
|
|
2
|
+
function dset(obj, keys, val) {
|
|
3
|
+
keys.split && (keys = keys.split("."));
|
|
4
|
+
var i = 0, l = keys.length, t = obj, x, k;
|
|
5
|
+
while (i < l) {
|
|
6
|
+
k = "" + keys[i++];
|
|
7
|
+
if (k === "__proto__" || k === "constructor" || k === "prototype") break;
|
|
8
|
+
t = t[k] = i === l ? val : typeof (x = t[k]) === typeof keys ? x : keys[i] * 0 !== 0 || !!~("" + keys[i]).indexOf(".") ? {} : [];
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { dset };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../../../../../node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.mjs"],"sourcesContent":["export function dset(obj, keys, val) {\n\tkeys.split && (keys=keys.split('.'));\n\tvar i=0, l=keys.length, t=obj, x, k;\n\twhile (i < l) {\n\t\tk = ''+keys[i++];\n\t\tif (k === '__proto__' || k === 'constructor' || k === 'prototype') break;\n\t\tt = t[k] = (i === l) ? val : (typeof(x=t[k])===typeof(keys)) ? x : (keys[i]*0 !== 0 || !!~(''+keys[i]).indexOf('.')) ? {} : [];\n\t}\n}\n"],"x_google_ignoreList":[0],"mappings":";AAAA,SAAgB,KAAK,KAAK,MAAM,KAAK;AACpC,MAAK,UAAU,OAAK,KAAK,MAAM,IAAI;CACnC,IAAI,IAAE,GAAG,IAAE,KAAK,QAAQ,IAAE,KAAK,GAAG;AAClC,QAAO,IAAI,GAAG;AACb,MAAI,KAAG,KAAK;AACZ,MAAI,MAAM,eAAe,MAAM,iBAAiB,MAAM,YAAa;AACnE,MAAI,EAAE,KAAM,MAAM,IAAK,MAAO,QAAO,IAAE,EAAE,QAAM,OAAO,OAAS,IAAK,KAAK,KAAG,MAAM,KAAK,CAAC,CAAC,EAAE,KAAG,KAAK,IAAI,QAAQ,IAAI,GAAI,EAAE,GAAG,EAAE"}
|
package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-HAC622V3.js
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { ReconnectingWebSocket } from "./chunk-S74YV6PU.js";
|
|
2
|
+
//#region ../../node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-HAC622V3.mjs
|
|
3
|
+
var valueIsNotNil = (keyValuePair) => keyValuePair[1] !== null && keyValuePair[1] !== void 0;
|
|
4
|
+
function generateUUID() {
|
|
5
|
+
if (typeof crypto !== "undefined" && crypto.randomUUID) return crypto.randomUUID();
|
|
6
|
+
let d = /* @__PURE__ */ (/* @__PURE__ */ new Date()).getTime();
|
|
7
|
+
let d2 = typeof performance !== "undefined" && performance.now && performance.now() * 1e3 || 0;
|
|
8
|
+
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) {
|
|
9
|
+
let r = Math.random() * 16;
|
|
10
|
+
if (d > 0) {
|
|
11
|
+
r = (d + r) % 16 | 0;
|
|
12
|
+
d = Math.floor(d / 16);
|
|
13
|
+
} else {
|
|
14
|
+
r = (d2 + r) % 16 | 0;
|
|
15
|
+
d2 = Math.floor(d2 / 16);
|
|
16
|
+
}
|
|
17
|
+
return (c === "x" ? r : r & 3 | 8).toString(16);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
function getPartyInfo(partySocketOptions, defaultProtocol, defaultParams = {}) {
|
|
21
|
+
const { host: rawHost, path: rawPath, protocol: rawProtocol, room, party, basePath, prefix, query } = partySocketOptions;
|
|
22
|
+
let host = rawHost.replace(/^(http|https|ws|wss):\/\//, "");
|
|
23
|
+
if (host.endsWith("/")) host = host.slice(0, -1);
|
|
24
|
+
if (rawPath == null ? void 0 : rawPath.startsWith("/")) throw new Error("path must not start with a slash");
|
|
25
|
+
const name = party ?? "main";
|
|
26
|
+
const path = rawPath ? `/${rawPath}` : "";
|
|
27
|
+
const protocol = rawProtocol || (host.startsWith("localhost:") || host.startsWith("127.0.0.1:") || host.startsWith("192.168.") || host.startsWith("10.") || host.startsWith("172.") && host.split(".")[1] >= "16" && host.split(".")[1] <= "31" || host.startsWith("[::ffff:7f00:1]:") ? defaultProtocol : `${defaultProtocol}s`);
|
|
28
|
+
const baseUrl = `${protocol}://${host}/${basePath || `${prefix || "parties"}/${name}/${room}`}${path}`;
|
|
29
|
+
const makeUrl = (query2 = {}) => `${baseUrl}?${new URLSearchParams([...Object.entries(defaultParams), ...Object.entries(query2).filter(valueIsNotNil)])}`;
|
|
30
|
+
const urlProvider = typeof query === "function" ? async () => makeUrl(await query()) : makeUrl(query);
|
|
31
|
+
return {
|
|
32
|
+
host,
|
|
33
|
+
path,
|
|
34
|
+
room,
|
|
35
|
+
name,
|
|
36
|
+
protocol,
|
|
37
|
+
partyUrl: baseUrl,
|
|
38
|
+
urlProvider
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
var PartySocket = class extends ReconnectingWebSocket {
|
|
42
|
+
constructor(partySocketOptions) {
|
|
43
|
+
const wsOptions = getWSOptions(partySocketOptions);
|
|
44
|
+
super(wsOptions.urlProvider, wsOptions.protocols, wsOptions.socketOptions);
|
|
45
|
+
this.partySocketOptions = partySocketOptions;
|
|
46
|
+
this.setWSProperties(wsOptions);
|
|
47
|
+
}
|
|
48
|
+
_pk;
|
|
49
|
+
_pkurl;
|
|
50
|
+
name;
|
|
51
|
+
room;
|
|
52
|
+
host;
|
|
53
|
+
path;
|
|
54
|
+
updateProperties(partySocketOptions) {
|
|
55
|
+
const wsOptions = getWSOptions({
|
|
56
|
+
...this.partySocketOptions,
|
|
57
|
+
...partySocketOptions,
|
|
58
|
+
host: partySocketOptions.host ?? this.host,
|
|
59
|
+
room: partySocketOptions.room ?? this.room,
|
|
60
|
+
path: partySocketOptions.path ?? this.path
|
|
61
|
+
});
|
|
62
|
+
this._url = wsOptions.urlProvider;
|
|
63
|
+
this._protocols = wsOptions.protocols;
|
|
64
|
+
this._options = wsOptions.socketOptions;
|
|
65
|
+
this.setWSProperties(wsOptions);
|
|
66
|
+
}
|
|
67
|
+
setWSProperties(wsOptions) {
|
|
68
|
+
const { _pk, _pkurl, name, room, host, path } = wsOptions;
|
|
69
|
+
this._pk = _pk;
|
|
70
|
+
this._pkurl = _pkurl;
|
|
71
|
+
this.name = name;
|
|
72
|
+
this.room = room;
|
|
73
|
+
this.host = host;
|
|
74
|
+
this.path = path;
|
|
75
|
+
}
|
|
76
|
+
reconnect(code, reason) {
|
|
77
|
+
if (!this.room || !this.host) throw new Error("The room and host must be set before connecting, use `updateProperties` method to set them or pass them to the constructor.");
|
|
78
|
+
super.reconnect(code, reason);
|
|
79
|
+
}
|
|
80
|
+
get id() {
|
|
81
|
+
return this._pk;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Exposes the static PartyKit room URL without applying query parameters.
|
|
85
|
+
* To access the currently connected WebSocket url, use PartySocket#url.
|
|
86
|
+
*/
|
|
87
|
+
get roomUrl() {
|
|
88
|
+
return this._pkurl;
|
|
89
|
+
}
|
|
90
|
+
static async fetch(options, init) {
|
|
91
|
+
const party = getPartyInfo(options, "http");
|
|
92
|
+
const url = typeof party.urlProvider === "string" ? party.urlProvider : await party.urlProvider();
|
|
93
|
+
return (options.fetch ?? fetch)(url, init);
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
function getWSOptions(partySocketOptions) {
|
|
97
|
+
const { id, host: _host, path: _path, party: _party, room: _room, protocol: _protocol, query: _query, protocols, ...socketOptions } = partySocketOptions;
|
|
98
|
+
const _pk = id || generateUUID();
|
|
99
|
+
const party = getPartyInfo(partySocketOptions, "ws", { _pk });
|
|
100
|
+
return {
|
|
101
|
+
_pk,
|
|
102
|
+
_pkurl: party.partyUrl,
|
|
103
|
+
name: party.name,
|
|
104
|
+
room: party.room,
|
|
105
|
+
host: party.host,
|
|
106
|
+
path: party.path,
|
|
107
|
+
protocols,
|
|
108
|
+
socketOptions,
|
|
109
|
+
urlProvider: party.urlProvider
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
//#endregion
|
|
113
|
+
export { PartySocket };
|
|
114
|
+
|
|
115
|
+
//# sourceMappingURL=chunk-HAC622V3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk-HAC622V3.js","names":[],"sources":["../../../../../../../../../node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-HAC622V3.mjs"],"sourcesContent":["import { ReconnectingWebSocket } from \"./chunk-S74YV6PU.mjs\";\n\n// src/index.ts\nvar valueIsNotNil = (keyValuePair) =>\n keyValuePair[1] !== null && keyValuePair[1] !== void 0;\nfunction generateUUID() {\n if (typeof crypto !== \"undefined\" && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n let d = /* @__PURE__ */ new Date().getTime();\n let d2 =\n (typeof performance !== \"undefined\" &&\n performance.now &&\n performance.now() * 1e3) ||\n 0;\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n let r = Math.random() * 16;\n if (d > 0) {\n r = (d + r) % 16 | 0;\n d = Math.floor(d / 16);\n } else {\n r = (d2 + r) % 16 | 0;\n d2 = Math.floor(d2 / 16);\n }\n return (c === \"x\" ? r : (r & 3) | 8).toString(16);\n });\n}\nfunction getPartyInfo(partySocketOptions, defaultProtocol, defaultParams = {}) {\n const {\n host: rawHost,\n path: rawPath,\n protocol: rawProtocol,\n room,\n party,\n basePath,\n prefix,\n query\n } = partySocketOptions;\n let host = rawHost.replace(/^(http|https|ws|wss):\\/\\//, \"\");\n if (host.endsWith(\"/\")) {\n host = host.slice(0, -1);\n }\n if (rawPath == null ? void 0 : rawPath.startsWith(\"/\")) {\n throw new Error(\"path must not start with a slash\");\n }\n const name = party ?? \"main\";\n const path = rawPath ? `/${rawPath}` : \"\";\n const protocol =\n rawProtocol ||\n (host.startsWith(\"localhost:\") ||\n host.startsWith(\"127.0.0.1:\") ||\n host.startsWith(\"192.168.\") ||\n host.startsWith(\"10.\") ||\n (host.startsWith(\"172.\") &&\n host.split(\".\")[1] >= \"16\" &&\n host.split(\".\")[1] <= \"31\") ||\n host.startsWith(\"[::ffff:7f00:1]:\")\n ? // http / ws\n defaultProtocol\n : // https / wss\n `${defaultProtocol}s`);\n const baseUrl = `${protocol}://${host}/${basePath || `${prefix || \"parties\"}/${name}/${room}`}${path}`;\n const makeUrl = (query2 = {}) =>\n `${baseUrl}?${new URLSearchParams([\n ...Object.entries(defaultParams),\n ...Object.entries(query2).filter(valueIsNotNil)\n ])}`;\n const urlProvider =\n typeof query === \"function\"\n ? async () => makeUrl(await query())\n : makeUrl(query);\n return {\n host,\n path,\n room,\n name,\n protocol,\n partyUrl: baseUrl,\n urlProvider\n };\n}\nvar PartySocket = class extends ReconnectingWebSocket {\n constructor(partySocketOptions) {\n const wsOptions = getWSOptions(partySocketOptions);\n super(wsOptions.urlProvider, wsOptions.protocols, wsOptions.socketOptions);\n this.partySocketOptions = partySocketOptions;\n this.setWSProperties(wsOptions);\n }\n _pk;\n _pkurl;\n name;\n room;\n host;\n path;\n updateProperties(partySocketOptions) {\n const wsOptions = getWSOptions({\n ...this.partySocketOptions,\n ...partySocketOptions,\n host: partySocketOptions.host ?? this.host,\n room: partySocketOptions.room ?? this.room,\n path: partySocketOptions.path ?? this.path\n });\n this._url = wsOptions.urlProvider;\n this._protocols = wsOptions.protocols;\n this._options = wsOptions.socketOptions;\n this.setWSProperties(wsOptions);\n }\n setWSProperties(wsOptions) {\n const { _pk, _pkurl, name, room, host, path } = wsOptions;\n this._pk = _pk;\n this._pkurl = _pkurl;\n this.name = name;\n this.room = room;\n this.host = host;\n this.path = path;\n }\n reconnect(code, reason) {\n if (!this.room || !this.host) {\n throw new Error(\n \"The room and host must be set before connecting, use `updateProperties` method to set them or pass them to the constructor.\"\n );\n }\n super.reconnect(code, reason);\n }\n get id() {\n return this._pk;\n }\n /**\n * Exposes the static PartyKit room URL without applying query parameters.\n * To access the currently connected WebSocket url, use PartySocket#url.\n */\n get roomUrl() {\n return this._pkurl;\n }\n // a `fetch` method that uses (almost) the same options as `PartySocket`\n static async fetch(options, init) {\n const party = getPartyInfo(options, \"http\");\n const url =\n typeof party.urlProvider === \"string\"\n ? party.urlProvider\n : await party.urlProvider();\n const doFetch = options.fetch ?? fetch;\n return doFetch(url, init);\n }\n};\nfunction getWSOptions(partySocketOptions) {\n const {\n id,\n host: _host,\n path: _path,\n party: _party,\n room: _room,\n protocol: _protocol,\n query: _query,\n protocols,\n ...socketOptions\n } = partySocketOptions;\n const _pk = id || generateUUID();\n const party = getPartyInfo(partySocketOptions, \"ws\", { _pk });\n return {\n _pk,\n _pkurl: party.partyUrl,\n name: party.name,\n room: party.room,\n host: party.host,\n path: party.path,\n protocols,\n socketOptions,\n urlProvider: party.urlProvider\n };\n}\n\nexport { PartySocket };\n//# sourceMappingURL=chunk-HAC622V3.mjs.map\n"],"x_google_ignoreList":[0],"mappings":"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"}
|