@ronas-it/nx-generators 0.10.2 → 0.10.3

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 (214) hide show
  1. package/.eslintrc.json +37 -0
  2. package/jest.config.ts +10 -0
  3. package/package.json +2 -2
  4. package/project.json +61 -0
  5. package/src/generators/code-checks/config.ts +17 -0
  6. package/src/generators/code-checks/generator.ts +72 -0
  7. package/src/generators/code-checks/scripts.ts +5 -0
  8. package/src/generators/entity-api/generator.ts +127 -0
  9. package/src/generators/expo-app/generator.ts +152 -0
  10. package/src/generators/expo-app/scripts.ts +12 -0
  11. package/src/generators/form/generator.ts +53 -0
  12. package/src/generators/form/utils/add-form-usage.ts +86 -0
  13. package/src/generators/form/utils/get-app-name.ts +3 -0
  14. package/src/generators/form/utils/get-form-utils-directory.ts +46 -0
  15. package/src/generators/form/utils/update-index.ts +14 -0
  16. package/src/generators/lib-move/generator.ts +57 -0
  17. package/src/generators/lib-remove/generator.ts +25 -0
  18. package/src/generators/lib-rename/generator.ts +25 -0
  19. package/src/generators/lib-tags/generator.ts +68 -0
  20. package/src/generators/lib-tags/interfaces/context.ts +9 -0
  21. package/src/generators/lib-tags/interfaces/index.ts +2 -0
  22. package/src/generators/lib-tags/interfaces/verify-tag-config.ts +12 -0
  23. package/src/generators/lib-tags/types/index.ts +1 -0
  24. package/src/generators/lib-tags/types/tag.ts +1 -0
  25. package/src/generators/lib-tags/utils/check-lib-tags.ts +143 -0
  26. package/src/generators/next-app/generator.ts +99 -0
  27. package/src/generators/react-component/generator.ts +80 -0
  28. package/src/generators/react-lib/generator.ts +86 -0
  29. package/src/generators/repo-config/generator.ts +44 -0
  30. package/src/generators/repo-config/scripts.ts +3 -0
  31. package/src/shared/dependencies.ts +76 -0
  32. package/src/shared/enums/base-generator-type.ts +4 -0
  33. package/src/shared/generators/api-client/generator.ts +49 -0
  34. package/src/shared/generators/app-env/generator.ts +37 -0
  35. package/src/shared/generators/app-env/lib-files/shared/utils/app-env/src/app-env.ts.template +1 -1
  36. package/src/shared/generators/auth/generator.ts +107 -0
  37. package/src/shared/generators/form-utils/generator.ts +23 -0
  38. package/src/shared/generators/rn-styles/generator.ts +49 -0
  39. package/src/shared/generators/storage/generator.ts +34 -0
  40. package/src/shared/generators/store/generator.ts +48 -0
  41. package/src/shared/generators/store/schema.d.ts +1 -1
  42. package/src/shared/generators/ui-kitten/generator.ts +55 -0
  43. package/src/shared/utils/cli-utils.ts +149 -0
  44. package/src/shared/utils/config-utils.ts +146 -0
  45. package/src/shared/utils/constants.ts +3 -0
  46. package/src/shared/utils/dynamic-import.ts +4 -0
  47. package/src/shared/utils/format-utils.ts +16 -0
  48. package/src/shared/utils/get-lib-directory-name.ts +12 -0
  49. package/src/shared/utils/ts-utils.ts +17 -0
  50. package/tsconfig.json +16 -0
  51. package/tsconfig.lib.json +10 -0
  52. package/tsconfig.spec.json +14 -0
  53. package/src/generators/code-checks/config.d.ts +0 -18
  54. package/src/generators/code-checks/config.js +0 -20
  55. package/src/generators/code-checks/config.js.map +0 -1
  56. package/src/generators/code-checks/generator.d.ts +0 -4
  57. package/src/generators/code-checks/generator.js +0 -53
  58. package/src/generators/code-checks/generator.js.map +0 -1
  59. package/src/generators/code-checks/scripts.d.ts +0 -6
  60. package/src/generators/code-checks/scripts.js +0 -8
  61. package/src/generators/code-checks/scripts.js.map +0 -1
  62. package/src/generators/entity-api/generator.d.ts +0 -4
  63. package/src/generators/entity-api/generator.js +0 -84
  64. package/src/generators/entity-api/generator.js.map +0 -1
  65. package/src/generators/expo-app/generator.d.ts +0 -4
  66. package/src/generators/expo-app/generator.js +0 -93
  67. package/src/generators/expo-app/generator.js.map +0 -1
  68. package/src/generators/expo-app/scripts.d.ts +0 -13
  69. package/src/generators/expo-app/scripts.js +0 -15
  70. package/src/generators/expo-app/scripts.js.map +0 -1
  71. package/src/generators/form/generator.d.ts +0 -4
  72. package/src/generators/form/generator.js +0 -48
  73. package/src/generators/form/generator.js.map +0 -1
  74. package/src/generators/form/utils/add-form-usage.d.ts +0 -1
  75. package/src/generators/form/utils/add-form-usage.js +0 -67
  76. package/src/generators/form/utils/add-form-usage.js.map +0 -1
  77. package/src/generators/form/utils/get-app-name.d.ts +0 -1
  78. package/src/generators/form/utils/get-app-name.js +0 -8
  79. package/src/generators/form/utils/get-app-name.js.map +0 -1
  80. package/src/generators/form/utils/get-form-utils-directory.d.ts +0 -2
  81. package/src/generators/form/utils/get-form-utils-directory.js +0 -34
  82. package/src/generators/form/utils/get-form-utils-directory.js.map +0 -1
  83. package/src/generators/form/utils/index.js +0 -8
  84. package/src/generators/form/utils/index.js.map +0 -1
  85. package/src/generators/form/utils/update-index.d.ts +0 -2
  86. package/src/generators/form/utils/update-index.js +0 -18
  87. package/src/generators/form/utils/update-index.js.map +0 -1
  88. package/src/generators/lib-move/generator.d.ts +0 -4
  89. package/src/generators/lib-move/generator.js +0 -34
  90. package/src/generators/lib-move/generator.js.map +0 -1
  91. package/src/generators/lib-remove/generator.d.ts +0 -4
  92. package/src/generators/lib-remove/generator.js +0 -22
  93. package/src/generators/lib-remove/generator.js.map +0 -1
  94. package/src/generators/lib-rename/generator.d.ts +0 -4
  95. package/src/generators/lib-rename/generator.js +0 -24
  96. package/src/generators/lib-rename/generator.js.map +0 -1
  97. package/src/generators/lib-tags/generator.d.ts +0 -4
  98. package/src/generators/lib-tags/generator.js +0 -56
  99. package/src/generators/lib-tags/generator.js.map +0 -1
  100. package/src/generators/lib-tags/interfaces/context.d.ts +0 -8
  101. package/src/generators/lib-tags/interfaces/context.js +0 -3
  102. package/src/generators/lib-tags/interfaces/context.js.map +0 -1
  103. package/src/generators/lib-tags/interfaces/index.d.ts +0 -1
  104. package/src/generators/lib-tags/interfaces/index.js +0 -5
  105. package/src/generators/lib-tags/interfaces/index.js.map +0 -1
  106. package/src/generators/lib-tags/utils/check-lib-tags.d.ts +0 -4
  107. package/src/generators/lib-tags/utils/check-lib-tags.js +0 -99
  108. package/src/generators/lib-tags/utils/check-lib-tags.js.map +0 -1
  109. package/src/generators/lib-tags/utils/index.js +0 -5
  110. package/src/generators/lib-tags/utils/index.js.map +0 -1
  111. package/src/generators/next-app/generator.d.ts +0 -4
  112. package/src/generators/next-app/generator.js +0 -71
  113. package/src/generators/next-app/generator.js.map +0 -1
  114. package/src/generators/react-component/generator.d.ts +0 -4
  115. package/src/generators/react-component/generator.js +0 -55
  116. package/src/generators/react-component/generator.js.map +0 -1
  117. package/src/generators/react-lib/generator.d.ts +0 -4
  118. package/src/generators/react-lib/generator.js +0 -49
  119. package/src/generators/react-lib/generator.js.map +0 -1
  120. package/src/generators/repo-config/generator.d.ts +0 -3
  121. package/src/generators/repo-config/generator.js +0 -36
  122. package/src/generators/repo-config/generator.js.map +0 -1
  123. package/src/generators/repo-config/scripts.d.ts +0 -4
  124. package/src/generators/repo-config/scripts.js +0 -6
  125. package/src/generators/repo-config/scripts.js.map +0 -1
  126. package/src/index.js +0 -1
  127. package/src/index.js.map +0 -1
  128. package/src/shared/dependencies.d.ts +0 -73
  129. package/src/shared/dependencies.js +0 -79
  130. package/src/shared/dependencies.js.map +0 -1
  131. package/src/shared/enums/base-generator-type.d.ts +0 -4
  132. package/src/shared/enums/base-generator-type.js +0 -9
  133. package/src/shared/enums/base-generator-type.js.map +0 -1
  134. package/src/shared/enums/index.js +0 -5
  135. package/src/shared/enums/index.js.map +0 -1
  136. package/src/shared/generators/api-client/generator.d.ts +0 -6
  137. package/src/shared/generators/api-client/generator.js +0 -35
  138. package/src/shared/generators/api-client/generator.js.map +0 -1
  139. package/src/shared/generators/api-client/index.js +0 -5
  140. package/src/shared/generators/api-client/index.js.map +0 -1
  141. package/src/shared/generators/app-env/generator.d.ts +0 -6
  142. package/src/shared/generators/app-env/generator.js +0 -25
  143. package/src/shared/generators/app-env/generator.js.map +0 -1
  144. package/src/shared/generators/app-env/index.js +0 -5
  145. package/src/shared/generators/app-env/index.js.map +0 -1
  146. package/src/shared/generators/auth/generator.d.ts +0 -4
  147. package/src/shared/generators/auth/generator.js +0 -74
  148. package/src/shared/generators/auth/generator.js.map +0 -1
  149. package/src/shared/generators/auth/index.js +0 -5
  150. package/src/shared/generators/auth/index.js.map +0 -1
  151. package/src/shared/generators/form-utils/generator.d.ts +0 -5
  152. package/src/shared/generators/form-utils/generator.js +0 -22
  153. package/src/shared/generators/form-utils/generator.js.map +0 -1
  154. package/src/shared/generators/form-utils/index.js +0 -5
  155. package/src/shared/generators/form-utils/index.js.map +0 -1
  156. package/src/shared/generators/index.js +0 -12
  157. package/src/shared/generators/index.js.map +0 -1
  158. package/src/shared/generators/rn-styles/generator.d.ts +0 -6
  159. package/src/shared/generators/rn-styles/generator.js +0 -36
  160. package/src/shared/generators/rn-styles/generator.js.map +0 -1
  161. package/src/shared/generators/rn-styles/index.js +0 -5
  162. package/src/shared/generators/rn-styles/index.js.map +0 -1
  163. package/src/shared/generators/storage/generator.d.ts +0 -6
  164. package/src/shared/generators/storage/generator.js +0 -25
  165. package/src/shared/generators/storage/generator.js.map +0 -1
  166. package/src/shared/generators/storage/index.js +0 -5
  167. package/src/shared/generators/storage/index.js.map +0 -1
  168. package/src/shared/generators/store/generator.d.ts +0 -4
  169. package/src/shared/generators/store/generator.js +0 -34
  170. package/src/shared/generators/store/generator.js.map +0 -1
  171. package/src/shared/generators/store/index.js +0 -5
  172. package/src/shared/generators/store/index.js.map +0 -1
  173. package/src/shared/generators/ui-kitten/generator.d.ts +0 -6
  174. package/src/shared/generators/ui-kitten/generator.js +0 -40
  175. package/src/shared/generators/ui-kitten/generator.js.map +0 -1
  176. package/src/shared/generators/ui-kitten/index.js +0 -5
  177. package/src/shared/generators/ui-kitten/index.js.map +0 -1
  178. package/src/shared/utils/cli-utils.d.ts +0 -28
  179. package/src/shared/utils/cli-utils.js +0 -125
  180. package/src/shared/utils/cli-utils.js.map +0 -1
  181. package/src/shared/utils/config-utils.d.ts +0 -19
  182. package/src/shared/utils/config-utils.js +0 -115
  183. package/src/shared/utils/config-utils.js.map +0 -1
  184. package/src/shared/utils/constants.d.ts +0 -3
  185. package/src/shared/utils/constants.js +0 -7
  186. package/src/shared/utils/constants.js.map +0 -1
  187. package/src/shared/utils/dynamic-import.d.ts +0 -1
  188. package/src/shared/utils/dynamic-import.js +0 -5
  189. package/src/shared/utils/dynamic-import.js.map +0 -1
  190. package/src/shared/utils/format-utils.d.ts +0 -4
  191. package/src/shared/utils/format-utils.js +0 -18
  192. package/src/shared/utils/format-utils.js.map +0 -1
  193. package/src/shared/utils/get-lib-directory-name.d.ts +0 -1
  194. package/src/shared/utils/get-lib-directory-name.js +0 -15
  195. package/src/shared/utils/get-lib-directory-name.js.map +0 -1
  196. package/src/shared/utils/index.js +0 -11
  197. package/src/shared/utils/index.js.map +0 -1
  198. package/src/shared/utils/ts-utils.d.ts +0 -2
  199. package/src/shared/utils/ts-utils.js +0 -21
  200. package/src/shared/utils/ts-utils.js.map +0 -1
  201. /package/src/generators/form/utils/{index.d.ts → index.ts} +0 -0
  202. /package/src/generators/lib-tags/utils/{index.d.ts → index.ts} +0 -0
  203. /package/src/{index.d.ts → index.ts} +0 -0
  204. /package/src/shared/enums/{index.d.ts → index.ts} +0 -0
  205. /package/src/shared/generators/api-client/{index.d.ts → index.ts} +0 -0
  206. /package/src/shared/generators/app-env/{index.d.ts → index.ts} +0 -0
  207. /package/src/shared/generators/auth/{index.d.ts → index.ts} +0 -0
  208. /package/src/shared/generators/form-utils/{index.d.ts → index.ts} +0 -0
  209. /package/src/shared/generators/{index.d.ts → index.ts} +0 -0
  210. /package/src/shared/generators/rn-styles/{index.d.ts → index.ts} +0 -0
  211. /package/src/shared/generators/storage/{index.d.ts → index.ts} +0 -0
  212. /package/src/shared/generators/store/{index.d.ts → index.ts} +0 -0
  213. /package/src/shared/generators/ui-kitten/{index.d.ts → index.ts} +0 -0
  214. /package/src/shared/utils/{index.d.ts → index.ts} +0 -0
