@deenruv/cli 1.0.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 (102) hide show
  1. package/LICENSE +23 -0
  2. package/dist/cli.d.ts +2 -0
  3. package/dist/cli.js +64 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/commands/add/add.d.ts +1 -0
  6. package/dist/commands/add/add.js +70 -0
  7. package/dist/commands/add/add.js.map +1 -0
  8. package/dist/commands/add/api-extension/add-api-extension.d.ts +9 -0
  9. package/dist/commands/add/api-extension/add-api-extension.js +524 -0
  10. package/dist/commands/add/api-extension/add-api-extension.js.map +1 -0
  11. package/dist/commands/add/api-extension/templates/api-extensions.template.ts +3 -0
  12. package/dist/commands/add/api-extension/templates/crud-resolver.template.ts +127 -0
  13. package/dist/commands/add/api-extension/templates/simple-resolver.template.ts +37 -0
  14. package/dist/commands/add/codegen/add-codegen.d.ts +8 -0
  15. package/dist/commands/add/codegen/add-codegen.js +113 -0
  16. package/dist/commands/add/codegen/add-codegen.js.map +1 -0
  17. package/dist/commands/add/codegen/codegen-config-ref.d.ts +10 -0
  18. package/dist/commands/add/codegen/codegen-config-ref.js +52 -0
  19. package/dist/commands/add/codegen/codegen-config-ref.js.map +1 -0
  20. package/dist/commands/add/codegen/templates/codegen.template.ts +17 -0
  21. package/dist/commands/add/entity/add-entity.d.ts +17 -0
  22. package/dist/commands/add/entity/add-entity.js +160 -0
  23. package/dist/commands/add/entity/add-entity.js.map +1 -0
  24. package/dist/commands/add/entity/codemods/add-entity-to-plugin/add-entity-to-plugin.d.ts +3 -0
  25. package/dist/commands/add/entity/codemods/add-entity-to-plugin/add-entity-to-plugin.js +17 -0
  26. package/dist/commands/add/entity/codemods/add-entity-to-plugin/add-entity-to-plugin.js.map +1 -0
  27. package/dist/commands/add/entity/templates/entity-translation.template.ts +31 -0
  28. package/dist/commands/add/entity/templates/entity.template.ts +36 -0
  29. package/dist/commands/add/job-queue/add-job-queue.d.ts +9 -0
  30. package/dist/commands/add/job-queue/add-job-queue.js +139 -0
  31. package/dist/commands/add/job-queue/add-job-queue.js.map +1 -0
  32. package/dist/commands/add/plugin/create-new-plugin.d.ts +10 -0
  33. package/dist/commands/add/plugin/create-new-plugin.js +240 -0
  34. package/dist/commands/add/plugin/create-new-plugin.js.map +1 -0
  35. package/dist/commands/add/plugin/templates/constants.template.ts +2 -0
  36. package/dist/commands/add/plugin/templates/plugin.template.ts +30 -0
  37. package/dist/commands/add/plugin/templates/types.template.ts +7 -0
  38. package/dist/commands/add/plugin/types.d.ts +8 -0
  39. package/dist/commands/add/plugin/types.js +3 -0
  40. package/dist/commands/add/plugin/types.js.map +1 -0
  41. package/dist/commands/add/service/add-service.d.ts +5 -0
  42. package/dist/commands/add/service/add-service.js +317 -0
  43. package/dist/commands/add/service/add-service.js.map +1 -0
  44. package/dist/commands/add/service/templates/basic-service.template.ts +20 -0
  45. package/dist/commands/add/service/templates/entity-service.template.ts +182 -0
  46. package/dist/commands/add/ui-extensions/add-ui-extensions.d.ts +6 -0
  47. package/dist/commands/add/ui-extensions/add-ui-extensions.js +101 -0
  48. package/dist/commands/add/ui-extensions/add-ui-extensions.js.map +1 -0
  49. package/dist/commands/add/ui-extensions/codemods/add-ui-extension-static-prop/add-ui-extension-static-prop.d.ts +2 -0
  50. package/dist/commands/add/ui-extensions/codemods/add-ui-extension-static-prop/add-ui-extension-static-prop.js +36 -0
  51. package/dist/commands/add/ui-extensions/codemods/add-ui-extension-static-prop/add-ui-extension-static-prop.js.map +1 -0
  52. package/dist/commands/add/ui-extensions/codemods/update-admin-ui-plugin-init/update-admin-ui-plugin-init.d.ts +5 -0
  53. package/dist/commands/add/ui-extensions/codemods/update-admin-ui-plugin-init/update-admin-ui-plugin-init.js +63 -0
  54. package/dist/commands/add/ui-extensions/codemods/update-admin-ui-plugin-init/update-admin-ui-plugin-init.js.map +1 -0
  55. package/dist/commands/add/ui-extensions/templates/providers.template.ts +3 -0
  56. package/dist/commands/add/ui-extensions/templates/routes.template.ts +3 -0
  57. package/dist/commands/migrate/generate-migration/generate-migration.d.ts +2 -0
  58. package/dist/commands/migrate/generate-migration/generate-migration.js +112 -0
  59. package/dist/commands/migrate/generate-migration/generate-migration.js.map +1 -0
  60. package/dist/commands/migrate/load-deenruv-config-file.d.ts +3 -0
  61. package/dist/commands/migrate/load-deenruv-config-file.js +66 -0
  62. package/dist/commands/migrate/load-deenruv-config-file.js.map +1 -0
  63. package/dist/commands/migrate/migrate.d.ts +1 -0
  64. package/dist/commands/migrate/migrate.js +50 -0
  65. package/dist/commands/migrate/migrate.js.map +1 -0
  66. package/dist/commands/migrate/revert-migration/revert-migration.d.ts +2 -0
  67. package/dist/commands/migrate/revert-migration/revert-migration.js +31 -0
  68. package/dist/commands/migrate/revert-migration/revert-migration.js.map +1 -0
  69. package/dist/commands/migrate/run-migration/run-migration.d.ts +2 -0
  70. package/dist/commands/migrate/run-migration/run-migration.js +34 -0
  71. package/dist/commands/migrate/run-migration/run-migration.js.map +1 -0
  72. package/dist/constants.d.ts +10 -0
  73. package/dist/constants.js +17 -0
  74. package/dist/constants.js.map +1 -0
  75. package/dist/shared/cli-command.d.ts +24 -0
  76. package/dist/shared/cli-command.js +22 -0
  77. package/dist/shared/cli-command.js.map +1 -0
  78. package/dist/shared/deenruv-config-ref.d.ts +14 -0
  79. package/dist/shared/deenruv-config-ref.js +69 -0
  80. package/dist/shared/deenruv-config-ref.js.map +1 -0
  81. package/dist/shared/deenruv-plugin-ref.d.ts +22 -0
  82. package/dist/shared/deenruv-plugin-ref.js +184 -0
  83. package/dist/shared/deenruv-plugin-ref.js.map +1 -0
  84. package/dist/shared/entity-ref.d.ts +16 -0
  85. package/dist/shared/entity-ref.js +61 -0
  86. package/dist/shared/entity-ref.js.map +1 -0
  87. package/dist/shared/package-json-ref.d.ts +25 -0
  88. package/dist/shared/package-json-ref.js +181 -0
  89. package/dist/shared/package-json-ref.js.map +1 -0
  90. package/dist/shared/service-ref.d.ts +25 -0
  91. package/dist/shared/service-ref.js +92 -0
  92. package/dist/shared/service-ref.js.map +1 -0
  93. package/dist/shared/shared-prompts.d.ts +16 -0
  94. package/dist/shared/shared-prompts.js +170 -0
  95. package/dist/shared/shared-prompts.js.map +1 -0
  96. package/dist/utilities/ast-utils.d.ts +20 -0
  97. package/dist/utilities/ast-utils.js +173 -0
  98. package/dist/utilities/ast-utils.js.map +1 -0
  99. package/dist/utilities/utils.d.ts +2 -0
  100. package/dist/utilities/utils.js +12 -0
  101. package/dist/utilities/utils.js.map +1 -0
  102. package/package.json +57 -0
