@vendure/cli 2.2.0-next.2 → 2.2.0-next.4

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.
Files changed (67) hide show
  1. package/dist/cli.js +5 -1
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/add/add.d.ts +2 -0
  4. package/dist/commands/add/add.js +39 -0
  5. package/dist/commands/add/add.js.map +1 -0
  6. package/dist/commands/add/entity/add-entity.d.ts +7 -0
  7. package/dist/commands/add/entity/add-entity.js +39 -0
  8. package/dist/commands/add/entity/add-entity.js.map +1 -0
  9. package/dist/commands/add/entity/codemods/add-entity-to-plugin/add-entity-to-plugin.d.ts +2 -0
  10. package/dist/commands/add/entity/codemods/add-entity-to-plugin/add-entity-to-plugin.js +41 -0
  11. package/dist/commands/add/entity/codemods/add-entity-to-plugin/add-entity-to-plugin.js.map +1 -0
  12. package/dist/commands/add/entity/templates/entity.template.ts +17 -0
  13. package/dist/commands/add/ui-extensions/add-ui-extensions.d.ts +1 -0
  14. package/dist/commands/add/ui-extensions/add-ui-extensions.js +88 -0
  15. package/dist/commands/add/ui-extensions/add-ui-extensions.js.map +1 -0
  16. package/dist/commands/add/ui-extensions/codemods/add-ui-extension-static-prop/add-ui-extension-static-prop.d.ts +2 -0
  17. package/dist/commands/add/ui-extensions/codemods/add-ui-extension-static-prop/add-ui-extension-static-prop.js +33 -0
  18. package/dist/commands/add/ui-extensions/codemods/add-ui-extension-static-prop/add-ui-extension-static-prop.js.map +1 -0
  19. package/dist/commands/add/ui-extensions/codemods/update-admin-ui-plugin-init/update-admin-ui-plugin-init.d.ts +5 -0
  20. package/dist/commands/add/ui-extensions/codemods/update-admin-ui-plugin-init/update-admin-ui-plugin-init.js +63 -0
  21. package/dist/commands/add/ui-extensions/codemods/update-admin-ui-plugin-init/update-admin-ui-plugin-init.js.map +1 -0
  22. package/dist/commands/add/ui-extensions/scaffold/providers.d.ts +1 -0
  23. package/dist/commands/add/ui-extensions/scaffold/providers.js +13 -0
  24. package/dist/commands/add/ui-extensions/scaffold/providers.js.map +1 -0
  25. package/dist/commands/add/ui-extensions/scaffold/routes.d.ts +1 -0
  26. package/dist/commands/add/ui-extensions/scaffold/routes.js +13 -0
  27. package/dist/commands/add/ui-extensions/scaffold/routes.js.map +1 -0
  28. package/dist/commands/new/plugin/new-plugin.d.ts +1 -1
  29. package/dist/commands/new/plugin/new-plugin.js +44 -90
  30. package/dist/commands/new/plugin/new-plugin.js.map +1 -1
  31. package/dist/commands/new/plugin/scaffold/api/admin.resolver.d.ts +3 -3
  32. package/dist/commands/new/plugin/scaffold/api/admin.resolver.js.map +1 -1
  33. package/dist/commands/new/plugin/scaffold/api/api-extensions.d.ts +2 -2
  34. package/dist/commands/new/plugin/scaffold/api/api-extensions.js.map +1 -1
  35. package/dist/commands/new/plugin/scaffold/api/shop.resolver.d.ts +3 -3
  36. package/dist/commands/new/plugin/scaffold/api/shop.resolver.js.map +1 -1
  37. package/dist/commands/new/plugin/scaffold/constants.d.ts +2 -2
  38. package/dist/commands/new/plugin/scaffold/constants.js.map +1 -1
  39. package/dist/commands/new/plugin/scaffold/plugin.d.ts +2 -2
  40. package/dist/commands/new/plugin/scaffold/plugin.js.map +1 -1
  41. package/dist/commands/new/plugin/scaffold/services/service.d.ts +3 -3
  42. package/dist/commands/new/plugin/scaffold/services/service.js.map +1 -1
  43. package/dist/commands/new/plugin/scaffold/types.d.ts +2 -2
  44. package/dist/commands/new/plugin/scaffold/types.js.map +1 -1
  45. package/dist/commands/new/plugin/types.d.ts +2 -1
  46. package/dist/constants.d.ts +2 -0
  47. package/dist/constants.js +9 -0
  48. package/dist/constants.js.map +1 -0
  49. package/dist/shared/shared-prompts.d.ts +3 -0
  50. package/dist/shared/shared-prompts.js +45 -0
  51. package/dist/shared/shared-prompts.js.map +1 -0
  52. package/dist/shared/shared-scaffold/entity.d.ts +5 -0
  53. package/dist/shared/shared-scaffold/entity.js +26 -0
  54. package/dist/shared/shared-scaffold/entity.js.map +1 -0
  55. package/dist/utilities/ast-utils.d.ts +18 -0
  56. package/dist/utilities/ast-utils.js +111 -0
  57. package/dist/utilities/ast-utils.js.map +1 -0
  58. package/dist/utilities/package-utils.d.ts +8 -0
  59. package/dist/utilities/package-utils.js +96 -0
  60. package/dist/utilities/package-utils.js.map +1 -0
  61. package/dist/utilities/scaffolder.d.ts +8 -0
  62. package/dist/utilities/scaffolder.js +50 -0
  63. package/dist/utilities/scaffolder.js.map +1 -0
  64. package/package.json +9 -7
  65. package/dist/commands/new/plugin/scaffold/entities/entity.d.ts +0 -2
  66. package/dist/commands/new/plugin/scaffold/entities/entity.js +0 -21
  67. package/dist/commands/new/plugin/scaffold/entities/entity.js.map +0 -1