@@ -0,0 +1,44 @@
1
+ import * as path from 'path';
2
+ import {
3
+ addDependenciesToPackageJson,
4
+ formatFiles,
5
+ generateFiles,
6
+ installPackagesTask,
7
+ readJson,
8
+ Tree,
9
+ writeJson,
10
+ } from '@nx/devkit';
11
+ import { devDependencies } from '../../shared/dependencies';
12
+ import scripts from './scripts';
13
+ import { formatName, getProjectName } from '../../shared/utils';
14
+
15
+ export async function repoConfigGenerator(tree: Tree) {
16
+ const projectRoot = '.';
17
+ const projectPackagePath = 'package.json';
18
+
19
+ // Remove unnecessary files and files that will be replaced
20
+ tree.delete('README.md');
21
+
22
+ // Update project package.json
23
+ const projectPackageJson = readJson(tree, projectPackagePath);
24
+ projectPackageJson.workspaces = ['apps/*'];
25
+ projectPackageJson.scripts = { ...scripts, ...projectPackageJson.scripts };
26
+ writeJson(tree, projectPackagePath, projectPackageJson);
27
+
28
+ // Add project files
29
+ generateFiles(tree, path.join(__dirname, 'files'), projectRoot, {
30
+ name: getProjectName(projectPackageJson.name),
31
+ formatName,
32
+ });
33
+
34
+ // Add dependencies
35
+ addDependenciesToPackageJson(tree, {}, devDependencies['repo-config']);
36
+
37
+ await formatFiles(tree);
38
+
39
+ return () => {
40
+ installPackagesTask(tree);
41
+ };
42
+ }
43
+
44
+ export default repoConfigGenerator;
@@ -0,0 +1,3 @@
1
+ export default {
2
+ 'deps:sync': 'npx syncpack fix-mismatches',
3
+ };
@@ -0,0 +1,76 @@
1
+ export const dependencies = {
2
+ 'expo-app': {
3
+ "@ronas-it/react-native-common-modules": "^0.6.0",
4
+ 'expo-constants': '~17.0.3',
5
+ 'expo-dev-client': '^5.0.6',
6
+ 'expo-router': '~4.0.14',
7
+ 'react-native-safe-area-context': '^4.10.5',
8
+ 'react-native-screens': '~4.1.0',
9
+ 'expo-linking': '~7.0.3',
10
+ 'expo-status-bar': '^2.0.0',
11
+ 'expo-updates': '^0.26.10',
12
+ 'expo-insights': '~0.8.1',
13
+ "lodash-es": "^4.17.21"
14
+ },
15
+ 'expo-app-root': {
16
+ // Need new version to fix this error:
17
+ // https://github.com/kristerkari/react-native-svg-transformer/issues/329
18
+ 'react-native-svg-transformer': '^1.4.0'
19
+ },
20
+ 'next-app': {
21
+ 'next-intl': '^3.17.2',
22
+ },
23
+ 'api-client': {
24
+ '@ronas-it/axios-api-client': '^0.1.0',
25
+ },
26
+ 'auth': {
27
+ 'luxon': '^3.4.4'
28
+ },
29
+ 'rn-styles': {
30
+ 'react-native-extended-stylesheet': '^0.12.0'
31
+ },
32
+ 'store': {
33
+ '@ronas-it/rtkq-entity-api': '^0.3.1',
34
+ 'react-redux': '^9.1.2'
35
+ },
36
+ 'ui-kitten': {
37
+ '@eva-design/eva': '^2.2.0',
38
+ '@ui-kitten/components': '^5.3.1'
39
+ },
40
+ 'form': {
41
+ '@hookform/resolvers': '^3.9.0',
42
+ 'react-hook-form': '^7.53.0',
43
+ 'yup': '^1.4.0'
44
+ }
45
+ };
46
+
47
+ export const devDependencies = {
48
+ 'code-checks': {
49
+ 'eslint': '^9.8.0',
50
+ 'prettier': '^3.3.2',
51
+ 'eslint-config-prettier': '^9.1.0',
52
+ 'eslint-import-resolver-typescript': '^3.7.0',
53
+ 'eslint-plugin-import': '^2.29.1',
54
+ 'eslint-plugin-jsx-a11y': '^6.9.0',
55
+ 'eslint-plugin-react': '^7.34.3',
56
+ 'eslint-plugin-react-hooks': '^5.0.0',
57
+ 'eslint-plugin-unused-imports': '^4.1.4',
58
+ 'husky': '^9.1.5',
59
+ '@stylistic/eslint-plugin': '^2.12.1',
60
+ '@typescript-eslint/eslint-plugin': '^8.18.1',
61
+ '@typescript-eslint/parser': '^8.18.1',
62
+ 'tsc-files': '^1.1.4',
63
+ },
64
+ 'expo-app': {
65
+ '@types/lodash': '^4.14.194',
66
+ },
67
+ 'expo-app-root': {
68
+ 'cross-env': '^7.0.3'
69
+ },
70
+ 'repo-config': {
71
+ 'syncpack': '^12.3.2',
72
+ },
73
+ 'auth': {
74
+ '@types/luxon': '3.4.2'
75
+ }
76
+ };
@@ -0,0 +1,4 @@
1
+ export enum BaseGeneratorType {
2
+ EXPO_APP = 'expo-app',
3
+ NEXT_APP = 'next-app'
4
+ }
@@ -0,0 +1,49 @@
1
+ import { execSync } from 'child_process';
2
+ import { existsSync } from 'fs';
3
+ import * as path from 'path';
4
+ import {
5
+ addDependenciesToPackageJson,
6
+ formatFiles,
7
+ generateFiles,
8
+ Tree
9
+ } from '@nx/devkit';
10
+ import { dependencies } from '../../dependencies';
11
+ import { formatName, formatAppIdentifier, getImportPathPrefix } from '../../utils';
12
+
13
+ export async function runApiClientGenerator(
14
+ tree: Tree,
15
+ options: { name: string; directory: string }
16
+ ) {
17
+ const appRoot = `apps/${options.directory}`;
18
+ const libRoot = `libs/${options.directory}`;
19
+ const libPath = `${getImportPathPrefix(tree)}/${options.directory}`;
20
+
21
+ // Generate shared libs
22
+ execSync(`npx nx g react-lib --app=${options.directory} --scope=shared --type=data-access --name=api-client`, { stdio: 'inherit' });
23
+
24
+ const appPackagePath = `${appRoot}/package.json`;
25
+
26
+ // Remove unnecessary files and files that will be replaced
27
+ tree.delete(`${libRoot}/shared/data-access/api-client/src/index.ts`);
28
+
29
+ // Add lib files
30
+ generateFiles(tree, path.join(__dirname, '/lib-files'), libRoot, {
31
+ ...options,
32
+ formatName,
33
+ formatAppIdentifier,
34
+ formatDirectory: () => libPath
35
+ });
36
+
37
+ // Add dependencies
38
+ addDependenciesToPackageJson(tree, dependencies['api-client'], {});
39
+
40
+ if (existsSync(appPackagePath)) {
41
+ addDependenciesToPackageJson(tree, dependencies['api-client'], {}, appPackagePath);
42
+ }
43
+
44
+ await formatFiles(tree);
45
+
46
+ console.warn(`\nPlease set api endpoint in ${libPath}/shared/data-access/api-client/src/configuration.ts`);
47
+ }
48
+
49
+ export default runApiClientGenerator;
@@ -0,0 +1,37 @@
1
+ import { execSync } from 'child_process';
2
+ import * as path from 'path';
3
+ import {
4
+ formatFiles,
5
+ generateFiles,
6
+ Tree
7
+ } from '@nx/devkit';
8
+ import { BaseGeneratorType } from '../../enums';
9
+ import { formatName, formatAppIdentifier, getImportPathPrefix } from '../../utils';
10
+
11
+ export async function runAppEnvGenerator(
12
+ tree: Tree,
13
+ options: { name: string; directory: string, baseGeneratorType: BaseGeneratorType }
14
+ ) {
15
+ const libRoot = `libs/${options.directory}`;
16
+ const appType = options.baseGeneratorType.split('-')[0].toUpperCase();
17
+ const libPath = `${getImportPathPrefix(tree)}/${options.directory}`;
18
+
19
+ // Generate shared libs
20
+ execSync(`npx nx g react-lib --app=${options.directory} --scope=shared --type=utils --name=app-env`, { stdio: 'inherit' });
21
+
22
+ // Remove unnecessary files and files that will be replaced
23
+ tree.delete(`${libRoot}/shared/utils/app-env/src/index.ts`);
24
+
25
+ // Add lib files
26
+ generateFiles(tree, path.join(__dirname, 'lib-files'), libRoot, {
27
+ ...options,
28
+ formatName,
29
+ formatAppIdentifier,
30
+ formatDirectory: () => libPath,
31
+ appType
32
+ });
33
+
34
+ await formatFiles(tree);
35
+ }
36
+
37
+ export default runAppEnvGenerator;
@@ -2,4 +2,4 @@ import { AppEnv } from './env';
2
2
 
