@dxos/edge-client 0.8.2-main.12df754 → 0.8.2-main.2f9c567
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/chunk-TKYUZ5ZK.mjs +302 -0
- package/dist/lib/browser/chunk-TKYUZ5ZK.mjs.map +7 -0
- package/dist/lib/browser/edge-ws-muxer.mjs +11 -0
- package/dist/lib/browser/edge-ws-muxer.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +70 -32
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +32 -20
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/node/chunk-ZOL3YSDR.cjs +322 -0
- package/dist/lib/node/chunk-ZOL3YSDR.cjs.map +7 -0
- package/dist/lib/node/edge-ws-muxer.cjs +33 -0
- package/dist/lib/node/edge-ws-muxer.cjs.map +7 -0
- package/dist/lib/node/index.cjs +83 -45
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +32 -21
- package/dist/lib/node/testing/index.cjs.map +3 -3
- package/dist/lib/node-esm/chunk-25HGRGNZ.mjs +304 -0
- package/dist/lib/node-esm/chunk-25HGRGNZ.mjs.map +7 -0
- package/dist/lib/node-esm/edge-ws-muxer.mjs +12 -0
- package/dist/lib/node-esm/edge-ws-muxer.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +70 -32
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +32 -20
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/types/src/edge-ws-connection.d.ts +1 -0
- package/dist/types/src/edge-ws-connection.d.ts.map +1 -1
- package/dist/types/src/edge-ws-muxer.d.ts +35 -0
- package/dist/types/src/edge-ws-muxer.d.ts.map +1 -0
- package/dist/types/src/edge-ws-muxer.test.d.ts +2 -0
- package/dist/types/src/edge-ws-muxer.test.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/testing/test-utils.d.ts +6 -2
- package/dist/types/src/testing/test-utils.d.ts.map +1 -1
- package/package.json +19 -14
- package/src/edge-client.ts +2 -2
- package/src/edge-ws-connection.ts +36 -18
- package/src/edge-ws-muxer.test.ts +55 -0
- package/src/edge-ws-muxer.ts +217 -0
- package/src/index.ts +1 -0
- package/src/testing/test-utils.ts +33 -26
- package/dist/lib/browser/chunk-ZWJXA37R.mjs +0 -113
- package/dist/lib/browser/chunk-ZWJXA37R.mjs.map +0 -7
- package/dist/lib/node/chunk-ANV2HBEH.cjs +0 -136
- package/dist/lib/node/chunk-ANV2HBEH.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-HNVT57AU.mjs +0 -115
- package/dist/lib/node-esm/chunk-HNVT57AU.mjs.map +0 -7
package/dist/lib/node/meta.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/core/mesh/edge-client/src/protocol.ts":{"bytes":10334,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/edge-client/src/defs.ts":{"bytes":1607,"imports":[{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"packages/core/mesh/edge-client/src/protocol.ts","kind":"import-statement","original":"./protocol"}],"format":"esm"},"packages/core/mesh/edge-client/src/edge-identity.ts":{"bytes":4069,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/edge-client/src/edge-ws-connection.ts":{"bytes":21466,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"packages/core/mesh/edge-client/src/defs.ts","kind":"import-statement","original":"./defs"},{"path":"packages/core/mesh/edge-client/src/protocol.ts","kind":"import-statement","original":"./protocol"}],"format":"esm"},"packages/core/mesh/edge-client/src/errors.ts":{"bytes":1265,"imports":[],"format":"esm"},"packages/core/mesh/edge-client/src/utils.ts":{"bytes":1451,"imports":[],"format":"esm"},"packages/core/mesh/edge-client/src/edge-client.ts":{"bytes":35583,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"packages/core/mesh/edge-client/src/defs.ts","kind":"import-statement","original":"./defs"},{"path":"packages/core/mesh/edge-client/src/edge-identity.ts","kind":"import-statement","original":"./edge-identity"},{"path":"packages/core/mesh/edge-client/src/edge-ws-connection.ts","kind":"import-statement","original":"./edge-ws-connection"},{"path":"packages/core/mesh/edge-client/src/errors.ts","kind":"import-statement","original":"./errors"},{"path":"packages/core/mesh/edge-client/src/utils.ts","kind":"import-statement","original":"./utils"}],"format":"esm"},"packages/core/mesh/edge-client/src/auth.ts":{"bytes":12314,"imports":[{"path":"@dxos/credentials","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keyring","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/edge-client/src/edge-http-client.ts":{"bytes":34436,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/edge-client/src/edge-identity.ts","kind":"import-statement","original":"./edge-identity"},{"path":"packages/core/mesh/edge-client/src/utils.ts","kind":"import-statement","original":"./utils"}],"format":"esm"},"packages/core/mesh/edge-client/src/index.ts":{"bytes":1228,"imports":[{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"packages/core/mesh/edge-client/src/edge-client.ts","kind":"import-statement","original":"./edge-client"},{"path":"packages/core/mesh/edge-client/src/defs.ts","kind":"import-statement","original":"./defs"},{"path":"packages/core/mesh/edge-client/src/protocol.ts","kind":"import-statement","original":"./protocol"},{"path":"packages/core/mesh/edge-client/src/errors.ts","kind":"import-statement","original":"./errors"},{"path":"packages/core/mesh/edge-client/src/auth.ts","kind":"import-statement","original":"./auth"},{"path":"packages/core/mesh/edge-client/src/edge-http-client.ts","kind":"import-statement","original":"./edge-http-client"},{"path":"packages/core/mesh/edge-client/src/edge-identity.ts","kind":"import-statement","original":"./edge-identity"}],"format":"esm"},"packages/core/mesh/edge-client/src/testing/test-utils.ts":{"bytes":13201,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"packages/core/mesh/edge-client/src/defs.ts","kind":"import-statement","original":"../defs"},{"path":"packages/core/mesh/edge-client/src/protocol.ts","kind":"import-statement","original":"../protocol"}],"format":"esm"},"packages/core/mesh/edge-client/src/testing/index.ts":{"bytes":516,"imports":[{"path":"packages/core/mesh/edge-client/src/testing/test-utils.ts","kind":"import-statement","original":"./test-utils"}],"format":"esm"}},"outputs":{"packages/core/mesh/edge-client/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":52197},"packages/core/mesh/edge-client/dist/lib/node/index.cjs":{"imports":[{"path":"packages/core/mesh/edge-client/dist/lib/node/chunk-ANV2HBEH.cjs","kind":"import-statement"},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/credentials","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keyring","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true}],"exports":["EdgeClient","EdgeConnectionClosedError","EdgeHttpClient","EdgeIdentityChangedError","Protocol","createChainEdgeIdentity","createDeviceEdgeIdentity","createEphemeralEdgeIdentity","createStubEdgeIdentity","createTestHaloEdgeIdentity","getTypename","handleAuthChallenge","protocol","toUint8Array"],"entryPoint":"packages/core/mesh/edge-client/src/index.ts","inputs":{"packages/core/mesh/edge-client/src/index.ts":{"bytesInOutput":60},"packages/core/mesh/edge-client/src/edge-client.ts":{"bytesInOutput":9413},"packages/core/mesh/edge-client/src/edge-identity.ts":{"bytesInOutput":1150},"packages/core/mesh/edge-client/src/edge-ws-connection.ts":{"bytesInOutput":6334},"packages/core/mesh/edge-client/src/errors.ts":{"bytesInOutput":232},"packages/core/mesh/edge-client/src/utils.ts":{"bytesInOutput":244},"packages/core/mesh/edge-client/src/auth.ts":{"bytesInOutput":2993},"packages/core/mesh/edge-client/src/edge-http-client.ts":{"bytesInOutput":8021}},"bytes":29372},"packages/core/mesh/edge-client/dist/lib/node/testing/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6741},"packages/core/mesh/edge-client/dist/lib/node/testing/index.cjs":{"imports":[{"path":"packages/core/mesh/edge-client/dist/lib/node/chunk-ANV2HBEH.cjs","kind":"import-statement"},{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true}],"exports":["DEFAULT_PORT","createTestEdgeWsServer"],"entryPoint":"packages/core/mesh/edge-client/src/testing/index.ts","inputs":{"packages/core/mesh/edge-client/src/testing/test-utils.ts":{"bytesInOutput":3466},"packages/core/mesh/edge-client/src/testing/index.ts":{"bytesInOutput":0}},"bytes":3683},"packages/core/mesh/edge-client/dist/lib/node/chunk-ANV2HBEH.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5676},"packages/core/mesh/edge-client/dist/lib/node/chunk-ANV2HBEH.cjs":{"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true}],"exports":["Protocol","getTypename","protocol","toUint8Array"],"inputs":{"packages/core/mesh/edge-client/src/protocol.ts":{"bytesInOutput":2600},"packages/core/mesh/edge-client/src/defs.ts":{"bytesInOutput":298}},"bytes":3106}}}
|
|
1
|
+
{"inputs":{"packages/core/mesh/edge-client/src/protocol.ts":{"bytes":10334,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/edge-client/src/defs.ts":{"bytes":1607,"imports":[{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"packages/core/mesh/edge-client/src/protocol.ts","kind":"import-statement","original":"./protocol"}],"format":"esm"},"packages/core/mesh/edge-client/src/edge-ws-muxer.ts":{"bytes":24403,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"packages/core/mesh/edge-client/src/defs.ts","kind":"import-statement","original":"./defs"}],"format":"esm"},"packages/core/mesh/edge-client/src/edge-identity.ts":{"bytes":4069,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/edge-client/src/edge-ws-connection.ts":{"bytes":24442,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"packages/core/mesh/edge-client/src/defs.ts","kind":"import-statement","original":"./defs"},{"path":"packages/core/mesh/edge-client/src/edge-ws-muxer.ts","kind":"import-statement","original":"./edge-ws-muxer"},{"path":"packages/core/mesh/edge-client/src/protocol.ts","kind":"import-statement","original":"./protocol"}],"format":"esm"},"packages/core/mesh/edge-client/src/errors.ts":{"bytes":1265,"imports":[],"format":"esm"},"packages/core/mesh/edge-client/src/utils.ts":{"bytes":1451,"imports":[],"format":"esm"},"packages/core/mesh/edge-client/src/edge-client.ts":{"bytes":35621,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"packages/core/mesh/edge-client/src/defs.ts","kind":"import-statement","original":"./defs"},{"path":"packages/core/mesh/edge-client/src/edge-identity.ts","kind":"import-statement","original":"./edge-identity"},{"path":"packages/core/mesh/edge-client/src/edge-ws-connection.ts","kind":"import-statement","original":"./edge-ws-connection"},{"path":"packages/core/mesh/edge-client/src/errors.ts","kind":"import-statement","original":"./errors"},{"path":"packages/core/mesh/edge-client/src/utils.ts","kind":"import-statement","original":"./utils"}],"format":"esm"},"packages/core/mesh/edge-client/src/auth.ts":{"bytes":12314,"imports":[{"path":"@dxos/credentials","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keyring","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/edge-client/src/edge-http-client.ts":{"bytes":34436,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/edge-client/src/edge-identity.ts","kind":"import-statement","original":"./edge-identity"},{"path":"packages/core/mesh/edge-client/src/utils.ts","kind":"import-statement","original":"./utils"}],"format":"esm"},"packages/core/mesh/edge-client/src/index.ts":{"bytes":1333,"imports":[{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"packages/core/mesh/edge-client/src/edge-client.ts","kind":"import-statement","original":"./edge-client"},{"path":"packages/core/mesh/edge-client/src/defs.ts","kind":"import-statement","original":"./defs"},{"path":"packages/core/mesh/edge-client/src/protocol.ts","kind":"import-statement","original":"./protocol"},{"path":"packages/core/mesh/edge-client/src/errors.ts","kind":"import-statement","original":"./errors"},{"path":"packages/core/mesh/edge-client/src/auth.ts","kind":"import-statement","original":"./auth"},{"path":"packages/core/mesh/edge-client/src/edge-http-client.ts","kind":"import-statement","original":"./edge-http-client"},{"path":"packages/core/mesh/edge-client/src/edge-identity.ts","kind":"import-statement","original":"./edge-identity"},{"path":"packages/core/mesh/edge-client/src/edge-ws-muxer.ts","kind":"import-statement","original":"./edge-ws-muxer"}],"format":"esm"},"packages/core/mesh/edge-client/src/testing/test-utils.ts":{"bytes":14258,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"packages/core/mesh/edge-client/src/defs.ts","kind":"import-statement","original":"../defs"},{"path":"packages/core/mesh/edge-client/src/edge-ws-muxer.ts","kind":"import-statement","original":"../edge-ws-muxer"},{"path":"packages/core/mesh/edge-client/src/protocol.ts","kind":"import-statement","original":"../protocol"}],"format":"esm"},"packages/core/mesh/edge-client/src/testing/index.ts":{"bytes":516,"imports":[{"path":"packages/core/mesh/edge-client/src/testing/test-utils.ts","kind":"import-statement","original":"./test-utils"}],"format":"esm"}},"outputs":{"packages/core/mesh/edge-client/dist/lib/node/edge-ws-muxer.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/core/mesh/edge-client/dist/lib/node/edge-ws-muxer.cjs":{"imports":[{"path":"packages/core/mesh/edge-client/dist/lib/node/chunk-ZOL3YSDR.cjs","kind":"import-statement"}],"exports":["CLOUDFLARE_MESSAGE_MAX_BYTES","CLOUDFLARE_RPC_MAX_BYTES","WebSocketMuxer"],"entryPoint":"packages/core/mesh/edge-client/src/edge-ws-muxer.ts","inputs":{},"bytes":249},"packages/core/mesh/edge-client/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":53558},"packages/core/mesh/edge-client/dist/lib/node/index.cjs":{"imports":[{"path":"packages/core/mesh/edge-client/dist/lib/node/chunk-ZOL3YSDR.cjs","kind":"import-statement"},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/credentials","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keyring","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true}],"exports":["CLOUDFLARE_MESSAGE_MAX_BYTES","CLOUDFLARE_RPC_MAX_BYTES","EdgeClient","EdgeConnectionClosedError","EdgeHttpClient","EdgeIdentityChangedError","Protocol","WebSocketMuxer","createChainEdgeIdentity","createDeviceEdgeIdentity","createEphemeralEdgeIdentity","createStubEdgeIdentity","createTestHaloEdgeIdentity","getTypename","handleAuthChallenge","protocol","toUint8Array"],"entryPoint":"packages/core/mesh/edge-client/src/index.ts","inputs":{"packages/core/mesh/edge-client/src/index.ts":{"bytesInOutput":60},"packages/core/mesh/edge-client/src/edge-client.ts":{"bytesInOutput":9423},"packages/core/mesh/edge-client/src/edge-identity.ts":{"bytesInOutput":1150},"packages/core/mesh/edge-client/src/edge-ws-connection.ts":{"bytesInOutput":7189},"packages/core/mesh/edge-client/src/errors.ts":{"bytesInOutput":232},"packages/core/mesh/edge-client/src/utils.ts":{"bytesInOutput":244},"packages/core/mesh/edge-client/src/auth.ts":{"bytesInOutput":2993},"packages/core/mesh/edge-client/src/edge-http-client.ts":{"bytesInOutput":8021}},"bytes":30393},"packages/core/mesh/edge-client/dist/lib/node/testing/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7238},"packages/core/mesh/edge-client/dist/lib/node/testing/index.cjs":{"imports":[{"path":"packages/core/mesh/edge-client/dist/lib/node/chunk-ZOL3YSDR.cjs","kind":"import-statement"},{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true}],"exports":["DEFAULT_PORT","createTestEdgeWsServer"],"entryPoint":"packages/core/mesh/edge-client/src/testing/index.ts","inputs":{"packages/core/mesh/edge-client/src/testing/test-utils.ts":{"bytesInOutput":3688},"packages/core/mesh/edge-client/src/testing/index.ts":{"bytesInOutput":0}},"bytes":3923},"packages/core/mesh/edge-client/dist/lib/node/chunk-ZOL3YSDR.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":17301},"packages/core/mesh/edge-client/dist/lib/node/chunk-ZOL3YSDR.cjs":{"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["CLOUDFLARE_MESSAGE_MAX_BYTES","CLOUDFLARE_RPC_MAX_BYTES","Protocol","WebSocketMuxer","getTypename","protocol","toUint8Array"],"inputs":{"packages/core/mesh/edge-client/src/edge-ws-muxer.ts":{"bytesInOutput":5858},"packages/core/mesh/edge-client/src/defs.ts":{"bytesInOutput":298},"packages/core/mesh/edge-client/src/protocol.ts":{"bytesInOutput":2600}},"bytes":9201}}}
|
|
@@ -32,29 +32,37 @@ __export(testing_exports, {
|
|
|
32
32
|
createTestEdgeWsServer: () => createTestEdgeWsServer
|
|
33
33
|
});
|
|
34
34
|
module.exports = __toCommonJS(testing_exports);
|
|
35
|
-
var
|
|
35
|
+
var import_chunk_ZOL3YSDR = require("../chunk-ZOL3YSDR.cjs");
|
|
36
36
|
var import_isomorphic_ws = __toESM(require("isomorphic-ws"));
|
|
37
37
|
var import_async = require("@dxos/async");
|
|
38
38
|
var import_log = require("@dxos/log");
|
|
39
|
+
var import_protocols = require("@dxos/protocols");
|
|
39
40
|
var import_buf = require("@dxos/protocols/buf");
|
|
40
41
|
var import_messenger_pb = require("@dxos/protocols/buf/dxos/edge/messenger_pb");
|
|
41
42
|
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/mesh/edge-client/src/testing/test-utils.ts";
|
|
42
43
|
var DEFAULT_PORT = 8080;
|
|
43
44
|
var createTestEdgeWsServer = async (port = DEFAULT_PORT, params) => {
|
|
44
|
-
const
|
|
45
|
+
const wsServer = new import_isomorphic_ws.default.Server({
|
|
45
46
|
port,
|
|
46
|
-
verifyClient: createConnectionDelayHandler(params)
|
|
47
|
+
verifyClient: createConnectionDelayHandler(params),
|
|
48
|
+
handleProtocols: () => [
|
|
49
|
+
import_protocols.EdgeWebsocketProtocol.V1
|
|
50
|
+
]
|
|
47
51
|
});
|
|
48
52
|
let connection;
|
|
49
53
|
const messageSink = [];
|
|
50
54
|
const messageSourceLog = [];
|
|
51
55
|
const closeTrigger = new import_async.Trigger();
|
|
52
|
-
const sendResponseMessage = createResponseSender(() => connection);
|
|
53
|
-
|
|
54
|
-
|
|
56
|
+
const sendResponseMessage = createResponseSender(() => connection.muxer);
|
|
57
|
+
wsServer.on("connection", (ws) => {
|
|
58
|
+
const muxer = new import_chunk_ZOL3YSDR.WebSocketMuxer(ws);
|
|
59
|
+
connection = {
|
|
60
|
+
ws,
|
|
61
|
+
muxer
|
|
62
|
+
};
|
|
55
63
|
ws.on("error", (err) => import_log.log.catch(err, void 0, {
|
|
56
64
|
F: __dxlog_file,
|
|
57
|
-
L:
|
|
65
|
+
L: 42,
|
|
58
66
|
S: void 0,
|
|
59
67
|
C: (f, a) => f(...a)
|
|
60
68
|
}));
|
|
@@ -63,7 +71,11 @@ var createTestEdgeWsServer = async (port = DEFAULT_PORT, params) => {
|
|
|
63
71
|
ws.send("__pong__");
|
|
64
72
|
return;
|
|
65
73
|
}
|
|
66
|
-
const
|
|
74
|
+
const message = muxer.receiveData(await (0, import_chunk_ZOL3YSDR.toUint8Array)(data));
|
|
75
|
+
if (!message) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const { request, requestPayload } = await decodePayload(message, params);
|
|
67
79
|
messageSourceLog.push(request.source);
|
|
68
80
|
if (params?.messageHandler) {
|
|
69
81
|
const responsePayload = await params.messageHandler(requestPayload);
|
|
@@ -75,7 +87,7 @@ var createTestEdgeWsServer = async (port = DEFAULT_PORT, params) => {
|
|
|
75
87
|
payload: requestPayload
|
|
76
88
|
}, {
|
|
77
89
|
F: __dxlog_file,
|
|
78
|
-
L:
|
|
90
|
+
L: 60,
|
|
79
91
|
S: void 0,
|
|
80
92
|
C: (f, a) => f(...a)
|
|
81
93
|
});
|
|
@@ -87,19 +99,19 @@ var createTestEdgeWsServer = async (port = DEFAULT_PORT, params) => {
|
|
|
87
99
|
});
|
|
88
100
|
});
|
|
89
101
|
return {
|
|
90
|
-
server,
|
|
102
|
+
server: wsServer,
|
|
91
103
|
messageSink,
|
|
92
104
|
messageSourceLog,
|
|
93
|
-
endpoint: `ws://
|
|
94
|
-
cleanup: () =>
|
|
105
|
+
endpoint: `ws://127.0.0.1:${port}`,
|
|
106
|
+
cleanup: () => wsServer.close(),
|
|
95
107
|
currentConnection: () => connection,
|
|
96
108
|
sendResponseMessage,
|
|
97
109
|
sendMessage: (msg) => {
|
|
98
|
-
connection.send(
|
|
110
|
+
return connection.muxer.send(msg);
|
|
99
111
|
},
|
|
100
112
|
closeConnection: () => {
|
|
101
113
|
closeTrigger.reset();
|
|
102
|
-
connection.close(1011);
|
|
114
|
+
connection.ws.close(1011);
|
|
103
115
|
return closeTrigger.wait();
|
|
104
116
|
}
|
|
105
117
|
};
|
|
@@ -109,7 +121,7 @@ var createConnectionDelayHandler = (params) => {
|
|
|
109
121
|
if (params?.admitConnection) {
|
|
110
122
|
(0, import_log.log)("delaying edge connection admission", void 0, {
|
|
111
123
|
F: __dxlog_file,
|
|
112
|
-
L:
|
|
124
|
+
L: 92,
|
|
113
125
|
S: void 0,
|
|
114
126
|
C: (f, a) => f(...a)
|
|
115
127
|
});
|
|
@@ -117,7 +129,7 @@ var createConnectionDelayHandler = (params) => {
|
|
|
117
129
|
callback(true);
|
|
118
130
|
(0, import_log.log)("edge connection admitted", void 0, {
|
|
119
131
|
F: __dxlog_file,
|
|
120
|
-
L:
|
|
132
|
+
L: 95,
|
|
121
133
|
S: void 0,
|
|
122
134
|
C: (f, a) => f(...a)
|
|
123
135
|
});
|
|
@@ -130,7 +142,7 @@ var createConnectionDelayHandler = (params) => {
|
|
|
130
142
|
var createResponseSender = (connection) => {
|
|
131
143
|
return (request, responsePayload) => {
|
|
132
144
|
const recipient = request.source;
|
|
133
|
-
connection().send(import_buf.buf.
|
|
145
|
+
void connection().send(import_buf.buf.create(import_messenger_pb.MessageSchema, {
|
|
134
146
|
source: {
|
|
135
147
|
identityKey: recipient.identityKey,
|
|
136
148
|
peerKey: recipient.peerKey
|
|
@@ -139,12 +151,11 @@ var createResponseSender = (connection) => {
|
|
|
139
151
|
payload: {
|
|
140
152
|
value: responsePayload
|
|
141
153
|
}
|
|
142
|
-
}))
|
|
154
|
+
}));
|
|
143
155
|
};
|
|
144
156
|
};
|
|
145
|
-
var
|
|
146
|
-
const
|
|
147
|
-
const requestPayload = params?.payloadDecoder ? params.payloadDecoder(request.payload.value) : import_chunk_ANV2HBEH.protocol.getPayload(request, import_messenger_pb.TextMessageSchema);
|
|
157
|
+
var decodePayload = async (request, params) => {
|
|
158
|
+
const requestPayload = params?.payloadDecoder ? params.payloadDecoder(request.payload.value) : import_chunk_ZOL3YSDR.protocol.getPayload(request, import_messenger_pb.TextMessageSchema);
|
|
148
159
|
return {
|
|
149
160
|
request,
|
|
150
161
|
requestPayload
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/testing/test-utils.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport WebSocket from 'isomorphic-ws';\n\nimport { Trigger } from '@dxos/async';\nimport { log } from '@dxos/log';\nimport { buf } from '@dxos/protocols/buf';\nimport { MessageSchema, TextMessageSchema, type Message } from '@dxos/protocols/buf/dxos/edge/messenger_pb';\n\nimport { protocol } from '../defs';\nimport { toUint8Array } from '../protocol';\n\nexport const DEFAULT_PORT = 8080;\n\ntype TestEdgeWsServerParams = {\n admitConnection?: Trigger;\n payloadDecoder?: (payload: Uint8Array) => any;\n messageHandler?: (payload: any) => Promise<Uint8Array | undefined>;\n};\n\nexport const createTestEdgeWsServer = async (port = DEFAULT_PORT, params?: TestEdgeWsServerParams) => {\n const
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,2BAAsB;AAEtB,mBAAwB;AACxB,iBAAoB;AACpB,iBAAoB;AACpB,0BAA+D;;
|
|
6
|
-
"names": ["DEFAULT_PORT", "createTestEdgeWsServer", "port", "params", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport WebSocket from 'isomorphic-ws';\n\nimport { Trigger } from '@dxos/async';\nimport { log } from '@dxos/log';\nimport { EdgeWebsocketProtocol } from '@dxos/protocols';\nimport { buf } from '@dxos/protocols/buf';\nimport { MessageSchema, TextMessageSchema, type Message } from '@dxos/protocols/buf/dxos/edge/messenger_pb';\n\nimport { protocol } from '../defs';\nimport { WebSocketMuxer } from '../edge-ws-muxer';\nimport { toUint8Array } from '../protocol';\n\nexport const DEFAULT_PORT = 8080;\n\ntype TestEdgeWsServerParams = {\n admitConnection?: Trigger;\n payloadDecoder?: (payload: Uint8Array) => any;\n messageHandler?: (payload: any) => Promise<Uint8Array | undefined>;\n};\n\nexport const createTestEdgeWsServer = async (port = DEFAULT_PORT, params?: TestEdgeWsServerParams) => {\n const wsServer = new WebSocket.Server({\n port,\n verifyClient: createConnectionDelayHandler(params),\n handleProtocols: () => [EdgeWebsocketProtocol.V1],\n });\n\n let connection: { ws: WebSocket; muxer: WebSocketMuxer } | undefined;\n\n const messageSink: any[] = [];\n const messageSourceLog: any[] = [];\n const closeTrigger = new Trigger();\n const sendResponseMessage = createResponseSender(() => connection!.muxer);\n\n wsServer.on('connection', (ws) => {\n const muxer = new WebSocketMuxer(ws);\n connection = { ws, muxer };\n ws.on('error', (err) => log.catch(err));\n ws.on('message', async (data) => {\n if (String(data) === '__ping__') {\n ws.send('__pong__');\n return;\n }\n const message = muxer.receiveData(await toUint8Array(data));\n if (!message) {\n return;\n }\n const { request, requestPayload } = await decodePayload(message, params);\n messageSourceLog.push(request.source);\n if (params?.messageHandler) {\n const responsePayload = await params.messageHandler(requestPayload);\n if (responsePayload && connection) {\n sendResponseMessage(request, responsePayload);\n }\n }\n log('message', { payload: requestPayload });\n messageSink.push(requestPayload);\n });\n\n ws.on('close', () => {\n connection = undefined;\n closeTrigger.wake();\n });\n });\n\n return {\n server: wsServer,\n messageSink,\n messageSourceLog,\n endpoint: `ws://127.0.0.1:${port}`,\n cleanup: () => wsServer.close(),\n currentConnection: () => connection,\n sendResponseMessage,\n sendMessage: (msg: Message) => {\n return connection!.muxer.send(msg);\n },\n closeConnection: () => {\n closeTrigger.reset();\n connection!.ws.close(1011);\n return closeTrigger.wait();\n },\n };\n};\n\nconst createConnectionDelayHandler = (params: TestEdgeWsServerParams | undefined) => {\n return (_: any, callback: (admit: boolean) => void) => {\n if (params?.admitConnection) {\n log('delaying edge connection admission');\n void params.admitConnection.wait().then(() => {\n callback(true);\n log('edge connection admitted');\n });\n } else {\n callback(true);\n }\n };\n};\n\nconst createResponseSender = (connection: () => WebSocketMuxer) => {\n return (request: Message, responsePayload: Uint8Array) => {\n const recipient = request.source!;\n void connection().send(\n buf.create(MessageSchema, {\n source: {\n identityKey: recipient.identityKey,\n peerKey: recipient.peerKey,\n },\n serviceId: request.serviceId!,\n payload: { value: responsePayload },\n }),\n );\n };\n};\n\nconst decodePayload = async (request: Message, params: TestEdgeWsServerParams | undefined) => {\n const requestPayload = params?.payloadDecoder\n ? params.payloadDecoder(request.payload!.value!)\n : protocol.getPayload(request, TextMessageSchema);\n return { request, requestPayload };\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["DEFAULT_PORT", "createTestEdgeWsServer", "port", "params", "wsServer", "WebSocket", "Server", "verifyClient", "createConnectionDelayHandler", "handleProtocols", "EdgeWebsocketProtocol", "V1", "connection", "messageSink", "messageSourceLog", "closeTrigger", "Trigger", "sendResponseMessage", "createResponseSender", "muxer", "on", "ws", "WebSocketMuxer", "err", "log", "catch", "data", "String", "send", "message", "receiveData", "toUint8Array", "request", "requestPayload", "decodePayload", "push", "source", "messageHandler", "responsePayload", "payload", "undefined", "wake", "server", "endpoint", "cleanup", "close", "currentConnection", "sendMessage", "msg", "closeConnection", "reset", "wait", "_", "callback", "admitConnection", "then", "recipient", "buf", "create", "MessageSchema", "identityKey", "peerKey", "serviceId", "value", "payloadDecoder", "protocol", "getPayload", "TextMessageSchema"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
|
|
3
|
+
// packages/core/mesh/edge-client/src/edge-ws-muxer.ts
|
|
4
|
+
import { Trigger } from "@dxos/async";
|
|
5
|
+
import { log } from "@dxos/log";
|
|
6
|
+
import { buf as buf2 } from "@dxos/protocols/buf";
|
|
7
|
+
import { MessageSchema as MessageSchema2 } from "@dxos/protocols/buf/dxos/edge/messenger_pb";
|
|
8
|
+
|
|
9
|
+
// packages/core/mesh/edge-client/src/defs.ts
|
|
10
|
+
import { bufWkt as bufWkt2 } from "@dxos/protocols/buf";
|
|
11
|
+
import { SwarmRequestSchema, SwarmResponseSchema, TextMessageSchema } from "@dxos/protocols/buf/dxos/edge/messenger_pb";
|
|
12
|
+
|
|
13
|
+
// packages/core/mesh/edge-client/src/protocol.ts
|
|
14
|
+
import { invariant } from "@dxos/invariant";
|
|
15
|
+
import { buf, bufWkt } from "@dxos/protocols/buf";
|
|
16
|
+
import { MessageSchema } from "@dxos/protocols/buf/dxos/edge/messenger_pb";
|
|
17
|
+
import { bufferToArray } from "@dxos/util";
|
|
18
|
+
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/mesh/edge-client/src/protocol.ts";
|
|
19
|
+
var getTypename = (typeName) => `type.googleapis.com/${typeName}`;
|
|
20
|
+
var Protocol = class {
|
|
21
|
+
constructor(types) {
|
|
22
|
+
this._typeRegistry = buf.createRegistry(...types);
|
|
23
|
+
}
|
|
24
|
+
get typeRegistry() {
|
|
25
|
+
return this._typeRegistry;
|
|
26
|
+
}
|
|
27
|
+
toJson(message) {
|
|
28
|
+
try {
|
|
29
|
+
return buf.toJson(MessageSchema, message, {
|
|
30
|
+
registry: this.typeRegistry
|
|
31
|
+
});
|
|
32
|
+
} catch (err) {
|
|
33
|
+
return {
|
|
34
|
+
type: this.getPayloadType(message)
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Return the payload with the given type.
|
|
40
|
+
*/
|
|
41
|
+
getPayload(message, type) {
|
|
42
|
+
invariant(message.payload, void 0, {
|
|
43
|
+
F: __dxlog_file,
|
|
44
|
+
L: 40,
|
|
45
|
+
S: this,
|
|
46
|
+
A: [
|
|
47
|
+
"message.payload",
|
|
48
|
+
""
|
|
49
|
+
]
|
|
50
|
+
});
|
|
51
|
+
const payloadTypename = this.getPayloadType(message);
|
|
52
|
+
if (type && type.typeName !== payloadTypename) {
|
|
53
|
+
throw new Error(`Unexpected payload type: ${payloadTypename}; expected ${type.typeName}`);
|
|
54
|
+
}
|
|
55
|
+
invariant(bufWkt.anyIs(message.payload, type), `Unexpected payload type: ${payloadTypename}}`, {
|
|
56
|
+
F: __dxlog_file,
|
|
57
|
+
L: 46,
|
|
58
|
+
S: this,
|
|
59
|
+
A: [
|
|
60
|
+
"bufWkt.anyIs(message.payload, type)",
|
|
61
|
+
"`Unexpected payload type: ${payloadTypename}}`"
|
|
62
|
+
]
|
|
63
|
+
});
|
|
64
|
+
const payload = bufWkt.anyUnpack(message.payload, this.typeRegistry);
|
|
65
|
+
invariant(payload, `Empty payload: ${payloadTypename}}`, {
|
|
66
|
+
F: __dxlog_file,
|
|
67
|
+
L: 48,
|
|
68
|
+
S: this,
|
|
69
|
+
A: [
|
|
70
|
+
"payload",
|
|
71
|
+
"`Empty payload: ${payloadTypename}}`"
|
|
72
|
+
]
|
|
73
|
+
});
|
|
74
|
+
return payload;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get the payload type.
|
|
78
|
+
*/
|
|
79
|
+
getPayloadType(message) {
|
|
80
|
+
if (!message.payload) {
|
|
81
|
+
return void 0;
|
|
82
|
+
}
|
|
83
|
+
const [, type] = message.payload.typeUrl.split("/");
|
|
84
|
+
return type;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Create a packed message.
|
|
88
|
+
*/
|
|
89
|
+
createMessage(type, { source, target, payload, serviceId }) {
|
|
90
|
+
return buf.create(MessageSchema, {
|
|
91
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
92
|
+
source,
|
|
93
|
+
target,
|
|
94
|
+
serviceId,
|
|
95
|
+
payload: payload ? bufWkt.anyPack(type, buf.create(type, payload)) : void 0
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
var toUint8Array = async (data) => {
|
|
100
|
+
if (data instanceof Buffer) {
|
|
101
|
+
return bufferToArray(data);
|
|
102
|
+
}
|
|
103
|
+
if (data instanceof Blob) {
|
|
104
|
+
return new Uint8Array(await data.arrayBuffer());
|
|
105
|
+
}
|
|
106
|
+
throw new Error(`Unexpected datatype: ${data}`);
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
// packages/core/mesh/edge-client/src/defs.ts
|
|
110
|
+
var protocol = new Protocol([
|
|
111
|
+
SwarmRequestSchema,
|
|
112
|
+
SwarmResponseSchema,
|
|
113
|
+
TextMessageSchema,
|
|
114
|
+
bufWkt2.AnySchema
|
|
115
|
+
]);
|
|
116
|
+
|
|
117
|
+
// packages/core/mesh/edge-client/src/edge-ws-muxer.ts
|
|
118
|
+
var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/core/mesh/edge-client/src/edge-ws-muxer.ts";
|
|
119
|
+
var FLAG_SEGMENT_SEQ = 1;
|
|
120
|
+
var FLAG_SEGMENT_SEQ_TERMINATED = 1 << 1;
|
|
121
|
+
var CLOUDFLARE_MESSAGE_MAX_BYTES = 1e3 * 1e3;
|
|
122
|
+
var CLOUDFLARE_RPC_MAX_BYTES = 32 * 1e3 * 1e3;
|
|
123
|
+
var MAX_CHUNK_LENGTH = 16384;
|
|
124
|
+
var MAX_BUFFERED_AMOUNT = CLOUDFLARE_MESSAGE_MAX_BYTES;
|
|
125
|
+
var BUFFER_FULL_BACKOFF_TIMEOUT = 100;
|
|
126
|
+
var WebSocketMuxer = class {
|
|
127
|
+
constructor(_ws, config) {
|
|
128
|
+
this._ws = _ws;
|
|
129
|
+
this._inMessageAccumulator = /* @__PURE__ */ new Map();
|
|
130
|
+
this._outMessageChunks = /* @__PURE__ */ new Map();
|
|
131
|
+
this._outMessageChannelByService = /* @__PURE__ */ new Map();
|
|
132
|
+
this._maxChunkLength = config?.maxChunkLength ?? MAX_CHUNK_LENGTH;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Resolves when all the message chunks get enqueued for sending.
|
|
136
|
+
*/
|
|
137
|
+
async send(message) {
|
|
138
|
+
const binary = buf2.toBinary(MessageSchema2, message);
|
|
139
|
+
const channelId = this._resolveChannel(message);
|
|
140
|
+
if (channelId == null && binary.byteLength > CLOUDFLARE_MESSAGE_MAX_BYTES || binary.byteLength > CLOUDFLARE_RPC_MAX_BYTES) {
|
|
141
|
+
log.error("Large message dropped", {
|
|
142
|
+
byteLength: binary.byteLength,
|
|
143
|
+
serviceId: message.serviceId,
|
|
144
|
+
payload: protocol.getPayloadType(message),
|
|
145
|
+
channelId
|
|
146
|
+
}, {
|
|
147
|
+
F: __dxlog_file2,
|
|
148
|
+
L: 62,
|
|
149
|
+
S: this,
|
|
150
|
+
C: (f, a) => f(...a)
|
|
151
|
+
});
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
if (channelId == null || binary.length < this._maxChunkLength) {
|
|
155
|
+
const flags = Buffer.from([
|
|
156
|
+
0
|
|
157
|
+
]);
|
|
158
|
+
this._ws.send(Buffer.concat([
|
|
159
|
+
flags,
|
|
160
|
+
binary
|
|
161
|
+
]));
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const terminatorSentTrigger = new Trigger();
|
|
165
|
+
const messageChunks = [];
|
|
166
|
+
for (let i = 0; i < binary.length; i += this._maxChunkLength) {
|
|
167
|
+
const chunk = binary.slice(i, i + this._maxChunkLength);
|
|
168
|
+
const isLastChunk = i + this._maxChunkLength >= binary.length;
|
|
169
|
+
if (isLastChunk) {
|
|
170
|
+
const flags = Buffer.from([
|
|
171
|
+
FLAG_SEGMENT_SEQ | FLAG_SEGMENT_SEQ_TERMINATED,
|
|
172
|
+
channelId
|
|
173
|
+
]);
|
|
174
|
+
messageChunks.push({
|
|
175
|
+
payload: Buffer.concat([
|
|
176
|
+
flags,
|
|
177
|
+
chunk
|
|
178
|
+
]),
|
|
179
|
+
trigger: terminatorSentTrigger
|
|
180
|
+
});
|
|
181
|
+
} else {
|
|
182
|
+
const flags = Buffer.from([
|
|
183
|
+
FLAG_SEGMENT_SEQ,
|
|
184
|
+
channelId
|
|
185
|
+
]);
|
|
186
|
+
messageChunks.push({
|
|
187
|
+
payload: Buffer.concat([
|
|
188
|
+
flags,
|
|
189
|
+
chunk
|
|
190
|
+
])
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
const queuedMessages = this._outMessageChunks.get(channelId);
|
|
195
|
+
if (queuedMessages) {
|
|
196
|
+
queuedMessages.push(...messageChunks);
|
|
197
|
+
} else {
|
|
198
|
+
this._outMessageChunks.set(channelId, messageChunks);
|
|
199
|
+
}
|
|
200
|
+
this._sendChunkedMessages();
|
|
201
|
+
return terminatorSentTrigger.wait();
|
|
202
|
+
}
|
|
203
|
+
receiveData(data) {
|
|
204
|
+
if ((data[0] & FLAG_SEGMENT_SEQ) === 0) {
|
|
205
|
+
return buf2.fromBinary(MessageSchema2, data.slice(1));
|
|
206
|
+
}
|
|
207
|
+
const [flags, channelId, ...payload] = data;
|
|
208
|
+
let chunkAccumulator = this._inMessageAccumulator.get(channelId);
|
|
209
|
+
if (chunkAccumulator) {
|
|
210
|
+
chunkAccumulator.push(Buffer.from(payload));
|
|
211
|
+
} else {
|
|
212
|
+
chunkAccumulator = [
|
|
213
|
+
Buffer.from(payload)
|
|
214
|
+
];
|
|
215
|
+
this._inMessageAccumulator.set(channelId, chunkAccumulator);
|
|
216
|
+
}
|
|
217
|
+
if ((flags & FLAG_SEGMENT_SEQ_TERMINATED) === 0) {
|
|
218
|
+
return void 0;
|
|
219
|
+
}
|
|
220
|
+
const message = buf2.fromBinary(MessageSchema2, Buffer.concat(chunkAccumulator));
|
|
221
|
+
this._inMessageAccumulator.delete(channelId);
|
|
222
|
+
return message;
|
|
223
|
+
}
|
|
224
|
+
destroy() {
|
|
225
|
+
if (this._sendTimeout) {
|
|
226
|
+
clearTimeout(this._sendTimeout);
|
|
227
|
+
this._sendTimeout = void 0;
|
|
228
|
+
}
|
|
229
|
+
for (const channelChunks of this._outMessageChunks.values()) {
|
|
230
|
+
channelChunks.forEach((chunk) => chunk.trigger?.wake());
|
|
231
|
+
}
|
|
232
|
+
this._outMessageChunks.clear();
|
|
233
|
+
this._inMessageAccumulator.clear();
|
|
234
|
+
this._outMessageChannelByService.clear();
|
|
235
|
+
}
|
|
236
|
+
_sendChunkedMessages() {
|
|
237
|
+
if (this._sendTimeout) {
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
const send = () => {
|
|
241
|
+
if (this._ws.readyState === 2 || this._ws.readyState === 3) {
|
|
242
|
+
log.warn("send called for closed websocket", void 0, {
|
|
243
|
+
F: __dxlog_file2,
|
|
244
|
+
L: 146,
|
|
245
|
+
S: this,
|
|
246
|
+
C: (f, a) => f(...a)
|
|
247
|
+
});
|
|
248
|
+
this._sendTimeout = void 0;
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
let timeout = 0;
|
|
252
|
+
const emptyChannels = [];
|
|
253
|
+
for (const [channelId, messages] of this._outMessageChunks.entries()) {
|
|
254
|
+
if (this._ws.bufferedAmount != null) {
|
|
255
|
+
if (this._ws.bufferedAmount + MAX_CHUNK_LENGTH > MAX_BUFFERED_AMOUNT) {
|
|
256
|
+
timeout = BUFFER_FULL_BACKOFF_TIMEOUT;
|
|
257
|
+
break;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
const nextMessage = messages.shift();
|
|
261
|
+
if (nextMessage) {
|
|
262
|
+
this._ws.send(nextMessage.payload);
|
|
263
|
+
nextMessage.trigger?.wake();
|
|
264
|
+
} else {
|
|
265
|
+
emptyChannels.push(channelId);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
emptyChannels.forEach((channelId) => this._outMessageChunks.delete(channelId));
|
|
269
|
+
if (this._outMessageChunks.size > 0) {
|
|
270
|
+
this._sendTimeout = setTimeout(send, timeout);
|
|
271
|
+
} else {
|
|
272
|
+
this._sendTimeout = void 0;
|
|
273
|
+
}
|
|
274
|
+
};
|
|
275
|
+
this._sendTimeout = setTimeout(send);
|
|
276
|
+
}
|
|
277
|
+
_resolveChannel(message) {
|
|
278
|
+
if (!message.serviceId) {
|
|
279
|
+
return void 0;
|
|
280
|
+
}
|
|
281
|
+
let id = this._outMessageChannelByService.get(message.serviceId);
|
|
282
|
+
if (!id) {
|
|
283
|
+
id = this._outMessageChannelByService.size + 1;
|
|
284
|
+
this._outMessageChannelByService.set(message.serviceId, id);
|
|
285
|
+
}
|
|
286
|
+
return id;
|
|
287
|
+
}
|
|
288
|
+
};
|
|
289
|
+
var WebSocket;
|
|
290
|
+
(function(WebSocket2) {
|
|
291
|
+
WebSocket2[WebSocket2["CLOSING"] = 2] = "CLOSING";
|
|
292
|
+
WebSocket2[WebSocket2["CLOSED"] = 3] = "CLOSED";
|
|
293
|
+
})(WebSocket || (WebSocket = {}));
|
|
294
|
+
|
|
295
|
+
export {
|
|
296
|
+
getTypename,
|
|
297
|
+
Protocol,
|
|
298
|
+
toUint8Array,
|
|
299
|
+
protocol,
|
|
300
|
+
CLOUDFLARE_MESSAGE_MAX_BYTES,
|
|
301
|
+
CLOUDFLARE_RPC_MAX_BYTES,
|
|
302
|
+
WebSocketMuxer
|
|
303
|
+
};
|
|
304
|
+
//# sourceMappingURL=chunk-25HGRGNZ.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/edge-ws-muxer.ts", "../../../src/defs.ts", "../../../src/protocol.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Trigger } from '@dxos/async';\nimport { log } from '@dxos/log';\nimport { buf } from '@dxos/protocols/buf';\nimport { MessageSchema, type Message } from '@dxos/protocols/buf/dxos/edge/messenger_pb';\n\nimport { protocol } from './defs';\n\n/**\n * 0000 0001 - message contains a part of segmented message chunk sequence.\n * The next byte defines a channel id and the rest of the message contains a part of Message proto binary.\n * Messages from different channels might interleave.\n * When the flag is NOT set the rest of the message should be interpreted as the valid Message proto binary.\n */\nconst FLAG_SEGMENT_SEQ = 1;\n/**\n * 0000 0010 - message terminates a segmented message chunk sequence.\n * All the chunks accumulated for the channel specified by the second byte can be concatenated\n * and interpreted as a valid Message proto binary.\n */\nconst FLAG_SEGMENT_SEQ_TERMINATED = 1 << 1;\n\n/**\n * https://developers.cloudflare.com/durable-objects/platform/limits/\n */\nexport const CLOUDFLARE_MESSAGE_MAX_BYTES = 1000 * 1000; // 1MB\nexport const CLOUDFLARE_RPC_MAX_BYTES = 32 * 1000 * 1000; // 32MB\n\nconst MAX_CHUNK_LENGTH = 16384;\nconst MAX_BUFFERED_AMOUNT = CLOUDFLARE_MESSAGE_MAX_BYTES;\nconst BUFFER_FULL_BACKOFF_TIMEOUT = 100;\n\nexport class WebSocketMuxer {\n private readonly _inMessageAccumulator = new Map<number, Buffer[]>();\n private readonly _outMessageChunks = new Map<number, MessageChunk[]>();\n private readonly _outMessageChannelByService = new Map<string, number>();\n\n private _sendTimeout: any | undefined;\n\n private readonly _maxChunkLength: number;\n\n constructor(\n private readonly _ws: WebSocketCompat,\n config?: { maxChunkLength: number },\n ) {\n this._maxChunkLength = config?.maxChunkLength ?? MAX_CHUNK_LENGTH;\n }\n\n /**\n * Resolves when all the message chunks get enqueued for sending.\n */\n public async send(message: Message): Promise<void> {\n const binary = buf.toBinary(MessageSchema, message);\n const channelId = this._resolveChannel(message);\n if (\n (channelId == null && binary.byteLength > CLOUDFLARE_MESSAGE_MAX_BYTES) ||\n binary.byteLength > CLOUDFLARE_RPC_MAX_BYTES\n ) {\n log.error('Large message dropped', {\n byteLength: binary.byteLength,\n serviceId: message.serviceId,\n payload: protocol.getPayloadType(message),\n channelId,\n });\n return;\n }\n\n if (channelId == null || binary.length < this._maxChunkLength) {\n const flags = Buffer.from([0]);\n this._ws.send(Buffer.concat([flags, binary]));\n return;\n }\n\n const terminatorSentTrigger = new Trigger();\n const messageChunks: MessageChunk[] = [];\n for (let i = 0; i < binary.length; i += this._maxChunkLength) {\n const chunk = binary.slice(i, i + this._maxChunkLength);\n const isLastChunk = i + this._maxChunkLength >= binary.length;\n if (isLastChunk) {\n const flags = Buffer.from([FLAG_SEGMENT_SEQ | FLAG_SEGMENT_SEQ_TERMINATED, channelId]);\n messageChunks.push({ payload: Buffer.concat([flags, chunk]), trigger: terminatorSentTrigger });\n } else {\n const flags = Buffer.from([FLAG_SEGMENT_SEQ, channelId]);\n messageChunks.push({ payload: Buffer.concat([flags, chunk]) });\n }\n }\n\n const queuedMessages = this._outMessageChunks.get(channelId);\n if (queuedMessages) {\n queuedMessages.push(...messageChunks);\n } else {\n this._outMessageChunks.set(channelId, messageChunks);\n }\n\n this._sendChunkedMessages();\n\n return terminatorSentTrigger.wait();\n }\n\n public receiveData(data: Uint8Array): Message | undefined {\n if ((data[0] & FLAG_SEGMENT_SEQ) === 0) {\n return buf.fromBinary(MessageSchema, data.slice(1));\n }\n\n const [flags, channelId, ...payload] = data;\n let chunkAccumulator = this._inMessageAccumulator.get(channelId);\n if (chunkAccumulator) {\n chunkAccumulator.push(Buffer.from(payload));\n } else {\n chunkAccumulator = [Buffer.from(payload)];\n this._inMessageAccumulator.set(channelId, chunkAccumulator);\n }\n\n if ((flags & FLAG_SEGMENT_SEQ_TERMINATED) === 0) {\n return undefined;\n }\n\n const message = buf.fromBinary(MessageSchema, Buffer.concat(chunkAccumulator));\n this._inMessageAccumulator.delete(channelId);\n return message;\n }\n\n public destroy() {\n if (this._sendTimeout) {\n clearTimeout(this._sendTimeout);\n this._sendTimeout = undefined;\n }\n for (const channelChunks of this._outMessageChunks.values()) {\n channelChunks.forEach((chunk) => chunk.trigger?.wake());\n }\n this._outMessageChunks.clear();\n this._inMessageAccumulator.clear();\n this._outMessageChannelByService.clear();\n }\n\n private _sendChunkedMessages() {\n if (this._sendTimeout) {\n return;\n }\n\n const send = () => {\n if (this._ws.readyState === WebSocket.CLOSING || this._ws.readyState === WebSocket.CLOSED) {\n log.warn('send called for closed websocket');\n this._sendTimeout = undefined;\n return;\n }\n\n let timeout = 0;\n const emptyChannels: number[] = [];\n for (const [channelId, messages] of this._outMessageChunks.entries()) {\n if (this._ws.bufferedAmount != null) {\n if (this._ws.bufferedAmount + MAX_CHUNK_LENGTH > MAX_BUFFERED_AMOUNT) {\n timeout = BUFFER_FULL_BACKOFF_TIMEOUT;\n break;\n }\n }\n\n const nextMessage = messages.shift();\n if (nextMessage) {\n this._ws.send(nextMessage.payload);\n nextMessage.trigger?.wake();\n } else {\n emptyChannels.push(channelId);\n }\n }\n\n emptyChannels.forEach((channelId) => this._outMessageChunks.delete(channelId));\n\n if (this._outMessageChunks.size > 0) {\n this._sendTimeout = setTimeout(send, timeout);\n } else {\n this._sendTimeout = undefined;\n }\n };\n this._sendTimeout = setTimeout(send);\n }\n\n private _resolveChannel(message: Message): number | undefined {\n if (!message.serviceId) {\n return undefined;\n }\n let id = this._outMessageChannelByService.get(message.serviceId);\n if (!id) {\n id = this._outMessageChannelByService.size + 1;\n this._outMessageChannelByService.set(message.serviceId, id);\n }\n return id;\n }\n}\n\ntype WebSocketCompat = {\n readonly readyState: number;\n /**\n * Not available in workerd.\n */\n bufferedAmount?: number;\n send(message: (ArrayBuffer | ArrayBufferView) | string): void;\n};\n\ntype MessageChunk = {\n payload: Buffer;\n /**\n * Wakes when the payload is enqueued by WebSocket.\n */\n trigger?: Trigger;\n};\n\n/**\n * To avoid using isomorphic-ws on edge.\n */\nenum WebSocket {\n CLOSING = 2,\n CLOSED = 3,\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { bufWkt } from '@dxos/protocols/buf';\nimport { SwarmRequestSchema, SwarmResponseSchema, TextMessageSchema } from '@dxos/protocols/buf/dxos/edge/messenger_pb';\n\nimport { Protocol } from './protocol';\n\nexport const protocol = new Protocol([SwarmRequestSchema, SwarmResponseSchema, TextMessageSchema, bufWkt.AnySchema]);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { invariant } from '@dxos/invariant';\nimport { buf, bufWkt } from '@dxos/protocols/buf';\nimport { type Message, MessageSchema, type PeerSchema } from '@dxos/protocols/buf/dxos/edge/messenger_pb';\nimport { bufferToArray } from '@dxos/util';\n\nexport type PeerData = buf.MessageInitShape<typeof PeerSchema>;\n\nexport const getTypename = (typeName: string) => `type.googleapis.com/${typeName}`;\n\n/**\n * NOTE: The type registry should be extended with all message types.\n */\nexport class Protocol {\n private readonly _typeRegistry: buf.Registry;\n\n constructor(types: buf.DescMessage[]) {\n this._typeRegistry = buf.createRegistry(...types);\n }\n\n get typeRegistry(): buf.Registry {\n return this._typeRegistry;\n }\n\n toJson(message: Message): any {\n try {\n return buf.toJson(MessageSchema, message, { registry: this.typeRegistry });\n } catch (err) {\n return { type: this.getPayloadType(message) };\n }\n }\n\n /**\n * Return the payload with the given type.\n */\n getPayload<Desc extends buf.DescMessage>(message: Message, type: Desc): buf.MessageShape<Desc> {\n invariant(message.payload);\n const payloadTypename = this.getPayloadType(message);\n if (type && type.typeName !== payloadTypename) {\n throw new Error(`Unexpected payload type: ${payloadTypename}; expected ${type.typeName}`);\n }\n\n invariant(bufWkt.anyIs(message.payload, type), `Unexpected payload type: ${payloadTypename}}`);\n const payload = bufWkt.anyUnpack(message.payload, this.typeRegistry) as buf.MessageShape<Desc>;\n invariant(payload, `Empty payload: ${payloadTypename}}`);\n return payload;\n }\n\n /**\n * Get the payload type.\n */\n getPayloadType(message: Message): string | undefined {\n if (!message.payload) {\n return undefined;\n }\n\n const [, type] = message.payload.typeUrl.split('/');\n return type;\n }\n\n /**\n * Create a packed message.\n */\n createMessage<Desc extends buf.DescMessage>(\n type: Desc,\n {\n source,\n target,\n payload,\n serviceId,\n }: {\n source?: PeerData;\n target?: PeerData[];\n payload?: buf.MessageInitShape<Desc>;\n serviceId?: string;\n },\n ) {\n return buf.create(MessageSchema, {\n timestamp: new Date().toISOString(),\n source,\n target,\n serviceId,\n payload: payload ? bufWkt.anyPack(type, buf.create(type, payload)) : undefined,\n });\n }\n}\n\n/**\n * Convert websocket data to Uint8Array.\n */\nexport const toUint8Array = async (data: any): Promise<Uint8Array> => {\n // Node.\n if (data instanceof Buffer) {\n return bufferToArray(data);\n }\n\n // Browser.\n if (data instanceof Blob) {\n return new Uint8Array(await (data as Blob).arrayBuffer());\n }\n\n throw new Error(`Unexpected datatype: ${data}`);\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Trigger", "log", "buf", "MessageSchema", "bufWkt", "SwarmRequestSchema", "SwarmResponseSchema", "TextMessageSchema", "invariant", "buf", "bufWkt", "MessageSchema", "bufferToArray", "getTypename", "typeName", "Protocol", "constructor", "types", "_typeRegistry", "createRegistry", "typeRegistry", "toJson", "message", "registry", "err", "type", "getPayloadType", "getPayload", "payload", "payloadTypename", "Error", "anyIs", "anyUnpack", "undefined", "typeUrl", "split", "createMessage", "source", "target", "serviceId", "create", "timestamp", "Date", "toISOString", "anyPack", "toUint8Array", "data", "Buffer", "Blob", "Uint8Array", "arrayBuffer", "protocol", "Protocol", "SwarmRequestSchema", "SwarmResponseSchema", "TextMessageSchema", "bufWkt", "AnySchema", "FLAG_SEGMENT_SEQ", "FLAG_SEGMENT_SEQ_TERMINATED", "CLOUDFLARE_MESSAGE_MAX_BYTES", "CLOUDFLARE_RPC_MAX_BYTES", "MAX_CHUNK_LENGTH", "MAX_BUFFERED_AMOUNT", "BUFFER_FULL_BACKOFF_TIMEOUT", "WebSocketMuxer", "constructor", "_ws", "config", "_inMessageAccumulator", "Map", "_outMessageChunks", "_outMessageChannelByService", "_maxChunkLength", "maxChunkLength", "send", "message", "binary", "buf", "toBinary", "MessageSchema", "channelId", "_resolveChannel", "byteLength", "log", "error", "serviceId", "payload", "protocol", "getPayloadType", "length", "flags", "Buffer", "from", "concat", "terminatorSentTrigger", "Trigger", "messageChunks", "i", "chunk", "slice", "isLastChunk", "push", "trigger", "queuedMessages", "get", "set", "_sendChunkedMessages", "wait", "receiveData", "data", "fromBinary", "chunkAccumulator", "undefined", "delete", "destroy", "_sendTimeout", "clearTimeout", "channelChunks", "values", "forEach", "wake", "clear", "readyState", "warn", "timeout", "emptyChannels", "messages", "entries", "bufferedAmount", "nextMessage", "shift", "size", "setTimeout", "id", "WebSocket"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
CLOUDFLARE_MESSAGE_MAX_BYTES,
|
|
4
|
+
CLOUDFLARE_RPC_MAX_BYTES,
|
|
5
|
+
WebSocketMuxer
|
|
6
|
+
} from "./chunk-25HGRGNZ.mjs";
|
|
7
|
+
export {
|
|
8
|
+
CLOUDFLARE_MESSAGE_MAX_BYTES,
|
|
9
|
+
CLOUDFLARE_RPC_MAX_BYTES,
|
|
10
|
+
WebSocketMuxer
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=edge-ws-muxer.mjs.map
|