@dxos/signal 0.8.1 → 0.8.2-main.10c050d
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/node/index.cjs.map +2 -2
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs.map +2 -2
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/signal-server-runner.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/tsconfig.json +1 -11
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/signal-server-runner.ts"],
|
|
4
4
|
"sourcesContent": ["//\n// Copyright 2021 DXOS.org\n//\n\nimport find from 'find-process';\nimport fetch from 'node-fetch';\nimport { type ChildProcessWithoutNullStreams, spawn } from 'node:child_process';\nimport fs from 'node:fs';\nimport path, { dirname } from 'node:path';\nimport pkgUp from 'pkg-up';\n\nimport { sleep } from '@dxos/async';\nimport { log } from '@dxos/log';\nimport { randomInt } from '@dxos/util';\n\ninterface TestBrokerOptions {\n binCommand: string;\n signalArguments: string[];\n cwd?: string;\n port?: number;\n timeout?: number;\n env?: Record<string, string>;\n killExisting?: boolean;\n onError?: (err: any) => void;\n\n /**\n * Allows arbitrary commands. WARNING: It stalls on Linux machine if `true`.\n */\n shell?: boolean;\n}\n\n// TODO(burdon): Convert to TestBuilder pattern.\nexport class SignalServerRunner {\n private readonly _binCommand: string;\n private readonly _signalArguments: string[];\n private readonly _cwd?: string;\n private readonly _env: Record<string, string>;\n private readonly _shell: boolean;\n private readonly _killExisting: boolean;\n private readonly onError?: (err: any) => void;\n\n private _startRetries = 0;\n private readonly _retriesLimit = 3;\n private _port: number | undefined;\n private readonly _timeout: number;\n private _serverProcess: ChildProcessWithoutNullStreams | undefined;\n\n constructor({\n binCommand,\n signalArguments,\n cwd,\n port,\n timeout = 60_000,\n env = {},\n shell = false,\n killExisting = false,\n onError,\n }: TestBrokerOptions) {\n this._binCommand = binCommand;\n this._signalArguments = signalArguments;\n this._cwd = cwd;\n this._port = port;\n this._timeout = timeout;\n this._env = env;\n this._shell = shell;\n this._killExisting = killExisting;\n this.onError = onError;\n }\n\n public async startProcess(): Promise<ChildProcessWithoutNullStreams> {\n if (this._cwd && !fs.existsSync(this._cwd)) {\n throw new Error(`CWD not exists: ${this._cwd}`);\n }\n if (!this._port) {\n // find a port that does not have another process listening on it.\n while (true) {\n this._port = randomInt(10000, 50000);\n const pid = await checkPort(this._port);\n\n if (pid.length === 0) {\n break;\n }\n }\n } else {\n const pid = await checkPort(this._port);\n if (pid.length > 0) {\n if (this._killExisting) {\n log.warn(`Port ${this._port} is already in use by process ${pid}, killing it`);\n // TODO(nf): verify the process is actually a signal server\n process.kill(-Number(pid), 'SIGINT');\n } else {\n throw new Error(`Port ${this._port} is already in use by process ${pid}`);\n }\n }\n }\n\n log('starting', {\n binCommand: this._binCommand,\n signalArguments: this._signalArguments,\n cwd: this._cwd,\n port: this._port,\n });\n\n const server = spawn(this._binCommand, [...this._signalArguments, '--port', this._port.toString()], {\n cwd: this._cwd,\n shell: this._shell,\n env: {\n ...process.env,\n ...this._env,\n },\n // Force creation of process group to ensure all child processes are killed.\n // https://nodejs.org/api/child_process.html#optionsdetached\n detached: true,\n });\n\n server.stdout.on('data', (data) => {\n log(`TestServer stdout: ${data}`);\n });\n\n server.stderr.on('data', (data) => {\n log.info(`TestServer stderr: ${data}`);\n });\n\n server.on('error', (err) => {\n log.error(`TestServer ERROR: ${err}`);\n this.onError?.(err);\n });\n\n server.on('close', (code) => {\n if ((code! -= 0)) {\n if (this.onError) {\n this.onError?.(new Error(`TestServer exited with code ${code}`));\n } else {\n throw new Error(`TestServer exited with code ${code}`);\n }\n } else {\n log.info(`TestServer exited with code ${code}`);\n }\n });\n\n this._serverProcess = server;\n return server;\n }\n\n public async waitUntilStarted(): Promise<void> {\n let waited = 0;\n const waitInc = 20;\n while (waited < this._timeout) {\n try {\n const response = await fetch(`http://localhost:${this._port}/.well-known/dx/signal`);\n log(`Fetching broker. Response=${JSON.stringify(response)}`);\n return;\n } catch (err) {\n await sleep(waitInc);\n waited = waited + waitInc;\n }\n }\n\n if (waited >= this._timeout) {\n await this.stop();\n await this.startProcess();\n this._startRetries++;\n if (this._startRetries > this._retriesLimit) {\n throw new Error(`Test Signal server was not started in ${this._retriesLimit} retries`);\n }\n\n return await this.waitUntilStarted();\n }\n }\n\n public async stop(): Promise<void> {\n const pid = this._serverProcess?.pid;\n if (!pid) {\n log.warn('pid not found');\n return;\n }\n log.info(`sending SIGINT to process group ${pid}`);\n // kill process group so that all child processes can be killed, e.g. https://github.com/golang/go/issues/40467\n try {\n const delivered = process.kill(-pid, 'SIGINT');\n if (!delivered) {\n log.warn('kill signal was not delivered to child process');\n }\n } catch (err: any) {\n log.warn('kill error', { err });\n }\n }\n\n public url(): string {\n return `ws://localhost:${this._port}/.well-known/dx/signal`;\n }\n}\nconst ARCH = ['x64', 'amd64', 'ppc64'].includes(process.arch)\n ? 'amd64'\n : ['arm64'].includes(process.arch)\n ? 'arm64'\n : '32';\n\nconst OS = process.platform;\n\n/**\n * Creates a test instance of the signal server with swarming disabled and starts it.\n *\n * @param port Port to start the signal server on, random by default.\n */\n// TODO(burdon): Convert to TestBuilder pattern.\nexport const runTestSignalServer = async ({\n port,\n mode = 'server',\n killExisting = false,\n}: {\n port?: number;\n\n /**\n * Signal binary mode, `server` is in memory implementation.\n * @see https://github.com/dxos/kube\n */\n mode?: 'client' | 'server' | 'p2pserver' | 'keypair' | 'pubsubserver';\n killExisting?: boolean;\n} = {}): Promise<SignalServerRunner> => {\n if (ARCH === '32') {\n throw new Error('32 bit architecture not supported');\n }\n\n if (!['darwin', 'linux'].includes(OS)) {\n throw new Error(`Unsupported platform: ${OS}`);\n }\n\n const binPath = `./signal-test-${OS}-${ARCH}`;\n const server = new SignalServerRunner({\n binCommand: binPath,\n signalArguments: [mode],\n cwd: path.join(dirname(pkgUp.sync({ cwd: __dirname })!), 'bin'),\n port,\n killExisting,\n });\n await server.startProcess();\n await server.waitUntilStarted();\n return server;\n};\n\nexport const checkPort = async (port: number) => {\n let pid = '';\n try {\n const list = await find('port', port);\n if (list.length > 0) {\n pid = list[0].pid.toString();\n }\n } catch (err) {\n if (typeof err === 'object' && err !== null) {\n // lsof responds with status 1 if pattern does match, along with other errors :(, so this is the best we can do\n if ((err as Record<string, unknown>).status !== 1) {\n throw err;\n }\n } else {\n throw err;\n }\n }\n return pid;\n};\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,0BAAiB;AACjB,wBAAkB;AAClB,gCAA2D;AAC3D,qBAAe;AACf,uBAA8B;AAC9B,oBAAkB;AAElB,mBAAsB;AACtB,iBAAoB;AACpB,kBAA0B;;AAmBnB,IAAMA,qBAAN,MAAMA;
|
|
6
|
-
"names": ["SignalServerRunner", "
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["SignalServerRunner", "binCommand", "signalArguments", "cwd", "port", "timeout", "env", "shell", "killExisting", "onError", "_startRetries", "_retriesLimit", "_binCommand", "_signalArguments", "_cwd", "_port", "_timeout", "_env", "_shell", "_killExisting", "startProcess", "fs", "existsSync", "Error", "randomInt", "pid", "checkPort", "length", "log", "warn", "process", "kill", "Number", "server", "spawn", "toString", "detached", "stdout", "on", "data", "stderr", "info", "err", "error", "code", "_serverProcess", "waitUntilStarted", "waited", "waitInc", "response", "fetch", "JSON", "stringify", "sleep", "stop", "delivered", "url", "ARCH", "includes", "arch", "OS", "platform", "runTestSignalServer", "mode", "binPath", "path", "join", "dirname", "pkgUp", "sync", "__dirname", "list", "find", "status"]
|
|
7
7
|
}
|
package/dist/lib/node/meta.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/core/mesh/signal/src/signal-server-runner.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/core/mesh/signal/src/signal-server-runner.ts":{"bytes":26155,"imports":[{"path":"find-process","kind":"import-statement","external":true},{"path":"node-fetch","kind":"import-statement","external":true},{"path":"node:child_process","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"pkg-up","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/signal/src/index.ts":{"bytes":497,"imports":[{"path":"packages/core/mesh/signal/src/signal-server-runner.ts","kind":"import-statement","original":"./signal-server-runner"}],"format":"esm"}},"outputs":{"packages/core/mesh/signal/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":12234},"packages/core/mesh/signal/dist/lib/node/index.cjs":{"imports":[{"path":"find-process","kind":"import-statement","external":true},{"path":"node-fetch","kind":"import-statement","external":true},{"path":"node:child_process","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"pkg-up","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["SignalServerRunner","checkPort","runTestSignalServer"],"entryPoint":"packages/core/mesh/signal/src/index.ts","inputs":{"packages/core/mesh/signal/src/signal-server-runner.ts":{"bytesInOutput":6497},"packages/core/mesh/signal/src/index.ts":{"bytesInOutput":0}},"bytes":6658}}}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/signal-server-runner.ts"],
|
|
4
4
|
"sourcesContent": ["//\n// Copyright 2021 DXOS.org\n//\n\nimport find from 'find-process';\nimport fetch from 'node-fetch';\nimport { type ChildProcessWithoutNullStreams, spawn } from 'node:child_process';\nimport fs from 'node:fs';\nimport path, { dirname } from 'node:path';\nimport pkgUp from 'pkg-up';\n\nimport { sleep } from '@dxos/async';\nimport { log } from '@dxos/log';\nimport { randomInt } from '@dxos/util';\n\ninterface TestBrokerOptions {\n binCommand: string;\n signalArguments: string[];\n cwd?: string;\n port?: number;\n timeout?: number;\n env?: Record<string, string>;\n killExisting?: boolean;\n onError?: (err: any) => void;\n\n /**\n * Allows arbitrary commands. WARNING: It stalls on Linux machine if `true`.\n */\n shell?: boolean;\n}\n\n// TODO(burdon): Convert to TestBuilder pattern.\nexport class SignalServerRunner {\n private readonly _binCommand: string;\n private readonly _signalArguments: string[];\n private readonly _cwd?: string;\n private readonly _env: Record<string, string>;\n private readonly _shell: boolean;\n private readonly _killExisting: boolean;\n private readonly onError?: (err: any) => void;\n\n private _startRetries = 0;\n private readonly _retriesLimit = 3;\n private _port: number | undefined;\n private readonly _timeout: number;\n private _serverProcess: ChildProcessWithoutNullStreams | undefined;\n\n constructor({\n binCommand,\n signalArguments,\n cwd,\n port,\n timeout = 60_000,\n env = {},\n shell = false,\n killExisting = false,\n onError,\n }: TestBrokerOptions) {\n this._binCommand = binCommand;\n this._signalArguments = signalArguments;\n this._cwd = cwd;\n this._port = port;\n this._timeout = timeout;\n this._env = env;\n this._shell = shell;\n this._killExisting = killExisting;\n this.onError = onError;\n }\n\n public async startProcess(): Promise<ChildProcessWithoutNullStreams> {\n if (this._cwd && !fs.existsSync(this._cwd)) {\n throw new Error(`CWD not exists: ${this._cwd}`);\n }\n if (!this._port) {\n // find a port that does not have another process listening on it.\n while (true) {\n this._port = randomInt(10000, 50000);\n const pid = await checkPort(this._port);\n\n if (pid.length === 0) {\n break;\n }\n }\n } else {\n const pid = await checkPort(this._port);\n if (pid.length > 0) {\n if (this._killExisting) {\n log.warn(`Port ${this._port} is already in use by process ${pid}, killing it`);\n // TODO(nf): verify the process is actually a signal server\n process.kill(-Number(pid), 'SIGINT');\n } else {\n throw new Error(`Port ${this._port} is already in use by process ${pid}`);\n }\n }\n }\n\n log('starting', {\n binCommand: this._binCommand,\n signalArguments: this._signalArguments,\n cwd: this._cwd,\n port: this._port,\n });\n\n const server = spawn(this._binCommand, [...this._signalArguments, '--port', this._port.toString()], {\n cwd: this._cwd,\n shell: this._shell,\n env: {\n ...process.env,\n ...this._env,\n },\n // Force creation of process group to ensure all child processes are killed.\n // https://nodejs.org/api/child_process.html#optionsdetached\n detached: true,\n });\n\n server.stdout.on('data', (data) => {\n log(`TestServer stdout: ${data}`);\n });\n\n server.stderr.on('data', (data) => {\n log.info(`TestServer stderr: ${data}`);\n });\n\n server.on('error', (err) => {\n log.error(`TestServer ERROR: ${err}`);\n this.onError?.(err);\n });\n\n server.on('close', (code) => {\n if ((code! -= 0)) {\n if (this.onError) {\n this.onError?.(new Error(`TestServer exited with code ${code}`));\n } else {\n throw new Error(`TestServer exited with code ${code}`);\n }\n } else {\n log.info(`TestServer exited with code ${code}`);\n }\n });\n\n this._serverProcess = server;\n return server;\n }\n\n public async waitUntilStarted(): Promise<void> {\n let waited = 0;\n const waitInc = 20;\n while (waited < this._timeout) {\n try {\n const response = await fetch(`http://localhost:${this._port}/.well-known/dx/signal`);\n log(`Fetching broker. Response=${JSON.stringify(response)}`);\n return;\n } catch (err) {\n await sleep(waitInc);\n waited = waited + waitInc;\n }\n }\n\n if (waited >= this._timeout) {\n await this.stop();\n await this.startProcess();\n this._startRetries++;\n if (this._startRetries > this._retriesLimit) {\n throw new Error(`Test Signal server was not started in ${this._retriesLimit} retries`);\n }\n\n return await this.waitUntilStarted();\n }\n }\n\n public async stop(): Promise<void> {\n const pid = this._serverProcess?.pid;\n if (!pid) {\n log.warn('pid not found');\n return;\n }\n log.info(`sending SIGINT to process group ${pid}`);\n // kill process group so that all child processes can be killed, e.g. https://github.com/golang/go/issues/40467\n try {\n const delivered = process.kill(-pid, 'SIGINT');\n if (!delivered) {\n log.warn('kill signal was not delivered to child process');\n }\n } catch (err: any) {\n log.warn('kill error', { err });\n }\n }\n\n public url(): string {\n return `ws://localhost:${this._port}/.well-known/dx/signal`;\n }\n}\nconst ARCH = ['x64', 'amd64', 'ppc64'].includes(process.arch)\n ? 'amd64'\n : ['arm64'].includes(process.arch)\n ? 'arm64'\n : '32';\n\nconst OS = process.platform;\n\n/**\n * Creates a test instance of the signal server with swarming disabled and starts it.\n *\n * @param port Port to start the signal server on, random by default.\n */\n// TODO(burdon): Convert to TestBuilder pattern.\nexport const runTestSignalServer = async ({\n port,\n mode = 'server',\n killExisting = false,\n}: {\n port?: number;\n\n /**\n * Signal binary mode, `server` is in memory implementation.\n * @see https://github.com/dxos/kube\n */\n mode?: 'client' | 'server' | 'p2pserver' | 'keypair' | 'pubsubserver';\n killExisting?: boolean;\n} = {}): Promise<SignalServerRunner> => {\n if (ARCH === '32') {\n throw new Error('32 bit architecture not supported');\n }\n\n if (!['darwin', 'linux'].includes(OS)) {\n throw new Error(`Unsupported platform: ${OS}`);\n }\n\n const binPath = `./signal-test-${OS}-${ARCH}`;\n const server = new SignalServerRunner({\n binCommand: binPath,\n signalArguments: [mode],\n cwd: path.join(dirname(pkgUp.sync({ cwd: __dirname })!), 'bin'),\n port,\n killExisting,\n });\n await server.startProcess();\n await server.waitUntilStarted();\n return server;\n};\n\nexport const checkPort = async (port: number) => {\n let pid = '';\n try {\n const list = await find('port', port);\n if (list.length > 0) {\n pid = list[0].pid.toString();\n }\n } catch (err) {\n if (typeof err === 'object' && err !== null) {\n // lsof responds with status 1 if pattern does match, along with other errors :(, so this is the best we can do\n if ((err as Record<string, unknown>).status !== 1) {\n throw err;\n }\n } else {\n throw err;\n }\n }\n return pid;\n};\n"],
|
|
5
|
-
"mappings": ";;;AAIA,OAAOA,UAAU;AACjB,OAAOC,WAAW;AAClB,SAA8CC,aAAa;AAC3D,OAAOC,QAAQ;AACf,OAAOC,QAAQC,eAAe;AAC9B,OAAOC,WAAW;AAElB,SAASC,aAAa;AACtB,SAASC,WAAW;AACpB,SAASC,iBAAiB;;AAmBnB,IAAMC,qBAAN,MAAMA;
|
|
6
|
-
"names": ["find", "fetch", "spawn", "fs", "path", "dirname", "pkgUp", "sleep", "log", "randomInt", "SignalServerRunner", "
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["find", "fetch", "spawn", "fs", "path", "dirname", "pkgUp", "sleep", "log", "randomInt", "SignalServerRunner", "binCommand", "signalArguments", "cwd", "port", "timeout", "env", "shell", "killExisting", "onError", "_startRetries", "_retriesLimit", "_binCommand", "_signalArguments", "_cwd", "_port", "_timeout", "_env", "_shell", "_killExisting", "startProcess", "existsSync", "Error", "pid", "checkPort", "length", "warn", "process", "kill", "Number", "server", "toString", "detached", "stdout", "on", "data", "stderr", "info", "err", "error", "code", "_serverProcess", "waitUntilStarted", "waited", "waitInc", "response", "JSON", "stringify", "stop", "delivered", "url", "ARCH", "includes", "arch", "OS", "platform", "runTestSignalServer", "mode", "binPath", "join", "sync", "__dirname", "list", "status"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/core/mesh/signal/src/signal-server-runner.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/core/mesh/signal/src/signal-server-runner.ts":{"bytes":26155,"imports":[{"path":"find-process","kind":"import-statement","external":true},{"path":"node-fetch","kind":"import-statement","external":true},{"path":"node:child_process","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"pkg-up","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/signal/src/index.ts":{"bytes":497,"imports":[{"path":"packages/core/mesh/signal/src/signal-server-runner.ts","kind":"import-statement","original":"./signal-server-runner"}],"format":"esm"}},"outputs":{"packages/core/mesh/signal/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":12236},"packages/core/mesh/signal/dist/lib/node-esm/index.mjs":{"imports":[{"path":"find-process","kind":"import-statement","external":true},{"path":"node-fetch","kind":"import-statement","external":true},{"path":"node:child_process","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"pkg-up","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["SignalServerRunner","checkPort","runTestSignalServer"],"entryPoint":"packages/core/mesh/signal/src/index.ts","inputs":{"packages/core/mesh/signal/src/signal-server-runner.ts":{"bytesInOutput":6497},"packages/core/mesh/signal/src/index.ts":{"bytesInOutput":0}},"bytes":6751}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signal-server-runner.d.ts","sourceRoot":"","sources":["../../../src/signal-server-runner.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,8BAA8B,EAAS,MAAM,oBAAoB,CAAC;AAShF,UAAU,iBAAiB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAE7B;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAGD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAW;IAC5C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAqB;IAE9C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAK;IACnC,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,cAAc,CAA6C;gBAEvD,EACV,UAAU,EACV,eAAe,EACf,GAAG,EACH,IAAI,EACJ,OAAgB,EAChB,GAAQ,EACR,KAAa,EACb,YAAoB,EACpB,OAAO,GACR,EAAE,iBAAiB;IAYP,YAAY,IAAI,OAAO,CAAC,8BAA8B,CAAC;IA2EvD,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BjC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB3B,GAAG,IAAI,MAAM;CAGrB;AASD;;;;GAIG;AAEH,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"signal-server-runner.d.ts","sourceRoot":"","sources":["../../../src/signal-server-runner.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,8BAA8B,EAAS,MAAM,oBAAoB,CAAC;AAShF,UAAU,iBAAiB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAE7B;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAGD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAW;IAC5C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAqB;IAE9C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAK;IACnC,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,cAAc,CAA6C;gBAEvD,EACV,UAAU,EACV,eAAe,EACf,GAAG,EACH,IAAI,EACJ,OAAgB,EAChB,GAAQ,EACR,KAAa,EACb,YAAoB,EACpB,OAAO,GACR,EAAE,iBAAiB;IAYP,YAAY,IAAI,OAAO,CAAC,8BAA8B,CAAC;IA2EvD,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BjC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB3B,GAAG,IAAI,MAAM;CAGrB;AASD;;;;GAIG;AAEH,eAAO,MAAM,mBAAmB,GAAU,gCAIvC;IACD,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,cAAc,CAAC;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC;CACnB,KAAG,OAAO,CAAC,kBAAkB,CAoBlC,CAAC;AAEF,eAAO,MAAM,SAAS,GAAU,MAAM,MAAM,oBAkB3C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"5.
|
|
1
|
+
{"version":"5.8.3"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/signal",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.2-main.10c050d",
|
|
4
4
|
"description": "DXOS signal server.",
|
|
5
5
|
"homepage": "https://github.com/dxos/dxos/tree/main/packages/core/mesh/protocol-plugin-replicator#readme",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -23,13 +23,13 @@
|
|
|
23
23
|
"find-process": "^1.4.7",
|
|
24
24
|
"node-fetch": "^2.6.0",
|
|
25
25
|
"pkg-up": "^3.1.0",
|
|
26
|
-
"@dxos/async": "0.8.
|
|
27
|
-
"@dxos/log": "0.8.
|
|
28
|
-
"@dxos/util": "0.8.
|
|
26
|
+
"@dxos/async": "0.8.2-main.10c050d",
|
|
27
|
+
"@dxos/log": "0.8.2-main.10c050d",
|
|
28
|
+
"@dxos/util": "0.8.2-main.10c050d"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@types/node-fetch": "^2.5.10",
|
|
32
|
-
"@dxos/util": "0.8.
|
|
32
|
+
"@dxos/util": "0.8.2-main.10c050d"
|
|
33
33
|
},
|
|
34
34
|
"publishConfig": {
|
|
35
35
|
"access": "public"
|