@nx/angular 19.1.0-beta.1 → 19.1.0-beta.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. package/executors.json +1 -1
  2. package/migrations.json +82 -0
  3. package/package.json +14 -13
  4. package/src/builders/dev-server/dev-server.impl.js +1 -1
  5. package/src/builders/dev-server/schema.json +1 -1
  6. package/src/builders/module-federation-dev-ssr/module-federation-dev-ssr.impl.js +4 -1
  7. package/src/builders/utilities/module-federation.d.ts +2 -1
  8. package/src/builders/utilities/module-federation.js +17 -3
  9. package/src/builders/webpack-browser/schema.json +4 -3
  10. package/src/builders/webpack-browser/webpack-browser.impl.js +1 -1
  11. package/src/builders/webpack-server/schema.json +7 -6
  12. package/src/builders/webpack-server/webpack-server.impl.js +3 -5
  13. package/src/executors/application/application.impl.d.ts +2 -1
  14. package/src/executors/application/application.impl.js +2 -2
  15. package/src/executors/application/schema.json +4 -3
  16. package/src/executors/browser-esbuild/browser-esbuild.impl.d.ts +2 -7
  17. package/src/executors/browser-esbuild/browser-esbuild.impl.js +2 -2
  18. package/src/executors/browser-esbuild/schema.json +4 -3
  19. package/src/executors/extract-i18n/extract-i18n.impl.js +2 -2
  20. package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.js +2 -1
  21. package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.js +8 -4
  22. package/src/executors/module-federation-dev-server/schema.json +1 -1
  23. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.js +6 -6
  24. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.transform.js +3 -2
  25. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.transform.js +2 -1
  26. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/options.di.js +2 -1
  27. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ngc/compile-source-files.d.ts +1 -2
  28. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ngc/compile-source-files.js +5 -4
  29. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.js +11 -11
  30. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.transform.js +2 -1
  31. package/src/executors/ng-packagr-lite/schema.json +1 -1
  32. package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.transform.js +5 -4
  33. package/src/executors/package/ng-packagr-adjustments/ng-package/options.di.js +2 -1
  34. package/src/executors/package/ng-packagr-adjustments/ng-packagr.js +4 -4
  35. package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.d.ts +1 -2
  36. package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.js +5 -4
  37. package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.js +11 -11
  38. package/src/executors/utilities/esbuild-extensions.d.ts +2 -4
  39. package/src/executors/utilities/module-loader.d.ts +1 -2
  40. package/src/executors/utilities/ng-packagr/stylesheet-processor.js +22 -8
  41. package/src/executors/utilities/typescript.d.ts +1 -2
  42. package/src/executors/utilities/typescript.js +4 -3
  43. package/src/generators/add-linting/lib/create-eslint-configuration.d.ts +2 -2
  44. package/src/generators/add-linting/schema.json +1 -1
  45. package/src/generators/application/files/base-pre18/src/favicon.ico +0 -0
  46. package/src/generators/application/files/ng-module/src/main.ts__tpl__ +3 -1
  47. package/src/generators/application/files/standalone-components/src/app/app.config.ts__tpl__ +2 -2
  48. package/src/generators/application/lib/add-linting.js +2 -1
  49. package/src/generators/application/lib/create-files.js +7 -0
  50. package/src/generators/application/lib/create-project.js +12 -5
  51. package/src/generators/component-test/component-test.js +1 -1
  52. package/src/generators/cypress-component-configuration/cypress-component-configuration.js +3 -3
  53. package/src/generators/federate-module/lib/add-remote.js +2 -1
  54. package/src/generators/host/host.js +3 -2
  55. package/src/generators/library/library.js +4 -3
  56. package/src/generators/ng-add/migrators/builders/angular-devkit-karma.migrator.js +3 -2
  57. package/src/generators/ng-add/migrators/migrator.d.ts +1 -1
  58. package/src/generators/ng-add/migrators/migrator.js +7 -7
  59. package/src/generators/ng-add/migrators/projects/app.migrator.js +2 -2
  60. package/src/generators/ng-add/migrators/projects/e2e.migrator.js +1 -1
  61. package/src/generators/ng-add/utilities/validation-logging.js +2 -1
  62. package/src/generators/ngrx-root-store/ngrx-root-store.js +2 -1
  63. package/src/generators/setup-mf/lib/add-remote-to-host.js +13 -4
  64. package/src/generators/setup-mf/lib/fix-bootstrap.d.ts +1 -1
  65. package/src/generators/setup-mf/lib/fix-bootstrap.js +12 -5
  66. package/src/generators/setup-mf/lib/setup-host-if-dynamic.js +5 -1
  67. package/src/generators/setup-mf/setup-mf.js +1 -1
  68. package/src/generators/setup-ssr/files/server/application-builder/__serverFileName__ +4 -3
  69. package/src/generators/setup-ssr/files/server/server-builder/v17+/__serverFileName__ +4 -3
  70. package/src/generators/setup-ssr/lib/add-dependencies.js +2 -1
  71. package/src/generators/setup-ssr/lib/generate-files.js +1 -7
  72. package/src/generators/setup-ssr/lib/index.d.ts +0 -1
  73. package/src/generators/setup-ssr/lib/index.js +0 -1
  74. package/src/generators/setup-ssr/lib/validate-options.js +0 -13
  75. package/src/generators/setup-ssr/schema.json +4 -3
  76. package/src/generators/setup-ssr/setup-ssr.js +0 -3
  77. package/src/generators/stories/stories.js +3 -2
  78. package/src/generators/storybook-configuration/lib/generate-stories.js +1 -1
  79. package/src/generators/utils/storybook-ast/tree-utilities.js +2 -1
  80. package/src/generators/utils/version-utils.js +4 -3
  81. package/src/migrations/update-15-2-0/remove-browserlist-config.js +1 -1
  82. package/src/migrations/update-15-2-0/remove-platform-server-exports.js +2 -1
  83. package/src/migrations/update-15-2-0/update-karma-main-file.js +2 -1
  84. package/src/migrations/update-16-1-0/remove-render-module-platform-server-exports.js +2 -1
  85. package/src/migrations/update-19-1-0/update-angular-cli.d.ts +3 -0
  86. package/src/migrations/update-19-1-0/update-angular-cli.js +23 -0
  87. package/src/utils/backward-compatible-versions.d.ts +10 -5
  88. package/src/utils/backward-compatible-versions.js +18 -19
  89. package/src/utils/file-change-recorder.js +2 -1
  90. package/src/utils/mf/with-module-federation.js +3 -2
  91. package/src/utils/version-utils.d.ts +2 -2
  92. package/src/utils/version-utils.js +2 -1
  93. package/src/utils/versions.d.ts +4 -4
  94. package/src/utils/versions.js +4 -4
  95. package/index.js +0 -8
  96. package/mf/index.js +0 -7
  97. package/mf/mf.js +0 -53
  98. package/src/builders/webpack-server/validate-options.d.ts +0 -2
  99. package/src/builders/webpack-server/validate-options.js +0 -33
  100. package/src/executors/utilities/ng-compiler-cli.d.ts +0 -1
  101. package/src/executors/utilities/ng-compiler-cli.js +0 -8
  102. package/src/generators/setup-ssr/files/ngmodule/pre-v15-2/src/main.ts__tpl__ +0 -14
  103. package/src/generators/setup-ssr/lib/update-app-module.d.ts +0 -3
  104. package/src/generators/setup-ssr/lib/update-app-module.js +0 -27
  105. package/src/runtime/nx/data-persistence.js +0 -350
  106. package/testing/index.js +0 -6
  107. package/testing/src/testing-utils.js +0 -40
  108. /package/src/generators/application/files/{base/src → base-18+/public}/favicon.ico +0 -0
  109. /package/src/generators/application/files/{base → base-pre18}/src/assets/.gitkeep__tpl__ +0 -0
  110. /package/src/generators/setup-ssr/files/ngmodule/{base/src → src}/__main__ +0 -0
  111. /package/src/generators/setup-ssr/files/ngmodule/{base/src → src}/app/__rootModuleFileName__ +0 -0