3
3
  export type AppEnvName = 'development' | 'production';
4
4
 
5
- export const appEnv = new AppEnv<AppEnvName>(process.env.EXPO_PUBLIC_APP_ENV as AppEnvName || process.env.NEXT_PUBLIC_APP_ENV);
5
+ export const appEnv = new AppEnv<AppEnvName>(process.env.<%= appType %>_PUBLIC_APP_ENV as AppEnvName);
@@ -0,0 +1,107 @@
1
+ import { execSync } from 'child_process';
2
+ import * as path from 'path';
3
+ import {
4
+ addDependenciesToPackageJson,
5
+ formatFiles,
6
+ generateFiles,
7
+ installPackagesTask,
8
+ Tree
9
+ } from '@nx/devkit';
10
+ import { dependencies, devDependencies } from '../../dependencies';
11
+ import { formatName, formatAppIdentifier, searchAliasPath, getImportPathPrefix } from '../../utils';
12
+ import { existsSync } from 'fs';
13
+ import { IndentationText, Project, QuoteKind, StructureKind, SyntaxKind } from 'ts-morph';
14
+ import { AuthGeneratorSchema } from './schema';
15
+
16
+ const updateStore = (libRoot: string): void => {
17
+ const project = new Project({
18
+ manipulationSettings: {
19
+ indentationText: IndentationText.TwoSpaces,
20
+ quoteKind: QuoteKind.Single
21
+ }
22
+ });
23
+
24
+ const storePath = `${libRoot}/shared/data-access/store/src`;
25
+ const apiPath = `${libRoot}/shared/data-access/api/src`;
26
+ const authPath = `${libRoot}/shared/data-access/auth/src`;
27
+ const store = project.addSourceFileAtPath(`${storePath}/store.ts`);
28
+ const apiAlias = searchAliasPath(apiPath);
29
+ const authAlias = searchAliasPath(authPath);
30
+
31
+ if (!apiAlias) {
32
+ throw new Error('Could not find API library.');
33
+ }
34
+
35
+ if (!authAlias) {
36
+ throw new Error('Could not find Auth library.');
37
+ }
38
+
39
+ store.addImportDeclarations([
40
+ { moduleSpecifier: apiAlias, namedImports: ['authApi', 'profileApi'] },
41
+ { moduleSpecifier: authAlias, namedImports: [ 'authListenerMiddleware', 'authReducer', 'authReducerPath'] }
42
+ ]);
43
+
44
+ const rootReducer = store.getVariableDeclarationOrThrow('rootReducer');
45
+
46
+ rootReducer.getInitializerIfKindOrThrow(SyntaxKind.ObjectLiteralExpression)
47
+ .addProperties([
48
+ { name: '[authApi.reducerPath]', initializer: 'authApi.reducer', kind: StructureKind.PropertyAssignment },
49
+ { name: '[authReducerPath]', initializer: 'authReducer', kind: StructureKind.PropertyAssignment },
50
+ { name: '[profileApi.reducerPath]', initializer: 'profileApi.reducer', kind: StructureKind.PropertyAssignment }
51
+ ]);
52
+
53
+ const middlewares = store.getVariableDeclarationOrThrow('middlewares');
54
+
55
+ middlewares.getInitializerIfKindOrThrow(SyntaxKind.ArrayLiteralExpression)
56
+ .addElements([
57
+ 'authApi.middleware',
58
+ 'authListenerMiddleware.middleware',
59
+ 'profileApi.middleware'
60
+ ], { useNewLines: true });
61
+
62
+ project.saveSync();
63
+ };
64
+
65
+ export async function runAuthGenerator(
66
+ tree: Tree,
67
+ options: AuthGeneratorSchema
68
+ ) {
69
+ const appRoot = `apps/${options.directory}`;
70
+ const libRoot = `libs/${options.directory}`;
71
+ const libPath = `${getImportPathPrefix(tree)}/${options.directory}`;
72
+
73
+ // Generate shared libs
74
+ execSync(`npx nx g react-lib --app=${options.directory} --scope=shared --type=data-access --name=api`, { stdio: 'inherit' });
75
+ execSync(`npx nx g react-lib --app=${options.directory} --scope=shared --type=data-access --name=auth`, { stdio: 'inherit' });
76
+
77
+ const appPackagePath = `${appRoot}/package.json`;
78
+
79
+ // Remove unnecessary files and files that will be replaced
80
+ tree.delete(`${libRoot}/shared/data-access/api/src/index.ts`);
81
+ tree.delete(`${libRoot}/shared/data-access/auth/src/index.ts`);
82
+
83
+ // Add lib files
84
+ generateFiles(tree, path.join(__dirname, '/lib-files'), libRoot, {
85
+ ...options,
86
+ formatName,
87
+ formatAppIdentifier,
88
+ formatDirectory: () => libPath
89
+ });
90
+
91
+ updateStore(libRoot);
92
+
93
+ // Add dependencies
94
+ addDependenciesToPackageJson(tree, dependencies['auth'], devDependencies['auth']);
95
+
96
+ if (existsSync(appPackagePath)) {
97
+ addDependenciesToPackageJson(tree, dependencies['auth'], devDependencies['auth'], appPackagePath);
98
+ }
99
+
100
+ await formatFiles(tree);
101
+
102
+ return () => {
103
+ installPackagesTask(tree);
104
+ };
105
+ }
106
+
107
+ export default runAuthGenerator;
@@ -0,0 +1,23 @@
1
+ import { execSync } from 'child_process';
2
+ import * as path from 'path';
3
+ import { formatFiles, generateFiles, Tree } from '@nx/devkit';
4
+
5
+ export async function runFormUtilsGenerator(
6
+ tree: Tree,
7
+ options: { directory: string }
8
+ ) {
9
+ const libRoot = `libs/${options.directory}`;
10
+
11
+ // Generate shared libs
12
+ execSync(`npx nx g react-lib --app=${options.directory} --scope=shared --type=utils --name=form`, { stdio: 'inherit' });
13
+
14
+ // Remove unnecessary files and files that will be replaced
15
+ tree.delete(`${libRoot}/shared/utils/form/src/index.ts`);
16
+
17
+ // Add lib files
18
+ generateFiles(tree, path.join(__dirname, '/lib-files'), libRoot, {});
19
+
20
+ await formatFiles(tree);
21
+ }
22
+
23
+ export default runFormUtilsGenerator;
@@ -0,0 +1,49 @@
1
+ import { execSync } from 'child_process';
2
+ import { existsSync } from 'fs';
3
+ import * as path from 'path';
4
+ import {
5
+ addDependenciesToPackageJson,
6
+ formatFiles,
7
+ generateFiles,
8
+ Tree,
9
+ } from '@nx/devkit';
10
+ import { dependencies } from '../../dependencies';
11
+ import { formatName, formatAppIdentifier, getImportPathPrefix } from '../../utils';
12
+
13
+ export async function runRNStylesGenerator(
14
+ tree: Tree,
15
+ options: { name: string; directory: string },
16
+ ) {
17
+ const appRoot = `apps/${options.directory}`;
18
+ const libRoot = `libs/${options.directory}`;
19
+ const libPath = `${getImportPathPrefix(tree)}/${options.directory}`;
20
+
21
+ // Generate shared libs
22
+ execSync(`npx nx g react-lib --app=${options.directory} --scope=shared --type=ui --name=styles --withComponent=false`, {
23
+ stdio: 'inherit',
24
+ });
25
+
26
+ const appPackagePath = `${appRoot}/package.json`;
27
+
28
+ // Remove unnecessary files and files that will be replaced
29
+ tree.delete(`${libRoot}/shared/ui/styles/src/index.ts`);
30
+
31
+ // Add lib files
32
+ generateFiles(tree, path.join(__dirname, 'lib-files'), libRoot, {
33
+ ...options,
34
+ formatName,
35
+ formatAppIdentifier,
36
+ formatDirectory: () => libPath,
37
+ });
38
+
39
+ // Add dependencies
40
+ addDependenciesToPackageJson(tree, dependencies['rn-styles'], {});
41
+
42
+ if (existsSync(appPackagePath)) {
43
+ addDependenciesToPackageJson(tree, dependencies['rn-styles'], {}, appPackagePath);
44
+ }
45
+
46
+ await formatFiles(tree);
47
+ }
48
+
49
+ export default runRNStylesGenerator;
@@ -0,0 +1,34 @@
1
+ import { execSync } from 'child_process';
2
+ import * as path from 'path';
3
+ import {
4
+ formatFiles,
5
+ generateFiles,
6
+ Tree
7
+ } from '@nx/devkit';
8
+ import { formatName, formatAppIdentifier, getImportPathPrefix } from '../../utils';
9
+
10
+ export async function runStorageGenerator(
11
+ tree: Tree,
12
+ options: { name: string; directory: string }
13
+ ) {
14
+ const libRoot = `libs/${options.directory}`;
15
+ const libPath = `${getImportPathPrefix(tree)}/${options.directory}`;
16
+
17
+ // Generate shared libs
18
+ execSync(`npx nx g react-lib --app=${options.directory} --scope=shared --type=data-access --name=storage`, { stdio: 'inherit' });
19
+
20
+ // Remove unnecessary files and files that will be replaced
21
+ tree.delete(`${libRoot}/shared/data-access/storage/src/index.ts`);
22
+
23
+ // Add lib files
24
+ generateFiles(tree, path.join(__dirname, '/lib-files'), libRoot, {
25
+ ...options,
26
+ formatName,
27
+ formatAppIdentifier,
28
+ formatDirectory: () => libPath
29
+ });
30
+
31
+ await formatFiles(tree);
32
+ }
33
+
34
+ export default runStorageGenerator;
@@ -0,0 +1,48 @@
1
+ import { execSync } from 'child_process';
2
+ import { existsSync } from 'fs';
3
+ import * as path from 'path';
4
+ import {
5
+ addDependenciesToPackageJson,
6
+ formatFiles,
7
+ generateFiles,
8
+ Tree
9
+ } from '@nx/devkit';
10
+ import { dependencies } from '../../dependencies';
11
+ import { formatName, formatAppIdentifier, getImportPathPrefix } from '../../utils';
12
+ import { StoreGeneratorSchema } from './schema';
13
+
14
+ export async function runStoreGenerator(
15
+ tree: Tree,
16
+ options: StoreGeneratorSchema
17
+ ) {
18
+ const appRoot = `apps/${options.directory}`;
19
+ const libRoot = `libs/${options.directory}`;
20
+ const libPath = `${getImportPathPrefix(tree)}/${options.directory}`;
21
+
22
+ // Generate shared libs
23
+ execSync(`npx nx g react-lib --app=${options.directory} --scope=shared --type=data-access --name=store`, { stdio: 'inherit' });
24
+
25
+ const appPackagePath = `${appRoot}/package.json`;
26
+
27
+ // Remove unnecessary files and files that will be replaced
28
+ tree.delete(`${libRoot}/shared/data-access/store/src/index.ts`);
29
+
30
+ // Add lib files
31
+ generateFiles(tree, path.join(__dirname, `${options.baseGeneratorType}/lib-files`), libRoot, {
32
+ ...options,
33
+ formatName,
34
+ formatAppIdentifier,
35
+ formatDirectory: () => libPath
36
+ });
37
+
38
+ // Add dependencies
39
+ addDependenciesToPackageJson(tree, dependencies['store'], {});
40
+
41
+ if (existsSync(appPackagePath)) {
42
+ addDependenciesToPackageJson(tree, dependencies['store'], {}, appPackagePath);
43
+ }
44
+
45
+ await formatFiles(tree);
46
+ }
47
+
48
+ export default runStoreGenerator;
@@ -1,4 +1,4 @@
1
- import { BaseGeneratorType } from '../enums/base-generator-type';
1
+ import { BaseGeneratorType } from '../../enums/base-generator-type';
2
2
 
