@nrwl/angular 13.9.3 → 13.10.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/esm2020/mfe/index.mjs +2 -0
  2. package/esm2020/mfe/mfe.mjs +45 -0
  3. package/esm2020/mfe/nrwl-angular-mfe.mjs +5 -0
  4. package/executors.json +4 -4
  5. package/fesm2015/nrwl-angular-mfe.mjs +57 -0
  6. package/fesm2015/nrwl-angular-mfe.mjs.map +1 -0
  7. package/fesm2020/nrwl-angular-mfe.mjs +51 -0
  8. package/fesm2020/nrwl-angular-mfe.mjs.map +1 -0
  9. package/generators.json +32 -2
  10. package/mfe/index.d.ts +1 -0
  11. package/mfe/index.js +7 -0
  12. package/mfe/index.js.map +1 -0
  13. package/mfe/mfe.d.ts +4 -0
  14. package/mfe/mfe.js +56 -0
  15. package/mfe/mfe.js.map +1 -0
  16. package/mfe/ng-package.json +6 -0
  17. package/mfe/nrwl-angular-mfe.d.ts +5 -0
  18. package/mfe/package.json +10 -0
  19. package/migrations.json +89 -0
  20. package/module-federation/index.d.ts +1 -0
  21. package/module-federation/index.js +6 -0
  22. package/module-federation/index.js.map +1 -0
  23. package/package.json +17 -8
  24. package/scripts/nx-cli-warning.js +1 -1
  25. package/src/builders/webpack-browser/schema.json +3 -2
  26. package/src/builders/webpack-browser/webpack-browser.impl.js +10 -10
  27. package/src/builders/webpack-browser/webpack-browser.impl.js.map +1 -1
  28. package/src/builders/webpack-server/schema.json +3 -2
  29. package/src/builders/webpack-server/webpack-server.impl.js +8 -9
  30. package/src/builders/webpack-server/webpack-server.impl.js.map +1 -1
  31. package/src/executors/delegate-build/delegate-build.impl.js +2 -2
  32. package/src/executors/delegate-build/delegate-build.impl.js.map +1 -1
  33. package/src/executors/package/package.impl.js +4 -4
  34. package/src/executors/package/package.impl.js.map +1 -1
  35. package/src/executors/utilities/tailwindcss.js +3 -3
  36. package/src/executors/utilities/tailwindcss.js.map +1 -1
  37. package/src/generators/component/component.compat.d.ts +2 -0
  38. package/src/generators/component/component.compat.js +6 -0
  39. package/src/generators/component/component.compat.js.map +1 -0
  40. package/src/generators/component/component.d.ts +4 -0
  41. package/src/generators/component/component.js +78 -0
  42. package/src/generators/component/component.js.map +1 -0
  43. package/src/generators/component/schema.d.ts +17 -0
  44. package/src/generators/component/schema.json +101 -0
  45. package/src/generators/convert-to-with-mf/convert-to-with-mf.compat.d.ts +2 -0
  46. package/src/generators/convert-to-with-mf/convert-to-with-mf.compat.js +6 -0
  47. package/src/generators/convert-to-with-mf/convert-to-with-mf.compat.js.map +1 -0
  48. package/src/generators/convert-to-with-mf/convert-to-with-mf.d.ts +3 -0
  49. package/src/generators/convert-to-with-mf/convert-to-with-mf.js +32 -0
  50. package/src/generators/convert-to-with-mf/convert-to-with-mf.js.map +1 -0
  51. package/src/generators/convert-to-with-mf/convert-to-with-mf.test-data.d.ts +5 -0
  52. package/src/generators/convert-to-with-mf/convert-to-with-mf.test-data.js +449 -0
  53. package/src/generators/convert-to-with-mf/convert-to-with-mf.test-data.js.map +1 -0
  54. package/src/generators/convert-to-with-mf/lib/check-name-matches.d.ts +2 -0
  55. package/src/generators/convert-to-with-mf/lib/check-name-matches.js +24 -0
  56. package/src/generators/convert-to-with-mf/lib/check-name-matches.js.map +1 -0
  57. package/src/generators/convert-to-with-mf/lib/check-shared-npm-packages.d.ts +2 -0
  58. package/src/generators/convert-to-with-mf/lib/check-shared-npm-packages.js +49 -0
  59. package/src/generators/convert-to-with-mf/lib/check-shared-npm-packages.js.map +1 -0
  60. package/src/generators/convert-to-with-mf/lib/get-webpack-config-path.d.ts +2 -0
  61. package/src/generators/convert-to-with-mf/lib/get-webpack-config-path.js +20 -0
  62. package/src/generators/convert-to-with-mf/lib/get-webpack-config-path.js.map +1 -0
  63. package/src/generators/convert-to-with-mf/lib/index.d.ts +6 -0
  64. package/src/generators/convert-to-with-mf/lib/index.js +10 -0
  65. package/src/generators/convert-to-with-mf/lib/index.js.map +1 -0
  66. package/src/generators/convert-to-with-mf/lib/is-host-remote-config.d.ts +5 -0
  67. package/src/generators/convert-to-with-mf/lib/is-host-remote-config.js +63 -0
  68. package/src/generators/convert-to-with-mf/lib/is-host-remote-config.js.map +1 -0
  69. package/src/generators/convert-to-with-mf/lib/parse-ast-webpack-config.d.ts +2 -0
  70. package/src/generators/convert-to-with-mf/lib/parse-ast-webpack-config.js +13 -0
  71. package/src/generators/convert-to-with-mf/lib/parse-ast-webpack-config.js.map +1 -0
  72. package/src/generators/convert-to-with-mf/lib/write-new-webpack-config.d.ts +3 -0
  73. package/src/generators/convert-to-with-mf/lib/write-new-webpack-config.js +48 -0
  74. package/src/generators/convert-to-with-mf/lib/write-new-webpack-config.js.map +1 -0
  75. package/src/generators/convert-to-with-mf/schema.d.ts +3 -0
  76. package/src/generators/convert-to-with-mf/schema.json +20 -0
  77. package/src/generators/init/init.d.ts +1 -1
  78. package/src/generators/init/init.js +15 -1
  79. package/src/generators/init/init.js.map +1 -1
  80. package/src/generators/init/schema.d.ts +2 -2
  81. package/src/generators/init/schema.json +5 -0
  82. package/src/generators/mfe-host/schema.json +1 -1
  83. package/src/generators/mfe-remote/mfe-remote.js +14 -1
  84. package/src/generators/mfe-remote/mfe-remote.js.map +1 -1
  85. package/src/generators/mfe-remote/schema.json +1 -1
  86. package/src/generators/move/lib/update-ng-package.js +2 -2
  87. package/src/generators/move/lib/update-ng-package.js.map +1 -1
  88. package/src/generators/ng-add/compat.d.ts +2 -0
  89. package/src/generators/ng-add/compat.js +6 -0
  90. package/src/generators/ng-add/compat.js.map +1 -0
  91. package/src/generators/ng-add/files/decorate-angular-cli/decorate-angular-cli.js__tmpl__ +69 -0
  92. package/src/generators/ng-add/files/prettier/__dot__prettierignore +1 -0
  93. package/src/generators/ng-add/files/root/karma.conf.js__tmpl__ +43 -0
  94. package/src/generators/ng-add/files/root/libs/__dot__gitkeep +0 -0
  95. package/src/generators/ng-add/files/root/nx.json__tmpl__ +29 -0
  96. package/src/generators/ng-add/files/root/tools/schematics/__dot__gitkeep +0 -0
  97. package/src/generators/ng-add/files/root/tools/tsconfig.tools.json__tmpl__ +12 -0
  98. package/src/generators/ng-add/migrate-from-angular-cli.d.ts +3 -0
  99. package/src/generators/ng-add/migrate-from-angular-cli.js +627 -0
  100. package/src/generators/ng-add/migrate-from-angular-cli.js.map +1 -0
  101. package/src/generators/ng-add/ng-add.d.ts +4 -0
  102. package/src/generators/ng-add/ng-add.js +20 -0
  103. package/src/generators/ng-add/ng-add.js.map +1 -0
  104. package/src/generators/ng-add/schema.d.ts +19 -0
  105. package/src/generators/ng-add/schema.json +71 -0
  106. package/src/generators/scam/lib/create-module.js +1 -1
  107. package/src/generators/scam/lib/create-module.js.map +1 -1
  108. package/src/generators/scam/scam.js +2 -2
  109. package/src/generators/scam/scam.js.map +1 -1
  110. package/src/generators/scam-directive/lib/create-module.js +1 -1
  111. package/src/generators/scam-directive/lib/create-module.js.map +1 -1
  112. package/src/generators/scam-directive/scam-directive.js +2 -2
  113. package/src/generators/scam-directive/scam-directive.js.map +1 -1
  114. package/src/generators/scam-pipe/lib/create-module.js +1 -1
  115. package/src/generators/scam-pipe/lib/create-module.js.map +1 -1
  116. package/src/generators/scam-pipe/scam-pipe.js +2 -2
  117. package/src/generators/scam-pipe/scam-pipe.js.map +1 -1
  118. package/src/generators/setup-mfe/files/webpack/webpack.config.js__tmpl__ +8 -59
  119. package/src/generators/setup-mfe/lib/add-remote-to-host.d.ts +1 -0
  120. package/src/generators/setup-mfe/lib/add-remote-to-host.js +15 -6
  121. package/src/generators/setup-mfe/lib/add-remote-to-host.js.map +1 -1
  122. package/src/generators/setup-mfe/lib/generate-config.js +1 -12
  123. package/src/generators/setup-mfe/lib/generate-config.js.map +1 -1
  124. package/src/generators/setup-mfe/setup-mfe.d.ts +2 -2
  125. package/src/generators/setup-mfe/setup-mfe.js +0 -9
  126. package/src/generators/setup-mfe/setup-mfe.js.map +1 -1
  127. package/src/generators/utils/path.d.ts +1 -0
  128. package/src/generators/utils/path.js +11 -0
  129. package/src/generators/utils/path.js.map +1 -0
  130. package/src/migrations/update-10-5-0/add-template-support-and-presets-to-eslint.js +2 -2
  131. package/src/migrations/update-10-5-0/add-template-support-and-presets-to-eslint.js.map +1 -1
  132. package/src/utils/get-mfe-projects.d.ts +3 -1
  133. package/src/utils/get-mfe-projects.js +5 -2
  134. package/src/utils/get-mfe-projects.js.map +1 -1
  135. package/src/utils/mfe/mfe-webpack.d.ts +17 -0
  136. package/src/utils/{mfe-webpack.js → mfe/mfe-webpack.js} +8 -8
  137. package/src/utils/mfe/mfe-webpack.js.map +1 -0
  138. package/src/utils/mfe/with-module-federation.d.ts +9 -0
  139. package/src/utils/mfe/with-module-federation.js +153 -0
  140. package/src/utils/mfe/with-module-federation.js.map +1 -0
  141. package/src/utils/versions.d.ts +3 -4
  142. package/src/utils/versions.js +5 -6
  143. package/src/utils/versions.js.map +1 -1
  144. package/src/utils/mfe-webpack.d.ts +0 -7
  145. package/src/utils/mfe-webpack.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ export { setRemoteUrlResolver, loadRemoteModule } from './mfe';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9tZmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgc2V0UmVtb3RlVXJsUmVzb2x2ZXIsIGxvYWRSZW1vdGVNb2R1bGUgfSBmcm9tICcuL21mZSc7XG4iXX0=
