@rpgjs/client 5.0.0-beta.2 → 5.0.0-beta.22
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/CHANGELOG.md +130 -0
- package/dist/Game/AnimationManager.d.ts +2 -1
- package/dist/Game/AnimationManager.js +21 -9
- package/dist/Game/AnimationManager.js.map +1 -1
- package/dist/Game/AnimationManager.spec.d.ts +1 -0
- package/dist/Game/ClientVisuals.d.ts +61 -0
- package/dist/Game/ClientVisuals.js +96 -0
- package/dist/Game/ClientVisuals.js.map +1 -0
- package/dist/Game/ClientVisuals.spec.d.ts +1 -0
- package/dist/Game/Event.js.map +1 -1
- package/dist/Game/EventComponentResolver.d.ts +16 -0
- package/dist/Game/EventComponentResolver.js +52 -0
- package/dist/Game/EventComponentResolver.js.map +1 -0
- package/dist/Game/EventComponentResolver.spec.d.ts +1 -0
- package/dist/Game/Map.d.ts +9 -1
- package/dist/Game/Map.js +83 -5
- package/dist/Game/Map.js.map +1 -1
- package/dist/Game/Object.d.ts +49 -15
- package/dist/Game/Object.js +101 -42
- package/dist/Game/Object.js.map +1 -1
- package/dist/Game/Object.spec.d.ts +1 -0
- package/dist/Game/Player.js.map +1 -1
- package/dist/Game/ProjectileManager.d.ts +98 -0
- package/dist/Game/ProjectileManager.js +196 -0
- package/dist/Game/ProjectileManager.js.map +1 -0
- package/dist/Game/ProjectileManager.spec.d.ts +1 -0
- package/dist/Gui/Gui.d.ts +20 -6
- package/dist/Gui/Gui.js +132 -57
- package/dist/Gui/Gui.js.map +1 -1
- package/dist/Gui/Gui.spec.d.ts +1 -0
- package/dist/Gui/NotificationManager.js.map +1 -1
- package/dist/Resource.js +1 -1
- package/dist/Resource.js.map +1 -1
- package/dist/RpgClient.d.ts +194 -15
- package/dist/RpgClientEngine.d.ts +191 -19
- package/dist/RpgClientEngine.js +693 -74
- package/dist/RpgClientEngine.js.map +1 -1
- package/dist/Sound.js.map +1 -1
- package/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.133.0/helpers/esm}/decorate.js +1 -1
- package/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.133.0/helpers/esm}/decorateMetadata.js +1 -1
- package/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/components/animations/animation.ce.js +6 -5
- package/dist/components/animations/animation.ce.js.map +1 -1
- package/dist/components/animations/fx.ce.js +60 -0
- package/dist/components/animations/fx.ce.js.map +1 -0
- package/dist/components/animations/hit.ce.js +24 -28
- package/dist/components/animations/hit.ce.js.map +1 -1
- package/dist/components/animations/index.d.ts +1 -0
- package/dist/components/animations/index.js +6 -4
- package/dist/components/animations/index.js.map +1 -1
- package/dist/components/character.ce.js +748 -249
- package/dist/components/character.ce.js.map +1 -1
- package/dist/components/dynamics/bar.ce.js +99 -0
- package/dist/components/dynamics/bar.ce.js.map +1 -0
- package/dist/components/dynamics/image.ce.js +26 -0
- package/dist/components/dynamics/image.ce.js.map +1 -0
- package/dist/components/dynamics/parse-value.d.ts +3 -0
- package/dist/components/dynamics/parse-value.js +54 -35
- package/dist/components/dynamics/parse-value.js.map +1 -1
- package/dist/components/dynamics/parse-value.spec.d.ts +1 -0
- package/dist/components/dynamics/shape-utils.d.ts +16 -0
- package/dist/components/dynamics/shape-utils.js +73 -0
- package/dist/components/dynamics/shape-utils.js.map +1 -0
- package/dist/components/dynamics/shape-utils.spec.d.ts +1 -0
- package/dist/components/dynamics/shape.ce.js +86 -0
- package/dist/components/dynamics/shape.ce.js.map +1 -0
- package/dist/components/dynamics/text.ce.js +36 -56
- package/dist/components/dynamics/text.ce.js.map +1 -1
- package/dist/components/gui/box.ce.js +9 -9
- package/dist/components/gui/box.ce.js.map +1 -1
- package/dist/components/gui/dialogbox/index.ce.js +75 -65
- package/dist/components/gui/dialogbox/index.ce.js.map +1 -1
- package/dist/components/gui/gameover.ce.js +47 -68
- package/dist/components/gui/gameover.ce.js.map +1 -1
- package/dist/components/gui/hud/hud.ce.js +23 -31
- package/dist/components/gui/hud/hud.ce.js.map +1 -1
- package/dist/components/gui/menu/equip-menu.ce.js +121 -172
- package/dist/components/gui/menu/equip-menu.ce.js.map +1 -1
- package/dist/components/gui/menu/exit-menu.ce.js +15 -10
- package/dist/components/gui/menu/exit-menu.ce.js.map +1 -1
- package/dist/components/gui/menu/items-menu.ce.js +62 -77
- package/dist/components/gui/menu/items-menu.ce.js.map +1 -1
- package/dist/components/gui/menu/main-menu.ce.js +89 -104
- package/dist/components/gui/menu/main-menu.ce.js.map +1 -1
- package/dist/components/gui/menu/options-menu.ce.js +12 -8
- package/dist/components/gui/menu/options-menu.ce.js.map +1 -1
- package/dist/components/gui/menu/skills-menu.ce.js +17 -19
- package/dist/components/gui/menu/skills-menu.ce.js.map +1 -1
- package/dist/components/gui/mobile/index.d.ts +51 -2
- package/dist/components/gui/mobile/index.js +14 -6
- package/dist/components/gui/mobile/index.js.map +1 -1
- package/dist/components/gui/mobile/index.spec.d.ts +1 -0
- package/dist/components/gui/mobile/mobile.ce.js +309 -59
- package/dist/components/gui/mobile/mobile.ce.js.map +1 -1
- package/dist/components/gui/notification/notification.ce.js +28 -26
- package/dist/components/gui/notification/notification.ce.js.map +1 -1
- package/dist/components/gui/save-load.ce.js +81 -256
- package/dist/components/gui/save-load.ce.js.map +1 -1
- package/dist/components/gui/shop/shop.ce.js +107 -142
- package/dist/components/gui/shop/shop.ce.js.map +1 -1
- package/dist/components/gui/title-screen.ce.js +50 -73
- package/dist/components/gui/title-screen.ce.js.map +1 -1
- package/dist/components/index.d.ts +2 -1
- package/dist/components/index.js +1 -0
- package/dist/components/interaction-components.ce.js +22 -0
- package/dist/components/interaction-components.ce.js.map +1 -0
- package/dist/components/player-components-utils.d.ts +67 -0
- package/dist/components/player-components-utils.js +162 -0
- package/dist/components/player-components-utils.js.map +1 -0
- package/dist/components/player-components-utils.spec.d.ts +1 -0
- package/dist/components/player-components.ce.js +191 -0
- package/dist/components/player-components.ce.js.map +1 -0
- package/dist/components/prebuilt/hp-bar.ce.js +45 -45
- package/dist/components/prebuilt/hp-bar.ce.js.map +1 -1
- package/dist/components/prebuilt/light-halo.ce.js +39 -60
- package/dist/components/prebuilt/light-halo.ce.js.map +1 -1
- package/dist/components/scenes/canvas.ce.js +205 -27
- package/dist/components/scenes/canvas.ce.js.map +1 -1
- package/dist/components/scenes/draw-map.ce.js +39 -39
- package/dist/components/scenes/draw-map.ce.js.map +1 -1
- package/dist/components/scenes/event-layer.ce.js +51 -10
- package/dist/components/scenes/event-layer.ce.js.map +1 -1
- package/dist/core/inject.js +1 -1
- package/dist/core/inject.js.map +1 -1
- package/dist/core/setup.js +1 -1
- package/dist/core/setup.js.map +1 -1
- package/dist/decorators/spritesheet.d.ts +1 -0
- package/dist/decorators/spritesheet.js +11 -0
- package/dist/decorators/spritesheet.js.map +1 -0
- package/dist/i18n.d.ts +55 -0
- package/dist/i18n.js +60 -0
- package/dist/i18n.js.map +1 -0
- package/dist/i18n.spec.d.ts +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +29 -21
- package/dist/module.js +45 -4
- package/dist/module.js.map +1 -1
- package/dist/node_modules/.pnpm/{@signe_di@2.9.0 → @signe_di@3.1.0}/node_modules/@signe/di/dist/index.js +7 -117
- package/dist/node_modules/.pnpm/@signe_di@3.1.0/node_modules/@signe/di/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@signe_reactive@3.1.0/node_modules/@signe/reactive/dist/index.js +239 -0
- package/dist/node_modules/.pnpm/@signe_reactive@3.1.0/node_modules/@signe/reactive/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@signe_room@3.1.0_react@19.2.7/node_modules/@signe/room/dist/chunk-EUXUH3YW.js +13 -0
- package/dist/node_modules/.pnpm/@signe_room@3.1.0_react@19.2.7/node_modules/@signe/room/dist/chunk-EUXUH3YW.js.map +1 -0
- package/dist/node_modules/.pnpm/@signe_room@3.1.0_react@19.2.7/node_modules/@signe/room/dist/index.js +698 -0
- package/dist/node_modules/.pnpm/@signe_room@3.1.0_react@19.2.7/node_modules/@signe/room/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@signe_sync@3.1.0_react@19.2.7/node_modules/@signe/sync/dist/client/index.js +43 -0
- package/dist/node_modules/.pnpm/@signe_sync@3.1.0_react@19.2.7/node_modules/@signe/sync/dist/client/index.js.map +1 -0
- package/dist/node_modules/.pnpm/{@signe_sync@2.9.0 → @signe_sync@3.1.0_react@19.2.7}/node_modules/@signe/sync/dist/index.js +57 -141
- package/dist/node_modules/.pnpm/@signe_sync@3.1.0_react@19.2.7/node_modules/@signe/sync/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/{partysocket@1.1.3/node_modules/partysocket/dist/chunk-HAC622V3.js → partysocket@1.2.0_react@19.2.7/node_modules/partysocket/dist/index.js} +30 -17
- package/dist/node_modules/.pnpm/partysocket@1.2.0_react@19.2.7/node_modules/partysocket/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/{partysocket@1.1.3/node_modules/partysocket/dist/chunk-S74YV6PU.js → partysocket@1.2.0_react@19.2.7/node_modules/partysocket/dist/ws.js} +65 -34
- package/dist/node_modules/.pnpm/partysocket@1.2.0_react@19.2.7/node_modules/partysocket/dist/ws.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/index.js +13 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/index.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js +106 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js +13 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js +121 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js +10 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js +110 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js +99 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js +82 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js.map +1 -0
- package/dist/node_modules/.pnpm/{zod@3.24.2/node_modules/zod/lib/index.js → zod@3.25.76/node_modules/zod/v3/types.js} +74 -611
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js.map +1 -0
- package/dist/presets/animation.js.map +1 -1
- package/dist/presets/faceset.js.map +1 -1
- package/dist/presets/icon.js.map +1 -1
- package/dist/presets/index.js.map +1 -1
- package/dist/presets/lpc.js.map +1 -1
- package/dist/presets/rmspritesheet.js.map +1 -1
- package/dist/services/AbstractSocket.d.ts +2 -0
- package/dist/services/AbstractSocket.js.map +1 -1
- package/dist/services/actionInput.d.ts +14 -0
- package/dist/services/actionInput.js +59 -0
- package/dist/services/actionInput.js.map +1 -0
- package/dist/services/actionInput.spec.d.ts +1 -0
- package/dist/services/cameraFollow.d.ts +51 -0
- package/dist/services/cameraFollow.js +134 -0
- package/dist/services/cameraFollow.js.map +1 -0
- package/dist/services/cameraFollow.spec.d.ts +1 -0
- package/dist/services/interactions.d.ts +159 -0
- package/dist/services/interactions.js +460 -0
- package/dist/services/interactions.js.map +1 -0
- package/dist/services/interactions.spec.d.ts +1 -0
- package/dist/services/keyboardControls.d.ts +1 -0
- package/dist/services/keyboardControls.js +1 -0
- package/dist/services/keyboardControls.js.map +1 -1
- package/dist/services/loadMap.d.ts +9 -0
- package/dist/services/loadMap.js +1 -1
- package/dist/services/loadMap.js.map +1 -1
- package/dist/services/mmorpg-connection.d.ts +5 -0
- package/dist/services/mmorpg-connection.js +50 -0
- package/dist/services/mmorpg-connection.js.map +1 -0
- package/dist/services/mmorpg-connection.spec.d.ts +1 -0
- package/dist/services/mmorpg.d.ts +11 -4
- package/dist/services/mmorpg.js +57 -33
- package/dist/services/mmorpg.js.map +1 -1
- package/dist/services/pointerContext.d.ts +11 -0
- package/dist/services/pointerContext.js +48 -0
- package/dist/services/pointerContext.js.map +1 -0
- package/dist/services/pointerContext.spec.d.ts +1 -0
- package/dist/services/save.js.map +1 -1
- package/dist/services/save.spec.d.ts +1 -0
- package/dist/services/standalone-message.d.ts +1 -0
- package/dist/services/standalone-message.js +9 -0
- package/dist/services/standalone-message.js.map +1 -0
- package/dist/services/standalone.d.ts +4 -1
- package/dist/services/standalone.js +36 -16
- package/dist/services/standalone.js.map +1 -1
- package/dist/services/standalone.spec.d.ts +1 -0
- package/dist/utils/getEntityProp.js +4 -3
- package/dist/utils/getEntityProp.js.map +1 -1
- package/dist/utils/getEntityProp.spec.d.ts +1 -0
- package/dist/utils/mapId.d.ts +1 -0
- package/dist/utils/mapId.js +6 -0
- package/dist/utils/mapId.js.map +1 -0
- package/dist/utils/readPropValue.d.ts +2 -0
- package/dist/utils/readPropValue.js +13 -0
- package/dist/utils/readPropValue.js.map +1 -0
- package/package.json +13 -13
- package/src/Game/AnimationManager.spec.ts +30 -0
- package/src/Game/AnimationManager.ts +26 -10
- package/src/Game/ClientVisuals.spec.ts +56 -0
- package/src/Game/ClientVisuals.ts +184 -0
- package/src/Game/EventComponentResolver.spec.ts +84 -0
- package/src/Game/EventComponentResolver.ts +74 -0
- package/src/Game/Map.ts +134 -2
- package/src/Game/Object.spec.ts +59 -0
- package/src/Game/Object.ts +181 -77
- package/src/Game/ProjectileManager.spec.ts +449 -0
- package/src/Game/ProjectileManager.ts +346 -0
- package/src/Gui/Gui.spec.ts +359 -0
- package/src/Gui/Gui.ts +178 -67
- package/src/Resource.ts +1 -2
- package/src/RpgClient.ts +220 -17
- package/src/RpgClientEngine.ts +995 -133
- package/src/components/animations/fx.ce +101 -0
- package/src/components/animations/index.ts +4 -2
- package/src/components/character.ce +839 -45
- package/src/components/dynamics/bar.ce +88 -0
- package/src/components/dynamics/image.ce +21 -0
- package/src/components/dynamics/parse-value.spec.ts +83 -0
- package/src/components/dynamics/parse-value.ts +111 -37
- package/src/components/dynamics/shape-utils.spec.ts +46 -0
- package/src/components/dynamics/shape-utils.ts +61 -0
- package/src/components/dynamics/shape.ce +90 -0
- package/src/components/dynamics/text.ce +35 -149
- package/src/components/gui/dialogbox/index.ce +52 -21
- package/src/components/gui/gameover.ce +6 -4
- package/src/components/gui/menu/equip-menu.ce +11 -9
- package/src/components/gui/menu/exit-menu.ce +6 -4
- package/src/components/gui/menu/items-menu.ce +11 -9
- package/src/components/gui/menu/main-menu.ce +14 -12
- package/src/components/gui/menu/options-menu.ce +4 -3
- package/src/components/gui/menu/skills-menu.ce +2 -1
- package/src/components/gui/mobile/index.spec.ts +94 -0
- package/src/components/gui/mobile/index.ts +74 -6
- package/src/components/gui/mobile/mobile.ce +347 -65
- package/src/components/gui/notification/notification.ce +7 -1
- package/src/components/gui/save-load.ce +13 -11
- package/src/components/gui/shop/shop.ce +20 -18
- package/src/components/gui/title-screen.ce +6 -4
- package/src/components/index.ts +2 -1
- package/src/components/interaction-components.ce +23 -0
- package/src/components/player-components-utils.spec.ts +109 -0
- package/src/components/player-components-utils.ts +205 -0
- package/src/components/player-components.ce +222 -0
- package/src/components/prebuilt/hp-bar.ce +4 -3
- package/src/components/prebuilt/light-halo.ce +2 -2
- package/src/components/scenes/canvas.ce +219 -15
- package/src/components/scenes/draw-map.ce +34 -22
- package/src/components/scenes/event-layer.ce +55 -4
- package/src/core/setup.ts +2 -2
- package/src/decorators/spritesheet.ts +8 -0
- package/src/i18n.spec.ts +39 -0
- package/src/i18n.ts +59 -0
- package/src/index.ts +19 -0
- package/src/module.ts +61 -11
- package/src/services/AbstractSocket.ts +3 -0
- package/src/services/actionInput.spec.ts +155 -0
- package/src/services/actionInput.ts +120 -0
- package/src/services/cameraFollow.spec.ts +220 -0
- package/src/services/cameraFollow.ts +222 -0
- package/src/services/interactions.spec.ts +175 -0
- package/src/services/interactions.ts +722 -0
- package/src/services/keyboardControls.ts +2 -1
- package/src/services/loadMap.ts +5 -1
- package/src/services/mmorpg-connection.spec.ts +99 -0
- package/src/services/mmorpg-connection.ts +69 -0
- package/src/services/mmorpg.ts +70 -36
- package/src/services/pointerContext.spec.ts +36 -0
- package/src/services/pointerContext.ts +84 -0
- package/src/services/save.spec.ts +127 -0
- package/src/services/standalone-message.ts +7 -0
- package/src/services/standalone.spec.ts +54 -0
- package/src/services/standalone.ts +44 -12
- package/src/utils/getEntityProp.spec.ts +96 -0
- package/src/utils/getEntityProp.ts +4 -3
- package/src/utils/mapId.ts +2 -0
- package/src/utils/readPropValue.ts +16 -0
- package/dist/node_modules/.pnpm/@signe_di@2.9.0/node_modules/@signe/di/dist/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@signe_reactive@2.8.3/node_modules/@signe/reactive/dist/index.js +0 -457
- package/dist/node_modules/.pnpm/@signe_reactive@2.8.3/node_modules/@signe/reactive/dist/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@signe_reactive@2.9.0/node_modules/@signe/reactive/dist/index.js +0 -463
- package/dist/node_modules/.pnpm/@signe_reactive@2.9.0/node_modules/@signe/reactive/dist/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@signe_room@2.9.0/node_modules/@signe/room/dist/index.js +0 -2191
- package/dist/node_modules/.pnpm/@signe_room@2.9.0/node_modules/@signe/room/dist/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/chunk-7QVYU63E.js +0 -10
- package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/chunk-7QVYU63E.js.map +0 -1
- package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/client/index.js +0 -91
- package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/client/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/index.js.map +0 -1
- package/dist/node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.js +0 -14
- package/dist/node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.js.map +0 -1
- package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-HAC622V3.js.map +0 -1
- package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-S74YV6PU.js.map +0 -1
- package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/index.js +0 -2
- package/dist/node_modules/.pnpm/zod@3.24.2/node_modules/zod/lib/index.js.map +0 -1
|
@@ -1,115 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
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");
|
|
1
|
+
import { isArraySubject, isComputed, isObjectSubject, isSignal } from "../../../../../@signe_reactive@3.1.0/node_modules/@signe/reactive/dist/index.js";
|
|
2
|
+
//#region ../../node_modules/.pnpm/@signe+sync@3.1.0_react@19.2.7/node_modules/@signe/sync/dist/index.js
|
|
8
3
|
function isClass(obj) {
|
|
9
4
|
return typeof obj === "function" && obj.prototype && obj.prototype.constructor === obj;
|
|
10
5
|
}
|
|
11
|
-
|
|
12
|
-
var isObject = /* @__PURE__ */ __name((item) => item && typeof item === "object" && !Array.isArray(item) && item !== null, "isObject");
|
|
6
|
+
var isObject = (item) => item && typeof item === "object" && !Array.isArray(item) && item !== null;
|
|
13
7
|
function isInstanceOfClass(value) {
|
|
14
8
|
if (value === null || typeof value !== "object" || value === void 0 || Array.isArray(value)) return false;
|
|
15
9
|
return Object.getPrototypeOf(value) !== Object.prototype;
|
|
16
10
|
}
|
|
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
11
|
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
12
|
function setMetadata(target, key, value) {
|
|
104
13
|
const propId = target.constructor._propertyMetadata?.get(key);
|
|
105
14
|
if (propId) if (isSignal(target[propId])) target[propId].set(value);
|
|
106
15
|
else target[propId] = value;
|
|
107
16
|
}
|
|
108
|
-
|
|
109
|
-
var createSyncClass = /* @__PURE__ */ __name((currentClass, parentKey = null, parentClass = null, path = "") => {
|
|
17
|
+
var createSyncClass = (currentClass, parentKey = null, parentClass = null, path = "") => {
|
|
110
18
|
currentClass.$path = path;
|
|
111
19
|
if (parentClass) currentClass.$valuesChanges = parentClass.$valuesChanges;
|
|
112
20
|
if (parentKey) setMetadata(currentClass, "id", parentKey);
|
|
21
|
+
applyDecoratedSignalMetadata(currentClass);
|
|
113
22
|
if (currentClass.$snapshot) for (const key of currentClass.$snapshot.keys()) {
|
|
114
23
|
const signal = currentClass.$snapshot.get(key);
|
|
115
24
|
const syncToClient = signal.options?.syncToClient ?? true;
|
|
@@ -131,11 +40,23 @@ var createSyncClass = /* @__PURE__ */ __name((currentClass, parentKey = null, pa
|
|
|
131
40
|
}
|
|
132
41
|
});
|
|
133
42
|
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
const
|
|
43
|
+
};
|
|
44
|
+
function applyDecoratedSignalMetadata(currentClass) {
|
|
45
|
+
const syncMetadata = currentClass.constructor?._syncMetadata;
|
|
46
|
+
if (!syncMetadata) return;
|
|
47
|
+
for (const [propertyKey, options] of syncMetadata) {
|
|
48
|
+
const signal = currentClass[propertyKey];
|
|
49
|
+
if (!isSignal(signal) || signal.options) continue;
|
|
50
|
+
currentClass[propertyKey] = type(signal, propertyKey, {
|
|
51
|
+
...options,
|
|
52
|
+
skipInitialSync: true
|
|
53
|
+
}, currentClass);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
var type = (_signal, path, options = {}, currentInstance) => {
|
|
57
|
+
const { syncToClient = true, persist: persist2 = true, transform, skipInitialSync = false } = options;
|
|
137
58
|
let init = true;
|
|
138
|
-
const handleObjectSubject =
|
|
59
|
+
const handleObjectSubject = (value, propPath) => {
|
|
139
60
|
const newPath = `${propPath}${value.key ? `.${value.key}` : ""}`;
|
|
140
61
|
if ([
|
|
141
62
|
"add",
|
|
@@ -145,8 +66,8 @@ var type = /* @__PURE__ */ __name((_signal, path, options = {}, currentInstance)
|
|
|
145
66
|
else if (value.type === "update" && (isObject(value.value) || Array.isArray(value.value))) createSyncClass(value.value, value.key, currentInstance, newPath);
|
|
146
67
|
else savePath(newPath, value.value);
|
|
147
68
|
else if (value.type === "remove") savePath(newPath, DELETE_TOKEN);
|
|
148
|
-
}
|
|
149
|
-
const handleArraySubject =
|
|
69
|
+
};
|
|
70
|
+
const handleArraySubject = (value, propPath) => {
|
|
150
71
|
if (value.type === "reset" && Array.isArray(value.items)) {
|
|
151
72
|
value.items.forEach((item, index) => {
|
|
152
73
|
const newPath2 = `${propPath}.${index}`;
|
|
@@ -161,18 +82,19 @@ var type = /* @__PURE__ */ __name((_signal, path, options = {}, currentInstance)
|
|
|
161
82
|
else if (value.type === "update" && (isObject(firstItem) || Array.isArray(firstItem))) createSyncClass(firstItem, value.key, currentInstance, newPath);
|
|
162
83
|
else savePath(newPath, firstItem);
|
|
163
84
|
else if (value.type === "remove") savePath(newPath, DELETE_TOKEN);
|
|
164
|
-
}
|
|
165
|
-
const savePath =
|
|
85
|
+
};
|
|
86
|
+
const savePath = (propPath, value) => {
|
|
166
87
|
const transformedValue = transform && value !== "$delete" ? transform(value) : value;
|
|
167
88
|
if (syncToClient) currentInstance.$valuesChanges.set(propPath, transformedValue);
|
|
168
|
-
if (persist2 && currentInstance.$path !== void 0) currentInstance.$valuesChanges.setPersist(
|
|
169
|
-
}
|
|
170
|
-
const setupSubscription =
|
|
89
|
+
if (persist2 && currentInstance.$path !== void 0) currentInstance.$valuesChanges.setPersist(propPath, transformedValue);
|
|
90
|
+
};
|
|
91
|
+
const setupSubscription = (signal, signalPath) => {
|
|
171
92
|
if (!isSignal(signal)) return;
|
|
172
|
-
if (syncToClient && currentInstance.$valuesChanges) {
|
|
93
|
+
if (syncToClient && !skipInitialSync && currentInstance.$valuesChanges) {
|
|
173
94
|
const initialValue = signal();
|
|
174
95
|
const transformedInitialValue = transform ? transform(initialValue) : initialValue;
|
|
175
|
-
currentInstance.$
|
|
96
|
+
const initialPath = currentInstance.$path !== void 0 ? `${currentInstance.$path ? `${currentInstance.$path}.` : ""}${signalPath}` : signalPath;
|
|
97
|
+
currentInstance.$valuesChanges.set(initialPath, transformedInitialValue);
|
|
176
98
|
}
|
|
177
99
|
signal.options = options;
|
|
178
100
|
signal.observable.subscribe((value) => {
|
|
@@ -187,7 +109,7 @@ var type = /* @__PURE__ */ __name((_signal, path, options = {}, currentInstance)
|
|
|
187
109
|
});
|
|
188
110
|
if (!currentInstance.$snapshot) currentInstance.$snapshot = /* @__PURE__ */ new Map();
|
|
189
111
|
currentInstance.$snapshot.set(path, signal);
|
|
190
|
-
}
|
|
112
|
+
};
|
|
191
113
|
if (!isSignal(_signal)) {
|
|
192
114
|
if (_signal && typeof _signal === "object" && !Array.isArray(_signal)) {
|
|
193
115
|
for (const key in _signal) if (Object.prototype.hasOwnProperty.call(_signal, key)) {
|
|
@@ -203,8 +125,8 @@ var type = /* @__PURE__ */ __name((_signal, path, options = {}, currentInstance)
|
|
|
203
125
|
setupSubscription(_signal, path);
|
|
204
126
|
init = false;
|
|
205
127
|
return _signal;
|
|
206
|
-
}
|
|
207
|
-
function
|
|
128
|
+
};
|
|
129
|
+
function normalizeSyncOptions(options) {
|
|
208
130
|
let classType;
|
|
209
131
|
let persist2 = true;
|
|
210
132
|
let syncToClient = true;
|
|
@@ -216,33 +138,42 @@ function sync(options) {
|
|
|
216
138
|
if (options.hasOwnProperty("syncToClient")) syncToClient = options.syncToClient;
|
|
217
139
|
if (options.hasOwnProperty("transform")) transform = options.transform;
|
|
218
140
|
}
|
|
141
|
+
return {
|
|
142
|
+
classType,
|
|
143
|
+
persist: persist2,
|
|
144
|
+
syncToClient,
|
|
145
|
+
transform
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
function setSyncMetadata(target, propertyKey, options) {
|
|
149
|
+
if (!target.constructor._syncMetadata) target.constructor._syncMetadata = /* @__PURE__ */ new Map();
|
|
150
|
+
target.constructor._syncMetadata.set(propertyKey, options);
|
|
151
|
+
}
|
|
152
|
+
function sync(options) {
|
|
153
|
+
const normalizedOptions = normalizeSyncOptions(options);
|
|
219
154
|
return function(target, propertyKey) {
|
|
155
|
+
setSyncMetadata(target, propertyKey, normalizedOptions);
|
|
220
156
|
const privatePropertyKey = `__${propertyKey}`;
|
|
157
|
+
const getter = function() {
|
|
158
|
+
return this[privatePropertyKey];
|
|
159
|
+
};
|
|
160
|
+
const setter = function(newVal) {
|
|
161
|
+
this[privatePropertyKey] = type(newVal, propertyKey, normalizedOptions, this);
|
|
162
|
+
};
|
|
221
163
|
Object.defineProperty(target, propertyKey, {
|
|
222
|
-
get:
|
|
223
|
-
|
|
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"),
|
|
164
|
+
get: getter,
|
|
165
|
+
set: setter,
|
|
233
166
|
enumerable: true,
|
|
234
167
|
configurable: true
|
|
235
168
|
});
|
|
236
169
|
};
|
|
237
170
|
}
|
|
238
|
-
__name(sync, "sync");
|
|
239
171
|
function id() {
|
|
240
172
|
return function(target, propertyKey) {
|
|
241
173
|
if (!target.constructor._propertyMetadata) target.constructor._propertyMetadata = /* @__PURE__ */ new Map();
|
|
242
174
|
target.constructor._propertyMetadata.set("id", propertyKey);
|
|
243
175
|
};
|
|
244
176
|
}
|
|
245
|
-
__name(id, "id");
|
|
246
177
|
function users(options) {
|
|
247
178
|
return function(target, propertyKey) {
|
|
248
179
|
if (!target.constructor._propertyMetadata) target.constructor._propertyMetadata = /* @__PURE__ */ new Map();
|
|
@@ -250,31 +181,19 @@ function users(options) {
|
|
|
250
181
|
sync(options)(target, propertyKey);
|
|
251
182
|
};
|
|
252
183
|
}
|
|
253
|
-
__name(users, "users");
|
|
254
184
|
function persist() {
|
|
255
185
|
return sync({
|
|
256
186
|
persist: true,
|
|
257
187
|
syncToClient: false
|
|
258
188
|
});
|
|
259
189
|
}
|
|
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
190
|
function load(rootInstance, values, valueIsObject) {
|
|
270
191
|
if (valueIsObject) loadFromObject(rootInstance, values);
|
|
271
192
|
else loadFromPaths(rootInstance, values);
|
|
272
193
|
}
|
|
273
|
-
__name(load, "load");
|
|
274
194
|
function loadFromPaths(rootInstance, values) {
|
|
275
195
|
for (const [path, value] of Object.entries(values)) loadValue(rootInstance, path.split("."), value);
|
|
276
196
|
}
|
|
277
|
-
__name(loadFromPaths, "loadFromPaths");
|
|
278
197
|
function loadFromObject(rootInstance, values, currentPath = "") {
|
|
279
198
|
for (let key in values) {
|
|
280
199
|
const value = values[key];
|
|
@@ -283,7 +202,6 @@ function loadFromObject(rootInstance, values, currentPath = "") {
|
|
|
283
202
|
else loadValue(rootInstance, newPath.split("."), value);
|
|
284
203
|
}
|
|
285
204
|
}
|
|
286
|
-
__name(loadFromObject, "loadFromObject");
|
|
287
205
|
function loadValue(rootInstance, parts, value) {
|
|
288
206
|
let current = rootInstance;
|
|
289
207
|
for (let i = 0; i < parts.length; i++) {
|
|
@@ -307,7 +225,6 @@ function loadValue(rootInstance, parts, value) {
|
|
|
307
225
|
}
|
|
308
226
|
}
|
|
309
227
|
}
|
|
310
|
-
__name(loadValue, "loadValue");
|
|
311
228
|
function getByPath(root, path) {
|
|
312
229
|
const parts = path.split(".");
|
|
313
230
|
let current = root;
|
|
@@ -318,8 +235,7 @@ function getByPath(root, path) {
|
|
|
318
235
|
}
|
|
319
236
|
return current;
|
|
320
237
|
}
|
|
321
|
-
__name(getByPath, "getByPath");
|
|
322
238
|
//#endregion
|
|
323
|
-
export {
|
|
239
|
+
export { id, load, persist, sync, users };
|
|
324
240
|
|
|
325
241
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["isSignal2"],"sources":["../../../../../../../../../../node_modules/.pnpm/@signe+sync@3.1.0_react@19.2.7/node_modules/@signe/sync/dist/index.js"],"sourcesContent":["// src/core.ts\nimport {\n isArraySubject,\n isObjectSubject,\n isSignal,\n isComputed\n} from \"@signe/reactive\";\n\n// src/utils.ts\nfunction isFunction(val) {\n return {}.toString.call(val) === \"[object Function]\";\n}\nfunction isClass(obj) {\n return typeof obj === \"function\" && obj.prototype && obj.prototype.constructor === obj;\n}\nvar isObject = (item) => item && typeof item === \"object\" && !Array.isArray(item) && item !== null;\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}\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\n// src/core.ts\nvar DELETE_TOKEN = \"$delete\";\nvar syncClass = (instance, options = {}) => {\n const cacheSync = /* @__PURE__ */ new Map();\n const cachePersist = /* @__PURE__ */ new Map();\n instance.$valuesChanges = {\n set: (path, value) => {\n cacheSync.set(path, value);\n options.onSync?.(cacheSync);\n },\n setPersist: (path, value) => {\n if (path == \"\") path = \".\";\n cachePersist.set(path, value);\n options.onPersist?.(cachePersist);\n },\n has: (path) => {\n return cacheSync.has(path);\n },\n get: (path) => {\n return cacheSync.get(path);\n }\n };\n createSyncClass(instance);\n};\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}\nvar SNAPSHOT_SKIP = Symbol(\"snapshot-skip\");\nvar serializeSnapshotDeep = (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(\n ([key]) => isInstanceOfClass(value) ? key.startsWith(\"__\") || (idKey ? key === idKey : false) : true\n );\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};\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(\n value,\n key,\n options,\n /* @__PURE__ */ new WeakSet()\n );\n if (serialized !== SNAPSHOT_SKIP) {\n persistObject[key] = serialized;\n }\n }\n }\n return persistObject;\n}\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}\nvar createSyncClass = (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 applyDecoratedSignalMetadata(currentClass);\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 = { ...signalValue };\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)\n 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};\nfunction applyDecoratedSignalMetadata(currentClass) {\n const syncMetadata = currentClass.constructor?._syncMetadata;\n if (!syncMetadata) {\n return;\n }\n for (const [propertyKey, options] of syncMetadata) {\n const signal = currentClass[propertyKey];\n if (!isSignal(signal) || signal.options) {\n continue;\n }\n currentClass[propertyKey] = type(\n signal,\n propertyKey,\n { ...options, skipInitialSync: true },\n currentClass\n );\n }\n}\nvar type = (_signal, path, options = {}, currentInstance) => {\n const { syncToClient = true, persist: persist2 = true, transform, skipInitialSync = false } = options;\n let init = true;\n const handleObjectSubject = (value, propPath) => {\n const newPath = `${propPath}${value.key ? `.${value.key}` : \"\"}`;\n if ([\"add\", \"reset\", \"update\"].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 };\n const handleArraySubject = (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 ([\"add\", \"update\"].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 };\n const savePath = (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(\n propPath,\n transformedValue\n );\n }\n };\n const setupSubscription = (signal, signalPath) => {\n if (!isSignal(signal)) return;\n if (syncToClient && !skipInitialSync && currentInstance.$valuesChanges) {\n const initialValue = signal();\n const transformedInitialValue = transform ? transform(initialValue) : initialValue;\n const initialPath = currentInstance.$path !== void 0 ? `${currentInstance.$path ? `${currentInstance.$path}.` : \"\"}${signalPath}` : signalPath;\n currentInstance.$valuesChanges.set(initialPath, 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 };\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};\n\n// src/decorators.ts\nfunction normalizeSyncOptions(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 { classType, persist: persist2, syncToClient, transform };\n}\nfunction setSyncMetadata(target, propertyKey, options) {\n if (!target.constructor._syncMetadata) {\n target.constructor._syncMetadata = /* @__PURE__ */ new Map();\n }\n target.constructor._syncMetadata.set(propertyKey, options);\n}\nfunction sync(options) {\n const normalizedOptions = normalizeSyncOptions(options);\n return function(target, propertyKey) {\n setSyncMetadata(target, propertyKey, normalizedOptions);\n const privatePropertyKey = `__${propertyKey}`;\n const getter = function() {\n return this[privatePropertyKey];\n };\n const setter = function(newVal) {\n this[privatePropertyKey] = type(\n newVal,\n propertyKey,\n normalizedOptions,\n this\n );\n };\n Object.defineProperty(target, propertyKey, {\n get: getter,\n set: setter,\n enumerable: true,\n configurable: true\n });\n };\n}\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}\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}\nfunction persist() {\n return sync({\n persist: true,\n syncToClient: false\n });\n}\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\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}\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}\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}\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(\n rootInstance,\n parts.slice(0, i).join(\".\")\n );\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}\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}\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 normalizeSyncOptions,\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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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { ReconnectingWebSocket } from "./
|
|
2
|
-
//#region ../../node_modules/.pnpm/partysocket@1.
|
|
1
|
+
import { ReconnectingWebSocket } from "./ws.js";
|
|
2
|
+
//#region ../../node_modules/.pnpm/partysocket@1.2.0_react@19.2.7/node_modules/partysocket/dist/index.js
|
|
3
3
|
var valueIsNotNil = (keyValuePair) => keyValuePair[1] !== null && keyValuePair[1] !== void 0;
|
|
4
4
|
function generateUUID() {
|
|
5
|
-
if (
|
|
6
|
-
let d =
|
|
7
|
-
let d2 =
|
|
5
|
+
if (crypto?.randomUUID) return crypto.randomUUID();
|
|
6
|
+
let d = Date.now();
|
|
7
|
+
let d2 = performance?.now && performance.now() * 1e3 || 0;
|
|
8
8
|
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) {
|
|
9
9
|
let r = Math.random() * 16;
|
|
10
10
|
if (d > 0) {
|
|
@@ -21,12 +21,12 @@ function getPartyInfo(partySocketOptions, defaultProtocol, defaultParams = {}) {
|
|
|
21
21
|
const { host: rawHost, path: rawPath, protocol: rawProtocol, room, party, basePath, prefix, query } = partySocketOptions;
|
|
22
22
|
let host = rawHost.replace(/^(http|https|ws|wss):\/\//, "");
|
|
23
23
|
if (host.endsWith("/")) host = host.slice(0, -1);
|
|
24
|
-
if (rawPath
|
|
24
|
+
if (rawPath?.startsWith("/")) throw new Error("path must not start with a slash");
|
|
25
25
|
const name = party ?? "main";
|
|
26
26
|
const path = rawPath ? `/${rawPath}` : "";
|
|
27
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
28
|
const baseUrl = `${protocol}://${host}/${basePath || `${prefix || "parties"}/${name}/${room}`}${path}`;
|
|
29
|
-
const makeUrl = (
|
|
29
|
+
const makeUrl = (query = {}) => `${baseUrl}?${new URLSearchParams([...Object.entries(defaultParams), ...Object.entries(query).filter(valueIsNotNil)])}`;
|
|
30
30
|
const urlProvider = typeof query === "function" ? async () => makeUrl(await query()) : makeUrl(query);
|
|
31
31
|
return {
|
|
32
32
|
host,
|
|
@@ -39,25 +39,35 @@ function getPartyInfo(partySocketOptions, defaultProtocol, defaultParams = {}) {
|
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
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
42
|
_pk;
|
|
49
43
|
_pkurl;
|
|
50
44
|
name;
|
|
51
45
|
room;
|
|
52
46
|
host;
|
|
53
47
|
path;
|
|
48
|
+
basePath;
|
|
49
|
+
constructor(partySocketOptions) {
|
|
50
|
+
const wsOptions = getWSOptions(partySocketOptions);
|
|
51
|
+
super(wsOptions.urlProvider, wsOptions.protocols, wsOptions.socketOptions);
|
|
52
|
+
this.partySocketOptions = partySocketOptions;
|
|
53
|
+
this.setWSProperties(wsOptions);
|
|
54
|
+
if (!partySocketOptions.startClosed && !this.room && !this.basePath) {
|
|
55
|
+
this.close();
|
|
56
|
+
throw new Error("Either room or basePath must be provided to connect. Use startClosed: true to create a socket and set them via updateProperties before calling reconnect().");
|
|
57
|
+
}
|
|
58
|
+
if (!partySocketOptions.disableNameValidation) {
|
|
59
|
+
if (partySocketOptions.party?.includes("/")) console.warn(`PartySocket: party name "${partySocketOptions.party}" contains forward slash which may cause routing issues. Consider using a name without forward slashes or set disableNameValidation: true to bypass this warning.`);
|
|
60
|
+
if (partySocketOptions.room?.includes("/")) console.warn(`PartySocket: room name "${partySocketOptions.room}" contains forward slash which may cause routing issues. Consider using a name without forward slashes or set disableNameValidation: true to bypass this warning.`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
54
63
|
updateProperties(partySocketOptions) {
|
|
55
64
|
const wsOptions = getWSOptions({
|
|
56
65
|
...this.partySocketOptions,
|
|
57
66
|
...partySocketOptions,
|
|
58
67
|
host: partySocketOptions.host ?? this.host,
|
|
59
68
|
room: partySocketOptions.room ?? this.room,
|
|
60
|
-
path: partySocketOptions.path ?? this.path
|
|
69
|
+
path: partySocketOptions.path ?? this.path,
|
|
70
|
+
basePath: partySocketOptions.basePath ?? this.basePath
|
|
61
71
|
});
|
|
62
72
|
this._url = wsOptions.urlProvider;
|
|
63
73
|
this._protocols = wsOptions.protocols;
|
|
@@ -65,16 +75,18 @@ var PartySocket = class extends ReconnectingWebSocket {
|
|
|
65
75
|
this.setWSProperties(wsOptions);
|
|
66
76
|
}
|
|
67
77
|
setWSProperties(wsOptions) {
|
|
68
|
-
const { _pk, _pkurl, name, room, host, path } = wsOptions;
|
|
78
|
+
const { _pk, _pkurl, name, room, host, path, basePath } = wsOptions;
|
|
69
79
|
this._pk = _pk;
|
|
70
80
|
this._pkurl = _pkurl;
|
|
71
81
|
this.name = name;
|
|
72
82
|
this.room = room;
|
|
73
83
|
this.host = host;
|
|
74
84
|
this.path = path;
|
|
85
|
+
this.basePath = basePath;
|
|
75
86
|
}
|
|
76
87
|
reconnect(code, reason) {
|
|
77
|
-
if (!this.
|
|
88
|
+
if (!this.host) throw new Error("The host must be set before connecting, use `updateProperties` method to set it or pass it to the constructor.");
|
|
89
|
+
if (!this.room && !this.basePath) throw new Error("The room (or basePath) must be set before connecting, use `updateProperties` method to set it or pass it to the constructor.");
|
|
78
90
|
super.reconnect(code, reason);
|
|
79
91
|
}
|
|
80
92
|
get id() {
|
|
@@ -104,6 +116,7 @@ function getWSOptions(partySocketOptions) {
|
|
|
104
116
|
room: party.room,
|
|
105
117
|
host: party.host,
|
|
106
118
|
path: party.path,
|
|
119
|
+
basePath: partySocketOptions.basePath,
|
|
107
120
|
protocols,
|
|
108
121
|
socketOptions,
|
|
109
122
|
urlProvider: party.urlProvider
|
|
@@ -112,4 +125,4 @@ function getWSOptions(partySocketOptions) {
|
|
|
112
125
|
//#endregion
|
|
113
126
|
export { PartySocket };
|
|
114
127
|
|
|
115
|
-
//# sourceMappingURL=
|
|
128
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../../../../../node_modules/.pnpm/partysocket@1.2.0_react@19.2.7/node_modules/partysocket/dist/index.js"],"sourcesContent":["import ReconnectingWebSocket from \"./ws.js\";\n//#region src/index.ts\nconst valueIsNotNil = (keyValuePair) =>\n keyValuePair[1] !== null && keyValuePair[1] !== void 0;\nfunction generateUUID() {\n if (crypto?.randomUUID) return crypto.randomUUID();\n let d = Date.now();\n let d2 = (performance?.now && performance.now() * 1e3) || 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(\"/\")) host = host.slice(0, -1);\n if (rawPath?.startsWith(\"/\"))\n throw new Error(\"path must not start with a slash\");\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 ? defaultProtocol\n : `${defaultProtocol}s`);\n const baseUrl = `${protocol}://${host}/${basePath || `${prefix || \"parties\"}/${name}/${room}`}${path}`;\n const makeUrl = (query = {}) =>\n `${baseUrl}?${new URLSearchParams([...Object.entries(defaultParams), ...Object.entries(query).filter(valueIsNotNil)])}`;\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 _pk;\n _pkurl;\n name;\n room;\n host;\n path;\n basePath;\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 if (!partySocketOptions.startClosed && !this.room && !this.basePath) {\n this.close();\n throw new Error(\n \"Either room or basePath must be provided to connect. Use startClosed: true to create a socket and set them via updateProperties before calling reconnect().\"\n );\n }\n if (!partySocketOptions.disableNameValidation) {\n if (partySocketOptions.party?.includes(\"/\"))\n console.warn(\n `PartySocket: party name \"${partySocketOptions.party}\" contains forward slash which may cause routing issues. Consider using a name without forward slashes or set disableNameValidation: true to bypass this warning.`\n );\n if (partySocketOptions.room?.includes(\"/\"))\n console.warn(\n `PartySocket: room name \"${partySocketOptions.room}\" contains forward slash which may cause routing issues. Consider using a name without forward slashes or set disableNameValidation: true to bypass this warning.`\n );\n }\n }\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 basePath: partySocketOptions.basePath ?? this.basePath\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, basePath } = 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 this.basePath = basePath;\n }\n reconnect(code, reason) {\n if (!this.host)\n throw new Error(\n \"The host must be set before connecting, use `updateProperties` method to set it or pass it to the constructor.\"\n );\n if (!this.room && !this.basePath)\n throw new Error(\n \"The room (or basePath) must be set before connecting, use `updateProperties` method to set it or pass it to the constructor.\"\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 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 return (options.fetch ?? fetch)(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 basePath: partySocketOptions.basePath,\n protocols,\n socketOptions,\n urlProvider: party.urlProvider\n };\n}\n//#endregion\nexport {\n PartySocket,\n PartySocket as default,\n ReconnectingWebSocket as WebSocket\n};\n\n//# sourceMappingURL=index.js.map\n"],"x_google_ignoreList":[0],"mappings":"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"}
|