@ronas-it/nx-generators 0.10.3 → 0.10.5

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 (220) hide show
  1. package/README.md +10 -1
  2. package/package.json +4 -3
  3. package/src/generators/code-checks/config.d.ts +18 -0
  4. package/src/generators/code-checks/config.js +20 -0
  5. package/src/generators/code-checks/config.js.map +1 -0
  6. package/src/generators/code-checks/files/.eslintrc.json.template +173 -1
  7. package/src/generators/code-checks/generator.d.ts +4 -0
  8. package/src/generators/code-checks/generator.js +53 -0
  9. package/src/generators/code-checks/generator.js.map +1 -0
  10. package/src/generators/code-checks/scripts.d.ts +6 -0
  11. package/src/generators/code-checks/scripts.js +8 -0
  12. package/src/generators/code-checks/scripts.js.map +1 -0
  13. package/src/generators/entity-api/generator.d.ts +4 -0
  14. package/src/generators/entity-api/generator.js +87 -0
  15. package/src/generators/entity-api/generator.js.map +1 -0
  16. package/src/generators/expo-app/generator.d.ts +4 -0
  17. package/src/generators/expo-app/generator.js +93 -0
  18. package/src/generators/expo-app/generator.js.map +1 -0
  19. package/src/generators/expo-app/scripts.d.ts +13 -0
  20. package/src/generators/expo-app/scripts.js +15 -0
  21. package/src/generators/expo-app/scripts.js.map +1 -0
  22. package/src/generators/form/generator.d.ts +4 -0
  23. package/src/generators/form/generator.js +55 -0
  24. package/src/generators/form/generator.js.map +1 -0
  25. package/src/generators/form/utils/add-form-usage.d.ts +1 -0
  26. package/src/generators/form/utils/add-form-usage.js +71 -0
  27. package/src/generators/form/utils/add-form-usage.js.map +1 -0
  28. package/src/generators/form/utils/get-app-name.d.ts +1 -0
  29. package/src/generators/form/utils/get-app-name.js +8 -0
  30. package/src/generators/form/utils/get-app-name.js.map +1 -0
  31. package/src/generators/form/utils/get-form-utils-directory.d.ts +2 -0
  32. package/src/generators/form/utils/get-form-utils-directory.js +35 -0
  33. package/src/generators/form/utils/get-form-utils-directory.js.map +1 -0
  34. package/src/generators/form/utils/index.js +8 -0
  35. package/src/generators/form/utils/index.js.map +1 -0
  36. package/src/generators/form/utils/update-index.d.ts +2 -0
  37. package/src/generators/form/utils/update-index.js +18 -0
  38. package/src/generators/form/utils/update-index.js.map +1 -0
  39. package/src/generators/lib-move/generator.d.ts +4 -0
  40. package/src/generators/lib-move/generator.js +37 -0
  41. package/src/generators/lib-move/generator.js.map +1 -0
  42. package/src/generators/lib-remove/generator.d.ts +4 -0
  43. package/src/generators/lib-remove/generator.js +22 -0
  44. package/src/generators/lib-remove/generator.js.map +1 -0
  45. package/src/generators/lib-rename/generator.d.ts +4 -0
  46. package/src/generators/lib-rename/generator.js +22 -0
  47. package/src/generators/lib-rename/generator.js.map +1 -0
  48. package/src/generators/lib-tags/generator.d.ts +4 -0
  49. package/src/generators/lib-tags/generator.js +56 -0
  50. package/src/generators/lib-tags/generator.js.map +1 -0
  51. package/src/generators/lib-tags/interfaces/context.d.ts +8 -0
  52. package/src/generators/lib-tags/interfaces/context.js +3 -0
  53. package/src/generators/lib-tags/interfaces/context.js.map +1 -0
  54. package/src/generators/lib-tags/interfaces/index.js +6 -0
  55. package/src/generators/lib-tags/interfaces/index.js.map +1 -0
  56. package/src/generators/lib-tags/interfaces/{verify-tag-config.ts → verify-tag-config.d.ts} +6 -7
  57. package/src/generators/lib-tags/interfaces/verify-tag-config.js +3 -0
  58. package/src/generators/lib-tags/interfaces/verify-tag-config.js.map +1 -0
  59. package/src/generators/lib-tags/types/index.js +5 -0
  60. package/src/generators/lib-tags/types/index.js.map +1 -0
  61. package/src/generators/lib-tags/types/tag.js +3 -0
  62. package/src/generators/lib-tags/types/tag.js.map +1 -0
  63. package/src/generators/lib-tags/utils/check-lib-tags.d.ts +4 -0
  64. package/src/generators/lib-tags/utils/check-lib-tags.js +113 -0
  65. package/src/generators/lib-tags/utils/check-lib-tags.js.map +1 -0
  66. package/src/generators/lib-tags/utils/index.js +5 -0
  67. package/src/generators/lib-tags/utils/index.js.map +1 -0
  68. package/src/generators/next-app/generator.d.ts +4 -0
  69. package/src/generators/next-app/generator.js +71 -0
  70. package/src/generators/next-app/generator.js.map +1 -0
  71. package/src/generators/react-component/generator.d.ts +4 -0
  72. package/src/generators/react-component/generator.js +60 -0
  73. package/src/generators/react-component/generator.js.map +1 -0
  74. package/src/generators/react-lib/generator.d.ts +4 -0
  75. package/src/generators/react-lib/generator.js +61 -0
  76. package/src/generators/react-lib/generator.js.map +1 -0
  77. package/src/generators/repo-config/generator.d.ts +3 -0
  78. package/src/generators/repo-config/generator.js +36 -0
  79. package/src/generators/repo-config/generator.js.map +1 -0
  80. package/src/generators/repo-config/scripts.d.ts +4 -0
  81. package/src/generators/repo-config/scripts.js +6 -0
  82. package/src/generators/repo-config/scripts.js.map +1 -0
  83. package/src/index.js +2 -0
  84. package/src/index.js.map +1 -0
  85. package/src/shared/dependencies.d.ts +73 -0
  86. package/src/shared/dependencies.js +79 -0
  87. package/src/shared/dependencies.js.map +1 -0
  88. package/src/shared/enums/base-generator-type.d.ts +4 -0
  89. package/src/shared/enums/base-generator-type.js +9 -0
  90. package/src/shared/enums/base-generator-type.js.map +1 -0
  91. package/src/shared/enums/index.js +5 -0
  92. package/src/shared/enums/index.js.map +1 -0
  93. package/src/shared/generators/api-client/generator.d.ts +6 -0
  94. package/src/shared/generators/api-client/generator.js +37 -0
  95. package/src/shared/generators/api-client/generator.js.map +1 -0
  96. package/src/shared/generators/api-client/index.js +5 -0
  97. package/src/shared/generators/api-client/index.js.map +1 -0
  98. package/src/shared/generators/app-env/generator.d.ts +8 -0
  99. package/src/shared/generators/app-env/generator.js +28 -0
  100. package/src/shared/generators/app-env/generator.js.map +1 -0
  101. package/src/shared/generators/app-env/index.js +5 -0
  102. package/src/shared/generators/app-env/index.js.map +1 -0
  103. package/src/shared/generators/auth/generator.d.ts +4 -0
  104. package/src/shared/generators/auth/generator.js +82 -0
  105. package/src/shared/generators/auth/generator.js.map +1 -0
  106. package/src/shared/generators/auth/index.js +5 -0
  107. package/src/shared/generators/auth/index.js.map +1 -0
  108. package/src/shared/generators/form-utils/generator.d.ts +5 -0
  109. package/src/shared/generators/form-utils/generator.js +24 -0
  110. package/src/shared/generators/form-utils/generator.js.map +1 -0
  111. package/src/shared/generators/form-utils/index.js +5 -0
  112. package/src/shared/generators/form-utils/index.js.map +1 -0
  113. package/src/shared/generators/index.js +12 -0
  114. package/src/shared/generators/index.js.map +1 -0
  115. package/src/shared/generators/rn-styles/generator.d.ts +6 -0
  116. package/src/shared/generators/rn-styles/generator.js +36 -0
  117. package/src/shared/generators/rn-styles/generator.js.map +1 -0
  118. package/src/shared/generators/rn-styles/index.js +5 -0
  119. package/src/shared/generators/rn-styles/index.js.map +1 -0
  120. package/src/shared/generators/storage/generator.d.ts +6 -0
  121. package/src/shared/generators/storage/generator.js +27 -0
  122. package/src/shared/generators/storage/generator.js.map +1 -0
  123. package/src/shared/generators/storage/index.js +5 -0
  124. package/src/shared/generators/storage/index.js.map +1 -0
  125. package/src/shared/generators/store/generator.d.ts +4 -0
  126. package/src/shared/generators/store/generator.js +36 -0
  127. package/src/shared/generators/store/generator.js.map +1 -0
  128. package/src/shared/generators/store/index.js +5 -0
  129. package/src/shared/generators/store/index.js.map +1 -0
  130. package/src/shared/generators/ui-kitten/generator.d.ts +6 -0
  131. package/src/shared/generators/ui-kitten/generator.js +40 -0
  132. package/src/shared/generators/ui-kitten/generator.js.map +1 -0
  133. package/src/shared/generators/ui-kitten/index.js +5 -0
  134. package/src/shared/generators/ui-kitten/index.js.map +1 -0
  135. package/src/shared/templates/config-template.json +2 -12
  136. package/src/shared/utils/cli-utils.d.ts +31 -0
  137. package/src/shared/utils/cli-utils.js +129 -0
  138. package/src/shared/utils/cli-utils.js.map +1 -0
  139. package/src/shared/utils/config-utils.d.ts +19 -0
  140. package/src/shared/utils/config-utils.js +124 -0
  141. package/src/shared/utils/config-utils.js.map +1 -0
  142. package/src/shared/utils/constants.d.ts +3 -0
  143. package/src/shared/utils/constants.js +7 -0
  144. package/src/shared/utils/constants.js.map +1 -0
  145. package/src/shared/utils/dynamic-import.d.ts +1 -0
  146. package/src/shared/utils/dynamic-import.js +5 -0
  147. package/src/shared/utils/dynamic-import.js.map +1 -0
  148. package/src/shared/utils/format-utils.d.ts +4 -0
  149. package/src/shared/utils/format-utils.js +18 -0
  150. package/src/shared/utils/format-utils.js.map +1 -0
  151. package/src/shared/utils/get-lib-directory-name.d.ts +1 -0
  152. package/src/shared/utils/get-lib-directory-name.js +15 -0
  153. package/src/shared/utils/get-lib-directory-name.js.map +1 -0
  154. package/src/shared/utils/index.js +11 -0
  155. package/src/shared/utils/index.js.map +1 -0
  156. package/src/shared/utils/ts-utils.d.ts +2 -0
  157. package/src/shared/utils/ts-utils.js +22 -0
  158. package/src/shared/utils/ts-utils.js.map +1 -0
  159. package/.eslintrc.json +0 -37
  160. package/jest.config.ts +0 -10
  161. package/project.json +0 -61
  162. package/src/generators/code-checks/config.ts +0 -17
  163. package/src/generators/code-checks/generator.ts +0 -72
  164. package/src/generators/code-checks/scripts.ts +0 -5
  165. package/src/generators/entity-api/generator.ts +0 -127
  166. package/src/generators/expo-app/generator.ts +0 -152
  167. package/src/generators/expo-app/scripts.ts +0 -12
  168. package/src/generators/form/generator.ts +0 -53
  169. package/src/generators/form/utils/add-form-usage.ts +0 -86
  170. package/src/generators/form/utils/get-app-name.ts +0 -3
  171. package/src/generators/form/utils/get-form-utils-directory.ts +0 -46
  172. package/src/generators/form/utils/update-index.ts +0 -14
  173. package/src/generators/lib-move/generator.ts +0 -57
  174. package/src/generators/lib-remove/generator.ts +0 -25
  175. package/src/generators/lib-rename/generator.ts +0 -25
  176. package/src/generators/lib-tags/generator.ts +0 -68
  177. package/src/generators/lib-tags/interfaces/context.ts +0 -9
  178. package/src/generators/lib-tags/utils/check-lib-tags.ts +0 -143
  179. package/src/generators/next-app/generator.ts +0 -99
  180. package/src/generators/react-component/generator.ts +0 -80
  181. package/src/generators/react-lib/generator.ts +0 -86
  182. package/src/generators/repo-config/generator.ts +0 -44
  183. package/src/generators/repo-config/scripts.ts +0 -3
  184. package/src/shared/dependencies.ts +0 -76
  185. package/src/shared/enums/base-generator-type.ts +0 -4
  186. package/src/shared/generators/api-client/generator.ts +0 -49
  187. package/src/shared/generators/app-env/generator.ts +0 -37
  188. package/src/shared/generators/auth/generator.ts +0 -107
  189. package/src/shared/generators/form-utils/generator.ts +0 -23
  190. package/src/shared/generators/rn-styles/generator.ts +0 -49
  191. package/src/shared/generators/storage/generator.ts +0 -34
  192. package/src/shared/generators/store/generator.ts +0 -48
  193. package/src/shared/generators/ui-kitten/generator.ts +0 -55
  194. package/src/shared/utils/cli-utils.ts +0 -149
  195. package/src/shared/utils/config-utils.ts +0 -146
  196. package/src/shared/utils/constants.ts +0 -3
  197. package/src/shared/utils/dynamic-import.ts +0 -4
  198. package/src/shared/utils/format-utils.ts +0 -16
  199. package/src/shared/utils/get-lib-directory-name.ts +0 -12
  200. package/src/shared/utils/ts-utils.ts +0 -17
  201. package/tsconfig.json +0 -16
  202. package/tsconfig.lib.json +0 -10
  203. package/tsconfig.spec.json +0 -14
  204. /package/src/generators/form/utils/{index.ts → index.d.ts} +0 -0
  205. /package/src/generators/lib-tags/interfaces/{index.ts → index.d.ts} +0 -0
  206. /package/src/generators/lib-tags/types/{index.ts → index.d.ts} +0 -0
  207. /package/src/generators/lib-tags/types/{tag.ts → tag.d.ts} +0 -0
  208. /package/src/generators/lib-tags/utils/{index.ts → index.d.ts} +0 -0
  209. /package/src/{index.ts → index.d.ts} +0 -0
  210. /package/src/shared/enums/{index.ts → index.d.ts} +0 -0
  211. /package/src/shared/generators/api-client/{index.ts → index.d.ts} +0 -0
  212. /package/src/shared/generators/app-env/{index.ts → index.d.ts} +0 -0
  213. /package/src/shared/generators/auth/{index.ts → index.d.ts} +0 -0
  214. /package/src/shared/generators/form-utils/{index.ts → index.d.ts} +0 -0
  215. /package/src/shared/generators/{index.ts → index.d.ts} +0 -0
  216. /package/src/shared/generators/rn-styles/{index.ts → index.d.ts} +0 -0
  217. /package/src/shared/generators/storage/{index.ts → index.d.ts} +0 -0
  218. /package/src/shared/generators/store/{index.ts → index.d.ts} +0 -0
  219. /package/src/shared/generators/ui-kitten/{index.ts → index.d.ts} +0 -0
  220. /package/src/shared/utils/{index.ts → index.d.ts} +0 -0
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getLibraryDetailsByName = exports.selectProject = exports.getProjectsDetails = exports.appendFileContent = exports.filterSource = exports.searchAliasPath = exports.searchNxLibsPaths = exports.getNxLibsPaths = exports.validateLibraryType = exports.LibraryType = exports.askQuestion = exports.createCliReadline = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const fs = require("fs");
6
+ const readline = require("readline");
7
+ const devkit_1 = require("@nx/devkit");
8
+ const constants_1 = require("./constants");
9
+ const dynamic_import_1 = require("./dynamic-import");
10
+ const createCliReadline = () => readline.createInterface({
11
+ input: process.stdin,
12
+ output: process.stdout,
13
+ });
14
+ exports.createCliReadline = createCliReadline;
15
+ const askQuestion = (question, defaultAnswer, cliReadline) => {
16
+ const rl = cliReadline || (0, exports.createCliReadline)();
17
+ if (defaultAnswer) {
18
+ rl.write(defaultAnswer);
19
+ // Move cursor to end of the line
20
+ setTimeout(() => rl.write(null, { ctrl: true, name: 'e' }));
21
+ }
22
+ return new Promise((resolve) => rl.question(question, (answer) => {
23
+ if (!cliReadline) {
24
+ rl.close();
25
+ }
26
+ resolve(answer);
27
+ }));
28
+ };
29
+ exports.askQuestion = askQuestion;
30
+ var LibraryType;
31
+ (function (LibraryType) {
32
+ LibraryType["UI"] = "ui";
33
+ LibraryType["DATA_ACCESS"] = "data-access";
34
+ LibraryType["FEATURES"] = "features";
35
+ LibraryType["UTILS"] = "utils";
36
+ })(LibraryType || (exports.LibraryType = LibraryType = {}));
37
+ const parseLibsPaths = () => {
38
+ let tsconfig;
39
+ if (fs.existsSync('tsconfig.base.json')) {
40
+ tsconfig = JSON.parse(fs.readFileSync('tsconfig.base.json', 'utf8'));
41
+ }
42
+ else {
43
+ tsconfig = JSON.parse(fs.readFileSync('tsconfig.json', 'utf8'));
44
+ }
45
+ return tsconfig.compilerOptions.paths;
46
+ };
47
+ const validateLibraryType = (type) => {
48
+ const allLibraryTypes = Object.values(LibraryType);
49
+ if (!allLibraryTypes.includes(type)) {
50
+ throw new Error(`Invalid library type: ${type}.\nAvailable types: ${allLibraryTypes.join(', ')}`);
51
+ }
52
+ return type;
53
+ };
54
+ exports.validateLibraryType = validateLibraryType;
55
+ const getNxLibsPaths = (types) => {
56
+ const libs = parseLibsPaths();
57
+ return Object.values(libs)
58
+ .map((value) => value[0].replace('/index.ts', ''))
59
+ .filter((value) => types.some((type) => value.includes(type)));
60
+ };
61
+ exports.getNxLibsPaths = getNxLibsPaths;
62
+ const searchNxLibsPaths = (paths, input, method = 'includes') => {
63
+ return paths.filter((path) => path[method](input));
64
+ };
65
+ exports.searchNxLibsPaths = searchNxLibsPaths;
66
+ const searchAliasPath = (input) => {
67
+ const libs = parseLibsPaths();
68
+ const path = Object.keys(libs).find((key) => libs[key][0].includes(input));
69
+ return path;
70
+ };
71
+ exports.searchAliasPath = searchAliasPath;
72
+ const filterSource = (input, source) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
73
+ const filteredData = input
74
+ ? source.filter((pathname) => pathname.toLowerCase().includes(input.toLowerCase()))
75
+ : source;
76
+ return filteredData.map((path) => ({ value: path }));
77
+ });
78
+ exports.filterSource = filterSource;
79
+ const appendFileContent = (path, endContent, tree) => {
80
+ const content = tree.read(path, 'utf-8');
81
+ const contentUpdate = (content || '') + endContent;
82
+ tree.write(path, contentUpdate);
83
+ };
84
+ exports.appendFileContent = appendFileContent;
85
+ const getProjectsDetails = (tree, projectType) => Array.from((0, devkit_1.getProjects)(tree))
86
+ .filter(([_, project]) => project.projectType === projectType)
87
+ .map(([name, project]) => ({ name, path: project.root }));
88
+ exports.getProjectsDetails = getProjectsDetails;
89
+ const selectProject = (tree, projectType, message) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
90
+ const { default: autocomplete } = yield (0, dynamic_import_1.dynamicImport)('inquirer-autocomplete-standalone');
91
+ const projects = (0, exports.getProjectsDetails)(tree, projectType);
92
+ if (!projects.length) {
93
+ throw new Error(`No projects of type ${projectType} found.`);
94
+ }
95
+ return autocomplete({
96
+ message,
97
+ source: (input) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
98
+ const entries = [...projects, { name: constants_1.constants.sharedValue, path: constants_1.constants.sharedValue }].map((project) => ({
99
+ name: `${project.name} (${project.path})`,
100
+ value: Object.assign(Object.assign({}, project), { name: projectType === 'application' ? project.path.replace('apps/', '') : project.name }),
101
+ }));
102
+ if (!input) {
103
+ return entries;
104
+ }
105
+ return entries.filter((entry) => entry.name.toLowerCase().includes(input.toLowerCase()));
106
+ }),
107
+ });
108
+ });
109
+ exports.selectProject = selectProject;
110
+ const getLibraryDetailsByName = (tree, libraryName) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
111
+ let selectedLibraryName;
112
+ let selectedLibraryPath;
113
+ if (libraryName) {
114
+ selectedLibraryName = libraryName;
115
+ const library = (0, exports.getProjectsDetails)(tree, 'library').find((library) => library.name === selectedLibraryName);
116
+ if (!library) {
117
+ throw new Error(`Library ${selectedLibraryName} not found`);
118
+ }
119
+ selectedLibraryPath = library.path;
120
+ }
121
+ else {
122
+ const selectedLibrary = yield (0, exports.selectProject)(tree, 'library', 'Select the library to move: ');
123
+ selectedLibraryName = selectedLibrary.name;
124
+ selectedLibraryPath = selectedLibrary.path;
125
+ }
126
+ return { name: selectedLibraryName, path: selectedLibraryPath };
127
+ });
128
+ exports.getLibraryDetailsByName = getLibraryDetailsByName;
129
+ //# sourceMappingURL=cli-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-utils.js","sourceRoot":"","sources":["../../../../../plugin/src/shared/utils/cli-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export interface Constraint {
3
+ sourceTag: string;
4
+ onlyDependOnLibsWithTags: Array<string>;
5
+ }
6
+ export declare const getNxRulesEntryOrThrowError: (config: Record<string, any>) => {
7
+ files: Array<string>;
8
+ rules: Record<string, any>;
9
+ };
10
+ export declare const getNxRulesStatus: (config: Record<string, any>) => string;
11
+ export declare const getNxRules: (config: Record<string, any>) => Array<Constraint>;
12
+ export declare const readESLintConfig: (tree: Tree) => {
13
+ config: Record<string, any>;
14
+ path: string;
15
+ };
16
+ export declare const addNxAppTag: (tree: Tree, appDirectory: string) => void;
17
+ export declare const addNxScopeTag: (tree: Tree, scope: string) => void;
18
+ export declare const getImportPathPrefix: (tree: Tree) => string;
19
+ export declare const verifyEsLintConfig: (tree: Tree) => Record<string, any>;
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.verifyEsLintConfig = exports.getImportPathPrefix = exports.addNxScopeTag = exports.addNxAppTag = exports.readESLintConfig = exports.getNxRules = exports.getNxRulesStatus = exports.getNxRulesEntryOrThrowError = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const lodash_1 = require("lodash");
6
+ const defaultEsLintConfigPath = '.eslintrc.json';
7
+ const getNxRulesEntry = (config) => { var _a; return (_a = config.overrides) === null || _a === void 0 ? void 0 : _a.find((entry) => !!entry.rules['@nx/enforce-module-boundaries']); };
8
+ const getNxRulesEntryOrThrowError = (config) => {
9
+ if (!config) {
10
+ throw new Error('ESLint config not found');
11
+ }
12
+ const entryWithRules = getNxRulesEntry(config);
13
+ if (!entryWithRules) {
14
+ throw new Error(`ESLint: can't find '@nx/enforce-module-boundaries' rule`);
15
+ }
16
+ return entryWithRules;
17
+ };
18
+ exports.getNxRulesEntryOrThrowError = getNxRulesEntryOrThrowError;
19
+ const getNxRulesStatus = (config) => {
20
+ return (0, exports.getNxRulesEntryOrThrowError)(config).rules['@nx/enforce-module-boundaries'][0];
21
+ };
22
+ exports.getNxRulesStatus = getNxRulesStatus;
23
+ const getNxRules = (config) => {
24
+ return (0, exports.getNxRulesEntryOrThrowError)(config).rules['@nx/enforce-module-boundaries'][1].depConstraints;
25
+ };
26
+ exports.getNxRules = getNxRules;
27
+ const readESLintConfig = (tree) => {
28
+ var _a;
29
+ let path = defaultEsLintConfigPath;
30
+ const checkConfigExists = (path) => {
31
+ if (!tree.exists(path)) {
32
+ throw new Error(`ESLint config not found: ${path}`);
33
+ }
34
+ };
35
+ checkConfigExists(path);
36
+ let config = (0, devkit_1.readJson)(tree, path);
37
+ if (getNxRulesEntry(config)) {
38
+ return { config, path };
39
+ }
40
+ if ((_a = config.extends) === null || _a === void 0 ? void 0 : _a.length) {
41
+ path = config.extends[0];
42
+ checkConfigExists(path);
43
+ config = (0, devkit_1.readJson)(tree, config.extends[0]);
44
+ }
45
+ return { config, path };
46
+ };
47
+ exports.readESLintConfig = readESLintConfig;
48
+ const getNpmScope = (tree) => {
49
+ const { name } = tree.exists('package.json') ? (0, devkit_1.readJson)(tree, 'package.json') : { name: null };
50
+ return (name === null || name === void 0 ? void 0 : name.startsWith('@')) ? name.split('/')[0].substring(1) : undefined;
51
+ };
52
+ const addNxAppTag = (tree, appDirectory) => {
53
+ const { config, path } = (0, exports.readESLintConfig)(tree);
54
+ const constraints = (0, exports.getNxRules)(config);
55
+ const doesTagExist = !!constraints.find((constraint) => constraint.sourceTag === `app:${appDirectory}`);
56
+ if (doesTagExist) {
57
+ return;
58
+ }
59
+ constraints.push({
60
+ sourceTag: `app:${appDirectory}`,
61
+ onlyDependOnLibsWithTags: [`app:${appDirectory}`, 'app:shared'],
62
+ });
63
+ (0, devkit_1.writeJson)(tree, path, config);
64
+ };
65
+ exports.addNxAppTag = addNxAppTag;
66
+ const addNxScopeTag = (tree, scope) => {
67
+ const { config, path } = (0, exports.readESLintConfig)(tree);
68
+ const constraints = (0, exports.getNxRules)(config);
69
+ const doesTagExist = !!constraints.find((constraint) => constraint.sourceTag === `scope:${scope}`);
70
+ if (doesTagExist) {
71
+ return;
72
+ }
73
+ constraints.push({ sourceTag: `scope:${scope}`, onlyDependOnLibsWithTags: [`scope:${scope}`, 'scope:shared'] });
74
+ (0, devkit_1.writeJson)(tree, path, config);
75
+ };
76
+ exports.addNxScopeTag = addNxScopeTag;
77
+ const getImportPathPrefix = (tree) => {
78
+ const npmScope = getNpmScope(tree);
79
+ return npmScope ? `${npmScope === '@' ? '' : '@'}${npmScope}` : '';
80
+ };
81
+ exports.getImportPathPrefix = getImportPathPrefix;
82
+ const verifyEsLintConfig = (tree) => {
83
+ const { config, path } = (0, exports.readESLintConfig)(tree);
84
+ const importantTags = [
85
+ 'app:shared',
86
+ 'scope:shared',
87
+ 'type:app',
88
+ 'type:data-access',
89
+ 'type:features',
90
+ 'type:ui',
91
+ 'type:utils',
92
+ ];
93
+ if (!config || (0, lodash_1.isEmpty)(config)) {
94
+ throw new Error(`Failed to load ESLint config: ${path}`);
95
+ }
96
+ try {
97
+ const rulesEntry = (0, exports.getNxRulesEntryOrThrowError)(config).rules['@nx/enforce-module-boundaries'];
98
+ const tags = rulesEntry[1].depConstraints.map((rule) => rule.sourceTag);
99
+ const areRulesDisabled = rulesEntry[1].depConstraints.find((rule) => rule.sourceTag === '*' && rule.onlyDependOnLibsWithTags.includes('*'));
100
+ const areRulesBroken = !importantTags.every((tag) => tags.includes(tag));
101
+ if (rulesEntry[0] !== 'error') {
102
+ rulesEntry[0] = 'error';
103
+ }
104
+ if (areRulesDisabled || areRulesBroken) {
105
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
106
+ const esLintConfigTemplate = require('../templates/config-template.json');
107
+ const templateRules = esLintConfigTemplate.rules['@nx/enforce-module-boundaries'];
108
+ rulesEntry[0] = templateRules[0];
109
+ rulesEntry[1] = templateRules[1];
110
+ (0, devkit_1.writeJson)(tree, path, config);
111
+ }
112
+ // TODO: use custom errors
113
+ }
114
+ catch (_a) {
115
+ devkit_1.output.warn({ title: devkit_1.output.bold('ESLint config has no @nx/enforce-module-boundaries rule. Updating rules...') });
116
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
117
+ const esLintConfigRulesTemplate = require('../templates/config-template.json');
118
+ config.overrides.push(esLintConfigRulesTemplate);
119
+ (0, devkit_1.writeJson)(tree, path, config);
120
+ }
121
+ return config;
122
+ };
123
+ exports.verifyEsLintConfig = verifyEsLintConfig;
124
+ //# sourceMappingURL=config-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-utils.js","sourceRoot":"","sources":["../../../../../plugin/src/shared/utils/config-utils.ts"],"names":[],"mappings":";;;AAAA,uCAA+D;AAC/D,mCAAiC;AAEjC,MAAM,uBAAuB,GAAG,gBAAgB,CAAC;AAOjD,MAAM,eAAe,GAAG,CAAC,MAA2B,EAAwD,EAAE,WAC5G,OAAA,MAAA,MAAM,CAAC,SAAS,0CAAE,IAAI,CAAC,CAAC,KAAsC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAA,EAAA,CAAC;AAE9G,MAAM,2BAA2B,GAAG,CACzC,MAA2B,EAC2B,EAAE;IACxD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAE/C,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAdW,QAAA,2BAA2B,+BActC;AAEK,MAAM,gBAAgB,GAAG,CAAC,MAA2B,EAAU,EAAE;IACtE,OAAO,IAAA,mCAA2B,EAAC,MAAM,CAAC,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC;AACvF,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B;AAEK,MAAM,UAAU,GAAG,CAAC,MAA2B,EAAqB,EAAE;IAC3E,OAAO,IAAA,mCAA2B,EAAC,MAAM,CAAC,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;AACtG,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB;AAEK,MAAM,gBAAgB,GAAG,CAAC,IAAU,EAAiD,EAAE;;IAC5F,IAAI,IAAI,GAAG,uBAAuB,CAAC;IAEnC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAQ,EAAE;QAC/C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC;IAEF,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAExB,IAAI,MAAM,GAAG,IAAA,iBAAQ,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAElC,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,MAAA,MAAM,CAAC,OAAO,0CAAE,MAAM,EAAE,CAAC;QAC3B,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAEzB,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAExB,MAAM,GAAG,IAAA,iBAAQ,EAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC,CAAC;AA1BW,QAAA,gBAAgB,oBA0B3B;AAEF,MAAM,WAAW,GAAG,CAAC,IAAU,EAAsB,EAAE;IACrD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAA,iBAAQ,EAAoB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAElH,OAAO,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7E,CAAC,CAAC;AAEK,MAAM,WAAW,GAAG,CAAC,IAAU,EAAE,YAAoB,EAAQ,EAAE;IACpE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,wBAAgB,EAAC,IAAI,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,KAAK,OAAO,YAAY,EAAE,CAAC,CAAC;IAExG,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,SAAS,EAAE,OAAO,YAAY,EAAE;QAChC,wBAAwB,EAAE,CAAC,OAAO,YAAY,EAAE,EAAE,YAAY,CAAC;KAChE,CAAC,CAAC;IAEH,IAAA,kBAAS,EAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAChC,CAAC,CAAC;AAfW,QAAA,WAAW,eAetB;AAEK,MAAM,aAAa,GAAG,CAAC,IAAU,EAAE,KAAa,EAAQ,EAAE;IAC/D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,wBAAgB,EAAC,IAAI,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS,KAAK,EAAE,CAAC,CAAC;IAEnG,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,WAAW,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,KAAK,EAAE,EAAE,wBAAwB,EAAE,CAAC,SAAS,KAAK,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IAEhH,IAAA,kBAAS,EAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAChC,CAAC,CAAC;AAZW,QAAA,aAAa,iBAYxB;AAEK,MAAM,mBAAmB,GAAG,CAAC,IAAU,EAAU,EAAE;IACxD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAEnC,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACrE,CAAC,CAAC;AAJW,QAAA,mBAAmB,uBAI9B;AAEK,MAAM,kBAAkB,GAAG,CAAC,IAAU,EAAuB,EAAE;IACpE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,wBAAgB,EAAC,IAAI,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG;QACpB,YAAY;QACZ,cAAc;QACd,UAAU;QACV,kBAAkB;QAClB,eAAe;QACf,SAAS;QACT,YAAY;KACb,CAAC;IAEF,IAAI,CAAC,MAAM,IAAI,IAAA,gBAAO,EAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAA,mCAA2B,EAAC,MAAM,CAAC,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC9F,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpF,MAAM,gBAAgB,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CACxD,CAAC,IAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,GAAG,IAAI,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAC5F,CAAC;QACF,MAAM,cAAc,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAEzE,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;YAC9B,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;QAC1B,CAAC;QAED,IAAI,gBAAgB,IAAI,cAAc,EAAE,CAAC;YACvC,8DAA8D;YAC9D,MAAM,oBAAoB,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC;YAC1E,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAElF,UAAU,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACjC,UAAU,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAEjC,IAAA,kBAAS,EAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAChC,CAAC;QACD,0BAA0B;IAC5B,CAAC;IAAC,WAAM,CAAC;QACP,eAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAM,CAAC,IAAI,CAAC,4EAA4E,CAAC,EAAE,CAAC,CAAC;QAClH,8DAA8D;QAC9D,MAAM,yBAAyB,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC;QAE/E,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAEjD,IAAA,kBAAS,EAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAlDW,QAAA,kBAAkB,sBAkD7B"}
@@ -0,0 +1,3 @@
1
+ export declare const constants: {
2
+ sharedValue: string;
3
+ };
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.constants = void 0;
4
+ exports.constants = {
5
+ sharedValue: 'shared',
6
+ };
7
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../plugin/src/shared/utils/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG;IACvB,WAAW,EAAE,QAAQ;CACtB,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const dynamicImport: <T = never>(specifier: string) => Promise<T>;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dynamicImport = void 0;
4
+ exports.dynamicImport = new Function('specifier', 'return import(specifier)');
5
+ //# sourceMappingURL=dynamic-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-import.js","sourceRoot":"","sources":["../../../../../plugin/src/shared/utils/dynamic-import.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAElE,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const formatName: (value: string, withoutSpaces?: boolean) => string;
2
+ export declare const formatAppIdentifier: (value: string) => string;
3
+ export declare const getProjectName: (str: string) => string;
4
+ export declare const getLibName: (path: string) => string | undefined;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getLibName = exports.getProjectName = exports.formatAppIdentifier = exports.formatName = void 0;
4
+ const formatName = (value, withoutSpaces = false) => value
5
+ .split('-')
6
+ .map((word) => `${word.charAt(0).toUpperCase()}${word.substring(1)}`)
7
+ .join(withoutSpaces ? '' : ' ');
8
+ exports.formatName = formatName;
9
+ const formatAppIdentifier = (value) => value.toLowerCase().replace(/-/g, '.');
10
+ exports.formatAppIdentifier = formatAppIdentifier;
11
+ const getProjectName = (str) => {
12
+ const parts = str.split('@');
13
+ return parts.length > 1 ? parts[1].split('/')[0] : parts[0];
14
+ };
15
+ exports.getProjectName = getProjectName;
16
+ const getLibName = (path) => path.split('/').pop();
17
+ exports.getLibName = getLibName;
18
+ //# sourceMappingURL=format-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-utils.js","sourceRoot":"","sources":["../../../../../plugin/src/shared/utils/format-utils.ts"],"names":[],"mappings":";;;AAAO,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,aAAa,GAAG,KAAK,EAAU,EAAE,CACzE,KAAK;KACF,KAAK,CAAC,GAAG,CAAC;KACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;KACpE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAJvB,QAAA,UAAU,cAIa;AAE7B,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAAxF,QAAA,mBAAmB,uBAAqE;AAE9F,MAAM,cAAc,GAAG,CAAC,GAAW,EAAU,EAAE;IACpD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE7B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC;AAJW,QAAA,cAAc,kBAIzB;AAEK,MAAM,UAAU,GAAG,CAAC,IAAY,EAAsB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AAAzE,QAAA,UAAU,cAA+D"}
@@ -0,0 +1 @@
1
+ export declare function getLibDirectoryName(libName: string, scopeName: string): string;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getLibDirectoryName = void 0;
4
+ function getLibDirectoryName(libName, scopeName) {
5
+ const libWords = libName.split('-');
6
+ const scopeWords = scopeName.split('-');
7
+ let newLibWords = libWords;
8
+ const startsWithScopeWords = scopeWords.every((word, index) => libWords[index] === word);
9
+ if (startsWithScopeWords && libWords.length > scopeWords.length) {
10
+ newLibWords = libWords.slice(scopeWords.length);
11
+ }
12
+ return newLibWords.join('-');
13
+ }
14
+ exports.getLibDirectoryName = getLibDirectoryName;
15
+ //# sourceMappingURL=get-lib-directory-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-lib-directory-name.js","sourceRoot":"","sources":["../../../../../plugin/src/shared/utils/get-lib-directory-name.ts"],"names":[],"mappings":";;;AAAA,SAAgB,mBAAmB,CAAC,OAAe,EAAE,SAAiB;IACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,WAAW,GAAG,QAAQ,CAAC;IAE3B,MAAM,oBAAoB,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IAEzF,IAAI,oBAAoB,IAAI,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;QAChE,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAZD,kDAYC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./format-utils"), exports);
5
+ tslib_1.__exportStar(require("./cli-utils"), exports);
6
+ tslib_1.__exportStar(require("./dynamic-import"), exports);
7
+ tslib_1.__exportStar(require("./config-utils"), exports);
8
+ tslib_1.__exportStar(require("./ts-utils"), exports);
9
+ tslib_1.__exportStar(require("./constants"), exports);
10
+ tslib_1.__exportStar(require("./get-lib-directory-name"), exports);
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../plugin/src/shared/utils/index.ts"],"names":[],"mappings":";;;AAAA,yDAA+B;AAC/B,sDAA4B;AAC5B,2DAAiC;AACjC,yDAA+B;AAC/B,qDAA2B;AAC3B,sDAA4B;AAC5B,mEAAyC"}
@@ -0,0 +1,2 @@
1
+ import { SourceFile } from 'ts-morph';
2
+ export declare const addNamedImport: (namedImport: string, moduleSpecifier: string, file: SourceFile) => void;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addNamedImport = void 0;
4
+ const addNamedImport = (namedImport, moduleSpecifier, file) => {
5
+ const importDeclaration = file.getImportDeclaration(moduleSpecifier);
6
+ if (importDeclaration) {
7
+ const hasNamedImport = importDeclaration
8
+ .getNamedImports()
9
+ .find((declaration) => declaration.getName() === namedImport);
10
+ if (!hasNamedImport) {
11
+ importDeclaration.addNamedImport(namedImport);
12
+ }
13
+ }
14
+ else {
15
+ file.addImportDeclaration({
16
+ namedImports: [namedImport],
17
+ moduleSpecifier,
18
+ });
19
+ }
20
+ };
21
+ exports.addNamedImport = addNamedImport;
22
+ //# sourceMappingURL=ts-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-utils.js","sourceRoot":"","sources":["../../../../../plugin/src/shared/utils/ts-utils.ts"],"names":[],"mappings":";;;AAEO,MAAM,cAAc,GAAG,CAAC,WAAmB,EAAE,eAAuB,EAAE,IAAgB,EAAQ,EAAE;IACrG,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAErE,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,cAAc,GAAG,iBAAiB;aACrC,eAAe,EAAE;aACjB,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC,CAAC;QAEhE,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,iBAAiB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,oBAAoB,CAAC;YACxB,YAAY,EAAE,CAAC,WAAW,CAAC;YAC3B,eAAe;SAChB,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAjBW,QAAA,cAAc,kBAiBzB"}
package/.eslintrc.json DELETED
@@ -1,37 +0,0 @@
1
- {
2
- "extends": ["../.eslintrc.json"],
3
- "ignorePatterns": ["!**/*"],
4
- "overrides": [
5
- {
6
- "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
7
- "rules": {}
8
- },
9
- {
10
- "files": ["*.ts", "*.tsx"],
11
- "rules": {}
12
- },
13
- {
14
- "files": ["*.js", "*.jsx"],
15
- "rules": {}
16
- },
17
- {
18
- "files": ["*.json"],
19
- "parser": "jsonc-eslint-parser",
20
- "rules": {
21
- "@nx/dependency-checks": [
22
- "error",
23
- {
24
- "ignoredDependencies": ["@nx/expo"]
25
- }
26
- ]
27
- }
28
- },
29
- {
30
- "files": ["./package.json", "./generators.json"],
31
- "parser": "jsonc-eslint-parser",
32
- "rules": {
33
- "@nx/nx-plugin-checks": "error"
34
- }
35
- }
36
- ]
37
- }
package/jest.config.ts DELETED
@@ -1,10 +0,0 @@
1
- /* eslint-disable */
2
- export default {
3
- displayName: '@ronas-it/nx-generators',
4
- preset: '../jest.preset.js',
5
- transform: {
6
- '^.+\\.[tj]s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.spec.json' }],
7
- },
8
- moduleFileExtensions: ['ts', 'js', 'html'],
9
- coverageDirectory: '../coverage/plugin',
10
- };
package/project.json DELETED
@@ -1,61 +0,0 @@
1
- {
2
- "name": "@ronas-it/nx-generators",
3
- "$schema": "../node_modules/nx/schemas/project-schema.json",
4
- "sourceRoot": "plugin/src",
5
- "projectType": "library",
6
- "targets": {
7
- "build": {
8
- "executor": "@nx/js:tsc",
9
- "outputs": ["{options.outputPath}"],
10
- "options": {
11
- "outputPath": "dist/plugin",
12
- "main": "plugin/src/index.ts",
13
- "tsConfig": "plugin/tsconfig.lib.json",
14
- "assets": [
15
- "plugin/*.md",
16
- {
17
- "input": "./plugin/src",
18
- "glob": "**/!(*.ts)",
19
- "output": "./src"
20
- },
21
- {
22
- "input": "./plugin/src",
23
- "glob": "**/*.d.ts",
24
- "output": "./src"
25
- },
26
- {
27
- "input": "./plugin",
28
- "glob": "generators.json",
29
- "output": "."
30
- },
31
- {
32
- "input": "./plugin",
33
- "glob": "executors.json",
34
- "output": "."
35
- }
36
- ]
37
- }
38
- },
39
- "nx-release-publish": {
40
- "options": {
41
- "packageRoot": "dist/{projectRoot}"
42
- }
43
- },
44
- "test": {
45
- "executor": "@nx/jest:jest",
46
- "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
47
- "options": {
48
- "jestConfig": "plugin/jest.config.ts"
49
- }
50
- }
51
- },
52
- "tags": ["nx", "generator", "monorepo", "expo", "react-native", "typescript"],
53
- "release": {
54
- "version": {
55
- "generatorOptions": {
56
- "packageRoot": "dist/{projectRoot}",
57
- "currentVersionResolver": "git-tag"
58
- }
59
- }
60
- }
61
- }
@@ -1,17 +0,0 @@
1
- export default {
2
- 'lint-staged': {
3
- '*.{ts,tsx}': 'tsc-files --noEmit types.d.ts',
4
- '*.{ts,tsx,js,html,json,md}': 'prettier --write',
5
- '*.{ts,tsx,js}': 'eslint --cache --fix',
6
- },
7
- tsconfig: {
8
- jsx: 'react-native',
9
- allowJs: true,
10
- noEmit: true,
11
- strict: true,
12
- allowSyntheticDefaultImports: true,
13
- noImplicitAny: true,
14
- strictPropertyInitialization: false,
15
- strictNullChecks: true,
16
- },
17
- };
@@ -1,72 +0,0 @@
1
- import { execSync } from 'child_process';
2
- import * as path from 'path';
3
- import {
4
- addDependenciesToPackageJson,
5
- formatFiles,
6
- generateFiles,
7
- installPackagesTask,
8
- readJson,
9
- Tree,
10
- writeJson,
11
- } from '@nx/devkit';
12
- import { devDependencies } from '../../shared/dependencies';
13
- import config from './config';
14
- import { CodeChecksGeneratorSchema } from './schema';
15
- import scripts from './scripts';
16
-
17
- export async function codeChecksGenerator(tree: Tree, options: CodeChecksGeneratorSchema) {
18
- const projectRoot = '.';
19
-
20
- // Delete files
21
- tree.delete('.eslintrc.json');
22
- tree.delete('eslint.config.cjs');
23
- tree.delete('.prettierrc');
24
-
25
- // Configure pre-commit hook
26
- execSync('npx mrm@2 lint-staged', { stdio: 'inherit' });
27
-
28
- const packageJson = readJson(tree, 'package.json');
29
- packageJson['lint-staged'] = config['lint-staged'];
30
- packageJson.scripts = { ...scripts, ...packageJson.scripts };
31
- writeJson(tree, 'package.json', packageJson);
32
-
33
- // Update tsconfig.base.json
34
- const tsconfigJson = readJson(tree, 'tsconfig.base.json');
35
- tsconfigJson.compilerOptions = { ...config.tsconfig, ...tsconfigJson.compilerOptions };
36
- writeJson(tree, 'tsconfig.base.json', tsconfigJson);
37
-
38
- // Update .gitignore
39
- const gitignoreContent = tree.read('.gitignore')?.toString() + '\n.eslintcache\n';
40
- tree.write('.gitignore', gitignoreContent);
41
-
42
- // Update .eslintignore
43
- const eslintignoreContent = tree.read('.eslintignore')?.toString() + '\n**/*.js\napps/*/app.config.ts\n';
44
- tree.write('.eslintignore', eslintignoreContent);
45
-
46
- // eslint-disable-next-line @typescript-eslint/no-var-requires
47
- const configTemplate = require('../../shared/templates/config-template.json');
48
-
49
- // Add files
50
- generateFiles(tree, path.join(__dirname, 'files'), projectRoot, options);
51
-
52
- // Add rules to .eslintrc.json
53
- const esLintConfig = readJson(tree, '.eslintrc.json');
54
-
55
- esLintConfig.overrides.push(configTemplate);
56
- writeJson(tree, '.eslintrc.json', esLintConfig);
57
-
58
- // Install necessary dependencies
59
- addDependenciesToPackageJson(
60
- tree,
61
- {},
62
- devDependencies['code-checks']
63
- );
64
-
65
- await formatFiles(tree);
66
-
67
- return () => {
68
- installPackagesTask(tree);
69
- };
70
- }
71
-
72
- export default codeChecksGenerator;
@@ -1,5 +0,0 @@
1
- export default {
2
- 'lint': 'npx tsc && cross-env ESLINT_USE_FLAT_CONFIG=false npx eslint ./',
3
- 'format': 'npx prettier --write . && npm run lint -- --fix',
4
- 'prepare': 'husky',
5
- }