@@ -0,0 +1,45 @@
1
+ let resolveRemoteUrl;
2
+ export function setRemoteUrlResolver(_resolveRemoteUrl) {
3
+ resolveRemoteUrl = _resolveRemoteUrl;
4
+ }
5
+ let remoteUrlDefinitions;
6
+ export function setRemoteDefinitions(definitions) {
7
+ remoteUrlDefinitions = definitions;
8
+ }
9
+ let remoteModuleMap = new Map();
10
+ let remoteContainerMap = new Map();
11
+ export async function loadRemoteModule(remoteName, moduleName) {
12
+ const remoteModuleKey = `${remoteName}:${moduleName}`;
13
+ if (remoteModuleMap.has(remoteModuleKey)) {
14
+ return remoteModuleMap.get(remoteModuleKey);
15
+ }
16
+ const container = remoteContainerMap.has(remoteName)
17
+ ? remoteContainerMap.get(remoteName)
18
+ : await loadRemoteContainer(remoteName);
19
+ const factory = await container.get(moduleName);
20
+ const Module = factory();
21
+ remoteModuleMap.set(remoteModuleKey, Module);
22
+ return Module;
23
+ }
24
+ function loadModule(url) {
25
+ return import(/* webpackIgnore:true */ url);
26
+ }
27
+ let initialSharingScopeCreated = false;
28
+ async function loadRemoteContainer(remoteName) {
29
+ if (!resolveRemoteUrl && !remoteUrlDefinitions) {
30
+ throw new Error('Call setRemoteDefinitions or setRemoteUrlResolver to allow Dynamic Federation to find the remote apps correctly.');
31
+ }
32
+ if (!initialSharingScopeCreated) {
33
+ initialSharingScopeCreated = true;
34
+ await __webpack_init_sharing__('default');
35
+ }
36
+ const remoteUrl = remoteUrlDefinitions
37
+ ? remoteUrlDefinitions[remoteName]
38
+ : await resolveRemoteUrl(remoteName);
39
+ const containerUrl = `${remoteUrl}${remoteUrl.endsWith('/') ? '' : '/'}remoteEntry.mjs`;
40
+ const container = await loadModule(containerUrl);
41
+ await container.init(__webpack_share_scopes__.default);
42
+ remoteContainerMap.set(remoteName, container);
43
+ return container;
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbWZlL21mZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxJQUFJLGdCQUEwQyxDQUFDO0FBQy9DLE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsaUJBQTJDO0lBRTNDLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDO0FBQ3ZDLENBQUM7QUFFRCxJQUFJLG9CQUE0QyxDQUFDO0FBQ2pELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxXQUFtQztJQUN0RSxvQkFBb0IsR0FBRyxXQUFXLENBQUM7QUFDckMsQ0FBQztBQUVELElBQUksZUFBZSxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO0FBQ2pELElBQUksa0JBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7QUFDcEQsTUFBTSxDQUFDLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxVQUFrQixFQUFFLFVBQWtCO0lBQzNFLE1BQU0sZUFBZSxHQUFHLEdBQUcsVUFBVSxJQUFJLFVBQVUsRUFBRSxDQUFDO0lBQ3RELElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRTtRQUN4QyxPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7S0FDN0M7SUFFRCxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQ2xELENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxNQUFNLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTFDLE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoRCxNQUFNLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQztJQUV6QixlQUFlLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUU3QyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsR0FBVztJQUM3QixPQUFPLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQsSUFBSSwwQkFBMEIsR0FBRyxLQUFLLENBQUM7QUFDdkMsS0FBSyxVQUFVLG1CQUFtQixDQUFDLFVBQWtCO0lBQ25ELElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1FBQzlDLE1BQU0sSUFBSSxLQUFLLENBQ2Isa0hBQWtILENBQ25ILENBQUM7S0FDSDtJQUVELElBQUksQ0FBQywwQkFBMEIsRUFBRTtRQUMvQiwwQkFBMEIsR0FBRyxJQUFJLENBQUM7UUFDbEMsTUFBTSx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUMzQztJQUVELE1BQU0sU0FBUyxHQUFHLG9CQUFvQjtRQUNwQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxNQUFNLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXZDLE1BQU0sWUFBWSxHQUFHLEdBQUcsU0FBUyxHQUMvQixTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQ2pDLGlCQUFpQixDQUFDO0lBRWxCLE1BQU0sU0FBUyxHQUFHLE1BQU0sVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2pELE1BQU0sU0FBUyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUV2RCxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBSZXNvbHZlUmVtb3RlVXJsRnVuY3Rpb24gPSAoXG4gIHJlbW90ZU5hbWU6IHN0cmluZ1xuKSA9PiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz47XG5cbmRlY2xhcmUgY29uc3QgX193ZWJwYWNrX2luaXRfc2hhcmluZ19fOiAoc2NvcGU6ICdkZWZhdWx0JykgPT4gUHJvbWlzZTx2b2lkPjtcbmRlY2xhcmUgY29uc3QgX193ZWJwYWNrX3NoYXJlX3Njb3Blc19fOiB7IGRlZmF1bHQ6IHVua25vd24gfTtcblxubGV0IHJlc29sdmVSZW1vdGVVcmw6IFJlc29sdmVSZW1vdGVVcmxGdW5jdGlvbjtcbmV4cG9ydCBmdW5jdGlvbiBzZXRSZW1vdGVVcmxSZXNvbHZlcihcbiAgX3Jlc29sdmVSZW1vdGVVcmw6IFJlc29sdmVSZW1vdGVVcmxGdW5jdGlvblxuKSB7XG4gIHJlc29sdmVSZW1vdGVVcmwgPSBfcmVzb2x2ZVJlbW90ZVVybDtcbn1cblxubGV0IHJlbW90ZVVybERlZmluaXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuZXhwb3J0IGZ1bmN0aW9uIHNldFJlbW90ZURlZmluaXRpb25zKGRlZmluaXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG4gIHJlbW90ZVVybERlZmluaXRpb25zID0gZGVmaW5pdGlvbnM7XG59XG5cbmxldCByZW1vdGVNb2R1bGVNYXAgPSBuZXcgTWFwPHN0cmluZywgdW5rbm93bj4oKTtcbmxldCByZW1vdGVDb250YWluZXJNYXAgPSBuZXcgTWFwPHN0cmluZywgdW5rbm93bj4oKTtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkUmVtb3RlTW9kdWxlKHJlbW90ZU5hbWU6IHN0cmluZywgbW9kdWxlTmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IHJlbW90ZU1vZHVsZUtleSA9IGAke3JlbW90ZU5hbWV9OiR7bW9kdWxlTmFtZX1gO1xuICBpZiAocmVtb3RlTW9kdWxlTWFwLmhhcyhyZW1vdGVNb2R1bGVLZXkpKSB7XG4gICAgcmV0dXJuIHJlbW90ZU1vZHVsZU1hcC5nZXQocmVtb3RlTW9kdWxlS2V5KTtcbiAgfVxuXG4gIGNvbnN0IGNvbnRhaW5lciA9IHJlbW90ZUNvbnRhaW5lck1hcC5oYXMocmVtb3RlTmFtZSlcbiAgICA/IHJlbW90ZUNvbnRhaW5lck1hcC5nZXQocmVtb3RlTmFtZSlcbiAgICA6IGF3YWl0IGxvYWRSZW1vdGVDb250YWluZXIocmVtb3RlTmFtZSk7XG5cbiAgY29uc3QgZmFjdG9yeSA9IGF3YWl0IGNvbnRhaW5lci5nZXQobW9kdWxlTmFtZSk7XG4gIGNvbnN0IE1vZHVsZSA9IGZhY3RvcnkoKTtcblxuICByZW1vdGVNb2R1bGVNYXAuc2V0KHJlbW90ZU1vZHVsZUtleSwgTW9kdWxlKTtcblxuICByZXR1cm4gTW9kdWxlO1xufVxuXG5mdW5jdGlvbiBsb2FkTW9kdWxlKHVybDogc3RyaW5nKSB7XG4gIHJldHVybiBpbXBvcnQoLyogd2VicGFja0lnbm9yZTp0cnVlICovIHVybCk7XG59XG5cbmxldCBpbml0aWFsU2hhcmluZ1Njb3BlQ3JlYXRlZCA9IGZhbHNlO1xuYXN5bmMgZnVuY3Rpb24gbG9hZFJlbW90ZUNvbnRhaW5lcihyZW1vdGVOYW1lOiBzdHJpbmcpIHtcbiAgaWYgKCFyZXNvbHZlUmVtb3RlVXJsICYmICFyZW1vdGVVcmxEZWZpbml0aW9ucykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdDYWxsIHNldFJlbW90ZURlZmluaXRpb25zIG9yIHNldFJlbW90ZVVybFJlc29sdmVyIHRvIGFsbG93IER5bmFtaWMgRmVkZXJhdGlvbiB0byBmaW5kIHRoZSByZW1vdGUgYXBwcyBjb3JyZWN0bHkuJ1xuICAgICk7XG4gIH1cblxuICBpZiAoIWluaXRpYWxTaGFyaW5nU2NvcGVDcmVhdGVkKSB7XG4gICAgaW5pdGlhbFNoYXJpbmdTY29wZUNyZWF0ZWQgPSB0cnVlO1xuICAgIGF3YWl0IF9fd2VicGFja19pbml0X3NoYXJpbmdfXygnZGVmYXVsdCcpO1xuICB9XG5cbiAgY29uc3QgcmVtb3RlVXJsID0gcmVtb3RlVXJsRGVmaW5pdGlvbnNcbiAgICA/IHJlbW90ZVVybERlZmluaXRpb25zW3JlbW90ZU5hbWVdXG4gICAgOiBhd2FpdCByZXNvbHZlUmVtb3RlVXJsKHJlbW90ZU5hbWUpO1xuXG4gIGNvbnN0IGNvbnRhaW5lclVybCA9IGAke3JlbW90ZVVybH0ke1xuICAgIHJlbW90ZVVybC5lbmRzV2l0aCgnLycpID8gJycgOiAnLydcbiAgfXJlbW90ZUVudHJ5Lm1qc2A7XG5cbiAgY29uc3QgY29udGFpbmVyID0gYXdhaXQgbG9hZE1vZHVsZShjb250YWluZXJVcmwpO1xuICBhd2FpdCBjb250YWluZXIuaW5pdChfX3dlYnBhY2tfc2hhcmVfc2NvcGVzX18uZGVmYXVsdCk7XG5cbiAgcmVtb3RlQ29udGFpbmVyTWFwLnNldChyZW1vdGVOYW1lLCBjb250YWluZXIpO1xuICByZXR1cm4gY29udGFpbmVyO1xufVxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnJ3bC1hbmd1bGFyLW1mZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL21mZS9ucndsLWFuZ3VsYXItbWZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
package/executors.json CHANGED
@@ -18,12 +18,12 @@
18
18
  "webpack-browser": {
19
19
  "implementation": "./src/builders/webpack-browser/webpack-browser.impl",
20
20
  "schema": "./src/builders/webpack-browser/schema.json",
21
- "description": "Builds a browser application with support for incremental builds and custom webpack configuration."
21
+ "description": "The webpack-browser executor is very similar to the standard browser builder provided by the Angular Devkit. It allows you to build your Angular application to a build artifact that can be hosted online. There are some key differences: \n- Supports Custom Webpack Configurations \n- Supports Incremental Building"
22
22
  },
23
23
  "webpack-server": {
24
24
  "implementation": "./src/builders/webpack-server/webpack-server.impl",
25
25
  "schema": "./src/builders/webpack-server/schema.json",
26
- "description": "Serves a browser application with support for a custom webpack configuration."
26
+ "description": "The webpack-server executor is very similar to the standard dev server builder provided by the Angular Devkit. It is usually used in tandem with `@nrwl/angular:webpack-browser` when your Angular application uses a custom webpack configuration."
27
27
  }
28
28
  },
