@rxap/plugin-angular 20.0.1-dev.11 → 20.0.1-dev.13

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 (80) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/package.json +16 -3
  3. package/.eslintignore +0 -6
  4. package/.eslintrc.json +0 -44
  5. package/LICENSE +0 -621
  6. package/README.md.handlebars +0 -115
  7. package/jest.config.ts +0 -11
  8. package/project.json +0 -68
  9. package/schematics.yaml +0 -6
  10. package/src/application.ts +0 -124
  11. package/src/executors/check-ng-package/executor.ts +0 -33
  12. package/src/executors/config/executor.ts +0 -74
  13. package/src/executors/i18n/executor.ts +0 -198
  14. package/src/executors/tailwind/executor.ts +0 -34
  15. package/src/generators/convert-to-buildable-library/generator.ts +0 -110
  16. package/src/generators/fix-schematic/generator.ts +0 -103
  17. package/src/generators/fix-schematic/index.ts +0 -5
  18. package/src/generators/init/coerce-nx-json.ts +0 -72
  19. package/src/generators/init/generator.ts +0 -28
  20. package/src/generators/init/index.ts +0 -5
  21. package/src/generators/init/init-workspace.ts +0 -84
  22. package/src/generators/init-application/assert-main-statements.ts +0 -74
  23. package/src/generators/init-application/cleanup.ts +0 -127
  24. package/src/generators/init-application/coerce-app-config.ts +0 -147
  25. package/src/generators/init-application/coerce-environment-files.ts +0 -105
  26. package/src/generators/init-application/coerce-localazy-config-file.ts +0 -26
  27. package/src/generators/init-application/coerce-project.ts +0 -128
  28. package/src/generators/init-application/generate-authentication.ts +0 -122
  29. package/src/generators/init-application/generate-monolithic.spec.ts +0 -45
  30. package/src/generators/init-application/generate-monolithic.ts +0 -57
  31. package/src/generators/init-application/generator.ts +0 -356
  32. package/src/generators/init-application/index.ts +0 -5
  33. package/src/generators/init-application/link-mfe-remote-with-host.ts +0 -60
  34. package/src/generators/init-application/project-i18n-configuration.ts +0 -4
  35. package/src/generators/init-application/update-git-ignore.ts +0 -22
  36. package/src/generators/init-application/update-main-file.ts +0 -118
  37. package/src/generators/init-application/update-project-targets.ts +0 -229
  38. package/src/generators/init-application/update-tags.ts +0 -30
  39. package/src/generators/init-application/update-target-defaults.ts +0 -43
  40. package/src/generators/init-application/update-ts-config.ts +0 -31
  41. package/src/generators/init-component/generator.ts +0 -147
  42. package/src/generators/init-component/index.ts +0 -5
  43. package/src/generators/init-feature/generator.ts +0 -77
  44. package/src/generators/init-feature/index.ts +0 -5
  45. package/src/generators/init-feature-library/generator.ts +0 -82
  46. package/src/generators/init-feature-library/index.ts +0 -5
  47. package/src/generators/init-feature-library/init-project.ts +0 -53
  48. package/src/generators/init-feature-library/init-workspace.ts +0 -10
  49. package/src/generators/init-library/check-if-secondary-entrypoint-include-in-the-ts-config.ts +0 -46
  50. package/src/generators/init-library/cleanup.ts +0 -22
  51. package/src/generators/init-library/coerce-projects.ts +0 -118
  52. package/src/generators/init-library/coerce-tailwind-theme-scss.ts +0 -27
  53. package/src/generators/init-library/extend-angular-specific-eslint.ts +0 -37
  54. package/src/generators/init-library/generator.ts +0 -87
  55. package/src/generators/init-library/has-index-scss.ts +0 -14
  56. package/src/generators/init-library/has-tailwind-config.ts +0 -9
  57. package/src/generators/init-library/index.ts +0 -5
  58. package/src/generators/init-library/init-project.ts +0 -46
  59. package/src/generators/init-library/init-workspace.ts +0 -26
  60. package/src/generators/init-library/is-ng-packagr-project.ts +0 -9
  61. package/src/generators/init-library/ng-package-json.ts +0 -23
  62. package/src/generators/init-library/set-general-target-defaults.ts +0 -36
  63. package/src/generators/init-library/update-package-json.ts +0 -26
  64. package/src/generators/init-library/update-project-ng-package-configuration.ts +0 -51
  65. package/src/generators/init-library/update-ts-config.ts +0 -24
  66. package/src/generators/schematic/generator.ts +0 -179
  67. package/src/generators/schematic/index.ts +0 -5
  68. package/src/i18n.ts +0 -130
  69. package/src/index.ts +0 -3
  70. package/src/lib/angular-version.ts +0 -1
  71. package/src/lib/coerce-cypress-component-testing.ts +0 -113
  72. package/src/lib/coerce-test-setup.ts +0 -60
  73. package/src/library.ts +0 -153
  74. package/src/migrations/update-19-0-0/add-m2-prefix-to-material-scss-functions.ts +0 -32
  75. package/src/migrations/update-19-0-0/migration.ts +0 -283
  76. package/src/test-setup.ts +0 -24
  77. package/tsconfig.json +0 -20
  78. package/tsconfig.lib.json +0 -10
  79. package/tsconfig.spec.json +0 -15
  80. package/tsconfig.typedoc.json +0 -5
