@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
@@ -1,3 +0,0 @@
1
- import { NewPluginTemplateContext } from '../../types';
2
- export declare function renderShopResolverWithEntity(context: NewPluginTemplateContext): string;
3
- export declare function renderShopResolver(context: NewPluginTemplateContext): string;
@@ -1,57 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.renderShopResolver = exports.renderShopResolverWithEntity = void 0;
4
- function renderShopResolverWithEntity(context) {
5
- return `
6
- import { Args, Query, Resolver } from '@nestjs/graphql';
7
- import { Ctx, PaginatedList, RequestContext, ListQueryOptions } from '@vendure/core';
8
-
9
- import { ${context.service.className} } from '../services/${context.service.fileName}';
10
- import { ${context.entity.className} } from '../entities/${context.entity.fileName}';
11
-
12
- @Resolver()
13
- export class ShopResolver {
14
- constructor(private ${context.service.instanceName}: ${context.service.className}) {
15
- }
16
-
17
- @Query()
18
- ${context.entity.instanceName}s(
19
- @Ctx() ctx: RequestContext,
20
- @Args() args: { options: ListQueryOptions<${context.customEntityName}> },
21
- ): Promise<PaginatedList<${context.customEntityName}>> {
22
- return this.${context.service.instanceName}.findAll(ctx, args.options || undefined);
23
- }
24
-
25
- @Query()
26
- ${context.entity.instanceName}(@Ctx() ctx: RequestContext, @Args() args: { id: string }): Promise<${context.customEntityName} | null> {
27
- return this.${context.service.instanceName}.findOne(ctx, args.id);
28
- }
29
- }`;
30
- }
31
- exports.renderShopResolverWithEntity = renderShopResolverWithEntity;
32
- function renderShopResolver(context) {
33
- return `
34
- import { Args, Query, Mutation, Resolver } from '@nestjs/graphql';
35
- import { Ctx, PaginatedList, RequestContext, Transaction } from '@vendure/core';
36
-
37
- import { ${context.service.className} } from '../services/${context.service.fileName}';
38
-
39
- @Resolver()
40
- export class ShopResolver {
41
- constructor(private ${context.service.instanceName}: ${context.service.className}) {
42
- }
43
-
44
- @Query()
45
- exampleShopQuery(@Ctx() ctx: RequestContext) {
46
- return this.${context.service.instanceName}.exampleMethod(ctx);
47
- }
48
-
49
- @Mutation()
50
- @Transaction()
51
- exampleShopMutation(@Ctx() ctx: RequestContext, @Args() args: { input: string }) {
52
- return this.${context.service.instanceName}.exampleMethod(ctx, args);
53
- }
54
- }`;
55
- }
56
- exports.renderShopResolver = renderShopResolver;
57
- //# sourceMappingURL=shop.resolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shop.resolver.js","sourceRoot":"","sources":["../../../../../../src/commands/new/plugin/scaffold/api/shop.resolver.ts"],"names":[],"mappings":";;;AAEA,SAAgB,4BAA4B,CAAC,OAAiC;IAC1E,OAAiC;;;;WAI1B,OAAO,CAAC,OAAO,CAAC,SAAS,wBAAwB,OAAO,CAAC,OAAO,CAAC,QAAQ;WACzE,OAAO,CAAC,MAAM,CAAC,SAAS,wBAAwB,OAAO,CAAC,MAAM,CAAC,QAAQ;;;;0BAIxD,OAAO,CAAC,OAAO,CAAC,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,SAAS;;;;MAI9E,OAAO,CAAC,MAAM,CAAC,YAAY;;oDAEmB,OAAO,CAAC,gBAAgB;+BAC7C,OAAO,CAAC,gBAAgB;sBACjC,OAAO,CAAC,OAAO,CAAC,YAAY;;;;MAI5C,OAAO,CAAC,MAAM,CAAC,YAAY,uEAAuE,OAAO,CAAC,gBAAgB;sBAC1G,OAAO,CAAC,OAAO,CAAC,YAAY;;EAEhD,CAAC;AACH,CAAC;AA1BD,oEA0BC;AAED,SAAgB,kBAAkB,CAAC,OAAiC;IAChE,OAAiC;;;;WAI1B,OAAO,CAAC,OAAO,CAAC,SAAS,wBAAwB,OAAO,CAAC,OAAO,CAAC,QAAQ;;;;0BAI1D,OAAO,CAAC,OAAO,CAAC,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,SAAS;;;;;sBAK9D,OAAO,CAAC,OAAO,CAAC,YAAY;;;;;;sBAM5B,OAAO,CAAC,OAAO,CAAC,YAAY;;EAEhD,CAAC;AACH,CAAC;AAvBD,gDAuBC"}
@@ -1,2 +0,0 @@
1
- import { NewPluginTemplateContext } from '../types';
2
- export declare function renderConstants(context: NewPluginTemplateContext): string;
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.renderConstants = void 0;
4
- function renderConstants(context) {
5
- const { pluginName, pluginInitOptionsName } = context;
6
- const optionalImports = [];
7
- const optionalStatements = [];
8
- if (context.withCustomEntity) {
9
- optionalImports.push(`import { CrudPermissionDefinition } from '@vendure/core';`);
10
- optionalStatements.push(`export const ${context.entity.instanceName}Permission = new CrudPermissionDefinition('${context.entity.className}');`);
11
- }
12
- return `
13
- ${optionalImports.join('\n')}
14
-
15
- export const ${pluginInitOptionsName} = Symbol('${pluginInitOptionsName}');
16
- export const loggerCtx = '${pluginName}';
17
- ${optionalStatements.join('\n')}
18
- `;
19
- }
20
- exports.renderConstants = renderConstants;
21
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/commands/new/plugin/scaffold/constants.ts"],"names":[],"mappings":";;;AAIA,SAAgB,eAAe,CAAC,OAAiC;IAC7D,MAAM,EAAE,UAAU,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC;IACtD,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,MAAM,kBAAkB,GAAa,EAAE,CAAC;IACxC,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC3B,eAAe,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;QAClF,kBAAkB,CAAC,IAAI,CACnB,gBAAgB,OAAO,CAAC,MAAM,CAAC,YAAY,8CAA8C,OAAO,CAAC,MAAM,CAAC,SAAS,KAAK,CACzH,CAAC;IACN,CAAC;IACD,OAAiC;EACnC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;eAEb,qBAAqB,cAAc,qBAAqB;4BAC3C,UAAU;EACpC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;CAC9B,CAAC;AACF,CAAC;AAjBD,0CAiBC"}
@@ -1,2 +0,0 @@
1
- import { NewPluginTemplateContext } from '../types';
2
- export declare function renderPlugin(context: NewPluginTemplateContext): string;
@@ -1,51 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.renderPlugin = void 0;
4
- function renderPlugin(context) {
5
- const { pluginName, pluginInitOptionsName } = context;
6
- const optionalImports = [];
7
- const optionalMetadata = [];
8
- if (context.withCustomEntity) {
9
- optionalImports.push(`import { ${context.entity.className} } from './entities/${context.entity.fileName}';`);
10
- optionalMetadata.push(`entities: [${context.entity.className}],`);
11
- }
12
- else {
13
- optionalMetadata.push(`entities: [],`);
14
- }
15
- if (context.withApiExtensions) {
16
- optionalImports.push(`import { shopApiExtensions, adminApiExtensions } from './api/api-extensions';`);
17
- optionalImports.push(`import { ShopResolver } from './api/shop.resolver';`);
18
- optionalImports.push(`import { AdminResolver } from './api/admin.resolver';`);
19
- optionalMetadata.push(`shopApiExtensions: { resolvers: [ShopResolver], schema: shopApiExtensions },`);
20
- optionalMetadata.push(`adminApiExtensions: { resolvers: [AdminResolver], schema: adminApiExtensions },`);
21
- }
22
- return `
23
- import { PluginCommonModule, Type, VendurePlugin } from '@vendure/core';
24
- import path from 'path';
25
-
26
- import { ${context.service.className} } from './services/${context.service.fileName}';
27
- import { ${pluginInitOptionsName} } from './constants';
28
- import { PluginInitOptions } from './types';
29
- ${optionalImports.join('\n')}
30
-
31
- @VendurePlugin({
32
- imports: [PluginCommonModule],
33
- ${optionalMetadata.join('\n ')}
34
- providers: [
35
- ${context.service.className},
36
- { provide: ${pluginInitOptionsName}, useFactory: () => ${pluginName}.options },
37
- ],
38
- compatibility: '^2.0.0',
39
- })
40
- export class ${pluginName} {
41
- static options: PluginInitOptions;
42
-
43
- static init(options: PluginInitOptions): Type<${pluginName}> {
44
- this.options = options;
45
- return ${pluginName};
46
- }
47
- }
48
- `;
49
- }
50
- exports.renderPlugin = renderPlugin;
51
- //# sourceMappingURL=plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../../../src/commands/new/plugin/scaffold/plugin.ts"],"names":[],"mappings":";;;AAIA,SAAgB,YAAY,CAAC,OAAiC;IAC1D,MAAM,EAAE,UAAU,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC;IACtD,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC3B,eAAe,CAAC,IAAI,CAChB,YAAY,OAAO,CAAC,MAAM,CAAC,SAAS,uBAAuB,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,CACzF,CAAC;QACF,gBAAgB,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;IACtE,CAAC;SAAM,CAAC;QACJ,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC5B,eAAe,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;QACtG,eAAe,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QAC5E,eAAe,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;QAC9E,gBAAgB,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;QACtG,gBAAgB,CAAC,IAAI,CACjB,iFAAiF,CACpF,CAAC;IACN,CAAC;IAED,OAAiC;;;;WAI1B,OAAO,CAAC,OAAO,CAAC,SAAS,uBAAuB,OAAO,CAAC,OAAO,CAAC,QAAQ;WACxE,qBAAqB;;EAE9B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;;;MAItB,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;;UAE3B,OAAO,CAAC,OAAO,CAAC,SAAS;qBACd,qBAAqB,uBAAuB,UAAU;;;;eAI5D,UAAU;;;oDAG2B,UAAU;;iBAE7C,UAAU;;;CAG1B,CAAC;AACF,CAAC;AAjDD,oCAiDC"}
@@ -1,3 +0,0 @@
1
- import { NewPluginTemplateContext } from '../../types';
2
- export declare function renderService(context: NewPluginTemplateContext): string;
3
- export declare function renderServiceWithEntity(context: NewPluginTemplateContext): string;
@@ -1,80 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.renderServiceWithEntity = exports.renderService = void 0;
4
- function renderService(context) {
5
- return `
6
- import { Inject, Injectable } from '@nestjs/common';
7
- import { RequestContext, TransactionalConnection, patchEntity } from '@vendure/core';
8
-
9
- import { ${context.pluginInitOptionsName} } from '../constants';
10
- import { PluginInitOptions } from '../types';
11
-
12
- @Injectable()
13
- export class ${context.service.className} {
14
- constructor(
15
- private connection: TransactionalConnection,
16
- @Inject(${context.pluginInitOptionsName}) private options: PluginInitOptions,
17
- ) {}
18
-
19
- async exampleMethod(
20
- ctx: RequestContext,
21
- options?: { input?: string },
22
- ): Promise<string> {
23
- return options?.input ? 'Hello \${options.input}' : 'Hello World';
24
- }
25
- }
26
- `;
27
- }
28
- exports.renderService = renderService;
29
- function renderServiceWithEntity(context) {
30
- return `
31
- import { Inject, Injectable } from '@nestjs/common';
32
- import { ListQueryBuilder, ListQueryOptions, PaginatedList, RequestContext, TransactionalConnection } from '@vendure/core';
33
-
34
- import { ${context.customEntityName} } from '../entities/${context.entity.fileName}';
35
- import { ${context.pluginInitOptionsName} } from '../constants';
36
- import { PluginInitOptions } from '../types';
37
-
38
- // TODO: Set up graphql-code-generator to generate the types for the following inputs
39
- type Create${context.customEntityName}Input = any;
40
- type Update${context.customEntityName}Input = any;
41
-
42
- @Injectable()
43
- export class ${context.service.className} {
44
- constructor(
45
- private connection: TransactionalConnection,
46
- @Inject(${context.pluginInitOptionsName}) private options: PluginInitOptions,
47
- private listQueryBuilder: ListQueryBuilder,
48
- ) {}
49
-
50
- async findAll(
51
- ctx: RequestContext,
52
- options?: ListQueryOptions<${context.customEntityName}>,
53
- ): Promise<PaginatedList<${context.customEntityName}>> {
54
- return this.listQueryBuilder
55
- .build(${context.customEntityName}, options, { ctx })
56
- .getManyAndCount()
57
- .then(([items, totalItems]) => ({
58
- items,
59
- totalItems,
60
- }));
61
- }
62
-
63
- async findOne(ctx: RequestContext, id: string): Promise<${context.customEntityName} | null> {
64
- return this.connection.getRepository(ctx, ${context.customEntityName}).findOne({ where: { id } });
65
- }
66
-
67
- async create(ctx: RequestContext, input: Create${context.customEntityName}Input): Promise<${context.customEntityName}> {
68
- return this.connection.getRepository(ctx, ${context.customEntityName}).save(new ${context.customEntityName}(input));
69
- }
70
-
71
- async update(ctx: RequestContext, input: Update${context.customEntityName}Input): Promise<${context.customEntityName}> {
72
- const example = await this.connection.getEntityOrThrow(ctx, ${context.customEntityName}, input.id);
73
- const updated = patchEntity(example, input);
74
- return this.connection.getRepository(ctx, ${context.customEntityName}).save(updated);
75
- }
76
- }
77
- `;
78
- }
79
- exports.renderServiceWithEntity = renderServiceWithEntity;
80
- //# sourceMappingURL=service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../../../../src/commands/new/plugin/scaffold/services/service.ts"],"names":[],"mappings":";;;AAIA,SAAgB,aAAa,CAAC,OAAiC;IAC3D,OAAiC;;;;WAI1B,OAAO,CAAC,qBAAqB;;;;eAIzB,OAAO,CAAC,OAAO,CAAC,SAAS;;;kBAGtB,OAAO,CAAC,qBAAqB;;;;;;;;;;CAU9C,CAAC;AACF,CAAC;AAvBD,sCAuBC;AAED,SAAgB,uBAAuB,CAAC,OAAiC;IACrE,OAAiC;;;;WAI1B,OAAO,CAAC,gBAAgB,wBAAwB,OAAO,CAAC,MAAM,CAAC,QAAQ;WACvE,OAAO,CAAC,qBAAqB;;;;aAI3B,OAAO,CAAC,gBAAgB;aACxB,OAAO,CAAC,gBAAgB;;;eAGtB,OAAO,CAAC,OAAO,CAAC,SAAS;;;kBAGtB,OAAO,CAAC,qBAAqB;;;;;;qCAMV,OAAO,CAAC,gBAAgB;+BAC9B,OAAO,CAAC,gBAAgB;;qBAElC,OAAO,CAAC,gBAAgB;;;;;;;;8DAQiB,OAAO,CAAC,gBAAgB;oDAClC,OAAO,CAAC,gBAAgB;;;qDAGvB,OAAO,CAAC,gBAAgB,mBAAmB,OAAO,CAAC,gBAAgB;oDACpE,OAAO,CAAC,gBAAgB,cAAc,OAAO,CAAC,gBAAgB;;;qDAG7D,OAAO,CAAC,gBAAgB,mBAAmB,OAAO,CAAC,gBAAgB;sEAClD,OAAO,CAAC,gBAAgB;;oDAE1C,OAAO,CAAC,gBAAgB;;;CAG3E,CAAC;AACF,CAAC;AAjDD,0DAiDC"}
@@ -1,2 +0,0 @@
1
- import { NewPluginTemplateContext } from '../types';
2
- export declare function renderTypes(options: NewPluginTemplateContext): string;
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.renderTypes = void 0;
4
- function renderTypes(options) {
5
- return `
6
- /**
7
- * The plugin can be configured using the following options:
8
- */
9
- export interface PluginInitOptions {
10
- exampleOption: string;
11
- }
12
- `;
13
- }
14
- exports.renderTypes = renderTypes;
15
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/commands/new/plugin/scaffold/types.ts"],"names":[],"mappings":";;;AAEA,SAAgB,WAAW,CAAC,OAAiC;IACzD,OAAiC;;;;;;;CAOpC,CAAC;AACF,CAAC;AATD,kCASC"}
@@ -1,22 +0,0 @@
1
- export interface GeneratePluginOptions {
2
- name: string;
3
- withCustomEntity: boolean;
4
- withApiExtensions: boolean;
5
- withAdminUi: boolean;
6
- customEntityName: string;
7
- pluginDir: string;
8
- }
9
- export type NewPluginTemplateContext = GeneratePluginOptions & {
10
- pluginName: string;
11
- pluginInitOptionsName: string;
12
- service: {
13
- instanceName: string;
14
- className: string;
15
- fileName: string;
16
- };
17
- entity: {
18
- instanceName: string;
19
- className: string;
20
- fileName: string;
21
- };
22
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/commands/new/plugin/types.ts"],"names":[],"mappings":""}
@@ -1,5 +0,0 @@
1
- export declare function renderEntity<T extends {
2
- entity: {
3
- className: string;
4
- };
5
- }>(context: T): string;
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.renderEntity = void 0;
4
- function renderEntity(context) {
5
- return `
6
- import { Entity, Column } from 'typeorm';
7
- import { VendureEntity, DeepPartial, HasCustomFields } from '@vendure/core';
8
-
9
- export class ${context.entity.className}CustomFields {}
10
-
11
- @Entity()
12
- export class ${context.entity.className} extends VendureEntity implements HasCustomFields {
13
- constructor(input?: DeepPartial<${context.entity.className}>) {
14
- super(input);
15
- }
16
-
17
- @Column()
18
- name: string;
19
-
20
- @Column(type => ${context.entity.className}CustomFields)
21
- customFields: ${context.entity.className}CustomFields;
22
- }
23
- `;
24
- }
25
- exports.renderEntity = renderEntity;
26
- //# sourceMappingURL=entity.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../../src/shared/shared-scaffold/entity.ts"],"names":[],"mappings":";;;AAAA,SAAgB,YAAY,CAA8C,OAAU;IAChF,OAAiC;;;;eAItB,OAAO,CAAC,MAAM,CAAC,SAAS;;;eAGxB,OAAO,CAAC,MAAM,CAAC,SAAS;sCACD,OAAO,CAAC,MAAM,CAAC,SAAS;;;;;;;sBAOxC,OAAO,CAAC,MAAM,CAAC,SAAS;oBAC1B,OAAO,CAAC,MAAM,CAAC,SAAS;;CAE3C,CAAC;AACF,CAAC;AApBD,oCAoBC"}
@@ -1,8 +0,0 @@
1
- export interface PackageToInstall {
2
- pkg: string;
3
- version?: string;
4
- isDevDependency?: boolean;
5
- }
6
- export declare function determineVendureVersion(): string | undefined;
7
- export declare function installRequiredPackages(requiredPackages: PackageToInstall[]): Promise<void>;
8
- export declare function installPackages(dependencies: string[], isDev: boolean): Promise<void>;
@@ -1,96 +0,0 @@
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.installPackages = exports.installRequiredPackages = exports.determineVendureVersion = void 0;
7
- const prompts_1 = require("@clack/prompts");
8
- const cross_spawn_1 = __importDefault(require("cross-spawn"));
9
- const fs_extra_1 = __importDefault(require("fs-extra"));
10
- const path_1 = __importDefault(require("path"));
11
- function determineVendureVersion() {
12
- const packageJson = getPackageJsonContent();
13
- return packageJson.dependencies['@vendure/core'];
14
- }
15
- exports.determineVendureVersion = determineVendureVersion;
16
- async function installRequiredPackages(requiredPackages) {
17
- const packageJson = getPackageJsonContent();
18
- const packagesToInstall = requiredPackages.filter(({ pkg, version, isDevDependency }) => {
19
- const hasDependency = isDevDependency
20
- ? packageJson.devDependencies[pkg]
21
- : packageJson.dependencies[pkg];
22
- return !hasDependency;
23
- });
24
- const depsToInstall = packagesToInstall
25
- .filter(p => !p.isDevDependency)
26
- .map(p => `${p.pkg}${p.version ? `@${p.version}` : ''}`);
27
- const devDepsToInstall = packagesToInstall
28
- .filter(p => p.isDevDependency)
29
- .map(p => `${p.pkg}${p.version ? `@${p.version}` : ''}`);
30
- if (depsToInstall.length) {
31
- await installPackages(depsToInstall, false);
32
- }
33
- if (devDepsToInstall.length) {
34
- await installPackages(devDepsToInstall, true);
35
- }
36
- }
37
- exports.installRequiredPackages = installRequiredPackages;
38
- async function installPackages(dependencies, isDev) {
39
- return new Promise((resolve, reject) => {
40
- const packageManager = determinePackageManagerBasedOnLockFile();
41
- let command = '';
42
- let args = [];
43
- if (packageManager === 'yarn') {
44
- command = 'yarnpkg';
45
- args = ['add', '--exact', '--ignore-engines'];
46
- if (isDev) {
47
- args.push('--dev');
48
- }
49
- args = args.concat(dependencies);
50
- }
51
- else {
52
- command = 'npm';
53
- args = ['install', '--save', '--save-exact', '--loglevel', 'error'].concat(dependencies);
54
- if (isDev) {
55
- args.push('--save-dev');
56
- }
57
- }
58
- const child = (0, cross_spawn_1.default)(command, args, { stdio: 'ignore' });
59
- child.on('close', code => {
60
- if (code !== 0) {
61
- const message = 'An error occurred when installing dependencies.';
62
- reject({
63
- message,
64
- command: `${command} ${args.join(' ')}`,
65
- });
66
- return;
67
- }
68
- resolve();
69
- });
70
- });
71
- }
72
- exports.installPackages = installPackages;
73
- function determinePackageManagerBasedOnLockFile() {
74
- const yarnLockPath = path_1.default.join(process.cwd(), 'yarn.lock');
75
- const npmLockPath = path_1.default.join(process.cwd(), 'package-lock.json');
76
- const pnpmLockPath = path_1.default.join(process.cwd(), 'pnpm-lock.yaml');
77
- if (fs_extra_1.default.existsSync(yarnLockPath)) {
78
- return 'yarn';
79
- }
80
- if (fs_extra_1.default.existsSync(npmLockPath)) {
81
- return 'npm';
82
- }
83
- if (fs_extra_1.default.existsSync(pnpmLockPath)) {
84
- return 'pnpm';
85
- }
86
- return 'npm';
87
- }
88
- function getPackageJsonContent() {
89
- const packageJsonPath = path_1.default.join(process.cwd(), 'package.json');
90
- if (!fs_extra_1.default.existsSync(packageJsonPath)) {
91
- (0, prompts_1.note)(`Could not find a package.json in the current directory. Please run this command from the root of a Vendure project.`);
92
- return false;
93
- }
94
- return fs_extra_1.default.readJsonSync(packageJsonPath);
95
- }
96
- //# sourceMappingURL=package-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-utils.js","sourceRoot":"","sources":["../../src/utilities/package-utils.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- export declare class Scaffolder<TemplateContext = Record<string, any>> {
2
- private files;
3
- addFile(render: (context: TemplateContext) => string, filePath: string): void;
4
- createScaffold(options: {
5
- dir: string;
6
- context: TemplateContext;
7
- }): void;
8
- }
@@ -1,50 +0,0 @@
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.Scaffolder = void 0;
30
- const fs = __importStar(require("fs-extra"));
31
- const path_1 = __importDefault(require("path"));
32
- class Scaffolder {
33
- constructor() {
34
- this.files = [];
35
- }
36
- addFile(render, filePath) {
37
- this.files.push({ render, path: filePath });
38
- }
39
- createScaffold(options) {
40
- fs.ensureDirSync(options.dir);
41
- this.files.forEach(file => {
42
- const filePath = path_1.default.join(options.dir, file.path);
43
- const rendered = file.render(options.context).trim();
44
- fs.ensureFileSync(filePath);
45
- fs.writeFileSync(filePath, rendered);
46
- });
47
- }
48
- }
49
- exports.Scaffolder = Scaffolder;
50
- //# sourceMappingURL=scaffolder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scaffolder.js","sourceRoot":"","sources":["../../src/utilities/scaffolder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,gDAAwB;AAExB,MAAa,UAAU;IAAvB;QACY,UAAK,GAA0E,EAAE,CAAC;IAe9F,CAAC;IAbG,OAAO,CAAC,MAA4C,EAAE,QAAgB;QAClE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,cAAc,CAAC,OAAkD;QAC7D,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACtB,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACrD,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC5B,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAhBD,gCAgBC"}
File without changes