29
29
  "builders": {
@@ -45,12 +45,12 @@
45
45
  "webpack-browser": {
46
46
  "implementation": "./src/builders/webpack-browser/webpack-browser.impl",
47
47
  "schema": "./src/builders/webpack-browser/schema.json",
48
- "description": "Builds a browser application with support for incremental builds and custom webpack configuration."
48
+ "description": "The webpack-browser executor is very similar to the standard browser builder provided by the Angular Devkit. It allows you to build your Angular application to a build artifact that can be hosted online. There are some key differences: \n- Supports Custom Webpack Configurations \n- Supports Incremental Building"
49
49
  },
50
50
  "webpack-server": {
51
51
  "implementation": "./src/builders/webpack-server/webpack-server.impl",
52
52
  "schema": "./src/builders/webpack-server/schema.json",
53
- "description": "Serves a browser application with support for a custom webpack configuration."
53
+ "description": "The webpack-server executor is very similar to the standard dev server builder provided by the Angular Devkit. It is usually used in tandem with `@nrwl/angular:webpack-browser` when your Angular application uses a custom webpack configuration."
54
54
  }
55
55
  }
56
56
  }
@@ -0,0 +1,57 @@
1
+ import { __awaiter } from 'tslib';
2
+
3
+ let resolveRemoteUrl;
4
+ function setRemoteUrlResolver(_resolveRemoteUrl) {
5
+ resolveRemoteUrl = _resolveRemoteUrl;
6
+ }
7
+ let remoteUrlDefinitions;
8
+ function setRemoteDefinitions(definitions) {
9
+ remoteUrlDefinitions = definitions;
10
+ }
11
+ let remoteModuleMap = new Map();
12
+ let remoteContainerMap = new Map();
13
+ function loadRemoteModule(remoteName, moduleName) {
14
+ return __awaiter(this, void 0, void 0, function* () {
15
+ const remoteModuleKey = `${remoteName}:${moduleName}`;
16
+ if (remoteModuleMap.has(remoteModuleKey)) {
17
+ return remoteModuleMap.get(remoteModuleKey);
18
+ }
19
+ const container = remoteContainerMap.has(remoteName)
20
+ ? remoteContainerMap.get(remoteName)
21
+ : yield loadRemoteContainer(remoteName);
22
+ const factory = yield container.get(moduleName);
23
+ const Module = factory();
24
+ remoteModuleMap.set(remoteModuleKey, Module);
25
+ return Module;
26
+ });
27
+ }
28
+ function loadModule(url) {
29
+ return import(/* webpackIgnore:true */ url);
30
+ }
31
+ let initialSharingScopeCreated = false;
32
+ function loadRemoteContainer(remoteName) {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ if (!resolveRemoteUrl && !remoteUrlDefinitions) {
35
+ throw new Error('Call setRemoteDefinitions or setRemoteUrlResolver to allow Dynamic Federation to find the remote apps correctly.');
36
+ }
37
+ if (!initialSharingScopeCreated) {
38
+ initialSharingScopeCreated = true;
39
+ yield __webpack_init_sharing__('default');
40
+ }
41
+ const remoteUrl = remoteUrlDefinitions
42
+ ? remoteUrlDefinitions[remoteName]
43
+ : yield resolveRemoteUrl(remoteName);
44
+ const containerUrl = `${remoteUrl}${remoteUrl.endsWith('/') ? '' : '/'}remoteEntry.mjs`;
45
+ const container = yield loadModule(containerUrl);
46
+ yield container.init(__webpack_share_scopes__.default);
47
+ remoteContainerMap.set(remoteName, container);
48
+ return container;
49
+ });
50
+ }
51
+
52
+ /**
53
+ * Generated bundle index. Do not edit.
54
+ */
55
+
56
+ export { loadRemoteModule, setRemoteUrlResolver };
57
+ //# sourceMappingURL=nrwl-angular-mfe.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nrwl-angular-mfe.mjs","sources":["../../mfe/mfe.ts","../../mfe/nrwl-angular-mfe.ts"],"sourcesContent":["export type ResolveRemoteUrlFunction = (\n remoteName: string\n) => string | Promise<string>;\n\ndeclare const __webpack_init_sharing__: (scope: 'default') => Promise<void>;\ndeclare const __webpack_share_scopes__: { default: unknown };\n\nlet resolveRemoteUrl: ResolveRemoteUrlFunction;\nexport function setRemoteUrlResolver(\n _resolveRemoteUrl: ResolveRemoteUrlFunction\n) {\n resolveRemoteUrl = _resolveRemoteUrl;\n}\n\nlet remoteUrlDefinitions: Record<string, string>;\nexport function setRemoteDefinitions(definitions: Record<string, string>) {\n remoteUrlDefinitions = definitions;\n}\n\nlet remoteModuleMap = new Map<string, unknown>();\nlet remoteContainerMap = new Map<string, unknown>();\nexport async function loadRemoteModule(remoteName: string, moduleName: string) {\n const remoteModuleKey = `${remoteName}:${moduleName}`;\n if (remoteModuleMap.has(remoteModuleKey)) {\n return remoteModuleMap.get(remoteModuleKey);\n }\n\n const container = remoteContainerMap.has(remoteName)\n ? remoteContainerMap.get(remoteName)\n : await loadRemoteContainer(remoteName);\n\n const factory = await container.get(moduleName);\n const Module = factory();\n\n remoteModuleMap.set(remoteModuleKey, Module);\n\n return Module;\n}\n\nfunction loadModule(url: string) {\n return import(/* webpackIgnore:true */ url);\n}\n\nlet initialSharingScopeCreated = false;\nasync function loadRemoteContainer(remoteName: string) {\n if (!resolveRemoteUrl && !remoteUrlDefinitions) {\n throw new Error(\n 'Call setRemoteDefinitions or setRemoteUrlResolver to allow Dynamic Federation to find the remote apps correctly.'\n );\n }\n\n if (!initialSharingScopeCreated) {\n initialSharingScopeCreated = true;\n await __webpack_init_sharing__('default');\n }\n\n const remoteUrl = remoteUrlDefinitions\n ? remoteUrlDefinitions[remoteName]\n : await resolveRemoteUrl(remoteName);\n\n const containerUrl = `${remoteUrl}${\n remoteUrl.endsWith('/') ? '' : '/'\n }remoteEntry.mjs`;\n\n const container = await loadModule(containerUrl);\n await container.init(__webpack_share_scopes__.default);\n\n remoteContainerMap.set(remoteName, container);\n return container;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAOA,IAAI,gBAA0C,CAAC;SAC/B,oBAAoB,CAClC,iBAA2C;IAE3C,gBAAgB,GAAG,iBAAiB,CAAC;AACvC,CAAC;AAED,IAAI,oBAA4C,CAAC;SACjC,oBAAoB,CAAC,WAAmC;IACtE,oBAAoB,GAAG,WAAW,CAAC;AACrC,CAAC;AAED,IAAI,eAAe,GAAG,IAAI,GAAG,EAAmB,CAAC;AACjD,IAAI,kBAAkB,GAAG,IAAI,GAAG,EAAmB,CAAC;SAC9B,gBAAgB,CAAC,UAAkB,EAAE,UAAkB;;QAC3E,MAAM,eAAe,GAAG,GAAG,UAAU,IAAI,UAAU,EAAE,CAAC;QACtD,IAAI,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;YACxC,OAAO,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;SAC7C;QAED,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC;cAChD,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC;cAClC,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAE1C,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC;QAEzB,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAE7C,OAAO,MAAM,CAAC;KACf;CAAA;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,gCAAgC,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED,IAAI,0BAA0B,GAAG,KAAK,CAAC;AACvC,SAAe,mBAAmB,CAAC,UAAkB;;QACnD,IAAI,CAAC,gBAAgB,IAAI,CAAC,oBAAoB,EAAE;YAC9C,MAAM,IAAI,KAAK,CACb,kHAAkH,CACnH,CAAC;SACH;QAED,IAAI,CAAC,0BAA0B,EAAE;YAC/B,0BAA0B,GAAG,IAAI,CAAC;YAClC,MAAM,wBAAwB,CAAC,SAAS,CAAC,CAAC;SAC3C;QAED,MAAM,SAAS,GAAG,oBAAoB;cAClC,oBAAoB,CAAC,UAAU,CAAC;cAChC,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAEvC,MAAM,YAAY,GAAG,GAAG,SAAS,GAC/B,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GACjC,iBAAiB,CAAC;QAElB,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC;QACjD,MAAM,SAAS,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAEvD,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC9C,OAAO,SAAS,CAAC;KAClB;;;ACrED;;;;;;"}
@@ -0,0 +1,51 @@
1
+ let resolveRemoteUrl;
2
+ function setRemoteUrlResolver(_resolveRemoteUrl) {
3
+ resolveRemoteUrl = _resolveRemoteUrl;
4
+ }
5
+ let remoteUrlDefinitions;
6
+ function setRemoteDefinitions(definitions) {
7
+ remoteUrlDefinitions = definitions;
8
+ }
9
+ let remoteModuleMap = new Map();
10
+ let remoteContainerMap = new Map();
11
+ async function loadRemoteModule(remoteName, moduleName) {
12
+ const remoteModuleKey = `${remoteName}:${moduleName}`;
13
+ if (remoteModuleMap.has(remoteModuleKey)) {
14
+ return remoteModuleMap.get(remoteModuleKey);
15
+ }
16
+ const container = remoteContainerMap.has(remoteName)
17
+ ? remoteContainerMap.get(remoteName)
18
+ : await loadRemoteContainer(remoteName);
19
+ const factory = await container.get(moduleName);
20
+ const Module = factory();
21
+ remoteModuleMap.set(remoteModuleKey, Module);
22
+ return Module;
23
+ }
24
+ function loadModule(url) {
25
+ return import(/* webpackIgnore:true */ url);
26
+ }
27
+ let initialSharingScopeCreated = false;
28
+ async function loadRemoteContainer(remoteName) {
29
+ if (!resolveRemoteUrl && !remoteUrlDefinitions) {
30
+ throw new Error('Call setRemoteDefinitions or setRemoteUrlResolver to allow Dynamic Federation to find the remote apps correctly.');
31
+ }
32
+ if (!initialSharingScopeCreated) {
33
+ initialSharingScopeCreated = true;
34
+ await __webpack_init_sharing__('default');
35
+ }
36
+ const remoteUrl = remoteUrlDefinitions
37
+ ? remoteUrlDefinitions[remoteName]
38
+ : await resolveRemoteUrl(remoteName);
39
+ const containerUrl = `${remoteUrl}${remoteUrl.endsWith('/') ? '' : '/'}remoteEntry.mjs`;
40
+ const container = await loadModule(containerUrl);
41
+ await container.init(__webpack_share_scopes__.default);
42
+ remoteContainerMap.set(remoteName, container);
43
+ return container;
44
+ }
45
+
46
+ /**
47
+ * Generated bundle index. Do not edit.
48
+ */
49
+
50
+ export { loadRemoteModule, setRemoteUrlResolver };
51
+ //# sourceMappingURL=nrwl-angular-mfe.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nrwl-angular-mfe.mjs","sources":["../../mfe/mfe.ts","../../mfe/nrwl-angular-mfe.ts"],"sourcesContent":["export type ResolveRemoteUrlFunction = (\n remoteName: string\n) => string | Promise<string>;\n\ndeclare const __webpack_init_sharing__: (scope: 'default') => Promise<void>;\ndeclare const __webpack_share_scopes__: { default: unknown };\n\nlet resolveRemoteUrl: ResolveRemoteUrlFunction;\nexport function setRemoteUrlResolver(\n _resolveRemoteUrl: ResolveRemoteUrlFunction\n) {\n resolveRemoteUrl = _resolveRemoteUrl;\n}\n\nlet remoteUrlDefinitions: Record<string, string>;\nexport function setRemoteDefinitions(definitions: Record<string, string>) {\n remoteUrlDefinitions = definitions;\n}\n\nlet remoteModuleMap = new Map<string, unknown>();\nlet remoteContainerMap = new Map<string, unknown>();\nexport async function loadRemoteModule(remoteName: string, moduleName: string) {\n const remoteModuleKey = `${remoteName}:${moduleName}`;\n if (remoteModuleMap.has(remoteModuleKey)) {\n return remoteModuleMap.get(remoteModuleKey);\n }\n\n const container = remoteContainerMap.has(remoteName)\n ? remoteContainerMap.get(remoteName)\n : await loadRemoteContainer(remoteName);\n\n const factory = await container.get(moduleName);\n const Module = factory();\n\n remoteModuleMap.set(remoteModuleKey, Module);\n\n return Module;\n}\n\nfunction loadModule(url: string) {\n return import(/* webpackIgnore:true */ url);\n}\n\nlet initialSharingScopeCreated = false;\nasync function loadRemoteContainer(remoteName: string) {\n if (!resolveRemoteUrl && !remoteUrlDefinitions) {\n throw new Error(\n 'Call setRemoteDefinitions or setRemoteUrlResolver to allow Dynamic Federation to find the remote apps correctly.'\n );\n }\n\n if (!initialSharingScopeCreated) {\n initialSharingScopeCreated = true;\n await __webpack_init_sharing__('default');\n }\n\n const remoteUrl = remoteUrlDefinitions\n ? remoteUrlDefinitions[remoteName]\n : await resolveRemoteUrl(remoteName);\n\n const containerUrl = `${remoteUrl}${\n remoteUrl.endsWith('/') ? '' : '/'\n }remoteEntry.mjs`;\n\n const container = await loadModule(containerUrl);\n await container.init(__webpack_share_scopes__.default);\n\n remoteContainerMap.set(remoteName, container);\n return container;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAOA,IAAI,gBAA0C,CAAC;SAC/B,oBAAoB,CAClC,iBAA2C;IAE3C,gBAAgB,GAAG,iBAAiB,CAAC;AACvC,CAAC;AAED,IAAI,oBAA4C,CAAC;SACjC,oBAAoB,CAAC,WAAmC;IACtE,oBAAoB,GAAG,WAAW,CAAC;AACrC,CAAC;AAED,IAAI,eAAe,GAAG,IAAI,GAAG,EAAmB,CAAC;AACjD,IAAI,kBAAkB,GAAG,IAAI,GAAG,EAAmB,CAAC;AAC7C,eAAe,gBAAgB,CAAC,UAAkB,EAAE,UAAkB;IAC3E,MAAM,eAAe,GAAG,GAAG,UAAU,IAAI,UAAU,EAAE,CAAC;IACtD,IAAI,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;QACxC,OAAO,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;KAC7C;IAED,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC;UAChD,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC;UAClC,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAE1C,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC;IAEzB,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAE7C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,gCAAgC,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED,IAAI,0BAA0B,GAAG,KAAK,CAAC;AACvC,eAAe,mBAAmB,CAAC,UAAkB;IACnD,IAAI,CAAC,gBAAgB,IAAI,CAAC,oBAAoB,EAAE;QAC9C,MAAM,IAAI,KAAK,CACb,kHAAkH,CACnH,CAAC;KACH;IAED,IAAI,CAAC,0BAA0B,EAAE;QAC/B,0BAA0B,GAAG,IAAI,CAAC;QAClC,MAAM,wBAAwB,CAAC,SAAS,CAAC,CAAC;KAC3C;IAED,MAAM,SAAS,GAAG,oBAAoB;UAClC,oBAAoB,CAAC,UAAU,CAAC;UAChC,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAEvC,MAAM,YAAY,GAAG,GAAG,SAAS,GAC/B,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GACjC,iBAAiB,CAAC;IAElB,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,SAAS,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAEvD,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC9C,OAAO,SAAS,CAAC;AACnB;;ACrEA;;;;;;"}
package/generators.json CHANGED
@@ -16,6 +16,11 @@
16
16
  "x-type": "application",