3
3
  export interface StoreGeneratorSchema {
4
4
  name: string;
@@ -0,0 +1,55 @@
1
+ import { execSync } from 'child_process';
2
+ import { existsSync } from 'fs';
3
+ import * as path from 'path';
4
+ import {
5
+ addDependenciesToPackageJson,
6
+ formatFiles,
7
+ generateFiles,
8
+ Tree,
9
+ } from '@nx/devkit';
10
+ import { dependencies } from '../../dependencies';
11
+ import { formatName, formatAppIdentifier, getImportPathPrefix, LibraryType } from '../../utils';
12
+
13
+ export async function runUIKittenGenerator(
14
+ tree: Tree,
15
+ options: { name: string; directory: string }
16
+ ) {
17
+ const appRoot = `apps/${options.directory}`;
18
+ const libRoot = `libs/${options.directory}`;
19
+ const libPath = `${getImportPathPrefix(tree)}/${options.directory}`;
20
+
21
+ // Generate shared libs
22
+ execSync(`npx nx g react-lib --app=${options.directory} --scope=shared --type=${LibraryType.FEATURES} --name=user-theme-provider --withComponent=false`, {
23
+ stdio: 'inherit',
24
+ });
25
+
26
+ const appPackagePath = `${appRoot}/package.json`;
27
+
28
+ // Remove unnecessary files and files that will be replaced
29
+ tree.delete(`${libRoot}/shared/features/user-theme-provider/src/index.ts`);
30
+
31
+ // Add lib files
32
+ generateFiles(tree, path.join(__dirname, 'lib-files'), libRoot, {
33
+ ...options,
34
+ formatName,
35
+ formatAppIdentifier,
36
+ formatDirectory: () => libPath,
37
+ });
38
+
39
+ // Update styles lib exports
40
+ const stylesLibIndexData = tree.read(`${libRoot}/shared/ui/styles/src/lib/index.ts`);
41
+ const newStylesLibIndexData = stylesLibIndexData + `export * from './create-adaptive-styles';\nexport * from './eva-theme';\n`;
42
+
43
+ tree.write(`${libRoot}/shared/ui/styles/src/lib/index.ts`, newStylesLibIndexData);
44
+
45
+ // Add dependencies
46
+ addDependenciesToPackageJson(tree, dependencies['ui-kitten'], {});
47
+
48
+ if (existsSync(appPackagePath)) {
49
+ addDependenciesToPackageJson(tree, dependencies['ui-kitten'], {}, appPackagePath);
50
+ }
51
+
52
+ await formatFiles(tree);
53
+ }
54
+
55
+ export default runUIKittenGenerator;