@rxap/schematic-nestjs 0.0.2-dev.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 (165) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/GETSTARTED.md +0 -0
  3. package/GUIDES.md +0 -0
  4. package/README.md +21 -0
  5. package/collection.json +74 -0
  6. package/package.json +67 -0
  7. package/src/index.d.ts +1 -0
  8. package/src/index.js +3 -0
  9. package/src/index.js.map +1 -0
  10. package/src/schematics/crud/index.d.ts +3 -0
  11. package/src/schematics/crud/index.js +49 -0
  12. package/src/schematics/crud/index.js.map +1 -0
  13. package/src/schematics/crud/schema.d.ts +7 -0
  14. package/src/schematics/crud/schema.js +3 -0
  15. package/src/schematics/crud/schema.js.map +1 -0
  16. package/src/schematics/crud/schema.json +17 -0
  17. package/src/schematics/crud-init/index.d.ts +3 -0
  18. package/src/schematics/crud-init/index.js +14 -0
  19. package/src/schematics/crud-init/index.js.map +1 -0
  20. package/src/schematics/crud-init/schema.d.ts +4 -0
  21. package/src/schematics/crud-init/schema.js +3 -0
  22. package/src/schematics/crud-init/schema.js.map +1 -0
  23. package/src/schematics/crud-init/schema.json +18 -0
  24. package/src/schematics/crud-service/add-module-export.d.ts +4 -0
  25. package/src/schematics/crud-service/add-module-export.js +29 -0
  26. package/src/schematics/crud-service/add-module-export.js.map +1 -0
  27. package/src/schematics/crud-service/add-module-provider.d.ts +4 -0
  28. package/src/schematics/crud-service/add-module-provider.js +29 -0
  29. package/src/schematics/crud-service/add-module-provider.js.map +1 -0
  30. package/src/schematics/crud-service/coerce-class-method.d.ts +2 -0
  31. package/src/schematics/crud-service/coerce-class-method.js +10 -0
  32. package/src/schematics/crud-service/coerce-class-method.js.map +1 -0
  33. package/src/schematics/crud-service/coerce-class-property.d.ts +2 -0
  34. package/src/schematics/crud-service/coerce-class-property.js +10 -0
  35. package/src/schematics/crud-service/coerce-class-property.js.map +1 -0
  36. package/src/schematics/crud-service/coerce-collection-enum.d.ts +4 -0
  37. package/src/schematics/crud-service/coerce-collection-enum.js +29 -0
  38. package/src/schematics/crud-service/coerce-collection-enum.js.map +1 -0
  39. package/src/schematics/crud-service/coerce-module-class.d.ts +2 -0
  40. package/src/schematics/crud-service/coerce-module-class.js +32 -0
  41. package/src/schematics/crud-service/coerce-module-class.js.map +1 -0
  42. package/src/schematics/crud-service/coerce-source-file-rule.d.ts +11 -0
  43. package/src/schematics/crud-service/coerce-source-file-rule.js +29 -0
  44. package/src/schematics/crud-service/coerce-source-file-rule.js.map +1 -0
  45. package/src/schematics/crud-service/crud-class/create-method.d.ts +3 -0
  46. package/src/schematics/crud-service/crud-class/create-method.js +69 -0
  47. package/src/schematics/crud-service/crud-class/create-method.js.map +1 -0
  48. package/src/schematics/crud-service/crud-class/delete-method.d.ts +3 -0
  49. package/src/schematics/crud-service/crud-class/delete-method.js +46 -0
  50. package/src/schematics/crud-service/crud-class/delete-method.js.map +1 -0
  51. package/src/schematics/crud-service/crud-class/exists-method.d.ts +3 -0
  52. package/src/schematics/crud-service/crud-class/exists-method.js +46 -0
  53. package/src/schematics/crud-service/crud-class/exists-method.js.map +1 -0
  54. package/src/schematics/crud-service/crud-class/find-in-group-method.d.ts +3 -0
  55. package/src/schematics/crud-service/crud-class/find-in-group-method.js +37 -0
  56. package/src/schematics/crud-service/crud-class/find-in-group-method.js.map +1 -0
  57. package/src/schematics/crud-service/crud-class/find-method.d.ts +3 -0
  58. package/src/schematics/crud-service/crud-class/find-method.js +46 -0
  59. package/src/schematics/crud-service/crud-class/find-method.js.map +1 -0
  60. package/src/schematics/crud-service/crud-class/get-method.d.ts +3 -0
  61. package/src/schematics/crud-service/crud-class/get-method.js +52 -0
  62. package/src/schematics/crud-service/crud-class/get-method.js.map +1 -0
  63. package/src/schematics/crud-service/crud-class/update-field-method.d.ts +3 -0
  64. package/src/schematics/crud-service/crud-class/update-field-method.js +68 -0
  65. package/src/schematics/crud-service/crud-class/update-field-method.js.map +1 -0
  66. package/src/schematics/crud-service/crud-class/update-method.d.ts +3 -0
  67. package/src/schematics/crud-service/crud-class/update-method.js +59 -0
  68. package/src/schematics/crud-service/crud-class/update-method.js.map +1 -0
  69. package/src/schematics/crud-service/crud-class.d.ts +3 -0
  70. package/src/schematics/crud-service/crud-class.js +125 -0
  71. package/src/schematics/crud-service/crud-class.js.map +1 -0
  72. package/src/schematics/crud-service/dto-class/create-dto-class.d.ts +3 -0
  73. package/src/schematics/crud-service/dto-class/create-dto-class.js +26 -0
  74. package/src/schematics/crud-service/dto-class/create-dto-class.js.map +1 -0
  75. package/src/schematics/crud-service/dto-class/dto-class.d.ts +3 -0
  76. package/src/schematics/crud-service/dto-class/dto-class.js +133 -0
  77. package/src/schematics/crud-service/dto-class/dto-class.js.map +1 -0
  78. package/src/schematics/crud-service/dto-class/update-dto-class.d.ts +3 -0
  79. package/src/schematics/crud-service/dto-class/update-dto-class.js +28 -0
  80. package/src/schematics/crud-service/dto-class/update-dto-class.js.map +1 -0
  81. package/src/schematics/crud-service/index.d.ts +3 -0
  82. package/src/schematics/crud-service/index.js +215 -0
  83. package/src/schematics/crud-service/index.js.map +1 -0
  84. package/src/schematics/crud-service/options.d.ts +11 -0
  85. package/src/schematics/crud-service/options.js +3 -0
  86. package/src/schematics/crud-service/options.js.map +1 -0
  87. package/src/schematics/crud-service/schema.d.ts +53 -0
  88. package/src/schematics/crud-service/schema.js +3 -0
  89. package/src/schematics/crud-service/schema.js.map +1 -0
  90. package/src/schematics/crud-service/schema.json +57 -0
  91. package/src/schematics/feature-microservice/index.d.ts +11 -0
  92. package/src/schematics/feature-microservice/index.js +65 -0
  93. package/src/schematics/feature-microservice/index.js.map +1 -0
  94. package/src/schematics/feature-microservice/schema.d.ts +15 -0
  95. package/src/schematics/feature-microservice/schema.json +69 -0
  96. package/src/schematics/frontend-microservice/index.d.ts +11 -0
  97. package/src/schematics/frontend-microservice/index.js +61 -0
  98. package/src/schematics/frontend-microservice/index.js.map +1 -0
  99. package/src/schematics/frontend-microservice/schema.d.ts +16 -0
  100. package/src/schematics/frontend-microservice/schema.json +75 -0
  101. package/src/schematics/health-indicator/add-health-endpoint.d.ts +2 -0
  102. package/src/schematics/health-indicator/add-health-endpoint.js +58 -0
  103. package/src/schematics/health-indicator/add-health-endpoint.js.map +1 -0
  104. package/src/schematics/health-indicator/add-health-indicator.d.ts +2 -0
  105. package/src/schematics/health-indicator/add-health-indicator.js +61 -0
  106. package/src/schematics/health-indicator/add-health-indicator.js.map +1 -0
  107. package/src/schematics/health-indicator/add-to-global-health-endpoint.d.ts +2 -0
  108. package/src/schematics/health-indicator/add-to-global-health-endpoint.js +54 -0
  109. package/src/schematics/health-indicator/add-to-global-health-endpoint.js.map +1 -0
  110. package/src/schematics/health-indicator/coerce-health-controller.d.ts +2 -0
  111. package/src/schematics/health-indicator/coerce-health-controller.js +25 -0
  112. package/src/schematics/health-indicator/coerce-health-controller.js.map +1 -0
  113. package/src/schematics/health-indicator/coerce-health-module.d.ts +2 -0
  114. package/src/schematics/health-indicator/coerce-health-module.js +48 -0
  115. package/src/schematics/health-indicator/coerce-health-module.js.map +1 -0
  116. package/src/schematics/health-indicator/index.d.ts +3 -0
  117. package/src/schematics/health-indicator/index.js +29 -0
  118. package/src/schematics/health-indicator/index.js.map +1 -0
  119. package/src/schematics/health-indicator/schema.d.ts +4 -0
  120. package/src/schematics/health-indicator/schema.json +29 -0
  121. package/src/schematics/health-indicator-init/index.d.ts +3 -0
  122. package/src/schematics/health-indicator-init/index.js +23 -0
  123. package/src/schematics/health-indicator-init/index.js.map +1 -0
  124. package/src/schematics/health-indicator-init/schema.d.ts +3 -0
  125. package/src/schematics/health-indicator-init/schema.json +19 -0
  126. package/src/schematics/init/files/Dockerfile.template +24 -0
  127. package/src/schematics/init/files/healthcheck.js.template +35 -0
  128. package/src/schematics/init/files/main.ts.template +77 -0
  129. package/src/schematics/init/index.d.ts +6 -0
  130. package/src/schematics/init/index.js +463 -0
  131. package/src/schematics/init/index.js.map +1 -0
  132. package/src/schematics/init/schema.d.ts +23 -0
  133. package/src/schematics/init/schema.json +103 -0
  134. package/src/schematics/jwt/index.d.ts +2 -0
  135. package/src/schematics/jwt/index.js +46 -0
  136. package/src/schematics/jwt/index.js.map +1 -0
  137. package/src/schematics/jwt/schema.d.ts +3 -0
  138. package/src/schematics/jwt/schema.json +15 -0
  139. package/src/schematics/microservice/index.d.ts +12 -0
  140. package/src/schematics/microservice/index.js +117 -0
  141. package/src/schematics/microservice/index.js.map +1 -0
  142. package/src/schematics/microservice/schema.d.ts +15 -0
  143. package/src/schematics/microservice/schema.json +69 -0
  144. package/src/schematics/open-api/index.d.ts +2 -0
  145. package/src/schematics/open-api/index.js +39 -0
  146. package/src/schematics/open-api/index.js.map +1 -0
  147. package/src/schematics/open-api/schema.d.ts +3 -0
  148. package/src/schematics/open-api/schema.json +15 -0
  149. package/src/schematics/sentry/index.d.ts +3 -0
  150. package/src/schematics/sentry/index.js +129 -0
  151. package/src/schematics/sentry/index.js.map +1 -0
  152. package/src/schematics/sentry/schema.d.ts +5 -0
  153. package/src/schematics/sentry/schema.json +27 -0
  154. package/src/schematics/swagger/files/environments/environment.swagger.ts.template +7 -0
  155. package/src/schematics/swagger/files/swagger.ts.template +19 -0
  156. package/src/schematics/swagger/index.d.ts +3 -0
  157. package/src/schematics/swagger/index.js +88 -0
  158. package/src/schematics/swagger/index.js.map +1 -0
  159. package/src/schematics/swagger/schema.d.ts +4 -0
  160. package/src/schematics/swagger/schema.json +19 -0
  161. package/src/schematics/validator/index.d.ts +3 -0
  162. package/src/schematics/validator/index.js +15 -0
  163. package/src/schematics/validator/index.js.map +1 -0
  164. package/src/schematics/validator/schema.d.ts +3 -0
  165. package/src/schematics/validator/schema.json +19 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/schematic/nestjs/src/schematics/jwt/index.ts"],"names":[],"mappings":";;AAAA,2DAAmD;AACnD,mEAKmC;AACnC,qEAGoC;AACpC,uCAAmC;AAGnC,mBAAyB,OAA2B;IAClD,OAAO,GAAG,EAAE;QACV,OAAO,IAAA,kBAAK,EAAC;YACX,IAAA,sCAAgB,EAAC;gBACf,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,KAAK;gBACX,gBAAgB,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE;oBAClC,IAAA,2CAAqB,EAAC,UAAU,EAAE,kBAAkB,EAAE;wBACpD;4BACE,YAAY,EAAE,CAAE,kBAAkB,CAAE;4BACpC,eAAe,EAAE,gBAAgB;yBAClC;qBACF,CAAC,CAAC;oBACH,IAAA,yCAAmB,EACjB,UAAU,EACV,WAAW,EACX;wBACE;4BACE,YAAY,EAAE,CAAE,WAAW,CAAE;4BAC7B,eAAe,EAAE,aAAa;yBAC/B;qBACF,EACD,CAAC,CAAC,EAAE;wBACF,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;wBACxC,kBAAO,CAAC,MAAM,CAAC;4BACb,MAAM,EAAE,mBAAmB;4BAC3B,UAAU,EAAE,iCAAiC;yBAC9C,CAAC,CAAC,CAAC,CAAC,CAAC;wBACN,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACf,CAAC,CACF,CAAC;oBACF,IAAA,mCAAa,EAAC,UAAU,EAAE;wBACxB,eAAe,EAAE,gBAAgB;wBACjC,YAAY,EAAE,CAAE,eAAe,CAAE;qBAClC,CAAC,CAAC;gBACL,CAAC;aACF,CAAC;YACF,IAAA,mDAA4B,EAAC,gBAAgB,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACxE,IAAA,mDAA4B,EAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACrE,IAAA,0CAAmB,GAAE;SACtB,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AA1CD,4BA0CC"}