17
17
  "description": "Creates an Angular application."
18
18
  },
19
+ "component": {
20
+ "factory": "./src/generators/component/component.compat",
21
+ "schema": "./src/generators/component/schema.json",
22
+ "description": "Generate an Angular Component."
23
+ },
19
24
  "component-cypress-spec": {
20
25
  "factory": "./src/generators/component-cypress-spec/compat",
21
26
  "schema": "./src/generators/component-cypress-spec/schema.json",
@@ -42,7 +47,6 @@
42
47
  "factory": "./src/generators/init/init.compat#initSchematic",
43
48
  "schema": "./src/generators/init/schema.json",
44
49
  "description": "Initializes the @nrwl/angular plugin.",
45
- "aliases": ["ng-add"],
46
50
  "hidden": true
47
51
  },
48
52
  "karma": {
@@ -80,12 +84,23 @@
80
84
  "aliases": ["mv"],
81
85
  "description": "Moves an Angular application or library to another folder within the workspace and updates the project configuration."
82
86
  },
87
+ "convert-to-with-mf": {
88
+ "factory": "./src/generators/convert-to-with-mf/convert-to-with-mf.compat",
89
+ "schema": "./src/generators/convert-to-with-mf/schema.json",
90
+ "description": "Converts an old micro frontend configuration to use the new withModuleFederation helper. It will run successfully if the following conditions are met: \n - Is either a host or remote application \n - Shared npm package configurations have not been modified \n - Name used to identify the Micro Frontend application matches the project name \n\n _**Note:** This generator will overwrite your webpack config. If you have additional custom configuration in your config file, it will be lost!_"
91
+ },
83
92
  "mfe-host": {
84
93
  "factory": "./src/generators/mfe-host/mfe-host.compat",
85
94
  "schema": "./src/generators/mfe-host/schema.json",
86
95
  "aliases": ["host"],
87
96
  "description": "Generate a Host Angular Micro Frontend Application."
88
97
  },
