@nx/angular 21.2.1 → 21.2.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.
- package/fesm2022/nx-angular-mf.mjs +74 -10
- package/fesm2022/nx-angular-mf.mjs.map +1 -1
- package/package.json +9 -9
- package/plugins/component-testing.js +6 -14
- package/src/builders/utilities/module-federation.js +4 -3
- package/src/builders/webpack-browser/schema.json +1 -1
- package/src/generators/host/lib/update-ssr-setup.js +4 -4
- package/src/generators/library/lib/create-files.js +2 -1
- package/src/generators/library/lib/normalized-schema.d.ts +1 -0
- package/src/generators/library/lib/update-tsconfig-files.js +6 -3
- package/src/generators/library/schema.d.ts +1 -0
- package/src/generators/move/lib/update-module-name.js +7 -5
- package/src/generators/ngrx/files/__directory__/__fileName__.facade.spec.ts__tmpl__ +13 -9
- package/src/generators/ngrx/lib/generate-files.js +1 -0
- package/src/generators/ngrx/lib/normalize-options.d.ts +1 -0
- package/src/generators/ngrx/lib/normalize-options.js +3 -0
- package/src/generators/ngrx-feature-store/files/__directory__/__fileName__.facade.spec.ts__tmpl__ +13 -9
- package/src/generators/ngrx-feature-store/lib/generate-files.js +1 -0
- package/src/generators/ngrx-feature-store/lib/normalize-options.d.ts +1 -0
- package/src/generators/ngrx-feature-store/lib/normalize-options.js +3 -0
- package/src/generators/ngrx-root-store/lib/normalize-options.js +5 -4
- package/src/generators/remote/lib/update-ssr-setup.js +4 -4
- package/src/generators/setup-mf/lib/add-cypress-workaround.js +2 -1
- package/src/generators/setup-mf/lib/add-remote-to-host.js +9 -7
- package/src/generators/setup-mf/lib/remove-dead-code-from-remote.js +8 -6
- package/src/generators/setup-ssr/lib/add-hydration.js +5 -3
- package/src/generators/setup-ssr/lib/add-server-file.js +2 -1
- package/src/generators/setup-ssr/lib/generate-files.js +2 -1
- package/src/generators/setup-ssr/lib/update-project-config.js +3 -2
- package/src/generators/setup-tailwind/lib/add-tailwind-config.js +2 -1
- package/src/generators/setup-tailwind/lib/update-application-styles.js +6 -4
- package/src/generators/utils/app-components-info.js +6 -4
- package/src/generators/utils/testing.js +2 -1
- package/src/migrations/update-17-1-0/replace-nguniversal-engines.js +2 -1
- package/src/utils/nx-devkit/ast-utils.js +3 -2
- package/src/utils/versions.d.ts +1 -1
- package/src/utils/versions.js +1 -1
@@ -1,4 +1,76 @@
|
|
1
|
-
|
1
|
+
// Helper function to extract file extension from a path
|
2
|
+
function extname(path) {
|
3
|
+
const lastDot = path.lastIndexOf('.');
|
4
|
+
const lastSlash = Math.max(path.lastIndexOf('/'), path.lastIndexOf('\\'));
|
5
|
+
if (lastDot === -1 || lastDot < lastSlash) {
|
6
|
+
return '';
|
7
|
+
}
|
8
|
+
return path.slice(lastDot);
|
9
|
+
}
|
10
|
+
/**
|
11
|
+
* Checks if a URL string is absolute (has protocol)
|
12
|
+
*/
|
13
|
+
function isAbsoluteUrl(url) {
|
14
|
+
try {
|
15
|
+
new URL(url);
|
16
|
+
return true;
|
17
|
+
}
|
18
|
+
catch {
|
19
|
+
return false;
|
20
|
+
}
|
21
|
+
}
|
22
|
+
/**
|
23
|
+
* Safely processes remote locations, handling both relative and absolute URLs
|
24
|
+
* while preserving query parameters and hash fragments for absolute URLs
|
25
|
+
*/
|
26
|
+
function processRemoteLocation(remoteLocation, remoteEntryExt) {
|
27
|
+
// Handle promise-based remotes as-is
|
28
|
+
if (remoteLocation.startsWith('promise new Promise')) {
|
29
|
+
return remoteLocation;
|
30
|
+
}
|
31
|
+
if (isAbsoluteUrl(remoteLocation)) {
|
32
|
+
// Use new URL parsing for absolute URLs (supports query params/hash)
|
33
|
+
const url = new URL(remoteLocation);
|
34
|
+
const ext = extname(url.pathname);
|
35
|
+
const needsRemoteEntry = !['.js', '.mjs', '.json'].includes(ext);
|
36
|
+
if (needsRemoteEntry) {
|
37
|
+
url.pathname = url.pathname.endsWith('/')
|
38
|
+
? `${url.pathname}remoteEntry.${remoteEntryExt}`
|
39
|
+
: `${url.pathname}/remoteEntry.${remoteEntryExt}`;
|
40
|
+
}
|
41
|
+
return url.href;
|
42
|
+
}
|
43
|
+
else {
|
44
|
+
// Use string manipulation for relative URLs (backward compatibility)
|
45
|
+
const ext = extname(remoteLocation);
|
46
|
+
const needsRemoteEntry = !['.js', '.mjs', '.json'].includes(ext);
|
47
|
+
if (needsRemoteEntry) {
|
48
|
+
const baseRemote = remoteLocation.endsWith('/')
|
49
|
+
? remoteLocation.slice(0, -1)
|
50
|
+
: remoteLocation;
|
51
|
+
return `${baseRemote}/remoteEntry.${remoteEntryExt}`;
|
52
|
+
}
|
53
|
+
return remoteLocation;
|
54
|
+
}
|
55
|
+
}
|
56
|
+
/**
|
57
|
+
* Processes remote URLs for runtime environments, resolving relative URLs against window.location.origin
|
58
|
+
*/
|
59
|
+
function processRuntimeRemoteUrl(remoteUrl, remoteEntryExt) {
|
60
|
+
if (isAbsoluteUrl(remoteUrl)) {
|
61
|
+
return processRemoteLocation(remoteUrl, remoteEntryExt);
|
62
|
+
}
|
63
|
+
else {
|
64
|
+
// For runtime relative URLs, resolve against current origin
|
65
|
+
const baseUrl = typeof globalThis !== 'undefined' &&
|
66
|
+
typeof globalThis.window !== 'undefined' &&
|
67
|
+
globalThis.window.location
|
68
|
+
? globalThis.window.location.origin
|
69
|
+
: 'http://localhost';
|
70
|
+
const absoluteUrl = new URL(remoteUrl, baseUrl).href;
|
71
|
+
return processRemoteLocation(absoluteUrl, remoteEntryExt);
|
72
|
+
}
|
73
|
+
}
|
2
74
|
|
3
75
|
let resolveRemoteUrl;
|
4
76
|
/**
|
@@ -106,15 +178,7 @@ async function loadRemoteContainer(remoteName) {
|
|
106
178
|
const remoteUrl = remoteUrlDefinitions
|
107
179
|
? remoteUrlDefinitions[remoteName]
|
108
180
|
: await resolveRemoteUrl(remoteName);
|
109
|
-
const
|
110
|
-
const ext = extname(url.pathname);
|
111
|
-
const needsRemoteEntry = !['.js', '.mjs', '.json'].includes(ext);
|
112
|
-
if (needsRemoteEntry) {
|
113
|
-
url.pathname = url.pathname.endsWith('/')
|
114
|
-
? `${url.pathname}remoteEntry.mjs`
|
115
|
-
: `${url.pathname}/remoteEntry.mjs`;
|
116
|
-
}
|
117
|
-
const containerUrl = url.href;
|
181
|
+
const containerUrl = processRuntimeRemoteUrl(remoteUrl, 'mjs');
|
118
182
|
const container = await loadModule(containerUrl);
|
119
183
|
await container.init(__webpack_share_scopes__.default);
|
120
184
|
remoteContainerMap.set(remoteName, container);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"nx-angular-mf.mjs","sources":["../tmp-esm2022/mf/mf.js","../tmp-esm2022/mf/nx-angular-mf.js"],"sourcesContent":["import { extname } from 'node:path';\nlet resolveRemoteUrl;\n/**\n * @deprecated Use Runtime Helpers from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.\n */\nexport function setRemoteUrlResolver(_resolveRemoteUrl) {\n resolveRemoteUrl = _resolveRemoteUrl;\n}\nlet remoteUrlDefinitions;\n/**\n * @deprecated Use init() from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.\n * If you have a remote app called `my-remote-app` and you want to use the `http://localhost:4201/mf-manifest.json` as the remote url, you should change it from:\n * ```ts\n * import { setRemoteDefinitions } from '@nx/angular/mf';\n *\n * setRemoteDefinitions({\n * 'my-remote-app': 'http://localhost:4201/mf-manifest.json'\n * });\n * ```\n * to use init():\n * ```ts\n * import { init } from '@module-federation/enhanced/runtime';\n *\n * init({\n * name: 'host',\n * remotes: [{\n * name: 'my-remote-app',\n * entry: 'http://localhost:4201/mf-manifest.json'\n * }]\n * });\n * ```\n */\nexport function setRemoteDefinitions(definitions) {\n remoteUrlDefinitions = definitions;\n}\n/**\n * @deprecated Use registerRemotes() from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.\n * If you set a remote app with `setRemoteDefinition` such as:\n * ```ts\n * import { setRemoteDefinition } from '@nx/angular/mf';\n *\n * setRemoteDefinition(\n * 'my-remote-app',\n * 'http://localhost:4201/mf-manifest.json'\n * );\n * ```\n * change it to use registerRemotes():\n * ```ts\n * import { registerRemotes } from '@module-federation/enhanced/runtime';\n *\n * registerRemotes([\n * {\n * name: 'my-remote-app',\n * entry: 'http://localhost:4201/mf-manifest.json'\n * }\n * ]);\n * ```\n */\nexport function setRemoteDefinition(remoteName, remoteUrl) {\n remoteUrlDefinitions ??= {};\n remoteUrlDefinitions[remoteName] = remoteUrl;\n}\nlet remoteModuleMap = new Map();\nlet remoteContainerMap = new Map();\n/**\n * @deprecated Use loadRemote() from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.\n * If you set a load a remote with `loadRemoteModule` such as:\n * ```ts\n * import { loadRemoteModule } from '@nx/angular/mf';\n *\n * loadRemoteModule('my-remote-app', './Module').then(m => m.RemoteEntryModule);\n * ```\n * change it to use loadRemote():\n * ```ts\n * import { loadRemote } from '@module-federation/enhanced/runtime';\n *\n * loadRemote<typeof import('my-remote-app/Module')>('my-remote-app/Module').then(m => m.RemoteEntryModule);\n * ```\n */\nexport async function loadRemoteModule(remoteName, moduleName) {\n const remoteModuleKey = `${remoteName}:${moduleName}`;\n if (remoteModuleMap.has(remoteModuleKey)) {\n return remoteModuleMap.get(remoteModuleKey);\n }\n const container = remoteContainerMap.has(remoteName)\n ? remoteContainerMap.get(remoteName)\n : await loadRemoteContainer(remoteName);\n const factory = await container.get(moduleName);\n const Module = factory();\n remoteModuleMap.set(remoteModuleKey, Module);\n return Module;\n}\nfunction loadModule(url) {\n return import(/* webpackIgnore:true */ url);\n}\nlet initialSharingScopeCreated = false;\nasync function loadRemoteContainer(remoteName) {\n if (!resolveRemoteUrl && !remoteUrlDefinitions) {\n throw new Error('Call setRemoteDefinitions or setRemoteUrlResolver to allow Dynamic Federation to find the remote apps correctly.');\n }\n if (!initialSharingScopeCreated) {\n initialSharingScopeCreated = true;\n await __webpack_init_sharing__('default');\n }\n const remoteUrl = remoteUrlDefinitions\n ? remoteUrlDefinitions[remoteName]\n : await resolveRemoteUrl(remoteName);\n const url = new URL(remoteUrl);\n const ext = extname(url.pathname);\n const needsRemoteEntry = !['.js', '.mjs', '.json'].includes(ext);\n if (needsRemoteEntry) {\n url.pathname = url.pathname.endsWith('/')\n ? `${url.pathname}remoteEntry.mjs`\n : `${url.pathname}/remoteEntry.mjs`;\n }\n const containerUrl = url.href;\n const container = await loadModule(containerUrl);\n await container.init(__webpack_share_scopes__.default);\n remoteContainerMap.set(remoteName, container);\n return container;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL21mL21mLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFTcEMsSUFBSSxnQkFBMEMsQ0FBQztBQUUvQzs7R0FFRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsaUJBQTJDO0lBRTNDLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDO0FBQ3ZDLENBQUM7QUFFRCxJQUFJLG9CQUE0QyxDQUFDO0FBRWpEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFdBQW1DO0lBQ3RFLG9CQUFvQixHQUFHLFdBQVcsQ0FBQztBQUNyQyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsVUFBa0IsRUFBRSxTQUFpQjtJQUN2RSxvQkFBb0IsS0FBSyxFQUFFLENBQUM7SUFDNUIsb0JBQW9CLENBQUMsVUFBVSxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQy9DLENBQUM7QUFFRCxJQUFJLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztBQUNqRCxJQUFJLGtCQUFrQixHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO0FBRXBEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxVQUFrQixFQUFFLFVBQWtCO0lBQzNFLE1BQU0sZUFBZSxHQUFHLEdBQUcsVUFBVSxJQUFJLFVBQVUsRUFBRSxDQUFDO0lBQ3RELElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQ3pDLE9BQU8sZUFBZSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztRQUNsRCxDQUFDLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztRQUNwQyxDQUFDLENBQUMsTUFBTSxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUUxQyxNQUFNLE9BQU8sR0FBRyxNQUFNLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEQsTUFBTSxNQUFNLEdBQUcsT0FBTyxFQUFFLENBQUM7SUFFekIsZUFBZSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFN0MsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLEdBQVc7SUFDN0IsT0FBTyxNQUFNLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUVELElBQUksMEJBQTBCLEdBQUcsS0FBSyxDQUFDO0FBRXZDLEtBQUssVUFBVSxtQkFBbUIsQ0FBQyxVQUFrQjtJQUNuRCxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQy9DLE1BQU0sSUFBSSxLQUFLLENBQ2Isa0hBQWtILENBQ25ILENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDaEMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLE1BQU0sd0JBQXdCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLG9CQUFvQjtRQUNwQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxNQUFNLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXZDLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFbEMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFakUsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3JCLEdBQUcsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxRQUFRLGlCQUFpQjtZQUNsQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxrQkFBa0IsQ0FBQztJQUN4QyxDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztJQUU5QixNQUFNLFNBQVMsR0FBRyxNQUFNLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNqRCxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFdkQsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM5QyxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0bmFtZSB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmV4cG9ydCB0eXBlIFJlc29sdmVSZW1vdGVVcmxGdW5jdGlvbiA9IChcbiAgcmVtb3RlTmFtZTogc3RyaW5nXG4pID0+IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPjtcblxuZGVjbGFyZSBjb25zdCBfX3dlYnBhY2tfaW5pdF9zaGFyaW5nX186IChzY29wZTogJ2RlZmF1bHQnKSA9PiBQcm9taXNlPHZvaWQ+O1xuZGVjbGFyZSBjb25zdCBfX3dlYnBhY2tfc2hhcmVfc2NvcGVzX186IHsgZGVmYXVsdDogdW5rbm93biB9O1xuXG5sZXQgcmVzb2x2ZVJlbW90ZVVybDogUmVzb2x2ZVJlbW90ZVVybEZ1bmN0aW9uO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBSdW50aW1lIEhlbHBlcnMgZnJvbSAnQG1vZHVsZS1mZWRlcmF0aW9uL2VuaGFuY2VkL3J1bnRpbWUnIGluc3RlYWQuIFRoaXMgd2lsbCBiZSByZW1vdmVkIGluIE54IDIyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0UmVtb3RlVXJsUmVzb2x2ZXIoXG4gIF9yZXNvbHZlUmVtb3RlVXJsOiBSZXNvbHZlUmVtb3RlVXJsRnVuY3Rpb25cbikge1xuICByZXNvbHZlUmVtb3RlVXJsID0gX3Jlc29sdmVSZW1vdGVVcmw7XG59XG5cbmxldCByZW1vdGVVcmxEZWZpbml0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgaW5pdCgpIGZyb20gJ0Btb2R1bGUtZmVkZXJhdGlvbi9lbmhhbmNlZC9ydW50aW1lJyBpbnN0ZWFkLiBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBOeCAyMi5cbiAqIElmIHlvdSBoYXZlIGEgcmVtb3RlIGFwcCBjYWxsZWQgYG15LXJlbW90ZS1hcHBgIGFuZCB5b3Ugd2FudCB0byB1c2UgdGhlIGBodHRwOi8vbG9jYWxob3N0OjQyMDEvbWYtbWFuaWZlc3QuanNvbmAgYXMgdGhlIHJlbW90ZSB1cmwsIHlvdSBzaG91bGQgY2hhbmdlIGl0IGZyb206XG4gKiBgYGB0c1xuICogaW1wb3J0IHsgc2V0UmVtb3RlRGVmaW5pdGlvbnMgfSBmcm9tICdAbngvYW5ndWxhci9tZic7XG4gKlxuICogc2V0UmVtb3RlRGVmaW5pdGlvbnMoe1xuICogICAnbXktcmVtb3RlLWFwcCc6ICdodHRwOi8vbG9jYWxob3N0OjQyMDEvbWYtbWFuaWZlc3QuanNvbidcbiAqIH0pO1xuICogYGBgXG4gKiB0byB1c2UgaW5pdCgpOlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGluaXQgfSBmcm9tICdAbW9kdWxlLWZlZGVyYXRpb24vZW5oYW5jZWQvcnVudGltZSc7XG4gKlxuICogaW5pdCh7XG4gKiAgIG5hbWU6ICdob3N0JyxcbiAqICAgcmVtb3RlczogW3tcbiAqICAgICBuYW1lOiAnbXktcmVtb3RlLWFwcCcsXG4gKiAgICAgZW50cnk6ICdodHRwOi8vbG9jYWxob3N0OjQyMDEvbWYtbWFuaWZlc3QuanNvbidcbiAqICAgfV1cbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZW1vdGVEZWZpbml0aW9ucyhkZWZpbml0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuICByZW1vdGVVcmxEZWZpbml0aW9ucyA9IGRlZmluaXRpb25zO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSByZWdpc3RlclJlbW90ZXMoKSBmcm9tICdAbW9kdWxlLWZlZGVyYXRpb24vZW5oYW5jZWQvcnVudGltZScgaW5zdGVhZC4gVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gTnggMjIuXG4gKiBJZiB5b3Ugc2V0IGEgcmVtb3RlIGFwcCB3aXRoIGBzZXRSZW1vdGVEZWZpbml0aW9uYCBzdWNoIGFzOlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHNldFJlbW90ZURlZmluaXRpb24gfSBmcm9tICdAbngvYW5ndWxhci9tZic7XG4gKlxuICogc2V0UmVtb3RlRGVmaW5pdGlvbihcbiAqICAgJ215LXJlbW90ZS1hcHAnLFxuICogICAnaHR0cDovL2xvY2FsaG9zdDo0MjAxL21mLW1hbmlmZXN0Lmpzb24nXG4gKiApO1xuICogYGBgXG4gKiBjaGFuZ2UgaXQgdG8gdXNlIHJlZ2lzdGVyUmVtb3RlcygpOlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHJlZ2lzdGVyUmVtb3RlcyB9IGZyb20gJ0Btb2R1bGUtZmVkZXJhdGlvbi9lbmhhbmNlZC9ydW50aW1lJztcbiAqXG4gKiByZWdpc3RlclJlbW90ZXMoW1xuICogIHtcbiAqICAgICBuYW1lOiAnbXktcmVtb3RlLWFwcCcsXG4gKiAgICAgZW50cnk6ICdodHRwOi8vbG9jYWxob3N0OjQyMDEvbWYtbWFuaWZlc3QuanNvbidcbiAqICAgfVxuICogXSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFJlbW90ZURlZmluaXRpb24ocmVtb3RlTmFtZTogc3RyaW5nLCByZW1vdGVVcmw6IHN0cmluZykge1xuICByZW1vdGVVcmxEZWZpbml0aW9ucyA/Pz0ge307XG4gIHJlbW90ZVVybERlZmluaXRpb25zW3JlbW90ZU5hbWVdID0gcmVtb3RlVXJsO1xufVxuXG5sZXQgcmVtb3RlTW9kdWxlTWFwID0gbmV3IE1hcDxzdHJpbmcsIHVua25vd24+KCk7XG5sZXQgcmVtb3RlQ29udGFpbmVyTWFwID0gbmV3IE1hcDxzdHJpbmcsIHVua25vd24+KCk7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGxvYWRSZW1vdGUoKSBmcm9tICdAbW9kdWxlLWZlZGVyYXRpb24vZW5oYW5jZWQvcnVudGltZScgaW5zdGVhZC4gVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gTnggMjIuXG4gKiBJZiB5b3Ugc2V0IGEgbG9hZCBhIHJlbW90ZSB3aXRoIGBsb2FkUmVtb3RlTW9kdWxlYCBzdWNoIGFzOlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGxvYWRSZW1vdGVNb2R1bGUgfSBmcm9tICdAbngvYW5ndWxhci9tZic7XG4gKlxuICogbG9hZFJlbW90ZU1vZHVsZSgnbXktcmVtb3RlLWFwcCcsICcuL01vZHVsZScpLnRoZW4obSA9PiBtLlJlbW90ZUVudHJ5TW9kdWxlKTtcbiAqIGBgYFxuICogY2hhbmdlIGl0IHRvIHVzZSBsb2FkUmVtb3RlKCk6XG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbG9hZFJlbW90ZSB9IGZyb20gJ0Btb2R1bGUtZmVkZXJhdGlvbi9lbmhhbmNlZC9ydW50aW1lJztcbiAqXG4gKiBsb2FkUmVtb3RlPHR5cGVvZiBpbXBvcnQoJ215LXJlbW90ZS1hcHAvTW9kdWxlJyk+KCdteS1yZW1vdGUtYXBwL01vZHVsZScpLnRoZW4obSA9PiBtLlJlbW90ZUVudHJ5TW9kdWxlKTtcbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFJlbW90ZU1vZHVsZShyZW1vdGVOYW1lOiBzdHJpbmcsIG1vZHVsZU5hbWU6IHN0cmluZykge1xuICBjb25zdCByZW1vdGVNb2R1bGVLZXkgPSBgJHtyZW1vdGVOYW1lfToke21vZHVsZU5hbWV9YDtcbiAgaWYgKHJlbW90ZU1vZHVsZU1hcC5oYXMocmVtb3RlTW9kdWxlS2V5KSkge1xuICAgIHJldHVybiByZW1vdGVNb2R1bGVNYXAuZ2V0KHJlbW90ZU1vZHVsZUtleSk7XG4gIH1cblxuICBjb25zdCBjb250YWluZXIgPSByZW1vdGVDb250YWluZXJNYXAuaGFzKHJlbW90ZU5hbWUpXG4gICAgPyByZW1vdGVDb250YWluZXJNYXAuZ2V0KHJlbW90ZU5hbWUpXG4gICAgOiBhd2FpdCBsb2FkUmVtb3RlQ29udGFpbmVyKHJlbW90ZU5hbWUpO1xuXG4gIGNvbnN0IGZhY3RvcnkgPSBhd2FpdCBjb250YWluZXIuZ2V0KG1vZHVsZU5hbWUpO1xuICBjb25zdCBNb2R1bGUgPSBmYWN0b3J5KCk7XG5cbiAgcmVtb3RlTW9kdWxlTWFwLnNldChyZW1vdGVNb2R1bGVLZXksIE1vZHVsZSk7XG5cbiAgcmV0dXJuIE1vZHVsZTtcbn1cblxuZnVuY3Rpb24gbG9hZE1vZHVsZSh1cmw6IHN0cmluZykge1xuICByZXR1cm4gaW1wb3J0KC8qIHdlYnBhY2tJZ25vcmU6dHJ1ZSAqLyB1cmwpO1xufVxuXG5sZXQgaW5pdGlhbFNoYXJpbmdTY29wZUNyZWF0ZWQgPSBmYWxzZTtcblxuYXN5bmMgZnVuY3Rpb24gbG9hZFJlbW90ZUNvbnRhaW5lcihyZW1vdGVOYW1lOiBzdHJpbmcpIHtcbiAgaWYgKCFyZXNvbHZlUmVtb3RlVXJsICYmICFyZW1vdGVVcmxEZWZpbml0aW9ucykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdDYWxsIHNldFJlbW90ZURlZmluaXRpb25zIG9yIHNldFJlbW90ZVVybFJlc29sdmVyIHRvIGFsbG93IER5bmFtaWMgRmVkZXJhdGlvbiB0byBmaW5kIHRoZSByZW1vdGUgYXBwcyBjb3JyZWN0bHkuJ1xuICAgICk7XG4gIH1cblxuICBpZiAoIWluaXRpYWxTaGFyaW5nU2NvcGVDcmVhdGVkKSB7XG4gICAgaW5pdGlhbFNoYXJpbmdTY29wZUNyZWF0ZWQgPSB0cnVlO1xuICAgIGF3YWl0IF9fd2VicGFja19pbml0X3NoYXJpbmdfXygnZGVmYXVsdCcpO1xuICB9XG5cbiAgY29uc3QgcmVtb3RlVXJsID0gcmVtb3RlVXJsRGVmaW5pdGlvbnNcbiAgICA/IHJlbW90ZVVybERlZmluaXRpb25zW3JlbW90ZU5hbWVdXG4gICAgOiBhd2FpdCByZXNvbHZlUmVtb3RlVXJsKHJlbW90ZU5hbWUpO1xuXG4gIGNvbnN0IHVybCA9IG5ldyBVUkwocmVtb3RlVXJsKTtcbiAgY29uc3QgZXh0ID0gZXh0bmFtZSh1cmwucGF0aG5hbWUpO1xuXG4gIGNvbnN0IG5lZWRzUmVtb3RlRW50cnkgPSAhWycuanMnLCAnLm1qcycsICcuanNvbiddLmluY2x1ZGVzKGV4dCk7XG5cbiAgaWYgKG5lZWRzUmVtb3RlRW50cnkpIHtcbiAgICB1cmwucGF0aG5hbWUgPSB1cmwucGF0aG5hbWUuZW5kc1dpdGgoJy8nKVxuICAgICAgPyBgJHt1cmwucGF0aG5hbWV9cmVtb3RlRW50cnkubWpzYFxuICAgICAgOiBgJHt1cmwucGF0aG5hbWV9L3JlbW90ZUVudHJ5Lm1qc2A7XG4gIH1cblxuICBjb25zdCBjb250YWluZXJVcmwgPSB1cmwuaHJlZjtcblxuICBjb25zdCBjb250YWluZXIgPSBhd2FpdCBsb2FkTW9kdWxlKGNvbnRhaW5lclVybCk7XG4gIGF3YWl0IGNvbnRhaW5lci5pbml0KF9fd2VicGFja19zaGFyZV9zY29wZXNfXy5kZWZhdWx0KTtcblxuICByZW1vdGVDb250YWluZXJNYXAuc2V0KHJlbW90ZU5hbWUsIGNvbnRhaW5lcik7XG4gIHJldHVybiBjb250YWluZXI7XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtYW5ndWxhci1tZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbWYvbngtYW5ndWxhci1tZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"nx-angular-mf.mjs","sources":["../tmp-esm2022/mf/url-helpers.js","../tmp-esm2022/mf/mf.js","../tmp-esm2022/mf/nx-angular-mf.js"],"sourcesContent":["// Helper function to extract file extension from a path\nfunction extname(path) {\n const lastDot = path.lastIndexOf('.');\n const lastSlash = Math.max(path.lastIndexOf('/'), path.lastIndexOf('\\\\'));\n if (lastDot === -1 || lastDot < lastSlash) {\n return '';\n }\n return path.slice(lastDot);\n}\n/**\n * Checks if a URL string is absolute (has protocol)\n */\nexport function isAbsoluteUrl(url) {\n try {\n new URL(url);\n return true;\n }\n catch {\n return false;\n }\n}\n/**\n * Safely processes remote locations, handling both relative and absolute URLs\n * while preserving query parameters and hash fragments for absolute URLs\n */\nexport function processRemoteLocation(remoteLocation, remoteEntryExt) {\n // Handle promise-based remotes as-is\n if (remoteLocation.startsWith('promise new Promise')) {\n return remoteLocation;\n }\n if (isAbsoluteUrl(remoteLocation)) {\n // Use new URL parsing for absolute URLs (supports query params/hash)\n const url = new URL(remoteLocation);\n const ext = extname(url.pathname);\n const needsRemoteEntry = !['.js', '.mjs', '.json'].includes(ext);\n if (needsRemoteEntry) {\n url.pathname = url.pathname.endsWith('/')\n ? `${url.pathname}remoteEntry.${remoteEntryExt}`\n : `${url.pathname}/remoteEntry.${remoteEntryExt}`;\n }\n return url.href;\n }\n else {\n // Use string manipulation for relative URLs (backward compatibility)\n const ext = extname(remoteLocation);\n const needsRemoteEntry = !['.js', '.mjs', '.json'].includes(ext);\n if (needsRemoteEntry) {\n const baseRemote = remoteLocation.endsWith('/')\n ? remoteLocation.slice(0, -1)\n : remoteLocation;\n return `${baseRemote}/remoteEntry.${remoteEntryExt}`;\n }\n return remoteLocation;\n }\n}\n/**\n * Processes remote URLs for runtime environments, resolving relative URLs against window.location.origin\n */\nexport function processRuntimeRemoteUrl(remoteUrl, remoteEntryExt) {\n if (isAbsoluteUrl(remoteUrl)) {\n return processRemoteLocation(remoteUrl, remoteEntryExt);\n }\n else {\n // For runtime relative URLs, resolve against current origin\n const baseUrl = typeof globalThis !== 'undefined' &&\n typeof globalThis.window !== 'undefined' &&\n globalThis.window.location\n ? globalThis.window.location.origin\n : 'http://localhost';\n const absoluteUrl = new URL(remoteUrl, baseUrl).href;\n return processRemoteLocation(absoluteUrl, remoteEntryExt);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL21mL3VybC1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdEQUF3RDtBQUN4RCxTQUFTLE9BQU8sQ0FBQyxJQUFZO0lBQzNCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxRSxJQUFJLE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSxPQUFPLEdBQUcsU0FBUyxFQUFFLENBQUM7UUFDMUMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsR0FBVztJQUN2QyxJQUFJLENBQUM7UUFDSCxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNiLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLGNBQXNCLEVBQ3RCLGNBQTRCO0lBRTVCLHFDQUFxQztJQUNyQyxJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDO1FBQ3JELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1FBQ2xDLHFFQUFxRTtRQUNyRSxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNwQyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWpFLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNyQixHQUFHLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztnQkFDdkMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFFBQVEsZUFBZSxjQUFjLEVBQUU7Z0JBQ2hELENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxRQUFRLGdCQUFnQixjQUFjLEVBQUUsQ0FBQztRQUN0RCxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQ2xCLENBQUM7U0FBTSxDQUFDO1FBQ04scUVBQXFFO1FBQ3JFLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNwQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVqRSxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDckIsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7Z0JBQzdDLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDN0IsQ0FBQyxDQUFDLGNBQWMsQ0FBQztZQUNuQixPQUFPLEdBQUcsVUFBVSxnQkFBZ0IsY0FBYyxFQUFFLENBQUM7UUFDdkQsQ0FBQztRQUVELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLFNBQWlCLEVBQ2pCLGNBQTRCO0lBRTVCLElBQUksYUFBYSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDN0IsT0FBTyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDMUQsQ0FBQztTQUFNLENBQUM7UUFDTiw0REFBNEQ7UUFDNUQsTUFBTSxPQUFPLEdBQ1gsT0FBTyxVQUFVLEtBQUssV0FBVztZQUNqQyxPQUFRLFVBQWtCLENBQUMsTUFBTSxLQUFLLFdBQVc7WUFDaEQsVUFBa0IsQ0FBQyxNQUFNLENBQUMsUUFBUTtZQUNqQyxDQUFDLENBQUUsVUFBa0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU07WUFDNUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDO1FBQ3pCLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDckQsT0FBTyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDNUQsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBIZWxwZXIgZnVuY3Rpb24gdG8gZXh0cmFjdCBmaWxlIGV4dGVuc2lvbiBmcm9tIGEgcGF0aFxuZnVuY3Rpb24gZXh0bmFtZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBsYXN0RG90ID0gcGF0aC5sYXN0SW5kZXhPZignLicpO1xuICBjb25zdCBsYXN0U2xhc2ggPSBNYXRoLm1heChwYXRoLmxhc3RJbmRleE9mKCcvJyksIHBhdGgubGFzdEluZGV4T2YoJ1xcXFwnKSk7XG4gIGlmIChsYXN0RG90ID09PSAtMSB8fCBsYXN0RG90IDwgbGFzdFNsYXNoKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHJldHVybiBwYXRoLnNsaWNlKGxhc3REb3QpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIFVSTCBzdHJpbmcgaXMgYWJzb2x1dGUgKGhhcyBwcm90b2NvbClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQWJzb2x1dGVVcmwodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBuZXcgVVJMKHVybCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFNhZmVseSBwcm9jZXNzZXMgcmVtb3RlIGxvY2F0aW9ucywgaGFuZGxpbmcgYm90aCByZWxhdGl2ZSBhbmQgYWJzb2x1dGUgVVJMc1xuICogd2hpbGUgcHJlc2VydmluZyBxdWVyeSBwYXJhbWV0ZXJzIGFuZCBoYXNoIGZyYWdtZW50cyBmb3IgYWJzb2x1dGUgVVJMc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc1JlbW90ZUxvY2F0aW9uKFxuICByZW1vdGVMb2NhdGlvbjogc3RyaW5nLFxuICByZW1vdGVFbnRyeUV4dDogJ2pzJyB8ICdtanMnXG4pOiBzdHJpbmcge1xuICAvLyBIYW5kbGUgcHJvbWlzZS1iYXNlZCByZW1vdGVzIGFzLWlzXG4gIGlmIChyZW1vdGVMb2NhdGlvbi5zdGFydHNXaXRoKCdwcm9taXNlIG5ldyBQcm9taXNlJykpIHtcbiAgICByZXR1cm4gcmVtb3RlTG9jYXRpb247XG4gIH1cblxuICBpZiAoaXNBYnNvbHV0ZVVybChyZW1vdGVMb2NhdGlvbikpIHtcbiAgICAvLyBVc2UgbmV3IFVSTCBwYXJzaW5nIGZvciBhYnNvbHV0ZSBVUkxzIChzdXBwb3J0cyBxdWVyeSBwYXJhbXMvaGFzaClcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHJlbW90ZUxvY2F0aW9uKTtcbiAgICBjb25zdCBleHQgPSBleHRuYW1lKHVybC5wYXRobmFtZSk7XG4gICAgY29uc3QgbmVlZHNSZW1vdGVFbnRyeSA9ICFbJy5qcycsICcubWpzJywgJy5qc29uJ10uaW5jbHVkZXMoZXh0KTtcblxuICAgIGlmIChuZWVkc1JlbW90ZUVudHJ5KSB7XG4gICAgICB1cmwucGF0aG5hbWUgPSB1cmwucGF0aG5hbWUuZW5kc1dpdGgoJy8nKVxuICAgICAgICA/IGAke3VybC5wYXRobmFtZX1yZW1vdGVFbnRyeS4ke3JlbW90ZUVudHJ5RXh0fWBcbiAgICAgICAgOiBgJHt1cmwucGF0aG5hbWV9L3JlbW90ZUVudHJ5LiR7cmVtb3RlRW50cnlFeHR9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gdXJsLmhyZWY7XG4gIH0gZWxzZSB7XG4gICAgLy8gVXNlIHN0cmluZyBtYW5pcHVsYXRpb24gZm9yIHJlbGF0aXZlIFVSTHMgKGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpXG4gICAgY29uc3QgZXh0ID0gZXh0bmFtZShyZW1vdGVMb2NhdGlvbik7XG4gICAgY29uc3QgbmVlZHNSZW1vdGVFbnRyeSA9ICFbJy5qcycsICcubWpzJywgJy5qc29uJ10uaW5jbHVkZXMoZXh0KTtcblxuICAgIGlmIChuZWVkc1JlbW90ZUVudHJ5KSB7XG4gICAgICBjb25zdCBiYXNlUmVtb3RlID0gcmVtb3RlTG9jYXRpb24uZW5kc1dpdGgoJy8nKVxuICAgICAgICA/IHJlbW90ZUxvY2F0aW9uLnNsaWNlKDAsIC0xKVxuICAgICAgICA6IHJlbW90ZUxvY2F0aW9uO1xuICAgICAgcmV0dXJuIGAke2Jhc2VSZW1vdGV9L3JlbW90ZUVudHJ5LiR7cmVtb3RlRW50cnlFeHR9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVtb3RlTG9jYXRpb247XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgcmVtb3RlIFVSTHMgZm9yIHJ1bnRpbWUgZW52aXJvbm1lbnRzLCByZXNvbHZpbmcgcmVsYXRpdmUgVVJMcyBhZ2FpbnN0IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NSdW50aW1lUmVtb3RlVXJsKFxuICByZW1vdGVVcmw6IHN0cmluZyxcbiAgcmVtb3RlRW50cnlFeHQ6ICdqcycgfCAnbWpzJ1xuKTogc3RyaW5nIHtcbiAgaWYgKGlzQWJzb2x1dGVVcmwocmVtb3RlVXJsKSkge1xuICAgIHJldHVybiBwcm9jZXNzUmVtb3RlTG9jYXRpb24ocmVtb3RlVXJsLCByZW1vdGVFbnRyeUV4dCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gRm9yIHJ1bnRpbWUgcmVsYXRpdmUgVVJMcywgcmVzb2x2ZSBhZ2FpbnN0IGN1cnJlbnQgb3JpZ2luXG4gICAgY29uc3QgYmFzZVVybCA9XG4gICAgICB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgIHR5cGVvZiAoZ2xvYmFsVGhpcyBhcyBhbnkpLndpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgIChnbG9iYWxUaGlzIGFzIGFueSkud2luZG93LmxvY2F0aW9uXG4gICAgICAgID8gKGdsb2JhbFRoaXMgYXMgYW55KS53aW5kb3cubG9jYXRpb24ub3JpZ2luXG4gICAgICAgIDogJ2h0dHA6Ly9sb2NhbGhvc3QnO1xuICAgIGNvbnN0IGFic29sdXRlVXJsID0gbmV3IFVSTChyZW1vdGVVcmwsIGJhc2VVcmwpLmhyZWY7XG4gICAgcmV0dXJuIHByb2Nlc3NSZW1vdGVMb2NhdGlvbihhYnNvbHV0ZVVybCwgcmVtb3RlRW50cnlFeHQpO1xuICB9XG59XG4iXX0=","import { processRuntimeRemoteUrl } from './url-helpers';\nlet resolveRemoteUrl;\n/**\n * @deprecated Use Runtime Helpers from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.\n */\nexport function setRemoteUrlResolver(_resolveRemoteUrl) {\n resolveRemoteUrl = _resolveRemoteUrl;\n}\nlet remoteUrlDefinitions;\n/**\n * @deprecated Use init() from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.\n * If you have a remote app called `my-remote-app` and you want to use the `http://localhost:4201/mf-manifest.json` as the remote url, you should change it from:\n * ```ts\n * import { setRemoteDefinitions } from '@nx/angular/mf';\n *\n * setRemoteDefinitions({\n * 'my-remote-app': 'http://localhost:4201/mf-manifest.json'\n * });\n * ```\n * to use init():\n * ```ts\n * import { init } from '@module-federation/enhanced/runtime';\n *\n * init({\n * name: 'host',\n * remotes: [{\n * name: 'my-remote-app',\n * entry: 'http://localhost:4201/mf-manifest.json'\n * }]\n * });\n * ```\n */\nexport function setRemoteDefinitions(definitions) {\n remoteUrlDefinitions = definitions;\n}\n/**\n * @deprecated Use registerRemotes() from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.\n * If you set a remote app with `setRemoteDefinition` such as:\n * ```ts\n * import { setRemoteDefinition } from '@nx/angular/mf';\n *\n * setRemoteDefinition(\n * 'my-remote-app',\n * 'http://localhost:4201/mf-manifest.json'\n * );\n * ```\n * change it to use registerRemotes():\n * ```ts\n * import { registerRemotes } from '@module-federation/enhanced/runtime';\n *\n * registerRemotes([\n * {\n * name: 'my-remote-app',\n * entry: 'http://localhost:4201/mf-manifest.json'\n * }\n * ]);\n * ```\n */\nexport function setRemoteDefinition(remoteName, remoteUrl) {\n remoteUrlDefinitions ??= {};\n remoteUrlDefinitions[remoteName] = remoteUrl;\n}\nlet remoteModuleMap = new Map();\nlet remoteContainerMap = new Map();\n/**\n * @deprecated Use loadRemote() from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.\n * If you set a load a remote with `loadRemoteModule` such as:\n * ```ts\n * import { loadRemoteModule } from '@nx/angular/mf';\n *\n * loadRemoteModule('my-remote-app', './Module').then(m => m.RemoteEntryModule);\n * ```\n * change it to use loadRemote():\n * ```ts\n * import { loadRemote } from '@module-federation/enhanced/runtime';\n *\n * loadRemote<typeof import('my-remote-app/Module')>('my-remote-app/Module').then(m => m.RemoteEntryModule);\n * ```\n */\nexport async function loadRemoteModule(remoteName, moduleName) {\n const remoteModuleKey = `${remoteName}:${moduleName}`;\n if (remoteModuleMap.has(remoteModuleKey)) {\n return remoteModuleMap.get(remoteModuleKey);\n }\n const container = remoteContainerMap.has(remoteName)\n ? remoteContainerMap.get(remoteName)\n : await loadRemoteContainer(remoteName);\n const factory = await container.get(moduleName);\n const Module = factory();\n remoteModuleMap.set(remoteModuleKey, Module);\n return Module;\n}\nfunction loadModule(url) {\n return import(/* webpackIgnore:true */ url);\n}\nlet initialSharingScopeCreated = false;\nasync function loadRemoteContainer(remoteName) {\n if (!resolveRemoteUrl && !remoteUrlDefinitions) {\n throw new Error('Call setRemoteDefinitions or setRemoteUrlResolver to allow Dynamic Federation to find the remote apps correctly.');\n }\n if (!initialSharingScopeCreated) {\n initialSharingScopeCreated = true;\n await __webpack_init_sharing__('default');\n }\n const remoteUrl = remoteUrlDefinitions\n ? remoteUrlDefinitions[remoteName]\n : await resolveRemoteUrl(remoteName);\n const containerUrl = processRuntimeRemoteUrl(remoteUrl, 'mjs');\n const container = await loadModule(containerUrl);\n await container.init(__webpack_share_scopes__.default);\n remoteContainerMap.set(remoteName, container);\n return container;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL21mL21mLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVN4RCxJQUFJLGdCQUEwQyxDQUFDO0FBRS9DOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxpQkFBMkM7SUFFM0MsZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUM7QUFDdkMsQ0FBQztBQUVELElBQUksb0JBQTRDLENBQUM7QUFFakQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsV0FBbUM7SUFDdEUsb0JBQW9CLEdBQUcsV0FBVyxDQUFDO0FBQ3JDLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxVQUFrQixFQUFFLFNBQWlCO0lBQ3ZFLG9CQUFvQixLQUFLLEVBQUUsQ0FBQztJQUM1QixvQkFBb0IsQ0FBQyxVQUFVLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDL0MsQ0FBQztBQUVELElBQUksZUFBZSxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO0FBQ2pELElBQUksa0JBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7QUFFcEQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGdCQUFnQixDQUFDLFVBQWtCLEVBQUUsVUFBa0I7SUFDM0UsTUFBTSxlQUFlLEdBQUcsR0FBRyxVQUFVLElBQUksVUFBVSxFQUFFLENBQUM7SUFDdEQsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7UUFDekMsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQ2xELENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxNQUFNLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTFDLE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoRCxNQUFNLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQztJQUV6QixlQUFlLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUU3QyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsR0FBVztJQUM3QixPQUFPLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQsSUFBSSwwQkFBMEIsR0FBRyxLQUFLLENBQUM7QUFFdkMsS0FBSyxVQUFVLG1CQUFtQixDQUFDLFVBQWtCO0lBQ25ELElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDL0MsTUFBTSxJQUFJLEtBQUssQ0FDYixrSEFBa0gsQ0FDbkgsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUNoQywwQkFBMEIsR0FBRyxJQUFJLENBQUM7UUFDbEMsTUFBTSx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsb0JBQW9CO1FBQ3BDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUM7UUFDbEMsQ0FBQyxDQUFDLE1BQU0sZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFdkMsTUFBTSxZQUFZLEdBQUcsdUJBQXVCLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRS9ELE1BQU0sU0FBUyxHQUFHLE1BQU0sVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2pELE1BQU0sU0FBUyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUV2RCxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcm9jZXNzUnVudGltZVJlbW90ZVVybCB9IGZyb20gJy4vdXJsLWhlbHBlcnMnO1xuXG5leHBvcnQgdHlwZSBSZXNvbHZlUmVtb3RlVXJsRnVuY3Rpb24gPSAoXG4gIHJlbW90ZU5hbWU6IHN0cmluZ1xuKSA9PiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz47XG5cbmRlY2xhcmUgY29uc3QgX193ZWJwYWNrX2luaXRfc2hhcmluZ19fOiAoc2NvcGU6ICdkZWZhdWx0JykgPT4gUHJvbWlzZTx2b2lkPjtcbmRlY2xhcmUgY29uc3QgX193ZWJwYWNrX3NoYXJlX3Njb3Blc19fOiB7IGRlZmF1bHQ6IHVua25vd24gfTtcblxubGV0IHJlc29sdmVSZW1vdGVVcmw6IFJlc29sdmVSZW1vdGVVcmxGdW5jdGlvbjtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgUnVudGltZSBIZWxwZXJzIGZyb20gJ0Btb2R1bGUtZmVkZXJhdGlvbi9lbmhhbmNlZC9ydW50aW1lJyBpbnN0ZWFkLiBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBOeCAyMi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFJlbW90ZVVybFJlc29sdmVyKFxuICBfcmVzb2x2ZVJlbW90ZVVybDogUmVzb2x2ZVJlbW90ZVVybEZ1bmN0aW9uXG4pIHtcbiAgcmVzb2x2ZVJlbW90ZVVybCA9IF9yZXNvbHZlUmVtb3RlVXJsO1xufVxuXG5sZXQgcmVtb3RlVXJsRGVmaW5pdGlvbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGluaXQoKSBmcm9tICdAbW9kdWxlLWZlZGVyYXRpb24vZW5oYW5jZWQvcnVudGltZScgaW5zdGVhZC4gVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gTnggMjIuXG4gKiBJZiB5b3UgaGF2ZSBhIHJlbW90ZSBhcHAgY2FsbGVkIGBteS1yZW1vdGUtYXBwYCBhbmQgeW91IHdhbnQgdG8gdXNlIHRoZSBgaHR0cDovL2xvY2FsaG9zdDo0MjAxL21mLW1hbmlmZXN0Lmpzb25gIGFzIHRoZSByZW1vdGUgdXJsLCB5b3Ugc2hvdWxkIGNoYW5nZSBpdCBmcm9tOlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHNldFJlbW90ZURlZmluaXRpb25zIH0gZnJvbSAnQG54L2FuZ3VsYXIvbWYnO1xuICpcbiAqIHNldFJlbW90ZURlZmluaXRpb25zKHtcbiAqICAgJ215LXJlbW90ZS1hcHAnOiAnaHR0cDovL2xvY2FsaG9zdDo0MjAxL21mLW1hbmlmZXN0Lmpzb24nXG4gKiB9KTtcbiAqIGBgYFxuICogdG8gdXNlIGluaXQoKTpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBpbml0IH0gZnJvbSAnQG1vZHVsZS1mZWRlcmF0aW9uL2VuaGFuY2VkL3J1bnRpbWUnO1xuICpcbiAqIGluaXQoe1xuICogICBuYW1lOiAnaG9zdCcsXG4gKiAgIHJlbW90ZXM6IFt7XG4gKiAgICAgbmFtZTogJ215LXJlbW90ZS1hcHAnLFxuICogICAgIGVudHJ5OiAnaHR0cDovL2xvY2FsaG9zdDo0MjAxL21mLW1hbmlmZXN0Lmpzb24nXG4gKiAgIH1dXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0UmVtb3RlRGVmaW5pdGlvbnMoZGVmaW5pdGlvbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pIHtcbiAgcmVtb3RlVXJsRGVmaW5pdGlvbnMgPSBkZWZpbml0aW9ucztcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgcmVnaXN0ZXJSZW1vdGVzKCkgZnJvbSAnQG1vZHVsZS1mZWRlcmF0aW9uL2VuaGFuY2VkL3J1bnRpbWUnIGluc3RlYWQuIFRoaXMgd2lsbCBiZSByZW1vdmVkIGluIE54IDIyLlxuICogSWYgeW91IHNldCBhIHJlbW90ZSBhcHAgd2l0aCBgc2V0UmVtb3RlRGVmaW5pdGlvbmAgc3VjaCBhczpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBzZXRSZW1vdGVEZWZpbml0aW9uIH0gZnJvbSAnQG54L2FuZ3VsYXIvbWYnO1xuICpcbiAqIHNldFJlbW90ZURlZmluaXRpb24oXG4gKiAgICdteS1yZW1vdGUtYXBwJyxcbiAqICAgJ2h0dHA6Ly9sb2NhbGhvc3Q6NDIwMS9tZi1tYW5pZmVzdC5qc29uJ1xuICogKTtcbiAqIGBgYFxuICogY2hhbmdlIGl0IHRvIHVzZSByZWdpc3RlclJlbW90ZXMoKTpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyByZWdpc3RlclJlbW90ZXMgfSBmcm9tICdAbW9kdWxlLWZlZGVyYXRpb24vZW5oYW5jZWQvcnVudGltZSc7XG4gKlxuICogcmVnaXN0ZXJSZW1vdGVzKFtcbiAqICB7XG4gKiAgICAgbmFtZTogJ215LXJlbW90ZS1hcHAnLFxuICogICAgIGVudHJ5OiAnaHR0cDovL2xvY2FsaG9zdDo0MjAxL21mLW1hbmlmZXN0Lmpzb24nXG4gKiAgIH1cbiAqIF0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZW1vdGVEZWZpbml0aW9uKHJlbW90ZU5hbWU6IHN0cmluZywgcmVtb3RlVXJsOiBzdHJpbmcpIHtcbiAgcmVtb3RlVXJsRGVmaW5pdGlvbnMgPz89IHt9O1xuICByZW1vdGVVcmxEZWZpbml0aW9uc1tyZW1vdGVOYW1lXSA9IHJlbW90ZVVybDtcbn1cblxubGV0IHJlbW90ZU1vZHVsZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCB1bmtub3duPigpO1xubGV0IHJlbW90ZUNvbnRhaW5lck1hcCA9IG5ldyBNYXA8c3RyaW5nLCB1bmtub3duPigpO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBsb2FkUmVtb3RlKCkgZnJvbSAnQG1vZHVsZS1mZWRlcmF0aW9uL2VuaGFuY2VkL3J1bnRpbWUnIGluc3RlYWQuIFRoaXMgd2lsbCBiZSByZW1vdmVkIGluIE54IDIyLlxuICogSWYgeW91IHNldCBhIGxvYWQgYSByZW1vdGUgd2l0aCBgbG9hZFJlbW90ZU1vZHVsZWAgc3VjaCBhczpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBsb2FkUmVtb3RlTW9kdWxlIH0gZnJvbSAnQG54L2FuZ3VsYXIvbWYnO1xuICpcbiAqIGxvYWRSZW1vdGVNb2R1bGUoJ215LXJlbW90ZS1hcHAnLCAnLi9Nb2R1bGUnKS50aGVuKG0gPT4gbS5SZW1vdGVFbnRyeU1vZHVsZSk7XG4gKiBgYGBcbiAqIGNoYW5nZSBpdCB0byB1c2UgbG9hZFJlbW90ZSgpOlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGxvYWRSZW1vdGUgfSBmcm9tICdAbW9kdWxlLWZlZGVyYXRpb24vZW5oYW5jZWQvcnVudGltZSc7XG4gKlxuICogbG9hZFJlbW90ZTx0eXBlb2YgaW1wb3J0KCdteS1yZW1vdGUtYXBwL01vZHVsZScpPignbXktcmVtb3RlLWFwcC9Nb2R1bGUnKS50aGVuKG0gPT4gbS5SZW1vdGVFbnRyeU1vZHVsZSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRSZW1vdGVNb2R1bGUocmVtb3RlTmFtZTogc3RyaW5nLCBtb2R1bGVOYW1lOiBzdHJpbmcpIHtcbiAgY29uc3QgcmVtb3RlTW9kdWxlS2V5ID0gYCR7cmVtb3RlTmFtZX06JHttb2R1bGVOYW1lfWA7XG4gIGlmIChyZW1vdGVNb2R1bGVNYXAuaGFzKHJlbW90ZU1vZHVsZUtleSkpIHtcbiAgICByZXR1cm4gcmVtb3RlTW9kdWxlTWFwLmdldChyZW1vdGVNb2R1bGVLZXkpO1xuICB9XG5cbiAgY29uc3QgY29udGFpbmVyID0gcmVtb3RlQ29udGFpbmVyTWFwLmhhcyhyZW1vdGVOYW1lKVxuICAgID8gcmVtb3RlQ29udGFpbmVyTWFwLmdldChyZW1vdGVOYW1lKVxuICAgIDogYXdhaXQgbG9hZFJlbW90ZUNvbnRhaW5lcihyZW1vdGVOYW1lKTtcblxuICBjb25zdCBmYWN0b3J5ID0gYXdhaXQgY29udGFpbmVyLmdldChtb2R1bGVOYW1lKTtcbiAgY29uc3QgTW9kdWxlID0gZmFjdG9yeSgpO1xuXG4gIHJlbW90ZU1vZHVsZU1hcC5zZXQocmVtb3RlTW9kdWxlS2V5LCBNb2R1bGUpO1xuXG4gIHJldHVybiBNb2R1bGU7XG59XG5cbmZ1bmN0aW9uIGxvYWRNb2R1bGUodXJsOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGltcG9ydCgvKiB3ZWJwYWNrSWdub3JlOnRydWUgKi8gdXJsKTtcbn1cblxubGV0IGluaXRpYWxTaGFyaW5nU2NvcGVDcmVhdGVkID0gZmFsc2U7XG5cbmFzeW5jIGZ1bmN0aW9uIGxvYWRSZW1vdGVDb250YWluZXIocmVtb3RlTmFtZTogc3RyaW5nKSB7XG4gIGlmICghcmVzb2x2ZVJlbW90ZVVybCAmJiAhcmVtb3RlVXJsRGVmaW5pdGlvbnMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbCBzZXRSZW1vdGVEZWZpbml0aW9ucyBvciBzZXRSZW1vdGVVcmxSZXNvbHZlciB0byBhbGxvdyBEeW5hbWljIEZlZGVyYXRpb24gdG8gZmluZCB0aGUgcmVtb3RlIGFwcHMgY29ycmVjdGx5LidcbiAgICApO1xuICB9XG5cbiAgaWYgKCFpbml0aWFsU2hhcmluZ1Njb3BlQ3JlYXRlZCkge1xuICAgIGluaXRpYWxTaGFyaW5nU2NvcGVDcmVhdGVkID0gdHJ1ZTtcbiAgICBhd2FpdCBfX3dlYnBhY2tfaW5pdF9zaGFyaW5nX18oJ2RlZmF1bHQnKTtcbiAgfVxuXG4gIGNvbnN0IHJlbW90ZVVybCA9IHJlbW90ZVVybERlZmluaXRpb25zXG4gICAgPyByZW1vdGVVcmxEZWZpbml0aW9uc1tyZW1vdGVOYW1lXVxuICAgIDogYXdhaXQgcmVzb2x2ZVJlbW90ZVVybChyZW1vdGVOYW1lKTtcblxuICBjb25zdCBjb250YWluZXJVcmwgPSBwcm9jZXNzUnVudGltZVJlbW90ZVVybChyZW1vdGVVcmwsICdtanMnKTtcblxuICBjb25zdCBjb250YWluZXIgPSBhd2FpdCBsb2FkTW9kdWxlKGNvbnRhaW5lclVybCk7XG4gIGF3YWl0IGNvbnRhaW5lci5pbml0KF9fd2VicGFja19zaGFyZV9zY29wZXNfXy5kZWZhdWx0KTtcblxuICByZW1vdGVDb250YWluZXJNYXAuc2V0KHJlbW90ZU5hbWUsIGNvbnRhaW5lcik7XG4gIHJldHVybiBjb250YWluZXI7XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtYW5ndWxhci1tZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbWYvbngtYW5ndWxhci1tZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@nx/angular",
|
3
|
-
"version": "21.2.
|
3
|
+
"version": "21.2.3",
|
4
4
|
"private": false,
|
5
5
|
"description": "The Nx Plugin for Angular contains executors, generators, and utilities for managing Angular applications and libraries within an Nx workspace. It provides: \n\n- Integration with libraries such as Storybook, Jest, ESLint, Tailwind CSS, Playwright and Cypress. \n\n- Generators to help scaffold code quickly (like: Micro Frontends, Libraries, both internal to your codebase and publishable to npm) \n\n- Single Component Application Modules (SCAMs) \n\n- NgRx helpers. \n\n- Utilities for automatic workspace refactoring.",
|
6
6
|
"repository": {
|
@@ -58,14 +58,14 @@
|
|
58
58
|
"migrations": "./migrations.json"
|
59
59
|
},
|
60
60
|
"dependencies": {
|
61
|
-
"@nx/devkit": "21.2.
|
62
|
-
"@nx/eslint": "21.2.
|
63
|
-
"@nx/js": "21.2.
|
64
|
-
"@nx/module-federation": "21.2.
|
65
|
-
"@nx/rspack": "21.2.
|
66
|
-
"@nx/web": "21.2.
|
67
|
-
"@nx/webpack": "21.2.
|
68
|
-
"@nx/workspace": "21.2.
|
61
|
+
"@nx/devkit": "21.2.3",
|
62
|
+
"@nx/eslint": "21.2.3",
|
63
|
+
"@nx/js": "21.2.3",
|
64
|
+
"@nx/module-federation": "21.2.3",
|
65
|
+
"@nx/rspack": "21.2.3",
|
66
|
+
"@nx/web": "21.2.3",
|
67
|
+
"@nx/webpack": "21.2.3",
|
68
|
+
"@nx/workspace": "21.2.3",
|
69
69
|
"@phenomnomnominal/tsquery": "~5.0.1",
|
70
70
|
"@typescript-eslint/type-utils": "^8.0.0",
|
71
71
|
"enquirer": "~2.3.6",
|
@@ -4,6 +4,7 @@ exports.nxComponentTestingPreset = nxComponentTestingPreset;
|
|
4
4
|
const cypress_preset_1 = require("@nx/cypress/plugins/cypress-preset");
|
5
5
|
const ct_helpers_1 = require("@nx/cypress/src/utils/ct-helpers");
|
6
6
|
const devkit_1 = require("@nx/devkit");
|
7
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
7
8
|
const fs_1 = require("fs");
|
8
9
|
const path_1 = require("path");
|
9
10
|
const semver_1 = require("semver");
|
@@ -115,7 +116,8 @@ function normalizeBuildTargetOptions(buildContext, ctContext, offset) {
|
|
115
116
|
configuration: buildContext.configurationName,
|
116
117
|
}, buildContext);
|
117
118
|
const project = buildContext.projectsConfigurations.projects[buildContext.projectName];
|
118
|
-
const
|
119
|
+
const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(project);
|
120
|
+
const buildOptions = withSchemaDefaults(options, sourceRoot, buildContext.root);
|
119
121
|
// cypress creates a tsconfig if one isn't preset
|
120
122
|
// that contains all the support required for angular and component tests
|
121
123
|
delete buildOptions.tsConfig;
|
@@ -189,18 +191,9 @@ function normalizeBuildTargetOptions(buildContext, ctContext, offset) {
|
|
189
191
|
buildOptions.scripts = [];
|
190
192
|
buildOptions.stylePreprocessorOptions = { includePaths: [] };
|
191
193
|
}
|
192
|
-
const config = buildContext.projectGraph.nodes[buildContext.projectName]?.data;
|
193
|
-
if (!config.sourceRoot) {
|
194
|
-
devkit_1.logger.warn((0, devkit_1.stripIndents) `Unable to find the 'sourceRoot' in the project configuration.
|
195
|
-
Will set 'sourceRoot' to '${config.root}/src'
|
196
|
-
Note: this may fail, setting the correct 'sourceRoot' for ${buildContext.projectName} in the project.json file will ensure the correct value is used.`);
|
197
|
-
config.sourceRoot = (0, devkit_1.joinPathFragments)(config.root, 'src');
|
198
|
-
}
|
199
194
|
return {
|
200
|
-
root: offset ? (0, devkit_1.joinPathFragments)(offset,
|
201
|
-
sourceRoot: offset
|
202
|
-
? (0, devkit_1.joinPathFragments)(offset, config.sourceRoot)
|
203
|
-
: config.sourceRoot,
|
195
|
+
root: offset ? (0, devkit_1.joinPathFragments)(offset, project.root) : project.root,
|
196
|
+
sourceRoot: offset ? (0, devkit_1.joinPathFragments)(offset, sourceRoot) : sourceRoot,
|
204
197
|
buildOptions: {
|
205
198
|
...buildOptions,
|
206
199
|
// this property is only valid for cy v12.9.0+
|
@@ -208,9 +201,8 @@ Note: this may fail, setting the correct 'sourceRoot' for ${buildContext.project
|
|
208
201
|
},
|
209
202
|
};
|
210
203
|
}
|
211
|
-
function withSchemaDefaults(options,
|
204
|
+
function withSchemaDefaults(options, sourceRoot, workspaceRoot) {
|
212
205
|
if (!options.main && !options.browser) {
|
213
|
-
const sourceRoot = project.sourceRoot ?? (0, devkit_1.joinPathFragments)(project.root, 'src');
|
214
206
|
options.browser = (0, devkit_1.joinPathFragments)(sourceRoot, 'main.ts');
|
215
207
|
if (!(0, fs_1.existsSync)((0, path_1.join)(workspaceRoot, options.browser))) {
|
216
208
|
throw new Error('Missing executor options "main" and "browser"');
|
@@ -4,10 +4,11 @@ exports.getDynamicRemotes = getDynamicRemotes;
|
|
4
4
|
exports.getStaticRemotes = getStaticRemotes;
|
5
5
|
exports.validateDevRemotes = validateDevRemotes;
|
6
6
|
exports.getDynamicMfManifestFile = getDynamicMfManifestFile;
|
7
|
-
const path_1 = require("path");
|
8
|
-
const fs_1 = require("fs");
|
9
7
|
const devkit_1 = require("@nx/devkit");
|
10
8
|
const internal_1 = require("@nx/js/src/internal");
|
9
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
10
|
+
const fs_1 = require("fs");
|
11
|
+
const path_1 = require("path");
|
11
12
|
function getDynamicRemotes(project, context, workspaceProjects, remotesToSkip, pathToManifestFile) {
|
12
13
|
pathToManifestFile ??= getDynamicMfManifestFile(project, context.workspaceRoot);
|
13
14
|
// check for dynamic remotes
|
@@ -105,6 +106,6 @@ function getDynamicMfManifestFile(project, workspaceRoot) {
|
|
105
106
|
// at the old path.
|
106
107
|
return [
|
107
108
|
(0, path_1.join)(workspaceRoot, project.root, 'public/module-federation.manifest.json'),
|
108
|
-
(0, path_1.join)(workspaceRoot, project
|
109
|
+
(0, path_1.join)(workspaceRoot, (0, ts_solution_setup_1.getProjectSourceRoot)(project), 'assets/module-federation.manifest.json'),
|
109
110
|
].find((path) => (0, fs_1.existsSync)(path));
|
110
111
|
}
|
@@ -456,7 +456,7 @@
|
|
456
456
|
"additionalProperties": false
|
457
457
|
},
|
458
458
|
"indexHtmlTransformer": {
|
459
|
-
"description": "Path to
|
459
|
+
"description": "Path to a file containing a function to transform the index.html. The function should have the signature: `(target: Target, indexHtml: string) => string`, where `target` is the build target configuration and `indexHtml` is the original HTML content.",
|
460
460
|
"type": "string",
|
461
461
|
"alias": "indexFileTransformer"
|
462
462
|
},
|
@@ -2,16 +2,16 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.updateSsrSetup = updateSsrSetup;
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
5
6
|
const path_1 = require("path");
|
6
7
|
const versions_1 = require("../../../utils/versions");
|
7
8
|
const version_utils_1 = require("../../utils/version-utils");
|
8
9
|
async function updateSsrSetup(tree, options, appName, typescriptConfiguration) {
|
9
10
|
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
10
11
|
let project = (0, devkit_1.readProjectConfiguration)(tree, appName);
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
: project.root, 'server.ts');
|
12
|
+
const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(project, tree);
|
13
|
+
tree.rename((0, devkit_1.joinPathFragments)(sourceRoot, 'main.server.ts'), (0, devkit_1.joinPathFragments)(sourceRoot, 'bootstrap.server.ts'));
|
14
|
+
const pathToServerEntry = (0, devkit_1.joinPathFragments)(angularMajorVersion >= 19 ? sourceRoot : project.root, 'server.ts');
|
15
15
|
tree.write(pathToServerEntry, `import('./${angularMajorVersion >= 19 ? '' : 'src/'}main.server');`);
|
16
16
|
(0, devkit_1.generateFiles)(tree, (0, path_1.join)(__dirname, '../files/common'), project.root, {
|
17
17
|
appName,
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createFiles = createFiles;
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
5
|
const js_1 = require("@nx/js");
|
6
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
6
7
|
const semver_1 = require("semver");
|
7
8
|
const test_runners_1 = require("../../../utils/test-runners");
|
8
9
|
const version_utils_1 = require("../../utils/version-utils");
|
@@ -50,7 +51,7 @@ function createFiles(tree, options, project) {
|
|
50
51
|
}
|
51
52
|
}
|
52
53
|
if (!options.libraryOptions.routing) {
|
53
|
-
tree.delete((0, devkit_1.joinPathFragments)(project
|
54
|
+
tree.delete((0, devkit_1.joinPathFragments)((0, ts_solution_setup_1.getProjectSourceRoot)(project, tree), `lib/lib.routes.ts`));
|
54
55
|
}
|
55
56
|
if (!options.libraryOptions.buildable &&
|
56
57
|
!options.libraryOptions.publishable) {
|
@@ -11,9 +11,12 @@ function updateTsConfigFiles(tree, options) {
|
|
11
11
|
(0, js_1.extractTsConfigBase)(tree);
|
12
12
|
updateProjectConfig(tree, options);
|
13
13
|
updateProjectIvyConfig(tree, options);
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
// Only add tsconfig path mapping if skipTsConfig is not true
|
15
|
+
if (!options.skipTsConfig) {
|
16
|
+
(0, js_1.addTsConfigPath)(tree, options.importPath, [
|
17
|
+
(0, devkit_1.joinPathFragments)(options.projectRoot, './src', 'index.ts'),
|
18
|
+
]);
|
19
|
+
}
|
17
20
|
const compilerOptions = {
|
18
21
|
skipLibCheck: true,
|
19
22
|
experimentalDecorators: true,
|
@@ -2,6 +2,7 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.updateModuleName = updateModuleName;
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
5
6
|
/**
|
6
7
|
* Updates the Angular module name (including the spec file and index.ts)
|
7
8
|
*
|
@@ -40,14 +41,15 @@ function updateModuleName(tree, { oldProjectName, newProjectName }) {
|
|
40
41
|
to: `${unscopedNewProjectName}-module`,
|
41
42
|
},
|
42
43
|
];
|
44
|
+
const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(project, tree);
|
43
45
|
const filesToRename = moduleFiles.flatMap((moduleFile) => [
|
44
46
|
{
|
45
|
-
from: `${
|
46
|
-
to: `${
|
47
|
+
from: `${sourceRoot}/lib/${moduleFile.from}.ts`,
|
48
|
+
to: `${sourceRoot}/lib/${moduleFile.to}.ts`,
|
47
49
|
},
|
48
50
|
{
|
49
|
-
from: `${
|
50
|
-
to: `${
|
51
|
+
from: `${sourceRoot}/lib/${moduleFile.from}.spec.ts`,
|
52
|
+
to: `${sourceRoot}/lib/${moduleFile.to}.spec.ts`,
|
51
53
|
},
|
52
54
|
].filter((rename) => rename.from !== rename.to));
|
53
55
|
if (filesToRename.length === 0) {
|
@@ -71,7 +73,7 @@ function updateModuleName(tree, { oldProjectName, newProjectName }) {
|
|
71
73
|
}
|
72
74
|
});
|
73
75
|
// update index file
|
74
|
-
const indexFile = (0, devkit_1.joinPathFragments)(
|
76
|
+
const indexFile = (0, devkit_1.joinPathFragments)(sourceRoot, 'index.ts');
|
75
77
|
if (tree.exists(indexFile)) {
|
76
78
|
updateFileContent(tree, replacements, indexFile);
|
77
79
|
}
|
@@ -2,7 +2,11 @@ import { NgModule } from '@angular/core';
|
|
2
2
|
import { TestBed } from '@angular/core/testing';
|
3
3
|
import { EffectsModule } from '@ngrx/effects';
|
4
4
|
import { StoreModule, Store } from '@ngrx/store';
|
5
|
-
|
5
|
+
<%_ if (isRxJs7) { _%>
|
6
|
+
import { firstValueFrom } from 'rxjs';
|
7
|
+
<%_ } else { _%>
|
8
|
+
import { first } from 'rxjs/operators';
|
9
|
+
<%_ } _%>
|
6
10
|
|
7
11
|
import * as <%= className %>Actions from './<%= fileName %>.actions';
|
8
12
|
import { <%= className %>Effects } from './<%= fileName %>.effects';
|
@@ -57,16 +61,16 @@ describe('<%= className %>Facade', () => {
|
|
57
61
|
* The initially generated facade::loadAll() returns empty array
|
58
62
|
*/
|
59
63
|
it('loadAll() should return empty list with loaded == true', async () => {
|
60
|
-
let list = await
|
61
|
-
let isLoaded = await
|
64
|
+
let list = await <% if (isRxJs7) { %>firstValueFrom(facade.all<%= className %>$)<% } else { %>facade.all<%= className %>$.pipe(first()).toPromise()<% } %>;
|
65
|
+
let isLoaded = await <% if (isRxJs7) { %>firstValueFrom(facade.loaded$)<% } else { %>facade.loaded$.pipe(first()).toPromise()<% } %>;
|
62
66
|
|
63
67
|
expect(list.length).toBe(0);
|
64
68
|
expect(isLoaded).toBe(false);
|
65
69
|
|
66
70
|
facade.init();
|
67
71
|
|
68
|
-
list = await
|
69
|
-
isLoaded = await
|
72
|
+
list = await <% if (isRxJs7) { %>firstValueFrom(facade.all<%= className %>$)<% } else { %>facade.all<%= className %>$.pipe(first()).toPromise()<% } %>;
|
73
|
+
isLoaded = await <% if (isRxJs7) { %>firstValueFrom(facade.loaded$)<% } else { %>facade.loaded$.pipe(first()).toPromise()<% } %>;
|
70
74
|
|
71
75
|
expect(list.length).toBe(0);
|
72
76
|
expect(isLoaded).toBe(true);
|
@@ -76,8 +80,8 @@ describe('<%= className %>Facade', () => {
|
|
76
80
|
* Use `load<%= className %>Success` to manually update list
|
77
81
|
*/
|
78
82
|
it('all<%= className %>$ should return the loaded list; and loaded flag == true', async () => {
|
79
|
-
let list = await
|
80
|
-
let isLoaded = await
|
83
|
+
let list = await <% if (isRxJs7) { %>firstValueFrom(facade.all<%= className %>$)<% } else { %>facade.all<%= className %>$.pipe(first()).toPromise()<% } %>;
|
84
|
+
let isLoaded = await <% if (isRxJs7) { %>firstValueFrom(facade.loaded$)<% } else { %>facade.loaded$.pipe(first()).toPromise()<% } %>;
|
81
85
|
|
82
86
|
expect(list.length).toBe(0);
|
83
87
|
expect(isLoaded).toBe(false);
|
@@ -89,8 +93,8 @@ describe('<%= className %>Facade', () => {
|
|
89
93
|
]})
|
90
94
|
);
|
91
95
|
|
92
|
-
list = await
|
93
|
-
isLoaded = await
|
96
|
+
list = await <% if (isRxJs7) { %>firstValueFrom(facade.all<%= className %>$)<% } else { %>facade.all<%= className %>$.pipe(first()).toPromise()<% } %>;
|
97
|
+
isLoaded = await <% if (isRxJs7) { %>firstValueFrom(facade.loaded$)<% } else { %>facade.loaded$.pipe(first()).toPromise()<% } %>;
|
94
98
|
|
95
99
|
expect(list.length).toBe(2);
|
96
100
|
expect(isLoaded).toBe(true);
|
@@ -3,5 +3,6 @@ import type { NgRxGeneratorOptions } from '../schema';
|
|
3
3
|
export type NormalizedNgRxGeneratorOptions = NgRxGeneratorOptions & {
|
4
4
|
parentDirectory: string;
|
5
5
|
rxjsVersion: string;
|
6
|
+
rxjsMajorVersion: number;
|
6
7
|
};
|
7
8
|
export declare function normalizeOptions(tree: Tree, options: NgRxGeneratorOptions): NormalizedNgRxGeneratorOptions;
|
@@ -4,6 +4,7 @@ exports.normalizeOptions = normalizeOptions;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
5
|
const semver_1 = require("@nx/devkit/src/utils/semver");
|
6
6
|
const path_1 = require("path");
|
7
|
+
const semver_2 = require("semver");
|
7
8
|
const versions_1 = require("../../../utils/versions");
|
8
9
|
function normalizeOptions(tree, options) {
|
9
10
|
let rxjsVersion;
|
@@ -13,6 +14,7 @@ function normalizeOptions(tree, options) {
|
|
13
14
|
catch {
|
14
15
|
rxjsVersion = (0, semver_1.checkAndCleanWithSemver)('rxjs', versions_1.rxjsVersion);
|
15
16
|
}
|
17
|
+
const rxjsMajorVersion = (0, semver_2.major)(rxjsVersion);
|
16
18
|
return {
|
17
19
|
...options,
|
18
20
|
parentDirectory: options.module
|
@@ -23,5 +25,6 @@ function normalizeOptions(tree, options) {
|
|
23
25
|
route: options.route === '' ? `''` : options.route ?? `''`,
|
24
26
|
directory: (0, devkit_1.names)(options.directory).fileName,
|
25
27
|
rxjsVersion,
|
28
|
+
rxjsMajorVersion,
|
26
29
|
};
|
27
30
|
}
|
package/src/generators/ngrx-feature-store/files/__directory__/__fileName__.facade.spec.ts__tmpl__
CHANGED
@@ -2,7 +2,11 @@ import { NgModule } from '@angular/core';
|
|
2
2
|
import { TestBed } from '@angular/core/testing';
|
3
3
|
import { EffectsModule } from '@ngrx/effects';
|
4
4
|
import { StoreModule, Store } from '@ngrx/store';
|
5
|
-
|
5
|
+
<%_ if (isRxJs7) { _%>
|
6
|
+
import { firstValueFrom } from 'rxjs';
|
7
|
+
<%_ } else { _%>
|
8
|
+
import { first } from 'rxjs/operators';
|
9
|
+
<%_ } _%>
|
6
10
|
|
7
11
|
import * as <%= className %>Actions from './<%= relativeFileName %>.actions';
|
8
12
|
import { <%= className %>Effects } from './<%= relativeFileName %>.effects';
|
@@ -57,16 +61,16 @@ describe('<%= className %>Facade', () => {
|
|
57
61
|
* The initially generated facade::loadAll() returns empty array
|
58
62
|
*/
|
59
63
|
it('loadAll() should return empty list with loaded == true', async () => {
|
60
|
-
let list = await
|
61
|
-
let isLoaded = await
|
64
|
+
let list = await <% if (isRxJs7) { %>firstValueFrom(facade.all<%= className %>$)<% } else { %>facade.all<%= className %>$.pipe(first()).toPromise()<% } %>;
|
65
|
+
let isLoaded = await <% if (isRxJs7) { %>firstValueFrom(facade.loaded$)<% } else { %>facade.loaded$.pipe(first()).toPromise()<% } %>;
|
62
66
|
|
63
67
|
expect(list.length).toBe(0);
|
64
68
|
expect(isLoaded).toBe(false);
|
65
69
|
|
66
70
|
facade.init();
|
67
71
|
|
68
|
-
list = await
|
69
|
-
isLoaded = await
|
72
|
+
list = await <% if (isRxJs7) { %>firstValueFrom(facade.all<%= className %>$)<% } else { %>facade.all<%= className %>$.pipe(first()).toPromise()<% } %>;
|
73
|
+
isLoaded = await <% if (isRxJs7) { %>firstValueFrom(facade.loaded$)<% } else { %>facade.loaded$.pipe(first()).toPromise()<% } %>;
|
70
74
|
|
71
75
|
expect(list.length).toBe(0);
|
72
76
|
expect(isLoaded).toBe(true);
|
@@ -76,8 +80,8 @@ describe('<%= className %>Facade', () => {
|
|
76
80
|
* Use `load<%= className %>Success` to manually update list
|
77
81
|
*/
|
78
82
|
it('all<%= className %>$ should return the loaded list; and loaded flag == true', async () => {
|
79
|
-
let list = await
|
80
|
-
let isLoaded = await
|
83
|
+
let list = await <% if (isRxJs7) { %>firstValueFrom(facade.all<%= className %>$)<% } else { %>facade.all<%= className %>$.pipe(first()).toPromise()<% } %>;
|
84
|
+
let isLoaded = await <% if (isRxJs7) { %>firstValueFrom(facade.loaded$)<% } else { %>facade.loaded$.pipe(first()).toPromise()<% } %>;
|
81
85
|
|
82
86
|
expect(list.length).toBe(0);
|
83
87
|
expect(isLoaded).toBe(false);
|
@@ -89,8 +93,8 @@ describe('<%= className %>Facade', () => {
|
|
89
93
|
]})
|
90
94
|
);
|
91
95
|
|
92
|
-
list = await
|
93
|
-
isLoaded = await
|
96
|
+
list = await <% if (isRxJs7) { %>firstValueFrom(facade.all<%= className %>$)<% } else { %>facade.all<%= className %>$.pipe(first()).toPromise()<% } %>;
|
97
|
+
isLoaded = await <% if (isRxJs7) { %>firstValueFrom(facade.loaded$)<% } else { %>facade.loaded$.pipe(first()).toPromise()<% } %>;
|
94
98
|
|
95
99
|
expect(list.length).toBe(2);
|
96
100
|
expect(isLoaded).toBe(true);
|
@@ -14,6 +14,7 @@ function generateFilesFromTemplates(tree, options) {
|
|
14
14
|
fileName,
|
15
15
|
relativeFileName: projectNames.fileName,
|
16
16
|
importFromOperators: (0, semver_1.lt)(options.rxjsVersion, '7.2.0'),
|
17
|
+
isRxJs7: options.rxjsMajorVersion >= 7,
|
17
18
|
tmpl: '',
|
18
19
|
});
|
19
20
|
if (!options.facade) {
|
@@ -4,5 +4,6 @@ export type NormalizedNgRxFeatureStoreGeneratorOptions = Schema & {
|
|
4
4
|
parentDirectory: string;
|
5
5
|
subdirectory: string;
|
6
6
|
rxjsVersion: string;
|
7
|
+
rxjsMajorVersion: number;
|
7
8
|
};
|
8
9
|
export declare function normalizeOptions(tree: Tree, options: Schema): NormalizedNgRxFeatureStoreGeneratorOptions;
|
@@ -4,6 +4,7 @@ exports.normalizeOptions = normalizeOptions;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
5
|
const semver_1 = require("@nx/devkit/src/utils/semver");
|
6
6
|
const path_1 = require("path");
|
7
|
+
const semver_2 = require("semver");
|
7
8
|
const versions_1 = require("../../../utils/versions");
|
8
9
|
function normalizeOptions(tree, options) {
|
9
10
|
let rxjsVersion;
|
@@ -13,6 +14,7 @@ function normalizeOptions(tree, options) {
|
|
13
14
|
catch {
|
14
15
|
rxjsVersion = (0, semver_1.checkAndCleanWithSemver)('rxjs', versions_1.rxjsVersion);
|
15
16
|
}
|
17
|
+
const rxjsMajorVersion = (0, semver_2.major)(rxjsVersion);
|
16
18
|
const { subdirectory, name } = determineSubdirectoryAndName(options.name);
|
17
19
|
return {
|
18
20
|
...options,
|
@@ -22,6 +24,7 @@ function normalizeOptions(tree, options) {
|
|
22
24
|
route: options.route === '' ? `''` : options.route ?? `''`,
|
23
25
|
directory: (0, devkit_1.names)(options.directory).fileName,
|
24
26
|
rxjsVersion,
|
27
|
+
rxjsMajorVersion,
|
25
28
|
};
|
26
29
|
}
|
27
30
|
function determineSubdirectoryAndName(name) {
|
@@ -5,6 +5,7 @@ const devkit_1 = require("@nx/devkit");
|
|
5
5
|
const semver_1 = require("@nx/devkit/src/utils/semver");
|
6
6
|
const versions_1 = require("../../../utils/versions");
|
7
7
|
const ast_utils_1 = require("../../../utils/nx-devkit/ast-utils");
|
8
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
8
9
|
function normalizeOptions(tree, options) {
|
9
10
|
let rxjsVersion;
|
10
11
|
try {
|
@@ -15,10 +16,10 @@ function normalizeOptions(tree, options) {
|
|
15
16
|
}
|
16
17
|
const project = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
17
18
|
const isStandalone = (0, ast_utils_1.isNgStandaloneApp)(tree, options.project);
|
18
|
-
const
|
19
|
+
const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(project, tree);
|
20
|
+
const appConfigPath = (0, devkit_1.joinPathFragments)(sourceRoot, 'app/app.config.ts');
|
19
21
|
let appMainPath = project.targets.build.options.main ?? project.targets.build.options.browser;
|
20
22
|
if (!appMainPath) {
|
21
|
-
const sourceRoot = project.sourceRoot ?? (0, devkit_1.joinPathFragments)(project.root, 'src');
|
22
23
|
appMainPath = (0, devkit_1.joinPathFragments)(sourceRoot, 'main.ts');
|
23
24
|
}
|
24
25
|
/** If NgModule App
|
@@ -28,9 +29,9 @@ function normalizeOptions(tree, options) {
|
|
28
29
|
* --> If so, use that
|
29
30
|
* --> If not, use main.ts
|
30
31
|
*/
|
31
|
-
let ngModulePath = (0, devkit_1.joinPathFragments)(
|
32
|
+
let ngModulePath = (0, devkit_1.joinPathFragments)(sourceRoot, 'app/app.module.ts');
|
32
33
|
if (!tree.exists(ngModulePath)) {
|
33
|
-
ngModulePath = (0, devkit_1.joinPathFragments)(
|
34
|
+
ngModulePath = (0, devkit_1.joinPathFragments)(sourceRoot, 'app/app-module.ts');
|
34
35
|
}
|
35
36
|
const parent = !isStandalone && tree.exists(ngModulePath)
|
36
37
|
? ngModulePath
|
@@ -2,6 +2,7 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.updateSsrSetup = updateSsrSetup;
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
5
6
|
const path_1 = require("path");
|
6
7
|
const versions_1 = require("../../../utils/versions");
|
7
8
|
const artifact_types_1 = require("../../utils/artifact-types");
|
@@ -9,10 +10,9 @@ const version_utils_1 = require("../../utils/version-utils");
|
|
9
10
|
async function updateSsrSetup(tree, { appName, port, standalone, typescriptConfiguration, skipPackageJson, }) {
|
10
11
|
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
11
12
|
let project = (0, devkit_1.readProjectConfiguration)(tree, appName);
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
: project.root, 'server.ts');
|
13
|
+
const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(project, tree);
|
14
|
+
tree.rename((0, devkit_1.joinPathFragments)(sourceRoot, 'main.server.ts'), (0, devkit_1.joinPathFragments)(sourceRoot, 'bootstrap.server.ts'));
|
15
|
+
const pathToServerEntry = (0, devkit_1.joinPathFragments)(angularMajorVersion >= 19 ? sourceRoot : project.root, 'server.ts');
|
16
16
|
tree.write(pathToServerEntry, `import('./${angularMajorVersion >= 19 ? '' : 'src/'}main.server');`);
|
17
17
|
const browserBundleOutput = project.targets.build.options.outputPath;
|
18
18
|
const serverBundleOutput = project.targets.build.options.outputPath.replace(/\/browser$/, '/server');
|
@@ -5,6 +5,7 @@
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
exports.addCypressOnErrorWorkaround = addCypressOnErrorWorkaround;
|
7
7
|
const devkit_1 = require("@nx/devkit");
|
8
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
8
9
|
function addCypressOnErrorWorkaround(tree, schema) {
|
9
10
|
if (!schema.e2eProjectName) {
|
10
11
|
return;
|
@@ -43,7 +44,7 @@ function addCypressOnErrorWorkaround(tree, schema) {
|
|
43
44
|
}
|
44
45
|
return true;
|
45
46
|
});`;
|
46
|
-
const pathToCommandsFile = (0, devkit_1.joinPathFragments)(e2eProject
|
47
|
+
const pathToCommandsFile = (0, devkit_1.joinPathFragments)((0, ts_solution_setup_1.getProjectSourceRoot)(e2eProject, tree), 'support/e2e.ts');
|
47
48
|
const commandsContent = tree.exists(pathToCommandsFile)
|
48
49
|
? tree.read(pathToCommandsFile, 'utf-8')
|
49
50
|
: '';
|
@@ -4,8 +4,9 @@ exports.checkIsCommaNeeded = checkIsCommaNeeded;
|
|
4
4
|
exports.addRemoteToHost = addRemoteToHost;
|
5
5
|
const devkit_1 = require("@nx/devkit");
|
6
6
|
const js_1 = require("@nx/js");
|
7
|
-
const route_utils_1 = require("../../../utils/nx-devkit/route-utils");
|
8
7
|
const ensure_typescript_1 = require("@nx/js/src/utils/typescript/ensure-typescript");
|
8
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
9
|
+
const route_utils_1 = require("../../../utils/nx-devkit/route-utils");
|
9
10
|
let tsModule;
|
10
11
|
function checkIsCommaNeeded(mfRemoteText) {
|
11
12
|
const remoteText = mfRemoteText.replace(/\s+/g, '');
|
@@ -25,7 +26,7 @@ function addRemoteToHost(tree, options) {
|
|
25
26
|
addRemoteToStaticHost(tree, options, hostProject, isHostUsingTypescriptConfig);
|
26
27
|
}
|
27
28
|
else if (hostFederationType === 'dynamic') {
|
28
|
-
addRemoteToDynamicHost(tree, options, pathToMFManifest,
|
29
|
+
addRemoteToDynamicHost(tree, options, pathToMFManifest, (0, ts_solution_setup_1.getProjectSourceRoot)(hostProject, tree));
|
29
30
|
}
|
30
31
|
addLazyLoadedRouteToHostAppModule(tree, options, hostFederationType);
|
31
32
|
}
|
@@ -39,7 +40,7 @@ function getDynamicManifestFile(tree, project) {
|
|
39
40
|
// at the old path.
|
40
41
|
return [
|
41
42
|
(0, devkit_1.joinPathFragments)(project.root, 'public/module-federation.manifest.json'),
|
42
|
-
(0, devkit_1.joinPathFragments)(project
|
43
|
+
(0, devkit_1.joinPathFragments)((0, ts_solution_setup_1.getProjectSourceRoot)(project, tree), 'assets/module-federation.manifest.json'),
|
43
44
|
].find((path) => tree.exists(path));
|
44
45
|
}
|
45
46
|
function addRemoteToStaticHost(tree, options, hostProject, isHostUsingTypescript) {
|
@@ -75,7 +76,8 @@ function addLazyLoadedRouteToHostAppModule(tree, options, hostFederationType) {
|
|
75
76
|
tsModule = (0, ensure_typescript_1.ensureTypescript)();
|
76
77
|
}
|
77
78
|
const hostAppConfig = (0, devkit_1.readProjectConfiguration)(tree, options.host);
|
78
|
-
const
|
79
|
+
const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(hostAppConfig, tree);
|
80
|
+
const pathToHostRootRouting = `${sourceRoot}/app/app.routes.ts`;
|
79
81
|
if (!tree.exists(pathToHostRootRouting)) {
|
80
82
|
return;
|
81
83
|
}
|
@@ -84,7 +86,7 @@ function addLazyLoadedRouteToHostAppModule(tree, options, hostFederationType) {
|
|
84
86
|
// TODO(Colum): Remove for Nx 22
|
85
87
|
const usingLegacyDynamicFederation = hostFederationType === 'dynamic' &&
|
86
88
|
tree
|
87
|
-
.read(`${
|
89
|
+
.read(`${sourceRoot}/main.ts`, 'utf-8')
|
88
90
|
.includes('setRemoteDefinitions(');
|
89
91
|
if (hostFederationType === 'dynamic') {
|
90
92
|
sourceFile = (0, js_1.insertImport)(tree, sourceFile, pathToHostRootRouting, usingLegacyDynamicFederation ? 'loadRemoteModule' : 'loadRemote', usingLegacyDynamicFederation
|
@@ -105,10 +107,10 @@ function addLazyLoadedRouteToHostAppModule(tree, options, hostFederationType) {
|
|
105
107
|
path: '${options.appName}',
|
106
108
|
loadChildren: () => ${routeToAdd}.then(m => m!.${exportedRemote})
|
107
109
|
}`);
|
108
|
-
let pathToAppComponentTemplate = (0, devkit_1.joinPathFragments)(
|
110
|
+
let pathToAppComponentTemplate = (0, devkit_1.joinPathFragments)(sourceRoot, 'app/app.component.html');
|
109
111
|
const candidatePaths = [
|
110
112
|
pathToAppComponentTemplate,
|
111
|
-
(0, devkit_1.joinPathFragments)(
|
113
|
+
(0, devkit_1.joinPathFragments)(sourceRoot, 'app/app.html'),
|
112
114
|
];
|
113
115
|
for (const path of candidatePaths) {
|
114
116
|
if (tree.exists(path)) {
|
@@ -2,19 +2,21 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.removeDeadCodeFromRemote = removeDeadCodeFromRemote;
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
5
6
|
function removeDeadCodeFromRemote(tree, options) {
|
6
7
|
const projectName = options.appName;
|
7
8
|
const project = (0, devkit_1.readProjectConfiguration)(tree, projectName);
|
9
|
+
const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(project, tree);
|
8
10
|
const { appComponentInfo, nxWelcomeComponentInfo, entryModuleFileName } = options;
|
9
11
|
['css', 'less', 'scss', 'sass'].forEach((style) => {
|
10
|
-
const pathToComponentStyle = (0, devkit_1.joinPathFragments)(
|
12
|
+
const pathToComponentStyle = (0, devkit_1.joinPathFragments)(sourceRoot, `app/${appComponentInfo.extensionlessFileName}.${style}`);
|
11
13
|
if (tree.exists(pathToComponentStyle)) {
|
12
14
|
tree.delete(pathToComponentStyle);
|
13
15
|
}
|
14
16
|
});
|
15
|
-
tree.rename(nxWelcomeComponentInfo.path, (0, devkit_1.joinPathFragments)(
|
16
|
-
tree.delete((0, devkit_1.joinPathFragments)(
|
17
|
-
tree.delete((0, devkit_1.joinPathFragments)(
|
17
|
+
tree.rename(nxWelcomeComponentInfo.path, (0, devkit_1.joinPathFragments)(sourceRoot, `app/remote-entry/${nxWelcomeComponentInfo.fileName}`));
|
18
|
+
tree.delete((0, devkit_1.joinPathFragments)(sourceRoot, `app/${appComponentInfo.extensionlessFileName}.spec.ts`));
|
19
|
+
tree.delete((0, devkit_1.joinPathFragments)(sourceRoot, `app/${appComponentInfo.extensionlessFileName}.html`));
|
18
20
|
if (!options.standalone) {
|
19
21
|
const componentContents = tree.read(appComponentInfo.path, 'utf-8');
|
20
22
|
const isInlineTemplate = !componentContents.includes('templateUrl');
|
@@ -24,9 +26,9 @@ function removeDeadCodeFromRemote(tree, options) {
|
|
24
26
|
})
|
25
27
|
export class ${appComponentInfo.symbolName} {}`;
|
26
28
|
tree.write(appComponentInfo.path, component);
|
27
|
-
let modulePath = (0, devkit_1.joinPathFragments)(
|
29
|
+
let modulePath = (0, devkit_1.joinPathFragments)(sourceRoot, 'app/app.module.ts');
|
28
30
|
if (!tree.exists(modulePath)) {
|
29
|
-
modulePath = (0, devkit_1.joinPathFragments)(
|
31
|
+
modulePath = (0, devkit_1.joinPathFragments)(sourceRoot, 'app/app-module.ts');
|
30
32
|
}
|
31
33
|
tree.write(modulePath, `import { NgModule } from '@angular/core';
|
32
34
|
import { BrowserModule } from '@angular/platform-browser';
|
@@ -4,24 +4,26 @@ exports.addHydration = addHydration;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
5
|
const js_1 = require("@nx/js");
|
6
6
|
const ensure_typescript_1 = require("@nx/js/src/utils/typescript/ensure-typescript");
|
7
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
7
8
|
const ast_utils_1 = require("../../../utils/nx-devkit/ast-utils");
|
8
9
|
const version_utils_1 = require("../../utils/version-utils");
|
9
10
|
let tsModule;
|
10
11
|
let tsquery;
|
11
12
|
function addHydration(tree, options) {
|
12
13
|
const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
14
|
+
const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(projectConfig, tree);
|
13
15
|
if (!tsModule) {
|
14
16
|
tsModule = (0, ensure_typescript_1.ensureTypescript)();
|
15
17
|
tsquery = require('@phenomnomnominal/tsquery').tsquery;
|
16
18
|
}
|
17
19
|
let pathToClientConfigFile;
|
18
20
|
if (options.standalone) {
|
19
|
-
pathToClientConfigFile = (0, devkit_1.joinPathFragments)(
|
21
|
+
pathToClientConfigFile = (0, devkit_1.joinPathFragments)(sourceRoot, 'app/app.config.ts');
|
20
22
|
}
|
21
23
|
else {
|
22
|
-
pathToClientConfigFile = (0, devkit_1.joinPathFragments)(
|
24
|
+
pathToClientConfigFile = (0, devkit_1.joinPathFragments)(sourceRoot, 'app/app.module.ts');
|
23
25
|
if (!tree.exists(pathToClientConfigFile)) {
|
24
|
-
pathToClientConfigFile = (0, devkit_1.joinPathFragments)(
|
26
|
+
pathToClientConfigFile = (0, devkit_1.joinPathFragments)(sourceRoot, 'app/app-module.ts');
|
25
27
|
}
|
26
28
|
}
|
27
29
|
const sourceText = tree.read(pathToClientConfigFile, 'utf-8');
|
@@ -2,6 +2,7 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.addServerFile = addServerFile;
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
5
6
|
const path_1 = require("path");
|
6
7
|
const version_utils_1 = require("../../utils/version-utils");
|
7
8
|
const constants_1 = require("./constants");
|
@@ -30,7 +31,7 @@ function addServerFile(tree, options) {
|
|
30
31
|
? 'application-builder'
|
31
32
|
: 'server-builder');
|
32
33
|
}
|
33
|
-
const sourceRoot =
|
34
|
+
const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(project, tree);
|
34
35
|
(0, devkit_1.generateFiles)(tree, pathToFiles, angularMajorVersion >= 19 ? sourceRoot : project.root, {
|
35
36
|
...options,
|
36
37
|
browserDistDirectory,
|
@@ -2,6 +2,7 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.generateSSRFiles = generateSSRFiles;
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
5
6
|
const path_1 = require("path");
|
6
7
|
const semver_1 = require("semver");
|
7
8
|
const app_components_info_1 = require("../../utils/app-components-info");
|
@@ -31,7 +32,7 @@ function generateSSRFiles(tree, options) {
|
|
31
32
|
else {
|
32
33
|
pathToFiles = (0, path_1.join)(baseFilesPath, 'pre-v19', options.standalone ? 'standalone-src' : 'ngmodule-src');
|
33
34
|
}
|
34
|
-
const sourceRoot =
|
35
|
+
const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(project, tree);
|
35
36
|
const ssrVersion = (0, version_utils_1.getInstalledPackageVersion)(tree, '@angular/ssr');
|
36
37
|
const cleanedSsrVersion = ssrVersion
|
37
38
|
? (0, semver_1.clean)(ssrVersion) ?? (0, semver_1.coerce)(ssrVersion).version
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.updateProjectConfigForApplicationBuilder = updateProjectConfigForApplicationBuilder;
|
4
4
|
exports.updateProjectConfigForBrowserBuilder = updateProjectConfigForBrowserBuilder;
|
5
5
|
const devkit_1 = require("@nx/devkit");
|
6
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
6
7
|
const version_utils_1 = require("../../utils/version-utils");
|
7
8
|
const constants_1 = require("./constants");
|
8
9
|
function updateProjectConfigForApplicationBuilder(tree, options) {
|
@@ -29,7 +30,7 @@ function updateProjectConfigForApplicationBuilder(tree, options) {
|
|
29
30
|
}
|
30
31
|
}
|
31
32
|
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
32
|
-
const sourceRoot =
|
33
|
+
const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(project, tree);
|
33
34
|
buildTarget.options ??= {};
|
34
35
|
buildTarget.options.outputPath = outputPath;
|
35
36
|
buildTarget.options.server = (0, devkit_1.joinPathFragments)(sourceRoot, options.main);
|
@@ -65,7 +66,7 @@ function updateProjectConfigForBrowserBuilder(tree, options) {
|
|
65
66
|
}
|
66
67
|
}
|
67
68
|
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
68
|
-
const sourceRoot =
|
69
|
+
const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(projectConfig, tree);
|
69
70
|
projectConfig.targets.server = {
|
70
71
|
dependsOn: ['build'],
|
71
72
|
executor: buildTarget.executor.startsWith('@angular-devkit/build-angular:')
|
@@ -2,6 +2,7 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.addTailwindConfig = addTailwindConfig;
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
5
6
|
const path_1 = require("path");
|
6
7
|
function addTailwindConfig(tree, options, project, tailwindVersion) {
|
7
8
|
if (tree.exists((0, devkit_1.joinPathFragments)(project.root, 'tailwind.config.js'))) {
|
@@ -10,7 +11,7 @@ function addTailwindConfig(tree, options, project, tailwindVersion) {
|
|
10
11
|
}
|
11
12
|
const filesDir = tailwindVersion === '3' ? 'files/v3' : 'files/v2';
|
12
13
|
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, '..', filesDir), project.root, {
|
13
|
-
relativeSourceRoot: (0, path_1.relative)(project.root,
|
14
|
+
relativeSourceRoot: (0, path_1.relative)(project.root, (0, ts_solution_setup_1.getProjectSourceRoot)(project, tree)),
|
14
15
|
tmpl: '',
|
15
16
|
});
|
16
17
|
}
|
@@ -2,6 +2,7 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.updateApplicationStyles = updateApplicationStyles;
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
5
6
|
function updateApplicationStyles(tree, options, project) {
|
6
7
|
let stylesEntryPoint = options.stylesEntryPoint;
|
7
8
|
if (stylesEntryPoint && !tree.exists(stylesEntryPoint)) {
|
@@ -22,12 +23,13 @@ function updateApplicationStyles(tree, options, project) {
|
|
22
23
|
${stylesEntryPointContent}`);
|
23
24
|
}
|
24
25
|
function findStylesEntryPoint(tree, options, project) {
|
26
|
+
const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(project, tree);
|
25
27
|
// first check for common names
|
26
28
|
const possibleStylesEntryPoints = [
|
27
|
-
(0, devkit_1.joinPathFragments)(
|
28
|
-
(0, devkit_1.joinPathFragments)(
|
29
|
-
(0, devkit_1.joinPathFragments)(
|
30
|
-
(0, devkit_1.joinPathFragments)(
|
29
|
+
(0, devkit_1.joinPathFragments)(sourceRoot, 'styles.css'),
|
30
|
+
(0, devkit_1.joinPathFragments)(sourceRoot, 'styles.scss'),
|
31
|
+
(0, devkit_1.joinPathFragments)(sourceRoot, 'styles.sass'),
|
32
|
+
(0, devkit_1.joinPathFragments)(sourceRoot, 'styles.less'),
|
31
33
|
];
|
32
34
|
let stylesEntryPoint = possibleStylesEntryPoints.find((s) => tree.exists(s));
|
33
35
|
if (stylesEntryPoint) {
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getAppComponentInfo = getAppComponentInfo;
|
4
4
|
exports.getNxWelcomeComponentInfo = getNxWelcomeComponentInfo;
|
5
5
|
const devkit_1 = require("@nx/devkit");
|
6
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
6
7
|
const node_path_1 = require("node:path");
|
7
8
|
const version_utils_1 = require("./version-utils");
|
8
9
|
function getAppComponentInfo(tree, componentFileSuffix, project) {
|
@@ -13,18 +14,19 @@ function getNxWelcomeComponentInfo(tree, componentFileSuffix, project) {
|
|
13
14
|
}
|
14
15
|
// TODO(leo): follow this up and improve it by using static analysis
|
15
16
|
function getComponentInfo(tree, component, componentFileSuffix, project) {
|
16
|
-
|
17
|
+
const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(project, tree);
|
18
|
+
let componentPath = (0, devkit_1.joinPathFragments)(sourceRoot, `app/${component}.component.ts`);
|
17
19
|
if (!tree.exists(componentPath)) {
|
18
|
-
componentPath = (0, devkit_1.joinPathFragments)(
|
20
|
+
componentPath = (0, devkit_1.joinPathFragments)(sourceRoot, `app/${component}.ts`);
|
19
21
|
}
|
20
22
|
if (!tree.exists(componentPath)) {
|
21
23
|
if (componentFileSuffix) {
|
22
|
-
componentPath = (0, devkit_1.joinPathFragments)(
|
24
|
+
componentPath = (0, devkit_1.joinPathFragments)(sourceRoot, `app/${component}${componentFileSuffix}.ts`);
|
23
25
|
}
|
24
26
|
}
|
25
27
|
if (!tree.exists(componentPath)) {
|
26
28
|
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
27
|
-
componentPath = (0, devkit_1.joinPathFragments)(
|
29
|
+
componentPath = (0, devkit_1.joinPathFragments)(sourceRoot, angularMajorVersion >= 20
|
28
30
|
? `app/${component}.ts`
|
29
31
|
: `app/${component}.component.ts`);
|
30
32
|
}
|
@@ -7,6 +7,7 @@ exports.generateTestLibrary = generateTestLibrary;
|
|
7
7
|
exports.createStorybookTestWorkspaceForLib = createStorybookTestWorkspaceForLib;
|
8
8
|
const devkit_1 = require("@nx/devkit");
|
9
9
|
const testing_1 = require("@nx/devkit/testing");
|
10
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
10
11
|
const test_runners_1 = require("../../utils/test-runners");
|
11
12
|
const application_1 = require("../application/application");
|
12
13
|
const component_1 = require("../component/component");
|
@@ -226,7 +227,7 @@ export class StaticMemberDeclarationsModule {
|
|
226
227
|
function generateModule(tree, options) {
|
227
228
|
const project = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
228
229
|
if (options.path === undefined) {
|
229
|
-
const sourceRoot = project
|
230
|
+
const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(project, tree);
|
230
231
|
const projectDirName = project.projectType === 'application' ? 'app' : 'lib';
|
231
232
|
options.path = `${sourceRoot}/${projectDirName}`;
|
232
233
|
}
|
@@ -6,6 +6,7 @@ const path_1 = require("path");
|
|
6
6
|
const version_utils_1 = require("../../generators/utils/version-utils");
|
7
7
|
const targets_1 = require("../../utils/targets");
|
8
8
|
const projects_1 = require("../utils/projects");
|
9
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
9
10
|
const UNIVERSAL_PACKAGES = [
|
10
11
|
'@nguniversal/common',
|
11
12
|
'@nguniversal/express-engine',
|
@@ -50,7 +51,7 @@ async function default_1(tree) {
|
|
50
51
|
}
|
51
52
|
// Replace all import specifiers in all files.
|
52
53
|
let hasExpressTokens = false;
|
53
|
-
const root = project
|
54
|
+
const root = (0, ts_solution_setup_1.getProjectSourceRoot)(project, tree);
|
54
55
|
const tokensFilePath = `${root}/express.tokens.ts`;
|
55
56
|
(0, devkit_1.visitNotIgnoredFiles)(tree, root, (path) => {
|
56
57
|
if (!path.endsWith('.ts') || path.endsWith('.d.ts')) {
|
@@ -26,6 +26,7 @@ exports.getTsSourceFile = getTsSourceFile;
|
|
26
26
|
const devkit_1 = require("@nx/devkit");
|
27
27
|
const js_1 = require("@nx/js");
|
28
28
|
const ensure_typescript_1 = require("@nx/js/src/utils/typescript/ensure-typescript");
|
29
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
29
30
|
const path_1 = require("path");
|
30
31
|
const angular_version_utils_1 = require("../../executors/utilities/angular-version-utils");
|
31
32
|
const version_utils_1 = require("../../generators/utils/version-utils");
|
@@ -451,7 +452,7 @@ function isNgStandaloneApp(tree, projectName) {
|
|
451
452
|
hasMainFile = true;
|
452
453
|
}
|
453
454
|
else {
|
454
|
-
const sourceRoot =
|
455
|
+
const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(project, tree);
|
455
456
|
mainFile = (0, devkit_1.joinPathFragments)(sourceRoot, 'main.ts');
|
456
457
|
hasMainFile = tree.exists(mainFile);
|
457
458
|
}
|
@@ -560,7 +561,7 @@ function readBootstrapInfo(host, app) {
|
|
560
561
|
config.targets.build.options?.main ??
|
561
562
|
config.targets.build.options?.browser;
|
562
563
|
if (!mainPath) {
|
563
|
-
const sourceRoot =
|
564
|
+
const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(config, host);
|
564
565
|
mainPath = (0, devkit_1.joinPathFragments)(sourceRoot, 'main.ts');
|
565
566
|
}
|
566
567
|
}
|
package/src/utils/versions.d.ts
CHANGED
@@ -14,7 +14,7 @@ export declare const expressVersion = "^4.21.2";
|
|
14
14
|
export declare const typesExpressVersion = "^4.17.21";
|
15
15
|
export declare const browserSyncVersion = "^3.0.0";
|
16
16
|
export declare const moduleFederationNodeVersion = "^2.6.26";
|
17
|
-
export declare const moduleFederationEnhancedVersion = "^0.
|
17
|
+
export declare const moduleFederationEnhancedVersion = "^0.15.0";
|
18
18
|
export declare const webpackMergeVersion = "^5.8.0";
|
19
19
|
export declare const angularEslintVersion = "^20.0.0";
|
20
20
|
export declare const typescriptEslintVersion = "^7.16.0";
|
package/src/utils/versions.js
CHANGED
@@ -17,7 +17,7 @@ exports.expressVersion = '^4.21.2';
|
|
17
17
|
exports.typesExpressVersion = '^4.17.21';
|
18
18
|
exports.browserSyncVersion = '^3.0.0';
|
19
19
|
exports.moduleFederationNodeVersion = '^2.6.26';
|
20
|
-
exports.moduleFederationEnhancedVersion = '^0.
|
20
|
+
exports.moduleFederationEnhancedVersion = '^0.15.0';
|
21
21
|
exports.webpackMergeVersion = '^5.8.0';
|
22
22
|
exports.angularEslintVersion = '^20.0.0';
|
23
23
|
exports.typescriptEslintVersion = '^7.16.0';
|