package/dist/cli.js CHANGED
@@ -2,10 +2,14 @@
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const commander_1 = require("commander");
5
+ const add_1 = require("./commands/add/add");
5
6
  const new_1 = require("./commands/new/new");
6
7
  const program = new commander_1.Command();
7
8
  const version = require('../package.json').version;
8
- program.version(version).description('The Vendure CLI');
9
+ program
10
+ .version(version)
11
+ .description('The Vendure CLI');
9
12
  (0, new_1.registerNewCommand)(program);
13
+ (0, add_1.registerAddCommand)(program);
10
14
  void program.parseAsync(process.argv);
11
15
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AAEpC,4CAAwD;AAExD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAG9B,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;AAEnD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;AACxD,IAAA,wBAAkB,EAAC,OAAO,CAAC,CAAC;AAE5B,KAAK,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AAEpC,4CAAwD;AACxD,4CAAwD;AAExD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAG9B,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;AAEnD,OAAO;KACF,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,iBAAiB,CAAC,CAAC;AAEpC,IAAA,wBAAkB,EAAC,OAAO,CAAC,CAAC;AAC5B,IAAA,wBAAkB,EAAC,OAAO,CAAC,CAAC;AAE5B,KAAK,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerAddCommand(program: Command): void;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerAddCommand = void 0;
4
+ const prompts_1 = require("@clack/prompts");
5
+ const add_entity_1 = require("./entity/add-entity");
6
+ const add_ui_extensions_1 = require("./ui-extensions/add-ui-extensions");
7
+ const cancelledMessage = 'Add feature cancelled.';
8
+ function registerAddCommand(program) {
9
+ program
10
+ .command('add')
11
+ .description('Add a feature to your Vendure project')
12
+ .action(async () => {
13
+ const featureType = await (0, prompts_1.select)({
14
+ message: 'Which feature would you like to add?',
15
+ options: [
16
+ { value: 'uiExtensions', label: 'Set up Admin UI extensions' },
17
+ { value: 'entity', label: 'Add a new entity to a plugin' },
18
+ ],
19
+ });
20
+ if ((0, prompts_1.isCancel)(featureType)) {
21
+ (0, prompts_1.cancel)(cancelledMessage);
22
+ process.exit(0);
23
+ }
24
+ try {
25
+ if (featureType === 'uiExtensions') {
26
+ await (0, add_ui_extensions_1.addUiExtensions)();
27
+ }
28
+ if (featureType === 'entity') {
29
+ await (0, add_entity_1.addEntity)();
30
+ }
31
+ }
32
+ catch (e) {
33
+ prompts_1.log.error(e.message);
34
+ }
35
+ process.exit(0);
36
+ });
37
+ }
38
+ exports.registerAddCommand = registerAddCommand;
39
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/commands/add/add.ts"],"names":[],"mappings":";;;AAAA,4CAA+D;AAG/D,oDAAgD;AAChD,yEAAoE;AAEpE,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AAElD,SAAgB,kBAAkB,CAAC,OAAgB;IAC/C,OAAO;SACF,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,WAAW,GAAG,MAAM,IAAA,gBAAM,EAAC;YAC7B,OAAO,EAAE,sCAAsC;YAC/C,OAAO,EAAE;gBACL,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,4BAA4B,EAAE;gBAC9D,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,8BAA8B,EAAE;aAC7D;SACJ,CAAC,CAAC;QACH,IAAI,IAAA,kBAAQ,EAAC,WAAW,CAAC,EAAE;YACvB,IAAA,gBAAM,EAAC,gBAAgB,CAAC,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACnB;QACD,IAAI;YACA,IAAI,WAAW,KAAK,cAAc,EAAE;gBAChC,MAAM,IAAA,mCAAe,GAAE,CAAC;aAC3B;YACD,IAAI,WAAW,KAAK,QAAQ,EAAE;gBAC1B,MAAM,IAAA,sBAAS,GAAE,CAAC;aACrB;SACJ;QAAC,OAAO,CAAM,EAAE;YACb,aAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAiB,CAAC,CAAC;SAClC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACX,CAAC;AA5BD,gDA4BC"}
@@ -0,0 +1,7 @@
1
+ export interface AddEntityTemplateContext {
2
+ entity: {
3
+ className: string;
4
+ fileName: string;
5
+ };
6
+ }
7
+ export declare function addEntity(): Promise<void>;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.addEntity = void 0;
7
+ const prompts_1 = require("@clack/prompts");
8
+ const change_case_1 = require("change-case");
9
+ const path_1 = __importDefault(require("path"));
10
+ const shared_prompts_1 = require("../../../shared/shared-prompts");
11
+ const ast_utils_1 = require("../../../utilities/ast-utils");
12
+ const add_entity_to_plugin_1 = require("./codemods/add-entity-to-plugin/add-entity-to-plugin");
13
+ const cancelledMessage = 'Add entity cancelled';
14
+ async function addEntity() {
15
+ const projectSpinner = (0, prompts_1.spinner)();
16
+ projectSpinner.start('Analyzing project...');
17
+ await new Promise(resolve => setTimeout(resolve, 100));
18
+ const project = (0, ast_utils_1.getTsMorphProject)();
19
+ projectSpinner.stop('Project analyzed');
20
+ const pluginClass = await (0, shared_prompts_1.selectPluginClass)(project, cancelledMessage);
21
+ const customEntityName = await (0, shared_prompts_1.getCustomEntityName)(cancelledMessage);
22
+ const context = {
23
+ entity: {
24
+ className: customEntityName,
25
+ fileName: (0, change_case_1.paramCase)(customEntityName) + '.entity',
26
+ },
27
+ };
28
+ const entitiesDir = path_1.default.join(pluginClass.getSourceFile().getDirectory().getPath(), 'entities');
29
+ const entityTemplatePath = path_1.default.join(__dirname, 'templates/entity.template.ts');
30
+ const entityFile = (0, ast_utils_1.createSourceFileFromTemplate)(project, entityTemplatePath);
31
+ entityFile.move(path_1.default.join(entitiesDir, `${context.entity.fileName}.ts`));
32
+ entityFile.getClasses()[0].rename(`${context.entity.className}CustomFields`);
33
+ entityFile.getClasses()[1].rename(context.entity.className);
34
+ (0, add_entity_to_plugin_1.addEntityToPlugin)(pluginClass, entityFile);
35
+ project.saveSync();
36
+ (0, prompts_1.outro)('✅ Done!');
37
+ }
38
+ exports.addEntity = addEntity;
39
+ //# sourceMappingURL=add-entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-entity.js","sourceRoot":"","sources":["../../../../src/commands/add/entity/add-entity.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAgD;AAChD,6CAAwC;AACxC,gDAAwB;AAExB,mEAAwF;AAExF,4DAA+F;AAG/F,+FAAyF;AAEzF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AASzC,KAAK,UAAU,SAAS;IAC3B,MAAM,cAAc,GAAG,IAAA,iBAAO,GAAE,CAAC;IACjC,cAAc,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC7C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,IAAA,6BAAiB,GAAE,CAAC;IACpC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAExC,MAAM,WAAW,GAAG,MAAM,IAAA,kCAAiB,EAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IACvE,MAAM,gBAAgB,GAAG,MAAM,IAAA,oCAAmB,EAAC,gBAAgB,CAAC,CAAC;IACrE,MAAM,OAAO,GAA6B;QACtC,MAAM,EAAE;YACJ,SAAS,EAAE,gBAAgB;YAC3B,QAAQ,EAAE,IAAA,uBAAS,EAAC,gBAAgB,CAAC,GAAG,SAAS;SACpD;KACJ,CAAC;IAEF,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;IAChG,MAAM,kBAAkB,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,8BAA8B,CAAC,CAAC;IAChF,MAAM,UAAU,GAAG,IAAA,wCAA4B,EAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAC7E,UAAU,CAAC,IAAI,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;IACzE,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,cAAc,CAAC,CAAC;IAC7E,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE5D,IAAA,wCAAiB,EAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAE3C,OAAO,CAAC,QAAQ,EAAE,CAAC;IACnB,IAAA,eAAK,EAAC,UAAU,CAAC,CAAC;AACtB,CAAC;AA3BD,8BA2BC"}
@@ -0,0 +1,2 @@
1
+ import { ClassDeclaration, SourceFile } from 'ts-morph';
2
+ export declare function addEntityToPlugin(pluginClass: ClassDeclaration, entitySourceFile: SourceFile): void;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addEntityToPlugin = void 0;
4
+ const ts_morph_1 = require("ts-morph");
5
+ const ast_utils_1 = require("../../../../../utilities/ast-utils");
6
+ function addEntityToPlugin(pluginClass, entitySourceFile) {
7
+ const pluginDecorator = pluginClass.getDecorator('VendurePlugin');
8
+ if (!pluginDecorator) {
9
+ throw new Error('Could not find VendurePlugin decorator');
10
+ }
11
+ const pluginOptions = pluginDecorator.getArguments()[0];
12
+ if (!pluginOptions) {
13
+ throw new Error('Could not find VendurePlugin options');
14
+ }
15
+ const entityClass = entitySourceFile.getClasses().find(c => { var _a; return !((_a = c.getName()) === null || _a === void 0 ? void 0 : _a.includes('CustomFields')); });
16
+ if (!entityClass) {
17
+ throw new Error('Could not find entity class');
18
+ }
19
+ const entityClassName = entityClass.getName();
20
+ if (ts_morph_1.Node.isObjectLiteralExpression(pluginOptions)) {
21
+ const entityProperty = pluginOptions.getProperty('entities');
22
+ if (entityProperty) {
23
+ const entitiesArray = entityProperty.getFirstChildByKind(ts_morph_1.SyntaxKind.ArrayLiteralExpression);
24
+ if (entitiesArray) {
25
+ entitiesArray.addElement(entityClassName);
26
+ }
27
+ }
28
+ else {
29
+ pluginOptions.addPropertyAssignment({
30
+ name: 'entities',
31
+ initializer: `[${entityClassName}]`,
32
+ });
33
+ }
34
+ }
35
+ (0, ast_utils_1.addImportsToFile)(pluginClass.getSourceFile(), {
36
+ moduleSpecifier: entityClass.getSourceFile(),
37
+ namedImports: [entityClassName],
38
+ });
39
+ }
40
+ exports.addEntityToPlugin = addEntityToPlugin;
41
+ //# sourceMappingURL=add-entity-to-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-entity-to-plugin.js","sourceRoot":"","sources":["../../../../../../src/commands/add/entity/codemods/add-entity-to-plugin/add-entity-to-plugin.ts"],"names":[],"mappings":";;;AAAA,uCAA0E;AAE1E,kEAAsE;AAGtE,SAAgB,iBAAiB,CAAC,WAA6B,EAAE,gBAA4B;IACzF,MAAM,eAAe,GAAG,WAAW,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAClE,IAAI,CAAC,eAAe,EAAE;QAClB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC7D;IACD,MAAM,aAAa,GAAG,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,aAAa,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;KAC3D;IACD,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAC,OAAA,CAAC,CAAA,MAAA,CAAC,CAAC,OAAO,EAAE,0CAAE,QAAQ,CAAC,cAAc,CAAC,CAAA,CAAA,EAAA,CAAC,CAAC;IACpG,IAAI,CAAC,WAAW,EAAE;QACd,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;KAClD;IACD,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,EAAY,CAAC;IACxD,IAAI,eAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,EAAE;QAC/C,MAAM,cAAc,GAAG,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,cAAc,EAAE;YAChB,MAAM,aAAa,GAAG,cAAc,CAAC,mBAAmB,CAAC,qBAAU,CAAC,sBAAsB,CAAC,CAAC;YAC5F,IAAI,aAAa,EAAE;gBACf,aAAa,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;aAC7C;SACJ;aAAM;YACH,aAAa,CAAC,qBAAqB,CAAC;gBAChC,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,IAAI,eAAe,GAAG;aACtC,CAAC,CAAC;SACN;KACJ;IAED,IAAA,4BAAgB,EAAC,WAAW,CAAC,aAAa,EAAE,EAAE;QAC1C,eAAe,EAAE,WAAW,CAAC,aAAa,EAAE;QAC5C,YAAY,EAAE,CAAC,eAAe,CAAC;KAClC,CAAC,CAAC;AACP,CAAC;AAjCD,8CAiCC"}
@@ -0,0 +1,17 @@
1
+ import { VendureEntity, DeepPartial, HasCustomFields } from '@vendure/core';
2
+ import { Entity, Column } from 'typeorm';
3
+
4
+ export class ScaffoldEntityCustomFields {}
5
+
6
+ @Entity()
7
+ export class ScaffoldEntity extends VendureEntity implements HasCustomFields {
8
+ constructor(input?: DeepPartial<ScaffoldEntity>) {
9
+ super(input);
10
+ }
11
+
12
+ @Column()
13
+ name: string;
14
+
15
+ @Column(type => ScaffoldEntityCustomFields)
16
+ customFields: ScaffoldEntityCustomFields;
17
+ }
@@ -0,0 +1 @@
1
+ export declare function addUiExtensions(): Promise<void>;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.addUiExtensions = void 0;
7
+ const prompts_1 = require("@clack/prompts");
8
+ const path_1 = __importDefault(require("path"));
9
+ const shared_prompts_1 = require("../../../shared/shared-prompts");
10
+ const ast_utils_1 = require("../../../utilities/ast-utils");
11
+ const package_utils_1 = require("../../../utilities/package-utils");
12
+ const scaffolder_1 = require("../../../utilities/scaffolder");
13
+ const add_ui_extension_static_prop_1 = require("./codemods/add-ui-extension-static-prop/add-ui-extension-static-prop");
14
+ const update_admin_ui_plugin_init_1 = require("./codemods/update-admin-ui-plugin-init/update-admin-ui-plugin-init");
15
+ const providers_1 = require("./scaffold/providers");
16
+ const routes_1 = require("./scaffold/routes");
17
+ async function addUiExtensions() {
18
+ const projectSpinner = (0, prompts_1.spinner)();
19
+ projectSpinner.start('Analyzing project...');
20
+ await new Promise(resolve => setTimeout(resolve, 100));
21
+ const project = (0, ast_utils_1.getTsMorphProject)();
22
+ projectSpinner.stop('Project analyzed');
23
+ const pluginClass = await (0, shared_prompts_1.selectPluginClass)(project, 'Add UI extensions cancelled');
24
+ if (pluginAlreadyHasUiExtensionProp(pluginClass)) {
25
+ (0, prompts_1.outro)('This plugin already has a UI extension configured');
26
+ return;
27
+ }
28
+ (0, add_ui_extension_static_prop_1.addUiExtensionStaticProp)(pluginClass);
29
+ prompts_1.log.success('Updated the plugin class');
30
+ const installSpinner = (0, prompts_1.spinner)();
31
+ installSpinner.start(`Installing dependencies...`);
32
+ try {
33
+ const version = (0, package_utils_1.determineVendureVersion)();
34
+ await (0, package_utils_1.installRequiredPackages)([
35
+ {
36
+ pkg: '@vendure/ui-devkit',
37
+ isDevDependency: true,
38
+ version,
39
+ },
40
+ ]);
41
+ }
42
+ catch (e) {
43
+ prompts_1.log.error(`Failed to install dependencies: ${e.message}.`);
44
+ }
45
+ installSpinner.stop('Dependencies installed');
46
+ const scaffolder = new scaffolder_1.Scaffolder();
47
+ scaffolder.addFile(providers_1.renderProviders, 'providers.ts');
48
+ scaffolder.addFile(routes_1.renderRoutes, 'routes.ts');
49
+ prompts_1.log.success('Created UI extension scaffold');
50
+ const pluginDir = pluginClass.getSourceFile().getDirectory().getPath();
51
+ scaffolder.createScaffold({
52
+ dir: path_1.default.join(pluginDir, 'ui'),
53
+ context: {},
54
+ });
55
+ const vendureConfig = (0, ast_utils_1.getVendureConfig)(project);
56
+ if (!vendureConfig) {
57
+ prompts_1.log.warning(`Could not find the VendureConfig declaration in your project. You will need to manually set up the compileUiExtensions function.`);
58
+ }
59
+ else {
60
+ const pluginClassName = pluginClass.getName();
61
+ const pluginPath = (0, ast_utils_1.getRelativeImportPath)({
62
+ to: vendureConfig.getSourceFile(),
63
+ from: pluginClass.getSourceFile(),
64
+ });
65
+ const updated = (0, update_admin_ui_plugin_init_1.updateAdminUiPluginInit)(vendureConfig, { pluginClassName, pluginPath });
66
+ if (updated) {
67
+ prompts_1.log.success('Updated VendureConfig file');
68
+ }
69
+ else {
70
+ prompts_1.log.warning(`Could not update \`AdminUiPlugin.init()\` options.`);
71
+ (0, prompts_1.note)(`You will need to manually set up the compileUiExtensions function,\nadding ` +
72
+ `the \`${pluginClassName}.ui\` object to the \`extensions\` array.`, 'Info');
73
+ }
74
+ }
75
+ project.saveSync();
76
+ (0, prompts_1.outro)('✅ Done!');
77
+ }
78
+ exports.addUiExtensions = addUiExtensions;
79
+ function pluginAlreadyHasUiExtensionProp(pluginClass) {
80
+ const uiProperty = pluginClass.getProperty('ui');
81
+ if (!uiProperty) {
82
+ return false;
83
+ }
84
+ if (uiProperty.isStatic()) {
85
+ return true;
86
+ }
87
+ }
88
+ //# sourceMappingURL=add-ui-extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-ui-extensions.js","sourceRoot":"","sources":["../../../../src/commands/add/ui-extensions/add-ui-extensions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { ClassDeclaration } from 'ts-morph';
2
+ export declare function addUiExtensionStaticProp(pluginClass: ClassDeclaration): void;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addUiExtensionStaticProp = void 0;
4
+ const ast_utils_1 = require("../../../../../utilities/ast-utils");
5
+ function addUiExtensionStaticProp(pluginClass) {
6
+ const adminUiExtensionType = 'AdminUiExtension';
7
+ const extensionId = (0, ast_utils_1.kebabize)(pluginClass.getName()).replace(/-plugin$/, '');
8
+ pluginClass
9
+ .addProperty({
10
+ name: 'ui',
11
+ isStatic: true,
12
+ type: adminUiExtensionType,
13
+ initializer: `{
14
+ id: '${extensionId}-ui',
15
+ extensionPath: path.join(__dirname, 'ui'),
16
+ routes: [{ route: '${extensionId}', filePath: 'routes.ts' }],
17
+ providers: ['providers.ts'],
18
+ }`,
19
+ })
20
+ .formatText();
21
+ (0, ast_utils_1.addImportsToFile)(pluginClass.getSourceFile(), {
22
+ moduleSpecifier: '@vendure/ui-devkit/compiler',
23
+ namedImports: [adminUiExtensionType],
24
+ order: 0,
25
+ });
26
+ (0, ast_utils_1.addImportsToFile)(pluginClass.getSourceFile(), {
27
+ moduleSpecifier: 'path',
28
+ namespaceImport: 'path',
29
+ order: 0,
30
+ });
31
+ }
32
+ exports.addUiExtensionStaticProp = addUiExtensionStaticProp;
33
+ //# sourceMappingURL=add-ui-extension-static-prop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-ui-extension-static-prop.js","sourceRoot":"","sources":["../../../../../../src/commands/add/ui-extensions/codemods/add-ui-extension-static-prop/add-ui-extension-static-prop.ts"],"names":[],"mappings":";;;AAEA,kEAAgF;AAMhF,SAAgB,wBAAwB,CAAC,WAA6B;IAClE,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;IAChD,MAAM,WAAW,GAAG,IAAA,oBAAQ,EAAC,WAAW,CAAC,OAAO,EAAY,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACtF,WAAW;SACN,WAAW,CAAC;QACT,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE;+BACM,WAAW;;6CAEG,WAAW;;sBAElC;KACb,CAAC;SACD,UAAU,EAAE,CAAC;IAGlB,IAAA,4BAAgB,EAAC,WAAW,CAAC,aAAa,EAAE,EAAE;QAC1C,eAAe,EAAE,6BAA6B;QAC9C,YAAY,EAAE,CAAC,oBAAoB,CAAC;QACpC,KAAK,EAAE,CAAC;KACX,CAAC,CAAC;IAGH,IAAA,4BAAgB,EAAC,WAAW,CAAC,aAAa,EAAE,EAAE;QAC1C,eAAe,EAAE,MAAM;QACvB,eAAe,EAAE,MAAM;QACvB,KAAK,EAAE,CAAC;KACX,CAAC,CAAC;AACP,CAAC;AA9BD,4DA8BC"}
@@ -0,0 +1,5 @@
1
+ import { ObjectLiteralExpression } from 'ts-morph';
2
+ export declare function updateAdminUiPluginInit(vendureConfig: ObjectLiteralExpression, options: {
3
+ pluginClassName: string;
4
+ pluginPath: string;
5
+ }): boolean;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateAdminUiPluginInit = void 0;
4
+ const ts_morph_1 = require("ts-morph");
5
+ const ast_utils_1 = require("../../../../../utilities/ast-utils");
6
+ function updateAdminUiPluginInit(vendureConfig, options) {
7
+ var _a, _b, _c;
8
+ const plugins = (_b = (_a = vendureConfig
9
+ .getProperty('plugins')) === null || _a === void 0 ? void 0 : _a.getFirstChildByKind(ts_morph_1.SyntaxKind.ArrayLiteralExpression)) === null || _b === void 0 ? void 0 : _b.getFirstChildByKind(ts_morph_1.SyntaxKind.SyntaxList);
10
+ const adminUiPlugin = plugins === null || plugins === void 0 ? void 0 : plugins.getChildrenOfKind(ts_morph_1.SyntaxKind.CallExpression).find(c => {
11
+ return c.getExpression().getText() === 'AdminUiPlugin.init';
12
+ });
13
+ if (adminUiPlugin) {
14
+ const initObject = adminUiPlugin
15
+ .getArguments()
16
+ .find((a) => a.isKind(ts_morph_1.SyntaxKind.ObjectLiteralExpression));
17
+ const appProperty = initObject === null || initObject === void 0 ? void 0 : initObject.getProperty('app');
18
+ if (!appProperty) {
19
+ initObject === null || initObject === void 0 ? void 0 : initObject.addProperty({
20
+ name: 'app',
21
+ kind: ts_morph_1.StructureKind.PropertyAssignment,
22
+ initializer: `compileUiExtensions({
23
+ outputPath: path.join(__dirname, '../admin-ui'),
24
+ extensions: [
25
+ ${options.pluginClassName}.ui,
26
+ ],
27
+ devMode: true,
28
+ }),`,
29
+ }).formatText();
30
+ }
31
+ else {
32
+ const computeFnCall = appProperty.getFirstChildByKind(ts_morph_1.SyntaxKind.CallExpression);
33
+ if (computeFnCall === null || computeFnCall === void 0 ? void 0 : computeFnCall.getType().getText().includes('AdminUiAppConfig')) {
34
+ const arg = computeFnCall.getArguments()[0];
35
+ if (arg && ts_morph_1.Node.isObjectLiteralExpression(arg)) {
36
+ const extensionsProp = arg.getProperty('extensions');
37
+ if (extensionsProp) {
38
+ (_c = extensionsProp
39
+ .getFirstChildByKind(ts_morph_1.SyntaxKind.ArrayLiteralExpression)) === null || _c === void 0 ? void 0 : _c.addElement(`${options.pluginClassName}.ui`).formatText();
40
+ }
41
+ }
42
+ }
43
+ }
44
+ (0, ast_utils_1.addImportsToFile)(vendureConfig.getSourceFile(), {
45
+ moduleSpecifier: '@vendure/ui-devkit/compiler',
46
+ namedImports: ['compileUiExtensions'],
47
+ order: 0,
48
+ });
49
+ (0, ast_utils_1.addImportsToFile)(vendureConfig.getSourceFile(), {
50
+ moduleSpecifier: 'path',
51
+ namespaceImport: 'path',
52
+ order: 0,
53
+ });
54
+ (0, ast_utils_1.addImportsToFile)(vendureConfig.getSourceFile(), {
55
+ moduleSpecifier: options.pluginPath,
56
+ namedImports: [options.pluginClassName],
57
+ });
58
+ return true;
59
+ }
60
+ return false;
61
+ }
62
+ exports.updateAdminUiPluginInit = updateAdminUiPluginInit;
63
+ //# sourceMappingURL=update-admin-ui-plugin-init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-admin-ui-plugin-init.js","sourceRoot":"","sources":["../../../../../../src/commands/add/ui-extensions/codemods/update-admin-ui-plugin-init/update-admin-ui-plugin-init.ts"],"names":[],"mappings":";;;AAAA,uCAAoF;AAEpF,kEAAsE;AAEtE,SAAgB,uBAAuB,CACnC,aAAsC,EACtC,OAAwD;;IAExD,MAAM,OAAO,GAAG,MAAA,MAAA,aAAa;SACxB,WAAW,CAAC,SAAS,CAAC,0CACrB,mBAAmB,CAAC,qBAAU,CAAC,sBAAsB,CAAC,0CACtD,mBAAmB,CAAC,qBAAU,CAAC,UAAU,CAAC,CAAC;IAEjD,MAAM,aAAa,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,iBAAiB,CAAC,qBAAU,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE;QACjF,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,KAAK,oBAAoB,CAAC;IAChE,CAAC,CAAC,CAAC;IACH,IAAI,aAAa,EAAE;QACf,MAAM,UAAU,GAAG,aAAa;aAC3B,YAAY,EAAE;aACd,IAAI,CAAC,CAAC,CAAC,EAAgC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,qBAAU,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAC7F,MAAM,WAAW,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,WAAW,EAAE;YACd,UAAU,aAAV,UAAU,uBAAV,UAAU,CACJ,WAAW,CAAC;gBACV,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,wBAAa,CAAC,kBAAkB;gBACtC,WAAW,EAAE;;;8BAGH,OAAO,CAAC,eAAe;;;wBAG7B;aACP,EACA,UAAU,EAAE,CAAC;SACrB;aAAM;YACH,MAAM,aAAa,GAAG,WAAW,CAAC,mBAAmB,CAAC,qBAAU,CAAC,cAAc,CAAC,CAAC;YACjF,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC,kBAAkB,CAAC,EAAE;gBACjE,MAAM,GAAG,GAAG,aAAa,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5C,IAAI,GAAG,IAAI,eAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE;oBAC5C,MAAM,cAAc,GAAG,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;oBACrD,IAAI,cAAc,EAAE;wBAChB,MAAA,cAAc;6BACT,mBAAmB,CAAC,qBAAU,CAAC,sBAAsB,CAAC,0CACrD,UAAU,CAAC,GAAG,OAAO,CAAC,eAAe,KAAK,EAC3C,UAAU,EAAE,CAAC;qBACrB;iBACJ;aACJ;SACJ;QAED,IAAA,4BAAgB,EAAC,aAAa,CAAC,aAAa,EAAE,EAAE;YAC5C,eAAe,EAAE,6BAA6B;YAC9C,YAAY,EAAE,CAAC,qBAAqB,CAAC;YACrC,KAAK,EAAE,CAAC;SACX,CAAC,CAAC;QAEH,IAAA,4BAAgB,EAAC,aAAa,CAAC,aAAa,EAAE,EAAE;YAC5C,eAAe,EAAE,MAAM;YACvB,eAAe,EAAE,MAAM;YACvB,KAAK,EAAE,CAAC;SACX,CAAC,CAAC;QAEH,IAAA,4BAAgB,EAAC,aAAa,CAAC,aAAa,EAAE,EAAE;YAC5C,eAAe,EAAE,OAAO,CAAC,UAAU;YACnC,YAAY,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC;SAC1C,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;KACf;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAlED,0DAkEC"}
@@ -0,0 +1 @@
1
+ export declare function renderProviders(): string;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderProviders = void 0;
4
+ function renderProviders() {
5
+ return `
6
+
7
+ export default [
8
+ // Add your providers here
9
+ ];
10
+ `;
11
+ }
12
+ exports.renderProviders = renderProviders;
13
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../../../src/commands/add/ui-extensions/scaffold/providers.ts"],"names":[],"mappings":";;;AAAA,SAAgB,eAAe;IAC3B,OAAiC;;;;;KAKhC,CAAC;AACN,CAAC;AAPD,0CAOC"}
@@ -0,0 +1 @@
1
+ export declare function renderRoutes(): string;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderRoutes = void 0;
4
+ function renderRoutes() {
5
+ return `
6
+
7
+ export default [
8
+ // Add your custom routes here
9
+ ];
10
+ `;
11
+ }
12
+ exports.renderRoutes = renderRoutes;
13
+ //# sourceMappingURL=routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../../../src/commands/add/ui-extensions/scaffold/routes.ts"],"names":[],"mappings":";;;AAAA,SAAgB,YAAY;IACxB,OAAiC;;;;;CAKpC,CAAC;AACF,CAAC;AAPD,oCAOC"}
@@ -1,3 +1,3 @@
1
1
  import { GeneratePluginOptions } from './types';
2
2
  export declare function newPlugin(): Promise<void>;
3
- export declare function generatePlugin(options: GeneratePluginOptions): Promise<void>;
3
+ export declare function generatePlugin(options: GeneratePluginOptions): void;