98
+ "ng-add": {
99
+ "factory": "./src/generators/ng-add/compat",
100
+ "schema": "./src/generators/ng-add/schema.json",
101
+ "description": "Migrates an Angular CLI workspace to Nx or adds the Angular plugin to an Nx workspace.",
102
+ "hidden": true
103
+ },
89
104
  "ngrx": {
90
105
  "factory": "./src/generators/ngrx/compat",
91
106
  "schema": "./src/generators/ngrx/schema.json",
@@ -161,6 +176,11 @@
161
176
  "x-type": "application",
162
177
  "description": "Creates an Angular application."
163
178
  },
179
+ "component": {
180
+ "factory": "./src/generators/component/component",
181
+ "schema": "./src/generators/component/schema.json",
182
+ "description": "Generate an Angular Component."
183
+ },
164
184
  "component-cypress-spec": {
165
185
  "factory": "./src/generators/component-cypress-spec/component-cypress-spec",
166
186
  "schema": "./src/generators/component-cypress-spec/schema.json",
@@ -187,7 +207,6 @@
187
207
  "factory": "./src/generators/init/init",
188
208
  "schema": "./src/generators/init/schema.json",
189
209
  "description": "Initializes the @nrwl/angular plugin.",
190
- "aliases": ["ng-add"],
191
210
  "hidden": true
192
211
  },
