@botpress/cli 2.2.4 → 3.0.0
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 +10 -10
- package/dist/api/bot-body.js.map +2 -2
- package/dist/api/client.js +10 -2
- package/dist/api/client.js.map +2 -2
- package/dist/api/find-previous-version.test.js +1 -1
- package/dist/api/find-previous-version.test.js.map +2 -2
- package/dist/api/index.js +1 -0
- package/dist/api/index.js.map +2 -2
- package/dist/api/integration-body.js +6 -19
- package/dist/api/integration-body.js.map +2 -2
- package/dist/api/interface-body.js +1 -5
- package/dist/api/interface-body.js.map +2 -2
- package/dist/api/plugin-body.js +3 -0
- package/dist/api/plugin-body.js.map +2 -2
- package/dist/api/types.js.map +1 -1
- package/dist/code-generation/bot-implementation/bot-implementation.js +5 -2
- package/dist/code-generation/bot-implementation/bot-implementation.js.map +2 -2
- package/dist/code-generation/bot-implementation/bot-plugins/plugin-module.js +3 -0
- package/dist/code-generation/bot-implementation/bot-plugins/plugin-module.js.map +2 -2
- package/dist/code-generation/bot-implementation/bot-typings/index.js +11 -2
- package/dist/code-generation/bot-implementation/bot-typings/index.js.map +2 -2
- package/dist/code-generation/bot-implementation/bot-typings/tables-module.js +64 -0
- package/dist/code-generation/bot-implementation/bot-typings/tables-module.js.map +7 -0
- package/dist/code-generation/generators.js +11 -2
- package/dist/code-generation/generators.js.map +3 -3
- package/dist/code-generation/integration-package/index.js +4 -21
- package/dist/code-generation/integration-package/index.js.map +2 -2
- package/dist/code-generation/integration-package/integration-package-definition/actions-module.js +10 -1
- package/dist/code-generation/integration-package/integration-package-definition/actions-module.js.map +2 -2
- package/dist/code-generation/integration-package/integration-package-definition/channels-module.js +11 -1
- package/dist/code-generation/integration-package/integration-package-definition/channels-module.js.map +2 -2
- package/dist/code-generation/integration-package/integration-package-definition/configuration-module.js +10 -8
- package/dist/code-generation/integration-package/integration-package-definition/configuration-module.js.map +2 -2
- package/dist/code-generation/integration-package/integration-package-definition/configurations-module.js +10 -5
- package/dist/code-generation/integration-package/integration-package-definition/configurations-module.js.map +2 -2
- package/dist/code-generation/integration-package/integration-package-definition/entities-module.js +9 -1
- package/dist/code-generation/integration-package/integration-package-definition/entities-module.js.map +2 -2
- package/dist/code-generation/integration-package/integration-package-definition/events-module.js +9 -4
- package/dist/code-generation/integration-package/integration-package-definition/events-module.js.map +2 -2
- package/dist/code-generation/integration-package/integration-package-definition/index.js +12 -3
- package/dist/code-generation/integration-package/integration-package-definition/index.js.map +2 -2
- package/dist/code-generation/integration-package/integration-package-definition/interfaces-module.js +61 -0
- package/dist/code-generation/integration-package/integration-package-definition/interfaces-module.js.map +7 -0
- package/dist/code-generation/integration-package/integration-package-definition/states-module.js +6 -1
- package/dist/code-generation/integration-package/integration-package-definition/states-module.js.map +2 -2
- package/dist/code-generation/integration-package/integration-package-definition/typings.js.map +1 -1
- package/dist/code-generation/interface-package/index.js +4 -21
- package/dist/code-generation/interface-package/index.js.map +2 -2
- package/dist/code-generation/interface-package/interface-package-definition/actions-module.js +10 -1
- package/dist/code-generation/interface-package/interface-package-definition/actions-module.js.map +2 -2
- package/dist/code-generation/interface-package/interface-package-definition/channels-module.js +9 -1
- package/dist/code-generation/interface-package/interface-package-definition/channels-module.js.map +2 -2
- package/dist/code-generation/interface-package/interface-package-definition/entities-module.js +9 -1
- package/dist/code-generation/interface-package/interface-package-definition/entities-module.js.map +2 -2
- package/dist/code-generation/interface-package/interface-package-definition/events-module.js +9 -1
- package/dist/code-generation/interface-package/interface-package-definition/events-module.js.map +2 -2
- package/dist/code-generation/interface-package/interface-package-definition/index.js +0 -2
- package/dist/code-generation/interface-package/interface-package-definition/index.js.map +2 -2
- package/dist/code-generation/interface-package/interface-package-definition/typings.js.map +1 -1
- package/dist/code-generation/module.js +13 -7
- package/dist/code-generation/module.js.map +2 -2
- package/dist/code-generation/plugin-implementation/plugin-implementation.js +27 -4
- package/dist/code-generation/plugin-implementation/plugin-implementation.js.map +2 -2
- package/dist/code-generation/plugin-implementation/plugin-typings/index.js +19 -2
- package/dist/code-generation/plugin-implementation/plugin-typings/index.js.map +2 -2
- package/dist/code-generation/plugin-implementation/plugin-typings/tables-module.js +64 -0
- package/dist/code-generation/plugin-implementation/plugin-typings/tables-module.js.map +7 -0
- package/dist/code-generation/plugin-package/index.js +4 -46
- package/dist/code-generation/plugin-package/index.js.map +2 -2
- package/dist/code-generation/plugin-package/plugin-package-definition/actions-module.js +8 -1
- package/dist/code-generation/plugin-package/plugin-package-definition/actions-module.js.map +2 -2
- package/dist/code-generation/plugin-package/plugin-package-definition/configuration-module.js +10 -1
- package/dist/code-generation/plugin-package/plugin-package-definition/configuration-module.js.map +2 -2
- package/dist/code-generation/plugin-package/plugin-package-definition/events-module.js +9 -4
- package/dist/code-generation/plugin-package/plugin-package-definition/events-module.js.map +2 -2
- package/dist/code-generation/plugin-package/plugin-package-definition/index.js +15 -3
- package/dist/code-generation/plugin-package/plugin-package-definition/index.js.map +2 -2
- package/dist/code-generation/plugin-package/plugin-package-definition/interfaces-module.js +58 -0
- package/dist/code-generation/plugin-package/plugin-package-definition/interfaces-module.js.map +7 -0
- package/dist/code-generation/plugin-package/plugin-package-definition/states-module.js +6 -1
- package/dist/code-generation/plugin-package/plugin-package-definition/states-module.js.map +2 -2
- package/dist/code-generation/plugin-package/plugin-package-definition/typings.js.map +1 -1
- package/dist/code-generation/strings.js +10 -5
- package/dist/code-generation/strings.js.map +2 -2
- package/dist/code-generation/typings.js.map +1 -1
- package/dist/code-generation/typings.test.js +15 -0
- package/dist/code-generation/typings.test.js.map +7 -0
- package/dist/command-implementations/add-command.js +70 -25
- package/dist/command-implementations/add-command.js.map +2 -2
- package/dist/command-implementations/bundle-command.js +34 -27
- package/dist/command-implementations/bundle-command.js.map +2 -2
- package/dist/command-implementations/deploy-command.js +26 -68
- package/dist/command-implementations/deploy-command.js.map +2 -2
- package/dist/command-implementations/dev-command.js +13 -17
- package/dist/command-implementations/dev-command.js.map +2 -2
- package/dist/command-implementations/lint-command.js +5 -8
- package/dist/command-implementations/lint-command.js.map +3 -3
- package/dist/command-implementations/plugin-commands.js +1 -2
- package/dist/command-implementations/plugin-commands.js.map +2 -2
- package/dist/command-implementations/project-command.js +82 -34
- package/dist/command-implementations/project-command.js.map +2 -2
- package/dist/command-implementations/read-command.js +23 -8
- package/dist/command-implementations/read-command.js.map +2 -2
- package/dist/command-implementations/serve-command.js +1 -1
- package/dist/command-implementations/serve-command.js.map +1 -1
- package/dist/consts.js +4 -2
- package/dist/consts.js.map +2 -2
- package/dist/errors.js +3 -3
- package/dist/errors.js.map +2 -2
- package/dist/linter/base-linter.test.js +6 -1
- package/dist/linter/base-linter.test.js.map +2 -2
- package/dist/linter/bot-linter.js.map +2 -2
- package/dist/linter/integration-linter.js.map +1 -1
- package/dist/linter/interface-linter.js.map +2 -2
- package/dist/linter/ruleset-tests/bot.ruleset.test.js.map +2 -2
- package/dist/linter/ruleset-tests/interface.ruleset.test.js.map +2 -2
- package/dist/sdk/index.js +0 -2
- package/dist/sdk/index.js.map +2 -2
- package/dist/{sdk/resolve-bot-interfaces.js → tables/index.js} +7 -21
- package/dist/tables/index.js.map +7 -0
- package/dist/tables/schemas.js +106 -0
- package/dist/tables/schemas.js.map +7 -0
- package/dist/tables/tables-publisher.js +157 -0
- package/dist/tables/tables-publisher.js.map +7 -0
- package/dist/utils/esbuild-utils.js +15 -13
- package/dist/utils/esbuild-utils.js.map +2 -2
- package/dist/utils/type-utils.js.map +1 -1
- package/package.json +2 -2
- package/templates/empty-bot/.botpress/implementation/index.ts +5 -2
- package/templates/empty-bot/.botpress/implementation/typings/index.ts +3 -0
- package/templates/empty-bot/.botpress/implementation/typings/tables/index.ts +6 -0
- package/templates/empty-bot/package.json +1 -1
- package/templates/empty-integration/package.json +1 -1
- package/templates/empty-plugin/.botpress/implementation/index.ts +27 -4
- package/templates/empty-plugin/.botpress/implementation/typings/index.ts +3 -0
- package/templates/empty-plugin/.botpress/implementation/typings/tables/index.ts +6 -0
- package/templates/empty-plugin/package.json +1 -1
- package/templates/hello-world/package.json +1 -1
- package/templates/webhook-message/package.json +1 -1
- package/dist/sdk/resolve-bot-interfaces.js.map +0 -7
- package/dist/sdk/resolve-integration-interfaces.js +0 -161
- package/dist/sdk/resolve-integration-interfaces.js.map +0 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botpress/cli",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Botpress CLI",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "pnpm run bundle && pnpm run template:gen",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"@apidevtools/json-schema-ref-parser": "^11.7.0",
|
|
23
23
|
"@botpress/chat": "0.4.7",
|
|
24
24
|
"@botpress/client": "0.41.0",
|
|
25
|
-
"@botpress/sdk": "
|
|
25
|
+
"@botpress/sdk": "3.0.0",
|
|
26
26
|
"@bpinternal/const": "^0.0.20",
|
|
27
27
|
"@bpinternal/tunnel": "^0.1.1",
|
|
28
28
|
"@bpinternal/yargs-extra": "^0.0.3",
|
|
@@ -28,11 +28,14 @@ export class Bot extends sdk.Bot<TBot, TPlugins> {
|
|
|
28
28
|
// extra types
|
|
29
29
|
|
|
30
30
|
type AsyncFunction = (...args: any[]) => Promise<any>
|
|
31
|
+
|
|
32
|
+
export type BotHandlers = sdk.BotHandlers<TBot>
|
|
33
|
+
|
|
31
34
|
export type EventHandlers = Required<{
|
|
32
|
-
[K in keyof
|
|
35
|
+
[K in keyof BotHandlers['eventHandlers']]: NonNullable<BotHandlers['eventHandlers'][K]>[number]
|
|
33
36
|
}>
|
|
34
37
|
export type MessageHandlers = Required<{
|
|
35
|
-
[K in keyof
|
|
38
|
+
[K in keyof BotHandlers['messageHandlers']]: NonNullable<BotHandlers['messageHandlers'][K]>[number]
|
|
36
39
|
}>
|
|
37
40
|
|
|
38
41
|
export type MessageHandlerProps = Parameters<MessageHandlers['*']>[0]
|
|
@@ -6,15 +6,18 @@ import * as integrations from './integrations/index'
|
|
|
6
6
|
import * as events from './events'
|
|
7
7
|
import * as states from './states'
|
|
8
8
|
import * as actions from './actions'
|
|
9
|
+
import * as tables from './tables/index'
|
|
9
10
|
|
|
10
11
|
export * as integrations from './integrations/index'
|
|
11
12
|
export * as events from './events/index'
|
|
12
13
|
export * as states from './states/index'
|
|
13
14
|
export * as actions from './actions'
|
|
15
|
+
export * as tables from './tables/index'
|
|
14
16
|
|
|
15
17
|
export type TBot = {
|
|
16
18
|
integrations: integrations.Integrations
|
|
17
19
|
events: events.Events
|
|
18
20
|
states: states.States
|
|
19
21
|
actions: actions.Actions
|
|
22
|
+
tables: tables.Tables
|
|
20
23
|
}
|
|
@@ -10,18 +10,41 @@ type TPlugin = sdk.DefaultPlugin<typings.TPlugin>
|
|
|
10
10
|
|
|
11
11
|
export class Plugin extends sdk.Plugin<TPlugin> {}
|
|
12
12
|
|
|
13
|
+
export type PluginProps = sdk.PluginProps<TPlugin>
|
|
14
|
+
export type PluginRuntimeProps = sdk.PluginRuntimeProps<TPlugin>
|
|
15
|
+
|
|
13
16
|
// extra types
|
|
14
17
|
|
|
18
|
+
type ValueOf<T> = T[keyof T]
|
|
15
19
|
type AsyncFunction = (...args: any[]) => Promise<any>
|
|
20
|
+
|
|
21
|
+
export type PluginHandlers = sdk.PluginHandlers<TPlugin>
|
|
22
|
+
|
|
16
23
|
export type EventHandlers = Required<{
|
|
17
|
-
[K in keyof
|
|
24
|
+
[K in keyof PluginHandlers['eventHandlers']]: NonNullable<PluginHandlers['eventHandlers'][K]>[number]
|
|
18
25
|
}>
|
|
19
26
|
export type MessageHandlers = Required<{
|
|
20
|
-
[K in keyof
|
|
27
|
+
[K in keyof PluginHandlers['messageHandlers']]: NonNullable<PluginHandlers['messageHandlers'][K]>[number]
|
|
28
|
+
}>
|
|
29
|
+
export type HookHandlers = Required<{
|
|
30
|
+
[H in keyof PluginHandlers['hookHandlers']]: {
|
|
31
|
+
[K in keyof PluginHandlers['hookHandlers'][H]]: NonNullable<PluginHandlers['hookHandlers'][H][K]>[number]
|
|
32
|
+
}
|
|
21
33
|
}>
|
|
22
34
|
|
|
23
|
-
export type
|
|
24
|
-
export type
|
|
35
|
+
export type AnyMessageHandler = MessageHandlers['*']
|
|
36
|
+
export type AnyEventHandler = EventHandlers['*']
|
|
37
|
+
export type AnyActionHandler = ValueOf<PluginHandlers['actionHandlers']>
|
|
38
|
+
export type AnyHookHanders = {
|
|
39
|
+
[H in keyof HookHandlers]: HookHandlers[H]['*']
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export type MessageHandlerProps = Parameters<AnyMessageHandler>[0]
|
|
43
|
+
export type EventHandlerProps = Parameters<AnyEventHandler>[0]
|
|
44
|
+
export type ActionHandlerProps = Parameters<AnyActionHandler>[0]
|
|
45
|
+
export type HookHandlerProps = {
|
|
46
|
+
[H in keyof AnyHookHanders]: Parameters<NonNullable<AnyHookHanders[H]>>[0]
|
|
47
|
+
}
|
|
25
48
|
|
|
26
49
|
export type Client = (MessageHandlerProps | EventHandlerProps)['client']
|
|
27
50
|
export type ClientOperation = keyof {
|
|
@@ -8,6 +8,7 @@ import * as configuration from './configuration/index'
|
|
|
8
8
|
import * as events from './events'
|
|
9
9
|
import * as states from './states'
|
|
10
10
|
import * as actions from './actions'
|
|
11
|
+
import * as tables from './tables/index'
|
|
11
12
|
|
|
12
13
|
export * as integrations from './integrations/index'
|
|
13
14
|
export * as interfaces from './interfaces/index'
|
|
@@ -15,6 +16,7 @@ export * as configuration from './configuration/index'
|
|
|
15
16
|
export * as events from './events/index'
|
|
16
17
|
export * as states from './states/index'
|
|
17
18
|
export * as actions from './actions'
|
|
19
|
+
export * as tables from './tables/index'
|
|
18
20
|
|
|
19
21
|
export type TPlugin = {
|
|
20
22
|
integrations: integrations.Integrations
|
|
@@ -23,4 +25,5 @@ export type TPlugin = {
|
|
|
23
25
|
events: events.Events
|
|
24
26
|
states: states.States
|
|
25
27
|
actions: actions.Actions
|
|
28
|
+
tables: tables.Tables
|
|
26
29
|
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/sdk/resolve-bot-interfaces.ts"],
|
|
4
|
-
"sourcesContent": ["import * as sdk from '@botpress/sdk'\nimport * as utils from '../utils'\nimport { resolveInterfaces } from './resolve-integration-interfaces'\n\ntype IntegrationPackageDefinition = sdk.IntegrationPackage['definition']\n\ntype _assertPropsInIntegrationDefinition = utils.types.AssertKeyOf<'props', sdk.IntegrationDefinition>\nconst _isLocalIntegrationDef = (\n integration: sdk.IntegrationDefinition | IntegrationPackageDefinition\n): integration is sdk.IntegrationDefinition => {\n return 'props' in integration\n}\n\nexport const resolveBotInterfaces = (bot: sdk.BotDefinition): sdk.BotDefinition => {\n for (const integration of Object.values(bot.integrations ?? {})) {\n if (!integration.definition.interfaces) {\n continue\n }\n\n if (_isLocalIntegrationDef(integration.definition)) {\n integration.definition = resolveInterfaces(integration.definition)\n }\n }\n return bot\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,4CAAkC;AAKlC,MAAM,yBAAyB,CAC7B,gBAC6C;AAC7C,SAAO,WAAW;AACpB;AAEO,MAAM,uBAAuB,CAAC,QAA8C;AACjF,aAAW,eAAe,OAAO,OAAO,IAAI,gBAAgB,CAAC,CAAC,GAAG;AAC/D,QAAI,CAAC,YAAY,WAAW,YAAY;AACtC;AAAA,IACF;AAEA,QAAI,uBAAuB,YAAY,UAAU,GAAG;AAClD,kBAAY,iBAAa,yDAAkB,YAAY,UAAU;AAAA,IACnE;AAAA,EACF;AACA,SAAO;AACT;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var resolve_integration_interfaces_exports = {};
|
|
30
|
-
__export(resolve_integration_interfaces_exports, {
|
|
31
|
-
getImplementationStatements: () => getImplementationStatements,
|
|
32
|
-
resolveInterfaces: () => resolveInterfaces
|
|
33
|
-
});
|
|
34
|
-
module.exports = __toCommonJS(resolve_integration_interfaces_exports);
|
|
35
|
-
var sdk = __toESM(require("@botpress/sdk"));
|
|
36
|
-
var import_lodash = __toESM(require("lodash"));
|
|
37
|
-
var utils = __toESM(require("../utils"));
|
|
38
|
-
const resolveInterfaces = (integration) => {
|
|
39
|
-
const self = integration;
|
|
40
|
-
if (!self.interfaces) {
|
|
41
|
-
return integration;
|
|
42
|
-
}
|
|
43
|
-
for (const intrface of Object.values(self.interfaces)) {
|
|
44
|
-
const { resolved } = _resolveInterface(intrface);
|
|
45
|
-
self.actions = utils.records.mergeRecords(self.actions ?? {}, resolved.actions, _mergeActions);
|
|
46
|
-
self.channels = utils.records.mergeRecords(self.channels ?? {}, resolved.channels, _mergeChannels);
|
|
47
|
-
self.events = utils.records.mergeRecords(self.events ?? {}, resolved.events, _mergeEvents);
|
|
48
|
-
}
|
|
49
|
-
return self;
|
|
50
|
-
};
|
|
51
|
-
const getImplementationStatements = (integration) => {
|
|
52
|
-
const self = integration;
|
|
53
|
-
if (!self.interfaces) {
|
|
54
|
-
return {};
|
|
55
|
-
}
|
|
56
|
-
const statements = {};
|
|
57
|
-
for (const [interfaceKey, intrface] of Object.entries(self.interfaces)) {
|
|
58
|
-
const { statement } = _resolveInterface(intrface);
|
|
59
|
-
statements[interfaceKey] = statement;
|
|
60
|
-
}
|
|
61
|
-
return statements;
|
|
62
|
-
};
|
|
63
|
-
const _mergeActions = (a, b) => {
|
|
64
|
-
return {
|
|
65
|
-
...a,
|
|
66
|
-
...b,
|
|
67
|
-
input: {
|
|
68
|
-
schema: _mergeObjectSchemas(a.input.schema, b.input.schema)
|
|
69
|
-
},
|
|
70
|
-
output: {
|
|
71
|
-
schema: _mergeObjectSchemas(a.input.schema, b.output.schema)
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
};
|
|
75
|
-
const _mergeEvents = (a, b) => {
|
|
76
|
-
return {
|
|
77
|
-
...a,
|
|
78
|
-
...b,
|
|
79
|
-
schema: _mergeObjectSchemas(a.schema, b.schema)
|
|
80
|
-
};
|
|
81
|
-
};
|
|
82
|
-
const _mergeChannels = (a, b) => {
|
|
83
|
-
const messages = utils.records.mergeRecords(a.messages, b.messages, _mergeMessage);
|
|
84
|
-
return {
|
|
85
|
-
...a,
|
|
86
|
-
...b,
|
|
87
|
-
messages
|
|
88
|
-
};
|
|
89
|
-
};
|
|
90
|
-
const _mergeMessage = (a, b) => {
|
|
91
|
-
return {
|
|
92
|
-
schema: _mergeObjectSchemas(a.schema, b.schema)
|
|
93
|
-
};
|
|
94
|
-
};
|
|
95
|
-
const _resolveInterface = (intrface) => {
|
|
96
|
-
const { id } = intrface;
|
|
97
|
-
const { name, version } = intrface;
|
|
98
|
-
const resolved = { actions: {}, events: {}, channels: {} };
|
|
99
|
-
const statement = {
|
|
100
|
-
id,
|
|
101
|
-
name,
|
|
102
|
-
version,
|
|
103
|
-
entities: import_lodash.default.mapValues(intrface.entities, (entity) => ({ name: entity.name })),
|
|
104
|
-
// { item: { name: 'issue' } },
|
|
105
|
-
actions: {},
|
|
106
|
-
events: {},
|
|
107
|
-
channels: {}
|
|
108
|
-
};
|
|
109
|
-
const entitySchemas = import_lodash.default.mapValues(intrface.entities, (entity) => entity.schema);
|
|
110
|
-
for (const [actionName, action] of Object.entries(intrface.definition.actions ?? {})) {
|
|
111
|
-
const resolvedInputSchema = action.input.schema.dereference(entitySchemas);
|
|
112
|
-
const resolvedOutputSchema = action.output.schema.dereference(entitySchemas);
|
|
113
|
-
const newActionName = _rename(intrface, actionName);
|
|
114
|
-
resolved.actions[newActionName] = {
|
|
115
|
-
...action,
|
|
116
|
-
input: { schema: resolvedInputSchema },
|
|
117
|
-
output: { schema: resolvedOutputSchema }
|
|
118
|
-
};
|
|
119
|
-
statement.actions[actionName] = { name: newActionName };
|
|
120
|
-
}
|
|
121
|
-
for (const [eventName, event] of Object.entries(intrface.definition.events ?? {})) {
|
|
122
|
-
const resolvedEventSchema = event.schema.dereference(entitySchemas);
|
|
123
|
-
const newEventName = _rename(intrface, eventName);
|
|
124
|
-
resolved.events[newEventName] = { ...event, schema: resolvedEventSchema };
|
|
125
|
-
statement.events[eventName] = { name: newEventName };
|
|
126
|
-
}
|
|
127
|
-
for (const [channelName, channel] of Object.entries(intrface.definition.channels ?? {})) {
|
|
128
|
-
const messages = {};
|
|
129
|
-
for (const [messageName, message] of Object.entries(channel.messages)) {
|
|
130
|
-
const resolvedMessageSchema = message.schema.dereference(entitySchemas);
|
|
131
|
-
messages[messageName] = { ...message, schema: resolvedMessageSchema };
|
|
132
|
-
}
|
|
133
|
-
const newChannelName = _rename(intrface, channelName);
|
|
134
|
-
resolved.channels[newChannelName] = { ...channel, messages };
|
|
135
|
-
statement.channels[channelName] = { name: newChannelName };
|
|
136
|
-
}
|
|
137
|
-
return { resolved, statement };
|
|
138
|
-
};
|
|
139
|
-
const _rename = (intrface, name) => {
|
|
140
|
-
if (!intrface.definition.templateName) {
|
|
141
|
-
return name;
|
|
142
|
-
}
|
|
143
|
-
const { entities } = intrface;
|
|
144
|
-
const templateProps = import_lodash.default.mapValues(entities, (entity) => entity.name);
|
|
145
|
-
return utils.template.formatHandleBars(intrface.definition.templateName, { ...templateProps, name });
|
|
146
|
-
};
|
|
147
|
-
const _mergeObjectSchemas = (a, b) => {
|
|
148
|
-
if (a instanceof sdk.z.ZodObject && b instanceof sdk.z.ZodObject) {
|
|
149
|
-
return a.merge(b);
|
|
150
|
-
}
|
|
151
|
-
if (a instanceof sdk.z.ZodRecord && b instanceof sdk.z.ZodRecord) {
|
|
152
|
-
return sdk.z.record(sdk.z.intersection(a.valueSchema, b.valueSchema));
|
|
153
|
-
}
|
|
154
|
-
throw new Error("Cannot merge object schemas with record schemas");
|
|
155
|
-
};
|
|
156
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
157
|
-
0 && (module.exports = {
|
|
158
|
-
getImplementationStatements,
|
|
159
|
-
resolveInterfaces
|
|
160
|
-
});
|
|
161
|
-
//# sourceMappingURL=resolve-integration-interfaces.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/sdk/resolve-integration-interfaces.ts"],
|
|
4
|
-
"sourcesContent": ["import * as sdk from '@botpress/sdk'\nimport _ from 'lodash'\nimport * as utils from '../utils'\n\ntype InterfaceExtension = NonNullable<sdk.IntegrationDefinition['interfaces']>[string]\ntype ResolvedInterface = {\n actions: Record<string, sdk.ActionDefinition>\n events: Record<string, sdk.EventDefinition>\n channels: Record<string, sdk.ChannelDefinition>\n}\ntype InterfaceImplStatement = {\n id?: string\n name: string\n version: string\n entities: Record<string, { name: string }>\n actions: Record<string, { name: string }>\n events: Record<string, { name: string }>\n channels: Record<string, { name: string }>\n}\n\ntype ZodObjectSchema = sdk.z.ZodObject | sdk.z.ZodRecord\n\nexport const resolveInterfaces = (integration: sdk.IntegrationDefinition): sdk.IntegrationDefinition => {\n const self = integration as utils.types.Writable<sdk.IntegrationDefinition>\n if (!self.interfaces) {\n return integration\n }\n\n for (const intrface of Object.values(self.interfaces)) {\n const { resolved } = _resolveInterface(intrface)\n\n /**\n * If an action is defined both in the integration and the interface; we merge both.\n * This allows setting more specific properties in the integration, while staying compatible with the interface.\n * Same goes for channels and events.\n */\n\n self.actions = utils.records.mergeRecords(self.actions ?? {}, resolved.actions, _mergeActions)\n self.channels = utils.records.mergeRecords(self.channels ?? {}, resolved.channels, _mergeChannels)\n self.events = utils.records.mergeRecords(self.events ?? {}, resolved.events, _mergeEvents)\n }\n\n return self\n}\n\nexport const getImplementationStatements = (\n integration: sdk.IntegrationDefinition\n): Record<string, InterfaceImplStatement> => {\n const self = integration as utils.types.Writable<sdk.IntegrationDefinition>\n if (!self.interfaces) {\n return {}\n }\n\n const statements: Record<string, InterfaceImplStatement> = {}\n for (const [interfaceKey, intrface] of Object.entries(self.interfaces)) {\n const { statement } = _resolveInterface(intrface)\n statements[interfaceKey] = statement\n }\n\n return statements\n}\n\nconst _mergeActions = (a: sdk.ActionDefinition, b: sdk.ActionDefinition): sdk.ActionDefinition => {\n return {\n ...a,\n ...b,\n input: {\n schema: _mergeObjectSchemas(a.input.schema, b.input.schema),\n },\n output: {\n schema: _mergeObjectSchemas(a.input.schema, b.output.schema),\n },\n }\n}\n\nconst _mergeEvents = (a: sdk.EventDefinition, b: sdk.EventDefinition): sdk.EventDefinition => {\n return {\n ...a,\n ...b,\n schema: _mergeObjectSchemas(a.schema, b.schema),\n }\n}\n\nconst _mergeChannels = (a: sdk.ChannelDefinition, b: sdk.ChannelDefinition): sdk.ChannelDefinition => {\n const messages = utils.records.mergeRecords(a.messages, b.messages, _mergeMessage)\n return {\n ...a,\n ...b,\n messages,\n }\n}\n\nconst _mergeMessage = (a: sdk.MessageDefinition, b: sdk.MessageDefinition): sdk.MessageDefinition => {\n return {\n schema: _mergeObjectSchemas(a.schema, b.schema),\n }\n}\n\nconst _resolveInterface = (\n intrface: InterfaceExtension\n): { resolved: ResolvedInterface; statement: InterfaceImplStatement } => {\n const { id } = intrface\n const { name, version } = intrface\n\n const resolved: ResolvedInterface = { actions: {}, events: {}, channels: {} }\n const statement: InterfaceImplStatement = {\n id,\n name,\n version,\n entities: _.mapValues(intrface.entities, (entity) => ({ name: entity.name })), // { item: { name: 'issue' } },\n actions: {},\n events: {},\n channels: {},\n }\n\n const entitySchemas = _.mapValues(intrface.entities, (entity) => entity.schema)\n\n // dereference actions\n for (const [actionName, action] of Object.entries(intrface.definition.actions ?? {})) {\n const resolvedInputSchema = action.input.schema.dereference(entitySchemas) as sdk.z.AnyZodObject\n const resolvedOutputSchema = action.output.schema.dereference(entitySchemas) as sdk.z.AnyZodObject\n\n const newActionName = _rename(intrface, actionName)\n resolved.actions[newActionName] = {\n ...action,\n input: { schema: resolvedInputSchema },\n output: { schema: resolvedOutputSchema },\n }\n statement.actions[actionName] = { name: newActionName }\n }\n\n // dereference events\n for (const [eventName, event] of Object.entries(intrface.definition.events ?? {})) {\n const resolvedEventSchema = event.schema.dereference(entitySchemas) as sdk.z.AnyZodObject\n const newEventName = _rename(intrface, eventName)\n resolved.events[newEventName] = { ...event, schema: resolvedEventSchema }\n statement.events[eventName] = { name: newEventName }\n }\n\n // dereference channels\n for (const [channelName, channel] of Object.entries(intrface.definition.channels ?? {})) {\n const messages: Record<string, { schema: sdk.z.AnyZodObject }> = {}\n for (const [messageName, message] of Object.entries(channel.messages)) {\n const resolvedMessageSchema = message.schema.dereference(entitySchemas) as sdk.z.AnyZodObject\n // no renaming for messages as they are already contained within a channel that acts as a namespace\n messages[messageName] = { ...message, schema: resolvedMessageSchema }\n }\n const newChannelName = _rename(intrface, channelName)\n resolved.channels[newChannelName] = { ...channel, messages }\n statement.channels[channelName] = { name: newChannelName }\n }\n\n return { resolved, statement }\n}\n\nconst _rename = (intrface: InterfaceExtension, name: string) => {\n if (!intrface.definition.templateName) {\n return name\n }\n const { entities } = intrface\n const templateProps = _.mapValues(entities, (entity) => entity.name)\n return utils.template.formatHandleBars(intrface.definition.templateName, { ...templateProps, name })\n}\n\nconst _mergeObjectSchemas = (a: ZodObjectSchema, b: ZodObjectSchema): ZodObjectSchema => {\n if (a instanceof sdk.z.ZodObject && b instanceof sdk.z.ZodObject) {\n return a.merge(b)\n }\n if (a instanceof sdk.z.ZodRecord && b instanceof sdk.z.ZodRecord) {\n return sdk.z.record(sdk.z.intersection(a.valueSchema, b.valueSchema))\n }\n // TODO: adress this case\n throw new Error('Cannot merge object schemas with record schemas')\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["_"]
|
|
7
|
-
}
|