@@ -1,356 +0,0 @@
1
- import {
2
- formatFiles,
3
- generateFiles,
4
- getProjects,
5
- ProjectConfiguration,
6
- Tree,
7
- updateProjectConfiguration,
8
- } from '@nx/devkit';
9
- import {
10
- ApplicationInitProject,
11
- ApplicationInitWorkspace,
12
- } from '@rxap/plugin-application';
13
- import {
14
- classify,
15
- CoerceArrayItems,
16
- dasherize,
17
- DeleteProperties,
18
- } from '@rxap/utilities';
19
- import {
20
- AddPackageJsonDependency,
21
- AddPackageJsonDevDependency,
22
- CoerceFile,
23
- CoerceFilesStructure,
24
- GenerateSerializedSchematicFile,
25
- GetProjectPrefix,
26
- GetProjectRoot,
27
- GetProjectSourceRoot,
28
- SkipNonAngularProject,
29
- SkipNonApplicationProject,
30
- } from '@rxap/workspace-utilities';
31
- import {
32
- join,
33
- relative,
34
- } from 'path';
35
- import { ANGULAR_VERSION } from '../../lib/angular-version';
36
- import { coerceTestSetup } from '../../lib/coerce-test-setup';
37
- import { cleanup } from './cleanup';
38
- import { coerceAppConfig } from './coerce-app-config';
39
- import { coerceEnvironmentFiles } from './coerce-environment-files';
40
- import { coerceLocalazyConfigFile } from './coerce-localazy-config-file';
41
- import { CoerceProjects } from './coerce-project';
42
- import { generateAuthentication } from './generate-authentication';
43
- import { generateMonolithic } from './generate-monolithic';
44
- import { linkMfeRemoteWithHost } from './link-mfe-remote-with-host';
45
- import { InitApplicationGeneratorSchema } from './schema';
46
- import { updateGitIgnore } from './update-git-ignore';
47
- import { updateMainFile } from './update-main-file';
48
- import { updateProjectTargets } from './update-project-targets';
49
- import { updateTags } from './update-tags';
50
- import { updateTargetDefaults } from './update-target-defaults';
51
- import { updateTsConfig } from './update-ts-config';
52
-
53
- function skipProject(tree: Tree, options: InitApplicationGeneratorSchema, project: ProjectConfiguration, projectName: string) {
54
-
55
- if (options.project === projectName) {
56
- return false;
57
- }
58
-
59
- if (SkipNonAngularProject(tree, options, project, projectName)) {
60
- return true;
61
- }
62
-
63
- if (SkipNonApplicationProject(tree, options, project, projectName)) {
64
- return true;
65
- }
66
-
67
- return false;
68
-
69
- }
70
-
71
- export async function initApplicationGenerator(
72
- tree: Tree,
73
- options: InitApplicationGeneratorSchema,
74
- ) {
75
- if (options.authentik) {
76
- options.oauth = true;
77
- }
78
- if (options.monolithic) {
79
- options.openApi = true;
80
- }
81
- if (options.i18n) {
82
- options.languages ??= ['en'];
83
- }
84
- if (options.project) {
85
- options.projects ??= [];
86
- CoerceArrayItems(options.projects, [options.project]);
87
- }
88
- if (options.host) {
89
- options.moduleFederation = 'remote';
90
- }
91
- if (options.moduleFederation === 'remote') {
92
- options.authentication = false;
93
- options.oauth = false;
94
- options.authentik = false;
95
- options.serviceWorker = false;
96
- options.sentry = false;
97
- options.monolithic = false;
98
- }
99
- console.log('angular application init generator:', options);
100
-
101
- await ApplicationInitWorkspace(tree, options);
102
-
103
- await AddPackageJsonDependency(tree, '@mdi/angular-material', 'latest', { soft: true });
104
- await AddPackageJsonDependency(tree, '@rxap/ngx-bootstrap', 'latest', { soft: true });
105
- await AddPackageJsonDependency(tree, 'ngx-logger', 'latest', { soft: true });
106
- await AddPackageJsonDependency(tree, '@rxap/environment', 'latest', { soft: true });
107
- await AddPackageJsonDependency(tree, '@rxap/ngx-status-check', 'latest', { soft: true });
108
- await AddPackageJsonDependency(tree, '@rxap/ngx-error', 'latest', { soft: true });
109
- await AddPackageJsonDependency(tree, '@rxap/ngx-localize', 'latest', { soft: true });
110
- await AddPackageJsonDependency(tree, '@rxap/ngx-changelog', 'latest', { soft: true });
111
- await AddPackageJsonDependency(tree, 'ngx-markdown', 'latest', { soft: true });
112
- await AddPackageJsonDependency(tree, 'marked', '4.3.0', { soft: true });
113
- await AddPackageJsonDependency(tree, '@rxap/config', 'latest', { soft: true });
114
- await AddPackageJsonDependency(tree, '@rxap/directives', 'latest', { soft: true });
115
- await AddPackageJsonDependency(tree, '@rxap/components', 'latest', { soft: true });
116
- await AddPackageJsonDependency(tree, '@rxap/rxjs', 'latest', { soft: true });
117
- await AddPackageJsonDependency(tree, '@rxap/data-grid', 'latest', { soft: true });
118
- await AddPackageJsonDependency(tree, '@rxap/forms', 'latest', { soft: true });
119
- await AddPackageJsonDependency(tree, '@rxap/validator', 'latest', { soft: true });
120
- await AddPackageJsonDependency(tree, '@rxap/pipes', 'latest', { soft: true });
121
- await AddPackageJsonDependency(tree, '@rxap/mixin', 'latest', { soft: true });
122
- await AddPackageJsonDependency(tree, '@rxap/reflect-metadata', 'latest', { soft: true });
123
- await AddPackageJsonDevDependency(tree, '@rxap/browser-tailwind', 'latest', { soft: true, withoutNonRxapPeerDependencies: false });
124
- // must always be added as some rxap components use the i18n tag
125
- await AddPackageJsonDependency(tree, '@angular/localize', ANGULAR_VERSION, { soft: true });
126
- // must always be added as some rxap components use interfaces from the package
127
- // TODO : refactor the @rxap/ngx-error and @rxap/ngx-status-check to be independent from the @sentry/angular package
128
- await AddPackageJsonDependency(tree, '@sentry/angular', 'latest', { soft: true });
129
-
130
- if (options.oauth) {
131
- await AddPackageJsonDependency(tree, 'angular-oauth2-oidc', 'latest', { soft: true });
132
- await AddPackageJsonDependency(tree, 'angular-oauth2-oidc-jwks', 'latest', { soft: true });
133
- await AddPackageJsonDependency(tree, '@rxap/oauth', 'latest', { soft: true });
134
- }
135
-
136
- if (options.material) {
137
- await AddPackageJsonDependency(tree, '@angular/material', ANGULAR_VERSION, { soft: true });
138
- await AddPackageJsonDependency(tree, '@angular/cdk', ANGULAR_VERSION, { soft: true });
139
- }
140
-
141
- if (options.serviceWorker) {
142
- await AddPackageJsonDependency(tree, '@rxap/service-worker', 'latest', { soft: true });
143
- await AddPackageJsonDependency(tree, '@rxap/life-cycle', 'latest', { soft: true });
144
- await AddPackageJsonDependency(tree, '@angular/service-worker', ANGULAR_VERSION, { soft: true });
145
- }
146
-
147
- if (options.monolithic) {
148
- await AddPackageJsonDependency(tree, '@rxap/layout', 'latest', { soft: true });
149
- await AddPackageJsonDependency(tree, '@rxap/ngx-theme', 'latest', { soft: true });
150
- await AddPackageJsonDependency(tree, '@ctrl/tinycolor', 'latest', { soft: true });
151
- await AddPackageJsonDependency(tree, '@rxap/ngx-pub-sub', 'latest', { soft: true });
152
- await AddPackageJsonDependency(tree, '@rxap/services', 'latest', { soft: true });
153
- await AddPackageJsonDependency(tree, '@rxap/data-source', 'latest', { soft: true });
154
- await AddPackageJsonDependency(tree, '@rxap/pattern', 'latest', { soft: true });
155
- await AddPackageJsonDependency(tree, '@rxap/definition', 'latest', { soft: true });
156
- await AddPackageJsonDependency(tree, '@rxap/authentication', 'latest', { soft: true });
157
- await AddPackageJsonDependency(tree, '@rxap/icon', 'latest', { soft: true });
158
- await AddPackageJsonDependency(tree, '@rxap/material-directives', 'latest', { soft: true });
159
- await AddPackageJsonDependency(tree, '@rxap/browser-utilities', 'latest', { soft: true });
160
- await AddPackageJsonDependency(tree, '@rxap/authorization', 'latest', { soft: true });
161
- await AddPackageJsonDependency(tree, '@rxap/ngx-user', 'latest', { soft: true });
162
- }
163
-
164
- if (options.openApi) {
165
- await AddPackageJsonDependency(tree, '@rxap/open-api', 'latest', { soft: true });
166
- await AddPackageJsonDependency(tree, '@rxap/remote-method', 'latest', { soft: true });
167
- await AddPackageJsonDependency(tree, '@rxap/definition', 'latest', { soft: true });
168
- }
169
-
170
- if (options.sentry) {
171
- await AddPackageJsonDependency(tree, '@rxap/ngx-sentry', 'latest', { soft: true });
172
- }
173
-
174
- if (options.i18n) {
175
- await AddPackageJsonDependency(tree, '@rxap/ngx-localize', 'latest', { soft: true });
176
- await AddPackageJsonDependency(tree, '@rxap/ngx-user', 'latest', { soft: true });
177
- }
178
-
179
- if (options.localazy) {
180
- await AddPackageJsonDevDependency(tree, '@localazy/cli', 'latest', { soft: true });
181
- await AddPackageJsonDevDependency(tree, '@rxap/plugin-localazy', 'latest', { soft: true });
182
- }
183
-
184
- if (options.deploy === 'web3-storage') {
185
- await AddPackageJsonDevDependency(tree, '@rxap/plugin-web3-storage', 'latest', { soft: true });
186
- }
187
-
188
- if (options.i18n && options.deploy === 'web3-storage') {
189
- CoerceFilesStructure(tree, {
190
- srcFolder: join(__dirname, 'files', 'i18n'),
191
- target: 'shared/angular',
192
- overwrite: options.overwrite,
193
- });
194
- }
195
-
196
- CoerceFilesStructure(tree, {
197
- srcFolder: join(__dirname, 'files', 'shared'),
198
- target: 'shared/angular',
199
- overwrite: options.overwrite,
200
- });
201
-
202
- CoerceFile(tree, 'shared/angular/assets/custom.svg', '<svg></svg>');
203
-
204
- if (options.i18n && !options.skipDocker) {
205
- let dockerfileContent = tree.read('shared/angular/Dockerfile', 'utf-8')!;
206
- dockerfileContent = dockerfileContent.replace('registry.gitlab.com/rxap/docker/nginx:', 'registry.gitlab.com/rxap/docker/i18n-nginx:');
207
- CoerceFile(tree, 'shared/angular/Dockerfile', dockerfileContent, true);
208
- }
209
-
210
- CoerceFilesStructure(tree, {
211
- srcFolder: join(__dirname, 'files', 'styles'),
212
- target: 'shared/angular/styles',
213
- overwrite: options.overwrite,
214
- });
215
-
216
- if (options.oauth) {
217
- CoerceFilesStructure(tree, {
218
- srcFolder: join(__dirname, 'files', 'oauth'),
219
- target: 'shared/angular/assets',
220
- overwrite: options.overwrite,
221
- });
222
- }
223
-
224
- updateTargetDefaults(tree, options);
225
-
226
- await CoerceProjects(tree, options);
227
-
228
- if (!options.skipProjects) {
229
- for (const [ projectName, project ] of getProjects(tree).entries()) {
230
-
231
- if (skipProject(tree, options, project, projectName)) {
232
- continue;
233
- }
234
-
235
- GenerateSerializedSchematicFile(
236
- tree,
237
- GetProjectRoot(tree, projectName),
238
- '@rxap/plugin-angular',
239
- 'init-application',
240
- DeleteProperties(options, [ 'generateMain' ]),
241
- );
242
-
243
- console.log(`init angular application project: ${ projectName }`);
244
-
245
- const sourceRoot = GetProjectSourceRoot(tree, projectName);
246
-
247
- ApplicationInitProject(tree, projectName, project, options);
248
-
249
- if (options.overwrite || !tree.read(join(sourceRoot, 'styles.scss'), 'utf-8')?.match(/@use ".+\/shared\/angular\/styles";/)) {
250
- generateFiles(tree, join(__dirname, 'files', 'root'), sourceRoot, {
251
- serviceWorker: false,
252
- ...options,
253
- relativePathToWorkspaceRoot: relative(sourceRoot, ''),
254
- name: projectName.replace(/^user-interface-/, ''),
255
- classify,
256
- prefix: GetProjectPrefix(tree, projectName, 'rxap'),
257
- });
258
- }
259
-
260
- if (options.overwrite) {
261
- const publicDirectory = join(sourceRoot, 'public');
262
- const usePublicDirectory = tree.exists(publicDirectory);
263
- const baseDirectory = usePublicDirectory ? publicDirectory : sourceRoot;
264
- generateFiles(tree, join(__dirname, 'files', 'public'), baseDirectory, {});
265
- }
266
-
267
- updateProjectTargets(tree, projectName, project, options);
268
- updateTags(project, options);
269
- updateGitIgnore(project, tree, options);
270
- updateTsConfig(tree, projectName);
271
-
272
- if (options.cleanup || options.coerce) {
273
- cleanup(tree, projectName, options);
274
- }
275
-
276
- coerceEnvironmentFiles(
277
- tree,
278
- {
279
- ...options,
280
- project: projectName,
281
- },
282
- );
283
-
284
- coerceAppConfig(tree, projectName, options);
285
-
286
- if (options.generateMain) {
287
- updateMainFile(tree, projectName, project, options);
288
- }
289
- if (options.localazy) {
290
- coerceLocalazyConfigFile(tree, project);
291
- }
292
- if (options.authentication) {
293
- await generateAuthentication(tree, projectName, project, options);
294
- }
295
- if (options.monolithic) {
296
- generateMonolithic(tree, projectName, project, options);
297
- }
298
- if (options.moduleFederation === 'remote') {
299
- if (options.overwrite) {
300
- generateFiles(tree, join(__dirname, 'files', 'mfe-remote'), sourceRoot, {
301
- ...options,
302
- relativePathToWorkspaceRoot: relative(sourceRoot, ''),
303
- name: projectName
304
- .replace(/^user-interface-/, '')
305
- .replace(/^remote-/, '')
306
- .replace(/^feature-/, ''),
307
- classify,
308
- dasherize,
309
- prefix: GetProjectPrefix(tree, projectName, 'rxap'),
310
- });
311
- }
312
- if (options.host) {
313
- linkMfeRemoteWithHost(tree, projectName, options);
314
- }
315
- }
316
- if (options.moduleFederation) {
317
- CoerceFilesStructure(tree, {
318
- srcFolder: join(__dirname, 'files', 'mfe'),
319
- target: '',
320
- overwrite: options.overwrite,
321
- });
322
- }
323
- if (options.serviceWorker) {
324
- const publicDirectory = join(sourceRoot, 'public');
325
- const usePublicDirectory = tree.exists(publicDirectory);
326
- const baseDirectory = usePublicDirectory ? publicDirectory : sourceRoot;
327
- if (options.overwrite || !tree.exists(join(baseDirectory, 'manifest.webmanifest'))) {
328
- generateFiles(tree, join(__dirname, 'files', 'service-worker'), baseDirectory, {
329
- ...options,
330
- name: projectName.replace(/^user-interface-/, ''),
331
- classify,
332
- dasherize,
333
- });
334
- }
335
- }
336
-
337
- CoerceFilesStructure(tree, {
338
- srcFolder: join(__dirname, 'files', 'assets'),
339
- target: join(sourceRoot, 'assets'),
340
- overwrite: options.overwrite,
341
- });
342
- coerceTestSetup(tree, projectName);
343
-
344
- // apply changes to the project configuration
345
- updateProjectConfiguration(tree, projectName, project);
346
-
347
- }
348
- }
349
-
350
- if (!options.skipFormat) {
351
- await formatFiles(tree);
352
- }
353
-
354
- }
355
-
356
- export default initApplicationGenerator;
@@ -1,5 +0,0 @@
1
- import { convertNxGenerator } from '@nx/devkit';
2
- import generator from './generator';
3
-
4
- const schematic = convertNxGenerator(generator);
5
- export default schematic;
@@ -1,60 +0,0 @@
1
- import { Tree } from '@nx/devkit';
2
- import {
3
- CoerceAppRoutes,
4
- CoerceLayoutRoutes,
5
- } from '@rxap/ts-morph';
6
- import { TsMorphAngularProjectTransform } from '@rxap/workspace-ts-morph';
7
- import { GetProjectSourceRoot } from '@rxap/workspace-utilities';
8
- import { join } from 'path';
9
- import { InitApplicationGeneratorSchema } from './schema';
10
-
11
- export function linkMfeRemoteWithHost(tree: Tree, projectName: string, options: InitApplicationGeneratorSchema) {
12
-
13
- if (!options.host) {
14
- throw new Error('The host project must be defined');
15
- }
16
-
17
- const hostSourceRoot = GetProjectSourceRoot(tree, options.host);
18
- const isHostMonolithic = tree.exists(join(hostSourceRoot, 'app/layout.routes.ts'));
19
-
20
- const path = projectName
21
- .replace(/^user-interface-/, '')
22
- .replace(/^remote-/, '')
23
- .replace(/^feature-/, '');
24
-
25
- if (isHostMonolithic && !options.standaloneImport) {
26
- TsMorphAngularProjectTransform(tree, {
27
- project: options.host,
28
- }, (project, [ layoutSourceFile ]) => {
29
- CoerceLayoutRoutes(layoutSourceFile, {
30
- itemList: [
31
- {
32
- route: {
33
- path,
34
- loadRemoteModule: projectName,
35
- },
36
- component: 'MinimalLayoutComponent',
37
- },
38
- ],
39
- withStatusCheckGuard: options.apiStatusCheck,
40
- withNavigation: true,
41
- });
42
- }, [ 'app/layout.routes.ts' ]);
43
- } else {
44
- TsMorphAngularProjectTransform(tree, {
45
- project: options.host,
46
- }, (project, [ appRoutes ]) => {
47
- CoerceAppRoutes(appRoutes, {
48
- itemList: [
49
- {
50
- route: {
51
- path,
52
- loadRemoteModule: projectName,
53
- },
54
- },
55
- ],
56
- });
57
- }, [ 'app/app.routes.ts' ]);
58
- }
59
-
60
- }
@@ -1,4 +0,0 @@
1
- export interface ProjectI18nConfiguration {
2
- sourceLocale?: string;
3
- locales?: Record<string, { translation: string, baseHref: string }>;
4
- }
@@ -1,22 +0,0 @@
1
- import {
2
- ProjectConfiguration,
3
- Tree,
4
- } from '@nx/devkit';
5
- import { CoerceIgnorePattern } from '@rxap/workspace-utilities';
6
- import { join } from 'path';
7
- import { InitApplicationGeneratorSchema } from './schema';
8
-
9
- export function updateGitIgnore(project: ProjectConfiguration, tree: Tree, options: InitApplicationGeneratorSchema) {
10
-
11
- if (options.i18n) {
12
-
13
- if (!project.sourceRoot) {
14
- throw new Error(`The project ${ project.name } has no source root`);
15
- }
16
-
17
- CoerceIgnorePattern(tree, join(project.sourceRoot, '.gitignore'), [
18
- '/i18n',
19
- ]);
20
- }
21
-
22
- }
@@ -1,118 +0,0 @@
1
- import {
2
- ProjectConfiguration,
3
- Tree,
4
- } from '@nx/devkit';
5
- import { CoerceImports } from '@rxap/ts-morph';
6
- import { TsMorphAngularProjectTransform } from '@rxap/workspace-ts-morph';
7
- import { Statement } from 'ts-morph';
8
- import {
9
- assertMainStatements,
10
- MAIN_BOOTSTRAP_STATEMENT,
11
- } from './assert-main-statements';
12
- import { InitApplicationGeneratorSchema } from './schema';
13
-
14
- export function updateMainFile(
15
- tree: Tree, projectName: string, project: ProjectConfiguration, options: InitApplicationGeneratorSchema) {
16
- TsMorphAngularProjectTransform(tree, {
17
- project: projectName,
18
- // directory: '..' // to move from the apps/demo/src/app folder into the apps/demo/src folder
19
- }, (project, [ sourceFile, mainSourceFile ]) => {
20
-
21
- assertMainStatements(sourceFile, options);
22
-
23
- const importDeclarations = [];
24
- const statements: string[] = [];
25
-
26
- if (options.serviceWorker) {
27
- importDeclarations.push({
28
- moduleSpecifier: '@rxap/service-worker',
29
- namedImports: [ 'UnregisterServiceWorker' ],
30
- });
31
- statements.push('application.before(() => UnregisterServiceWorker(environment));');
32
- }
33
-
34
- if (options.openApi) {
35
- importDeclarations.push({
36
- moduleSpecifier: '@rxap/open-api',
37
- namedImports: [ 'OpenApiInit' ],
38
- });
39
- if (options.openApiLegacy) {
40
- statements.push('application.before(() => OpenApiInit(environment, { load: true }));');
41
- } else {
42
- statements.push('application.before(() => OpenApiInit(environment));');
43
- }
44
- }
45
-
46
- if (options.sentry) {
47
- importDeclarations.push({
48
- moduleSpecifier: '@rxap/ngx-sentry',
49
- namedImports: [ 'SentryInit' ],
50
- });
51
- statements.push('application.before(() => SentryInit(environment));');
52
- }
53
-
54
- CoerceImports(sourceFile, importDeclarations);
55
-
56
- for (let i = 0; i < statements.length; i++) {
57
- const statement = statements[i];
58
- const lastStatement = i > 0 ? statements[i - 1] : null;
59
- const nestStatement = i < statements.length - 1 ? statements[i + 1] : null;
60
- const existingStatements: string[] = sourceFile.getStatements().map((s: Statement) => s.getText()) ?? [];
61
- if (!existingStatements.includes(statement)) {
62
- let index: number;
63
- if (lastStatement) {
64
- index = existingStatements.findIndex(s => s.includes(lastStatement)) + 1;
65
- } else if (nestStatement) {
66
- index = existingStatements.findIndex(s => s.includes(nestStatement));
67
- } else {
68
- index = existingStatements.findIndex(s => s.includes(MAIN_BOOTSTRAP_STATEMENT));
69
- }
70
- console.log(`insert statement: ${ statement } at index ${ index }`);
71
- sourceFile.insertStatements(index, statement);
72
- }
73
- }
74
-
75
- if (options.moduleFederation === 'host') {
76
- mainSourceFile.set({
77
- statements: [
78
- `import {
79
- setRemoteDefinitions,
80
- setRemoteUrlResolver
81
- } from '@nx/angular/mf';
82
- import type { Environment } from '@rxap/environment';
83
- import { environment } from './environments/environment';
84
-
85
- export async function SetupDynamicMfe(environment: Environment) {
86
-
87
- const manifest = environment.moduleFederation?.manifest;
88
-
89
- if (!manifest) {
90
- const release = environment.tag || environment.branch || 'latest';
91
- setRemoteUrlResolver((remoteName: string) => \`\${ location.origin }/__mfe/\${ release }/\${ remoteName }\`);
92
- } else {
93
-
94
- let definitions: Record<string, string>;
95
-
96
- if (typeof manifest === 'object') {
97
- definitions = manifest;
98
- } else {
99
- definitions = await fetch(manifest).then((res) => res.json());
100
- }
101
-
102
- setRemoteDefinitions(definitions);
103
-
104
- }
105
-
106
- }
107
-
108
- SetupDynamicMfe(environment).then(() => import('./bootstrap').catch((err) => console.error(err)));
109
- `,
110
- ],
111
- });
112
- }
113
-
114
- }, [
115
- options.moduleFederation ? 'bootstrap.ts' : 'main.ts',
116
- 'main.ts',
117
- ]);
118
- }