193
212
  "karma": {
@@ -225,12 +244,23 @@
225
244
  "aliases": ["mv"],
226
245
  "description": "Moves an Angular application or library to another folder within the workspace and updates the project configuration."
227
246
  },
247
+ "convert-to-with-mf": {
248
+ "factory": "./src/generators/convert-to-with-mf/convert-to-with-mf",
249
+ "schema": "./src/generators/convert-to-with-mf/schema.json",
250
+ "description": "Converts an old micro frontend configuration to use the new withModuleFederation helper. It will run successfully if the following conditions are met: \n - Is either a host or remote application \n - Shared npm package configurations have not been modified \n - Name used to identify the Micro Frontend application matches the project name \n\n _**Note:** This generator will overwrite your webpack config. If you have additional custom configuration in your config file, it will be lost!_"
251
+ },
228
252
  "mfe-host": {
229
253
  "factory": "./src/generators/mfe-host/mfe-host",
230
254
  "schema": "./src/generators/mfe-host/schema.json",
231
255
  "aliases": ["host"],
232
256
  "description": "Generate a Host Angular Micro Frontend Application."
233
257
  },
258
+ "ng-add": {
259
+ "factory": "./src/generators/ng-add/ng-add",
260
+ "schema": "./src/generators/ng-add/schema.json",
261
+ "description": "Migrates an Angular CLI workspace to Nx or adds the Angular plugin to an Nx workspace.",
262
+ "hidden": true
263
+ },
234
264
  "ngrx": {
235
265
  "factory": "./src/generators/ngrx/ngrx",
236
266
  "schema": "./src/generators/ngrx/schema.json",
package/mfe/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export { setRemoteUrlResolver, loadRemoteModule } from './mfe';
package/mfe/index.js ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadRemoteModule = exports.setRemoteUrlResolver = void 0;
4
+ var mfe_1 = require("./mfe");
5
+ Object.defineProperty(exports, "setRemoteUrlResolver", { enumerable: true, get: function () { return mfe_1.setRemoteUrlResolver; } });
6
+ Object.defineProperty(exports, "loadRemoteModule", { enumerable: true, get: function () { return mfe_1.loadRemoteModule; } });
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/angular/mfe/index.ts"],"names":[],"mappings":";;;AAAA,6BAA+D;AAAtD,2GAAA,oBAAoB,OAAA;AAAE,uGAAA,gBAAgB,OAAA"}
package/mfe/mfe.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export declare type ResolveRemoteUrlFunction = (remoteName: string) => string | Promise<string>;
2
+ export declare function setRemoteUrlResolver(_resolveRemoteUrl: ResolveRemoteUrlFunction): void;
3
+ export declare function setRemoteDefinitions(definitions: Record<string, string>): void;
4
+ export declare function loadRemoteModule(remoteName: string, moduleName: string): Promise<any>;
package/mfe/mfe.js ADDED
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadRemoteModule = exports.setRemoteDefinitions = exports.setRemoteUrlResolver = void 0;
4
+ const tslib_1 = require("tslib");
5
+ let resolveRemoteUrl;
6
+ function setRemoteUrlResolver(_resolveRemoteUrl) {
7
+ resolveRemoteUrl = _resolveRemoteUrl;
8
+ }
9
+ exports.setRemoteUrlResolver = setRemoteUrlResolver;
10
+ let remoteUrlDefinitions;
11
+ function setRemoteDefinitions(definitions) {
12
+ remoteUrlDefinitions = definitions;
13
+ }
14
+ exports.setRemoteDefinitions = setRemoteDefinitions;
15
+ let remoteModuleMap = new Map();
16
+ let remoteContainerMap = new Map();
17
+ function loadRemoteModule(remoteName, moduleName) {
18
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
19
+ const remoteModuleKey = `${remoteName}:${moduleName}`;
20
+ if (remoteModuleMap.has(remoteModuleKey)) {
21
+ return remoteModuleMap.get(remoteModuleKey);
22
+ }
23
+ const container = remoteContainerMap.has(remoteName)
24
+ ? remoteContainerMap.get(remoteName)
25
+ : yield loadRemoteContainer(remoteName);
26
+ const factory = yield container.get(moduleName);
27
+ const Module = factory();
28
+ remoteModuleMap.set(remoteModuleKey, Module);
29
+ return Module;
30
+ });
31
+ }
32
+ exports.loadRemoteModule = loadRemoteModule;
33
+ function loadModule(url) {
34
+ return Promise.resolve().then(() => require(/* webpackIgnore:true */ url));
35
+ }
36
+ let initialSharingScopeCreated = false;
37
+ function loadRemoteContainer(remoteName) {
38
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
39
+ if (!resolveRemoteUrl && !remoteUrlDefinitions) {
40
+ throw new Error('Call setRemoteDefinitions or setRemoteUrlResolver to allow Dynamic Federation to find the remote apps correctly.');
41
+ }
42
+ if (!initialSharingScopeCreated) {
43
+ initialSharingScopeCreated = true;
44
+ yield __webpack_init_sharing__('default');
45
+ }
46
+ const remoteUrl = remoteUrlDefinitions
47
+ ? remoteUrlDefinitions[remoteName]
48
+ : yield resolveRemoteUrl(remoteName);
49
+ const containerUrl = `${remoteUrl}${remoteUrl.endsWith('/') ? '' : '/'}remoteEntry.mjs`;
50
+ const container = yield loadModule(containerUrl);
51
+ yield container.init(__webpack_share_scopes__.default);
52
+ remoteContainerMap.set(remoteName, container);
53
+ return container;
54
+ });
55
+ }
56
+ //# sourceMappingURL=mfe.js.map
package/mfe/mfe.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mfe.js","sourceRoot":"","sources":["../../../../packages/angular/mfe/mfe.ts"],"names":[],"mappings":";;;;AAOA,IAAI,gBAA0C,CAAC;AAC/C,SAAgB,oBAAoB,CAClC,iBAA2C;IAE3C,gBAAgB,GAAG,iBAAiB,CAAC;AACvC,CAAC;AAJD,oDAIC;AAED,IAAI,oBAA4C,CAAC;AACjD,SAAgB,oBAAoB,CAAC,WAAmC;IACtE,oBAAoB,GAAG,WAAW,CAAC;AACrC,CAAC;AAFD,oDAEC;AAED,IAAI,eAAe,GAAG,IAAI,GAAG,EAAmB,CAAC;AACjD,IAAI,kBAAkB,GAAG,IAAI,GAAG,EAAmB,CAAC;AACpD,SAAsB,gBAAgB,CAAC,UAAkB,EAAE,UAAkB;;QAC3E,MAAM,eAAe,GAAG,GAAG,UAAU,IAAI,UAAU,EAAE,CAAC;QACtD,IAAI,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;YACxC,OAAO,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;SAC7C;QAED,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC;YAClD,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC;YACpC,CAAC,CAAC,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAE1C,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC;QAEzB,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAE7C,OAAO,MAAM,CAAC;IAChB,CAAC;CAAA;AAhBD,4CAgBC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,4CAAc,wBAAwB,CAAC,GAAG,GAAE;AAC9C,CAAC;AAED,IAAI,0BAA0B,GAAG,KAAK,CAAC;AACvC,SAAe,mBAAmB,CAAC,UAAkB;;QACnD,IAAI,CAAC,gBAAgB,IAAI,CAAC,oBAAoB,EAAE;YAC9C,MAAM,IAAI,KAAK,CACb,kHAAkH,CACnH,CAAC;SACH;QAED,IAAI,CAAC,0BAA0B,EAAE;YAC/B,0BAA0B,GAAG,IAAI,CAAC;YAClC,MAAM,wBAAwB,CAAC,SAAS,CAAC,CAAC;SAC3C;QAED,MAAM,SAAS,GAAG,oBAAoB;YACpC,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC;YAClC,CAAC,CAAC,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAEvC,MAAM,YAAY,GAAG,GAAG,SAAS,GAC/B,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GACjC,iBAAiB,CAAC;QAElB,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC;QACjD,MAAM,SAAS,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAEvD,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC9C,OAAO,SAAS,CAAC;IACnB,CAAC;CAAA"}
@@ -0,0 +1,6 @@
1
+ {
2
+ "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json",
3
+ "lib": {
4
+ "entryFile": "index.ts"
5
+ }
6
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@nrwl/angular/mfe" />
5
+ export * from './index';
@@ -0,0 +1,10 @@
1
+ {
2
+ "module": "../fesm2015/nrwl-angular-mfe.mjs",
3
+ "es2020": "../fesm2020/nrwl-angular-mfe.mjs",
4
+ "esm2020": "../esm2020/mfe/nrwl-angular-mfe.mjs",
5
+ "fesm2020": "../fesm2020/nrwl-angular-mfe.mjs",
6
+ "fesm2015": "../fesm2015/nrwl-angular-mfe.mjs",
7
+ "typings": "nrwl-angular-mfe.d.ts",
8
+ "sideEffects": false,
9
+ "name": "@nrwl/angular/mfe"
10
+ }
package/migrations.json CHANGED
@@ -1381,6 +1381,95 @@
1381
1381
  "alwaysAddToPackageJson": false
1382
1382
  }
