@dcl/hammurabi-server 1.0.0-17268386187.commit-b609629
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/CLAUDE.md +90 -0
- package/LICENSE +201 -0
- package/README.md +125 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +79 -0
- package/dist/cli.js.map +1 -0
- package/dist/lib/babylon/avatar-rendering-system.d.ts +16 -0
- package/dist/lib/babylon/avatar-rendering-system.d.ts.map +1 -0
- package/dist/lib/babylon/avatar-rendering-system.js +96 -0
- package/dist/lib/babylon/avatar-rendering-system.js.map +1 -0
- package/dist/lib/babylon/avatars/AvatarRenderer.d.ts +40 -0
- package/dist/lib/babylon/avatars/AvatarRenderer.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/AvatarRenderer.js +260 -0
- package/dist/lib/babylon/avatars/AvatarRenderer.js.map +1 -0
- package/dist/lib/babylon/avatars/CharacterController.d.ts +88 -0
- package/dist/lib/babylon/avatars/CharacterController.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/CharacterController.js +463 -0
- package/dist/lib/babylon/avatars/CharacterController.js.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/body.d.ts +4 -0
- package/dist/lib/babylon/avatars/adr-65/body.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/body.js +47 -0
- package/dist/lib/babylon/avatars/adr-65/body.js.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/customizations.d.ts +11 -0
- package/dist/lib/babylon/avatars/adr-65/customizations.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/customizations.js +111 -0
- package/dist/lib/babylon/avatars/adr-65/customizations.js.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/emote.d.ts +9 -0
- package/dist/lib/babylon/avatars/adr-65/emote.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/emote.js +46 -0
- package/dist/lib/babylon/avatars/adr-65/emote.js.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/loader.d.ts +8 -0
- package/dist/lib/babylon/avatars/adr-65/loader.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/loader.js +54 -0
- package/dist/lib/babylon/avatars/adr-65/loader.js.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/representation.d.ts +12 -0
- package/dist/lib/babylon/avatars/adr-65/representation.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/representation.js +77 -0
- package/dist/lib/babylon/avatars/adr-65/representation.js.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/slots.d.ts +5 -0
- package/dist/lib/babylon/avatars/adr-65/slots.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/slots.js +62 -0
- package/dist/lib/babylon/avatars/adr-65/slots.js.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/types.d.ts +17 -0
- package/dist/lib/babylon/avatars/adr-65/types.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/types.js +3 -0
- package/dist/lib/babylon/avatars/adr-65/types.js.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/utils.d.ts +8 -0
- package/dist/lib/babylon/avatars/adr-65/utils.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/utils.js +29 -0
- package/dist/lib/babylon/avatars/adr-65/utils.js.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/wearable.d.ts +7 -0
- package/dist/lib/babylon/avatars/adr-65/wearable.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/wearable.js +64 -0
- package/dist/lib/babylon/avatars/adr-65/wearable.js.map +1 -0
- package/dist/lib/babylon/avatars/avatar-asset-manager.d.ts +12 -0
- package/dist/lib/babylon/avatars/avatar-asset-manager.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/avatar-asset-manager.js +31 -0
- package/dist/lib/babylon/avatars/avatar-asset-manager.js.map +1 -0
- package/dist/lib/babylon/avatars/loader.d.ts +6 -0
- package/dist/lib/babylon/avatars/loader.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/loader.js +108 -0
- package/dist/lib/babylon/avatars/loader.js.map +1 -0
- package/dist/lib/babylon/avatars/urn.d.ts +2 -0
- package/dist/lib/babylon/avatars/urn.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/urn.js +9 -0
- package/dist/lib/babylon/avatars/urn.js.map +1 -0
- package/dist/lib/babylon/index.d.ts +6 -0
- package/dist/lib/babylon/index.d.ts.map +1 -0
- package/dist/lib/babylon/index.js +85 -0
- package/dist/lib/babylon/index.js.map +1 -0
- package/dist/lib/babylon/input.d.ts +35 -0
- package/dist/lib/babylon/input.d.ts.map +1 -0
- package/dist/lib/babylon/input.js +137 -0
- package/dist/lib/babylon/input.js.map +1 -0
- package/dist/lib/babylon/scene/AssetManager.d.ts +19 -0
- package/dist/lib/babylon/scene/AssetManager.d.ts.map +1 -0
- package/dist/lib/babylon/scene/AssetManager.js +271 -0
- package/dist/lib/babylon/scene/AssetManager.js.map +1 -0
- package/dist/lib/babylon/scene/BabylonEntity.d.ts +84 -0
- package/dist/lib/babylon/scene/BabylonEntity.d.ts.map +1 -0
- package/dist/lib/babylon/scene/BabylonEntity.js +174 -0
- package/dist/lib/babylon/scene/BabylonEntity.js.map +1 -0
- package/dist/lib/babylon/scene/connect-context-rpc.d.ts +8 -0
- package/dist/lib/babylon/scene/connect-context-rpc.d.ts.map +1 -0
- package/dist/lib/babylon/scene/connect-context-rpc.js +210 -0
- package/dist/lib/babylon/scene/connect-context-rpc.js.map +1 -0
- package/dist/lib/babylon/scene/coordinates.d.ts +5 -0
- package/dist/lib/babylon/scene/coordinates.d.ts.map +1 -0
- package/dist/lib/babylon/scene/coordinates.js +17 -0
- package/dist/lib/babylon/scene/coordinates.js.map +1 -0
- package/dist/lib/babylon/scene/hot-reload.d.ts +9 -0
- package/dist/lib/babylon/scene/hot-reload.d.ts.map +1 -0
- package/dist/lib/babylon/scene/hot-reload.js +65 -0
- package/dist/lib/babylon/scene/hot-reload.js.map +1 -0
- package/dist/lib/babylon/scene/load.d.ts +54 -0
- package/dist/lib/babylon/scene/load.d.ts.map +1 -0
- package/dist/lib/babylon/scene/load.js +154 -0
- package/dist/lib/babylon/scene/load.js.map +1 -0
- package/dist/lib/babylon/scene/logic/apply-animations.d.ts +3 -0
- package/dist/lib/babylon/scene/logic/apply-animations.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/apply-animations.js +50 -0
- package/dist/lib/babylon/scene/logic/apply-animations.js.map +1 -0
- package/dist/lib/babylon/scene/logic/billboards.d.ts +3 -0
- package/dist/lib/babylon/scene/logic/billboards.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/billboards.js +12 -0
- package/dist/lib/babylon/scene/logic/billboards.js.map +1 -0
- package/dist/lib/babylon/scene/logic/camera-follows-player.d.ts +7 -0
- package/dist/lib/babylon/scene/logic/camera-follows-player.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/camera-follows-player.js +35 -0
- package/dist/lib/babylon/scene/logic/camera-follows-player.js.map +1 -0
- package/dist/lib/babylon/scene/logic/colliders.d.ts +9 -0
- package/dist/lib/babylon/scene/logic/colliders.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/colliders.js +79 -0
- package/dist/lib/babylon/scene/logic/colliders.js.map +1 -0
- package/dist/lib/babylon/scene/logic/cyclic-transform.d.ts +12 -0
- package/dist/lib/babylon/scene/logic/cyclic-transform.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/cyclic-transform.js +67 -0
- package/dist/lib/babylon/scene/logic/cyclic-transform.js.map +1 -0
- package/dist/lib/babylon/scene/logic/delayed-interpolation.d.ts +27 -0
- package/dist/lib/babylon/scene/logic/delayed-interpolation.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/delayed-interpolation.js +49 -0
- package/dist/lib/babylon/scene/logic/delayed-interpolation.js.map +1 -0
- package/dist/lib/babylon/scene/logic/easings.d.ts +7 -0
- package/dist/lib/babylon/scene/logic/easings.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/easings.js +100 -0
- package/dist/lib/babylon/scene/logic/easings.js.map +1 -0
- package/dist/lib/babylon/scene/logic/hide-camera-obstuction-system.d.ts +5 -0
- package/dist/lib/babylon/scene/logic/hide-camera-obstuction-system.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/hide-camera-obstuction-system.js +145 -0
- package/dist/lib/babylon/scene/logic/hide-camera-obstuction-system.js.map +1 -0
- package/dist/lib/babylon/scene/logic/local-avatar-scene.d.ts +10 -0
- package/dist/lib/babylon/scene/logic/local-avatar-scene.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/local-avatar-scene.js +50 -0
- package/dist/lib/babylon/scene/logic/local-avatar-scene.js.map +1 -0
- package/dist/lib/babylon/scene/logic/pointer-events.d.ts +12 -0
- package/dist/lib/babylon/scene/logic/pointer-events.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/pointer-events.js +199 -0
- package/dist/lib/babylon/scene/logic/pointer-events.js.map +1 -0
- package/dist/lib/babylon/scene/logic/raycasts.d.ts +21 -0
- package/dist/lib/babylon/scene/logic/raycasts.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/raycasts.js +142 -0
- package/dist/lib/babylon/scene/logic/raycasts.js.map +1 -0
- package/dist/lib/babylon/scene/logic/static-entities.d.ts +18 -0
- package/dist/lib/babylon/scene/logic/static-entities.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/static-entities.js +64 -0
- package/dist/lib/babylon/scene/logic/static-entities.js.map +1 -0
- package/dist/lib/babylon/scene/nodejs-runtime.d.ts +4 -0
- package/dist/lib/babylon/scene/nodejs-runtime.d.ts.map +1 -0
- package/dist/lib/babylon/scene/nodejs-runtime.js +100 -0
- package/dist/lib/babylon/scene/nodejs-runtime.js.map +1 -0
- package/dist/lib/babylon/scene/scene-context.d.ts +116 -0
- package/dist/lib/babylon/scene/scene-context.d.ts.map +1 -0
- package/dist/lib/babylon/scene/scene-context.js +492 -0
- package/dist/lib/babylon/scene/scene-context.js.map +1 -0
- package/dist/lib/babylon/scene/scene-culling.d.ts +6 -0
- package/dist/lib/babylon/scene/scene-culling.d.ts.map +1 -0
- package/dist/lib/babylon/scene/scene-culling.js +23 -0
- package/dist/lib/babylon/scene/scene-culling.js.map +1 -0
- package/dist/lib/babylon/scene/update-scheduler.d.ts +7 -0
- package/dist/lib/babylon/scene/update-scheduler.d.ts.map +1 -0
- package/dist/lib/babylon/scene/update-scheduler.js +40 -0
- package/dist/lib/babylon/scene/update-scheduler.js.map +1 -0
- package/dist/lib/babylon/time-based-animation.d.ts +13 -0
- package/dist/lib/babylon/time-based-animation.d.ts.map +1 -0
- package/dist/lib/babylon/time-based-animation.js +35 -0
- package/dist/lib/babylon/time-based-animation.js.map +1 -0
- package/dist/lib/babylon/visual/ambientLights.d.ts +6 -0
- package/dist/lib/babylon/visual/ambientLights.d.ts.map +1 -0
- package/dist/lib/babylon/visual/ambientLights.js +65 -0
- package/dist/lib/babylon/visual/ambientLights.js.map +1 -0
- package/dist/lib/babylon/visual/glowLayer.d.ts +6 -0
- package/dist/lib/babylon/visual/glowLayer.d.ts.map +1 -0
- package/dist/lib/babylon/visual/glowLayer.js +59 -0
- package/dist/lib/babylon/visual/glowLayer.js.map +1 -0
- package/dist/lib/babylon/visual/parcelOutline.d.ts +7 -0
- package/dist/lib/babylon/visual/parcelOutline.d.ts.map +1 -0
- package/dist/lib/babylon/visual/parcelOutline.js +88 -0
- package/dist/lib/babylon/visual/parcelOutline.js.map +1 -0
- package/dist/lib/babylon/visual/reticle.d.ts +3 -0
- package/dist/lib/babylon/visual/reticle.d.ts.map +1 -0
- package/dist/lib/babylon/visual/reticle.js +60 -0
- package/dist/lib/babylon/visual/reticle.js.map +1 -0
- package/dist/lib/babylon/visual/ui.d.ts +8 -0
- package/dist/lib/babylon/visual/ui.d.ts.map +1 -0
- package/dist/lib/babylon/visual/ui.js +54 -0
- package/dist/lib/babylon/visual/ui.js.map +1 -0
- package/dist/lib/common-runtime/game-loop.d.ts +4 -0
- package/dist/lib/common-runtime/game-loop.d.ts.map +1 -0
- package/dist/lib/common-runtime/game-loop.js +31 -0
- package/dist/lib/common-runtime/game-loop.js.map +1 -0
- package/dist/lib/common-runtime/modules.d.ts +244 -0
- package/dist/lib/common-runtime/modules.d.ts.map +1 -0
- package/dist/lib/common-runtime/modules.js +74 -0
- package/dist/lib/common-runtime/modules.js.map +1 -0
- package/dist/lib/common-runtime/startup.d.ts +8 -0
- package/dist/lib/common-runtime/startup.d.ts.map +1 -0
- package/dist/lib/common-runtime/startup.js +45 -0
- package/dist/lib/common-runtime/startup.js.map +1 -0
- package/dist/lib/common-runtime/types.d.ts +15 -0
- package/dist/lib/common-runtime/types.d.ts.map +1 -0
- package/dist/lib/common-runtime/types.js +7 -0
- package/dist/lib/common-runtime/types.js.map +1 -0
- package/dist/lib/decentraland/ByteBuffer/index.d.ts +75 -0
- package/dist/lib/decentraland/ByteBuffer/index.d.ts.map +1 -0
- package/dist/lib/decentraland/ByteBuffer/index.js +279 -0
- package/dist/lib/decentraland/ByteBuffer/index.js.map +1 -0
- package/dist/lib/decentraland/ByteBuffer/types.d.ts +109 -0
- package/dist/lib/decentraland/ByteBuffer/types.d.ts.map +1 -0
- package/dist/lib/decentraland/ByteBuffer/types.js +3 -0
- package/dist/lib/decentraland/ByteBuffer/types.js.map +1 -0
- package/dist/lib/decentraland/communications/CommsTransportWrapper.d.ts +45 -0
- package/dist/lib/decentraland/communications/CommsTransportWrapper.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/CommsTransportWrapper.js +174 -0
- package/dist/lib/decentraland/communications/CommsTransportWrapper.js.map +1 -0
- package/dist/lib/decentraland/communications/avatar-communication-system.d.ts +18 -0
- package/dist/lib/decentraland/communications/avatar-communication-system.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/avatar-communication-system.js +203 -0
- package/dist/lib/decentraland/communications/avatar-communication-system.js.map +1 -0
- package/dist/lib/decentraland/communications/connect-adapter.d.ts +5 -0
- package/dist/lib/decentraland/communications/connect-adapter.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/connect-adapter.js +110 -0
- package/dist/lib/decentraland/communications/connect-adapter.js.map +1 -0
- package/dist/lib/decentraland/communications/connect-transport.d.ts +5 -0
- package/dist/lib/decentraland/communications/connect-transport.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/connect-transport.js +32 -0
- package/dist/lib/decentraland/communications/connect-transport.js.map +1 -0
- package/dist/lib/decentraland/communications/networked-profile-system.d.ts +10 -0
- package/dist/lib/decentraland/communications/networked-profile-system.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/networked-profile-system.js +73 -0
- package/dist/lib/decentraland/communications/networked-profile-system.js.map +1 -0
- package/dist/lib/decentraland/communications/player-entity-manager.d.ts +55 -0
- package/dist/lib/decentraland/communications/player-entity-manager.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/player-entity-manager.js +167 -0
- package/dist/lib/decentraland/communications/player-entity-manager.js.map +1 -0
- package/dist/lib/decentraland/communications/position-report-system.d.ts +8 -0
- package/dist/lib/decentraland/communications/position-report-system.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/position-report-system.js +51 -0
- package/dist/lib/decentraland/communications/position-report-system.js.map +1 -0
- package/dist/lib/decentraland/communications/realm-communications-system.d.ts +17 -0
- package/dist/lib/decentraland/communications/realm-communications-system.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/realm-communications-system.js +111 -0
- package/dist/lib/decentraland/communications/realm-communications-system.js.map +1 -0
- package/dist/lib/decentraland/communications/scene-comms.d.ts +9 -0
- package/dist/lib/decentraland/communications/scene-comms.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/scene-comms.js +20 -0
- package/dist/lib/decentraland/communications/scene-comms.js.map +1 -0
- package/dist/lib/decentraland/communications/transports/livekit.d.ts +27 -0
- package/dist/lib/decentraland/communications/transports/livekit.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/transports/livekit.js +135 -0
- package/dist/lib/decentraland/communications/transports/livekit.js.map +1 -0
- package/dist/lib/decentraland/communications/transports/ws-room.d.ts +26 -0
- package/dist/lib/decentraland/communications/transports/ws-room.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/transports/ws-room.js +235 -0
- package/dist/lib/decentraland/communications/transports/ws-room.js.map +1 -0
- package/dist/lib/decentraland/communications/types.d.ts +76 -0
- package/dist/lib/decentraland/communications/types.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/types.js +6 -0
- package/dist/lib/decentraland/communications/types.js.map +1 -0
- package/dist/lib/decentraland/communications/ws-async-channel.d.ts +6 -0
- package/dist/lib/decentraland/communications/ws-async-channel.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/ws-async-channel.js +52 -0
- package/dist/lib/decentraland/communications/ws-async-channel.js.map +1 -0
- package/dist/lib/decentraland/crdt-internal/components.d.ts +156 -0
- package/dist/lib/decentraland/crdt-internal/components.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-internal/components.js +8 -0
- package/dist/lib/decentraland/crdt-internal/components.js.map +1 -0
- package/dist/lib/decentraland/crdt-internal/conflict-resolution.d.ts +45 -0
- package/dist/lib/decentraland/crdt-internal/conflict-resolution.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-internal/conflict-resolution.js +49 -0
- package/dist/lib/decentraland/crdt-internal/conflict-resolution.js.map +1 -0
- package/dist/lib/decentraland/crdt-internal/dataCompare.d.ts +6 -0
- package/dist/lib/decentraland/crdt-internal/dataCompare.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-internal/dataCompare.js +34 -0
- package/dist/lib/decentraland/crdt-internal/dataCompare.js.map +1 -0
- package/dist/lib/decentraland/crdt-internal/generational-index-pool.d.ts +22 -0
- package/dist/lib/decentraland/crdt-internal/generational-index-pool.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-internal/generational-index-pool.js +91 -0
- package/dist/lib/decentraland/crdt-internal/generational-index-pool.js.map +1 -0
- package/dist/lib/decentraland/crdt-internal/grow-only-set.d.ts +10 -0
- package/dist/lib/decentraland/crdt-internal/grow-only-set.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-internal/grow-only-set.js +129 -0
- package/dist/lib/decentraland/crdt-internal/grow-only-set.js.map +1 -0
- package/dist/lib/decentraland/crdt-internal/last-write-win-element-set.d.ts +11 -0
- package/dist/lib/decentraland/crdt-internal/last-write-win-element-set.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-internal/last-write-win-element-set.js +224 -0
- package/dist/lib/decentraland/crdt-internal/last-write-win-element-set.js.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/appendValue.d.ts +15 -0
- package/dist/lib/decentraland/crdt-wire-protocol/appendValue.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/appendValue.js +50 -0
- package/dist/lib/decentraland/crdt-wire-protocol/appendValue.js.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/crdtMessageProtocol.d.ts +31 -0
- package/dist/lib/decentraland/crdt-wire-protocol/crdtMessageProtocol.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/crdtMessageProtocol.js +72 -0
- package/dist/lib/decentraland/crdt-wire-protocol/crdtMessageProtocol.js.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/deleteComponent.d.ts +14 -0
- package/dist/lib/decentraland/crdt-wire-protocol/deleteComponent.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/deleteComponent.js +44 -0
- package/dist/lib/decentraland/crdt-wire-protocol/deleteComponent.js.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/deleteEntity.d.ts +11 -0
- package/dist/lib/decentraland/crdt-wire-protocol/deleteEntity.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/deleteEntity.js +35 -0
- package/dist/lib/decentraland/crdt-wire-protocol/deleteEntity.js.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/index.d.ts +8 -0
- package/dist/lib/decentraland/crdt-wire-protocol/index.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/index.js +24 -0
- package/dist/lib/decentraland/crdt-wire-protocol/index.js.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/message.d.ts +17 -0
- package/dist/lib/decentraland/crdt-wire-protocol/message.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/message.js +49 -0
- package/dist/lib/decentraland/crdt-wire-protocol/message.js.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/prettyPrint.d.ts +4 -0
- package/dist/lib/decentraland/crdt-wire-protocol/prettyPrint.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/prettyPrint.js +26 -0
- package/dist/lib/decentraland/crdt-wire-protocol/prettyPrint.js.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/putComponent.d.ts +15 -0
- package/dist/lib/decentraland/crdt-wire-protocol/putComponent.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/putComponent.js +48 -0
- package/dist/lib/decentraland/crdt-wire-protocol/putComponent.js.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/types.d.ts +80 -0
- package/dist/lib/decentraland/crdt-wire-protocol/types.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/types.js +15 -0
- package/dist/lib/decentraland/crdt-wire-protocol/types.js.map +1 -0
- package/dist/lib/decentraland/identifiers.d.ts +6 -0
- package/dist/lib/decentraland/identifiers.d.ts.map +1 -0
- package/dist/lib/decentraland/identifiers.js +22 -0
- package/dist/lib/decentraland/identifiers.js.map +1 -0
- package/dist/lib/decentraland/identity/avatar.d.ts +4 -0
- package/dist/lib/decentraland/identity/avatar.d.ts.map +1 -0
- package/dist/lib/decentraland/identity/avatar.js +57 -0
- package/dist/lib/decentraland/identity/avatar.js.map +1 -0
- package/dist/lib/decentraland/identity/login.d.ts +8 -0
- package/dist/lib/decentraland/identity/login.d.ts.map +1 -0
- package/dist/lib/decentraland/identity/login.js +121 -0
- package/dist/lib/decentraland/identity/login.js.map +1 -0
- package/dist/lib/decentraland/identity/signed-fetch.d.ts +17 -0
- package/dist/lib/decentraland/identity/signed-fetch.d.ts.map +1 -0
- package/dist/lib/decentraland/identity/signed-fetch.js +47 -0
- package/dist/lib/decentraland/identity/signed-fetch.js.map +1 -0
- package/dist/lib/decentraland/identity/types.d.ts +11 -0
- package/dist/lib/decentraland/identity/types.d.ts.map +1 -0
- package/dist/lib/decentraland/identity/types.js +3 -0
- package/dist/lib/decentraland/identity/types.js.map +1 -0
- package/dist/lib/decentraland/positions.d.ts +15 -0
- package/dist/lib/decentraland/positions.d.ts.map +1 -0
- package/dist/lib/decentraland/positions.js +40 -0
- package/dist/lib/decentraland/positions.js.map +1 -0
- package/dist/lib/decentraland/realm/resolution.d.ts +2 -0
- package/dist/lib/decentraland/realm/resolution.d.ts.map +1 -0
- package/dist/lib/decentraland/realm/resolution.js +39 -0
- package/dist/lib/decentraland/realm/resolution.js.map +1 -0
- package/dist/lib/decentraland/scene/content-server-entity.d.ts +34 -0
- package/dist/lib/decentraland/scene/content-server-entity.d.ts.map +1 -0
- package/dist/lib/decentraland/scene/content-server-entity.js +22 -0
- package/dist/lib/decentraland/scene/content-server-entity.js.map +1 -0
- package/dist/lib/decentraland/scene/spawn-points.d.ts +16 -0
- package/dist/lib/decentraland/scene/spawn-points.d.ts.map +1 -0
- package/dist/lib/decentraland/scene/spawn-points.js +78 -0
- package/dist/lib/decentraland/scene/spawn-points.js.map +1 -0
- package/dist/lib/decentraland/scene/types.d.ts +38 -0
- package/dist/lib/decentraland/scene/types.d.ts.map +1 -0
- package/dist/lib/decentraland/scene/types.js +3 -0
- package/dist/lib/decentraland/scene/types.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/animator-component.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/animator-component.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/animator-component.js +12 -0
- package/dist/lib/decentraland/sdk-components/animator-component.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/avatar-base.d.ts +5 -0
- package/dist/lib/decentraland/sdk-components/avatar-base.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/avatar-base.js +40 -0
- package/dist/lib/decentraland/sdk-components/avatar-base.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/avatar-customizations.d.ts +5 -0
- package/dist/lib/decentraland/sdk-components/avatar-customizations.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/avatar-customizations.js +9 -0
- package/dist/lib/decentraland/sdk-components/avatar-customizations.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/avatar-shape.d.ts +5 -0
- package/dist/lib/decentraland/sdk-components/avatar-shape.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/avatar-shape.js +33 -0
- package/dist/lib/decentraland/sdk-components/avatar-shape.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/billboard-component.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/billboard-component.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/billboard-component.js +15 -0
- package/dist/lib/decentraland/sdk-components/billboard-component.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/delayed-interpolation.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/delayed-interpolation.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/delayed-interpolation.js +15 -0
- package/dist/lib/decentraland/sdk-components/delayed-interpolation.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/engine-info.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/engine-info.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/engine-info.js +7 -0
- package/dist/lib/decentraland/sdk-components/engine-info.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/gltf-component.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/gltf-component.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/gltf-component.js +114 -0
- package/dist/lib/decentraland/sdk-components/gltf-component.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/gltf-loading-state.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/gltf-loading-state.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/gltf-loading-state.js +7 -0
- package/dist/lib/decentraland/sdk-components/gltf-loading-state.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/material-component.d.ts +5 -0
- package/dist/lib/decentraland/sdk-components/material-component.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/material-component.js +92 -0
- package/dist/lib/decentraland/sdk-components/material-component.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/mesh-collider-component.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/mesh-collider-component.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/mesh-collider-component.js +37 -0
- package/dist/lib/decentraland/sdk-components/mesh-collider-component.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/mesh-renderer-component.d.ts +5 -0
- package/dist/lib/decentraland/sdk-components/mesh-renderer-component.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/mesh-renderer-component.js +111 -0
- package/dist/lib/decentraland/sdk-components/mesh-renderer-component.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/pb-based-component-helper.d.ts +10 -0
- package/dist/lib/decentraland/sdk-components/pb-based-component-helper.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/pb-based-component-helper.js +23 -0
- package/dist/lib/decentraland/sdk-components/pb-based-component-helper.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/player-identity-data.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/player-identity-data.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/player-identity-data.js +7 -0
- package/dist/lib/decentraland/sdk-components/player-identity-data.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/pointer-events-result.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/pointer-events-result.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/pointer-events-result.js +7 -0
- package/dist/lib/decentraland/sdk-components/pointer-events-result.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/pointer-events.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/pointer-events.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/pointer-events.js +15 -0
- package/dist/lib/decentraland/sdk-components/pointer-events.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/raycast-component.d.ts +5 -0
- package/dist/lib/decentraland/sdk-components/raycast-component.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/raycast-component.js +66 -0
- package/dist/lib/decentraland/sdk-components/raycast-component.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/transform-component.d.ts +13 -0
- package/dist/lib/decentraland/sdk-components/transform-component.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/transform-component.js +84 -0
- package/dist/lib/decentraland/sdk-components/transform-component.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/tween.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/tween.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/tween.js +15 -0
- package/dist/lib/decentraland/sdk-components/tween.js.map +1 -0
- package/dist/lib/decentraland/state.d.ts +24 -0
- package/dist/lib/decentraland/state.d.ts.map +1 -0
- package/dist/lib/decentraland/state.js +16 -0
- package/dist/lib/decentraland/state.js.map +1 -0
- package/dist/lib/decentraland/system.d.ts +7 -0
- package/dist/lib/decentraland/system.d.ts.map +1 -0
- package/dist/lib/decentraland/system.js +13 -0
- package/dist/lib/decentraland/system.js.map +1 -0
- package/dist/lib/decentraland/types.d.ts +9 -0
- package/dist/lib/decentraland/types.d.ts.map +1 -0
- package/dist/lib/decentraland/types.js +3 -0
- package/dist/lib/decentraland/types.js.map +1 -0
- package/dist/lib/decentraland/virtual-scene.d.ts +12 -0
- package/dist/lib/decentraland/virtual-scene.d.ts.map +1 -0
- package/dist/lib/decentraland/virtual-scene.js +3 -0
- package/dist/lib/decentraland/virtual-scene.js.map +1 -0
- package/dist/lib/engine-main.d.ts +8 -0
- package/dist/lib/engine-main.d.ts.map +1 -0
- package/dist/lib/engine-main.js +103 -0
- package/dist/lib/engine-main.js.map +1 -0
- package/dist/lib/misc/atom.d.ts +13 -0
- package/dist/lib/misc/atom.d.ts.map +1 -0
- package/dist/lib/misc/atom.js +66 -0
- package/dist/lib/misc/atom.js.map +1 -0
- package/dist/lib/misc/bit-operations.d.ts +3 -0
- package/dist/lib/misc/bit-operations.d.ts.map +1 -0
- package/dist/lib/misc/bit-operations.js +14 -0
- package/dist/lib/misc/bit-operations.js.map +1 -0
- package/dist/lib/misc/flat-fetch.d.ts +16 -0
- package/dist/lib/misc/flat-fetch.d.ts.map +1 -0
- package/dist/lib/misc/flat-fetch.js +26 -0
- package/dist/lib/misc/flat-fetch.js.map +1 -0
- package/dist/lib/misc/json.d.ts +3 -0
- package/dist/lib/misc/json.d.ts.map +1 -0
- package/dist/lib/misc/json.js +24 -0
- package/dist/lib/misc/json.js.map +1 -0
- package/dist/lib/misc/logger.d.ts +6 -0
- package/dist/lib/misc/logger.d.ts.map +1 -0
- package/dist/lib/misc/logger.js +24 -0
- package/dist/lib/misc/logger.js.map +1 -0
- package/dist/lib/misc/memoize.d.ts +2 -0
- package/dist/lib/misc/memoize.d.ts.map +1 -0
- package/dist/lib/misc/memoize.js +16 -0
- package/dist/lib/misc/memoize.js.map +1 -0
- package/dist/lib/misc/promises.d.ts +3 -0
- package/dist/lib/misc/promises.d.ts.map +1 -0
- package/dist/lib/misc/promises.js +14 -0
- package/dist/lib/misc/promises.js.map +1 -0
- package/dist/lib/polyfills/xmlhttprequest.d.ts +6 -0
- package/dist/lib/polyfills/xmlhttprequest.d.ts.map +1 -0
- package/dist/lib/polyfills/xmlhttprequest.js +127 -0
- package/dist/lib/polyfills/xmlhttprequest.js.map +1 -0
- package/dist/lib/quick-js/convert-handles.d.ts +14 -0
- package/dist/lib/quick-js/convert-handles.d.ts.map +1 -0
- package/dist/lib/quick-js/convert-handles.js +83 -0
- package/dist/lib/quick-js/convert-handles.js.map +1 -0
- package/dist/lib/quick-js/index.d.ts +12 -0
- package/dist/lib/quick-js/index.d.ts.map +1 -0
- package/dist/lib/quick-js/index.js +159 -0
- package/dist/lib/quick-js/index.js.map +1 -0
- package/dist/lib/quick-js/rpc-scene-runtime.d.ts +13 -0
- package/dist/lib/quick-js/rpc-scene-runtime.d.ts.map +1 -0
- package/dist/lib/quick-js/rpc-scene-runtime.js +32 -0
- package/dist/lib/quick-js/rpc-scene-runtime.js.map +1 -0
- package/dist/lib/quick-js/types.d.ts +35 -0
- package/dist/lib/quick-js/types.d.ts.map +1 -0
- package/dist/lib/quick-js/types.js +3 -0
- package/dist/lib/quick-js/types.js.map +1 -0
- package/dist/lib/web-worker-runtime/context.d.ts +12 -0
- package/dist/lib/web-worker-runtime/context.d.ts.map +1 -0
- package/dist/lib/web-worker-runtime/context.js +97 -0
- package/dist/lib/web-worker-runtime/context.js.map +1 -0
- package/dist/lib/web-worker-runtime/sandbox.d.ts +9 -0
- package/dist/lib/web-worker-runtime/sandbox.d.ts.map +1 -0
- package/dist/lib/web-worker-runtime/sandbox.js +98 -0
- package/dist/lib/web-worker-runtime/sandbox.js.map +1 -0
- package/dist/lib/web-worker-runtime/web-worker-scene-runtime.d.ts +13 -0
- package/dist/lib/web-worker-runtime/web-worker-scene-runtime.d.ts.map +1 -0
- package/dist/lib/web-worker-runtime/web-worker-scene-runtime.js +32 -0
- package/dist/lib/web-worker-runtime/web-worker-scene-runtime.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.WebSocketAdapter = void 0;
|
|
30
|
+
const fp_future_1 = require("fp-future");
|
|
31
|
+
const ws_1 = require("ws");
|
|
32
|
+
const rfc5 = __importStar(require("@dcl/protocol/out-js/decentraland/kernel/comms/rfc5/ws_comms.gen"));
|
|
33
|
+
const minimal_1 = require("protobufjs/minimal");
|
|
34
|
+
const crypto_1 = require("@dcl/crypto");
|
|
35
|
+
const mitt_1 = __importDefault(require("mitt"));
|
|
36
|
+
const ws_async_channel_1 = require("../ws-async-channel");
|
|
37
|
+
// shared writer to leverage pools
|
|
38
|
+
const writer = new minimal_1.Writer();
|
|
39
|
+
function craftMessage(packet) {
|
|
40
|
+
writer.reset();
|
|
41
|
+
rfc5.WsPacket.encode(packet, writer);
|
|
42
|
+
return writer.finish();
|
|
43
|
+
}
|
|
44
|
+
class WebSocketAdapter {
|
|
45
|
+
get connectedPromise() {
|
|
46
|
+
return this.connected;
|
|
47
|
+
}
|
|
48
|
+
constructor(url, identity) {
|
|
49
|
+
this.url = url;
|
|
50
|
+
this.identity = identity;
|
|
51
|
+
this.alias = null;
|
|
52
|
+
this.events = (0, mitt_1.default)();
|
|
53
|
+
this.connected = (0, fp_future_1.future)();
|
|
54
|
+
this.peersToAddress = new Map();
|
|
55
|
+
this.ws = null;
|
|
56
|
+
}
|
|
57
|
+
setVoicePosition(_address, _position) {
|
|
58
|
+
}
|
|
59
|
+
async connect() {
|
|
60
|
+
if (this.ws)
|
|
61
|
+
throw new Error('Cannot call connect twice per IBrokerTransport');
|
|
62
|
+
const ws = new ws_1.WebSocket(this.url, ['rfc5', 'rfc4']);
|
|
63
|
+
const connected = (0, fp_future_1.future)();
|
|
64
|
+
ws.binaryType = 'arraybuffer';
|
|
65
|
+
ws.onopen = () => connected.resolve();
|
|
66
|
+
ws.onerror = (event) => {
|
|
67
|
+
console.error('socket error', event);
|
|
68
|
+
this.disconnect().catch(console.error);
|
|
69
|
+
connected.reject(event);
|
|
70
|
+
};
|
|
71
|
+
ws.onclose = () => {
|
|
72
|
+
this.disconnect().catch(console.error);
|
|
73
|
+
connected.reject(new Error('Socket closed'));
|
|
74
|
+
};
|
|
75
|
+
const channel = (0, ws_async_channel_1.wsAsAsyncChannel)(ws, rfc5.WsPacket.decode);
|
|
76
|
+
try {
|
|
77
|
+
await connected;
|
|
78
|
+
console.log(`Comms connected! ${this.url}`);
|
|
79
|
+
{
|
|
80
|
+
// phase 0, identify ourselves
|
|
81
|
+
const identificationMessage = craftMessage({
|
|
82
|
+
message: {
|
|
83
|
+
$case: 'peerIdentification',
|
|
84
|
+
peerIdentification: {
|
|
85
|
+
address: this.identity.address
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
ws.send(identificationMessage);
|
|
90
|
+
}
|
|
91
|
+
{
|
|
92
|
+
// phase 1, respond to challenge
|
|
93
|
+
const { message } = await channel.yield(1000, 'Error waiting for remote challenge');
|
|
94
|
+
if (!message) {
|
|
95
|
+
throw new Error('Protocol error: empty message');
|
|
96
|
+
}
|
|
97
|
+
switch (message.$case) {
|
|
98
|
+
case 'welcomeMessage': {
|
|
99
|
+
this.handleWelcomeMessage(message.welcomeMessage, ws);
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
case 'challengeMessage': {
|
|
103
|
+
const authChainJson = JSON.stringify(crypto_1.Authenticator.signPayload(this.identity.authChain, message.challengeMessage.challengeToSign));
|
|
104
|
+
ws.send(craftMessage({
|
|
105
|
+
message: {
|
|
106
|
+
$case: 'signedChallengeForServer',
|
|
107
|
+
signedChallengeForServer: { authChainJson }
|
|
108
|
+
}
|
|
109
|
+
}));
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
case 'peerKicked': {
|
|
113
|
+
const { peerKicked } = message;
|
|
114
|
+
// notifyStatusThroughChat(peerKicked.reason)
|
|
115
|
+
await this.disconnect(Error(message.peerKicked.reason));
|
|
116
|
+
}
|
|
117
|
+
default: {
|
|
118
|
+
// only welcomeMessage and challengeMessage are valid options for this phase of the protocol
|
|
119
|
+
throw new Error('Protocol error: server did not provide a challenge');
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
{
|
|
124
|
+
// phase 2, we are in
|
|
125
|
+
const { message } = await channel.yield(1000, 'Error waiting for welcome message');
|
|
126
|
+
if (!message || message.$case !== 'welcomeMessage')
|
|
127
|
+
throw new Error('Protocol error: server did not send a welcomeMessage');
|
|
128
|
+
this.handleWelcomeMessage(message.welcomeMessage, ws);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
this.connected.reject(err);
|
|
133
|
+
// close the WebSocket on error
|
|
134
|
+
if (ws.readyState === ws.OPEN)
|
|
135
|
+
ws.close();
|
|
136
|
+
// and bubble up the error
|
|
137
|
+
throw err;
|
|
138
|
+
}
|
|
139
|
+
finally {
|
|
140
|
+
channel.close();
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
handleWelcomeMessage(welcomeMessage, socket) {
|
|
144
|
+
this.alias = welcomeMessage.alias;
|
|
145
|
+
for (const [alias, address] of Object.entries(welcomeMessage.peerIdentities)) {
|
|
146
|
+
this.peersToAddress.set(+alias | 0, address);
|
|
147
|
+
}
|
|
148
|
+
this.ws = socket;
|
|
149
|
+
const connectedPeerAddress = new Set(this.peersToAddress.values());
|
|
150
|
+
socket.addEventListener('message', this.onWsMessage.bind(this));
|
|
151
|
+
this.connected.resolve(connectedPeerAddress);
|
|
152
|
+
return connectedPeerAddress;
|
|
153
|
+
}
|
|
154
|
+
send(body, hints) {
|
|
155
|
+
this.internalSend(craftMessage({
|
|
156
|
+
message: {
|
|
157
|
+
$case: 'peerUpdateMessage',
|
|
158
|
+
peerUpdateMessage: {
|
|
159
|
+
body,
|
|
160
|
+
fromAlias: this.alias || 0,
|
|
161
|
+
unreliable: !hints.reliable
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}));
|
|
165
|
+
}
|
|
166
|
+
async disconnect(error) {
|
|
167
|
+
this.internalDisconnect(false, error);
|
|
168
|
+
}
|
|
169
|
+
internalDisconnect(kicked, _error) {
|
|
170
|
+
if (this.ws) {
|
|
171
|
+
const ws = this.ws;
|
|
172
|
+
this.ws = null;
|
|
173
|
+
this.events.emit('DISCONNECTION', { kicked });
|
|
174
|
+
ws.onmessage = null;
|
|
175
|
+
ws.onerror = null;
|
|
176
|
+
ws.onclose = null;
|
|
177
|
+
ws.close();
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
async onWsMessage(event) {
|
|
181
|
+
const data = event.data;
|
|
182
|
+
const msg = new Uint8Array(data);
|
|
183
|
+
const { message } = rfc5.WsPacket.decode(msg);
|
|
184
|
+
if (!message)
|
|
185
|
+
return;
|
|
186
|
+
switch (message.$case) {
|
|
187
|
+
case 'peerJoinMessage': {
|
|
188
|
+
const { peerJoinMessage } = message;
|
|
189
|
+
this.peersToAddress.set(peerJoinMessage.alias, peerJoinMessage.address);
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
case 'peerKicked': {
|
|
193
|
+
this.internalDisconnect(true);
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
case 'peerLeaveMessage': {
|
|
197
|
+
const { peerLeaveMessage } = message;
|
|
198
|
+
const currentPeerAddress = this.peersToAddress.get(peerLeaveMessage.alias);
|
|
199
|
+
if (currentPeerAddress) {
|
|
200
|
+
this.peersToAddress.delete(peerLeaveMessage.alias);
|
|
201
|
+
this.events.emit('PEER_DISCONNECTED', { address: currentPeerAddress });
|
|
202
|
+
}
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
case 'peerUpdateMessage': {
|
|
206
|
+
const { peerUpdateMessage } = message;
|
|
207
|
+
const currentPeerAddress = this.peersToAddress.get(peerUpdateMessage.fromAlias);
|
|
208
|
+
if (currentPeerAddress) {
|
|
209
|
+
this.events.emit('message', {
|
|
210
|
+
address: currentPeerAddress,
|
|
211
|
+
data: peerUpdateMessage.body
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
debugger;
|
|
216
|
+
}
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
internalSend(msg) {
|
|
222
|
+
if (!this.ws) {
|
|
223
|
+
console.error(new Error('This transport is closed'));
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
this.connected
|
|
227
|
+
.then(() => {
|
|
228
|
+
if (this.ws && this.ws.readyState === ws_1.WebSocket.OPEN)
|
|
229
|
+
this.ws.send(msg);
|
|
230
|
+
})
|
|
231
|
+
.catch(console.error);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
exports.WebSocketAdapter = WebSocketAdapter;
|
|
235
|
+
//# sourceMappingURL=ws-room.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-room.js","sourceRoot":"","sources":["../../../../../src/lib/decentraland/communications/transports/ws-room.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { Atom } from "../../misc/atom";
|
|
2
|
+
import { Emitter } from "mitt";
|
|
3
|
+
import { Position } from "@dcl/protocol/out-js/decentraland/kernel/comms/rfc4/comms.gen";
|
|
4
|
+
export type CommsAdapter = {
|
|
5
|
+
desiredTransports: Atom<[{
|
|
6
|
+
url: string;
|
|
7
|
+
sceneId: string;
|
|
8
|
+
}]>;
|
|
9
|
+
reportPosition: (position: {
|
|
10
|
+
x: number;
|
|
11
|
+
y: number;
|
|
12
|
+
z: number;
|
|
13
|
+
}) => void;
|
|
14
|
+
disconnect(): void;
|
|
15
|
+
};
|
|
16
|
+
export type CommsTransportEvents = {
|
|
17
|
+
DISCONNECTION: TransportDisconnectedEvent;
|
|
18
|
+
PEER_CONNECTED: PeerConnectedEvent;
|
|
19
|
+
PEER_DISCONNECTED: PeerDisconnectedEvent;
|
|
20
|
+
message: TransportMessageEvent;
|
|
21
|
+
error: Error;
|
|
22
|
+
};
|
|
23
|
+
export interface MinimumCommunicationsTransport {
|
|
24
|
+
/**
|
|
25
|
+
* The .send method is used to send information to all the peers
|
|
26
|
+
* connected to this transport. The hints can be used to tweak the
|
|
27
|
+
* default behavior of the transport.
|
|
28
|
+
*/
|
|
29
|
+
send(data: Uint8Array, hints: SendHints, destination: string[]): void;
|
|
30
|
+
/**
|
|
31
|
+
* The .connect() method resolves when the connection with the
|
|
32
|
+
* transport was successful and it is ready to send and receive
|
|
33
|
+
* messages.
|
|
34
|
+
*
|
|
35
|
+
* This method returns a set of connected peerIdentities.
|
|
36
|
+
*/
|
|
37
|
+
connect(): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* The .disconnect() method can optionally receive an error that will
|
|
40
|
+
* be bubbled up in the DISCONNECTED event. It should be used to
|
|
41
|
+
* notify the user about possible network errors and to help with the
|
|
42
|
+
* UX of the explorer.
|
|
43
|
+
*/
|
|
44
|
+
disconnect(error?: Error): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Inform the voice handler (owned by the transport) about the position of a peer.
|
|
47
|
+
*/
|
|
48
|
+
setVoicePosition(address: string, position: Position): void;
|
|
49
|
+
/**
|
|
50
|
+
* Event emitter (mitt) with all the events produced by the transport.
|
|
51
|
+
*/
|
|
52
|
+
events: Emitter<CommsTransportEvents>;
|
|
53
|
+
}
|
|
54
|
+
export type SendHints = {
|
|
55
|
+
reliable: boolean;
|
|
56
|
+
};
|
|
57
|
+
export type TransportDisconnectedEvent = {
|
|
58
|
+
kicked: boolean;
|
|
59
|
+
error?: Error;
|
|
60
|
+
};
|
|
61
|
+
export type PeerConnectedEvent = {
|
|
62
|
+
address: string;
|
|
63
|
+
};
|
|
64
|
+
export type PeerDisconnectedEvent = {
|
|
65
|
+
address: string;
|
|
66
|
+
};
|
|
67
|
+
export type TransportMessageEvent = {
|
|
68
|
+
address: string;
|
|
69
|
+
data: Uint8Array;
|
|
70
|
+
};
|
|
71
|
+
export declare const commsLogger: {
|
|
72
|
+
enabled: boolean;
|
|
73
|
+
log(...args: any[]): void;
|
|
74
|
+
error(...args: any[]): void;
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/decentraland/communications/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,+DAA+D,CAAA;AAExF,MAAM,MAAM,YAAY,GAAG;IACzB,iBAAiB,EAAE,IAAI,CAAC,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IAC3D,cAAc,EAAE,CAAC,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACvE,UAAU,IAAI,IAAI,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,EAAE,0BAA0B,CAAA;IACzC,cAAc,EAAE,kBAAkB,CAAA;IAClC,iBAAiB,EAAE,qBAAqB,CAAA;IACxC,OAAO,EAAE,qBAAqB,CAAA;IAC9B,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAGD,MAAM,WAAW,8BAA8B;IAC7C;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IACrE;;;;;;OAMG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACxB;;;;;OAKG;IACH,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAExC;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IAE3D;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAA;CACtC;AAED,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAA;AAG7C,MAAM,MAAM,0BAA0B,GAAG;IAGvC,MAAM,EAAE,OAAO,CAAA;IAEf,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAGD,MAAM,MAAM,kBAAkB,GAAG;IAE/B,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAGD,MAAM,MAAM,qBAAqB,GAAG;IAElC,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAGD,MAAM,MAAM,qBAAqB,GAAG;IAElC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,WAAW;;;;CAA2B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/decentraland/communications/types.ts"],"names":[],"mappings":";;;AAEA,8CAAgD;AAkFnC,QAAA,WAAW,GAAG,IAAA,qBAAY,EAAC,UAAU,CAAC,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AsyncQueue } from '@dcl/rpc/dist/push-channel';
|
|
2
|
+
import { WebSocket } from 'ws';
|
|
3
|
+
export declare function wsAsAsyncChannel<T>(socket: WebSocket, decode: (data: Uint8Array) => T): AsyncQueue<T> & {
|
|
4
|
+
yield(timeoutMs: number, error?: string): Promise<T>;
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=ws-async-channel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-async-channel.d.ts","sourceRoot":"","sources":["../../../../src/lib/decentraland/communications/ws-async-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,SAAS,EAAgB,MAAM,IAAI,CAAA;AAG5C,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,CAAC;qBAuB3D,MAAM,UAAU,MAAM,GAAG,QAAQ,CAAC,CAAC;EAY7D"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.wsAsAsyncChannel = void 0;
|
|
4
|
+
const push_channel_1 = require("@dcl/rpc/dist/push-channel");
|
|
5
|
+
// this function converts a websocket into an AsyncQueue to send messages and await their responses
|
|
6
|
+
function wsAsAsyncChannel(socket, decode) {
|
|
7
|
+
// Wire the socket to a pushable channel
|
|
8
|
+
const channel = new push_channel_1.AsyncQueue((queue, action) => {
|
|
9
|
+
if (action === 'close') {
|
|
10
|
+
socket.removeEventListener('message', processMessage);
|
|
11
|
+
socket.removeEventListener('close', closeChannel);
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
function processMessage(event) {
|
|
15
|
+
try {
|
|
16
|
+
const data = event.data;
|
|
17
|
+
const msg = data instanceof Buffer ? new Uint8Array(data) : new Uint8Array(data);
|
|
18
|
+
channel.enqueue(decode(msg));
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
socket.close(undefined, 'Error: ' + error);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function closeChannel() {
|
|
25
|
+
channel.close();
|
|
26
|
+
}
|
|
27
|
+
socket.addEventListener('message', processMessage);
|
|
28
|
+
socket.addEventListener('close', closeChannel);
|
|
29
|
+
return Object.assign(channel, {
|
|
30
|
+
async yield(timeoutMs, error) {
|
|
31
|
+
if (timeoutMs) {
|
|
32
|
+
const next = (await Promise.race([channel.next(), timeout(timeoutMs, error)]));
|
|
33
|
+
if (next.done)
|
|
34
|
+
throw new Error('Cannot consume message from closed AsyncQueue. ' + error);
|
|
35
|
+
return next.value;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
const next = await channel.next();
|
|
39
|
+
if (next.done)
|
|
40
|
+
throw new Error('Cannot consume message from closed AsyncQueue.' + error);
|
|
41
|
+
return next.value;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
exports.wsAsAsyncChannel = wsAsAsyncChannel;
|
|
47
|
+
function timeout(ms, error = 'Timed out') {
|
|
48
|
+
return new Promise((_, reject) => {
|
|
49
|
+
setTimeout(() => reject(new Error(error)), ms);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=ws-async-channel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-async-channel.js","sourceRoot":"","sources":["../../../../src/lib/decentraland/communications/ws-async-channel.ts"],"names":[],"mappings":";;;AAAA,6DAAuD;AAGvD,mGAAmG;AACnG,SAAgB,gBAAgB,CAAI,MAAiB,EAAE,MAA+B;IACpF,wCAAwC;IACxC,MAAM,OAAO,GAAG,IAAI,yBAAU,CAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAClD,IAAI,MAAM,KAAK,OAAO,EAAE;YACtB,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;YACrD,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;SAClD;IACH,CAAC,CAAC,CAAA;IACF,SAAS,cAAc,CAAC,KAAmB;QACzC,IAAI;YACF,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;YACvB,MAAM,GAAG,GAAG,IAAI,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAmB,CAAC,CAAA;YAC/F,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;SAC7B;QAAC,OAAO,KAAU,EAAE;YACnB,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,GAAG,KAAK,CAAC,CAAA;SAC3C;IACH,CAAC;IACD,SAAS,YAAY;QACnB,OAAO,CAAC,KAAK,EAAE,CAAA;IACjB,CAAC;IACD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;IAClD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;IAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;QAC5B,KAAK,CAAC,KAAK,CAAC,SAAiB,EAAE,KAAc;YAC3C,IAAI,SAAS,EAAE;gBACb,MAAM,IAAI,GAAQ,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAQ,CAAA;gBAC1F,IAAI,IAAI,CAAC,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,GAAG,KAAK,CAAC,CAAA;gBACzF,OAAO,IAAI,CAAC,KAAK,CAAA;aAClB;iBAAM;gBACL,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;gBACjC,IAAI,IAAI,CAAC,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,GAAG,KAAK,CAAC,CAAA;gBACxF,OAAO,IAAI,CAAC,KAAK,CAAA;aAClB;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAnCD,4CAmCC;AAED,SAAS,OAAO,CAAC,EAAU,EAAE,KAAK,GAAG,WAAW;IAC9C,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QAC/B,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file exposes interfaces for the two components described in ADR-117
|
|
3
|
+
* LastWriteWins-Element-Set
|
|
4
|
+
* GrowOnly-Set
|
|
5
|
+
*/
|
|
6
|
+
import { BabylonEntity } from "../../babylon/scene/BabylonEntity";
|
|
7
|
+
import { ByteBuffer } from "../ByteBuffer";
|
|
8
|
+
import { CrdtMessageBody, DeleteComponentMessageBody, PutComponentMessageBody } from "../crdt-wire-protocol";
|
|
9
|
+
import { Entity } from "../types";
|
|
10
|
+
/**
|
|
11
|
+
* Component types are used to pick the wire protocol and the conflict resolution algorithm
|
|
12
|
+
*/
|
|
13
|
+
export declare const enum ComponentType {
|
|
14
|
+
LastWriteWinElementSet = 0,
|
|
15
|
+
GrowOnlyValueSet = 1
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* A conflict resolution message is the response to an outdated or invalid state
|
|
19
|
+
* in the CRDT.
|
|
20
|
+
*/
|
|
21
|
+
export type ConflictResolutionMessage = PutComponentMessageBody | DeleteComponentMessageBody;
|
|
22
|
+
/**
|
|
23
|
+
* Serialize/Deserialize functions for components. Both functions are expected
|
|
24
|
+
* to throw in case of not enough or corrupted data
|
|
25
|
+
*/
|
|
26
|
+
export type SerDe<T> = {
|
|
27
|
+
serialize(value: T, buffer: ByteBuffer): void;
|
|
28
|
+
deserialize(buffer: ByteBuffer): T;
|
|
29
|
+
};
|
|
30
|
+
export type ComponentDeclaration<T, ComponentNumber extends number> = SerDe<T> & {
|
|
31
|
+
readonly componentId: ComponentNumber;
|
|
32
|
+
applyChanges: ApplyComponentOperation<T>;
|
|
33
|
+
};
|
|
34
|
+
export type ComponentDefinition<T> = LastWriteWinElementSetComponentDefinition<T> | GrowOnlyValueSetComponentDefinition<T>;
|
|
35
|
+
export type ApplyComponentOperation<T> = (ecsEntity: BabylonEntity, componentDefinition: ComponentDefinition<T>) => void;
|
|
36
|
+
export interface BaseComponent<T> {
|
|
37
|
+
readonly componentId: number;
|
|
38
|
+
readonly componentType: ComponentType;
|
|
39
|
+
readonly declaration: ComponentDeclaration<T, number>;
|
|
40
|
+
/**
|
|
41
|
+
* This function receives a CRDT update and returns true if the change is accepted.
|
|
42
|
+
* On the contrary, if the change needs to be corrected to resolve a conflict, the
|
|
43
|
+
* corrective message will be written to the conflictResolutionByteBuffer
|
|
44
|
+
*/
|
|
45
|
+
updateFromCrdt(body: CrdtMessageBody, conflictResolutionByteBuffer: ByteBuffer): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* This function writes all CRDT updates into a outBuffer. After returning, this function
|
|
48
|
+
* clears the internal dirty state. Updates are produced only once.
|
|
49
|
+
*
|
|
50
|
+
* This function updates the internal "tick" counter for the entire component.
|
|
51
|
+
*/
|
|
52
|
+
dumpCrdtUpdates(outBuffer: ByteBuffer): void;
|
|
53
|
+
/**
|
|
54
|
+
* This function writes CRDT updates into a outBuffer filtering by the updates with
|
|
55
|
+
* a tick greater than the one provided. It returns the biggest tick written
|
|
56
|
+
* to the buffer.
|
|
57
|
+
*
|
|
58
|
+
* WARNING! this function ignores the dirty state. To commit the dirty state please first call
|
|
59
|
+
* dumpCrdtUpdates. That will increase the counters for each dirty entity and will allow
|
|
60
|
+
* this function to filter by tick.
|
|
61
|
+
*/
|
|
62
|
+
dumpCrdtDeltas(outBuffer: ByteBuffer, fromTick: number): number;
|
|
63
|
+
/**
|
|
64
|
+
* Marks the entity as deleted and signals it cannot be used ever again. It must
|
|
65
|
+
* clear the component internal state, produces a synchronization message to remove
|
|
66
|
+
* the component from the entity.
|
|
67
|
+
* @param entity - Entity ID that was deleted.
|
|
68
|
+
*/
|
|
69
|
+
entityDeleted(entity: Entity, markAsDirty: boolean): void;
|
|
70
|
+
/**
|
|
71
|
+
* Get if the entity has this component
|
|
72
|
+
* @param entity - entity to test
|
|
73
|
+
*/
|
|
74
|
+
has(entity: Entity): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Get the current component value | undefined
|
|
77
|
+
* @param entity - Entity that will be used to get the component
|
|
78
|
+
* @returns
|
|
79
|
+
*/
|
|
80
|
+
get(entity: Entity): any;
|
|
81
|
+
iterator(): Iterable<[Entity, any]>;
|
|
82
|
+
dirtyIterator(): Iterable<Entity>;
|
|
83
|
+
}
|
|
84
|
+
export interface LastWriteWinElementSetComponentDefinition<T> extends BaseComponent<T> {
|
|
85
|
+
readonly componentType: ComponentType.LastWriteWinElementSet;
|
|
86
|
+
/**
|
|
87
|
+
* Get the value of the component for an entity
|
|
88
|
+
* @param entity - Entity that will be used to get the component
|
|
89
|
+
* @returns
|
|
90
|
+
*/
|
|
91
|
+
get(entity: Entity): T | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Get the readonly component of the entity (to mutate it, use getMutable instead), or null if the entity doesn't have the component.
|
|
94
|
+
* @param entity - Entity that will be used to try to get the component
|
|
95
|
+
*/
|
|
96
|
+
getOrNull(entity: Entity): Readonly<T> | null;
|
|
97
|
+
/**
|
|
98
|
+
* Add the current component to an entity, throw an error if the component already exists (use `createOrReplace` instead).
|
|
99
|
+
* - Internal comment: This method adds the <entity,component> to the list to be reviewed next frame
|
|
100
|
+
* @param entity - Entity that will be used to create the component
|
|
101
|
+
* @param val - The initial value
|
|
102
|
+
*/
|
|
103
|
+
create(entity: Entity, val: T): T;
|
|
104
|
+
/**
|
|
105
|
+
* Add the current component to an entity or replace the content if the entity already has the component
|
|
106
|
+
* - Internal comment: This method adds the <entity,component> to the list to be reviewed next frame
|
|
107
|
+
* @param entity - Entity that will be used to create or replace the component
|
|
108
|
+
* @param val - The initial or new value
|
|
109
|
+
*/
|
|
110
|
+
createOrReplace(entity: Entity, val: T): T;
|
|
111
|
+
/**
|
|
112
|
+
* Delete the current component to an entity, return null if the entity doesn't have the current component.
|
|
113
|
+
* - Internal comment: This method adds the <entity,component> to the list to be reviewed next frame
|
|
114
|
+
* @param entity - Entity to delete the component from
|
|
115
|
+
* @param markAsDirty - defaults to true
|
|
116
|
+
*/
|
|
117
|
+
deleteFrom(entity: Entity, markAsDirty?: boolean): T | null;
|
|
118
|
+
/**
|
|
119
|
+
|
|
120
|
+
* Delete the current component to an entity, return null if the entity doesn't have the current component.
|
|
121
|
+
* - Internal comment: This method adds the <entity,component> to the list to be reviewed next frame
|
|
122
|
+
* @param entity - Entity to delete the component from
|
|
123
|
+
*/
|
|
124
|
+
deleteFrom(entity: Entity): T | null;
|
|
125
|
+
/**
|
|
126
|
+
* Get the mutable component of the entity, throw an error if the entity doesn't have the component.
|
|
127
|
+
* - Internal comment: This method adds the <entity,component> to the list to be reviewed next frame
|
|
128
|
+
* @param entity - Entity to get the component from
|
|
129
|
+
*/
|
|
130
|
+
getMutable(entity: Entity): T;
|
|
131
|
+
/**
|
|
132
|
+
* Get the mutable component of the entity, return null if the entity doesn't have the component.
|
|
133
|
+
* - Internal comment: This method adds the <entity,component> to the list to be reviewed next frame
|
|
134
|
+
* @param entity - Entity to get the component from
|
|
135
|
+
*/
|
|
136
|
+
getMutableOrNull(entity: Entity): T | null;
|
|
137
|
+
iterator(): Iterable<[Entity, T]>;
|
|
138
|
+
}
|
|
139
|
+
export interface GrowOnlyValueSetComponentDefinition<T> extends BaseComponent<T> {
|
|
140
|
+
readonly componentType: ComponentType.GrowOnlyValueSet;
|
|
141
|
+
/**
|
|
142
|
+
* Appends an element to the set.
|
|
143
|
+
* @param entity - Entity that will host the value
|
|
144
|
+
* @param val - The final value. The Set will freeze the value, it won't be editable from
|
|
145
|
+
* the script.
|
|
146
|
+
*/
|
|
147
|
+
addValue(entity: Entity, val: Readonly<T>): ReadonlySet<T>;
|
|
148
|
+
/**
|
|
149
|
+
* Get the readonly component of the entity (to mutate it, use getMutable instead),
|
|
150
|
+
* throws an error if the entity doesn't have the component.
|
|
151
|
+
* @param entity - Entity that will be used to get the component
|
|
152
|
+
* @returns
|
|
153
|
+
*/
|
|
154
|
+
get(entity: Entity): ReadonlySet<T>;
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=components.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../../src/lib/decentraland/crdt-internal/components.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components.js","sourceRoot":"","sources":["../../../../src/lib/decentraland/crdt-internal/components.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export declare enum ProcessMessageResultType {
|
|
2
|
+
/**
|
|
3
|
+
* Typical message and new state set.
|
|
4
|
+
* @state CHANGE
|
|
5
|
+
* @reason Incoming message has a timestamp greater
|
|
6
|
+
*/
|
|
7
|
+
StateUpdatedTimestamp = 1,
|
|
8
|
+
/**
|
|
9
|
+
* Typical message when it is considered old.
|
|
10
|
+
* @state it does NOT CHANGE.
|
|
11
|
+
* @reason incoming message has a timestamp lower.
|
|
12
|
+
*/
|
|
13
|
+
StateOutdatedTimestamp = 2,
|
|
14
|
+
/**
|
|
15
|
+
* Weird message, same timestamp and data.
|
|
16
|
+
* @state it does NOT CHANGE.
|
|
17
|
+
* @reason consistent state between peers.
|
|
18
|
+
*/
|
|
19
|
+
NoChanges = 3,
|
|
20
|
+
/**
|
|
21
|
+
* Less but typical message, same timestamp, resolution by data.
|
|
22
|
+
* @state it does NOT CHANGE.
|
|
23
|
+
* @reason incoming message has a LOWER data.
|
|
24
|
+
*/
|
|
25
|
+
StateOutdatedData = 4,
|
|
26
|
+
/**
|
|
27
|
+
* Less but typical message, same timestamp, resolution by data.
|
|
28
|
+
* @state CHANGE.
|
|
29
|
+
* @reason incoming message has a GREATER data.
|
|
30
|
+
*/
|
|
31
|
+
StateUpdatedData = 5,
|
|
32
|
+
/**
|
|
33
|
+
* Entity was previously deleted.
|
|
34
|
+
* @state it does NOT CHANGE.
|
|
35
|
+
* @reason The message is considered old.
|
|
36
|
+
*/
|
|
37
|
+
EntityWasDeleted = 6,
|
|
38
|
+
/**
|
|
39
|
+
* Entity should be deleted.
|
|
40
|
+
* @state CHANGE.
|
|
41
|
+
* @reason the state is storing old entities
|
|
42
|
+
*/
|
|
43
|
+
EntityDeleted = 7
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=conflict-resolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflict-resolution.d.ts","sourceRoot":"","sources":["../../../../src/lib/decentraland/crdt-internal/conflict-resolution.ts"],"names":[],"mappings":"AACA,oBAAY,wBAAwB;IAClC;;;;OAIG;IACH,qBAAqB,IAAI;IAEzB;;;;OAIG;IACH,sBAAsB,IAAI;IAE1B;;;;OAIG;IACH,SAAS,IAAI;IAEb;;;;OAIG;IACH,iBAAiB,IAAI;IAErB;;;;OAIG;IACH,gBAAgB,IAAI;IAEpB;;;;OAIG;IACH,gBAAgB,IAAI;IAEpB;;;;OAIG;IACH,aAAa,IAAI;CAClB"}
|