@botpress/cli 4.17.13 → 4.17.15
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/.turbo/turbo-build.log +16 -12
- package/bin.js +1 -1
- package/dist/api/bot-body.d.ts +5 -0
- package/dist/api/client.d.ts +50 -0
- package/dist/api/client.js +2 -1
- package/dist/api/client.js.map +1 -1
- package/dist/api/index.d.ts +6 -0
- package/dist/api/index.js +9 -0
- package/dist/api/integration-body.d.ts +5 -0
- package/dist/api/interface-body.d.ts +7 -0
- package/dist/api/paging.d.ts +9 -0
- package/dist/api/plugin-body.d.ts +5 -0
- package/dist/api/retry.d.ts +2 -0
- package/dist/api/types.d.ts +62 -0
- package/dist/chat/index.d.ts +25 -0
- package/dist/chat/index.js +1 -1
- package/dist/chat/index.js.map +1 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +51 -0
- package/dist/cli.js.map +7 -0
- package/dist/code-generation/bot-implementation/bot-implementation.d.ts +8 -0
- package/dist/code-generation/bot-implementation/bot-implementation.js.map +1 -1
- package/dist/code-generation/bot-implementation/bot-plugins/index.d.ts +7 -0
- package/dist/code-generation/bot-implementation/bot-plugins/index.js.map +1 -1
- package/dist/code-generation/bot-implementation/bot-plugins/plugin-module.d.ts +13 -0
- package/dist/code-generation/bot-implementation/bot-plugins/plugin-module.js.map +1 -1
- package/dist/code-generation/bot-implementation/bot-typings/actions-module.d.ts +21 -0
- package/dist/code-generation/bot-implementation/bot-typings/actions-module.js.map +1 -1
- package/dist/code-generation/bot-implementation/bot-typings/events-module.d.ts +10 -0
- package/dist/code-generation/bot-implementation/bot-typings/events-module.js.map +1 -1
- package/dist/code-generation/bot-implementation/bot-typings/index.d.ts +7 -0
- package/dist/code-generation/bot-implementation/bot-typings/index.js.map +1 -1
- package/dist/code-generation/bot-implementation/bot-typings/states-module.d.ts +17 -0
- package/dist/code-generation/bot-implementation/bot-typings/states-module.js.map +1 -1
- package/dist/code-generation/bot-implementation/bot-typings/tables-module.d.ts +10 -0
- package/dist/code-generation/bot-implementation/bot-typings/tables-module.js.map +1 -1
- package/dist/code-generation/bot-implementation/bot-typings/workflows-module.d.ts +27 -0
- package/dist/code-generation/bot-implementation/bot-typings/workflows-module.js.map +1 -1
- package/dist/code-generation/bot-implementation/index.d.ts +3 -0
- package/dist/code-generation/bot-implementation/index.js.map +1 -1
- package/dist/code-generation/consts.d.ts +5 -0
- package/dist/code-generation/consts.js +2 -1
- package/dist/code-generation/generators.d.ts +10 -0
- package/dist/code-generation/generators.js.map +1 -1
- package/dist/code-generation/index.d.ts +8 -0
- package/dist/code-generation/index.js +2 -1
- package/dist/code-generation/integration-implementation/index.d.ts +3 -0
- package/dist/code-generation/integration-implementation/index.js.map +1 -1
- package/dist/code-generation/integration-implementation/integration-implementation.d.ts +7 -0
- package/dist/code-generation/integration-implementation/integration-implementation.js.map +1 -1
- package/dist/code-generation/integration-implementation/integration-secret.d.ts +8 -0
- package/dist/code-generation/integration-implementation/integration-secret.js.map +1 -1
- package/dist/code-generation/integration-implementation/integration-typings/actions-module.d.ts +21 -0
- package/dist/code-generation/integration-implementation/integration-typings/actions-module.js.map +1 -1
- package/dist/code-generation/integration-implementation/integration-typings/channels-module.d.ts +5 -0
- package/dist/code-generation/integration-implementation/integration-typings/channels-module.js.map +1 -1
- package/dist/code-generation/integration-implementation/integration-typings/configuration-module.d.ts +7 -0
- package/dist/code-generation/integration-implementation/integration-typings/configurations-module.d.ts +10 -0
- package/dist/code-generation/integration-implementation/integration-typings/configurations-module.js.map +1 -1
- package/dist/code-generation/integration-implementation/integration-typings/entities-module.d.ts +10 -0
- package/dist/code-generation/integration-implementation/integration-typings/entities-module.js.map +1 -1
- package/dist/code-generation/integration-implementation/integration-typings/events-module.d.ts +10 -0
- package/dist/code-generation/integration-implementation/integration-typings/events-module.js.map +1 -1
- package/dist/code-generation/integration-implementation/integration-typings/index.d.ts +8 -0
- package/dist/code-generation/integration-implementation/integration-typings/index.js.map +1 -1
- package/dist/code-generation/integration-implementation/integration-typings/states-module.d.ts +17 -0
- package/dist/code-generation/integration-implementation/integration-typings/states-module.js.map +1 -1
- package/dist/code-generation/integration-package/index.d.ts +2 -0
- package/dist/code-generation/integration-package/index.js.map +1 -1
- package/dist/code-generation/integration-package/integration-package-definition/actions-module.d.ts +21 -0
- package/dist/code-generation/integration-package/integration-package-definition/actions-module.js.map +1 -1
- package/dist/code-generation/integration-package/integration-package-definition/channels-module.d.ts +5 -0
- package/dist/code-generation/integration-package/integration-package-definition/channels-module.js.map +1 -1
- package/dist/code-generation/integration-package/integration-package-definition/configuration-module.d.ts +7 -0
- package/dist/code-generation/integration-package/integration-package-definition/configurations-module.d.ts +10 -0
- package/dist/code-generation/integration-package/integration-package-definition/configurations-module.js.map +1 -1
- package/dist/code-generation/integration-package/integration-package-definition/entities-module.d.ts +10 -0
- package/dist/code-generation/integration-package/integration-package-definition/entities-module.js.map +1 -1
- package/dist/code-generation/integration-package/integration-package-definition/events-module.d.ts +10 -0
- package/dist/code-generation/integration-package/integration-package-definition/events-module.js.map +1 -1
- package/dist/code-generation/integration-package/integration-package-definition/index.d.ts +8 -0
- package/dist/code-generation/integration-package/integration-package-definition/index.js.map +1 -1
- package/dist/code-generation/integration-package/integration-package-definition/interfaces-module.d.ts +10 -0
- package/dist/code-generation/integration-package/integration-package-definition/interfaces-module.js.map +1 -1
- package/dist/code-generation/integration-package/integration-package-definition/states-module.d.ts +10 -0
- package/dist/code-generation/integration-package/integration-package-definition/states-module.js.map +1 -1
- package/dist/code-generation/integration-package/integration-package-definition/typings.d.ts +10 -0
- package/dist/code-generation/interface-implementation/index.d.ts +4 -0
- package/dist/code-generation/interface-implementation/integration-typings/actions-module.d.ts +21 -0
- package/dist/code-generation/interface-implementation/integration-typings/actions-module.js.map +1 -1
- package/dist/code-generation/interface-implementation/integration-typings/channels-module.d.ts +5 -0
- package/dist/code-generation/interface-implementation/integration-typings/channels-module.js.map +1 -1
- package/dist/code-generation/interface-implementation/integration-typings/entities-module.d.ts +10 -0
- package/dist/code-generation/interface-implementation/integration-typings/entities-module.js.map +1 -1
- package/dist/code-generation/interface-implementation/integration-typings/events-module.d.ts +10 -0
- package/dist/code-generation/interface-implementation/integration-typings/events-module.js.map +1 -1
- package/dist/code-generation/interface-implementation/integration-typings/index.d.ts +8 -0
- package/dist/code-generation/interface-implementation/integration-typings/index.js.map +1 -1
- package/dist/code-generation/interface-package/index.d.ts +2 -0
- package/dist/code-generation/interface-package/index.js.map +1 -1
- package/dist/code-generation/interface-package/interface-package-definition/actions-module.d.ts +21 -0
- package/dist/code-generation/interface-package/interface-package-definition/actions-module.js.map +1 -1
- package/dist/code-generation/interface-package/interface-package-definition/channels-module.d.ts +5 -0
- package/dist/code-generation/interface-package/interface-package-definition/channels-module.js.map +1 -1
- package/dist/code-generation/interface-package/interface-package-definition/entities-module.d.ts +10 -0
- package/dist/code-generation/interface-package/interface-package-definition/entities-module.js.map +1 -1
- package/dist/code-generation/interface-package/interface-package-definition/events-module.d.ts +10 -0
- package/dist/code-generation/interface-package/interface-package-definition/events-module.js.map +1 -1
- package/dist/code-generation/interface-package/interface-package-definition/index.d.ts +8 -0
- package/dist/code-generation/interface-package/interface-package-definition/index.js.map +1 -1
- package/dist/code-generation/interface-package/interface-package-definition/typings.d.ts +7 -0
- package/dist/code-generation/module.d.ts +49 -0
- package/dist/code-generation/module.js +2 -2
- package/dist/code-generation/module.js.map +2 -2
- package/dist/code-generation/plugin-implementation/index.d.ts +3 -0
- package/dist/code-generation/plugin-implementation/index.js.map +1 -1
- package/dist/code-generation/plugin-implementation/plugin-implementation.d.ts +7 -0
- package/dist/code-generation/plugin-implementation/plugin-implementation.js.map +1 -1
- package/dist/code-generation/plugin-implementation/plugin-typings/actions-module.d.ts +21 -0
- package/dist/code-generation/plugin-implementation/plugin-typings/actions-module.js.map +1 -1
- package/dist/code-generation/plugin-implementation/plugin-typings/configuration-module.d.ts +7 -0
- package/dist/code-generation/plugin-implementation/plugin-typings/events-module.d.ts +10 -0
- package/dist/code-generation/plugin-implementation/plugin-typings/events-module.js.map +1 -1
- package/dist/code-generation/plugin-implementation/plugin-typings/index.d.ts +8 -0
- package/dist/code-generation/plugin-implementation/plugin-typings/index.js.map +1 -1
- package/dist/code-generation/plugin-implementation/plugin-typings/states-module.d.ts +17 -0
- package/dist/code-generation/plugin-implementation/plugin-typings/states-module.js.map +1 -1
- package/dist/code-generation/plugin-implementation/plugin-typings/tables-module.d.ts +10 -0
- package/dist/code-generation/plugin-implementation/plugin-typings/tables-module.js.map +1 -1
- package/dist/code-generation/plugin-implementation/plugin-typings/workflows-module.d.ts +27 -0
- package/dist/code-generation/plugin-implementation/plugin-typings/workflows-module.js.map +1 -1
- package/dist/code-generation/plugin-package/index.d.ts +2 -0
- package/dist/code-generation/plugin-package/index.js.map +1 -1
- package/dist/code-generation/plugin-package/plugin-package-definition/actions-module.d.ts +21 -0
- package/dist/code-generation/plugin-package/plugin-package-definition/actions-module.js.map +1 -1
- package/dist/code-generation/plugin-package/plugin-package-definition/configuration-module.d.ts +7 -0
- package/dist/code-generation/plugin-package/plugin-package-definition/events-module.d.ts +10 -0
- package/dist/code-generation/plugin-package/plugin-package-definition/events-module.js.map +1 -1
- package/dist/code-generation/plugin-package/plugin-package-definition/index.d.ts +8 -0
- package/dist/code-generation/plugin-package/plugin-package-definition/index.js.map +1 -1
- package/dist/code-generation/plugin-package/plugin-package-definition/interfaces-module.d.ts +7 -0
- package/dist/code-generation/plugin-package/plugin-package-definition/interfaces-module.js.map +1 -1
- package/dist/code-generation/plugin-package/plugin-package-definition/recurring-events-module.d.ts +5 -0
- package/dist/code-generation/plugin-package/plugin-package-definition/recurring-events-module.js.map +1 -1
- package/dist/code-generation/plugin-package/plugin-package-definition/states-module.d.ts +10 -0
- package/dist/code-generation/plugin-package/plugin-package-definition/states-module.js.map +1 -1
- package/dist/code-generation/plugin-package/plugin-package-definition/typings.d.ts +7 -0
- package/dist/code-generation/strings.d.ts +4 -0
- package/dist/code-generation/strings.js.map +1 -1
- package/dist/code-generation/typings.d.ts +162 -0
- package/dist/code-generation/typings.test.d.ts +1 -0
- package/dist/command-definitions.d.ts +1480 -0
- package/dist/command-definitions.js +0 -2
- package/dist/command-implementations/add-command.d.ts +15 -0
- package/dist/command-implementations/add-command.js.map +1 -1
- package/dist/command-implementations/base-command.d.ts +13 -0
- package/dist/command-implementations/base-command.js.map +1 -1
- package/dist/command-implementations/bot-commands.d.ts +20 -0
- package/dist/command-implementations/bot-commands.js.map +1 -1
- package/dist/command-implementations/build-command.d.ts +9 -0
- package/dist/command-implementations/build-command.js +4 -4
- package/dist/command-implementations/build-command.js.map +2 -2
- package/dist/command-implementations/bundle-command.d.ts +10 -0
- package/dist/command-implementations/bundle-command.js +8 -7
- package/dist/command-implementations/bundle-command.js.map +2 -2
- package/dist/command-implementations/chat-command.d.ts +13 -0
- package/dist/command-implementations/chat-command.js.map +1 -1
- package/dist/command-implementations/deploy-command.d.ts +18 -0
- package/dist/command-implementations/deploy-command.js +1 -2
- package/dist/command-implementations/deploy-command.js.map +1 -1
- package/dist/command-implementations/dev-command.d.ts +21 -0
- package/dist/command-implementations/dev-command.js +6 -1
- package/dist/command-implementations/dev-command.js.map +2 -2
- package/dist/command-implementations/gen-command.d.ts +11 -0
- package/dist/command-implementations/gen-command.js.map +1 -1
- package/dist/command-implementations/global-command.d.ts +57 -0
- package/dist/command-implementations/global-command.js.map +1 -1
- package/dist/command-implementations/index.d.ts +1534 -0
- package/dist/command-implementations/index.js +0 -2
- package/dist/command-implementations/init-command.d.ts +17 -0
- package/dist/command-implementations/init-command.js.map +1 -1
- package/dist/command-implementations/integration-commands.d.ts +15 -0
- package/dist/command-implementations/integration-commands.js.map +1 -1
- package/dist/command-implementations/interface-commands.d.ts +14 -0
- package/dist/command-implementations/interface-commands.js.map +1 -1
- package/dist/command-implementations/lint-command.d.ts +15 -0
- package/dist/command-implementations/login-command.d.ts +6 -0
- package/dist/command-implementations/login-command.js +1 -2
- package/dist/command-implementations/login-command.js.map +1 -1
- package/dist/command-implementations/logout-command.d.ts +6 -0
- package/dist/command-implementations/plugin-commands.d.ts +14 -0
- package/dist/command-implementations/plugin-commands.js.map +1 -1
- package/dist/command-implementations/profile-commands.d.ts +14 -0
- package/dist/command-implementations/profile-commands.js +1 -2
- package/dist/command-implementations/profile-commands.js.map +1 -1
- package/dist/command-implementations/project-command.d.ts +67 -0
- package/dist/command-implementations/project-command.js.map +1 -1
- package/dist/command-implementations/read-command.d.ts +10 -0
- package/dist/command-implementations/serve-command.d.ts +6 -0
- package/dist/command-implementations/serve-command.js.map +1 -1
- package/dist/command-tree.d.ts +39 -0
- package/dist/config.d.ts +1441 -0
- package/dist/consts.d.ts +41 -0
- package/dist/errors.d.ts +56 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1524 -0
- package/dist/index.js +50 -25
- package/dist/index.js.map +3 -3
- package/dist/init.d.ts +1 -0
- package/dist/linter/base-linter.d.ts +21 -0
- package/dist/linter/base-linter.js.map +1 -1
- package/dist/linter/base-linter.test.d.ts +1 -0
- package/dist/linter/base-linter.test.js +4 -4
- package/dist/linter/base-linter.test.js.map +1 -1
- package/dist/linter/bot-linter.d.ts +5 -0
- package/dist/linter/integration-linter.d.ts +7 -0
- package/dist/linter/interface-linter.d.ts +5 -0
- package/dist/linter/ruleset-tests/bot.ruleset.test.d.ts +1 -0
- package/dist/linter/ruleset-tests/common.d.ts +9 -0
- package/dist/linter/ruleset-tests/integration.ruleset.test.d.ts +1 -0
- package/dist/linter/ruleset-tests/interface.ruleset.test.d.ts +1 -0
- package/dist/linter/rulesets/bot.ruleset.d.ts +165 -0
- package/dist/linter/rulesets/bot.ruleset.js.map +1 -1
- package/dist/linter/rulesets/integration.ruleset.d.ts +390 -0
- package/dist/linter/rulesets/integration.ruleset.js.map +1 -1
- package/dist/linter/rulesets/interface.ruleset.d.ts +141 -0
- package/dist/linter/rulesets/interface.ruleset.js.map +1 -1
- package/dist/linter/spectral-functions.d.ts +11 -0
- package/dist/logger/base-logger.d.ts +43 -0
- package/dist/logger/base-logger.js.map +1 -1
- package/dist/logger/index.d.ts +22 -0
- package/dist/logger/index.js.map +1 -1
- package/dist/logger/logger.test.d.ts +1 -0
- package/dist/package-ref.d.ts +22 -0
- package/dist/package-ref.js.map +1 -1
- package/dist/package-ref.test.d.ts +1 -0
- package/dist/package-ref.test.js.map +1 -1
- package/dist/project-templates.d.ts +42 -0
- package/dist/register-yargs.d.ts +4 -0
- package/dist/register-yargs.js.map +1 -1
- package/dist/root.d.ts +7 -0
- package/dist/sdk/index.d.ts +2 -0
- package/dist/sdk/index.js +5 -0
- package/dist/sdk/validate-bot.d.ts +2 -0
- package/dist/sdk/validate-bot.js.map +1 -1
- package/dist/sdk/validate-bot.test.d.ts +1 -0
- package/dist/sdk/validate-integration.d.ts +2 -0
- package/dist/sdk/validate-integration.js.map +1 -1
- package/dist/tables/index.d.ts +1 -0
- package/dist/tables/schemas.d.ts +1259 -0
- package/dist/tables/tables-publisher.d.ts +22 -0
- package/dist/tables/tables-publisher.js.map +1 -1
- package/dist/typings.d.ts +27 -0
- package/dist/utils/attribute-utils.d.ts +10 -0
- package/dist/utils/cache-utils.d.ts +14 -0
- package/dist/utils/case-utils.d.ts +14 -0
- package/dist/utils/case-utils.test.d.ts +1 -0
- package/dist/utils/case-utils.test.js.map +1 -1
- package/dist/utils/concurrency-utils.d.ts +1 -0
- package/dist/utils/concurrency-utils.test.d.ts +1 -0
- package/dist/utils/esbuild-utils.d.ts +29 -0
- package/dist/utils/esbuild-utils.js +32 -1
- package/dist/utils/esbuild-utils.js.map +3 -3
- package/dist/utils/event-emitter.d.ts +7 -0
- package/dist/utils/file-watcher.d.ts +17 -0
- package/dist/utils/file-watcher.js.map +1 -1
- package/dist/utils/guard-utils.d.ts +4 -0
- package/dist/utils/id-utils.d.ts +2 -0
- package/dist/utils/index.d.ts +22 -0
- package/dist/utils/object-utils.d.ts +1 -0
- package/dist/utils/path-utils.d.ts +28 -0
- package/dist/utils/path-utils.test.d.ts +1 -0
- package/dist/utils/pkgjson-utils.d.ts +17 -0
- package/dist/utils/promise-utils.d.ts +2 -0
- package/dist/utils/promise-utils.test.d.ts +1 -0
- package/dist/utils/prompt-utils.d.ts +33 -0
- package/dist/utils/prompt-utils.js.map +1 -1
- package/dist/utils/record-utils.d.ts +8 -0
- package/dist/utils/record-utils.test.d.ts +1 -0
- package/dist/utils/require-utils.d.ts +2 -0
- package/dist/utils/require-utils.js.map +1 -1
- package/dist/utils/require-utils.test.d.ts +1 -0
- package/dist/utils/require-utils.test.js.map +1 -1
- package/dist/utils/schema-utils.d.ts +13 -0
- package/dist/utils/schema-utils.test.d.ts +1 -0
- package/dist/utils/semver-utils.d.ts +8 -0
- package/dist/utils/string-utils.d.ts +2 -0
- package/dist/utils/template-utils.d.ts +1 -0
- package/dist/utils/tunnel-utils.d.ts +49 -0
- package/dist/utils/tunnel-utils.js.map +1 -1
- package/dist/utils/type-utils.d.ts +19 -0
- package/dist/utils/url-utils.d.ts +19 -0
- package/dist/utils/url-utils.js.map +1 -1
- package/dist/worker/child-entrypoint.d.ts +1 -0
- package/dist/worker/child-entrypoint.js.map +1 -1
- package/dist/worker/child-wrapper.d.ts +18 -0
- package/dist/worker/child-wrapper.js.map +1 -1
- package/dist/worker/config.d.ts +28 -0
- package/dist/worker/index.d.ts +2 -0
- package/dist/worker/is-child.d.ts +14 -0
- package/dist/worker/is-child.js.map +1 -1
- package/dist/worker/worker-state.d.ts +30 -0
- package/dist/worker/worker.d.ts +20 -0
- package/package.json +7 -5
- package/tsconfig.build.json +14 -0
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/tunnel-utils.ts"],
|
|
4
4
|
"sourcesContent": ["import { TunnelTail, ClientCloseEvent, ClientErrorEvent, errors } from '@bpinternal/tunnel'\nimport { Logger } from '../logger'\nimport { EventEmitter } from './event-emitter'\n\nexport type ReconnectionTriggerEvent =\n | {\n type: 'init'\n ev: null\n }\n | {\n type: 'error'\n ev: ClientErrorEvent\n }\n | {\n type: 'close'\n ev: ClientCloseEvent\n }\n\nexport type ReconnectedEvent = {\n tunnel: TunnelTail\n ev: ReconnectionTriggerEvent\n}\n\nexport class ReconnectionFailedError extends Error {\n public constructor(public readonly event: ReconnectionTriggerEvent) {\n const reason = ReconnectionFailedError._reason(event)\n super(`Reconnection failed: ${reason}`)\n }\n\n private static _reason(event: ReconnectionTriggerEvent): string {\n if (event.type === 'error') {\n return 'error'\n }\n\n if (event.type === 'close') {\n return `${event.ev.code} ${event.ev.reason}`\n }\n\n return 'init'\n }\n}\n\nexport class TunnelSupervisor {\n private _tunnel?: TunnelTail\n private _closed = false\n private _started = false\n\n public readonly events = new EventEmitter<{\n connectionFailed: ReconnectionTriggerEvent\n manuallyClosed: null\n connected: {\n tunnel: TunnelTail\n ev: ReconnectionTriggerEvent\n }\n }>()\n\n public constructor(\n private _tunnelUrl: string,\n private _tunnelId: string,\n private _logger: Logger\n ) {}\n\n public async start(): Promise<void> {\n if (this._closed) {\n throw new Error('Cannot start: Tunnel is closed')\n }\n if (this._started) {\n throw new Error('Cannot start: Tunnel is already started')\n }\n\n this._started = true\n const tunnel = await this._reconnect({ type: 'init', ev: null })\n this._tunnel = tunnel\n }\n\n public get closed(): boolean {\n return this._closed\n }\n\n /**\n * @returns Promise that rejects when a reconnection attempt fails and resolves when the tunnel is closed manually\n */\n public async wait(): Promise<void> {\n if (this._closed) {\n throw new Error('Cannot wait: Tunnel is closed')\n }\n\n return new Promise((resolve, reject) => {\n this.events.on('connectionFailed', (ev) => {\n reject(new ReconnectionFailedError(ev))\n })\n\n this.events.on('manuallyClosed', () => {\n resolve()\n })\n })\n }\n\n public close(): void {\n if (this._closed) {\n return\n }\n\n this._closed = true\n this._tunnel?.close()\n this.events.emit('manuallyClosed', null)\n }\n\n private _reconnectSync(ev: ReconnectionTriggerEvent): void {\n void this._reconnect(ev)\n .then((t) => {\n this._tunnel = t\n })\n .catch(() => this.events.emit('connectionFailed', ev))\n }\n\n private async _reconnect(ev: ReconnectionTriggerEvent): Promise<TunnelTail> {\n const newTunnel = async () => {\n const tunnel = await TunnelTail.new(this._tunnelUrl, this._tunnelId)\n this._registerListeners(tunnel)\n this.events.emit('connected', { tunnel, ev })\n return tunnel\n }\n\n if (ev.type === 'init') {\n // skip logging on the first connection attempt\n return newTunnel()\n }\n\n const line = this._logger.line()\n line.started('Reconnecting tunnel...')\n const tunnel = await newTunnel()\n line.success('Reconnected')\n line.commit()\n return tunnel\n }\n\n private _registerListeners(tunnel: TunnelTail) {\n tunnel.events.on('error', ({ target, type }) => {\n this._logger.error(`Tunnel error: ${type}`)\n this._reconnectSync({ type: 'error', ev: { target, type } })\n })\n tunnel.events.on('close', ({ code, reason, target, type, wasClean }) => {\n this._logger.error(`Tunnel closed: ${code} ${reason}`)\n\n if (code === errors.CLOSE_CODES.TUNNEL_ID_CONFLICT) {\n throw new Error('Cannot start: Tunnel Id is already used, choose a different tunnel id.')\n }\n\n this._reconnectSync({ type: 'close', ev: { code, reason, target, type, wasClean } })\n })\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAuE;AAEvE,2BAA6B;AAqBtB,MAAM,gCAAgC,MAAM;AAAA,EAC1C,YAA4B,OAAiC;AAClE,UAAM,SAAS,wBAAwB,QAAQ,KAAK;AACpD,UAAM,wBAAwB,
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["tunnel"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type Merge<A extends object, B extends object> = Omit<A, keyof B> & B;
|
|
2
|
+
export type SafeOmit<T, K extends keyof T> = Omit<T, K>;
|
|
3
|
+
export type Writable<T> = {
|
|
4
|
+
-readonly [K in keyof T]: T[K];
|
|
5
|
+
};
|
|
6
|
+
export type AssertNever<_T extends never> = true;
|
|
7
|
+
export type AssertExtends<_A extends B, B> = true;
|
|
8
|
+
export type AssertKeyOf<_K extends keyof T, T> = true;
|
|
9
|
+
export type AssertTrue<_T extends true> = true;
|
|
10
|
+
export type AssertAll<_T extends true[]> = true;
|
|
11
|
+
export type IsExtend<X, Y> = X extends Y ? true : false;
|
|
12
|
+
export type IsEquivalent<X, Y> = IsExtend<X, Y> extends true ? IsExtend<Y, X> : false;
|
|
13
|
+
export type IsIdentical<X, Y> = (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2 ? true : false;
|
|
14
|
+
export type IsEqual<X, Y> = IsIdentical<Normalize<X>, Normalize<Y>>;
|
|
15
|
+
type NormalizeObject<T extends object> = T extends infer O ? {
|
|
16
|
+
[K in keyof O]: Normalize<O[K]>;
|
|
17
|
+
} : never;
|
|
18
|
+
export type Normalize<T> = T extends (...args: infer A) => infer R ? (...args: Normalize<A>) => Normalize<R> : T extends Array<infer E> ? Array<Normalize<E>> : T extends ReadonlyArray<infer E> ? ReadonlyArray<Normalize<E>> : T extends Promise<infer R> ? Promise<Normalize<R>> : T extends Buffer ? Buffer : T extends object ? NormalizeObject<T> : T;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
declare const _PROTOCOLS: readonly ["http", "https", "ws", "wss"];
|
|
2
|
+
export type Protocol = (typeof _PROTOCOLS)[number];
|
|
3
|
+
export type Path = `/${string}`;
|
|
4
|
+
export type Url = {
|
|
5
|
+
protocol: Protocol;
|
|
6
|
+
host: string;
|
|
7
|
+
port?: number;
|
|
8
|
+
path?: Path;
|
|
9
|
+
};
|
|
10
|
+
export type UrlParseResult = {
|
|
11
|
+
status: 'success';
|
|
12
|
+
url: Url;
|
|
13
|
+
} | {
|
|
14
|
+
status: 'error';
|
|
15
|
+
error: string;
|
|
16
|
+
};
|
|
17
|
+
export declare function parse(hostOrUrl: string): UrlParseResult;
|
|
18
|
+
export declare const format: (url: Url) => string;
|
|
19
|
+
export {};
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/url-utils.ts"],
|
|
4
4
|
"sourcesContent": ["const _PROTOCOLS = ['http', 'https', 'ws', 'wss'] as const\n\nexport type Protocol = (typeof _PROTOCOLS)[number]\n\nexport type Path = `/${string}`\n\nexport type Url = {\n protocol: Protocol\n host: string\n port?: number\n path?: Path\n}\n\nexport type UrlParseResult =\n | {\n status: 'success'\n url: Url\n }\n | {\n status: 'error'\n error: string\n }\n\nconst toPath = (path: string): Path => {\n if (!path.startsWith('/')) {\n return `/${path}`\n }\n return path as Path\n}\n\nexport function parse(hostOrUrl: string): UrlParseResult {\n try {\n const url = new URL(hostOrUrl)\n return {\n status: 'success',\n url: {\n protocol: url.protocol.replace(':', '') as Url['protocol'],\n host: url.hostname,\n port: url.port ? parseInt(url.port) : undefined,\n path: toPath(url.pathname),\n },\n }\n } catch (thrown) {\n const message = thrown instanceof Error ? thrown.message : `${thrown}`\n return {\n status: 'error',\n error: message,\n }\n }\n}\n\nexport const format = (url: Url): string => {\n let formatted = `${url.protocol}://${url.host}`\n if (url.port) {\n formatted += `:${url.port}`\n }\n if (url.path && url.path !== '/') {\n formatted += url.path\n }\n return formatted\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAM,aAAa,CAAC,QAAQ,SAAS,MAAM,KAAK;AAuBhD,MAAM,SAAS,CAAC,SAAuB;AACrC,MAAI,CAAC,KAAK,WAAW,GAAG,GAAG;AACzB,WAAO,IAAI;AAAA,
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAM,aAAa,CAAC,QAAQ,SAAS,MAAM,KAAK;AAuBhD,MAAM,SAAS,CAAC,SAAuB;AACrC,MAAI,CAAC,KAAK,WAAW,GAAG,GAAG;AACzB,WAAO,IAAI,IAAI;AAAA,EACjB;AACA,SAAO;AACT;AAEO,SAAS,MAAM,WAAmC;AACvD,MAAI;AACF,UAAM,MAAM,IAAI,IAAI,SAAS;AAC7B,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,KAAK;AAAA,QACH,UAAU,IAAI,SAAS,QAAQ,KAAK,EAAE;AAAA,QACtC,MAAM,IAAI;AAAA,QACV,MAAM,IAAI,OAAO,SAAS,IAAI,IAAI,IAAI;AAAA,QACtC,MAAM,OAAO,IAAI,QAAQ;AAAA,MAC3B;AAAA,IACF;AAAA,EACF,SAAS,QAAQ;AACf,UAAM,UAAU,kBAAkB,QAAQ,OAAO,UAAU,GAAG,MAAM;AACpE,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,MAAM,SAAS,CAAC,QAAqB;AAC1C,MAAI,YAAY,GAAG,IAAI,QAAQ,MAAM,IAAI,IAAI;AAC7C,MAAI,IAAI,MAAM;AACZ,iBAAa,IAAI,IAAI,IAAI;AAAA,EAC3B;AACA,MAAI,IAAI,QAAQ,IAAI,SAAS,KAAK;AAChC,iBAAa,IAAI;AAAA,EACnB;AACA,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ENTRY_POINT: string;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/worker/child-entrypoint.ts"],
|
|
4
4
|
"sourcesContent": ["import * as utils from '../utils'\nimport { CONFIG_ENV_KEY, configSchema } from './config'\nimport { ChildProcessProps, processProps } from './is-child'\n\nexport const ENTRY_POINT = __filename\n\nconst childProcessEntrypoint = async (_props: ChildProcessProps) => {\n const rawConfig = process.env[CONFIG_ENV_KEY]\n if (!rawConfig) {\n throw new Error(`Config variable ${CONFIG_ENV_KEY} was not set`)\n }\n const config = configSchema.parse(JSON.parse(rawConfig))\n\n if (config.type === 'code') {\n utils.require.requireJsCode(config.code)\n }\n if (config.type === 'file') {\n utils.require.requireJsFile(config.file)\n }\n}\n\nif (processProps.type === 'child') {\n // here we are in the child process\n void childProcessEntrypoint(processProps)\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAuB;AACvB,oBAA6C;AAC7C,sBAAgD;AAEzC,MAAM,cAAc;AAE3B,MAAM,yBAAyB,OAAO,WAA8B;AAClE,QAAM,YAAY,QAAQ,IAAI,4BAAc;AAC5C,MAAI,CAAC,WAAW;AACd,UAAM,IAAI,MAAM,mBAAmB,
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAuB;AACvB,oBAA6C;AAC7C,sBAAgD;AAEzC,MAAM,cAAc;AAE3B,MAAM,yBAAyB,OAAO,WAA8B;AAClE,QAAM,YAAY,QAAQ,IAAI,4BAAc;AAC5C,MAAI,CAAC,WAAW;AACd,UAAM,IAAI,MAAM,mBAAmB,4BAAc,cAAc;AAAA,EACjE;AACA,QAAM,SAAS,2BAAa,MAAM,KAAK,MAAM,SAAS,CAAC;AAEvD,MAAI,OAAO,SAAS,QAAQ;AAC1B,UAAM,QAAQ,cAAc,OAAO,IAAI;AAAA,EACzC;AACA,MAAI,OAAO,SAAS,QAAQ;AAC1B,UAAM,QAAQ,cAAc,OAAO,IAAI;AAAA,EACzC;AACF;AAEA,IAAI,6BAAa,SAAS,SAAS;AAEjC,OAAK,uBAAuB,4BAAY;AAC1C;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Logger } from '../logger';
|
|
2
|
+
import { Config } from './config';
|
|
3
|
+
export type ChildOutput = {
|
|
4
|
+
exitCode: number | null;
|
|
5
|
+
signal: NodeJS.Signals | null;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Wrapper above child_process.ChildProcess to simplify usage
|
|
9
|
+
*/
|
|
10
|
+
export declare class ChildProcessWrapper {
|
|
11
|
+
private _child;
|
|
12
|
+
private _exitPromise;
|
|
13
|
+
static spawn(config: Config, logger: Logger): Promise<ChildProcessWrapper>;
|
|
14
|
+
private _exited;
|
|
15
|
+
private constructor();
|
|
16
|
+
kill(): Promise<ChildOutput>;
|
|
17
|
+
listen(): Promise<ChildOutput>;
|
|
18
|
+
}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/worker/child-wrapper.ts"],
|
|
4
4
|
"sourcesContent": ["import * as childProcess from 'child_process'\nimport type { Logger } from '../logger'\nimport { ENTRY_POINT } from './child-entrypoint'\nimport { CONFIG_ENV_KEY, Config } from './config'\nimport { CHILD_ENV_KEY, CHILD_ENV_VALUE, isChildProcess } from './is-child'\n\nexport type ChildOutput = {\n exitCode: number | null\n signal: NodeJS.Signals | null\n}\n\nconst SPAWN_SHELL_ENV: Record<string, string> = {\n FORCE_COLOR: 'true', // well-known env var used by most shells to enable color output in child processes\n} as const\n\nconst listenForChildSpawn = (child: childProcess.ChildProcess, logger: Logger) =>\n new Promise<void>((resolve, reject) => {\n child.on('spawn', () => {\n logger.debug(`Child process spawned with pid ${child.pid}`)\n resolve()\n })\n child.on('error', (err: Error) => {\n /**\n * The 'error' event is emitted whenever:\n * - The process could not be spawned.\n * - The child process was aborted via the signal option.\n */\n logger.debug(`Child process error: ${err.message}`)\n reject(err)\n })\n })\n\nconst listenForChildExit = (child: childProcess.ChildProcess, logger: Logger) =>\n new Promise<ChildOutput>((resolve, reject) => {\n child.on('disconnect', () => {\n logger.debug('Child process disconnected')\n })\n child.on('close', (exitCode: number | null, signal: NodeJS.Signals | null) => {\n /**\n * this event usually fires after exit unless stdio streams are shared across multiple processes.\n * see https://stackoverflow.com/questions/37522010/difference-between-childprocess-close-exit-events\n */\n logger.debug(`Child process closed with code ${exitCode} and signal ${signal}`)\n })\n child.on('exit', (exitCode: number | null, signal: NodeJS.Signals | null) => {\n logger.debug(`Child process exited with code ${exitCode} and signal ${signal}`)\n resolve({ exitCode, signal })\n })\n child.on('error', (err: Error) => {\n /**\n * The 'error' event is emitted whenever:\n * - The process could not be killed.\n * - The child process was aborted via the signal option.\n */\n logger.debug(`Child process error: ${err.message}`)\n reject(err)\n })\n child.on('message', (message) => {\n logger.debug(`Child process message: ${message}`)\n })\n })\n\n/**\n * Wrapper above child_process.ChildProcess to simplify usage\n */\nexport class ChildProcessWrapper {\n public static async spawn(config: Config, logger: Logger): Promise<ChildProcessWrapper> {\n if (isChildProcess) {\n throw new Error('Cannot spawn child process from child process')\n }\n\n const child = childProcess.fork(ENTRY_POINT, [], {\n stdio: 'inherit',\n env: {\n ...SPAWN_SHELL_ENV,\n [CHILD_ENV_KEY]: CHILD_ENV_VALUE,\n [CONFIG_ENV_KEY]: JSON.stringify(config),\n ...config.env,\n },\n })\n\n const childSpawnPromise = listenForChildSpawn(child, logger)\n const childExitPromise = listenForChildExit(child, logger)\n\n const instance = new ChildProcessWrapper(child, childExitPromise)\n\n void childExitPromise.finally(() => {\n instance._exited = true\n })\n\n await childSpawnPromise\n\n return instance\n }\n\n private _exited = false\n private constructor(\n private _child: childProcess.ChildProcess,\n private _exitPromise: Promise<ChildOutput>\n ) {}\n\n public async kill(): Promise<ChildOutput> {\n if (this._exited) {\n throw new Error('Child process already exited and cannot be killed')\n }\n this._child.kill()\n const res = await this._exitPromise\n return res\n }\n\n public async listen(): Promise<ChildOutput> {\n if (this._exited) {\n throw new Error('Child process already exited and cannot be listened on')\n }\n const res = await this._exitPromise\n return res\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA8B;AAE9B,8BAA4B;AAC5B,oBAAuC;AACvC,sBAA+D;AAO/D,MAAM,kBAA0C;AAAA,EAC9C,aAAa;AAAA;AACf;AAEA,MAAM,sBAAsB,CAAC,OAAkC,WAC7D,IAAI,QAAc,CAAC,SAAS,WAAW;AACrC,QAAM,GAAG,SAAS,MAAM;AACtB,WAAO,MAAM,kCAAkC,MAAM,
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA8B;AAE9B,8BAA4B;AAC5B,oBAAuC;AACvC,sBAA+D;AAO/D,MAAM,kBAA0C;AAAA,EAC9C,aAAa;AAAA;AACf;AAEA,MAAM,sBAAsB,CAAC,OAAkC,WAC7D,IAAI,QAAc,CAAC,SAAS,WAAW;AACrC,QAAM,GAAG,SAAS,MAAM;AACtB,WAAO,MAAM,kCAAkC,MAAM,GAAG,EAAE;AAC1D,YAAQ;AAAA,EACV,CAAC;AACD,QAAM,GAAG,SAAS,CAAC,QAAe;AAMhC,WAAO,MAAM,wBAAwB,IAAI,OAAO,EAAE;AAClD,WAAO,GAAG;AAAA,EACZ,CAAC;AACH,CAAC;AAEH,MAAM,qBAAqB,CAAC,OAAkC,WAC5D,IAAI,QAAqB,CAAC,SAAS,WAAW;AAC5C,QAAM,GAAG,cAAc,MAAM;AAC3B,WAAO,MAAM,4BAA4B;AAAA,EAC3C,CAAC;AACD,QAAM,GAAG,SAAS,CAAC,UAAyB,WAAkC;AAK5E,WAAO,MAAM,kCAAkC,QAAQ,eAAe,MAAM,EAAE;AAAA,EAChF,CAAC;AACD,QAAM,GAAG,QAAQ,CAAC,UAAyB,WAAkC;AAC3E,WAAO,MAAM,kCAAkC,QAAQ,eAAe,MAAM,EAAE;AAC9E,YAAQ,EAAE,UAAU,OAAO,CAAC;AAAA,EAC9B,CAAC;AACD,QAAM,GAAG,SAAS,CAAC,QAAe;AAMhC,WAAO,MAAM,wBAAwB,IAAI,OAAO,EAAE;AAClD,WAAO,GAAG;AAAA,EACZ,CAAC;AACD,QAAM,GAAG,WAAW,CAAC,YAAY;AAC/B,WAAO,MAAM,0BAA0B,OAAO,EAAE;AAAA,EAClD,CAAC;AACH,CAAC;AAKI,MAAM,oBAAoB;AAAA,EA+BvB,YACE,QACA,cACR;AAFQ;AACA;AAAA,EACP;AAAA,EAjCH,aAAoB,MAAM,QAAgB,QAA8C;AACtF,QAAI,gCAAgB;AAClB,YAAM,IAAI,MAAM,+CAA+C;AAAA,IACjE;AAEA,UAAM,QAAQ,aAAa,KAAK,qCAAa,CAAC,GAAG;AAAA,MAC/C,OAAO;AAAA,MACP,KAAK;AAAA,QACH,GAAG;AAAA,QACH,CAAC,6BAAa,GAAG;AAAA,QACjB,CAAC,4BAAc,GAAG,KAAK,UAAU,MAAM;AAAA,QACvC,GAAG,OAAO;AAAA,MACZ;AAAA,IACF,CAAC;AAED,UAAM,oBAAoB,oBAAoB,OAAO,MAAM;AAC3D,UAAM,mBAAmB,mBAAmB,OAAO,MAAM;AAEzD,UAAM,WAAW,IAAI,oBAAoB,OAAO,gBAAgB;AAEhE,SAAK,iBAAiB,QAAQ,MAAM;AAClC,eAAS,UAAU;AAAA,IACrB,CAAC;AAED,UAAM;AAEN,WAAO;AAAA,EACT;AAAA,EAEQ,UAAU;AAAA,EAMlB,MAAa,OAA6B;AACxC,QAAI,KAAK,SAAS;AAChB,YAAM,IAAI,MAAM,mDAAmD;AAAA,IACrE;AACA,SAAK,OAAO,KAAK;AACjB,UAAM,MAAM,MAAM,KAAK;AACvB,WAAO;AAAA,EACT;AAAA,EAEA,MAAa,SAA+B;AAC1C,QAAI,KAAK,SAAS;AAChB,YAAM,IAAI,MAAM,wDAAwD;AAAA,IAC1E;AACA,UAAM,MAAM,MAAM,KAAK;AACvB,WAAO;AAAA,EACT;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from '@botpress/sdk';
|
|
2
|
+
export declare const CONFIG_ENV_KEY = "CHILD_PROCESS_CONFIGURATION";
|
|
3
|
+
export type Config = z.infer<typeof configSchema>;
|
|
4
|
+
export declare const configSchema: import("@botpress/sdk").ZodUnion<[import("@botpress/sdk").ZodObject<{
|
|
5
|
+
type: import("@botpress/sdk").ZodLiteral<"code">;
|
|
6
|
+
code: import("@botpress/sdk").ZodString;
|
|
7
|
+
env: import("@botpress/sdk").ZodOptional<import("@botpress/sdk").ZodRecord<import("@botpress/sdk").ZodString, import("@botpress/sdk").ZodString>>;
|
|
8
|
+
}, "strip", {
|
|
9
|
+
type: "code";
|
|
10
|
+
code: string;
|
|
11
|
+
env?: Record<string, string> | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
type: "code";
|
|
14
|
+
code: string;
|
|
15
|
+
env?: Record<string, string> | undefined;
|
|
16
|
+
}>, import("@botpress/sdk").ZodObject<{
|
|
17
|
+
type: import("@botpress/sdk").ZodLiteral<"file">;
|
|
18
|
+
file: import("@botpress/sdk").ZodString;
|
|
19
|
+
env: import("@botpress/sdk").ZodOptional<import("@botpress/sdk").ZodRecord<import("@botpress/sdk").ZodString, import("@botpress/sdk").ZodString>>;
|
|
20
|
+
}, "strip", {
|
|
21
|
+
type: "file";
|
|
22
|
+
file: string;
|
|
23
|
+
env?: Record<string, string> | undefined;
|
|
24
|
+
}, {
|
|
25
|
+
type: "file";
|
|
26
|
+
file: string;
|
|
27
|
+
env?: Record<string, string> | undefined;
|
|
28
|
+
}>]>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const CHILD_ENV_KEY = "IS_CHILD";
|
|
2
|
+
export declare const CHILD_ENV_VALUE = "true";
|
|
3
|
+
export type MainProcessProps = {
|
|
4
|
+
type: 'main';
|
|
5
|
+
pid: number;
|
|
6
|
+
};
|
|
7
|
+
export type ChildProcessProps = {
|
|
8
|
+
type: 'child';
|
|
9
|
+
sendMessage: (message: string) => void;
|
|
10
|
+
pid: number;
|
|
11
|
+
};
|
|
12
|
+
export type ProcessProps = MainProcessProps | ChildProcessProps;
|
|
13
|
+
export declare const processProps: ProcessProps;
|
|
14
|
+
export declare const isChildProcess: boolean;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/worker/is-child.ts"],
|
|
4
4
|
"sourcesContent": ["export const CHILD_ENV_KEY = 'IS_CHILD'\nexport const CHILD_ENV_VALUE = 'true'\n\nexport type MainProcessProps = {\n type: 'main'\n pid: number\n}\nexport type ChildProcessProps = {\n type: 'child'\n sendMessage: (message: string) => void\n pid: number\n}\n\nexport type ProcessProps = MainProcessProps | ChildProcessProps\n\nconst getProcessProps = (): ProcessProps => {\n const type = process.env[CHILD_ENV_KEY] === CHILD_ENV_VALUE ? 'child' : 'main'\n if (type === 'main') {\n return {\n type,\n pid: process.pid,\n }\n }\n\n if (!process.send) {\n throw new Error(`Please do not use variable ${CHILD_ENV_KEY} manually`)\n }\n\n return {\n type,\n sendMessage: process.send,\n pid: process.pid,\n }\n}\n\nexport const processProps = getProcessProps()\nexport const isChildProcess = processProps.type === 'child'\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,gBAAgB;AACtB,MAAM,kBAAkB;AAc/B,MAAM,kBAAkB,MAAoB;AAC1C,QAAM,OAAO,QAAQ,IAAI,aAAa,MAAM,kBAAkB,UAAU;AACxE,MAAI,SAAS,QAAQ;AACnB,WAAO;AAAA,MACL;AAAA,MACA,KAAK,QAAQ;AAAA,IACf;AAAA,EACF;AAEA,MAAI,CAAC,QAAQ,MAAM;AACjB,UAAM,IAAI,MAAM,8BAA8B,
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,gBAAgB;AACtB,MAAM,kBAAkB;AAc/B,MAAM,kBAAkB,MAAoB;AAC1C,QAAM,OAAO,QAAQ,IAAI,aAAa,MAAM,kBAAkB,UAAU;AACxE,MAAI,SAAS,QAAQ;AACnB,WAAO;AAAA,MACL;AAAA,MACA,KAAK,QAAQ;AAAA,IACf;AAAA,EACF;AAEA,MAAI,CAAC,QAAQ,MAAM;AACjB,UAAM,IAAI,MAAM,8BAA8B,aAAa,WAAW;AAAA,EACxE;AAEA,SAAO;AAAA,IACL;AAAA,IACA,aAAa,QAAQ;AAAA,IACrB,KAAK,QAAQ;AAAA,EACf;AACF;AAEO,MAAM,eAAe,gBAAgB;AACrC,MAAM,iBAAiB,aAAa,SAAS;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ChildProcessWrapper } from './child-wrapper';
|
|
2
|
+
export type WorkerStatus = WorkerState['status'];
|
|
3
|
+
export type WorkerState = {
|
|
4
|
+
status: 'errored';
|
|
5
|
+
thrown: unknown;
|
|
6
|
+
} | {
|
|
7
|
+
status: 'dead';
|
|
8
|
+
murdered: boolean;
|
|
9
|
+
} | {
|
|
10
|
+
status: 'killing';
|
|
11
|
+
} | {
|
|
12
|
+
status: 'reloading';
|
|
13
|
+
} | {
|
|
14
|
+
status: 'live';
|
|
15
|
+
child: ChildProcessWrapper;
|
|
16
|
+
};
|
|
17
|
+
export type StateOf<S extends WorkerStatus> = Extract<WorkerState, {
|
|
18
|
+
status: S;
|
|
19
|
+
}>;
|
|
20
|
+
export type WorkerStateHandler<S extends WorkerStatus> = (state: StateOf<S>) => void;
|
|
21
|
+
export declare class WorkerStateObserver {
|
|
22
|
+
private _state;
|
|
23
|
+
private _handlers;
|
|
24
|
+
constructor(initialState: WorkerState);
|
|
25
|
+
waitFor<S extends WorkerStatus>(status: S): Promise<void>;
|
|
26
|
+
on<S extends WorkerStatus>(status: S, handler: WorkerStateHandler<S>): void;
|
|
27
|
+
off<S extends WorkerStatus>(status: S, handler: WorkerStateHandler<S>): void;
|
|
28
|
+
get(): WorkerState;
|
|
29
|
+
set(newState: WorkerState): void;
|
|
30
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Logger } from '../logger';
|
|
2
|
+
import type { Config } from './config';
|
|
3
|
+
export type WorkerProps = {
|
|
4
|
+
hangOnExit?: boolean;
|
|
5
|
+
};
|
|
6
|
+
export declare class Worker {
|
|
7
|
+
private _config;
|
|
8
|
+
private _logger;
|
|
9
|
+
private _props;
|
|
10
|
+
static spawn(config: Config, logger: Logger, props?: Partial<WorkerProps>): Promise<Worker>;
|
|
11
|
+
private _state;
|
|
12
|
+
private constructor();
|
|
13
|
+
/**
|
|
14
|
+
* Used to determine if the worker can be killed
|
|
15
|
+
*/
|
|
16
|
+
get running(): boolean;
|
|
17
|
+
kill: () => Promise<import("./child-wrapper").ChildOutput>;
|
|
18
|
+
reload: () => Promise<void>;
|
|
19
|
+
wait: () => Promise<void>;
|
|
20
|
+
}
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botpress/cli",
|
|
3
|
-
"version": "4.17.
|
|
3
|
+
"version": "4.17.15",
|
|
4
4
|
"description": "Botpress CLI",
|
|
5
5
|
"scripts": {
|
|
6
|
-
"build": "pnpm run bundle && pnpm run template:gen",
|
|
7
|
-
"dev": "ts-node -T src/
|
|
8
|
-
"start": "node dist/
|
|
6
|
+
"build": "pnpm run build:types && pnpm run bundle && pnpm run template:gen",
|
|
7
|
+
"dev": "ts-node -T src/cli.ts",
|
|
8
|
+
"start": "node dist/cli.js",
|
|
9
9
|
"check:type": "tsc --noEmit",
|
|
10
10
|
"bundle": "ts-node -T build.ts",
|
|
11
|
+
"build:types": "tsc -p ./tsconfig.build.json",
|
|
11
12
|
"template:gen": "pnpm -r --stream -F @bp-templates/* exec bp gen",
|
|
12
13
|
"test:e2e": "ts-node -T ./e2e"
|
|
13
14
|
},
|
|
@@ -18,6 +19,7 @@
|
|
|
18
19
|
"bp": "./bin.js"
|
|
19
20
|
},
|
|
20
21
|
"main": "dist/index.js",
|
|
22
|
+
"types": "dist/index.d.ts",
|
|
21
23
|
"dependencies": {
|
|
22
24
|
"@apidevtools/json-schema-ref-parser": "^11.7.0",
|
|
23
25
|
"@botpress/chat": "0.5.1",
|
|
@@ -37,7 +39,7 @@
|
|
|
37
39
|
"boxen": "5.1.2",
|
|
38
40
|
"chalk": "^4.1.2",
|
|
39
41
|
"dotenv": "^16.4.4",
|
|
40
|
-
"esbuild": "^0.
|
|
42
|
+
"esbuild": "^0.25.10",
|
|
41
43
|
"handlebars": "^4.7.8",
|
|
42
44
|
"latest-version": "5.1.0",
|
|
43
45
|
"lodash": "^4.17.21",
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../tsconfig.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"baseUrl": ".",
|
|
5
|
+
"rootDir": "src",
|
|
6
|
+
"outDir": "dist",
|
|
7
|
+
"declaration": true,
|
|
8
|
+
"esModuleInterop": true,
|
|
9
|
+
"sourceMap": true,
|
|
10
|
+
"emitDeclarationOnly": true,
|
|
11
|
+
"noCheck": true
|
|
12
|
+
},
|
|
13
|
+
"include": ["./src/**/*"]
|
|
14
|
+
}
|