@vendure/cli 2.2.0-next.7 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/dist/cli.js +54 -5
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/add/add.d.ts +1 -2
  4. package/dist/commands/add/add.js +58 -27
  5. package/dist/commands/add/add.js.map +1 -1
  6. package/dist/commands/add/api-extension/add-api-extension.d.ts +9 -0
  7. package/dist/commands/add/api-extension/add-api-extension.js +506 -0
  8. package/dist/commands/add/api-extension/add-api-extension.js.map +1 -0
  9. package/dist/commands/add/api-extension/templates/api-extensions.template.ts +3 -0
  10. package/dist/commands/add/api-extension/templates/crud-resolver.template.ts +109 -0
  11. package/dist/commands/add/api-extension/templates/simple-resolver.template.ts +31 -0
  12. package/dist/commands/add/codegen/add-codegen.d.ts +8 -0
  13. package/dist/commands/add/codegen/add-codegen.js +106 -0
  14. package/dist/commands/add/codegen/add-codegen.js.map +1 -0
  15. package/dist/commands/add/codegen/codegen-config-ref.d.ts +10 -0
  16. package/dist/commands/add/codegen/codegen-config-ref.js +53 -0
  17. package/dist/commands/add/codegen/codegen-config-ref.js.map +1 -0
  18. package/dist/commands/add/codegen/templates/codegen.template.ts +17 -0
  19. package/dist/commands/add/entity/add-entity.d.ts +15 -5
  20. package/dist/commands/add/entity/add-entity.js +130 -23
  21. package/dist/commands/add/entity/add-entity.js.map +1 -1
  22. package/dist/commands/add/entity/codemods/add-entity-to-plugin/add-entity-to-plugin.d.ts +3 -2
  23. package/dist/commands/add/entity/codemods/add-entity-to-plugin/add-entity-to-plugin.js +3 -27
  24. package/dist/commands/add/entity/codemods/add-entity-to-plugin/add-entity-to-plugin.js.map +1 -1
  25. package/dist/commands/add/entity/templates/entity-translation.template.ts +29 -0
  26. package/dist/commands/add/entity/templates/entity.template.ts +18 -4
  27. package/dist/commands/add/job-queue/add-job-queue.d.ts +9 -0
  28. package/dist/commands/add/job-queue/add-job-queue.js +130 -0
  29. package/dist/commands/add/job-queue/add-job-queue.js.map +1 -0
  30. package/dist/commands/add/plugin/create-new-plugin.d.ts +8 -0
  31. package/dist/commands/add/plugin/create-new-plugin.js +209 -0
  32. package/dist/commands/add/plugin/create-new-plugin.js.map +1 -0
  33. package/dist/commands/add/plugin/templates/constants.template.ts +2 -0
  34. package/dist/commands/add/plugin/templates/plugin.template.ts +25 -0
  35. package/dist/commands/add/plugin/templates/types.template.ts +7 -0
  36. package/dist/commands/add/plugin/types.d.ts +8 -0
  37. package/dist/commands/add/plugin/types.js.map +1 -0
  38. package/dist/commands/add/service/add-service.d.ts +5 -0
  39. package/dist/commands/add/service/add-service.js +278 -0
  40. package/dist/commands/add/service/add-service.js.map +1 -0
  41. package/dist/commands/add/service/templates/basic-service.template.ts +13 -0
  42. package/dist/commands/add/service/templates/entity-service.template.ts +146 -0
  43. package/dist/commands/add/ui-extensions/add-ui-extensions.d.ts +6 -1
  44. package/dist/commands/add/ui-extensions/add-ui-extensions.js +32 -42
  45. package/dist/commands/add/ui-extensions/add-ui-extensions.js.map +1 -1
  46. package/dist/commands/add/ui-extensions/codemods/add-ui-extension-static-prop/add-ui-extension-static-prop.d.ts +2 -2
  47. package/dist/commands/add/ui-extensions/codemods/add-ui-extension-static-prop/add-ui-extension-static-prop.js +6 -3
  48. package/dist/commands/add/ui-extensions/codemods/add-ui-extension-static-prop/add-ui-extension-static-prop.js.map +1 -1
  49. package/dist/commands/add/ui-extensions/codemods/update-admin-ui-plugin-init/update-admin-ui-plugin-init.d.ts +2 -2
  50. package/dist/commands/add/ui-extensions/codemods/update-admin-ui-plugin-init/update-admin-ui-plugin-init.js +10 -10
  51. package/dist/commands/add/ui-extensions/codemods/update-admin-ui-plugin-init/update-admin-ui-plugin-init.js.map +1 -1
  52. package/dist/commands/add/ui-extensions/templates/providers.template.ts +3 -0
  53. package/dist/commands/add/ui-extensions/templates/routes.template.ts +3 -0
  54. package/dist/commands/migrate/generate-migration/generate-migration.d.ts +2 -0
  55. package/dist/commands/migrate/generate-migration/generate-migration.js +48 -0
  56. package/dist/commands/migrate/generate-migration/generate-migration.js.map +1 -0
  57. package/dist/commands/migrate/load-vendure-config-file.d.ts +2 -0
  58. package/dist/commands/migrate/load-vendure-config-file.js +24 -0
  59. package/dist/commands/migrate/load-vendure-config-file.js.map +1 -0
  60. package/dist/commands/migrate/migrate.d.ts +1 -0
  61. package/dist/commands/migrate/migrate.js +50 -0
  62. package/dist/commands/migrate/migrate.js.map +1 -0
  63. package/dist/commands/migrate/revert-migration/revert-migration.d.ts +2 -0
  64. package/dist/commands/migrate/revert-migration/revert-migration.js +31 -0
  65. package/dist/commands/migrate/revert-migration/revert-migration.js.map +1 -0
  66. package/dist/commands/migrate/run-migration/run-migration.d.ts +2 -0
  67. package/dist/commands/migrate/run-migration/run-migration.js +34 -0
  68. package/dist/commands/migrate/run-migration/run-migration.js.map +1 -0
  69. package/dist/constants.d.ts +8 -0
  70. package/dist/constants.js +9 -1
  71. package/dist/constants.js.map +1 -1
  72. package/dist/shared/cli-command.d.ts +24 -0
  73. package/dist/shared/cli-command.js +22 -0
  74. package/dist/shared/cli-command.js.map +1 -0
  75. package/dist/shared/entity-ref.d.ts +16 -0
  76. package/dist/shared/entity-ref.js +48 -0
  77. package/dist/shared/entity-ref.js.map +1 -0
  78. package/dist/shared/package-json-ref.d.ts +17 -0
  79. package/dist/shared/package-json-ref.js +115 -0
  80. package/dist/shared/package-json-ref.js.map +1 -0
  81. package/dist/shared/service-ref.d.ts +25 -0
  82. package/dist/shared/service-ref.js +82 -0
  83. package/dist/shared/service-ref.js.map +1 -0
  84. package/dist/shared/shared-prompts.d.ts +13 -3
  85. package/dist/shared/shared-prompts.js +143 -24
  86. package/dist/shared/shared-prompts.js.map +1 -1
  87. package/dist/shared/vendure-config-ref.d.ts +14 -0
  88. package/dist/shared/vendure-config-ref.js +65 -0
  89. package/dist/shared/vendure-config-ref.js.map +1 -0
  90. package/dist/shared/vendure-plugin-ref.d.ts +18 -0
  91. package/dist/shared/vendure-plugin-ref.js +145 -0
  92. package/dist/shared/vendure-plugin-ref.js.map +1 -0
  93. package/dist/utilities/ast-utils.d.ts +7 -9
  94. package/dist/utilities/ast-utils.js +65 -39
  95. package/dist/utilities/ast-utils.js.map +1 -1
  96. package/dist/utilities/utils.d.ts +2 -0
  97. package/dist/utilities/utils.js +12 -0
  98. package/dist/utilities/utils.js.map +1 -0
  99. package/package.json +6 -4
  100. package/dist/commands/add/ui-extensions/scaffold/providers.d.ts +0 -1
  101. package/dist/commands/add/ui-extensions/scaffold/providers.js +0 -13
  102. package/dist/commands/add/ui-extensions/scaffold/providers.js.map +0 -1
  103. package/dist/commands/add/ui-extensions/scaffold/routes.d.ts +0 -1
  104. package/dist/commands/add/ui-extensions/scaffold/routes.js +0 -13
  105. package/dist/commands/add/ui-extensions/scaffold/routes.js.map +0 -1
  106. package/dist/commands/new/new.d.ts +0 -2
  107. package/dist/commands/new/new.js +0 -18
  108. package/dist/commands/new/new.js.map +0 -1
  109. package/dist/commands/new/plugin/new-plugin.d.ts +0 -3
  110. package/dist/commands/new/plugin/new-plugin.js +0 -158
  111. package/dist/commands/new/plugin/new-plugin.js.map +0 -1
  112. package/dist/commands/new/plugin/scaffold/api/admin.resolver.d.ts +0 -3
  113. package/dist/commands/new/plugin/scaffold/api/admin.resolver.js +0 -66
  114. package/dist/commands/new/plugin/scaffold/api/admin.resolver.js.map +0 -1
  115. package/dist/commands/new/plugin/scaffold/api/api-extensions.d.ts +0 -2
  116. package/dist/commands/new/plugin/scaffold/api/api-extensions.js +0 -82
  117. package/dist/commands/new/plugin/scaffold/api/api-extensions.js.map +0 -1
  118. package/dist/commands/new/plugin/scaffold/api/shop.resolver.d.ts +0 -3
  119. package/dist/commands/new/plugin/scaffold/api/shop.resolver.js +0 -57
  120. package/dist/commands/new/plugin/scaffold/api/shop.resolver.js.map +0 -1
  121. package/dist/commands/new/plugin/scaffold/constants.d.ts +0 -2
  122. package/dist/commands/new/plugin/scaffold/constants.js +0 -21
  123. package/dist/commands/new/plugin/scaffold/constants.js.map +0 -1
  124. package/dist/commands/new/plugin/scaffold/plugin.d.ts +0 -2
  125. package/dist/commands/new/plugin/scaffold/plugin.js +0 -51
  126. package/dist/commands/new/plugin/scaffold/plugin.js.map +0 -1
  127. package/dist/commands/new/plugin/scaffold/services/service.d.ts +0 -3
  128. package/dist/commands/new/plugin/scaffold/services/service.js +0 -80
  129. package/dist/commands/new/plugin/scaffold/services/service.js.map +0 -1
  130. package/dist/commands/new/plugin/scaffold/types.d.ts +0 -2
  131. package/dist/commands/new/plugin/scaffold/types.js +0 -15
  132. package/dist/commands/new/plugin/scaffold/types.js.map +0 -1
  133. package/dist/commands/new/plugin/types.d.ts +0 -22
  134. package/dist/commands/new/plugin/types.js.map +0 -1
  135. package/dist/shared/shared-scaffold/entity.d.ts +0 -5
  136. package/dist/shared/shared-scaffold/entity.js +0 -26
  137. package/dist/shared/shared-scaffold/entity.js.map +0 -1
  138. package/dist/utilities/package-utils.d.ts +0 -8
  139. package/dist/utilities/package-utils.js +0 -96
  140. package/dist/utilities/package-utils.js.map +0 -1
  141. package/dist/utilities/scaffolder.d.ts +0 -8
  142. package/dist/utilities/scaffolder.js +0 -50
  143. package/dist/utilities/scaffolder.js.map +0 -1
  144. /package/dist/commands/{new → add}/plugin/types.js +0 -0
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addJobQueueCommand = void 0;
4
+ const prompts_1 = require("@clack/prompts");
5
+ const change_case_1 = require("change-case");
6
+ const ts_morph_1 = require("ts-morph");
7
+ const cli_command_1 = require("../../../shared/cli-command");
8
+ const shared_prompts_1 = require("../../../shared/shared-prompts");
9
+ const ast_utils_1 = require("../../../utilities/ast-utils");
10
+ const cancelledMessage = 'Add API extension cancelled';
11
+ exports.addJobQueueCommand = new cli_command_1.CliCommand({
12
+ id: 'add-job-queue',
13
+ category: 'Plugin: Job Queue',
14
+ description: 'Defines an new job queue on a service',
15
+ run: options => addJobQueue(options),
16
+ });
17
+ async function addJobQueue(options) {
18
+ var _a;
19
+ const providedVendurePlugin = options === null || options === void 0 ? void 0 : options.plugin;
20
+ const project = await (0, shared_prompts_1.analyzeProject)({ providedVendurePlugin, cancelledMessage });
21
+ const plugin = providedVendurePlugin !== null && providedVendurePlugin !== void 0 ? providedVendurePlugin : (await (0, shared_prompts_1.selectPlugin)(project, cancelledMessage));
22
+ const serviceRef = await (0, shared_prompts_1.selectServiceRef)(project, plugin);
23
+ const jobQueueName = await (0, prompts_1.text)({
24
+ message: 'What is the name of the job queue?',
25
+ initialValue: 'my-background-task',
26
+ validate: input => {
27
+ if (!/^[a-z][a-z-0-9]+$/.test(input)) {
28
+ return 'The job queue name must be lowercase and contain only letters, numbers and dashes';
29
+ }
30
+ },
31
+ });
32
+ if ((0, prompts_1.isCancel)(jobQueueName)) {
33
+ (0, prompts_1.cancel)(cancelledMessage);
34
+ process.exit(0);
35
+ }
36
+ (0, ast_utils_1.addImportsToFile)(serviceRef.classDeclaration.getSourceFile(), {
37
+ moduleSpecifier: '@vendure/core',
38
+ namedImports: ['JobQueue', 'JobQueueService', 'SerializedRequestContext'],
39
+ });
40
+ (0, ast_utils_1.addImportsToFile)(serviceRef.classDeclaration.getSourceFile(), {
41
+ moduleSpecifier: '@vendure/common/lib/generated-types',
42
+ namedImports: ['JobState'],
43
+ });
44
+ (0, ast_utils_1.addImportsToFile)(serviceRef.classDeclaration.getSourceFile(), {
45
+ moduleSpecifier: '@nestjs/common',
46
+ namedImports: ['OnModuleInit'],
47
+ });
48
+ serviceRef.injectDependency({
49
+ name: 'jobQueueService',
50
+ type: 'JobQueueService',
51
+ });
52
+ const jobQueuePropertyName = (0, change_case_1.camelCase)(jobQueueName) + 'Queue';
53
+ serviceRef.classDeclaration.insertProperty(0, {
54
+ name: jobQueuePropertyName,
55
+ scope: ts_morph_1.Scope.Private,
56
+ type: writer => writer.write('JobQueue<{ ctx: SerializedRequestContext, someArg: string; }>'),
57
+ });
58
+ serviceRef.classDeclaration.addImplements('OnModuleInit');
59
+ let onModuleInitMethod = serviceRef.classDeclaration.getMethod('onModuleInit');
60
+ if (!onModuleInitMethod) {
61
+ const constructor = serviceRef.classDeclaration.getConstructors()[0];
62
+ const constructorChildIndex = (_a = constructor === null || constructor === void 0 ? void 0 : constructor.getChildIndex()) !== null && _a !== void 0 ? _a : 0;
63
+ onModuleInitMethod = serviceRef.classDeclaration.insertMethod(constructorChildIndex + 1, {
64
+ name: 'onModuleInit',
65
+ isAsync: false,
66
+ returnType: 'void',
67
+ scope: ts_morph_1.Scope.Public,
68
+ });
69
+ }
70
+ onModuleInitMethod.setIsAsync(true);
71
+ onModuleInitMethod.setReturnType('Promise<void>');
72
+ const body = onModuleInitMethod.getBody();
73
+ if (ts_morph_1.Node.isBlock(body)) {
74
+ body.addStatements(writer => {
75
+ writer
76
+ .write(`this.${jobQueuePropertyName} = await this.jobQueueService.createQueue({
77
+ name: '${jobQueueName}',
78
+ process: async job => {
79
+ // Deserialize the RequestContext from the job data
80
+ const ctx = RequestContext.deserialize(job.data.ctx);
81
+ // The "someArg" property is passed in when the job is triggered
82
+ const someArg = job.data.someArg;
83
+
84
+ // Inside the \`process\` function we define how each job
85
+ // in the queue will be processed.
86
+ // Let's simulate some long-running task
87
+ const totalItems = 10;
88
+ for (let i = 0; i < totalItems; i++) {
89
+ await new Promise(resolve => setTimeout(resolve, 500));
90
+
91
+ // You can optionally respond to the job being cancelled
92
+ // during processing. This can be useful for very long-running
93
+ // tasks which can be cancelled by the user.
94
+ if (job.state === JobState.CANCELLED) {
95
+ throw new Error('Job was cancelled');
96
+ }
97
+
98
+ // Progress can be reported as a percentage like this
99
+ job.setProgress(Math.floor(i / totalItems * 100));
100
+ }
101
+
102
+ // The value returned from the \`process\` function is stored
103
+ // as the "result" field of the job
104
+ return {
105
+ processedCount: totalItems,
106
+ message: \`Successfully processed \${totalItems} items\`,
107
+ };
108
+ },
109
+ })`)
110
+ .newLine();
111
+ }).forEach(s => s.formatText());
112
+ }
113
+ serviceRef.classDeclaration
114
+ .addMethod({
115
+ name: `trigger${(0, change_case_1.pascalCase)(jobQueueName)}`,
116
+ scope: ts_morph_1.Scope.Public,
117
+ parameters: [{ name: 'ctx', type: 'RequestContext' }],
118
+ statements: writer => {
119
+ writer.write(`return this.${jobQueuePropertyName}.add({
120
+ ctx: ctx.serialize(),
121
+ someArg: 'foo',
122
+ })`);
123
+ },
124
+ })
125
+ .formatText();
126
+ prompts_1.log.success(`New job queue created in ${serviceRef.name}`);
127
+ await project.save();
128
+ return { project, modifiedSourceFiles: [serviceRef.classDeclaration.getSourceFile()], serviceRef };
129
+ }
130
+ //# sourceMappingURL=add-job-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-job-queue.js","sourceRoot":"","sources":["../../../../src/commands/add/job-queue/add-job-queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { CliCommand, CliCommandReturnVal } from '../../../shared/cli-command';
2
+ import { VendurePluginRef } from '../../../shared/vendure-plugin-ref';
3
+ import { GeneratePluginOptions } from './types';
4
+ export declare const createNewPluginCommand: CliCommand<Record<string, any>, CliCommandReturnVal>;
5
+ export declare function createNewPlugin(): Promise<CliCommandReturnVal>;
6
+ export declare function generatePlugin(options: GeneratePluginOptions): Promise<CliCommandReturnVal<{
7
+ plugin: VendurePluginRef;
8
+ }>>;
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.generatePlugin = exports.createNewPlugin = exports.createNewPluginCommand = void 0;
30
+ const prompts_1 = require("@clack/prompts");
31
+ const change_case_1 = require("change-case");
32
+ const fs = __importStar(require("fs-extra"));
33
+ const path_1 = __importDefault(require("path"));
34
+ const cli_command_1 = require("../../../shared/cli-command");
35
+ const vendure_config_ref_1 = require("../../../shared/vendure-config-ref");
36
+ const vendure_plugin_ref_1 = require("../../../shared/vendure-plugin-ref");
37
+ const ast_utils_1 = require("../../../utilities/ast-utils");
38
+ const utils_1 = require("../../../utilities/utils");
39
+ const add_api_extension_1 = require("../api-extension/add-api-extension");
40
+ const add_codegen_1 = require("../codegen/add-codegen");
41
+ const add_entity_1 = require("../entity/add-entity");
42
+ const add_job_queue_1 = require("../job-queue/add-job-queue");
43
+ const add_service_1 = require("../service/add-service");
44
+ const add_ui_extensions_1 = require("../ui-extensions/add-ui-extensions");
45
+ exports.createNewPluginCommand = new cli_command_1.CliCommand({
46
+ id: 'create-new-plugin',
47
+ category: 'Plugin',
48
+ description: 'Create a new Vendure plugin',
49
+ run: createNewPlugin,
50
+ });
51
+ const cancelledMessage = 'Plugin setup cancelled.';
52
+ async function createNewPlugin() {
53
+ var _a;
54
+ const options = { name: '', customEntityName: '', pluginDir: '' };
55
+ (0, prompts_1.intro)('Adding a new Vendure plugin!');
56
+ if (!options.name) {
57
+ const name = await (0, prompts_1.text)({
58
+ message: 'What is the name of the plugin?',
59
+ initialValue: 'my-new-feature',
60
+ validate: input => {
61
+ if (!/^[a-z][a-z-0-9]+$/.test(input)) {
62
+ return 'The plugin name must be lowercase and contain only letters, numbers and dashes';
63
+ }
64
+ },
65
+ });
66
+ if ((0, prompts_1.isCancel)(name)) {
67
+ (0, prompts_1.cancel)(cancelledMessage);
68
+ process.exit(0);
69
+ }
70
+ else {
71
+ options.name = name;
72
+ }
73
+ }
74
+ const pluginDir = getPluginDirName(options.name);
75
+ const confirmation = await (0, prompts_1.text)({
76
+ message: 'Plugin location',
77
+ initialValue: pluginDir,
78
+ placeholder: '',
79
+ validate: input => {
80
+ if (fs.existsSync(input)) {
81
+ return `A directory named "${input}" already exists. Please specify a different directory.`;
82
+ }
83
+ },
84
+ });
85
+ if ((0, prompts_1.isCancel)(confirmation)) {
86
+ (0, prompts_1.cancel)(cancelledMessage);
87
+ process.exit(0);
88
+ }
89
+ options.pluginDir = confirmation;
90
+ const { plugin, project, modifiedSourceFiles } = await generatePlugin(options);
91
+ const configSpinner = (0, prompts_1.spinner)();
92
+ configSpinner.start('Updating VendureConfig...');
93
+ await (0, utils_1.pauseForPromptDisplay)();
94
+ const vendureConfig = new vendure_config_ref_1.VendureConfigRef(project);
95
+ vendureConfig.addToPluginsArray(`${plugin.name}.init({})`);
96
+ (0, ast_utils_1.addImportsToFile)(vendureConfig.sourceFile, {
97
+ moduleSpecifier: plugin.getSourceFile(),
98
+ namedImports: [plugin.name],
99
+ });
100
+ await vendureConfig.sourceFile.getProject().save();
101
+ configSpinner.stop('Updated VendureConfig');
102
+ let done = false;
103
+ const followUpCommands = [
104
+ add_entity_1.addEntityCommand,
105
+ add_service_1.addServiceCommand,
106
+ add_api_extension_1.addApiExtensionCommand,
107
+ add_job_queue_1.addJobQueueCommand,
108
+ add_ui_extensions_1.addUiExtensionsCommand,
109
+ add_codegen_1.addCodegenCommand,
110
+ ];
111
+ let allModifiedSourceFiles = [...modifiedSourceFiles];
112
+ const pluginClassName = plugin.name;
113
+ let workingPlugin = plugin;
114
+ let workingProject = project;
115
+ while (!done) {
116
+ const featureType = await (0, prompts_1.select)({
117
+ message: `Add features to ${options.name}?`,
118
+ options: [
119
+ { value: 'no', label: "[Finish] No, I'm done!" },
120
+ ...followUpCommands.map(c => ({
121
+ value: c.id,
122
+ label: `[${c.category}] ${c.description}`,
123
+ })),
124
+ ],
125
+ });
126
+ if ((0, prompts_1.isCancel)(featureType)) {
127
+ done = true;
128
+ }
129
+ if (featureType === 'no') {
130
+ done = true;
131
+ }
132
+ else {
133
+ const newProject = (0, ast_utils_1.getTsMorphProject)();
134
+ workingProject = newProject;
135
+ const newPlugin = (_a = newProject
136
+ .getSourceFile(workingPlugin.getSourceFile().getFilePath())) === null || _a === void 0 ? void 0 : _a.getClass(pluginClassName);
137
+ if (!newPlugin) {
138
+ throw new Error(`Could not find class "${pluginClassName}" in the new project`);
139
+ }
140
+ workingPlugin = new vendure_plugin_ref_1.VendurePluginRef(newPlugin);
141
+ const command = followUpCommands.find(c => c.id === featureType);
142
+ try {
143
+ const result = await command.run({ plugin: new vendure_plugin_ref_1.VendurePluginRef(newPlugin) });
144
+ allModifiedSourceFiles = result.modifiedSourceFiles;
145
+ for (const sourceFile of allModifiedSourceFiles) {
146
+ sourceFile.organizeImports();
147
+ }
148
+ }
149
+ catch (e) {
150
+ prompts_1.log.error(`Error adding feature "${command.id}"`);
151
+ prompts_1.log.error(e.stack);
152
+ }
153
+ await workingProject.save();
154
+ }
155
+ }
156
+ return {
157
+ project,
158
+ modifiedSourceFiles: [],
159
+ };
160
+ }
161
+ exports.createNewPlugin = createNewPlugin;
162
+ async function generatePlugin(options) {
163
+ var _a, _b;
164
+ const nameWithoutPlugin = options.name.replace(/-?plugin$/i, '');
165
+ const normalizedName = nameWithoutPlugin + '-plugin';
166
+ const templateContext = Object.assign(Object.assign({}, options), { pluginName: (0, change_case_1.pascalCase)(normalizedName), pluginInitOptionsName: (0, change_case_1.constantCase)(normalizedName) + '_OPTIONS' });
167
+ const projectSpinner = (0, prompts_1.spinner)();
168
+ projectSpinner.start('Generating plugin scaffold...');
169
+ await (0, utils_1.pauseForPromptDisplay)();
170
+ const project = (0, ast_utils_1.getTsMorphProject)({ skipAddingFilesFromTsConfig: true });
171
+ const pluginFile = (0, ast_utils_1.createFile)(project, path_1.default.join(__dirname, 'templates/plugin.template.ts'));
172
+ const pluginClass = pluginFile.getClass('TemplatePlugin');
173
+ if (!pluginClass) {
174
+ throw new Error('Could not find the plugin class in the generated file');
175
+ }
176
+ pluginClass.rename(templateContext.pluginName);
177
+ const typesFile = (0, ast_utils_1.createFile)(project, path_1.default.join(__dirname, 'templates/types.template.ts'));
178
+ const constantsFile = (0, ast_utils_1.createFile)(project, path_1.default.join(__dirname, 'templates/constants.template.ts'));
179
+ (_a = constantsFile
180
+ .getVariableDeclaration('TEMPLATE_PLUGIN_OPTIONS')) === null || _a === void 0 ? void 0 : _a.rename(templateContext.pluginInitOptionsName).set({ initializer: `Symbol('${templateContext.pluginInitOptionsName}')` });
181
+ (_b = constantsFile
182
+ .getVariableDeclaration('loggerCtx')) === null || _b === void 0 ? void 0 : _b.set({ initializer: `'${templateContext.pluginName}'` });
183
+ typesFile.move(path_1.default.join(options.pluginDir, 'types.ts'));
184
+ pluginFile.move(path_1.default.join(options.pluginDir, (0, change_case_1.paramCase)(nameWithoutPlugin) + '.plugin.ts'));
185
+ constantsFile.move(path_1.default.join(options.pluginDir, 'constants.ts'));
186
+ projectSpinner.stop('Generated plugin scaffold');
187
+ await project.save();
188
+ return {
189
+ project,
190
+ modifiedSourceFiles: [pluginFile, typesFile, constantsFile],
191
+ plugin: new vendure_plugin_ref_1.VendurePluginRef(pluginClass),
192
+ };
193
+ }
194
+ exports.generatePlugin = generatePlugin;
195
+ function getPluginDirName(name) {
196
+ const cwd = process.cwd();
197
+ const pathParts = cwd.split(path_1.default.sep);
198
+ const currentlyInPluginsDir = pathParts[pathParts.length - 1] === 'plugins';
199
+ const currentlyInRootDir = fs.pathExistsSync(path_1.default.join(cwd, 'package.json'));
200
+ const nameWithoutPlugin = name.replace(/-?plugin$/i, '');
201
+ if (currentlyInPluginsDir) {
202
+ return path_1.default.join(cwd, (0, change_case_1.paramCase)(nameWithoutPlugin));
203
+ }
204
+ if (currentlyInRootDir) {
205
+ return path_1.default.join(cwd, 'src', 'plugins', (0, change_case_1.paramCase)(nameWithoutPlugin));
206
+ }
207
+ return path_1.default.join(cwd, (0, change_case_1.paramCase)(nameWithoutPlugin));
208
+ }
209
+ //# sourceMappingURL=create-new-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-new-plugin.js","sourceRoot":"","sources":["../../../../src/commands/add/plugin/create-new-plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export const TEMPLATE_PLUGIN_OPTIONS = Symbol('TEMPLATE_PLUGIN_OPTIONS');
2
+ export const loggerCtx = 'TemplatePlugin';
@@ -0,0 +1,25 @@
1
+ import { PluginCommonModule, Type, VendurePlugin } from '@vendure/core';
2
+
3
+ import { TEMPLATE_PLUGIN_OPTIONS } from './constants.template';
4
+ import { PluginInitOptions } from './types.template';
5
+
6
+ @VendurePlugin({
7
+ imports: [PluginCommonModule],
8
+ providers: [{ provide: TEMPLATE_PLUGIN_OPTIONS, useFactory: () => TemplatePlugin.options }],
9
+ configuration: config => {
10
+ // Plugin-specific configuration
11
+ // such as custom fields, custom permissions,
12
+ // strategies etc. can be configured here by
13
+ // modifying the `config` object.
14
+ return config;
15
+ },
16
+ compatibility: '^2.0.0',
17
+ })
18
+ export class TemplatePlugin {
19
+ static options: PluginInitOptions;
20
+
21
+ static init(options: PluginInitOptions): Type<TemplatePlugin> {
22
+ this.options = options;
23
+ return TemplatePlugin;
24
+ }
25
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @description
3
+ * The plugin can be configured using the following options:
4
+ */
5
+ export interface PluginInitOptions {
6
+ exampleOption?: string;
7
+ }
@@ -0,0 +1,8 @@
1
+ export interface GeneratePluginOptions {
2
+ name: string;
3
+ pluginDir: string;
4
+ }
5
+ export type NewPluginTemplateContext = GeneratePluginOptions & {
6
+ pluginName: string;
7
+ pluginInitOptionsName: string;
8
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/commands/add/plugin/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { CliCommand, CliCommandReturnVal } from '../../../shared/cli-command';
2
+ import { ServiceRef } from '../../../shared/service-ref';
3
+ export declare const addServiceCommand: CliCommand<Record<string, any>, CliCommandReturnVal<{
4
+ serviceRef: ServiceRef;
5
+ }>>;