@nx/angular-rspack 24.0.0-beta.2 → 24.0.0-beta.4
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.
- package/dist/lib/config/config-utils/browser-config.d.ts +2 -1
- package/dist/lib/config/config-utils/browser-config.d.ts.map +1 -1
- package/dist/lib/config/config-utils/browser-config.js +2 -1
- package/dist/lib/config/config-utils/server-config.d.ts +2 -1
- package/dist/lib/config/config-utils/server-config.d.ts.map +1 -1
- package/dist/lib/config/config-utils/server-config.js +29 -3
- package/dist/lib/config/create-config.d.ts.map +1 -1
- package/dist/lib/config/create-config.js +5 -2
- package/dist/lib/models/augmented-compilation.d.ts +2 -2
- package/dist/lib/models/augmented-compilation.d.ts.map +1 -1
- package/dist/lib/plugins/angular-rspack-plugin.d.ts.map +1 -1
- package/dist/lib/plugins/angular-rspack-plugin.js +2 -2
- package/dist/lib/plugins/extract-licenses-plugin.d.ts +4 -4
- package/dist/lib/plugins/extract-licenses-plugin.d.ts.map +1 -1
- package/dist/lib/plugins/extract-licenses-plugin.js +43 -13
- package/dist/lib/plugins/index-html-plugin.d.ts +35 -0
- package/dist/lib/plugins/index-html-plugin.d.ts.map +1 -1
- package/dist/lib/plugins/index-html-plugin.js +138 -3
- package/dist/lib/plugins/loaders/angular-partial-transform.loader.d.ts.map +1 -1
- package/dist/lib/plugins/loaders/angular-partial-transform.loader.js +5 -7
- package/dist/lib/plugins/loaders/engine-manifest.d.ts +5 -2
- package/dist/lib/plugins/loaders/engine-manifest.d.ts.map +1 -1
- package/dist/lib/plugins/loaders/engine-manifest.js +9 -4
- package/dist/lib/plugins/ng-rspack.d.ts +7 -0
- package/dist/lib/plugins/ng-rspack.d.ts.map +1 -1
- package/dist/lib/plugins/ng-rspack.js +2 -0
- package/dist/lib/plugins/prerender-plugin.d.ts +2 -1
- package/dist/lib/plugins/prerender-plugin.d.ts.map +1 -1
- package/dist/lib/plugins/prerender-plugin.js +40 -23
- package/dist/lib/plugins/server-assets-plugin.d.ts +13 -0
- package/dist/lib/plugins/server-assets-plugin.d.ts.map +1 -0
- package/dist/lib/plugins/server-assets-plugin.js +42 -0
- package/dist/lib/plugins/tools/render-worker.d.ts +24 -1
- package/dist/lib/plugins/tools/render-worker.d.ts.map +1 -1
- package/dist/lib/plugins/tools/render-worker.js +48 -19
- package/dist/lib/ssr/server-assets.d.ts +29 -13
- package/dist/lib/ssr/server-assets.d.ts.map +1 -1
- package/dist/lib/ssr/server-assets.js +57 -34
- package/dist/lib/utils/beasties.d.ts +35 -0
- package/dist/lib/utils/beasties.d.ts.map +1 -0
- package/dist/lib/utils/beasties.js +11 -0
- package/dist/lib/utils/index-file/ngcm-attribute.d.ts +16 -0
- package/dist/lib/utils/index-file/ngcm-attribute.d.ts.map +1 -0
- package/dist/lib/utils/index-file/ngcm-attribute.js +37 -0
- package/dist/lib/utils/index-file/nonce.d.ts +15 -0
- package/dist/lib/utils/index-file/nonce.d.ts.map +1 -0
- package/dist/lib/utils/index-file/nonce.js +54 -0
- package/package.json +3 -3
|
@@ -1,42 +1,50 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.CRITICAL_CSS_FILE = exports.INDEX_CSR_HTML = exports.INDEX_SERVER_HTML = void 0;
|
|
4
|
+
exports.createServerAssets = createServerAssets;
|
|
5
|
+
exports.readCriticalCss = readCriticalCss;
|
|
4
6
|
const node_fs_1 = require("node:fs");
|
|
5
7
|
const promises_1 = require("node:fs/promises");
|
|
6
8
|
const node_path_1 = require("node:path");
|
|
9
|
+
/** The document server rendering renders into, in the server output. */
|
|
10
|
+
exports.INDEX_SERVER_HTML = 'index.server.html';
|
|
11
|
+
/** The document served for client-rendered routes, in the server output. */
|
|
12
|
+
exports.INDEX_CSR_HTML = 'index.csr.html';
|
|
7
13
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
* the
|
|
14
|
-
*
|
|
15
|
-
*
|
|
14
|
+
* The app manifest's critical CSS fields for `@angular/ssr` >= 22.2, in the
|
|
15
|
+
* server output.
|
|
16
|
+
*/
|
|
17
|
+
exports.CRITICAL_CSS_FILE = 'critical-css.json';
|
|
18
|
+
/**
|
|
19
|
+
* Builds the `assets` table of the Angular app manifest from the build
|
|
20
|
+
* output. The esbuild application builder inlines these assets into the
|
|
21
|
+
* server output at build time; here only directory listings and file stats
|
|
22
|
+
* are read when the server process starts and contents are read lazily, so a
|
|
23
|
+
* restarted process always serves the current build output and rebuilds never
|
|
24
|
+
* have to invalidate the SSR entry module (whose injected code would
|
|
25
|
+
* otherwise embed stale index contents under output hashing).
|
|
16
26
|
*
|
|
17
|
-
* The
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
27
|
+
* The index documents come from the server output. Top-level stylesheets of
|
|
28
|
+
* the browser output are included only when `inlineCriticalCss` is set: the
|
|
29
|
+
* inliner of `@angular/ssr` < 22.2, which fetches them by file name, is their
|
|
30
|
+
* only consumer.
|
|
21
31
|
*
|
|
22
32
|
* This module is bundled into the user's server bundle, so it must only
|
|
23
33
|
* import node builtins.
|
|
24
34
|
*/
|
|
25
|
-
function
|
|
35
|
+
function createServerAssets(serverOutputPath, browserOutputPath, inlineCriticalCss) {
|
|
26
36
|
const assets = {};
|
|
27
|
-
let entries;
|
|
28
|
-
try {
|
|
29
|
-
entries = (0, node_fs_1.readdirSync)(browserOutputPath);
|
|
30
|
-
}
|
|
31
|
-
catch (error) {
|
|
32
|
-
if (error.code !== 'ENOENT') {
|
|
33
|
-
throw error;
|
|
34
|
-
}
|
|
35
|
-
// Without a browser output there is nothing to serve; rendering reports
|
|
36
|
-
// the missing asset.
|
|
37
|
-
return assets;
|
|
38
|
-
}
|
|
39
37
|
if (inlineCriticalCss) {
|
|
38
|
+
let entries = [];
|
|
39
|
+
try {
|
|
40
|
+
entries = (0, node_fs_1.readdirSync)(browserOutputPath);
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
if (error.code !== 'ENOENT') {
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
// Without a browser output there is nothing to inline.
|
|
47
|
+
}
|
|
40
48
|
for (const entry of entries) {
|
|
41
49
|
if ((0, node_path_1.extname)(entry) === '.css') {
|
|
42
50
|
const asset = createDiskAsset((0, node_path_1.join)(browserOutputPath, entry));
|
|
@@ -46,18 +54,33 @@ function createBrowserOutputServerAssets(browserOutputPath, indexOutputName, inl
|
|
|
46
54
|
}
|
|
47
55
|
}
|
|
48
56
|
}
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
if (
|
|
52
|
-
|
|
53
|
-
// hit for a prerender-marked route as-is, so an `index.html` key would
|
|
54
|
-
// serve the un-rendered CSR shell for `/` instead of rendering it.
|
|
55
|
-
assets['index.server.html'] = indexAsset;
|
|
56
|
-
assets['index.csr.html'] = indexAsset;
|
|
57
|
+
for (const name of [exports.INDEX_SERVER_HTML, exports.INDEX_CSR_HTML]) {
|
|
58
|
+
const asset = createDiskAsset((0, node_path_1.join)(serverOutputPath, name));
|
|
59
|
+
if (asset) {
|
|
60
|
+
assets[name] = asset;
|
|
57
61
|
}
|
|
58
62
|
}
|
|
59
63
|
return assets;
|
|
60
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Reads the `criticalCssPlans` and `nonce` app manifest fields, which
|
|
67
|
+
* `@angular/ssr` >= 22.2 inlines critical CSS with.
|
|
68
|
+
*/
|
|
69
|
+
function readCriticalCss(serverOutputPath) {
|
|
70
|
+
let content;
|
|
71
|
+
try {
|
|
72
|
+
content = (0, node_fs_1.readFileSync)((0, node_path_1.join)(serverOutputPath, exports.CRITICAL_CSS_FILE), 'utf-8');
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
if (error.code !== 'ENOENT') {
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
// Never emitted, as when the browser build failed; rendering then skips
|
|
79
|
+
// critical CSS inlining.
|
|
80
|
+
return {};
|
|
81
|
+
}
|
|
82
|
+
return JSON.parse(content);
|
|
83
|
+
}
|
|
61
84
|
function createDiskAsset(filePath) {
|
|
62
85
|
try {
|
|
63
86
|
(0, node_fs_1.statSync)(filePath);
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A compiled stylesheet in the serialized form `@angular/ssr` reads from the
|
|
3
|
+
* app manifest's `criticalCssPlans`.
|
|
4
|
+
*/
|
|
5
|
+
export type CriticalCssPlan = unknown[];
|
|
6
|
+
export interface BeastiesCompiler {
|
|
7
|
+
compileSheet(css: string, options: {
|
|
8
|
+
href: string;
|
|
9
|
+
}): unknown;
|
|
10
|
+
encodePlan(sheet: unknown): CriticalCssPlan;
|
|
11
|
+
}
|
|
12
|
+
export interface BeastiesRuntime {
|
|
13
|
+
createProcessor(plans: CriticalCssPlan[], options: {
|
|
14
|
+
preload: 'media-script';
|
|
15
|
+
preloadFonts: boolean;
|
|
16
|
+
inlineFonts: boolean;
|
|
17
|
+
noscriptFallback: boolean;
|
|
18
|
+
cache: boolean;
|
|
19
|
+
logger: {
|
|
20
|
+
warn: (message: string) => void;
|
|
21
|
+
};
|
|
22
|
+
}): {
|
|
23
|
+
process(html: string, options: {
|
|
24
|
+
nonce: string | undefined;
|
|
25
|
+
}): string;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Loads an entry point of the beasties copy `@angular/build` (>= 22.2)
|
|
30
|
+
* depends on, so the plans compiled at build time and the runtime applying
|
|
31
|
+
* them during prerendering come from the same version.
|
|
32
|
+
*/
|
|
33
|
+
export declare function loadAngularBuildBeasties(entryPoint: 'compiler'): Promise<BeastiesCompiler>;
|
|
34
|
+
export declare function loadAngularBuildBeasties(entryPoint: 'runtime'): Promise<BeastiesRuntime>;
|
|
35
|
+
//# sourceMappingURL=beasties.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beasties.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/beasties.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,EAAE,CAAC;AAExC,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;IAC9D,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAAC;CAC7C;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,CACb,KAAK,EAAE,eAAe,EAAE,EACxB,OAAO,EAAE;QACP,OAAO,EAAE,cAAc,CAAC;QACxB,YAAY,EAAE,OAAO,CAAC;QACtB,WAAW,EAAE,OAAO,CAAC;QACrB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE;YAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;SAAE,CAAC;KAC7C,GACA;QAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;SAAE,GAAG,MAAM,CAAA;KAAE,CAAC;CAC9E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC7B,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,SAAS,GACpB,OAAO,CAAC,eAAe,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadAngularBuildBeasties = loadAngularBuildBeasties;
|
|
4
|
+
const node_path_1 = require("node:path");
|
|
5
|
+
const node_url_1 = require("node:url");
|
|
6
|
+
const misc_helpers_1 = require("./misc-helpers");
|
|
7
|
+
function loadAngularBuildBeasties(entryPoint) {
|
|
8
|
+
const angularBuildDir = (0, node_path_1.dirname)(require.resolve('@angular/build/package.json'));
|
|
9
|
+
// The entry points are ESM only.
|
|
10
|
+
return (0, misc_helpers_1.loadEsmModule)((0, node_url_1.pathToFileURL)(require.resolve(`beasties/${entryPoint}`, { paths: [angularBuildDir] })));
|
|
11
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google LLC All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
+
* found in the LICENSE file at https://angular.dev/license
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Transforms the provided HTML by adding the `ngcm` attribute to the `<body>` tag.
|
|
10
|
+
* This is used in the client-side rendered (CSR) version of `index.html` to prevent hydration warnings.
|
|
11
|
+
*
|
|
12
|
+
* @param html The HTML markup to be transformed.
|
|
13
|
+
* @returns A promise that resolves to the transformed HTML string with the necessary modifications.
|
|
14
|
+
*/
|
|
15
|
+
export declare function addNgcmAttribute(html: string): Promise<string>;
|
|
16
|
+
//# sourceMappingURL=ngcm-attribute.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngcm-attribute.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/index-file/ngcm-attribute.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAepE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright Google LLC All Rights Reserved.
|
|
5
|
+
*
|
|
6
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
+
* found in the LICENSE file at https://angular.dev/license
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.addNgcmAttribute = addNgcmAttribute;
|
|
11
|
+
const html_rewriting_stream_1 = require("./html-rewriting-stream");
|
|
12
|
+
/**
|
|
13
|
+
* Defines a name of an attribute that is added to the `<body>` tag
|
|
14
|
+
* in the `index.html` file in case a given route was configured
|
|
15
|
+
* with `RenderMode.Client`. 'cm' is an abbreviation for "Client Mode".
|
|
16
|
+
*
|
|
17
|
+
* @see https://github.com/angular/angular/pull/58004
|
|
18
|
+
*/
|
|
19
|
+
const CLIENT_RENDER_MODE_FLAG = 'ngcm';
|
|
20
|
+
/**
|
|
21
|
+
* Transforms the provided HTML by adding the `ngcm` attribute to the `<body>` tag.
|
|
22
|
+
* This is used in the client-side rendered (CSR) version of `index.html` to prevent hydration warnings.
|
|
23
|
+
*
|
|
24
|
+
* @param html The HTML markup to be transformed.
|
|
25
|
+
* @returns A promise that resolves to the transformed HTML string with the necessary modifications.
|
|
26
|
+
*/
|
|
27
|
+
async function addNgcmAttribute(html) {
|
|
28
|
+
const { rewriter, transformedContent } = await (0, html_rewriting_stream_1.htmlRewritingStream)(html);
|
|
29
|
+
rewriter.on('startTag', (tag) => {
|
|
30
|
+
if (tag.tagName === 'body' &&
|
|
31
|
+
!tag.attrs.some((attr) => attr.name === CLIENT_RENDER_MODE_FLAG)) {
|
|
32
|
+
tag.attrs.push({ name: CLIENT_RENDER_MODE_FLAG, value: '' });
|
|
33
|
+
}
|
|
34
|
+
rewriter.emitStartTag(tag);
|
|
35
|
+
});
|
|
36
|
+
return transformedContent();
|
|
37
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google LLC All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
+
* found in the LICENSE file at https://angular.dev/license
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Finds the `ngCspNonce` value and copies it to all inline `<style>` and `<script> `tags.
|
|
10
|
+
* @param html Markup that should be processed.
|
|
11
|
+
*/
|
|
12
|
+
export declare function addNonce(html: string): Promise<string>;
|
|
13
|
+
/** Finds the Angular nonce in an HTML string. */
|
|
14
|
+
export declare function findNonce(html: string): Promise<string | null>;
|
|
15
|
+
//# sourceMappingURL=nonce.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nonce.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/index-file/nonce.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqB5D;AAED,iDAAiD;AACjD,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsBpE"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright Google LLC All Rights Reserved.
|
|
5
|
+
*
|
|
6
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
+
* found in the LICENSE file at https://angular.dev/license
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.addNonce = addNonce;
|
|
11
|
+
exports.findNonce = findNonce;
|
|
12
|
+
const html_rewriting_stream_1 = require("./html-rewriting-stream");
|
|
13
|
+
/**
|
|
14
|
+
* Pattern matching the name of the Angular nonce attribute. Note that this is
|
|
15
|
+
* case-insensitive, because HTML attribute names are case-insensitive as well.
|
|
16
|
+
*/
|
|
17
|
+
const NONCE_ATTR_PATTERN = /ngCspNonce/i;
|
|
18
|
+
/**
|
|
19
|
+
* Finds the `ngCspNonce` value and copies it to all inline `<style>` and `<script> `tags.
|
|
20
|
+
* @param html Markup that should be processed.
|
|
21
|
+
*/
|
|
22
|
+
async function addNonce(html) {
|
|
23
|
+
const nonce = await findNonce(html);
|
|
24
|
+
if (!nonce) {
|
|
25
|
+
return html;
|
|
26
|
+
}
|
|
27
|
+
const { rewriter, transformedContent } = await (0, html_rewriting_stream_1.htmlRewritingStream)(html);
|
|
28
|
+
rewriter.on('startTag', (tag) => {
|
|
29
|
+
if ((tag.tagName === 'style' || tag.tagName === 'script') &&
|
|
30
|
+
!tag.attrs.some((attr) => attr.name === 'nonce')) {
|
|
31
|
+
tag.attrs.push({ name: 'nonce', value: nonce });
|
|
32
|
+
}
|
|
33
|
+
rewriter.emitStartTag(tag);
|
|
34
|
+
});
|
|
35
|
+
return transformedContent();
|
|
36
|
+
}
|
|
37
|
+
/** Finds the Angular nonce in an HTML string. */
|
|
38
|
+
async function findNonce(html) {
|
|
39
|
+
// Inexpensive check to avoid parsing the HTML when we're sure there's no nonce.
|
|
40
|
+
if (!NONCE_ATTR_PATTERN.test(html)) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
const { rewriter, transformedContent } = await (0, html_rewriting_stream_1.htmlRewritingStream)(html);
|
|
44
|
+
let nonce = null;
|
|
45
|
+
rewriter.on('startTag', (tag) => {
|
|
46
|
+
const nonceAttr = tag.attrs.find((attr) => NONCE_ATTR_PATTERN.test(attr.name));
|
|
47
|
+
if (nonceAttr?.value) {
|
|
48
|
+
nonce = nonceAttr.value;
|
|
49
|
+
rewriter.stop(); // Stop parsing since we've found the nonce.
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
await transformedContent();
|
|
53
|
+
return nonce;
|
|
54
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nx/angular-rspack",
|
|
3
|
-
"version": "24.0.0-beta.
|
|
3
|
+
"version": "24.0.0-beta.4",
|
|
4
4
|
"private": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -56,8 +56,8 @@
|
|
|
56
56
|
"@ampproject/remapping": "2.3.0",
|
|
57
57
|
"@babel/core": "^7.29.6",
|
|
58
58
|
"@discoveryjs/json-ext": "0.6.3",
|
|
59
|
-
"@nx/angular-rspack-compiler": "24.0.0-beta.
|
|
60
|
-
"@nx/devkit": "24.0.0-beta.
|
|
59
|
+
"@nx/angular-rspack-compiler": "24.0.0-beta.4",
|
|
60
|
+
"@nx/devkit": "24.0.0-beta.4",
|
|
61
61
|
"ansi-colors": "4.1.3",
|
|
62
62
|
"autoprefixer": "^10.4.9",
|
|
63
63
|
"deepmerge": "^4.3.1",
|