1383
1383
  }
1384
+ },
1385
+ "13.9.3": {
1386
+ "version": "13.9.3-beta.0",
1387
+ "packages": {
1388
+ "@angular/cli": {
1389
+ "version": "~13.3.0",
1390
+ "alwaysAddToPackageJson": false
1391
+ },
1392
+ "@angular-devkit/build-angular": {
1393
+ "version": "~13.3.0",
1394
+ "alwaysAddToPackageJson": false
1395
+ },
1396
+ "@angular/core": {
1397
+ "version": "~13.3.0",
1398
+ "alwaysAddToPackageJson": true
1399
+ },
1400
+ "@angular/common": {
1401
+ "version": "~13.3.0",
1402
+ "alwaysAddToPackageJson": false
1403
+ },
1404
+ "@angular/forms": {
1405
+ "version": "~13.3.0",
1406
+ "alwaysAddToPackageJson": false
1407
+ },
1408
+ "@angular/elements": {
1409
+ "version": "~13.3.0",
1410
+ "alwaysAddToPackageJson": false
1411
+ },
1412
+ "@angular/compiler": {
1413
+ "version": "~13.3.0",
1414
+ "alwaysAddToPackageJson": false
1415
+ },
1416
+ "@angular/compiler-cli": {
1417
+ "version": "~13.3.0",
1418
+ "alwaysAddToPackageJson": false
1419
+ },
1420
+ "@angular/localize": {
1421
+ "version": "~13.3.0",
1422
+ "alwaysAddToPackageJson": false
1423
+ },
1424
+ "@angular/platform-browser": {
1425
+ "version": "~13.3.0",
1426
+ "alwaysAddToPackageJson": false
1427
+ },
1428
+ "@angular/platform-browser-dynamic": {
1429
+ "version": "~13.3.0",
1430
+ "alwaysAddToPackageJson": false
1431
+ },
1432
+ "@angular/platform-server": {
1433
+ "version": "~13.3.0",
1434
+ "alwaysAddToPackageJson": false
1435
+ },
1436
+ "@angular/router": {
1437
+ "version": "~13.3.0",
1438
+ "alwaysAddToPackageJson": false
1439
+ },
1440
+ "@angular/upgrade": {
1441
+ "version": "~13.3.0",
1442
+ "alwaysAddToPackageJson": false
1443
+ },
1444
+ "@angular/language-service": {
1445
+ "version": "~13.3.0",
1446
+ "alwaysAddToPackageJson": false
1447
+ },
1448
+ "@angular/animations": {
1449
+ "version": "~13.3.0",
1450
+ "alwaysAddToPackageJson": false
1451
+ },
1452
+ "@angular/service-worker": {
1453
+ "version": "~13.3.0",
1454
+ "alwaysAddToPackageJson": false
1455
+ },
1456
+ "@angular/material": {
1457
+ "version": "~13.3.0",
1458
+ "alwaysAddToPackageJson": false
1459
+ },
1460
+ "@angular/cdk": {
1461
+ "version": "~13.3.0",
1462
+ "alwaysAddToPackageJson": false
1463
+ },
1464
+ "ng-packagr": {
1465
+ "version": "~13.3.0",
1466
+ "alwaysAddToPackageJson": false
1467
+ },
1468
+ "typescript": {
1469
+ "version": "~4.6.2",
1470
+ "alwaysAddToPackageJson": false
1471
+ }
1472
+ }
1384
1473
  }