@@ -1,350 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.navigation = exports.fetch = exports.optimisticUpdate = exports.pessimisticUpdate = void 0;
4
- const router_store_1 = require("@ngrx/router-store");
5
- const rxjs_1 = require("rxjs");
6
- const operators_1 = require("rxjs/operators");
7
- /**
8
- *
9
- * @whatItDoes Handles pessimistic updates (updating the server first).
10
- *
11
- * Updating the server, when implemented naively, suffers from race conditions and poor error handling.
12
- *
13
- * `pessimisticUpdate` addresses these problems. It runs all fetches in order, which removes race conditions
14
- * and forces the developer to handle errors.
15
- *
16
- * ## Example:
17
- *
18
- * ```typescript
19
- * @Injectable()
20
- * class TodoEffects {
21
- * updateTodo$ = createEffect(() =>
22
- * this.actions$.pipe(
23
- * ofType('UPDATE_TODO'),
24
- * pessimisticUpdate({
25
- * // provides an action
26
- * run: (action: UpdateTodo) => {
27
- * // update the backend first, and then dispatch an action that will
28
- * // update the client side
29
- * return this.backend.updateTodo(action.todo.id, action.todo).pipe(
30
- * map((updated) => ({
31
- * type: 'UPDATE_TODO_SUCCESS',
32
- * todo: updated,
33
- * }))
34
- * );
35
- * },
36
- * onError: (action: UpdateTodo, error: any) => {
37
- * // we don't need to undo the changes on the client side.
38
- * // we can dispatch an error, or simply log the error here and return `null`
39
- * return null;
40
- * },
41
- * })
42
- * )
43
- * );
44
- *
45
- * constructor(private actions$: Actions, private backend: Backend) {}
46
- * }
47
- * ```
48
- *
49
- * Note that if you don't return a new action from the run callback, you must set the dispatch property
50
- * of the effect to false, like this:
51
- *
52
- * ```typescript
53
- * class TodoEffects {
54
- * updateTodo$ = createEffect(() =>
55
- * this.actions$.pipe(
56
- * //...
57
- * ), { dispatch: false }
58
- * );
59
- * }
60
- * ```
61
- *
62
- * @param opts
63
- */
64
- function pessimisticUpdate(opts) {
65
- return (source) => {
66
- return source.pipe(mapActionAndState(), (0, operators_1.concatMap)(runWithErrorHandling(opts.run, opts.onError)));
67
- };
68
- }
69
- exports.pessimisticUpdate = pessimisticUpdate;
70
- /**
71
- *
72
- * @whatItDoes Handles optimistic updates (updating the client first).
73
- *
74
- * It runs all fetches in order, which removes race conditions and forces the developer to handle errors.
75
- *
76
- * When using `optimisticUpdate`, in case of a failure, the developer has already updated the state locally,
77
- * so the developer must provide an undo action.
78
- *
79
- * The error handling must be done in the callback, or by means of the undo action.
80
- *
81
- * ## Example:
82
- *
83
- * ```typescript
84
- * @Injectable()
85
- * class TodoEffects {
86
- * updateTodo$ = createEffect(() =>
87
- * this.actions$.pipe(
88
- * ofType('UPDATE_TODO'),
89
- * optimisticUpdate({
90
- * // provides an action
91
- * run: (action: UpdateTodo) => {
92
- * return this.backend.updateTodo(action.todo.id, action.todo).pipe(
93
- * mapTo({
94
- * type: 'UPDATE_TODO_SUCCESS',
95
- * })
96
- * );
97
- * },
98
- * undoAction: (action: UpdateTodo, error: any) => {
99
- * // dispatch an undo action to undo the changes in the client state
100
- * return {
101
- * type: 'UNDO_TODO_UPDATE',
102
- * todo: action.todo,
103
- * };
104
- * },
105
- * })
106
- * )
107
- * );
108
- *
109
- * constructor(private actions$: Actions, private backend: Backend) {}
110
- * }
111
- * ```
112
- *
113
- * Note that if you don't return a new action from the run callback, you must set the dispatch property
114
- * of the effect to false, like this:
115
- *
116
- * ```typescript
117
- * class TodoEffects {
118
- * updateTodo$ = createEffect(() =>
119
- * this.actions$.pipe(
120
- * //...
121
- * ), { dispatch: false }
122
- * );
123
- * }
124
- * ```
125
- *
126
- * @param opts
127
- */
128
- function optimisticUpdate(opts) {
129
- return (source) => {
130
- return source.pipe(mapActionAndState(), (0, operators_1.concatMap)(runWithErrorHandling(opts.run, opts.undoAction)));
131
- };
132
- }
133
- exports.optimisticUpdate = optimisticUpdate;
134
- /**
135
- *
136
- * @whatItDoes Handles data fetching.
137
- *
138
- * Data fetching implemented naively suffers from race conditions and poor error handling.
139
- *
140
- * `fetch` addresses these problems. It runs all fetches in order, which removes race conditions
141
- * and forces the developer to handle errors.
142
- *
143
- * ## Example:
144
- *
145
- * ```typescript
146
- * @Injectable()
147
- * class TodoEffects {
148
- * loadTodos$ = createEffect(() =>
149
- * this.actions$.pipe(
150
- * ofType('GET_TODOS'),
151
- * fetch({
152
- * // provides an action
153
- * run: (a: GetTodos) => {
154
- * return this.backend.getAll().pipe(
155
- * map((response) => ({
156
- * type: 'TODOS',
157
- * todos: response.todos,
158
- * }))
159
- * );
160
- * },
161
- * onError: (action: GetTodos, error: any) => {
162
- * // dispatch an undo action to undo the changes in the client state
163
- * return null;
164
- * },
165
- * })
166
- * )
167
- * );
168
- *
169
- * constructor(private actions$: Actions, private backend: Backend) {}
170
- * }
171
- * ```
172
- *
173
- * This is correct, but because it set the concurrency to 1, it may not be performant.
174
- *
175
- * To fix that, you can provide the `id` function, like this:
176
- *
177
- * ```typescript
178
- * @Injectable()
179
- * class TodoEffects {
180
- * loadTodo$ = createEffect(() =>
181
- * this.actions$.pipe(
182
- * ofType('GET_TODO'),
183
- * fetch({
184
- * id: (todo: GetTodo) => {
185
- * return todo.id;
186
- * },
187
- * // provides an action
188
- * run: (todo: GetTodo) => {
189
- * return this.backend.getTodo(todo.id).map((response) => ({
190
- * type: 'LOAD_TODO_SUCCESS',
191
- * todo: response.todo,
192
- * }));
193
- * },
194
- * onError: (action: GetTodo, error: any) => {
195
- * // dispatch an undo action to undo the changes in the client state
196
- * return null;
197
- * },
198
- * })
199
- * )
200
- * );
201
- *
202
- * constructor(private actions$: Actions, private backend: Backend) {}
203
- * }
204
- * ```
205
- *
206
- * With this setup, the requests for Todo 1 will run concurrently with the requests for Todo 2.
207
- *
208
- * In addition, if there are multiple requests for Todo 1 scheduled, it will only run the last one.
209
- *
210
- * @param opts
211
- */
212
- function fetch(opts) {
213
- return (source) => {
214
- if (opts.id) {
215
- const groupedFetches = source.pipe(mapActionAndState(), (0, operators_1.groupBy)(([action, ...store]) => {
216
- return opts.id(action, ...store);
217
- }));
218
- return groupedFetches.pipe((0, operators_1.mergeMap)((pairs) => pairs.pipe((0, operators_1.switchMap)(runWithErrorHandling(opts.run, opts.onError)))));
219
- }
220
- return source.pipe(mapActionAndState(), (0, operators_1.concatMap)(runWithErrorHandling(opts.run, opts.onError)));
221
- };
222
- }
223
- exports.fetch = fetch;
224
- /**
225
- * @whatItDoes Handles data fetching as part of router navigation.
226
- *
227
- * Data fetching implemented naively suffers from race conditions and poor error handling.
228
- *
229
- * `navigation` addresses these problems.
230
- *
231
- * It checks if an activated router state contains the passed in component type, and, if it does, runs the `run`
232
- * callback. It provides the activated snapshot associated with the component and the current state. And it only runs
233
- * the last request.
234
- *
235
- * ## Example:
236
- *
237
- * ```typescript
238
- * @Injectable()
239
- * class TodoEffects {
240
- * loadTodo$ = createEffect(() =>
241
- * this.actions$.pipe(
242
- * // listens for the routerNavigation action from @ngrx/router-store
243
- * navigation(TodoComponent, {
244
- * run: (activatedRouteSnapshot: ActivatedRouteSnapshot) => {
245
- * return this.backend
246
- * .fetchTodo(activatedRouteSnapshot.params['id'])
247
- * .pipe(
248
- * map((todo) => ({
249
- * type: 'LOAD_TODO_SUCCESS',
250
- * todo: todo,
251
- * }))
252
- * );
253
- * },
254
- * onError: (
255
- * activatedRouteSnapshot: ActivatedRouteSnapshot,
256
- * error: any
257
- * ) => {
258
- * // we can log and error here and return null
259
- * // we can also navigate back
260
- * return null;
261
- * },
262
- * })
263
- * )
264
- * );
265
- *
266
- * constructor(private actions$: Actions, private backend: Backend) {}
267
- * }
268
- * ```
269
- *
270
- * @param component
271
- * @param opts
272
- */
273
- function navigation(component, opts) {
274
- return (source) => {
275
- const nav = source.pipe(mapActionAndState(), (0, operators_1.filter)(([action]) => isStateSnapshot(action)), (0, operators_1.map)(([action, ...slices]) => {
276
- if (!isStateSnapshot(action)) {
277
- // Because of the above filter we'll never get here,
278
- // but this properly type narrows `action`
279
- return;
280
- }
281
- return [
282
- findSnapshot(component, action.payload.routerState.root),
283
- ...slices,
284
- ];
285
- }), (0, operators_1.filter)(([snapshot]) => !!snapshot));
286
- return nav.pipe((0, operators_1.switchMap)(runWithErrorHandling(opts.run, opts.onError)));
287
- };
288
- }
289
- exports.navigation = navigation;
290
- function isStateSnapshot(action) {
291
- return action.type === router_store_1.ROUTER_NAVIGATION;
292
- }
293
- function runWithErrorHandling(run, onError) {
294
- return ([action, ...slices]) => {
295
- try {
296
- const r = wrapIntoObservable(run(action, ...slices));
297
- return r.pipe((0, operators_1.catchError)((e) => wrapIntoObservable(onError(action, e))));
298
- }
299
- catch (e) {
300
- return wrapIntoObservable(onError(action, e));
301
- }
302
- };
303
- }
304
- /**
305
- * @whatItDoes maps Observable<Action | [Action, State]> to
306
- * Observable<[Action, State]>
307
- */
308
- function mapActionAndState() {
309
- return (source) => {
310
- return source.pipe((0, operators_1.map)((value) => normalizeActionAndState(value)));
311
- };
312
- }
313
- /**
314
- * @whatItDoes Normalizes either a bare action or an array of action and slices
315
- * into an array of action and slices (or undefined)
316
- */
317
- function normalizeActionAndState(args) {
318
- let action, slices;
319
- if (args instanceof Array) {
320
- [action, ...slices] = args;
321
- }
322
- else {
323
- slices = [];
324
- action = args;
325
- }
326
- return [action, ...slices];
327
- }
328
- function findSnapshot(component, s) {
329
- if (s.routeConfig && s.routeConfig.component === component) {
330
- return s;
331
- }
332
- for (const c of s.children) {
333
- const ss = findSnapshot(component, c);
334
- if (ss) {
335
- return ss;
336
- }
337
- }
338
- return null;
339
- }
340
- function wrapIntoObservable(obj) {
341
- if ((0, rxjs_1.isObservable)(obj)) {
342
- return obj;
343
- }
344
- else if (!obj) {
345
- return (0, rxjs_1.of)();
346
- }
347
- else {
348
- return (0, rxjs_1.of)(obj);
349
- }
350
- }
package/testing/index.js DELETED
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.readFirst = exports.readAll = void 0;
4
- var testing_utils_1 = require("./src/testing-utils");
5
- Object.defineProperty(exports, "readAll", { enumerable: true, get: function () { return testing_utils_1.readAll; } });
6
- Object.defineProperty(exports, "readFirst", { enumerable: true, get: function () { return testing_utils_1.readFirst; } });
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.readFirst = exports.readAll = void 0;
4
- const operators_1 = require("rxjs/operators");
5
- /**
6
- * @deprecated This will be removed in a later version of Nx. Since RxJS 7, use firstValueFrom(obs$.pipe(toArray())) or lastValueFrom(obs$.pipe(toArray())).
7
- *
8
- * @whatItDoes reads all the values from an observable and returns a promise
9
- * with an array of all values. This should be used in combination with async/await.
10
- *
11
- * ## Example
12
- *
13
- * ```typescript
14
- * const obs = of(1, 2, 3, 4);
15
- * const res = await readAll(obs)
16
- * expect(res).toEqual([1, 2, 3, 4]);
17
- * ```
18
- */
19
- function readAll(o) {
20
- return o.pipe((0, operators_1.toArray)()).toPromise();
21
- }
22
- exports.readAll = readAll;
23
- /**
24
- * @deprecated This will be removed in a later version of Nx. Since RxJS 7, use firstValueFrom(obs$)
25
- *
26
- * @whatItDoes reads the first value from an observable and returns a promise
27
- * with it. This should be used in combination with async/await.
28
- *
29
- * ## Example
30
- *
31
- * ```typescript
32
- * const obs = of(1, 2, 3, 4);
33
- * const res = await readFirst(obs)
34
- * expect(res).toEqual(1);
35
- * ```
36
- */
37
- function readFirst(o) {
38
- return o.pipe((0, operators_1.first)()).toPromise();
39
- }
40
- exports.readFirst = readFirst;