@@ -0,0 +1,3 @@
1
+ export interface JwtSchematicSchema {
2
+ project: string;
3
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "Jwt",
4
+ "title": "",
5
+ "type": "object",
6
+ "properties": {
7
+ "project": {
8
+ "type": "string",
9
+ "description": ""
10
+ }
11
+ },
12
+ "required": [
13
+ "project"
14
+ ]
15
+ }
@@ -0,0 +1,12 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ import { Normalized } from '@rxap/utilities';
3
+ import { MicroserviceOptions } from './schema';
4
+ export interface NormalizedMicroserviceOptions extends Readonly<Normalized<MicroserviceOptions>> {
5
+ directory: string;
6
+ apiPrefix: string;
7
+ imageSuffix: string;
8
+ projectName: string;
9
+ port: number;
10
+ }
11
+ export declare function NormalizeMicroserviceOptions(options: Readonly<MicroserviceOptions>): NormalizedMicroserviceOptions;
12
+ export default function (options: MicroserviceOptions): () => Rule;
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NormalizeMicroserviceOptions = void 0;
4
+ const schematics_1 = require("@angular-devkit/schematics");
5
+ const schematics_ts_morph_1 = require("@rxap/schematics-ts-morph");
6
+ const schematics_utilities_1 = require("@rxap/schematics-utilities");
7
+ const utilities_1 = require("@rxap/utilities");
8
+ const init_1 = require("../init");
9
+ function updateApiConfigurationFile({ apiConfigurationFile, projectName, apiPrefix }) {
10
+ if (apiConfigurationFile) {
11
+ return (0, schematics_1.chain)([
12
+ () => console.log('Update api configuration file ...'),
13
+ (tree) => {
14
+ const configApi = JSON.parse((0, schematics_utilities_1.CoerceFile)(tree, apiConfigurationFile, '{}', false));
15
+ configApi[projectName] = { baseUrl: `/${apiPrefix}` };
16
+ tree.overwrite(apiConfigurationFile, JSON.stringify(configApi, undefined, 2));
17
+ },
18
+ ]);
19
+ }
20
+ return (0, schematics_1.noop)();
21
+ }
22
+ function NormalizeMicroserviceOptions(options) {
23
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
24
+ const directory = (_a = options.directory) !== null && _a !== void 0 ? _a : 'service';
25
+ const prefix = directory.split('/').filter(Boolean).map(schematics_utilities_1.dasherize).join('-');
26
+ const name = (0, schematics_utilities_1.dasherize)(options.name).replace(new RegExp(`^${prefix}-`), '');
27
+ const randomPort = (_b = options.randomPort) !== null && _b !== void 0 ? _b : true;
28
+ let port = (_c = options.port) !== null && _c !== void 0 ? _c : 0;
29
+ if (!port) {
30
+ if (randomPort) {
31
+ port = Math.floor(Math.random() * 1000 + 3000);
32
+ }
33
+ else {
34
+ port = 3000;
35
+ }
36
+ }
37
+ return Object.seal({
38
+ name,
39
+ dsn: (_d = options.dsn) !== null && _d !== void 0 ? _d : null,
40
+ directory,
41
+ imageRegistry: (_e = options.imageRegistry) !== null && _e !== void 0 ? _e : null,
42
+ imageName: (_f = options.imageName) !== null && _f !== void 0 ? _f : null,
43
+ imageSuffix: (_g = options.imageSuffix) !== null && _g !== void 0 ? _g : `/${['service', name].join('/')}`,
44
+ apiPrefix: (_h = options.apiPrefix) !== null && _h !== void 0 ? _h : ['api', name].join('/'),
45
+ projectName: [prefix, name].join('-'),
46
+ randomPort,
47
+ port,
48
+ apiConfigurationFile: (_j = options.apiConfigurationFile) !== null && _j !== void 0 ? _j : null,
49
+ overwrite: (_k = options.overwrite) !== null && _k !== void 0 ? _k : false,
50
+ openApi: (_l = options.openApi) !== null && _l !== void 0 ? _l : false,
51
+ jwt: (_m = options.jwt) !== null && _m !== void 0 ? _m : false,
52
+ });
53
+ }
54
+ exports.NormalizeMicroserviceOptions = NormalizeMicroserviceOptions;
55
+ function default_1(options) {
56
+ const normalizedOptions = NormalizeMicroserviceOptions(options);
57
+ const { name, dsn, directory, imageRegistry, imageName, imageSuffix, apiPrefix, projectName, port, apiConfigurationFile, overwrite, openApi, jwt, } = normalizedOptions;
58
+ return function () {
59
+ console.log(`Generate microservice '${name}' in project '${projectName}' in directory '${directory !== null && directory !== void 0 ? directory : '<<default>>'}' ...`);
60
+ return (0, schematics_1.chain)([
61
+ () => console.log('Generate nest application ...'),
62
+ (0, schematics_utilities_1.ExecuteExternalSchematic)('@nx/nest', 'application', {
63
+ name,
64
+ directory,
65
+ e2eTestRunner: 'none',
66
+ }),
67
+ () => console.log('Init nest application ...'),
68
+ (0, schematics_utilities_1.ExecuteSchematic)('init', {
69
+ project: projectName,
70
+ google: false,
71
+ sentry: true,
72
+ swagger: true,
73
+ healthIndicator: true,
74
+ healthIndicatorList: [],
75
+ validator: true,
76
+ platform: 'express',
77
+ pluginDockerOptions: {
78
+ imageRegistry,
79
+ imageName,
80
+ imageSuffix,
81
+ save: true,
82
+ },
83
+ sentryDsn: dsn,
84
+ port,
85
+ apiPrefix,
86
+ overwrite,
87
+ openApi,
88
+ jwt,
89
+ }),
90
+ () => console.log('Add deploy target to project configuration ...'),
91
+ (0, schematics_utilities_1.ExecuteExternalSchematic)('@nx/workspace', 'run-commands', {
92
+ name: 'deploy',
93
+ project: projectName,
94
+ command: 'echo ok',
95
+ }),
96
+ updateApiConfigurationFile(normalizedOptions),
97
+ () => console.log('Update project configuration ...'),
98
+ (0, schematics_utilities_1.UpdateProjectConfigurationRule)(project => {
99
+ var _a;
100
+ (_a = project.tags) !== null && _a !== void 0 ? _a : (project.tags = []);
101
+ project.tags.push('service');
102
+ project.tags.push('nest');
103
+ project.tags.push('sentry');
104
+ project.tags.push('open-api');
105
+ project.tags = project.tags.filter((0, utilities_1.unique)());
106
+ }, { projectName }),
107
+ () => console.log(`Coerce nest module and controller '${name}' ...`),
108
+ (0, schematics_ts_morph_1.CoerceNestController)({
109
+ name,
110
+ project: projectName,
111
+ }),
112
+ (0, init_1.CleanUp)({ project: projectName }),
113
+ ]);
114
+ };
115
+ }
116
+ exports.default = default_1;
117
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/schematic/nestjs/src/schematics/microservice/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export interface MicroserviceOptions {
2
+ name: string;
3
+ dsn?: string;
4
+ directory: string;
5
+ imageRegistry?: string;
6
+ imageName?: string;
7
+ imageSuffix?: string;
8
+ apiPrefix?: string;
9
+ port?: number;
10
+ randomPort?: boolean;
11
+ apiConfigurationFile?: string;
12
+ overwrite: boolean;
13
+ openApi: boolean;
14
+ jwt: boolean;
15
+ }
@@ -0,0 +1,69 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "microservice",
4
+ "type": "object",
5
+ "properties": {
6
+ "name": {
7
+ "type": "string",
8
+ "description": "The name of microservice",
9
+ "x-prompt": "Enter the name of the microservice?"
10
+ },
11
+ "dsn": {
12
+ "type": "string",
13
+ "description": "Default sentry dsn"
14
+ },
15
+ "directory": {
16
+ "type": "string",
17
+ "description": "The directory to create the microservice in"
18
+ },
19
+ "imageRegistry": {
20
+ "type": "string",
21
+ "description": "The image registry to use",
22
+ "default": "registry.gitlab.com"
23
+ },
24
+ "imageName": {
25
+ "type": "string",
26
+ "description": "The image name to use",
27
+ "default": "service"
28
+ },
29
+ "imageSuffix": {
30
+ "type": "string",
31
+ "description": "The image suffix to use"
32
+ },
33
+ "apiPrefix": {
34
+ "type": "string",
35
+ "description": "The api prefix to use"
36
+ },
37
+ "port": {
38
+ "type": "number",
39
+ "description": "The port to use"
40
+ },
41
+ "randomPort": {
42
+ "type": "boolean",
43
+ "description": "Use a random port between 3000 and 4000"
44
+ },
45
+ "apiConfigurationFile": {
46
+ "type": "string",
47
+ "description": "The api configuration file to use"
48
+ },
49
+ "overwrite": {
50
+ "type": "boolean",
51
+ "default": false,
52
+ "description": "Whether to overwrite existing files"
53
+ },
54
+ "jwt": {
55
+ "type": "boolean",
56
+ "default": false,
57
+ "description": "Whether the application should use jwt"
58
+ },
59
+ "openApi": {
60
+ "alias": "open-api",
61
+ "type": "boolean",
62
+ "default": false,
63
+ "description": "Whether the application should use openApi as client"
64
+ }
65
+ },
66
+ "required": [
67
+ "name"
68
+ ]
69
+ }
@@ -0,0 +1,2 @@
1
+ import { OpenApiSchematicSchema } from './schema';
2
+ export default function (options: OpenApiSchematicSchema): () => import("@angular-devkit/schematics").Rule;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const schematics_1 = require("@angular-devkit/schematics");
4
+ const schematics_ts_morph_1 = require("@rxap/schematics-ts-morph");
5
+ const schematics_utilities_1 = require("@rxap/schematics-utilities");
6
+ const ts_morph_1 = require("ts-morph");
7
+ function default_1(options) {
8
+ return () => {
9
+ return (0, schematics_1.chain)([
10
+ (0, schematics_ts_morph_1.CoerceNestModule)({
11
+ project: options.project,
12
+ name: 'app',
13
+ tsMorphTransform: (_, sourceFile) => {
14
+ (0, schematics_ts_morph_1.AddNestModuleImport)(sourceFile, 'OpenApiModule', [
15
+ {
16
+ namedImports: ['OpenApiModule'],
17
+ moduleSpecifier: '@rxap/nest-open-api',
18
+ },
19
+ ], w => {
20
+ w.writeLine('OpenApiModule.registerAsync(');
21
+ ts_morph_1.Writers.object({
22
+ inject: '[ ConfigService ]',
23
+ useFactory: '(config: ConfigService) => ({})',
24
+ })(w);
25
+ w.write(')');
26
+ });
27
+ (0, schematics_ts_morph_1.CoerceImports)(sourceFile, {
28
+ moduleSpecifier: '@nestjs/config',
29
+ namedImports: ['ConfigService'],
30
+ });
31
+ },
32
+ }),
33
+ (0, schematics_utilities_1.AddPackageJsonDependencyRule)('@rxap/nest-open-api', 'latest', { soft: true }),
34
+ (0, schematics_utilities_1.InstallNodePackages)(),
35
+ ]);
36
+ };
37
+ }
38
+ exports.default = default_1;
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/schematic/nestjs/src/schematics/open-api/index.ts"],"names":[],"mappings":";;AAAA,2DAAmD;AACnD,mEAImC;AACnC,qEAGoC;AACpC,uCAAmC;AAGnC,mBAAyB,OAA+B;IACtD,OAAO,GAAG,EAAE;QACV,OAAO,IAAA,kBAAK,EAAC;YACX,IAAA,sCAAgB,EAAC;gBACf,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,KAAK;gBACX,gBAAgB,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE;oBAClC,IAAA,yCAAmB,EACjB,UAAU,EACV,eAAe,EACf;wBACE;4BACE,YAAY,EAAE,CAAE,eAAe,CAAE;4BACjC,eAAe,EAAE,qBAAqB;yBACvC;qBACF,EACD,CAAC,CAAC,EAAE;wBACF,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;wBAC5C,kBAAO,CAAC,MAAM,CAAC;4BACb,MAAM,EAAE,mBAAmB;4BAC3B,UAAU,EAAE,iCAAiC;yBAC9C,CAAC,CAAC,CAAC,CAAC,CAAC;wBACN,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACf,CAAC,CACF,CAAC;oBACF,IAAA,mCAAa,EAAC,UAAU,EAAE;wBACxB,eAAe,EAAE,gBAAgB;wBACjC,YAAY,EAAE,CAAE,eAAe,CAAE;qBAClC,CAAC,CAAC;gBACL,CAAC;aACF,CAAC;YACF,IAAA,mDAA4B,EAAC,qBAAqB,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC7E,IAAA,0CAAmB,GAAE;SACtB,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAnCD,4BAmCC"}
@@ -0,0 +1,3 @@
1
+ export interface OpenApiSchematicSchema {
2
+ project: string;
3
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "OpenApi",
4
+ "title": "",
5
+ "type": "object",
6
+ "properties": {
7
+ "project": {
8
+ "type": "string",
9
+ "description": ""
10
+ }
11
+ },
12
+ "required": [
13
+ "project"
14
+ ]
15
+ }
@@ -0,0 +1,3 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ import { SentrySchema } from './schema';
3
+ export default function (options: SentrySchema): Rule;
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const schematics_1 = require("@angular-devkit/schematics");
4
+ const schematics_ts_morph_1 = require("@rxap/schematics-ts-morph");
5
+ const schematics_utilities_1 = require("@rxap/schematics-utilities");
6
+ const path_1 = require("path");
7
+ const ts_morph_1 = require("ts-morph");
8
+ function updateProjectPackageJson(options) {
9
+ return tree => {
10
+ var _a, _b, _c, _d, _e;
11
+ var _f;
12
+ const projectRoot = (0, schematics_utilities_1.GetProjectRoot)(tree, options.project);
13
+ const rootPackageJson = (0, schematics_utilities_1.GetPackageJson)(tree);
14
+ const packageJsonFilePath = (0, path_1.join)(projectRoot, 'package.json');
15
+ if (!tree.exists(packageJsonFilePath)) {
16
+ tree.create(packageJsonFilePath, '{}');
17
+ }
18
+ const content = JSON.parse((_b = (_a = tree.read(packageJsonFilePath)) === null || _a === void 0 ? void 0 : _a.toString('utf-8')) !== null && _b !== void 0 ? _b : '{}');
19
+ (_c = content.dependencies) !== null && _c !== void 0 ? _c : (content.dependencies = {});
20
+ (_d = (_f = content.dependencies)['@sentry/hub']) !== null && _d !== void 0 ? _d : (_f['@sentry/hub'] = (_e = rootPackageJson.dependencies['@sentry/hub']) !== null && _e !== void 0 ? _e : 'latest');
21
+ tree.overwrite(packageJsonFilePath, JSON.stringify(content, undefined, 2));
22
+ };
23
+ }
24
+ function CoerceSentryModule(sourceFile, options) {
25
+ (0, schematics_ts_morph_1.AddNestModuleImport)(sourceFile, 'SentryModule', [
26
+ {
27
+ moduleSpecifier: '@rxap/nest-sentry',
28
+ namedImports: ['SentryModule'],
29
+ },
30
+ {
31
+ moduleSpecifier: '@nestjs/config',
32
+ namedImports: ['ConfigService', 'ConfigModule'],
33
+ },
34
+ {
35
+ namedImports: ['environment'],
36
+ moduleSpecifier: '../environments/environment',
37
+ },
38
+ {
39
+ namedImports: ['DetermineEnvironment', 'DetermineRelease'],
40
+ moduleSpecifier: '@rxap/nest-utilities',
41
+ },
42
+ ], w => {
43
+ w.writeLine('SentryModule.forRootAsync(');
44
+ ts_morph_1.Writers.object({
45
+ imports: '[ ConfigModule ]',
46
+ inject: '[ ConfigService ]',
47
+ useFactory: w1 => {
48
+ w1.write('async (config: ConfigService) => (');
49
+ ts_morph_1.Writers.object({
50
+ dsn: options.required ? `config.getOrThrow('SENTRY_DSN')` : `config.get('SENTRY_DSN')`,
51
+ enabled: options.required ?
52
+ `config.get('SENTRY_ENABLED', false)` :
53
+ `config.get('SENTRY_DSN') && config.get('SENTRY_ENABLED', false)`,
54
+ environment: `config.get('SENTRY_ENVIRONMENT', DetermineEnvironment(environment))`,
55
+ release: `config.get('SENTRY_RELEASE', DetermineRelease(environment))`,
56
+ serverName: `config.get('SENTRY_SERVER_NAME')`,
57
+ debug: `config.get('SENTRY_DEBUG', false)`,
58
+ tracesSampleRate: `1.0`,
59
+ logLevels: `[ 'error', 'warn' ]`,
60
+ maxValueLength: 'Number.MAX_SAFE_INTEGER',
61
+ })(w1);
62
+ w1.write(')');
63
+ },
64
+ })(w);
65
+ w.write(')');
66
+ });
67
+ }
68
+ function CoerceSentryInterceptorOptionsProvider(sourceFile) {
69
+ (0, schematics_ts_morph_1.AddNestModuleProvider)(sourceFile, {
70
+ provide: 'SENTRY_INTERCEPTOR_OPTIONS',
71
+ useValue: ts_morph_1.Writers.object({
72
+ filters: w1 => {
73
+ w1.write('[');
74
+ ts_morph_1.Writers.object({
75
+ type: 'HttpException',
76
+ filter: '(exception: HttpException) => 500 > exception.getStatus()',
77
+ })(w1);
78
+ w1.write(']');
79
+ },
80
+ }),
81
+ }, [
82
+ {
83
+ namedImports: ['SENTRY_INTERCEPTOR_OPTIONS'],
84
+ moduleSpecifier: '@rxap/nest-sentry',
85
+ },
86
+ {
87
+ namedImports: ['HttpException'],
88
+ moduleSpecifier: '@nestjs/common',
89
+ },
90
+ ]);
91
+ }
92
+ function CoerceAppInterceptorProvider(sourceFile) {
93
+ (0, schematics_ts_morph_1.AddNestModuleProvider)(sourceFile, {
94
+ provide: 'APP_INTERCEPTOR',
95
+ useClass: 'SentryInterceptor',
96
+ }, [
97
+ {
98
+ namedImports: ['APP_INTERCEPTOR'],
99
+ moduleSpecifier: '@nestjs/core',
100
+ },
101
+ {
102
+ namedImports: ['SentryInterceptor'],
103
+ moduleSpecifier: '@rxap/nest-sentry',
104
+ },
105
+ ]);
106
+ }
107
+ function UpdateAppModule(options) {
108
+ return (0, schematics_ts_morph_1.TsMorphNestProjectTransformRule)({
109
+ project: options.project,
110
+ }, (project, [sourceFile]) => {
111
+ CoerceSentryModule(sourceFile, options);
112
+ CoerceSentryInterceptorOptionsProvider(sourceFile);
113
+ CoerceAppInterceptorProvider(sourceFile);
114
+ }, ['/app/app.module.ts']);
115
+ }
116
+ function default_1(options) {
117
+ return () => {
118
+ return (0, schematics_1.chain)([
119
+ UpdateAppModule(options),
120
+ (0, schematics_utilities_1.AddPackageJsonDependencyRule)('@sentry/node', 'latest', { soft: true }),
121
+ (0, schematics_utilities_1.AddPackageJsonDependencyRule)('@sentry/hub', 'latest', { soft: true }),
122
+ (0, schematics_utilities_1.AddPackageJsonDependencyRule)('@rxap/nest-sentry', 'latest', { soft: true }),
123
+ // updateProjectPackageJson(options),
124
+ (0, schematics_utilities_1.InstallNodePackages)(),
125
+ ]);
126
+ };
127
+ }
128
+ exports.default = default_1;
129
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/schematic/nestjs/src/schematics/sentry/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export interface SentrySchema {
2
+ project: string;
3
+ dsn?: string;
4
+ required?: boolean;
5
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "description": "Adds Modules, Services and Packages to integrate sentry",
3
+ "$schema": "http://json-schema.org/draft-07/schema",
4
+ "$id": "sentry",
5
+ "type": "object",
6
+ "properties": {
7
+ "project": {
8
+ "type": "string",
9
+ "description": "The name of the project.",
10
+ "$default": {
11
+ "$source": "projectName"
12
+ },
13
+ "x-prompt": "Which project should be extend with sentry support?"
14
+ },
15
+ "dsn": {
16
+ "type": "string",
17
+ "description": "Default sentry dsn"
18
+ },
19
+ "required": {
20
+ "type": "boolean",
21
+ "description": "Whether or not the sentry dsn should be required to start the application"
22
+ }
23
+ },
24
+ "required": [
25
+ "project"
26
+ ]
27
+ }
@@ -0,0 +1,7 @@
1
+ import { Environment } from '@rxap/nest-utilities';
2
+
3
+ export const environment: Environment = {
4
+ name: 'swagger',
5
+ production: true,
6
+ swagger: true,
7
+ };
@@ -0,0 +1,19 @@
1
+ import { NestFactory } from '@nestjs/core';
2
+ import { AppModule } from './app/app.module';
3
+ import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
4
+ import { writeFileSync } from 'fs';
5
+ import { join } from 'path';
6
+
7
+ NestFactory.create(AppModule).then(app => {
8
+ const options = new DocumentBuilder().build();
9
+ const document = SwaggerModule.createDocument(app, options);
10
+
11
+ const outputPath = join(__dirname,'openapi.json')
12
+ console.log('write to: ' + outputPath);
13
+
14
+ writeFileSync(outputPath, JSON.stringify(document, null, 2));
15
+
16
+ return app.close();
17
+ }).catch(e => console.error('failed to generate openapi: ' + e.message))
18
+ .then(() => console.log('DONE'));
19
+
@@ -0,0 +1,3 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ import { SwaggerSchema } from './schema';
3
+ export default function (options: SwaggerSchema): Rule;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const schematics_1 = require("@angular-devkit/schematics");
5
+ const schematics_utilities_1 = require("@rxap/schematics-utilities");
6
+ function default_1(options) {
7
+ return (host) => tslib_1.__awaiter(this, void 0, void 0, function* () {
8
+ const projectSourceRoot = (0, schematics_utilities_1.GetProjectSourceRoot)(host, options.project);
9
+ return (0, schematics_1.chain)([
10
+ (0, schematics_1.mergeWith)((0, schematics_1.apply)((0, schematics_1.url)('./files'), [
11
+ (0, schematics_1.applyTemplates)(options),
12
+ (0, schematics_1.move)(projectSourceRoot),
13
+ (0, schematics_1.forEach)(entry => {
14
+ if (host.exists(entry.path)) {
15
+ host.overwrite(entry.path, entry.content);
16
+ return null;
17
+ }
18
+ return entry;
19
+ }),
20
+ ])),
21
+ (0, schematics_utilities_1.UpdateProjectConfigurationRule)(project => {
22
+ var _a;
23
+ (_a = project.targets) !== null && _a !== void 0 ? _a : (project.targets = {});
24
+ const build = project.targets['build'];
25
+ if (!build) {
26
+ throw new schematics_1.SchematicsException('The selected project does not have a build target');
27
+ }
28
+ if (!build.options) {
29
+ throw new schematics_1.SchematicsException('The selected project has the build target without options');
30
+ }
31
+ if (!build.options['outputPath']) {
32
+ throw new schematics_1.SchematicsException('The selected project has the build target without the option outputPath');
33
+ }
34
+ if (!build.options['tsConfig']) {
35
+ throw new schematics_1.SchematicsException('The selected project has the build target without the option tsConfig');
36
+ }
37
+ project.targets['swagger-build'] = {
38
+ executor: '@nx/webpack:webpack',
39
+ outputs: ['{options.outputPath}'],
40
+ options: {
41
+ outputPath: build.options['outputPath'].replace('dist/apps/', 'dist/swagger/'),
42
+ main: `${project.sourceRoot}/swagger.ts`,
43
+ target: `node`,
44
+ compiler: `tsc`,
45
+ webpackConfig: `${project.root}/webpack.config.js`,
46
+ transformers: ['@nestjs/swagger/plugin'],
47
+ tsConfig: build.options['tsConfig'],
48
+ fileReplacements: [
49
+ {
50
+ replace: `${project.sourceRoot}/environments/environment.ts`,
51
+ with: `${project.sourceRoot}/environments/environment.swagger.ts`,
52
+ },
53
+ ],
54
+ },
55
+ };
56
+ project.targets['swagger-generate'] = {
57
+ executor: '@nx/js:node',
58
+ outputs: [
59
+ `{options.outputPath}/open-api.json`,
60
+ ],
61
+ options: {
62
+ buildTarget: `${options.project}:swagger-build`,
63
+ watch: false,
64
+ },
65
+ };
66
+ }, { projectName: options.project }),
67
+ (0, schematics_utilities_1.UpdateNxJsonRule)(nxJson => {
68
+ var _a, _b, _c, _d;
69
+ var _e, _f, _g;
70
+ (_a = nxJson.tasksRunnerOptions) !== null && _a !== void 0 ? _a : (nxJson.tasksRunnerOptions = {});
71
+ (_b = (_e = nxJson.tasksRunnerOptions)['default']) !== null && _b !== void 0 ? _b : (_e['default'] = { runner: 'nx-cloud', options: {} });
72
+ (_c = (_f = nxJson.tasksRunnerOptions['default']).options) !== null && _c !== void 0 ? _c : (_f.options = {});
73
+ (_d = (_g = nxJson.tasksRunnerOptions['default'].options)['cacheableOperations']) !== null && _d !== void 0 ? _d : (_g['cacheableOperations'] = []);
74
+ if (!nxJson.tasksRunnerOptions['default'].options['cacheableOperations'].includes('swagger-build')) {
75
+ nxJson.tasksRunnerOptions['default'].options['cacheableOperations'].push('swagger-build');
76
+ }
77
+ if (!nxJson.tasksRunnerOptions['default'].options['cacheableOperations'].includes('swagger-generate')) {
78
+ nxJson.tasksRunnerOptions['default'].options['cacheableOperations'].push('swagger-generate');
79
+ }
80
+ }),
81
+ (0, schematics_utilities_1.AddPackageJsonDependencyRule)('swagger-ui-express', 'latest', { soft: true }),
82
+ (0, schematics_utilities_1.AddPackageJsonDependencyRule)('@nestjs/swagger', 'latest', { soft: true }),
83
+ (0, schematics_utilities_1.InstallNodePackages)(),
84
+ ]);
85
+ });
86
+ }
87
+ exports.default = default_1;
88
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/schematic/nestjs/src/schematics/swagger/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export interface SwaggerSchema {
2
+ project: string;
3
+
4
+ }