1385
1474
  }
1386
1475
  }
@@ -0,0 +1 @@
1
+ export { withModuleFederation } from '../src/utils/mfe/with-module-federation';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withModuleFederation = void 0;
4
+ var with_module_federation_1 = require("../src/utils/mfe/with-module-federation");
5
+ Object.defineProperty(exports, "withModuleFederation", { enumerable: true, get: function () { return with_module_federation_1.withModuleFederation; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/angular/module-federation/index.ts"],"names":[],"mappings":";;;AAAA,kFAA+E;AAAtE,8HAAA,oBAAoB,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nrwl/angular",
3
- "version": "13.9.3",
3
+ "version": "13.10.0-beta.2",
4
4
  "description": "Angular Plugin for Nx",
5
5
  "repository": {
6
6
  "type": "git",
@@ -22,6 +22,7 @@
22
22
  "./executors": "./executors.js",
23
23
  "./tailwind": "./tailwind.js",
24
24
  "./src/generators/utils": "./src/generators/utils/index.js",
25
+ "./module-federation": "./module-federation/index.js",
25
26
  "./package.json": {
26
27
  "default": "./package.json"
27
28
  },
@@ -33,6 +34,14 @@
33
34
  "node": "./fesm2015/nrwl-angular.mjs",
34
35
  "default": "./fesm2020/nrwl-angular.mjs"
35
36
  },
37
+ "./mfe": {
38
+ "types": "./mfe/nrwl-angular-mfe.d.ts",
39
+ "esm2020": "./esm2020/mfe/nrwl-angular-mfe.mjs",
40
+ "es2020": "./fesm2020/nrwl-angular-mfe.mjs",
41
+ "es2015": "./fesm2015/nrwl-angular-mfe.mjs",
42
+ "node": "./fesm2015/nrwl-angular-mfe.mjs",
43
+ "default": "./fesm2020/nrwl-angular-mfe.mjs"
44
+ },
36
45
  "./testing": {
37
46
  "types": "./testing/nrwl-angular-testing.d.ts",
38
47
  "esm2020": "./esm2020/testing/nrwl-angular-testing.mjs",
@@ -55,13 +64,13 @@
55
64
  "migrations": "./migrations.json"
56
65
  },
57
66
  "dependencies": {
58
- "@angular-devkit/schematics": "~13.2.0",
59
- "@nrwl/cypress": "13.9.3",
60
- "@nrwl/devkit": "13.9.3",
61
- "@nrwl/jest": "13.9.3",
62
- "@nrwl/linter": "13.9.3",
63
- "@nrwl/storybook": "13.9.3",
64
- "@schematics/angular": "~13.2.0",
67
+ "@angular-devkit/schematics": "~13.3.0",
68
+ "@nrwl/cypress": "13.10.0-beta.2",
69
+ "@nrwl/devkit": "13.10.0-beta.2",
70
+ "@nrwl/jest": "13.10.0-beta.2",
71
+ "@nrwl/linter": "13.10.0-beta.2",
72
+ "@nrwl/storybook": "13.10.0-beta.2",
73
+ "@schematics/angular": "~13.3.0",
65
74
  "@phenomnomnominal/tsquery": "4.1.1",
66
75
  "ignore": "^5.0.4",
67
76
  "jasmine-marbles": "~0.8.4",
@@ -6,7 +6,7 @@ try {
6
6
  if (path.basename(root) === 'workspace.json') {
7
7
  const workspaceJson = JSON.parse(fs.readFileSync(root));
8
8
  if (Object.keys(workspaceJson.projects).length === 0) {
9
- const output = require('@nrwl/workspace/src/utilities/output').output;
9
+ const output = require('nx/src/utils/output').output;
10
10
  output.warn({
11
11
  title: '@nrwl/angular added to a Nx workspace powered by the Nx CLI.',
12
12
  bodyLines: [
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema",
3
- "title": "Webpack browser schema for Build Facade.",
4
- "description": "Browser target options",
3
+ "title": "Schema for Webpack Browser",
4
+ "description": "The webpack-browser executor is very similar to the standard browser builder provided by the Angular Devkit. It allows you to build your Angular application to a build artifact that can be hosted online. There are some key differences: \n- Supports Custom Webpack Configurations \n- Supports Incremental Building",
5
+ "examplesFile": "../../../docs/webpack-browser-examples.md",
5
6
  "type": "object",
6
7
  "properties": {
7
8
  "assets": {