@@ -0,0 +1,69 @@
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.DeenruvConfigRef = void 0;
7
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const ts_morph_1 = require("ts-morph");
10
+ class DeenruvConfigRef {
11
+ constructor(project, options = {}) {
12
+ var _a, _b;
13
+ this.project = project;
14
+ const checkFileName = (_a = options.checkFileName) !== null && _a !== void 0 ? _a : true;
15
+ const getDeenruvConfigSourceFile = (sourceFiles) => {
16
+ return sourceFiles.find((sf) => {
17
+ return ((checkFileName
18
+ ? sf.getFilePath().endsWith("deenruv-config.ts")
19
+ : true) &&
20
+ sf
21
+ .getVariableDeclarations()
22
+ .find((v) => this.isDeenruvConfigVariableDeclaration(v)));
23
+ });
24
+ };
25
+ const findAndAddDeenruvConfigToProject = () => {
26
+ const srcDir = project.getDirectory("src");
27
+ if (srcDir) {
28
+ const srcDirPath = srcDir.getPath();
29
+ const srcFiles = fs_extra_1.default.readdirSync(srcDirPath);
30
+ const filePath = srcFiles.find((file) => file.includes("deenruv-config.ts"));
31
+ if (filePath) {
32
+ project.addSourceFileAtPath(node_path_1.default.join(srcDirPath, filePath));
33
+ }
34
+ }
35
+ };
36
+ let deenruvConfigFile = getDeenruvConfigSourceFile(project.getSourceFiles());
37
+ if (!deenruvConfigFile) {
38
+ findAndAddDeenruvConfigToProject();
39
+ deenruvConfigFile = getDeenruvConfigSourceFile(project.getSourceFiles());
40
+ }
41
+ if (!deenruvConfigFile) {
42
+ throw new Error("Could not find the DeenruvConfig declaration in your project.");
43
+ }
44
+ this.sourceFile = deenruvConfigFile;
45
+ this.configObject = (_b = deenruvConfigFile === null || deenruvConfigFile === void 0 ? void 0 : deenruvConfigFile.getVariableDeclarations().find((v) => this.isDeenruvConfigVariableDeclaration(v))) === null || _b === void 0 ? void 0 : _b.getChildren().find(ts_morph_1.Node.isObjectLiteralExpression);
46
+ }
47
+ getPathRelativeToProjectRoot() {
48
+ var _a, _b;
49
+ return node_path_1.default.relative((_b = (_a = this.project.getRootDirectories()[0]) === null || _a === void 0 ? void 0 : _a.getPath()) !== null && _b !== void 0 ? _b : "", this.sourceFile.getFilePath());
50
+ }
51
+ getConfigObjectVariableName() {
52
+ var _a, _b;
53
+ return (_b = (_a = this.sourceFile) === null || _a === void 0 ? void 0 : _a.getVariableDeclarations().find((v) => this.isDeenruvConfigVariableDeclaration(v))) === null || _b === void 0 ? void 0 : _b.getName();
54
+ }
55
+ getPluginsArray() {
56
+ var _a;
57
+ return (_a = this.configObject
58
+ .getProperty("plugins")) === null || _a === void 0 ? void 0 : _a.getFirstChildByKind(ts_morph_1.SyntaxKind.ArrayLiteralExpression);
59
+ }
60
+ addToPluginsArray(text) {
61
+ var _a;
62
+ (_a = this.getPluginsArray()) === null || _a === void 0 ? void 0 : _a.addElement(text).formatText();
63
+ }
64
+ isDeenruvConfigVariableDeclaration(v) {
65
+ return v.getType().getText(v) === "DeenruvConfig";
66
+ }
67
+ }
68
+ exports.DeenruvConfigRef = DeenruvConfigRef;
69
+ //# sourceMappingURL=deenruv-config-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deenruv-config-ref.js","sourceRoot":"","sources":["../../src/shared/deenruv-config-ref.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { ClassDeclaration, InterfaceDeclaration, VariableDeclaration } from "ts-morph";
2
+ import { EntityRef } from "./entity-ref";
3
+ export declare class DeenruvPluginRef {
4
+ classDeclaration: ClassDeclaration;
5
+ constructor(classDeclaration: ClassDeclaration);
6
+ get name(): string;
7
+ getSourceFile(): import("ts-morph").SourceFile;
8
+ getPluginDir(): import("ts-morph").Directory;
9
+ getMetadataOptions(): import("ts-morph").ObjectLiteralExpression;
10
+ getPluginOptions(): {
11
+ typeDeclaration: InterfaceDeclaration;
12
+ constantDeclaration: VariableDeclaration;
13
+ } | undefined;
14
+ addEntity(entityClassName: string): void;
15
+ addProvider(providerClassName: string): void;
16
+ addAdminApiExtensions(extension: {
17
+ schema: VariableDeclaration | undefined;
18
+ resolvers: ClassDeclaration[];
19
+ }): void;
20
+ getEntities(): EntityRef[];
21
+ hasUiExtensions(): boolean;
22
+ }
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeenruvPluginRef = void 0;
4
+ const ts_morph_1 = require("ts-morph");
5
+ const constants_1 = require("../constants");
6
+ const entity_ref_1 = require("./entity-ref");
7
+ class DeenruvPluginRef {
8
+ constructor(classDeclaration) {
9
+ this.classDeclaration = classDeclaration;
10
+ }
11
+ get name() {
12
+ return this.classDeclaration.getName();
13
+ }
14
+ getSourceFile() {
15
+ return this.classDeclaration.getSourceFile();
16
+ }
17
+ getPluginDir() {
18
+ return this.classDeclaration.getSourceFile().getDirectory();
19
+ }
20
+ getMetadataOptions() {
21
+ const pluginDecorator = this.classDeclaration.getDecorator("DeenruvPlugin");
22
+ if (!pluginDecorator) {
23
+ throw new Error("Could not find DeenruvPlugin decorator");
24
+ }
25
+ const pluginOptions = pluginDecorator.getArguments()[0];
26
+ if (!pluginOptions || !ts_morph_1.Node.isObjectLiteralExpression(pluginOptions)) {
27
+ throw new Error("Could not find DeenruvPlugin options");
28
+ }
29
+ return pluginOptions;
30
+ }
31
+ getPluginOptions() {
32
+ var _a, _b;
33
+ const metadataOptions = this.getMetadataOptions();
34
+ const staticOptions = this.classDeclaration.getStaticProperty("options");
35
+ const typeDeclaration = staticOptions === null || staticOptions === void 0 ? void 0 : staticOptions.getType().getSymbolOrThrow().getDeclarations().find((d) => ts_morph_1.Node.isInterfaceDeclaration(d));
36
+ if (!typeDeclaration || !ts_morph_1.Node.isInterfaceDeclaration(typeDeclaration)) {
37
+ return;
38
+ }
39
+ const providersArray = (_a = metadataOptions
40
+ .getProperty("providers")) === null || _a === void 0 ? void 0 : _a.getFirstChildByKind(ts_morph_1.SyntaxKind.ArrayLiteralExpression);
41
+ if (!providersArray) {
42
+ return;
43
+ }
44
+ const elements = providersArray.getElements();
45
+ const optionsProviders = elements
46
+ .filter(ts_morph_1.Node.isObjectLiteralExpression)
47
+ .filter((el) => {
48
+ var _a;
49
+ return (_a = el
50
+ .getProperty("useFactory")) === null || _a === void 0 ? void 0 : _a.getText().includes(`${this.name}.options`);
51
+ });
52
+ if (!optionsProviders.length) {
53
+ return;
54
+ }
55
+ const optionsSymbol = optionsProviders[0].getProperty("provide");
56
+ const initializer = optionsSymbol === null || optionsSymbol === void 0 ? void 0 : optionsSymbol.getInitializer();
57
+ if (!initializer || !ts_morph_1.Node.isIdentifier(initializer)) {
58
+ return;
59
+ }
60
+ const constantDeclaration = (_b = initializer
61
+ .getDefinitions()[0]) === null || _b === void 0 ? void 0 : _b.getDeclarationNode();
62
+ if (!constantDeclaration ||
63
+ !ts_morph_1.Node.isVariableDeclaration(constantDeclaration)) {
64
+ return;
65
+ }
66
+ return { typeDeclaration, constantDeclaration };
67
+ }
68
+ addEntity(entityClassName) {
69
+ const pluginOptions = this.getMetadataOptions();
70
+ const entityProperty = pluginOptions.getProperty("entities");
71
+ if (entityProperty) {
72
+ const entitiesArray = entityProperty.getFirstChildByKind(ts_morph_1.SyntaxKind.ArrayLiteralExpression);
73
+ if (entitiesArray) {
74
+ entitiesArray.addElement(entityClassName);
75
+ }
76
+ }
77
+ else {
78
+ pluginOptions.addPropertyAssignment({
79
+ name: "entities",
80
+ initializer: `[${entityClassName}]`,
81
+ });
82
+ }
83
+ }
84
+ addProvider(providerClassName) {
85
+ const pluginOptions = this.getMetadataOptions();
86
+ const providerProperty = pluginOptions.getProperty("providers");
87
+ if (providerProperty) {
88
+ const providersArray = providerProperty.getFirstChildByKind(ts_morph_1.SyntaxKind.ArrayLiteralExpression);
89
+ if (providersArray) {
90
+ providersArray.addElement(providerClassName);
91
+ }
92
+ }
93
+ else {
94
+ pluginOptions.addPropertyAssignment({
95
+ name: "providers",
96
+ initializer: `[${providerClassName}]`,
97
+ });
98
+ }
99
+ }
100
+ addAdminApiExtensions(extension) {
101
+ var _a, _b;
102
+ const pluginOptions = this.getMetadataOptions();
103
+ const adminApiExtensionsProperty = (_a = pluginOptions
104
+ .getProperty("adminApiExtensions")) === null || _a === void 0 ? void 0 : _a.getType().getSymbolOrThrow().getDeclarations()[0];
105
+ if (extension.schema &&
106
+ adminApiExtensionsProperty &&
107
+ ts_morph_1.Node.isObjectLiteralExpression(adminApiExtensionsProperty)) {
108
+ const schemaProp = adminApiExtensionsProperty.getProperty("schema");
109
+ if (!schemaProp) {
110
+ adminApiExtensionsProperty.addPropertyAssignment({
111
+ name: "schema",
112
+ initializer: (_b = extension.schema) === null || _b === void 0 ? void 0 : _b.getName(),
113
+ });
114
+ }
115
+ const resolversProp = adminApiExtensionsProperty.getProperty("resolvers");
116
+ if (resolversProp) {
117
+ const resolversArray = resolversProp.getFirstChildByKind(ts_morph_1.SyntaxKind.ArrayLiteralExpression);
118
+ if (resolversArray) {
119
+ for (const resolver of extension.resolvers) {
120
+ const resolverName = resolver.getName();
121
+ if (resolverName) {
122
+ resolversArray.addElement(resolverName);
123
+ }
124
+ }
125
+ }
126
+ }
127
+ else {
128
+ adminApiExtensionsProperty.addPropertyAssignment({
129
+ name: "resolvers",
130
+ initializer: `[${extension.resolvers.map((r) => r.getName()).join(", ")}]`,
131
+ });
132
+ }
133
+ }
134
+ else if (extension.schema) {
135
+ pluginOptions
136
+ .addPropertyAssignment({
137
+ name: "adminApiExtensions",
138
+ initializer: `{
139
+ schema: ${extension.schema.getName()},
140
+ resolvers: [${extension.resolvers.map((r) => r.getName()).join(", ")}]
141
+ }`,
142
+ })
143
+ .formatText();
144
+ }
145
+ }
146
+ getEntities() {
147
+ const metadataOptions = this.getMetadataOptions();
148
+ const entitiesProperty = metadataOptions.getProperty("entities");
149
+ if (!entitiesProperty) {
150
+ return [];
151
+ }
152
+ const entitiesArray = entitiesProperty.getFirstChildByKind(ts_morph_1.SyntaxKind.ArrayLiteralExpression);
153
+ if (!entitiesArray) {
154
+ return [];
155
+ }
156
+ const entityNames = entitiesArray
157
+ .getElements()
158
+ .filter(ts_morph_1.Node.isIdentifier)
159
+ .map((e) => e.getText());
160
+ const entitySourceFiles = this.getSourceFile()
161
+ .getImportDeclarations()
162
+ .filter((imp) => {
163
+ for (const namedImport of imp.getNamedImports()) {
164
+ if (entityNames.includes(namedImport.getName())) {
165
+ return true;
166
+ }
167
+ }
168
+ })
169
+ .map((imp) => imp.getModuleSpecifierSourceFileOrThrow());
170
+ return entitySourceFiles
171
+ .map((sourceFile) => sourceFile
172
+ .getClasses()
173
+ .filter((c) => { var _a; return ((_a = c.getExtends()) === null || _a === void 0 ? void 0 : _a.getText()) === "DeenruvEntity"; }))
174
+ .flat()
175
+ .map((classDeclaration) => new entity_ref_1.EntityRef(classDeclaration));
176
+ }
177
+ hasUiExtensions() {
178
+ return !!this.classDeclaration
179
+ .getStaticProperties()
180
+ .find((prop) => { var _a; return ((_a = prop.getType().getSymbol()) === null || _a === void 0 ? void 0 : _a.getName()) === constants_1.AdminUiExtensionTypeName; });
181
+ }
182
+ }
183
+ exports.DeenruvPluginRef = DeenruvPluginRef;
184
+ //# sourceMappingURL=deenruv-plugin-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deenruv-plugin-ref.js","sourceRoot":"","sources":["../../src/shared/deenruv-plugin-ref.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { ClassDeclaration, Type } from "ts-morph";
2
+ export declare class EntityRef {
3
+ classDeclaration: ClassDeclaration;
4
+ constructor(classDeclaration: ClassDeclaration);
5
+ get name(): string;
6
+ get nameCamelCase(): string;
7
+ isTranslatable(): boolean;
8
+ isTranslation(): boolean;
9
+ hasCustomFields(): boolean;
10
+ getProps(): Array<{
11
+ name: string;
12
+ type: Type;
13
+ nullable: boolean;
14
+ }>;
15
+ getTranslationClass(): ClassDeclaration | undefined;
16
+ }
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EntityRef = void 0;
4
+ const ts_morph_1 = require("ts-morph");
5
+ class EntityRef {
6
+ constructor(classDeclaration) {
7
+ this.classDeclaration = classDeclaration;
8
+ }
9
+ get name() {
10
+ return this.classDeclaration.getName();
11
+ }
12
+ get nameCamelCase() {
13
+ return this.name.charAt(0).toLowerCase() + this.name.slice(1);
14
+ }
15
+ isTranslatable() {
16
+ return this.classDeclaration
17
+ .getImplements()
18
+ .some((i) => i.getText() === "Translatable");
19
+ }
20
+ isTranslation() {
21
+ return this.classDeclaration
22
+ .getImplements()
23
+ .some((i) => i.getText().includes("Translation<"));
24
+ }
25
+ hasCustomFields() {
26
+ return this.classDeclaration
27
+ .getImplements()
28
+ .some((i) => i.getText() === "HasCustomFields");
29
+ }
30
+ getProps() {
31
+ return this.classDeclaration.getProperties().map((prop) => {
32
+ const propType = prop.getType();
33
+ const name = prop.getName();
34
+ return {
35
+ name,
36
+ type: propType.getNonNullableType(),
37
+ nullable: propType.isNullable(),
38
+ };
39
+ });
40
+ }
41
+ getTranslationClass() {
42
+ var _a, _b;
43
+ if (!this.isTranslatable()) {
44
+ return;
45
+ }
46
+ const translationsDecoratorArgs = (_b = (_a = this.classDeclaration
47
+ .getProperty("translations")) === null || _a === void 0 ? void 0 : _a.getDecorator("OneToMany")) === null || _b === void 0 ? void 0 : _b.getArguments();
48
+ if (translationsDecoratorArgs) {
49
+ const typeFn = translationsDecoratorArgs[0];
50
+ if (ts_morph_1.Node.isArrowFunction(typeFn)) {
51
+ const translationClass = typeFn
52
+ .getReturnType()
53
+ .getSymbolOrThrow()
54
+ .getDeclarations()[0];
55
+ return translationClass;
56
+ }
57
+ }
58
+ }
59
+ }
60
+ exports.EntityRef = EntityRef;
61
+ //# sourceMappingURL=entity-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-ref.js","sourceRoot":"","sources":["../../src/shared/entity-ref.ts"],"names":[],"mappings":";;;AAAA,uCAAoE;AAEpE,MAAa,SAAS;IACpB,YAAmB,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;IAAG,CAAC;IAEzD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAY,CAAC;IACnD,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,gBAAgB;aACzB,aAAa,EAAE;aACf,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,cAAc,CAAC,CAAC;IACjD,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,gBAAgB;aACzB,aAAa,EAAE;aACf,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,gBAAgB;aACzB,aAAa,EAAE;aACf,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,iBAAiB,CAAC,CAAC;IACpD,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5B,OAAO;gBACL,IAAI;gBACJ,IAAI,EAAE,QAAQ,CAAC,kBAAkB,EAAE;gBACnC,QAAQ,EAAE,QAAQ,CAAC,UAAU,EAAE;aAChC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB;;QACjB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,MAAM,yBAAyB,GAAG,MAAA,MAAA,IAAI,CAAC,gBAAgB;aACpD,WAAW,CAAC,cAAc,CAAC,0CAC1B,YAAY,CAAC,WAAW,CAAC,0CACzB,YAAY,EAAE,CAAC;QAEnB,IAAI,yBAAyB,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,eAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,MAAM,gBAAgB,GAAG,MAAM;qBAC5B,aAAa,EAAE;qBACf,gBAAgB,EAAE;qBAClB,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxB,OAAO,gBAAoC,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;CACF;AA7DD,8BA6DC"}
@@ -0,0 +1,25 @@
1
+ import { Project } from "ts-morph";
2
+ export interface PackageToInstall {
3
+ pkg: string;
4
+ version?: string;
5
+ isDevDependency?: boolean;
6
+ installInRoot?: boolean;
7
+ }
8
+ export declare class PackageJson {
9
+ private readonly project;
10
+ private _deenruvPackageJsonPath;
11
+ private _rootPackageJsonPath;
12
+ constructor(project: Project);
13
+ get deenruvPackageJsonPath(): string | null;
14
+ get rootPackageJsonPath(): string | null;
15
+ determineDeenruvVersion(): string | undefined;
16
+ installPackages(requiredPackages: PackageToInstall[]): Promise<void>;
17
+ getPackageJsonContent(): any;
18
+ determinePackageManager(): "yarn" | "npm" | "pnpm";
19
+ addScript(scriptName: string, script: string): void;
20
+ getPackageRootDir(): import("ts-morph").Directory;
21
+ locateRootPackageJson(): string | null;
22
+ locatePackageJsonWithDeenruvDependency(): string | null;
23
+ private hasDeenruvDependency;
24
+ private runPackageManagerInstall;
25
+ }
@@ -0,0 +1,181 @@
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.PackageJson = 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
+ class PackageJson {
12
+ constructor(project) {
13
+ this.project = project;
14
+ }
15
+ get deenruvPackageJsonPath() {
16
+ return this.locatePackageJsonWithDeenruvDependency();
17
+ }
18
+ get rootPackageJsonPath() {
19
+ return this.locateRootPackageJson();
20
+ }
21
+ determineDeenruvVersion() {
22
+ const packageJson = this.getPackageJsonContent();
23
+ return packageJson.dependencies["@deenruv/core"];
24
+ }
25
+ async installPackages(requiredPackages) {
26
+ const packageJson = this.getPackageJsonContent();
27
+ const packagesToInstall = requiredPackages.filter(({ pkg, version, isDevDependency }) => {
28
+ const hasDependency = isDevDependency
29
+ ? packageJson.devDependencies[pkg]
30
+ : packageJson.dependencies[pkg];
31
+ return !hasDependency;
32
+ });
33
+ const depsToInstall = packagesToInstall
34
+ .filter((p) => { var _a; return !p.isDevDependency && ((_a = packageJson.dependencies) === null || _a === void 0 ? void 0 : _a[p.pkg]) === undefined; })
35
+ .map((p) => `${p.pkg}${p.version ? `@${p.version}` : ""}`);
36
+ const devDepsToInstall = packagesToInstall
37
+ .filter((p) => {
38
+ var _a;
39
+ return p.isDevDependency &&
40
+ ((_a = packageJson.devDependencies) === null || _a === void 0 ? void 0 : _a[p.pkg]) === undefined;
41
+ })
42
+ .map((p) => `${p.pkg}${p.version ? `@${p.version}` : ""}`);
43
+ if (depsToInstall.length) {
44
+ await this.runPackageManagerInstall(depsToInstall, false);
45
+ }
46
+ if (devDepsToInstall.length) {
47
+ await this.runPackageManagerInstall(devDepsToInstall, true);
48
+ }
49
+ }
50
+ getPackageJsonContent() {
51
+ const packageJsonPath = this.locatePackageJsonWithDeenruvDependency();
52
+ if (!packageJsonPath || !fs_extra_1.default.existsSync(packageJsonPath)) {
53
+ (0, prompts_1.note)(`Could not find a package.json in the current directory. Please run this command from the root of a Deenruv project.`);
54
+ return false;
55
+ }
56
+ return fs_extra_1.default.readJsonSync(packageJsonPath);
57
+ }
58
+ determinePackageManager() {
59
+ const rootDir = this.getPackageRootDir().getPath();
60
+ const yarnLockPath = path_1.default.join(rootDir, "yarn.lock");
61
+ const npmLockPath = path_1.default.join(rootDir, "package-lock.json");
62
+ const pnpmLockPath = path_1.default.join(rootDir, "pnpm-lock.yaml");
63
+ if (fs_extra_1.default.existsSync(yarnLockPath)) {
64
+ return "yarn";
65
+ }
66
+ if (fs_extra_1.default.existsSync(npmLockPath)) {
67
+ return "npm";
68
+ }
69
+ if (fs_extra_1.default.existsSync(pnpmLockPath)) {
70
+ return "pnpm";
71
+ }
72
+ return "npm";
73
+ }
74
+ addScript(scriptName, script) {
75
+ const packageJson = this.getPackageJsonContent();
76
+ packageJson.scripts = packageJson.scripts || {};
77
+ packageJson.scripts[scriptName] = script;
78
+ const packageJsonPath = this.deenruvPackageJsonPath;
79
+ if (packageJsonPath) {
80
+ fs_extra_1.default.writeJsonSync(packageJsonPath, packageJson, { spaces: 2 });
81
+ }
82
+ }
83
+ getPackageRootDir() {
84
+ const rootDir = this.project.getDirectory(".");
85
+ if (!rootDir) {
86
+ throw new Error("Could not find the root directory of the project");
87
+ }
88
+ return rootDir;
89
+ }
90
+ locateRootPackageJson() {
91
+ if (this._rootPackageJsonPath) {
92
+ return this._rootPackageJsonPath;
93
+ }
94
+ const rootDir = this.getPackageRootDir().getPath();
95
+ const rootPackageJsonPath = path_1.default.join(rootDir, "package.json");
96
+ if (fs_extra_1.default.existsSync(rootPackageJsonPath)) {
97
+ this._rootPackageJsonPath = rootPackageJsonPath;
98
+ return rootPackageJsonPath;
99
+ }
100
+ return null;
101
+ }
102
+ locatePackageJsonWithDeenruvDependency() {
103
+ if (this._deenruvPackageJsonPath) {
104
+ return this._deenruvPackageJsonPath;
105
+ }
106
+ const rootDir = this.getPackageRootDir().getPath();
107
+ const potentialMonorepoDirs = ["packages", "apps", "libs"];
108
+ const rootPackageJsonPath = path_1.default.join(this.getPackageRootDir().getPath(), "package.json");
109
+ if (this.hasDeenruvDependency(rootPackageJsonPath)) {
110
+ return rootPackageJsonPath;
111
+ }
112
+ for (const dir of potentialMonorepoDirs) {
113
+ const monorepoDir = path_1.default.join(rootDir, dir);
114
+ for (const subDir of fs_extra_1.default.readdirSync(monorepoDir)) {
115
+ const packageJsonPath = path_1.default.join(monorepoDir, subDir, "package.json");
116
+ if (this.hasDeenruvDependency(packageJsonPath)) {
117
+ this._deenruvPackageJsonPath = packageJsonPath;
118
+ return packageJsonPath;
119
+ }
120
+ }
121
+ }
122
+ return null;
123
+ }
124
+ hasDeenruvDependency(packageJsonPath) {
125
+ var _a;
126
+ if (!fs_extra_1.default.existsSync(packageJsonPath)) {
127
+ return false;
128
+ }
129
+ const packageJson = fs_extra_1.default.readJsonSync(packageJsonPath);
130
+ return !!((_a = packageJson.dependencies) === null || _a === void 0 ? void 0 : _a["@deenruv/core"]);
131
+ }
132
+ async runPackageManagerInstall(dependencies, isDev) {
133
+ return new Promise((resolve, reject) => {
134
+ const packageManager = this.determinePackageManager();
135
+ let command = "";
136
+ let args = [];
137
+ if (packageManager === "yarn") {
138
+ command = "yarnpkg";
139
+ args = ["add", "--exact", "--ignore-engines"];
140
+ if (isDev) {
141
+ args.push("--dev");
142
+ }
143
+ args = args.concat(dependencies);
144
+ }
145
+ else if (packageManager === "pnpm") {
146
+ command = "pnpm";
147
+ args = ["add", "--save-exact"].concat(dependencies);
148
+ if (isDev) {
149
+ args.push("--save-dev", "--workspace-root");
150
+ }
151
+ }
152
+ else {
153
+ command = "npm";
154
+ args = [
155
+ "install",
156
+ "--save",
157
+ "--save-exact",
158
+ "--loglevel",
159
+ "error",
160
+ ].concat(dependencies);
161
+ if (isDev) {
162
+ args.push("--save-dev");
163
+ }
164
+ }
165
+ const child = (0, cross_spawn_1.default)(command, args, { stdio: "ignore" });
166
+ child.on("close", (code) => {
167
+ if (code !== 0) {
168
+ const message = "An error occurred when installing dependencies.";
169
+ reject({
170
+ message,
171
+ command: `${command} ${args.join(" ")}`,
172
+ });
173
+ return;
174
+ }
175
+ resolve();
176
+ });
177
+ });
178
+ }
179
+ }
180
+ exports.PackageJson = PackageJson;
181
+ //# sourceMappingURL=package-json-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-json-ref.js","sourceRoot":"","sources":["../../src/shared/package-json-ref.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { ClassDeclaration, Scope } from "ts-morph";
2
+ import { EntityRef } from "./entity-ref";
3
+ export interface ServiceFeatures {
4
+ findOne: boolean;
5
+ findAll: boolean;
6
+ create: boolean;
7
+ update: boolean;
8
+ delete: boolean;
9
+ }
10
+ export declare class ServiceRef {
11
+ readonly classDeclaration: ClassDeclaration;
12
+ readonly features: ServiceFeatures;
13
+ readonly crudEntityRef?: EntityRef;
14
+ get name(): string;
15
+ get nameCamelCase(): string;
16
+ get isCrudService(): boolean;
17
+ constructor(classDeclaration: ClassDeclaration);
18
+ injectDependency(dependency: {
19
+ scope?: Scope;
20
+ name: string;
21
+ type: string;
22
+ }): void;
23
+ private getEntityRef;
24
+ private unwrapReturnType;
25
+ }