@botpress/cli 4.27.4 → 5.0.1
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 +12 -12
- package/dist/code-generation/bot-implementation/bot-implementation.js +2 -3
- package/dist/code-generation/bot-implementation/bot-implementation.js.map +2 -2
- package/dist/code-generation/bot-implementation/bot-plugins/plugin-module.js +2 -2
- package/dist/code-generation/bot-implementation/bot-plugins/plugin-module.js.map +2 -2
- package/dist/code-generation/plugin-implementation/plugin-implementation.js +2 -3
- package/dist/code-generation/plugin-implementation/plugin-implementation.js.map +2 -2
- package/dist/code-generation/plugin-implementation/plugin-typings/conversation-module.d.ts +7 -0
- package/dist/code-generation/plugin-implementation/plugin-typings/conversation-module.js +63 -0
- package/dist/code-generation/plugin-implementation/plugin-typings/conversation-module.js.map +7 -0
- package/dist/code-generation/plugin-implementation/plugin-typings/index.js +32 -2
- package/dist/code-generation/plugin-implementation/plugin-typings/index.js.map +2 -2
- package/dist/code-generation/plugin-implementation/plugin-typings/message-module.d.ts +7 -0
- package/dist/code-generation/plugin-implementation/plugin-typings/message-module.js +63 -0
- package/dist/code-generation/plugin-implementation/plugin-typings/message-module.js.map +7 -0
- package/dist/code-generation/plugin-implementation/plugin-typings/user-module.d.ts +7 -0
- package/dist/code-generation/plugin-implementation/plugin-typings/user-module.js +63 -0
- package/dist/code-generation/plugin-implementation/plugin-typings/user-module.js.map +7 -0
- package/dist/command-definitions.d.ts +57 -5
- package/dist/command-definitions.js +10 -1
- package/dist/command-definitions.js.map +2 -2
- package/dist/command-implementations/add-command.d.ts +2 -0
- package/dist/command-implementations/add-command.js +52 -25
- package/dist/command-implementations/add-command.js.map +2 -2
- package/dist/command-implementations/index.d.ts +59 -5
- package/dist/command-implementations/index.js +2 -0
- package/dist/command-implementations/index.js.map +2 -2
- package/dist/command-implementations/project-command.d.ts +1 -0
- package/dist/command-implementations/project-command.js +62 -29
- package/dist/command-implementations/project-command.js.map +2 -2
- package/dist/command-implementations/remove-command.d.ts +10 -0
- package/dist/command-implementations/remove-command.js +95 -0
- package/dist/command-implementations/remove-command.js.map +7 -0
- package/dist/config.d.ts +52 -5
- package/dist/config.js +8 -7
- package/dist/config.js.map +2 -2
- package/dist/index.d.ts +59 -5
- package/dist/index.js +1 -0
- package/dist/index.js.map +2 -2
- package/dist/linter/base-linter.js +2 -1
- package/dist/linter/base-linter.js.map +2 -2
- package/dist/register-yargs.js +8 -1
- package/dist/register-yargs.js.map +2 -2
- package/dist/typings.d.ts +1 -1
- package/dist/typings.js.map +1 -1
- package/dist/utils/pkgjson-utils.d.ts +2 -0
- package/dist/utils/pkgjson-utils.js +7 -2
- package/dist/utils/pkgjson-utils.js.map +2 -2
- package/package.json +2 -2
- package/templates/empty-bot/package.json +1 -1
- package/templates/empty-integration/package.json +1 -1
- package/templates/empty-plugin/package.json +1 -1
- package/templates/hello-world/package.json +1 -1
- package/templates/webhook-message/package.json +1 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/code-generation/plugin-implementation/plugin-typings/user-module.ts"],
|
|
4
|
+
"sourcesContent": ["import * as sdk from '@botpress/sdk'\nimport { INDEX_FILE } from '../../consts'\nimport * as consts from '../../consts'\nimport { stringifySingleLine } from '../../generators'\nimport { Module } from '../../module'\nimport * as strings from '../../strings'\n\nexport class UserModule extends Module {\n public constructor(private _user: sdk.PluginDefinition['user']) {\n const name = 'user'\n const exportName = strings.typeName(name)\n super({\n path: INDEX_FILE,\n exportName,\n })\n }\n\n public async getContent() {\n const user = { tags: this._user?.tags ?? {} }\n\n return [\n consts.GENERATED_HEADER,\n `export type ${this.exportName} = {`,\n ` tags: ${stringifySingleLine(user.tags)}`,\n '}',\n ].join('\\n')\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAA2B;AAC3B,aAAwB;AACxB,wBAAoC;AACpC,oBAAuB;AACvB,cAAyB;AAElB,MAAM,mBAAmB,qBAAO;AAAA,EAC9B,YAAoB,OAAqC;AAC9D,UAAM,OAAO;AACb,UAAM,aAAa,QAAQ,SAAS,IAAI;AACxC,UAAM;AAAA,MACJ,MAAM;AAAA,MACN;AAAA,IACF,CAAC;AANwB;AAAA,EAO3B;AAAA,EAEA,MAAa,aAAa;AACxB,UAAM,OAAO,EAAE,MAAM,KAAK,OAAO,QAAQ,CAAC,EAAE;AAE5C,WAAO;AAAA,MACL,OAAO;AAAA,MACP,eAAe,KAAK,UAAU;AAAA,MAC9B,eAAW,uCAAoB,KAAK,IAAI,CAAC;AAAA,MACzC;AAAA,IACF,EAAE,KAAK,IAAI;AAAA,EACb;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1155,11 +1155,6 @@ declare const _default: {
|
|
|
1155
1155
|
positional: true;
|
|
1156
1156
|
idx: number;
|
|
1157
1157
|
};
|
|
1158
|
-
packageType: {
|
|
1159
|
-
type: "string";
|
|
1160
|
-
description: string;
|
|
1161
|
-
choices: readonly ["integration", "interface", "plugin"];
|
|
1162
|
-
};
|
|
1163
1158
|
installPath: {
|
|
1164
1159
|
type: "string";
|
|
1165
1160
|
description: string;
|
|
@@ -1214,6 +1209,63 @@ declare const _default: {
|
|
|
1214
1209
|
alias: string;
|
|
1215
1210
|
};
|
|
1216
1211
|
};
|
|
1212
|
+
alias: string[];
|
|
1213
|
+
};
|
|
1214
|
+
remove: {
|
|
1215
|
+
description: string;
|
|
1216
|
+
schema: {
|
|
1217
|
+
workDir: {
|
|
1218
|
+
type: "string";
|
|
1219
|
+
description: string;
|
|
1220
|
+
default: string;
|
|
1221
|
+
};
|
|
1222
|
+
alias: {
|
|
1223
|
+
idx: number;
|
|
1224
|
+
positional: true;
|
|
1225
|
+
type: "string";
|
|
1226
|
+
description: string;
|
|
1227
|
+
};
|
|
1228
|
+
apiUrl: {
|
|
1229
|
+
type: "string";
|
|
1230
|
+
description: string;
|
|
1231
|
+
};
|
|
1232
|
+
workspaceId: {
|
|
1233
|
+
type: "string";
|
|
1234
|
+
description: string;
|
|
1235
|
+
};
|
|
1236
|
+
token: {
|
|
1237
|
+
type: "string";
|
|
1238
|
+
description: string;
|
|
1239
|
+
};
|
|
1240
|
+
verbose: {
|
|
1241
|
+
type: "boolean";
|
|
1242
|
+
description: string;
|
|
1243
|
+
alias: string;
|
|
1244
|
+
default: boolean;
|
|
1245
|
+
};
|
|
1246
|
+
confirm: {
|
|
1247
|
+
type: "boolean";
|
|
1248
|
+
description: string;
|
|
1249
|
+
alias: string;
|
|
1250
|
+
default: boolean;
|
|
1251
|
+
};
|
|
1252
|
+
json: {
|
|
1253
|
+
type: "boolean";
|
|
1254
|
+
description: string;
|
|
1255
|
+
default: boolean;
|
|
1256
|
+
};
|
|
1257
|
+
botpressHome: {
|
|
1258
|
+
type: "string";
|
|
1259
|
+
description: string;
|
|
1260
|
+
default: string;
|
|
1261
|
+
};
|
|
1262
|
+
profile: {
|
|
1263
|
+
type: "string";
|
|
1264
|
+
description: string;
|
|
1265
|
+
alias: string;
|
|
1266
|
+
};
|
|
1267
|
+
};
|
|
1268
|
+
alias: string;
|
|
1217
1269
|
};
|
|
1218
1270
|
dev: {
|
|
1219
1271
|
description: string;
|
|
@@ -75,7 +75,16 @@ var command_definitions_default = {
|
|
|
75
75
|
read: { description: "Read and parse an integration definition", schema: config.schemas.read },
|
|
76
76
|
serve: { description: "Serve your project locally", schema: config.schemas.serve },
|
|
77
77
|
deploy: { description: "Deploy your project to the cloud", schema: config.schemas.deploy },
|
|
78
|
-
add: {
|
|
78
|
+
add: {
|
|
79
|
+
description: "Install a package; could be an integration or an interface",
|
|
80
|
+
schema: config.schemas.add,
|
|
81
|
+
alias: ["i", "install"]
|
|
82
|
+
},
|
|
83
|
+
remove: {
|
|
84
|
+
description: "Remove a package from your project's dependencies",
|
|
85
|
+
schema: config.schemas.remove,
|
|
86
|
+
alias: "rm"
|
|
87
|
+
},
|
|
79
88
|
dev: { description: "Run your project in dev mode", schema: config.schemas.dev },
|
|
80
89
|
lint: { description: "EXPERIMENTAL: Lint an integration definition", schema: config.schemas.lint },
|
|
81
90
|
chat: { description: "EXPERIMENTAL: Chat with a bot directly from the CLI", schema: config.schemas.chat },
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/command-definitions.ts"],
|
|
4
|
-
"sourcesContent": ["import type { DefinitionTree } from './command-tree'\nimport * as config from './config'\n\nexport default {\n login: { description: 'Login to Botpress Cloud', schema: config.schemas.login },\n logout: { description: 'Logout of Botpress Cloud', schema: config.schemas.logout },\n bots: {\n description: 'Bot related commands',\n subcommands: {\n create: { description: 'Create new bot', schema: config.schemas.createBot, alias: 'new' },\n get: { description: 'Get bot', schema: config.schemas.getBot },\n delete: { description: 'Delete bot', schema: config.schemas.deleteBot, alias: 'rm' },\n list: { description: 'List bots', schema: config.schemas.listBots, alias: 'ls' },\n },\n },\n integrations: {\n description: 'Integration related commands',\n subcommands: {\n get: { description: 'Get integration', schema: config.schemas.getIntegration },\n delete: { description: 'Delete integration', schema: config.schemas.deleteIntegration, alias: 'rm' },\n list: { description: 'List integrations', schema: config.schemas.listIntegrations, alias: 'ls' },\n },\n },\n interfaces: {\n description: 'Interface related commands',\n subcommands: {\n get: { description: 'Get interface', schema: config.schemas.getInterface },\n delete: { description: 'Delete interface', schema: config.schemas.deleteInterface, alias: 'rm' },\n list: { description: 'List interfaces', schema: config.schemas.listInterfaces, alias: 'ls' },\n },\n },\n plugins: {\n description: 'Plugin related commands',\n subcommands: {\n get: { description: 'Get plugin', schema: config.schemas.getPlugin },\n delete: { description: 'Delete plugin', schema: config.schemas.deletePlugin, alias: 'rm' },\n list: { description: 'List plugins', schema: config.schemas.listPlugins, alias: 'ls' },\n },\n },\n init: { description: 'Initialize a new project', schema: config.schemas.init },\n generate: { description: 'Generate typings for intellisense', schema: config.schemas.generate, alias: 'gen' },\n bundle: { description: 'Bundle a botpress project', schema: config.schemas.bundle },\n build: { description: 'Generate typings and bundle a botpress project', schema: config.schemas.build },\n read: { description: 'Read and parse an integration definition', schema: config.schemas.read },\n serve: { description: 'Serve your project locally', schema: config.schemas.serve },\n deploy: { description: 'Deploy your project to the cloud', schema: config.schemas.deploy },\n add: {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,aAAwB;AAExB,IAAO,8BAAQ;AAAA,EACb,OAAO,EAAE,aAAa,2BAA2B,QAAQ,OAAO,QAAQ,MAAM;AAAA,EAC9E,QAAQ,EAAE,aAAa,4BAA4B,QAAQ,OAAO,QAAQ,OAAO;AAAA,EACjF,MAAM;AAAA,IACJ,aAAa;AAAA,IACb,aAAa;AAAA,MACX,QAAQ,EAAE,aAAa,kBAAkB,QAAQ,OAAO,QAAQ,WAAW,OAAO,MAAM;AAAA,MACxF,KAAK,EAAE,aAAa,WAAW,QAAQ,OAAO,QAAQ,OAAO;AAAA,MAC7D,QAAQ,EAAE,aAAa,cAAc,QAAQ,OAAO,QAAQ,WAAW,OAAO,KAAK;AAAA,MACnF,MAAM,EAAE,aAAa,aAAa,QAAQ,OAAO,QAAQ,UAAU,OAAO,KAAK;AAAA,IACjF;AAAA,EACF;AAAA,EACA,cAAc;AAAA,IACZ,aAAa;AAAA,IACb,aAAa;AAAA,MACX,KAAK,EAAE,aAAa,mBAAmB,QAAQ,OAAO,QAAQ,eAAe;AAAA,MAC7E,QAAQ,EAAE,aAAa,sBAAsB,QAAQ,OAAO,QAAQ,mBAAmB,OAAO,KAAK;AAAA,MACnG,MAAM,EAAE,aAAa,qBAAqB,QAAQ,OAAO,QAAQ,kBAAkB,OAAO,KAAK;AAAA,IACjG;AAAA,EACF;AAAA,EACA,YAAY;AAAA,IACV,aAAa;AAAA,IACb,aAAa;AAAA,MACX,KAAK,EAAE,aAAa,iBAAiB,QAAQ,OAAO,QAAQ,aAAa;AAAA,MACzE,QAAQ,EAAE,aAAa,oBAAoB,QAAQ,OAAO,QAAQ,iBAAiB,OAAO,KAAK;AAAA,MAC/F,MAAM,EAAE,aAAa,mBAAmB,QAAQ,OAAO,QAAQ,gBAAgB,OAAO,KAAK;AAAA,IAC7F;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,aAAa;AAAA,IACb,aAAa;AAAA,MACX,KAAK,EAAE,aAAa,cAAc,QAAQ,OAAO,QAAQ,UAAU;AAAA,MACnE,QAAQ,EAAE,aAAa,iBAAiB,QAAQ,OAAO,QAAQ,cAAc,OAAO,KAAK;AAAA,MACzF,MAAM,EAAE,aAAa,gBAAgB,QAAQ,OAAO,QAAQ,aAAa,OAAO,KAAK;AAAA,IACvF;AAAA,EACF;AAAA,EACA,MAAM,EAAE,aAAa,4BAA4B,QAAQ,OAAO,QAAQ,KAAK;AAAA,EAC7E,UAAU,EAAE,aAAa,qCAAqC,QAAQ,OAAO,QAAQ,UAAU,OAAO,MAAM;AAAA,EAC5G,QAAQ,EAAE,aAAa,6BAA6B,QAAQ,OAAO,QAAQ,OAAO;AAAA,EAClF,OAAO,EAAE,aAAa,kDAAkD,QAAQ,OAAO,QAAQ,MAAM;AAAA,EACrG,MAAM,EAAE,aAAa,4CAA4C,QAAQ,OAAO,QAAQ,KAAK;AAAA,EAC7F,OAAO,EAAE,aAAa,8BAA8B,QAAQ,OAAO,QAAQ,MAAM;AAAA,EACjF,QAAQ,EAAE,aAAa,oCAAoC,QAAQ,OAAO,QAAQ,OAAO;AAAA,EACzF,KAAK,
|
|
4
|
+
"sourcesContent": ["import type { DefinitionTree } from './command-tree'\nimport * as config from './config'\n\nexport default {\n login: { description: 'Login to Botpress Cloud', schema: config.schemas.login },\n logout: { description: 'Logout of Botpress Cloud', schema: config.schemas.logout },\n bots: {\n description: 'Bot related commands',\n subcommands: {\n create: { description: 'Create new bot', schema: config.schemas.createBot, alias: 'new' },\n get: { description: 'Get bot', schema: config.schemas.getBot },\n delete: { description: 'Delete bot', schema: config.schemas.deleteBot, alias: 'rm' },\n list: { description: 'List bots', schema: config.schemas.listBots, alias: 'ls' },\n },\n },\n integrations: {\n description: 'Integration related commands',\n subcommands: {\n get: { description: 'Get integration', schema: config.schemas.getIntegration },\n delete: { description: 'Delete integration', schema: config.schemas.deleteIntegration, alias: 'rm' },\n list: { description: 'List integrations', schema: config.schemas.listIntegrations, alias: 'ls' },\n },\n },\n interfaces: {\n description: 'Interface related commands',\n subcommands: {\n get: { description: 'Get interface', schema: config.schemas.getInterface },\n delete: { description: 'Delete interface', schema: config.schemas.deleteInterface, alias: 'rm' },\n list: { description: 'List interfaces', schema: config.schemas.listInterfaces, alias: 'ls' },\n },\n },\n plugins: {\n description: 'Plugin related commands',\n subcommands: {\n get: { description: 'Get plugin', schema: config.schemas.getPlugin },\n delete: { description: 'Delete plugin', schema: config.schemas.deletePlugin, alias: 'rm' },\n list: { description: 'List plugins', schema: config.schemas.listPlugins, alias: 'ls' },\n },\n },\n init: { description: 'Initialize a new project', schema: config.schemas.init },\n generate: { description: 'Generate typings for intellisense', schema: config.schemas.generate, alias: 'gen' },\n bundle: { description: 'Bundle a botpress project', schema: config.schemas.bundle },\n build: { description: 'Generate typings and bundle a botpress project', schema: config.schemas.build },\n read: { description: 'Read and parse an integration definition', schema: config.schemas.read },\n serve: { description: 'Serve your project locally', schema: config.schemas.serve },\n deploy: { description: 'Deploy your project to the cloud', schema: config.schemas.deploy },\n add: {\n description: 'Install a package; could be an integration or an interface',\n schema: config.schemas.add,\n alias: ['i', 'install'],\n },\n remove: {\n description: \"Remove a package from your project's dependencies\",\n schema: config.schemas.remove,\n alias: 'rm',\n },\n dev: { description: 'Run your project in dev mode', schema: config.schemas.dev },\n lint: { description: 'EXPERIMENTAL: Lint an integration definition', schema: config.schemas.lint },\n chat: { description: 'EXPERIMENTAL: Chat with a bot directly from the CLI', schema: config.schemas.chat },\n profiles: {\n description: 'Commands for using CLI profiles',\n subcommands: {\n list: { description: 'List all available profiles', schema: config.schemas.listProfiles, alias: 'ls' },\n active: {\n description: 'Get the profile properties you are currently using',\n schema: config.schemas.activeProfile,\n },\n use: {\n description: 'Set the current profile',\n schema: config.schemas.useProfile,\n },\n },\n },\n} satisfies DefinitionTree\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -5,6 +5,8 @@ export declare class AddCommand extends GlobalCommand<AddCommandDefinition> {
|
|
|
5
5
|
run(): Promise<void>;
|
|
6
6
|
private _parseArgvRef;
|
|
7
7
|
private _addSinglePackage;
|
|
8
|
+
private _chooseNewAlias;
|
|
9
|
+
private _chooseUnusedAlias;
|
|
8
10
|
private _addNewSinglePackage;
|
|
9
11
|
private _findPackage;
|
|
10
12
|
private _findRemotePackage;
|
|
@@ -66,12 +66,18 @@ class AddCommand extends import_global_command.GlobalCommand {
|
|
|
66
66
|
if (!parseResults.success) {
|
|
67
67
|
throw new errors.BotpressCLIError("Invalid bpDependencies found in package.json");
|
|
68
68
|
}
|
|
69
|
+
const baseInstallPath = utils.path.absoluteFrom(utils.path.cwd(), this.argv.installPath);
|
|
70
|
+
const modulesPath = utils.path.join(baseInstallPath, consts.installDirName);
|
|
71
|
+
fslib.rmSync(modulesPath, { force: true, recursive: true });
|
|
72
|
+
fslib.mkdirSync(modulesPath);
|
|
69
73
|
for (const [pkgAlias, pkgRefStr] of Object.entries(parseResults.data)) {
|
|
70
74
|
const parsed = pkgRef.parsePackageRef(pkgRefStr);
|
|
71
75
|
if (!parsed) {
|
|
72
76
|
throw new errors.InvalidPackageReferenceError(pkgRefStr);
|
|
73
77
|
}
|
|
74
|
-
|
|
78
|
+
const refWithAlias = { ...parsed, alias: pkgAlias };
|
|
79
|
+
const foundPkg = await this._findPackage(refWithAlias);
|
|
80
|
+
await this._addSinglePackage(refWithAlias, foundPkg);
|
|
75
81
|
}
|
|
76
82
|
}
|
|
77
83
|
_parseArgvRef = () => {
|
|
@@ -85,27 +91,15 @@ class AddCommand extends import_global_command.GlobalCommand {
|
|
|
85
91
|
if (parsed.type !== "name") {
|
|
86
92
|
return parsed;
|
|
87
93
|
}
|
|
88
|
-
|
|
89
|
-
if (!argvPkgType) {
|
|
90
|
-
return parsed;
|
|
91
|
-
}
|
|
92
|
-
const ref = { ...parsed, pkg: argvPkgType };
|
|
93
|
-
const strRef = pkgRef.formatPackageRef(ref);
|
|
94
|
-
this.logger.warn(`argument --packageType is deprecated; please use the package reference format "${strRef}"`);
|
|
95
|
-
return ref;
|
|
94
|
+
return;
|
|
96
95
|
};
|
|
97
|
-
async _addSinglePackage(ref) {
|
|
98
|
-
const { packageName, targetPackage } =
|
|
96
|
+
async _addSinglePackage(ref, props) {
|
|
97
|
+
const { packageName, targetPackage } = props;
|
|
99
98
|
const baseInstallPath = utils.path.absoluteFrom(utils.path.cwd(), this.argv.installPath);
|
|
100
99
|
const packageDirName = utils.casing.to.kebabCase(packageName);
|
|
101
100
|
const installPath = utils.path.join(baseInstallPath, consts.installDirName, packageDirName);
|
|
102
101
|
const alreadyInstalled = fslib.existsSync(installPath);
|
|
103
102
|
if (alreadyInstalled) {
|
|
104
|
-
this.logger.warn(`Package with name "${packageName}" already installed.`);
|
|
105
|
-
const res = await this.prompt.confirm("Do you want to overwrite the existing package?");
|
|
106
|
-
if (!res) {
|
|
107
|
-
throw new errors.AbortedOperationError();
|
|
108
|
-
}
|
|
109
103
|
await this._uninstall(installPath);
|
|
110
104
|
}
|
|
111
105
|
if (ref.type === "name" && ref.version === pkgRef.LATEST_TAG) {
|
|
@@ -129,10 +123,37 @@ class AddCommand extends import_global_command.GlobalCommand {
|
|
|
129
123
|
}
|
|
130
124
|
await this._install(installPath, files);
|
|
131
125
|
}
|
|
126
|
+
async _chooseNewAlias(existingPackages) {
|
|
127
|
+
const setAliasConfirmation = await this.prompt.confirm(
|
|
128
|
+
"Do you want to set an alias to the package you are installing?"
|
|
129
|
+
);
|
|
130
|
+
if (!setAliasConfirmation) {
|
|
131
|
+
throw new errors.AbortedOperationError();
|
|
132
|
+
}
|
|
133
|
+
const alias = this._chooseUnusedAlias(existingPackages);
|
|
134
|
+
return alias;
|
|
135
|
+
}
|
|
136
|
+
async _chooseUnusedAlias(existingPackages) {
|
|
137
|
+
const alias = await this.prompt.text("Enter the new alias");
|
|
138
|
+
const existingAlias = Object.entries(existingPackages).find(([dep, _]) => dep === alias);
|
|
139
|
+
if (!alias) {
|
|
140
|
+
throw new errors.BotpressCLIError("You cannot set an empty alias");
|
|
141
|
+
}
|
|
142
|
+
if (!existingAlias) {
|
|
143
|
+
return alias;
|
|
144
|
+
}
|
|
145
|
+
if (await this.prompt.confirm(
|
|
146
|
+
`The alias ${alias} is already used for dependency ${existingAlias[1]}. Do you want to overwrite it?`
|
|
147
|
+
)) {
|
|
148
|
+
return alias;
|
|
149
|
+
}
|
|
150
|
+
return this._chooseUnusedAlias(existingPackages);
|
|
151
|
+
}
|
|
132
152
|
async _addNewSinglePackage(ref) {
|
|
133
|
-
await this.
|
|
134
|
-
const
|
|
135
|
-
await this._addDependencyToPackage(packageName, targetPackage);
|
|
153
|
+
const foundPackage = await this._findPackage(ref);
|
|
154
|
+
const targetPackage = foundPackage.targetPackage;
|
|
155
|
+
const packageName = await this._addDependencyToPackage(foundPackage.packageName, targetPackage);
|
|
156
|
+
await this._addSinglePackage(ref, { packageName, targetPackage });
|
|
136
157
|
}
|
|
137
158
|
async _findPackage(ref) {
|
|
138
159
|
const targetPackage = ref.type === "path" ? await this._findLocalPackage(ref) : await this._findRemotePackage(ref);
|
|
@@ -302,16 +323,16 @@ class AddCommand extends import_global_command.GlobalCommand {
|
|
|
302
323
|
const pkgJson = await utils.pkgJson.readPackageJson(this.argv.installPath).catch((thrown) => {
|
|
303
324
|
throw errors.BotpressCLIError.wrap(thrown, "Failed to read package.json file");
|
|
304
325
|
});
|
|
305
|
-
const version = targetPackage.pkg.path ?? `${targetPackage.type}:${targetPackage.pkg.name}@${targetPackage.pkg.version}`;
|
|
306
326
|
if (!pkgJson) {
|
|
307
327
|
this.logger.warn("No package.json found in the install path");
|
|
308
|
-
return;
|
|
328
|
+
return packageName;
|
|
309
329
|
}
|
|
330
|
+
const version = targetPackage.pkg.path ?? `${targetPackage.type}:${targetPackage.pkg.name}@${targetPackage.pkg.version}`;
|
|
310
331
|
const { bpDependencies } = pkgJson;
|
|
311
332
|
if (!bpDependencies) {
|
|
312
333
|
pkgJson.bpDependencies = { [packageName]: version };
|
|
313
334
|
await utils.pkgJson.writePackageJson(this.argv.installPath, pkgJson);
|
|
314
|
-
return;
|
|
335
|
+
return packageName;
|
|
315
336
|
}
|
|
316
337
|
const bpDependenciesSchema = sdk.z.record(sdk.z.string());
|
|
317
338
|
const parseResult = bpDependenciesSchema.safeParse(bpDependencies);
|
|
@@ -321,18 +342,24 @@ class AddCommand extends import_global_command.GlobalCommand {
|
|
|
321
342
|
const { data: validatedBpDeps } = parseResult;
|
|
322
343
|
const alreadyPresentDep = Object.entries(validatedBpDeps).find(([key]) => key === packageName);
|
|
323
344
|
if (alreadyPresentDep) {
|
|
324
|
-
|
|
345
|
+
const alreadyPresentVersion = alreadyPresentDep[1];
|
|
346
|
+
if (alreadyPresentVersion !== version) {
|
|
325
347
|
this.logger.warn(
|
|
326
|
-
`The dependency ${packageName} is already present in the bpDependencies of package.json
|
|
348
|
+
`The dependency with alias ${packageName} is already present in the bpDependencies of package.json, but with version ${alreadyPresentVersion}.`
|
|
327
349
|
);
|
|
350
|
+
const res = await this.prompt.confirm(`Do you want to overwrite the dependency with version ${version}?`);
|
|
351
|
+
if (!res) {
|
|
352
|
+
const newAlias = await this._chooseNewAlias(validatedBpDeps);
|
|
353
|
+
packageName = newAlias;
|
|
354
|
+
}
|
|
328
355
|
}
|
|
329
|
-
return;
|
|
330
356
|
}
|
|
331
357
|
pkgJson.bpDependencies = {
|
|
332
358
|
...validatedBpDeps,
|
|
333
359
|
[packageName]: version
|
|
334
360
|
};
|
|
335
361
|
await utils.pkgJson.writePackageJson(this.argv.installPath, pkgJson);
|
|
362
|
+
return packageName;
|
|
336
363
|
}
|
|
337
364
|
}
|
|
338
365
|
class _AnyProjectCommand extends import_project_command.ProjectCommand {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/command-implementations/add-command.ts"],
|
|
4
|
-
"sourcesContent": ["import * as sdk from '@botpress/sdk'\nimport * as fslib from 'fs'\nimport * as pathlib from 'path'\nimport semver from 'semver'\nimport * as apiUtils from '../api'\nimport * as codegen from '../code-generation'\nimport type commandDefinitions from '../command-definitions'\nimport * as consts from '../consts'\nimport * as errors from '../errors'\nimport * as pkgRef from '../package-ref'\nimport * as utils from '../utils'\nimport { GlobalCommand } from './global-command'\nimport {\n ProjectCache,\n ProjectCommand,\n ProjectCommandDefinition,\n ProjectDefinitionLazy,\n ProjectDefinition,\n} from './project-command'\n\ntype InstallablePackage =\n | {\n type: 'integration'\n pkg: codegen.IntegrationInstallablePackage\n }\n | {\n type: 'interface'\n pkg: codegen.InterfaceInstallablePackage\n }\n | {\n type: 'plugin'\n pkg: codegen.PluginInstallablePackage\n }\n\ntype RefWithAlias = pkgRef.PackageRef & { alias?: string }\n\nexport type AddCommandDefinition = typeof commandDefinitions.add\nexport class AddCommand extends GlobalCommand<AddCommandDefinition> {\n public async run(): Promise<void> {\n const ref = this._parseArgvRef()\n if (ref) {\n return await this._addNewSinglePackage({ ...ref, alias: this.argv.alias })\n }\n\n const pkgJson = await utils.pkgJson.readPackageJson(this.argv.installPath).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, 'Failed to read package.json file')\n })\n\n if (!pkgJson) {\n this.logger.warn('No package.json found in the install path')\n return\n }\n\n const { bpDependencies } = pkgJson\n if (!bpDependencies) {\n this.logger.log('No bp dependencies found in package.json')\n return\n }\n\n const bpDependenciesSchema = sdk.z.record(sdk.z.string())\n const parseResults = bpDependenciesSchema.safeParse(bpDependencies)\n if (!parseResults.success) {\n throw new errors.BotpressCLIError('Invalid bpDependencies found in package.json')\n }\n\n for (const [pkgAlias, pkgRefStr] of Object.entries(parseResults.data)) {\n const parsed = pkgRef.parsePackageRef(pkgRefStr)\n if (!parsed) {\n throw new errors.InvalidPackageReferenceError(pkgRefStr)\n }\n\n await this._addSinglePackage({ ...parsed, alias: pkgAlias })\n }\n }\n\n private _parseArgvRef = (): pkgRef.PackageRef | undefined => {\n if (!this.argv.packageRef) {\n return\n }\n\n const parsed = pkgRef.parsePackageRef(this.argv.packageRef)\n if (!parsed) {\n throw new errors.InvalidPackageReferenceError(this.argv.packageRef)\n }\n\n if (parsed.type !== 'name') {\n return parsed\n }\n\n const argvPkgType = this.argv.packageType\n if (!argvPkgType) {\n return parsed\n }\n\n const ref = { ...parsed, pkg: argvPkgType }\n\n const strRef = pkgRef.formatPackageRef(ref)\n this.logger.warn(`argument --packageType is deprecated; please use the package reference format \"${strRef}\"`)\n\n return ref\n }\n\n private async _addSinglePackage(ref: RefWithAlias) {\n const { packageName, targetPackage } = await this._findPackage(ref)\n\n const baseInstallPath = utils.path.absoluteFrom(utils.path.cwd(), this.argv.installPath)\n const packageDirName = utils.casing.to.kebabCase(packageName)\n const installPath = utils.path.join(baseInstallPath, consts.installDirName, packageDirName)\n\n const alreadyInstalled = fslib.existsSync(installPath)\n if (alreadyInstalled) {\n this.logger.warn(`Package with name \"${packageName}\" already installed.`)\n const res = await this.prompt.confirm('Do you want to overwrite the existing package?')\n if (!res) {\n throw new errors.AbortedOperationError()\n }\n\n await this._uninstall(installPath)\n }\n\n if (ref.type === 'name' && ref.version === pkgRef.LATEST_TAG) {\n // If the semver version expression is 'latest', we assume the project\n // is compatible with all versions of the latest major:\n const major = semver.major(targetPackage.pkg.version)\n targetPackage.pkg.version = `>=${major}.0.0 <${major + 1}.0.0`\n\n this.logger.log(\n `Dependency \"${packageName}\" will be installed with version \"${targetPackage.pkg.version}\". ` +\n `To pin a specific version or version range, please change \"${targetPackage.type}:${packageName}@latest\" ` +\n 'to a specific version number or range instead of \"latest\".'\n )\n } else if (ref.type === 'name') {\n // Preserve the semver version expression in the generated code:\n targetPackage.pkg.version = ref.version\n }\n\n let files: codegen.File[]\n if (targetPackage.type === 'integration') {\n files = await codegen.generateIntegrationPackage(targetPackage.pkg)\n } else if (targetPackage.type === 'interface') {\n files = await codegen.generateInterfacePackage(targetPackage.pkg)\n } else if (targetPackage.type === 'plugin') {\n files = await codegen.generatePluginPackage(targetPackage.pkg)\n } else {\n type _assertion = utils.types.AssertNever<typeof targetPackage>\n throw new errors.BotpressCLIError('Invalid package type')\n }\n\n await this._install(installPath, files)\n }\n\n private async _addNewSinglePackage(ref: RefWithAlias) {\n await this._addSinglePackage(ref)\n const { packageName, targetPackage } = await this._findPackage(ref)\n await this._addDependencyToPackage(packageName, targetPackage)\n }\n\n private async _findPackage(ref: RefWithAlias): Promise<{ packageName: string; targetPackage: InstallablePackage }> {\n const targetPackage = ref.type === 'path' ? await this._findLocalPackage(ref) : await this._findRemotePackage(ref)\n if (!targetPackage) {\n const strRef = pkgRef.formatPackageRef(ref)\n throw new errors.BotpressCLIError(`Could not find package \"${strRef}\"`)\n }\n const packageName = ref.alias ?? targetPackage.pkg.name\n\n return { packageName, targetPackage }\n }\n\n private async _findRemotePackage(ref: pkgRef.ApiPackageRef): Promise<InstallablePackage | undefined> {\n const api = await this.ensureLoginAndCreateClient(this.argv)\n if (this._pkgCouldBe(ref, 'integration')) {\n const integration = await api.findPublicOrPrivateIntegration(ref)\n if (integration) {\n const { name, version } = integration\n return { type: 'integration', pkg: { integration, name, version } }\n }\n }\n if (this._pkgCouldBe(ref, 'interface')) {\n const intrface = await api.findPublicOrPrivateInterface(ref)\n if (intrface) {\n const { name, version } = intrface\n return { type: 'interface', pkg: { interface: intrface, name, version } }\n }\n }\n if (this._pkgCouldBe(ref, 'plugin')) {\n const plugin = await api.findPublicOrPrivatePlugin(ref)\n if (plugin) {\n const { code } = plugin.public\n ? await api.client.getPublicPluginCode({ id: plugin.id, platform: 'node' })\n : await api.client.getPluginCode({ id: plugin.id, platform: 'node' })\n const { name, version } = plugin\n return {\n type: 'plugin',\n pkg: {\n name,\n version,\n plugin,\n code,\n },\n }\n }\n }\n return\n }\n\n private async _findLocalPackage(ref: pkgRef.LocalPackageRef): Promise<InstallablePackage | undefined> {\n const absPath = utils.path.absoluteFrom(utils.path.cwd(), ref.path)\n const {\n definition: projectDefinition,\n implementation: projectImplementation,\n devId: projectDevId,\n } = await this._readProject(absPath)\n\n if (projectDefinition?.type === 'integration') {\n const { name, version } = projectDefinition.definition\n let devId: string | undefined\n if (this.argv.useDev && projectDevId) {\n this.logger.warn(`Installing integration \"${name}\" with dev version \"${projectDevId}\"`)\n devId = projectDevId\n }\n\n let createIntegrationReqBody = await this._getProjectCmd(ref.path).prepareCreateIntegrationBody(\n projectDefinition.definition\n )\n createIntegrationReqBody = {\n ...createIntegrationReqBody,\n interfaces: utils.records.mapValues(projectDefinition.definition.interfaces ?? {}, (i) => ({\n id: '', // TODO: do this better\n ...i,\n })),\n }\n return {\n type: 'integration',\n pkg: { path: absPath, devId, name, version, integration: createIntegrationReqBody },\n }\n }\n\n if (projectDefinition?.type === 'interface') {\n const { name, version } = projectDefinition.definition\n const createInterfaceReqBody = await apiUtils.prepareCreateInterfaceBody(projectDefinition.definition)\n return {\n type: 'interface',\n pkg: { path: absPath, name, version, interface: createInterfaceReqBody },\n }\n }\n\n if (projectDefinition?.type === 'plugin') {\n if (!projectImplementation) {\n throw new errors.BotpressCLIError(\n 'Plugin implementation not found; Please build the plugin project before installing'\n )\n }\n\n const pluginDefinition = projectDefinition.definition\n const { name, version } = pluginDefinition\n const code = projectImplementation\n\n const createPluginReqBody = await apiUtils.prepareCreatePluginBody(pluginDefinition)\n return {\n type: 'plugin',\n pkg: {\n path: absPath,\n name,\n version,\n code,\n plugin: {\n ...createPluginReqBody,\n dependencies: {\n interfaces: pluginDefinition.interfaces,\n integrations: pluginDefinition.integrations,\n },\n recurringEvents: pluginDefinition.recurringEvents,\n },\n },\n }\n }\n\n if (projectDefinition?.type === 'bot') {\n throw new errors.BotpressCLIError('Cannot install a bot as a package')\n }\n return\n }\n\n private async _install(installPath: utils.path.AbsolutePath, files: codegen.File[]): Promise<void> {\n const line = this.logger.line()\n line.started(`Installing ${files.length} files to \"${installPath}\"`)\n try {\n for (const file of files) {\n const filePath = utils.path.absoluteFrom(installPath, file.path)\n const dirPath = pathlib.dirname(filePath)\n await fslib.promises.mkdir(dirPath, { recursive: true })\n await fslib.promises.writeFile(filePath, file.content)\n }\n line.success(`Installed ${files.length} files to \"${installPath}\"`)\n } finally {\n line.commit()\n }\n }\n\n private async _uninstall(installPath: utils.path.AbsolutePath): Promise<void> {\n await fslib.promises.rm(installPath, { recursive: true })\n }\n\n private async _readProject(workDir: utils.path.AbsolutePath): Promise<{\n definition?: ProjectDefinition\n implementation?: string\n devId?: string\n }> {\n const cmd = this._getProjectCmd(workDir)\n\n const { resolveProjectDefinition } = cmd.readProjectDefinitionFromFS()\n const definition = await resolveProjectDefinition().catch((thrown) => {\n if (thrown instanceof errors.ProjectDefinitionNotFoundError) {\n return undefined\n }\n throw thrown\n })\n\n const devId = await cmd.projectCache.get('devId')\n\n const implementationAbsPath = utils.path.join(workDir, consts.fromWorkDir.outFileCJS)\n if (!fslib.existsSync(implementationAbsPath)) {\n return { definition, devId }\n }\n\n const implementation = await fslib.promises.readFile(implementationAbsPath, 'utf8')\n return { definition, implementation, devId }\n }\n\n private _pkgCouldBe = (ref: pkgRef.ApiPackageRef, pkgType: InstallablePackage['type']) => {\n if (ref.type === 'id') {\n // TODO: use ULID prefixes to determine the type of the package\n return true\n }\n if (!ref.pkg) {\n return true // ref does not specify the package type\n }\n return ref.pkg === pkgType\n }\n\n private _getProjectCmd(workDir: string): _AnyProjectCommand {\n return new _AnyProjectCommand(apiUtils.ApiClient, this.prompt, this.logger, {\n ...this.argv,\n workDir,\n })\n }\n\n private async _addDependencyToPackage(packageName: string, targetPackage: InstallablePackage) {\n const pkgJson = await utils.pkgJson.readPackageJson(this.argv.installPath).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, 'Failed to read package.json file')\n })\n\n const version =\n targetPackage.pkg.path ?? `${targetPackage.type}:${targetPackage.pkg.name}@${targetPackage.pkg.version}`\n if (!pkgJson) {\n this.logger.warn('No package.json found in the install path')\n return\n }\n\n const { bpDependencies } = pkgJson\n if (!bpDependencies) {\n pkgJson.bpDependencies = { [packageName]: version }\n await utils.pkgJson.writePackageJson(this.argv.installPath, pkgJson)\n return\n }\n\n const bpDependenciesSchema = sdk.z.record(sdk.z.string())\n const parseResult = bpDependenciesSchema.safeParse(bpDependencies)\n if (!parseResult.success) {\n throw new errors.BotpressCLIError('Invalid bpDependencies found in package.json')\n }\n\n const { data: validatedBpDeps } = parseResult\n\n const alreadyPresentDep = Object.entries(validatedBpDeps).find(([key]) => key === packageName)\n if (alreadyPresentDep) {\n if (alreadyPresentDep[1] !== version) {\n this.logger.warn(\n `The dependency ${packageName} is already present in the bpDependencies of package.json. It will not be replaced.`\n )\n }\n return\n }\n\n pkgJson.bpDependencies = {\n ...validatedBpDeps,\n [packageName]: version,\n }\n\n await utils.pkgJson.writePackageJson(this.argv.installPath, pkgJson)\n }\n}\n\n// this is a hack to avoid refactoring the project command class\nclass _AnyProjectCommand extends ProjectCommand<ProjectCommandDefinition> {\n public async run(): Promise<void> {\n throw new errors.BotpressCLIError('Not implemented')\n }\n\n public readProjectDefinitionFromFS(): ProjectDefinitionLazy {\n return super.readProjectDefinitionFromFS()\n }\n\n public async prepareCreateIntegrationBody(\n integrationDef: sdk.IntegrationDefinition\n ): Promise<apiUtils.CreateIntegrationRequestBody> {\n return super.prepareCreateIntegrationBody(integrationDef)\n }\n\n public get projectCache(): utils.cache.FSKeyValueCache<ProjectCache> {\n return super.projectCache\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAAqB;AACrB,YAAuB;AACvB,cAAyB;AACzB,oBAAmB;AACnB,eAA0B;AAC1B,cAAyB;AAEzB,aAAwB;AACxB,aAAwB;AACxB,aAAwB;AACxB,YAAuB;AACvB,4BAA8B;AAC9B,6BAMO;AAmBA,MAAM,mBAAmB,oCAAoC;AAAA,EAClE,MAAa,MAAqB;AAChC,UAAM,MAAM,KAAK,cAAc;AAC/B,QAAI,KAAK;AACP,aAAO,MAAM,KAAK,qBAAqB,EAAE,GAAG,KAAK,OAAO,KAAK,KAAK,MAAM,CAAC;AAAA,IAC3E;AAEA,UAAM,UAAU,MAAM,MAAM,QAAQ,gBAAgB,KAAK,KAAK,WAAW,EAAE,MAAM,CAAC,WAAW;AAC3F,YAAM,OAAO,iBAAiB,KAAK,QAAQ,kCAAkC;AAAA,IAC/E,CAAC;AAED,QAAI,CAAC,SAAS;AACZ,WAAK,OAAO,KAAK,2CAA2C;AAC5D;AAAA,IACF;AAEA,UAAM,EAAE,eAAe,IAAI;AAC3B,QAAI,CAAC,gBAAgB;AACnB,WAAK,OAAO,IAAI,0CAA0C;AAC1D;AAAA,IACF;AAEA,UAAM,uBAAuB,IAAI,EAAE,OAAO,IAAI,EAAE,OAAO,CAAC;AACxD,UAAM,eAAe,qBAAqB,UAAU,cAAc;AAClE,QAAI,CAAC,aAAa,SAAS;AACzB,YAAM,IAAI,OAAO,iBAAiB,8CAA8C;AAAA,IAClF;AAEA,eAAW,CAAC,UAAU,SAAS,KAAK,OAAO,QAAQ,aAAa,IAAI,GAAG;AACrE,YAAM,SAAS,OAAO,gBAAgB,SAAS;AAC/C,UAAI,CAAC,QAAQ;AACX,cAAM,IAAI,OAAO,6BAA6B,SAAS;AAAA,MACzD;AAEA,YAAM,
|
|
4
|
+
"sourcesContent": ["import * as sdk from '@botpress/sdk'\nimport * as fslib from 'fs'\nimport * as pathlib from 'path'\nimport semver from 'semver'\nimport * as apiUtils from '../api'\nimport * as codegen from '../code-generation'\nimport type commandDefinitions from '../command-definitions'\nimport * as consts from '../consts'\nimport * as errors from '../errors'\nimport * as pkgRef from '../package-ref'\nimport * as utils from '../utils'\nimport { GlobalCommand } from './global-command'\nimport {\n ProjectCache,\n ProjectCommand,\n ProjectCommandDefinition,\n ProjectDefinitionLazy,\n ProjectDefinition,\n} from './project-command'\n\ntype InstallablePackage =\n | {\n type: 'integration'\n pkg: codegen.IntegrationInstallablePackage\n }\n | {\n type: 'interface'\n pkg: codegen.InterfaceInstallablePackage\n }\n | {\n type: 'plugin'\n pkg: codegen.PluginInstallablePackage\n }\n\ntype RefWithAlias = pkgRef.PackageRef & { alias?: string }\n\nexport type AddCommandDefinition = typeof commandDefinitions.add\nexport class AddCommand extends GlobalCommand<AddCommandDefinition> {\n public async run(): Promise<void> {\n const ref = this._parseArgvRef()\n if (ref) {\n return await this._addNewSinglePackage({ ...ref, alias: this.argv.alias })\n }\n\n const pkgJson = await utils.pkgJson.readPackageJson(this.argv.installPath).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, 'Failed to read package.json file')\n })\n\n if (!pkgJson) {\n this.logger.warn('No package.json found in the install path')\n return\n }\n\n const { bpDependencies } = pkgJson\n if (!bpDependencies) {\n this.logger.log('No bp dependencies found in package.json')\n return\n }\n\n const bpDependenciesSchema = sdk.z.record(sdk.z.string())\n const parseResults = bpDependenciesSchema.safeParse(bpDependencies)\n if (!parseResults.success) {\n throw new errors.BotpressCLIError('Invalid bpDependencies found in package.json')\n }\n\n const baseInstallPath = utils.path.absoluteFrom(utils.path.cwd(), this.argv.installPath)\n const modulesPath = utils.path.join(baseInstallPath, consts.installDirName)\n fslib.rmSync(modulesPath, { force: true, recursive: true })\n fslib.mkdirSync(modulesPath)\n\n for (const [pkgAlias, pkgRefStr] of Object.entries(parseResults.data)) {\n const parsed = pkgRef.parsePackageRef(pkgRefStr)\n if (!parsed) {\n throw new errors.InvalidPackageReferenceError(pkgRefStr)\n }\n\n const refWithAlias = { ...parsed, alias: pkgAlias }\n const foundPkg = await this._findPackage(refWithAlias)\n await this._addSinglePackage(refWithAlias, foundPkg)\n }\n }\n\n private _parseArgvRef = (): pkgRef.PackageRef | undefined => {\n if (!this.argv.packageRef) {\n return\n }\n\n const parsed = pkgRef.parsePackageRef(this.argv.packageRef)\n if (!parsed) {\n throw new errors.InvalidPackageReferenceError(this.argv.packageRef)\n }\n\n if (parsed.type !== 'name') {\n return parsed\n }\n return\n }\n\n private async _addSinglePackage(\n ref: RefWithAlias,\n props: { packageName: string; targetPackage: InstallablePackage }\n ) {\n const { packageName, targetPackage } = props\n\n const baseInstallPath = utils.path.absoluteFrom(utils.path.cwd(), this.argv.installPath)\n const packageDirName = utils.casing.to.kebabCase(packageName)\n const installPath = utils.path.join(baseInstallPath, consts.installDirName, packageDirName)\n\n const alreadyInstalled = fslib.existsSync(installPath)\n if (alreadyInstalled) {\n await this._uninstall(installPath)\n }\n\n if (ref.type === 'name' && ref.version === pkgRef.LATEST_TAG) {\n // If the semver version expression is 'latest', we assume the project\n // is compatible with all versions of the latest major:\n const major = semver.major(targetPackage.pkg.version)\n targetPackage.pkg.version = `>=${major}.0.0 <${major + 1}.0.0`\n\n this.logger.log(\n `Dependency \"${packageName}\" will be installed with version \"${targetPackage.pkg.version}\". ` +\n `To pin a specific version or version range, please change \"${targetPackage.type}:${packageName}@latest\" ` +\n 'to a specific version number or range instead of \"latest\".'\n )\n } else if (ref.type === 'name') {\n // Preserve the semver version expression in the generated code:\n targetPackage.pkg.version = ref.version\n }\n\n let files: codegen.File[]\n if (targetPackage.type === 'integration') {\n files = await codegen.generateIntegrationPackage(targetPackage.pkg)\n } else if (targetPackage.type === 'interface') {\n files = await codegen.generateInterfacePackage(targetPackage.pkg)\n } else if (targetPackage.type === 'plugin') {\n files = await codegen.generatePluginPackage(targetPackage.pkg)\n } else {\n type _assertion = utils.types.AssertNever<typeof targetPackage>\n throw new errors.BotpressCLIError('Invalid package type')\n }\n\n await this._install(installPath, files)\n }\n private async _chooseNewAlias(existingPackages: Record<string, string>) {\n const setAliasConfirmation = await this.prompt.confirm(\n 'Do you want to set an alias to the package you are installing?'\n )\n if (!setAliasConfirmation) {\n throw new errors.AbortedOperationError()\n }\n\n const alias = this._chooseUnusedAlias(existingPackages)\n\n return alias\n }\n\n private async _chooseUnusedAlias(existingPackages: Record<string, string>): Promise<string> {\n const alias = await this.prompt.text('Enter the new alias')\n const existingAlias = Object.entries(existingPackages).find(([dep, _]) => dep === alias)\n\n if (!alias) {\n throw new errors.BotpressCLIError('You cannot set an empty alias')\n }\n if (!existingAlias) {\n return alias\n }\n\n if (\n await this.prompt.confirm(\n `The alias ${alias} is already used for dependency ${existingAlias[1]}. Do you want to overwrite it?`\n )\n ) {\n return alias\n }\n return this._chooseUnusedAlias(existingPackages)\n }\n\n private async _addNewSinglePackage(ref: RefWithAlias) {\n const foundPackage = await this._findPackage(ref)\n const targetPackage = foundPackage.targetPackage\n const packageName = await this._addDependencyToPackage(foundPackage.packageName, targetPackage)\n await this._addSinglePackage(ref, { packageName, targetPackage })\n }\n\n private async _findPackage(ref: RefWithAlias): Promise<{ packageName: string; targetPackage: InstallablePackage }> {\n const targetPackage = ref.type === 'path' ? await this._findLocalPackage(ref) : await this._findRemotePackage(ref)\n if (!targetPackage) {\n const strRef = pkgRef.formatPackageRef(ref)\n throw new errors.BotpressCLIError(`Could not find package \"${strRef}\"`)\n }\n const packageName = ref.alias ?? targetPackage.pkg.name\n\n return { packageName, targetPackage }\n }\n\n private async _findRemotePackage(ref: pkgRef.ApiPackageRef): Promise<InstallablePackage | undefined> {\n const api = await this.ensureLoginAndCreateClient(this.argv)\n if (this._pkgCouldBe(ref, 'integration')) {\n const integration = await api.findPublicOrPrivateIntegration(ref)\n if (integration) {\n const { name, version } = integration\n return { type: 'integration', pkg: { integration, name, version } }\n }\n }\n if (this._pkgCouldBe(ref, 'interface')) {\n const intrface = await api.findPublicOrPrivateInterface(ref)\n if (intrface) {\n const { name, version } = intrface\n return { type: 'interface', pkg: { interface: intrface, name, version } }\n }\n }\n if (this._pkgCouldBe(ref, 'plugin')) {\n const plugin = await api.findPublicOrPrivatePlugin(ref)\n if (plugin) {\n const { code } = plugin.public\n ? await api.client.getPublicPluginCode({ id: plugin.id, platform: 'node' })\n : await api.client.getPluginCode({ id: plugin.id, platform: 'node' })\n const { name, version } = plugin\n return {\n type: 'plugin',\n pkg: {\n name,\n version,\n plugin,\n code,\n },\n }\n }\n }\n return\n }\n\n private async _findLocalPackage(ref: pkgRef.LocalPackageRef): Promise<InstallablePackage | undefined> {\n const absPath = utils.path.absoluteFrom(utils.path.cwd(), ref.path)\n const {\n definition: projectDefinition,\n implementation: projectImplementation,\n devId: projectDevId,\n } = await this._readProject(absPath)\n\n if (projectDefinition?.type === 'integration') {\n const { name, version } = projectDefinition.definition\n let devId: string | undefined\n if (this.argv.useDev && projectDevId) {\n this.logger.warn(`Installing integration \"${name}\" with dev version \"${projectDevId}\"`)\n devId = projectDevId\n }\n\n let createIntegrationReqBody = await this._getProjectCmd(ref.path).prepareCreateIntegrationBody(\n projectDefinition.definition\n )\n createIntegrationReqBody = {\n ...createIntegrationReqBody,\n interfaces: utils.records.mapValues(projectDefinition.definition.interfaces ?? {}, (i) => ({\n id: '', // TODO: do this better\n ...i,\n })),\n }\n return {\n type: 'integration',\n pkg: { path: absPath, devId, name, version, integration: createIntegrationReqBody },\n }\n }\n\n if (projectDefinition?.type === 'interface') {\n const { name, version } = projectDefinition.definition\n const createInterfaceReqBody = await apiUtils.prepareCreateInterfaceBody(projectDefinition.definition)\n return {\n type: 'interface',\n pkg: { path: absPath, name, version, interface: createInterfaceReqBody },\n }\n }\n\n if (projectDefinition?.type === 'plugin') {\n if (!projectImplementation) {\n throw new errors.BotpressCLIError(\n 'Plugin implementation not found; Please build the plugin project before installing'\n )\n }\n\n const pluginDefinition = projectDefinition.definition\n const { name, version } = pluginDefinition\n const code = projectImplementation\n\n const createPluginReqBody = await apiUtils.prepareCreatePluginBody(pluginDefinition)\n return {\n type: 'plugin',\n pkg: {\n path: absPath,\n name,\n version,\n code,\n plugin: {\n ...createPluginReqBody,\n dependencies: {\n interfaces: pluginDefinition.interfaces,\n integrations: pluginDefinition.integrations,\n },\n recurringEvents: pluginDefinition.recurringEvents,\n },\n },\n }\n }\n\n if (projectDefinition?.type === 'bot') {\n throw new errors.BotpressCLIError('Cannot install a bot as a package')\n }\n return\n }\n\n private async _install(installPath: utils.path.AbsolutePath, files: codegen.File[]): Promise<void> {\n const line = this.logger.line()\n line.started(`Installing ${files.length} files to \"${installPath}\"`)\n try {\n for (const file of files) {\n const filePath = utils.path.absoluteFrom(installPath, file.path)\n const dirPath = pathlib.dirname(filePath)\n await fslib.promises.mkdir(dirPath, { recursive: true })\n await fslib.promises.writeFile(filePath, file.content)\n }\n line.success(`Installed ${files.length} files to \"${installPath}\"`)\n } finally {\n line.commit()\n }\n }\n\n private async _uninstall(installPath: utils.path.AbsolutePath): Promise<void> {\n await fslib.promises.rm(installPath, { recursive: true })\n }\n\n private async _readProject(workDir: utils.path.AbsolutePath): Promise<{\n definition?: ProjectDefinition\n implementation?: string\n devId?: string\n }> {\n const cmd = this._getProjectCmd(workDir)\n\n const { resolveProjectDefinition } = cmd.readProjectDefinitionFromFS()\n const definition = await resolveProjectDefinition().catch((thrown) => {\n if (thrown instanceof errors.ProjectDefinitionNotFoundError) {\n return undefined\n }\n throw thrown\n })\n\n const devId = await cmd.projectCache.get('devId')\n\n const implementationAbsPath = utils.path.join(workDir, consts.fromWorkDir.outFileCJS)\n if (!fslib.existsSync(implementationAbsPath)) {\n return { definition, devId }\n }\n\n const implementation = await fslib.promises.readFile(implementationAbsPath, 'utf8')\n return { definition, implementation, devId }\n }\n\n private _pkgCouldBe = (ref: pkgRef.ApiPackageRef, pkgType: InstallablePackage['type']) => {\n if (ref.type === 'id') {\n // TODO: use ULID prefixes to determine the type of the package\n return true\n }\n if (!ref.pkg) {\n return true // ref does not specify the package type\n }\n return ref.pkg === pkgType\n }\n\n private _getProjectCmd(workDir: string): _AnyProjectCommand {\n return new _AnyProjectCommand(apiUtils.ApiClient, this.prompt, this.logger, {\n ...this.argv,\n workDir,\n })\n }\n\n private async _addDependencyToPackage(packageName: string, targetPackage: InstallablePackage): Promise<string> {\n const pkgJson = await utils.pkgJson.readPackageJson(this.argv.installPath).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, 'Failed to read package.json file')\n })\n\n if (!pkgJson) {\n this.logger.warn('No package.json found in the install path')\n return packageName\n }\n\n const version =\n targetPackage.pkg.path ?? `${targetPackage.type}:${targetPackage.pkg.name}@${targetPackage.pkg.version}`\n const { bpDependencies } = pkgJson\n if (!bpDependencies) {\n pkgJson.bpDependencies = { [packageName]: version }\n await utils.pkgJson.writePackageJson(this.argv.installPath, pkgJson)\n return packageName\n }\n\n const bpDependenciesSchema = sdk.z.record(sdk.z.string())\n const parseResult = bpDependenciesSchema.safeParse(bpDependencies)\n if (!parseResult.success) {\n throw new errors.BotpressCLIError('Invalid bpDependencies found in package.json')\n }\n\n const { data: validatedBpDeps } = parseResult\n\n const alreadyPresentDep = Object.entries(validatedBpDeps).find(([key]) => key === packageName)\n if (alreadyPresentDep) {\n const alreadyPresentVersion = alreadyPresentDep[1]\n if (alreadyPresentVersion !== version) {\n this.logger.warn(\n `The dependency with alias ${packageName} is already present in the bpDependencies of package.json, but with version ${alreadyPresentVersion}.`\n )\n const res = await this.prompt.confirm(`Do you want to overwrite the dependency with version ${version}?`)\n if (!res) {\n const newAlias = await this._chooseNewAlias(validatedBpDeps)\n packageName = newAlias\n }\n }\n }\n\n pkgJson.bpDependencies = {\n ...validatedBpDeps,\n [packageName]: version,\n }\n\n await utils.pkgJson.writePackageJson(this.argv.installPath, pkgJson)\n return packageName\n }\n}\n\n// this is a hack to avoid refactoring the project command class\nclass _AnyProjectCommand extends ProjectCommand<ProjectCommandDefinition> {\n public async run(): Promise<void> {\n throw new errors.BotpressCLIError('Not implemented')\n }\n\n public readProjectDefinitionFromFS(): ProjectDefinitionLazy {\n return super.readProjectDefinitionFromFS()\n }\n\n public async prepareCreateIntegrationBody(\n integrationDef: sdk.IntegrationDefinition\n ): Promise<apiUtils.CreateIntegrationRequestBody> {\n return super.prepareCreateIntegrationBody(integrationDef)\n }\n\n public get projectCache(): utils.cache.FSKeyValueCache<ProjectCache> {\n return super.projectCache\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["semver"]
|
|
7
7
|
}
|
|
@@ -1196,11 +1196,6 @@ declare const _default: {
|
|
|
1196
1196
|
positional: true;
|
|
1197
1197
|
idx: number;
|
|
1198
1198
|
};
|
|
1199
|
-
packageType: {
|
|
1200
|
-
type: "string";
|
|
1201
|
-
description: string;
|
|
1202
|
-
choices: readonly ["integration", "interface", "plugin"];
|
|
1203
|
-
};
|
|
1204
1199
|
installPath: {
|
|
1205
1200
|
type: "string";
|
|
1206
1201
|
description: string;
|
|
@@ -1255,6 +1250,65 @@ declare const _default: {
|
|
|
1255
1250
|
alias: string;
|
|
1256
1251
|
};
|
|
1257
1252
|
};
|
|
1253
|
+
alias: string[];
|
|
1254
|
+
}>) => Promise<{
|
|
1255
|
+
exitCode: number;
|
|
1256
|
+
}>;
|
|
1257
|
+
remove: (argv: CommandArgv<{
|
|
1258
|
+
description: string;
|
|
1259
|
+
schema: {
|
|
1260
|
+
workDir: {
|
|
1261
|
+
type: "string";
|
|
1262
|
+
description: string;
|
|
1263
|
+
default: string;
|
|
1264
|
+
};
|
|
1265
|
+
alias: {
|
|
1266
|
+
idx: number;
|
|
1267
|
+
positional: true;
|
|
1268
|
+
type: "string";
|
|
1269
|
+
description: string;
|
|
1270
|
+
};
|
|
1271
|
+
apiUrl: {
|
|
1272
|
+
type: "string";
|
|
1273
|
+
description: string;
|
|
1274
|
+
};
|
|
1275
|
+
workspaceId: {
|
|
1276
|
+
type: "string";
|
|
1277
|
+
description: string;
|
|
1278
|
+
};
|
|
1279
|
+
token: {
|
|
1280
|
+
type: "string";
|
|
1281
|
+
description: string;
|
|
1282
|
+
};
|
|
1283
|
+
verbose: {
|
|
1284
|
+
type: "boolean";
|
|
1285
|
+
description: string;
|
|
1286
|
+
alias: string;
|
|
1287
|
+
default: boolean;
|
|
1288
|
+
};
|
|
1289
|
+
confirm: {
|
|
1290
|
+
type: "boolean";
|
|
1291
|
+
description: string;
|
|
1292
|
+
alias: string;
|
|
1293
|
+
default: boolean;
|
|
1294
|
+
};
|
|
1295
|
+
json: {
|
|
1296
|
+
type: "boolean";
|
|
1297
|
+
description: string;
|
|
1298
|
+
default: boolean;
|
|
1299
|
+
};
|
|
1300
|
+
botpressHome: {
|
|
1301
|
+
type: "string";
|
|
1302
|
+
description: string;
|
|
1303
|
+
default: string;
|
|
1304
|
+
};
|
|
1305
|
+
profile: {
|
|
1306
|
+
type: "string";
|
|
1307
|
+
description: string;
|
|
1308
|
+
alias: string;
|
|
1309
|
+
};
|
|
1310
|
+
};
|
|
1311
|
+
alias: string;
|
|
1258
1312
|
}>) => Promise<{
|
|
1259
1313
|
exitCode: number;
|
|
1260
1314
|
}>;
|
|
@@ -51,6 +51,7 @@ var import_logout_command = require("./logout-command");
|
|
|
51
51
|
var plugins = __toESM(require("./plugin-commands"));
|
|
52
52
|
var profiles = __toESM(require("./profile-commands"));
|
|
53
53
|
var import_read_command = require("./read-command");
|
|
54
|
+
var import_remove_command = require("./remove-command");
|
|
54
55
|
var import_serve_command = require("./serve-command");
|
|
55
56
|
const getHandler = (cls) => async (argv) => {
|
|
56
57
|
const logger = new import_logger.Logger(argv);
|
|
@@ -97,6 +98,7 @@ var command_implementations_default = {
|
|
|
97
98
|
serve: getHandler(import_serve_command.ServeCommand),
|
|
98
99
|
deploy: getHandler(import_deploy_command.DeployCommand),
|
|
99
100
|
add: getHandler(import_add_command.AddCommand),
|
|
101
|
+
remove: getHandler(import_remove_command.RemoveCommand),
|
|
100
102
|
dev: getHandler(import_dev_command.DevCommand),
|
|
101
103
|
lint: getHandler(import_lint_command.LintCommand),
|
|
102
104
|
chat: getHandler(import_chat_command.ChatCommand),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/command-implementations/index.ts"],
|
|
4
|
-
"sourcesContent": ["import { ApiClient } from '../api/client'\nimport type commandDefinitions from '../command-definitions'\nimport type { ImplementationTree } from '../command-tree'\nimport { Logger } from '../logger'\nimport type { CommandArgv } from '../typings'\nimport * as utils from '../utils'\nimport { AddCommand } from './add-command'\nimport type { BaseCommand } from './base-command'\nimport * as bots from './bot-commands'\nimport { BuildCommand } from './build-command'\nimport { BundleCommand } from './bundle-command'\nimport { ChatCommand } from './chat-command'\nimport { DeployCommand } from './deploy-command'\nimport { DevCommand } from './dev-command'\nimport { GenerateCommand } from './gen-command'\nimport type { GlobalCommand, GlobalCommandDefinition } from './global-command'\nimport { InitCommand } from './init-command'\nimport * as integrations from './integration-commands'\nimport * as interfaces from './interface-commands'\nimport { LintCommand } from './lint-command'\nimport { LoginCommand } from './login-command'\nimport { LogoutCommand } from './logout-command'\nimport * as plugins from './plugin-commands'\nimport * as profiles from './profile-commands'\nimport { ReadCommand } from './read-command'\nimport { ServeCommand } from './serve-command'\n\ntype GlobalCtor<C extends GlobalCommandDefinition> = new (\n ...args: ConstructorParameters<typeof GlobalCommand<C>>\n) => BaseCommand<C>\n\nconst getHandler =\n <C extends GlobalCommandDefinition>(cls: GlobalCtor<C>) =>\n async (argv: CommandArgv<C>) => {\n const logger = new Logger(argv)\n const prompt = new utils.prompt.CLIPrompt(argv, logger)\n return new cls(ApiClient, prompt, logger, argv).handler()\n }\n\nexport default {\n login: getHandler(LoginCommand),\n logout: getHandler(LogoutCommand),\n bots: {\n subcommands: {\n create: getHandler(bots.CreateBotCommand),\n get: getHandler(bots.GetBotCommand),\n delete: getHandler(bots.DeleteBotCommand),\n list: getHandler(bots.ListBotsCommand),\n },\n },\n integrations: {\n subcommands: {\n get: getHandler(integrations.GetIntegrationCommand),\n list: getHandler(integrations.ListIntegrationsCommand),\n delete: getHandler(integrations.DeleteIntegrationCommand),\n },\n },\n interfaces: {\n subcommands: {\n get: getHandler(interfaces.GetInterfaceCommand),\n list: getHandler(interfaces.ListInterfacesCommand),\n delete: getHandler(interfaces.DeleteInterfaceCommand),\n },\n },\n plugins: {\n subcommands: {\n get: getHandler(plugins.GetPluginCommand),\n list: getHandler(plugins.ListPluginsCommand),\n delete: getHandler(plugins.DeletePluginCommand),\n },\n },\n init: getHandler(InitCommand),\n generate: getHandler(GenerateCommand),\n bundle: getHandler(BundleCommand),\n build: getHandler(BuildCommand),\n read: getHandler(ReadCommand),\n serve: getHandler(ServeCommand),\n deploy: getHandler(DeployCommand),\n add: getHandler(AddCommand),\n dev: getHandler(DevCommand),\n lint: getHandler(LintCommand),\n chat: getHandler(ChatCommand),\n profiles: {\n subcommands: {\n list: getHandler(profiles.ListProfilesCommand),\n active: getHandler(profiles.ActiveProfileCommand),\n use: getHandler(profiles.UseProfileCommand),\n },\n },\n} satisfies ImplementationTree<typeof commandDefinitions>\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA0B;AAG1B,oBAAuB;AAEvB,YAAuB;AACvB,yBAA2B;AAE3B,WAAsB;AACtB,2BAA6B;AAC7B,4BAA8B;AAC9B,0BAA4B;AAC5B,4BAA8B;AAC9B,yBAA2B;AAC3B,yBAAgC;AAEhC,0BAA4B;AAC5B,mBAA8B;AAC9B,iBAA4B;AAC5B,0BAA4B;AAC5B,2BAA6B;AAC7B,4BAA8B;AAC9B,cAAyB;AACzB,eAA0B;AAC1B,0BAA4B;AAC5B,2BAA6B;AAM7B,MAAM,aACJ,CAAoC,QACpC,OAAO,SAAyB;AAC9B,QAAM,SAAS,IAAI,qBAAO,IAAI;AAC9B,QAAM,SAAS,IAAI,MAAM,OAAO,UAAU,MAAM,MAAM;AACtD,SAAO,IAAI,IAAI,yBAAW,QAAQ,QAAQ,IAAI,EAAE,QAAQ;AAC1D;AAEF,IAAO,kCAAQ;AAAA,EACb,OAAO,WAAW,iCAAY;AAAA,EAC9B,QAAQ,WAAW,mCAAa;AAAA,EAChC,MAAM;AAAA,IACJ,aAAa;AAAA,MACX,QAAQ,WAAW,KAAK,gBAAgB;AAAA,MACxC,KAAK,WAAW,KAAK,aAAa;AAAA,MAClC,QAAQ,WAAW,KAAK,gBAAgB;AAAA,MACxC,MAAM,WAAW,KAAK,eAAe;AAAA,IACvC;AAAA,EACF;AAAA,EACA,cAAc;AAAA,IACZ,aAAa;AAAA,MACX,KAAK,WAAW,aAAa,qBAAqB;AAAA,MAClD,MAAM,WAAW,aAAa,uBAAuB;AAAA,MACrD,QAAQ,WAAW,aAAa,wBAAwB;AAAA,IAC1D;AAAA,EACF;AAAA,EACA,YAAY;AAAA,IACV,aAAa;AAAA,MACX,KAAK,WAAW,WAAW,mBAAmB;AAAA,MAC9C,MAAM,WAAW,WAAW,qBAAqB;AAAA,MACjD,QAAQ,WAAW,WAAW,sBAAsB;AAAA,IACtD;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,aAAa;AAAA,MACX,KAAK,WAAW,QAAQ,gBAAgB;AAAA,MACxC,MAAM,WAAW,QAAQ,kBAAkB;AAAA,MAC3C,QAAQ,WAAW,QAAQ,mBAAmB;AAAA,IAChD;AAAA,EACF;AAAA,EACA,MAAM,WAAW,+BAAW;AAAA,EAC5B,UAAU,WAAW,kCAAe;AAAA,EACpC,QAAQ,WAAW,mCAAa;AAAA,EAChC,OAAO,WAAW,iCAAY;AAAA,EAC9B,MAAM,WAAW,+BAAW;AAAA,EAC5B,OAAO,WAAW,iCAAY;AAAA,EAC9B,QAAQ,WAAW,mCAAa;AAAA,EAChC,KAAK,WAAW,6BAAU;AAAA,EAC1B,KAAK,WAAW,6BAAU;AAAA,EAC1B,MAAM,WAAW,+BAAW;AAAA,EAC5B,MAAM,WAAW,+BAAW;AAAA,EAC5B,UAAU;AAAA,IACR,aAAa;AAAA,MACX,MAAM,WAAW,SAAS,mBAAmB;AAAA,MAC7C,QAAQ,WAAW,SAAS,oBAAoB;AAAA,MAChD,KAAK,WAAW,SAAS,iBAAiB;AAAA,IAC5C;AAAA,EACF;AACF;",
|
|
4
|
+
"sourcesContent": ["import { ApiClient } from '../api/client'\nimport type commandDefinitions from '../command-definitions'\nimport type { ImplementationTree } from '../command-tree'\nimport { Logger } from '../logger'\nimport type { CommandArgv } from '../typings'\nimport * as utils from '../utils'\nimport { AddCommand } from './add-command'\nimport type { BaseCommand } from './base-command'\nimport * as bots from './bot-commands'\nimport { BuildCommand } from './build-command'\nimport { BundleCommand } from './bundle-command'\nimport { ChatCommand } from './chat-command'\nimport { DeployCommand } from './deploy-command'\nimport { DevCommand } from './dev-command'\nimport { GenerateCommand } from './gen-command'\nimport type { GlobalCommand, GlobalCommandDefinition } from './global-command'\nimport { InitCommand } from './init-command'\nimport * as integrations from './integration-commands'\nimport * as interfaces from './interface-commands'\nimport { LintCommand } from './lint-command'\nimport { LoginCommand } from './login-command'\nimport { LogoutCommand } from './logout-command'\nimport * as plugins from './plugin-commands'\nimport * as profiles from './profile-commands'\nimport { ReadCommand } from './read-command'\nimport { RemoveCommand } from './remove-command'\nimport { ServeCommand } from './serve-command'\n\ntype GlobalCtor<C extends GlobalCommandDefinition> = new (\n ...args: ConstructorParameters<typeof GlobalCommand<C>>\n) => BaseCommand<C>\n\nconst getHandler =\n <C extends GlobalCommandDefinition>(cls: GlobalCtor<C>) =>\n async (argv: CommandArgv<C>) => {\n const logger = new Logger(argv)\n const prompt = new utils.prompt.CLIPrompt(argv, logger)\n return new cls(ApiClient, prompt, logger, argv).handler()\n }\n\nexport default {\n login: getHandler(LoginCommand),\n logout: getHandler(LogoutCommand),\n bots: {\n subcommands: {\n create: getHandler(bots.CreateBotCommand),\n get: getHandler(bots.GetBotCommand),\n delete: getHandler(bots.DeleteBotCommand),\n list: getHandler(bots.ListBotsCommand),\n },\n },\n integrations: {\n subcommands: {\n get: getHandler(integrations.GetIntegrationCommand),\n list: getHandler(integrations.ListIntegrationsCommand),\n delete: getHandler(integrations.DeleteIntegrationCommand),\n },\n },\n interfaces: {\n subcommands: {\n get: getHandler(interfaces.GetInterfaceCommand),\n list: getHandler(interfaces.ListInterfacesCommand),\n delete: getHandler(interfaces.DeleteInterfaceCommand),\n },\n },\n plugins: {\n subcommands: {\n get: getHandler(plugins.GetPluginCommand),\n list: getHandler(plugins.ListPluginsCommand),\n delete: getHandler(plugins.DeletePluginCommand),\n },\n },\n init: getHandler(InitCommand),\n generate: getHandler(GenerateCommand),\n bundle: getHandler(BundleCommand),\n build: getHandler(BuildCommand),\n read: getHandler(ReadCommand),\n serve: getHandler(ServeCommand),\n deploy: getHandler(DeployCommand),\n add: getHandler(AddCommand),\n remove: getHandler(RemoveCommand),\n dev: getHandler(DevCommand),\n lint: getHandler(LintCommand),\n chat: getHandler(ChatCommand),\n profiles: {\n subcommands: {\n list: getHandler(profiles.ListProfilesCommand),\n active: getHandler(profiles.ActiveProfileCommand),\n use: getHandler(profiles.UseProfileCommand),\n },\n },\n} satisfies ImplementationTree<typeof commandDefinitions>\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA0B;AAG1B,oBAAuB;AAEvB,YAAuB;AACvB,yBAA2B;AAE3B,WAAsB;AACtB,2BAA6B;AAC7B,4BAA8B;AAC9B,0BAA4B;AAC5B,4BAA8B;AAC9B,yBAA2B;AAC3B,yBAAgC;AAEhC,0BAA4B;AAC5B,mBAA8B;AAC9B,iBAA4B;AAC5B,0BAA4B;AAC5B,2BAA6B;AAC7B,4BAA8B;AAC9B,cAAyB;AACzB,eAA0B;AAC1B,0BAA4B;AAC5B,4BAA8B;AAC9B,2BAA6B;AAM7B,MAAM,aACJ,CAAoC,QACpC,OAAO,SAAyB;AAC9B,QAAM,SAAS,IAAI,qBAAO,IAAI;AAC9B,QAAM,SAAS,IAAI,MAAM,OAAO,UAAU,MAAM,MAAM;AACtD,SAAO,IAAI,IAAI,yBAAW,QAAQ,QAAQ,IAAI,EAAE,QAAQ;AAC1D;AAEF,IAAO,kCAAQ;AAAA,EACb,OAAO,WAAW,iCAAY;AAAA,EAC9B,QAAQ,WAAW,mCAAa;AAAA,EAChC,MAAM;AAAA,IACJ,aAAa;AAAA,MACX,QAAQ,WAAW,KAAK,gBAAgB;AAAA,MACxC,KAAK,WAAW,KAAK,aAAa;AAAA,MAClC,QAAQ,WAAW,KAAK,gBAAgB;AAAA,MACxC,MAAM,WAAW,KAAK,eAAe;AAAA,IACvC;AAAA,EACF;AAAA,EACA,cAAc;AAAA,IACZ,aAAa;AAAA,MACX,KAAK,WAAW,aAAa,qBAAqB;AAAA,MAClD,MAAM,WAAW,aAAa,uBAAuB;AAAA,MACrD,QAAQ,WAAW,aAAa,wBAAwB;AAAA,IAC1D;AAAA,EACF;AAAA,EACA,YAAY;AAAA,IACV,aAAa;AAAA,MACX,KAAK,WAAW,WAAW,mBAAmB;AAAA,MAC9C,MAAM,WAAW,WAAW,qBAAqB;AAAA,MACjD,QAAQ,WAAW,WAAW,sBAAsB;AAAA,IACtD;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,aAAa;AAAA,MACX,KAAK,WAAW,QAAQ,gBAAgB;AAAA,MACxC,MAAM,WAAW,QAAQ,kBAAkB;AAAA,MAC3C,QAAQ,WAAW,QAAQ,mBAAmB;AAAA,IAChD;AAAA,EACF;AAAA,EACA,MAAM,WAAW,+BAAW;AAAA,EAC5B,UAAU,WAAW,kCAAe;AAAA,EACpC,QAAQ,WAAW,mCAAa;AAAA,EAChC,OAAO,WAAW,iCAAY;AAAA,EAC9B,MAAM,WAAW,+BAAW;AAAA,EAC5B,OAAO,WAAW,iCAAY;AAAA,EAC9B,QAAQ,WAAW,mCAAa;AAAA,EAChC,KAAK,WAAW,6BAAU;AAAA,EAC1B,QAAQ,WAAW,mCAAa;AAAA,EAChC,KAAK,WAAW,6BAAU;AAAA,EAC1B,MAAM,WAAW,+BAAW;AAAA,EAC5B,MAAM,WAAW,+BAAW;AAAA,EAC5B,UAAU;AAAA,IACR,aAAa;AAAA,MACX,MAAM,WAAW,SAAS,mBAAmB;AAAA,MAC7C,QAAQ,WAAW,SAAS,oBAAoB;AAAA,MAChD,KAAK,WAAW,SAAS,iBAAiB;AAAA,IAC5C;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -73,6 +73,7 @@ export declare class ProjectDefinitionContext {
|
|
|
73
73
|
}
|
|
74
74
|
export declare abstract class ProjectCommand<C extends ProjectCommandDefinition> extends GlobalCommand<C> {
|
|
75
75
|
protected projectContext: ProjectDefinitionContext;
|
|
76
|
+
private _dependencyCache;
|
|
76
77
|
setProjectContext(projectContext: ProjectDefinitionContext): this;
|
|
77
78
|
protected bootstrap(): Promise<void>;
|
|
78
79
|
protected get projectPaths(): ProjectPaths;
|