@nx/angular 0.0.0-pr-31231-180f614 → 0.0.0-pr-31222-862e973

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 (477) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/esm2022/index.mjs +2 -0
  4. package/esm2022/mf/index.mjs +2 -0
  5. package/esm2022/mf/mf.mjs +52 -0
  6. package/esm2022/mf/nx-angular-mf.mjs +5 -0
  7. package/esm2022/nx-angular.mjs +5 -0
  8. package/esm2022/src/runtime/nx/data-persistence.mjs +349 -0
  9. package/esm2022/testing/index.mjs +2 -0
  10. package/esm2022/testing/nx-angular-testing.mjs +5 -0
  11. package/esm2022/testing/src/testing-utils.mjs +38 -0
  12. package/executors.d.ts +6 -1
  13. package/executors.js +3 -2
  14. package/executors.json +2 -2
  15. package/fesm2022/nx-angular-mf.mjs +0 -64
  16. package/fesm2022/nx-angular-mf.mjs.map +1 -1
  17. package/fesm2022/nx-angular-testing.mjs +45 -0
  18. package/fesm2022/nx-angular-testing.mjs.map +1 -0
  19. package/fesm2022/nx-angular.mjs +352 -0
  20. package/fesm2022/nx-angular.mjs.map +1 -1
  21. package/generators.d.ts +1 -0
  22. package/generators.js +1 -0
  23. package/generators.json +18 -19
  24. package/index.d.ts +1 -1
  25. package/mf/mf.d.ts +0 -64
  26. package/migrations.json +1289 -769
  27. package/module-federation/index.d.ts +2 -5
  28. package/module-federation/index.js +4 -3
  29. package/ng-package.json +2 -2
  30. package/package.json +29 -17
  31. package/src/builders/dev-server/dev-server.impl.js +4 -6
  32. package/src/builders/dev-server/lib/normalize-options.js +0 -3
  33. package/src/builders/dev-server/lib/validate-options.js +9 -1
  34. package/src/builders/dev-server/schema.d.ts +0 -3
  35. package/src/builders/dev-server/schema.json +8 -8
  36. package/src/builders/webpack-browser/schema.d.ts +5 -0
  37. package/src/builders/webpack-browser/schema.json +2 -0
  38. package/src/builders/webpack-browser/webpack-browser.impl.js +4 -3
  39. package/src/builders/webpack-server/schema.json +1 -0
  40. package/src/executors/application/application.impl.d.ts +1 -1
  41. package/src/executors/application/application.impl.js +1 -4
  42. package/src/executors/application/schema.json +8 -78
  43. package/src/executors/application/utils/validate-options.js +4 -18
  44. package/src/executors/browser-esbuild/browser-esbuild.impl.d.ts +1 -1
  45. package/src/executors/browser-esbuild/browser-esbuild.impl.js +9 -0
  46. package/src/executors/browser-esbuild/schema.json +3 -1
  47. package/src/executors/delegate-build/delegate-build.impl.d.ts +3 -1
  48. package/src/executors/delegate-build/delegate-build.impl.js +3 -0
  49. package/src/executors/module-federation-dev-server/lib/build-static-remotes.d.ts +4 -0
  50. package/src/executors/module-federation-dev-server/lib/build-static-remotes.js +65 -0
  51. package/src/executors/module-federation-dev-server/lib/index.d.ts +2 -0
  52. package/src/executors/module-federation-dev-server/lib/index.js +2 -0
  53. package/src/executors/module-federation-dev-server/lib/normalize-options.js +0 -1
  54. package/src/executors/module-federation-dev-server/lib/start-dev-remotes.d.ts +1 -1
  55. package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.d.ts +9 -0
  56. package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.js +51 -0
  57. package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.d.ts +1 -1
  58. package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.js +31 -5
  59. package/src/executors/module-federation-dev-server/schema.d.ts +0 -4
  60. package/src/executors/module-federation-dev-server/schema.json +1 -2
  61. package/src/executors/module-federation-ssr-dev-server/lib/build-static-remotes.d.ts +4 -0
  62. package/src/executors/module-federation-ssr-dev-server/lib/build-static-remotes.js +65 -0
  63. package/src/executors/module-federation-ssr-dev-server/lib/normalize-options.d.ts +2 -2
  64. package/src/executors/module-federation-ssr-dev-server/lib/normalize-options.js +0 -1
  65. package/src/executors/module-federation-ssr-dev-server/lib/start-dev-remotes.d.ts +1 -1
  66. package/src/executors/module-federation-ssr-dev-server/lib/start-static-remotes.d.ts +4 -0
  67. package/src/executors/module-federation-ssr-dev-server/lib/start-static-remotes.js +41 -0
  68. package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.d.ts +1 -1
  69. package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.js +35 -7
  70. package/src/executors/module-federation-ssr-dev-server/schema.d.ts +14 -8
  71. package/src/executors/module-federation-ssr-dev-server/schema.json +0 -1
  72. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.d.ts +3 -2
  73. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.js +26 -7
  74. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.di.d.ts +14 -0
  75. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.di.js +27 -0
  76. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.transform.d.ts +12 -0
  77. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.transform.js +53 -0
  78. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/entry-point.di.d.ts +15 -0
  79. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/entry-point.di.js +28 -0
  80. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/entry-point.transform.d.ts +30 -0
  81. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/entry-point.transform.js +52 -0
  82. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.di.d.ts +12 -0
  83. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.di.js +20 -0
  84. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.transform.d.ts +9 -0
  85. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.transform.js +320 -0
  86. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/options.di.d.ts +14 -0
  87. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/options.di.js +35 -0
  88. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/package.di.d.ts +14 -0
  89. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/package.di.js +37 -0
  90. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ngc/compile-source-files.d.ts +12 -0
  91. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ngc/compile-source-files.js +178 -0
  92. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.d.ts +42 -0
  93. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.di.d.ts +10 -0
  94. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.di.js +17 -0
  95. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.js +201 -0
  96. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.di.d.ts +2 -0
  97. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.di.js +12 -0
  98. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → v17+/ng-package}/entry-point/write-bundles.transform.d.ts +1 -3
  99. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.transform.js +12 -0
  100. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.di.d.ts +8 -0
  101. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.di.js +18 -0
  102. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.transform.d.ts +8 -0
  103. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.transform.js +286 -0
  104. package/src/executors/ng-packagr-lite/ng-packagr-lite.impl.d.ts +1 -1
  105. package/src/executors/ng-packagr-lite/ng-packagr-lite.impl.js +1 -1
  106. package/src/executors/ng-packagr-lite/schema.json +7 -3
  107. package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.di.d.ts +14 -0
  108. package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.di.js +26 -0
  109. package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.transform.d.ts +12 -0
  110. package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.transform.js +71 -0
  111. package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/entry-point.di.d.ts +13 -0
  112. package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/entry-point.di.js +32 -0
  113. package/src/executors/package/ng-packagr-adjustments/ng-package/options.di.d.ts +14 -0
  114. package/src/executors/package/ng-packagr-adjustments/ng-package/options.di.js +35 -0
  115. package/src/executors/package/ng-packagr-adjustments/ng-package/package.di.d.ts +14 -0
  116. package/src/executors/package/ng-packagr-adjustments/ng-package/package.di.js +37 -0
  117. package/src/executors/package/ng-packagr-adjustments/ng-packagr.d.ts +3 -2
  118. package/src/executors/package/ng-packagr-adjustments/ng-packagr.js +21 -4
  119. package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.d.ts +13 -0
  120. package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.js +183 -0
  121. package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.d.ts +36 -0
  122. package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.di.d.ts +10 -0
  123. package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.di.js +17 -0
  124. package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.js +194 -0
  125. package/src/executors/package/ng-packagr-adjustments/utils/ng-compiler-cli.d.ts +1 -0
  126. package/src/executors/package/ng-packagr-adjustments/utils/ng-compiler-cli.js +9 -0
  127. package/src/executors/package/package.impl.d.ts +2 -2
  128. package/src/executors/package/package.impl.js +4 -6
  129. package/src/executors/package/schema.d.ts +6 -4
  130. package/src/executors/package/schema.json +10 -4
  131. package/src/executors/utilities/ng-packagr/stylesheet-processor.di.d.ts +1 -1
  132. package/src/executors/utilities/ng-packagr/stylesheet-processor.di.js +14 -23
  133. package/src/executors/utilities/ng-packagr/{pre-v19/stylesheet-processor.js → stylesheet-processor.js} +4 -4
  134. package/src/executors/utilities/ng-packagr/tailwindcss.d.ts +6 -0
  135. package/src/executors/utilities/ng-packagr/tailwindcss.js +32 -0
  136. package/src/generators/add-linting/add-linting.js +17 -2
  137. package/src/generators/add-linting/lib/create-eslint-configuration.d.ts +2 -2
  138. package/src/generators/add-linting/lib/create-eslint-configuration.js +2 -2
  139. package/src/generators/add-linting/schema.d.ts +0 -1
  140. package/src/generators/application/application.d.ts +1 -0
  141. package/src/generators/application/application.js +9 -24
  142. package/src/generators/application/files/ng-module/src/app/app.component.html__tpl__ +1 -8
  143. package/src/generators/application/files/ng-module/src/app/app.component.ts__tpl__ +5 -4
  144. package/src/generators/application/files/nx-welcome/claimed/ng-module/src/app/nx-welcome.component.ts__tpl__ +1 -2
  145. package/src/generators/application/files/nx-welcome/claimed/standalone/src/app/nx-welcome.component.ts__tpl__ +2 -2
  146. package/src/generators/application/files/nx-welcome/not-configured/ng-module/src/app/nx-welcome.component.ts__tpl__ +1 -2
  147. package/src/generators/application/files/nx-welcome/not-configured/standalone/src/app/nx-welcome.component.ts__tpl__ +2 -2
  148. package/src/generators/application/files/nx-welcome/unclaimed/ng-module/src/app/nx-welcome.component.ts__tpl__ +1 -2
  149. package/src/generators/application/files/nx-welcome/unclaimed/standalone/src/app/nx-welcome.component.ts__tpl__ +2 -2
  150. package/src/generators/application/files/standalone-components/src/app/app.component.html__tpl__ +1 -8
  151. package/src/generators/application/files/standalone-components/src/app/app.component.ts__tpl__ +6 -4
  152. package/src/generators/application/lib/add-e2e.js +9 -2
  153. package/src/generators/application/lib/add-linting.js +2 -2
  154. package/src/generators/application/lib/add-serve-static-target.d.ts +1 -1
  155. package/src/generators/application/lib/add-serve-static-target.js +3 -2
  156. package/src/generators/application/lib/add-unit-test-runner.js +7 -20
  157. package/src/generators/application/lib/create-files.js +1 -4
  158. package/src/generators/application/lib/create-project.js +31 -25
  159. package/src/generators/application/lib/normalize-options.d.ts +1 -1
  160. package/src/generators/application/lib/normalize-options.js +15 -14
  161. package/src/generators/application/schema.d.ts +6 -5
  162. package/src/generators/application/schema.json +21 -16
  163. package/src/generators/component/component.d.ts +1 -0
  164. package/src/generators/component/component.js +7 -4
  165. package/src/generators/component/files/__fileName__.__style__ +1 -1
  166. package/src/generators/component/files/__fileName__.spec.ts__tpl__ +1 -1
  167. package/src/generators/component/files/__fileName__.ts__tpl__ +13 -5
  168. package/src/generators/component/lib/normalize-options.js +6 -8
  169. package/src/generators/component/schema.d.ts +18 -3
  170. package/src/generators/component/schema.json +28 -11
  171. package/src/generators/component-cypress-spec/component-cypress-spec.d.ts +4 -0
  172. package/src/generators/component-cypress-spec/component-cypress-spec.js +35 -0
  173. package/src/generators/component-cypress-spec/files/__componentFileName__.__fileExt__ +17 -0
  174. package/src/generators/component-cypress-spec/lib/get-args-default-value.d.ts +2 -0
  175. package/src/generators/component-cypress-spec/lib/get-args-default-value.js +24 -0
  176. package/src/generators/component-cypress-spec/lib/get-component-selector.d.ts +2 -0
  177. package/src/generators/component-cypress-spec/lib/get-component-selector.js +23 -0
  178. package/src/generators/component-cypress-spec/schema.d.ts +10 -0
  179. package/src/generators/component-cypress-spec/schema.json +66 -0
  180. package/src/generators/component-story/files/__componentFileName__.stories.ts__tmpl__ +4 -4
  181. package/src/generators/component-test/component-test.js +1 -1
  182. package/src/generators/convert-to-application-executor/convert-to-application-executor.js +4 -1
  183. package/src/generators/convert-to-application-executor/schema.json +1 -1
  184. package/src/generators/cypress-component-configuration/cypress-component-configuration.d.ts +2 -1
  185. package/src/generators/cypress-component-configuration/cypress-component-configuration.js +7 -1
  186. package/src/generators/directive/directive.js +0 -5
  187. package/src/generators/directive/files/__fileName__.ts__tpl__ +2 -2
  188. package/src/generators/directive/lib/normalize-options.js +7 -6
  189. package/src/generators/directive/schema.d.ts +17 -2
  190. package/src/generators/directive/schema.json +28 -20
  191. package/src/generators/federate-module/lib/add-remote.js +3 -0
  192. package/src/generators/federate-module/schema.d.ts +2 -0
  193. package/src/generators/federate-module/schema.json +16 -19
  194. package/src/generators/host/files/common/pre-v17/src/main.server.ts__tmpl__ +66 -0
  195. package/src/generators/host/files/common/{src → v17+/src}/main.server.ts__tmpl__ +1 -1
  196. package/src/generators/host/files/js/webpack.server.config.js__tmpl__ +1 -1
  197. package/src/generators/host/files/ts/webpack.server.config.ts__tmpl__ +1 -1
  198. package/src/generators/host/host.d.ts +2 -1
  199. package/src/generators/host/host.js +24 -30
  200. package/src/generators/host/lib/update-ssr-setup.js +3 -7
  201. package/src/generators/host/schema.d.ts +5 -4
  202. package/src/generators/host/schema.json +27 -34
  203. package/src/generators/init/init.js +1 -3
  204. package/src/generators/library/files/base/README.md__tpl__ +2 -2
  205. package/src/generators/library/lib/add-project.d.ts +1 -1
  206. package/src/generators/library/lib/add-project.js +1 -7
  207. package/src/generators/library/lib/add-standalone-component.js +3 -4
  208. package/src/generators/library/lib/normalize-options.js +5 -4
  209. package/src/generators/library/lib/normalized-schema.d.ts +3 -2
  210. package/src/generators/library/library.d.ts +1 -0
  211. package/src/generators/library/library.js +19 -27
  212. package/src/generators/library/schema.d.ts +5 -2
  213. package/src/generators/library/schema.json +20 -9
  214. package/src/generators/move/lib/update-secondary-entry-points.js +0 -1
  215. package/src/generators/move/move.d.ts +1 -3
  216. package/src/generators/move/move.js +8 -4
  217. package/src/generators/move/schema.d.ts +3 -0
  218. package/src/generators/move/schema.json +5 -0
  219. package/src/generators/ng-add/migrators/builders/angular-devkit-karma.migrator.js +1 -1
  220. package/src/generators/ng-add/migrators/builders/angular-devkit-ng-packagr.migrator.js +3 -4
  221. package/src/generators/ng-add/migrators/builders/angular-eslint-lint.migrator.js +1 -1
  222. package/src/generators/ng-add/migrators/builders/builder.migrator.d.ts +2 -2
  223. package/src/generators/ng-add/migrators/builders/builder.migrator.js +4 -4
  224. package/src/generators/ng-add/migrators/projects/e2e.migrator.js +4 -4
  225. package/src/generators/ng-add/migrators/projects/project.migrator.js +1 -1
  226. package/src/generators/ng-add/utilities/validation-logging.js +4 -5
  227. package/src/generators/ng-add/utilities/workspace.js +2 -5
  228. package/src/generators/ngrx/ngrx.d.ts +0 -3
  229. package/src/generators/ngrx/ngrx.js +0 -3
  230. package/src/generators/ngrx/schema.json +1 -1
  231. package/src/generators/ngrx-feature-store/schema.d.ts +1 -1
  232. package/src/generators/ngrx-root-store/lib/add-imports.js +4 -4
  233. package/src/generators/ngrx-root-store/lib/normalize-options.js +2 -3
  234. package/src/generators/pipe/files/__fileName__.ts__tpl__ +2 -2
  235. package/src/generators/pipe/lib/normalize-options.js +7 -6
  236. package/src/generators/pipe/pipe.js +0 -5
  237. package/src/generators/pipe/schema.d.ts +17 -2
  238. package/src/generators/pipe/schema.json +28 -20
  239. package/src/generators/remote/files/base/webpack.server.config.js__tmpl__ +1 -1
  240. package/src/generators/remote/files/base-ts/webpack.server.config.ts__tmpl__ +1 -1
  241. package/src/generators/remote/files/common/pre-v17/src/main.server.ts__tmpl__ +72 -0
  242. package/src/generators/remote/files/common/{src → v17+/src}/main.server.ts__tmpl__ +1 -1
  243. package/src/generators/remote/lib/update-ssr-setup.js +3 -7
  244. package/src/generators/remote/remote.d.ts +2 -1
  245. package/src/generators/remote/remote.js +14 -38
  246. package/src/generators/remote/schema.d.ts +5 -4
  247. package/src/generators/remote/schema.json +25 -32
  248. package/src/generators/scam/lib/normalize-options.js +7 -6
  249. package/src/generators/scam/scam.js +2 -0
  250. package/src/generators/scam/schema.d.ts +17 -3
  251. package/src/generators/scam/schema.json +30 -16
  252. package/src/generators/scam-directive/lib/normalize-options.js +7 -6
  253. package/src/generators/scam-directive/scam-directive.js +2 -0
  254. package/src/generators/scam-directive/schema.d.ts +17 -3
  255. package/src/generators/scam-directive/schema.json +31 -16
  256. package/src/generators/scam-pipe/lib/normalize-options.js +7 -6
  257. package/src/generators/scam-pipe/scam-pipe.js +2 -0
  258. package/src/generators/scam-pipe/schema.d.ts +17 -3
  259. package/src/generators/scam-pipe/schema.json +31 -16
  260. package/src/generators/scam-to-standalone/lib/convert-scam-to-standalone.d.ts +1 -1
  261. package/src/generators/scam-to-standalone/lib/convert-scam-to-standalone.js +4 -5
  262. package/src/generators/scam-to-standalone/lib/replace-module-usages-with-component.js +1 -3
  263. package/src/generators/setup-mf/files/entry-module-files/entry.component.ts__tmpl__ +1 -2
  264. package/src/generators/setup-mf/files/standalone-entry-component-files/entry.component.ts__tmpl__ +2 -2
  265. package/src/generators/setup-mf/files/ts-webpack/module-federation.config.ts__tmpl__ +1 -4
  266. package/src/generators/setup-mf/files/ts-webpack/webpack.config.ts__tmpl__ +1 -1
  267. package/src/generators/setup-mf/files/ts-webpack/webpack.prod.config.ts__tmpl__ +1 -1
  268. package/src/generators/setup-mf/files/webpack/module-federation.config.js__tmpl__ +0 -3
  269. package/src/generators/setup-mf/files/webpack/webpack.config.js__tmpl__ +1 -1
  270. package/src/generators/setup-mf/files/webpack/webpack.prod.config.js__tmpl__ +1 -1
  271. package/src/generators/setup-mf/lib/add-remote-entry.js +0 -5
  272. package/src/generators/setup-mf/lib/add-remote-to-host.js +8 -21
  273. package/src/generators/setup-mf/lib/fix-bootstrap.js +2 -3
  274. package/src/generators/setup-mf/lib/setup-serve-target.js +0 -1
  275. package/src/generators/setup-mf/lib/setup-tspath-for-remote.js +1 -1
  276. package/src/generators/setup-mf/schema.json +3 -5
  277. package/src/generators/setup-mf/setup-mf.js +2 -5
  278. package/src/generators/setup-ssr/files/{pre-v19/server → server}/application-builder/__serverFileName__ +1 -1
  279. package/src/generators/setup-ssr/files/{v19+/server-builder/server → server/server-builder/pre-v17}/__serverFileName__ +15 -25
  280. package/src/generators/setup-ssr/files/{pre-v19/server/server-builder → server/server-builder/v17+}/__serverFileName__ +1 -1
  281. package/src/generators/setup-ssr/lib/add-dependencies.js +17 -6
  282. package/src/generators/setup-ssr/lib/add-hydration.d.ts +2 -2
  283. package/src/generators/setup-ssr/lib/add-hydration.js +2 -10
  284. package/src/generators/setup-ssr/lib/add-server-file.d.ts +2 -2
  285. package/src/generators/setup-ssr/lib/add-server-file.js +10 -24
  286. package/src/generators/setup-ssr/lib/generate-files.d.ts +2 -2
  287. package/src/generators/setup-ssr/lib/generate-files.js +8 -31
  288. package/src/generators/setup-ssr/lib/generate-server-ts-config.d.ts +3 -3
  289. package/src/generators/setup-ssr/lib/generate-server-ts-config.js +3 -24
  290. package/src/generators/setup-ssr/lib/normalize-options.d.ts +14 -3
  291. package/src/generators/setup-ssr/lib/normalize-options.js +6 -27
  292. package/src/generators/setup-ssr/lib/set-router-initial-navigation.d.ts +2 -2
  293. package/src/generators/setup-ssr/lib/update-project-config.d.ts +3 -3
  294. package/src/generators/setup-ssr/lib/update-project-config.js +24 -37
  295. package/src/generators/setup-ssr/lib/validate-options.js +0 -5
  296. package/src/generators/setup-ssr/schema.d.ts +0 -5
  297. package/src/generators/setup-ssr/schema.json +8 -6
  298. package/src/generators/setup-ssr/setup-ssr.js +11 -6
  299. package/src/generators/setup-tailwind/lib/add-tailwind-config-path-to-project.d.ts +3 -0
  300. package/src/generators/setup-tailwind/lib/{validate-build-target.js → add-tailwind-config-path-to-project.js} +15 -5
  301. package/src/generators/setup-tailwind/lib/index.d.ts +1 -1
  302. package/src/generators/setup-tailwind/lib/index.js +1 -1
  303. package/src/generators/setup-tailwind/lib/update-application-styles.js +1 -1
  304. package/src/generators/setup-tailwind/setup-tailwind.js +1 -4
  305. package/src/generators/stories/lib/get-e2e-project.d.ts +2 -0
  306. package/src/generators/stories/lib/get-e2e-project.js +14 -0
  307. package/src/generators/stories/schema.d.ts +2 -0
  308. package/src/generators/stories/schema.json +10 -0
  309. package/src/generators/stories/stories.js +21 -2
  310. package/src/generators/storybook-configuration/lib/generate-stories.js +6 -0
  311. package/src/generators/storybook-configuration/lib/generate-storybook-configuration.js +2 -0
  312. package/src/generators/storybook-configuration/lib/validate-options.d.ts +2 -0
  313. package/src/generators/storybook-configuration/lib/validate-options.js +8 -0
  314. package/src/generators/storybook-configuration/schema.d.ts +3 -0
  315. package/src/generators/storybook-configuration/schema.json +15 -0
  316. package/src/generators/storybook-configuration/storybook-configuration.js +3 -0
  317. package/src/generators/utils/add-jest.d.ts +0 -1
  318. package/src/generators/utils/add-jest.js +9 -5
  319. package/src/generators/utils/ensure-angular-dependencies.js +1 -0
  320. package/src/generators/utils/storybook-ast/component-info.js +3 -13
  321. package/src/generators/utils/testing.js +28 -15
  322. package/src/generators/utils/validations.d.ts +0 -1
  323. package/src/generators/utils/validations.js +0 -10
  324. package/src/generators/utils/version-utils.d.ts +0 -1
  325. package/src/generators/utils/version-utils.js +2 -7
  326. package/src/migrations/{update-20-2-0/update-angular-ssr-imports-to-use-node-entry-point.d.ts → update-14-2-0/remove-show-circular-dependencies-option.d.ts} +1 -1
  327. package/src/migrations/update-14-2-0/remove-show-circular-dependencies-option.js +23 -0
  328. package/src/migrations/{update-20-4-0 → update-14-2-0}/update-angular-cli.d.ts +0 -1
  329. package/src/migrations/{update-20-4-0 → update-14-2-0}/update-angular-cli.js +3 -4
  330. package/src/migrations/update-14-2-0/update-libraries-secondary-entrypoints.d.ts +2 -0
  331. package/src/migrations/update-14-2-0/update-libraries-secondary-entrypoints.js +34 -0
  332. package/src/migrations/update-14-2-0/update-ngcc-target.d.ts +2 -0
  333. package/src/migrations/update-14-2-0/update-ngcc-target.js +17 -0
  334. package/src/migrations/{update-20-2-0/disable-angular-eslint-prefer-standalone.d.ts → update-14-2-0/update-router-initial-navigation.d.ts} +1 -1
  335. package/src/migrations/update-14-2-0/update-router-initial-navigation.js +73 -0
  336. package/src/migrations/update-14-2-0/update-tsconfig-target.d.ts +2 -0
  337. package/src/migrations/update-14-2-0/update-tsconfig-target.js +155 -0
  338. package/src/migrations/update-14-5-0/migrate-mfe-to-mf.d.ts +5 -0
  339. package/src/migrations/update-14-5-0/migrate-mfe-to-mf.js +90 -0
  340. package/src/migrations/{update-20-2-0 → update-14-5-2}/update-angular-cli.d.ts +0 -1
  341. package/src/migrations/{update-20-5-0 → update-14-5-2}/update-angular-cli.js +3 -4
  342. package/src/migrations/{update-20-5-0 → update-14-6-0}/update-angular-cli.d.ts +0 -1
  343. package/src/migrations/update-14-6-0/update-angular-cli.js +22 -0
  344. package/src/migrations/update-14-8-0/rename-webpack-server.d.ts +2 -0
  345. package/src/migrations/update-14-8-0/rename-webpack-server.js +21 -0
  346. package/src/migrations/update-15-0-0/add-karma-inputs.d.ts +2 -0
  347. package/src/migrations/update-15-0-0/add-karma-inputs.js +41 -0
  348. package/src/migrations/update-15-0-0/switch-to-jasmine-marbles.d.ts +2 -0
  349. package/src/migrations/update-15-0-0/switch-to-jasmine-marbles.js +102 -0
  350. package/src/migrations/update-15-2-0/remove-browserlist-config.d.ts +4 -0
  351. package/src/migrations/update-15-2-0/remove-browserlist-config.js +59 -0
  352. package/src/migrations/{update-21-0-0/change-data-persistence-operators-imports-to-ngrx-router-store-data-persistence.d.ts → update-15-2-0/remove-platform-server-exports.d.ts} +1 -1
  353. package/src/migrations/update-15-2-0/remove-platform-server-exports.js +62 -0
  354. package/src/migrations/update-15-2-0/update-angular-cli.d.ts +2 -0
  355. package/src/migrations/update-15-2-0/update-angular-cli.js +22 -0
  356. package/src/migrations/update-15-2-0/update-karma-main-file.d.ts +2 -0
  357. package/src/migrations/update-15-2-0/update-karma-main-file.js +72 -0
  358. package/src/migrations/update-15-2-0/update-typescript-target.d.ts +2 -0
  359. package/src/migrations/update-15-2-0/update-typescript-target.js +52 -0
  360. package/src/migrations/update-15-2-0/update-workspace-config.d.ts +2 -0
  361. package/src/migrations/update-15-2-0/update-workspace-config.js +24 -0
  362. package/src/migrations/update-15-5-0/update-angular-cli.d.ts +2 -0
  363. package/src/migrations/update-15-5-0/update-angular-cli.js +22 -0
  364. package/src/migrations/update-15-7-0/install-required-packages.d.ts +2 -0
  365. package/src/migrations/update-15-7-0/install-required-packages.js +36 -0
  366. package/src/migrations/update-15-8-0/update-angular-cli.d.ts +2 -0
  367. package/src/migrations/update-15-8-0/update-angular-cli.js +22 -0
  368. package/src/migrations/update-15-9-0/update-file-server-executor.d.ts +2 -0
  369. package/src/migrations/update-15-9-0/update-file-server-executor.js +42 -0
  370. package/src/migrations/update-15-9-0/update-testing-tsconfig.d.ts +3 -0
  371. package/src/migrations/update-15-9-0/update-testing-tsconfig.js +32 -0
  372. package/src/migrations/update-16-0-0/remove-karma-defaults.d.ts +2 -0
  373. package/src/migrations/update-16-0-0/remove-karma-defaults.js +52 -0
  374. package/src/migrations/update-16-0-0/remove-library-generator-simple-module-name-option.d.ts +2 -0
  375. package/src/migrations/update-16-0-0/remove-library-generator-simple-module-name-option.js +40 -0
  376. package/src/migrations/update-16-0-0/remove-protractor-defaults.d.ts +2 -0
  377. package/src/migrations/update-16-0-0/remove-protractor-defaults.js +52 -0
  378. package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.d.ts +2 -0
  379. package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.js +9 -0
  380. package/src/migrations/update-16-1-0/extract-standalone-config-from-bootstrap.d.ts +2 -0
  381. package/src/migrations/update-16-1-0/extract-standalone-config-from-bootstrap.js +127 -0
  382. package/src/migrations/update-16-1-0/remove-ngcc-invocation.d.ts +2 -0
  383. package/src/migrations/update-16-1-0/remove-ngcc-invocation.js +22 -0
  384. package/src/migrations/update-16-1-0/remove-render-module-platform-server-exports.d.ts +2 -0
  385. package/src/migrations/update-16-1-0/remove-render-module-platform-server-exports.js +62 -0
  386. package/src/migrations/update-16-1-0/update-angular-cli.d.ts +3 -0
  387. package/src/migrations/{update-20-2-0 → update-16-1-0}/update-angular-cli.js +1 -1
  388. package/src/migrations/update-16-1-0/update-server-executor-config.d.ts +2 -0
  389. package/src/migrations/update-16-1-0/update-server-executor-config.js +26 -0
  390. package/src/migrations/update-16-2-0/switch-data-persistence-operators-imports-to-ngrx-router-store.js +4 -4
  391. package/src/migrations/update-19-6-0/turn-off-dts-by-default.js +2 -2
  392. package/src/plugins/plugin.js +2 -7
  393. package/src/runtime/nx/data-persistence.d.ts +276 -0
  394. package/src/utils/backward-compatible-versions.d.ts +4 -4
  395. package/src/utils/backward-compatible-versions.js +23 -27
  396. package/src/utils/mf/utils.d.ts +15 -0
  397. package/src/utils/mf/utils.js +101 -0
  398. package/src/utils/mf/with-module-federation-ssr.d.ts +2 -0
  399. package/src/utils/mf/with-module-federation-ssr.js +68 -0
  400. package/src/utils/mf/with-module-federation.d.ts +2 -0
  401. package/src/utils/mf/with-module-federation.js +70 -0
  402. package/src/utils/nx-devkit/ast-utils.d.ts +2 -3
  403. package/src/utils/nx-devkit/ast-utils.js +4 -22
  404. package/src/utils/test-runners.d.ts +1 -2
  405. package/src/utils/test-runners.js +0 -1
  406. package/src/utils/versions.d.ts +11 -13
  407. package/src/utils/versions.js +12 -14
  408. package/testing/index.d.ts +1 -0
  409. package/testing/ng-package.json +6 -0
  410. package/testing/src/testing-utils.d.ts +33 -0
  411. package/src/executors/application/utils/normalize-options.d.ts +0 -2
  412. package/src/executors/application/utils/normalize-options.js +0 -34
  413. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/entry-point.d.ts +0 -3
  414. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/entry-point.js +0 -22
  415. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.di.d.ts +0 -2
  416. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.di.js +0 -17
  417. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.transform.js +0 -49
  418. package/src/executors/utilities/ng-packagr/ng-packagr-version.d.ts +0 -2
  419. package/src/executors/utilities/ng-packagr/ng-packagr-version.js +0 -11
  420. package/src/executors/utilities/ng-packagr/package-imports.d.ts +0 -1
  421. package/src/executors/utilities/ng-packagr/package-imports.js +0 -10
  422. package/src/executors/utilities/ng-packagr/v19+/stylesheet-processor.d.ts +0 -14
  423. package/src/executors/utilities/ng-packagr/v19+/stylesheet-processor.js +0 -99
  424. package/src/generators/application/files/rspack-ssr/server.ts__tmpl__ +0 -72
  425. package/src/generators/convert-to-rspack/convert-to-rspack.d.ts +0 -4
  426. package/src/generators/convert-to-rspack/convert-to-rspack.js +0 -362
  427. package/src/generators/convert-to-rspack/lib/create-config.d.ts +0 -2
  428. package/src/generators/convert-to-rspack/lib/create-config.js +0 -45
  429. package/src/generators/convert-to-rspack/lib/get-custom-webpack-config.d.ts +0 -6
  430. package/src/generators/convert-to-rspack/lib/get-custom-webpack-config.js +0 -77
  431. package/src/generators/convert-to-rspack/lib/update-tsconfig.d.ts +0 -2
  432. package/src/generators/convert-to-rspack/lib/update-tsconfig.js +0 -26
  433. package/src/generators/convert-to-rspack/lib/validate-supported-executor.d.ts +0 -2
  434. package/src/generators/convert-to-rspack/lib/validate-supported-executor.js +0 -14
  435. package/src/generators/convert-to-rspack/schema.d.ts +0 -5
  436. package/src/generators/convert-to-rspack/schema.json +0 -30
  437. package/src/generators/setup-ssr/files/v19+/application-builder/ngmodule-src/__main__ +0 -1
  438. package/src/generators/setup-ssr/files/v19+/application-builder/ngmodule-src/app/__rootModuleFileName__ +0 -13
  439. package/src/generators/setup-ssr/files/v19+/application-builder/ngmodule-src/app/app.routes.server.ts__tpl__ +0 -8
  440. package/src/generators/setup-ssr/files/v19+/application-builder/server/__serverFileName__ +0 -66
  441. package/src/generators/setup-ssr/files/v19+/application-builder/standalone-src/__main__ +0 -7
  442. package/src/generators/setup-ssr/files/v19+/application-builder/standalone-src/app/app.config.server.ts__tpl__ +0 -14
  443. package/src/generators/setup-ssr/files/v19+/application-builder/standalone-src/app/app.routes.server.ts__tpl__ +0 -8
  444. package/src/generators/setup-ssr/files/v19+/application-builder-common-engine/server/__serverFileName__ +0 -67
  445. package/src/generators/setup-ssr/files/v19+/server-builder/ngmodule-src/__main__ +0 -1
  446. package/src/generators/setup-ssr/files/v19+/server-builder/ngmodule-src/app/__rootModuleFileName__ +0 -14
  447. package/src/generators/setup-ssr/files/v19+/server-builder/root/tsconfig.server.json.template +0 -16
  448. package/src/generators/setup-ssr/files/v19+/server-builder/standalone-src/__main__ +0 -7
  449. package/src/generators/setup-ssr/files/v19+/server-builder/standalone-src/app/app.config.server.ts.template +0 -11
  450. package/src/generators/setup-tailwind/lib/validate-build-target.d.ts +0 -3
  451. package/src/generators/utils/add-vitest.d.ts +0 -9
  452. package/src/generators/utils/add-vitest.js +0 -21
  453. package/src/generators/utils/assert-mf-utils.d.ts +0 -1
  454. package/src/generators/utils/assert-mf-utils.js +0 -11
  455. package/src/migrations/update-20-2-0/add-localize-polyfill-to-targets.d.ts +0 -3
  456. package/src/migrations/update-20-2-0/add-localize-polyfill-to-targets.js +0 -55
  457. package/src/migrations/update-20-2-0/disable-angular-eslint-prefer-standalone.js +0 -55
  458. package/src/migrations/update-20-2-0/migrate-mf-imports-to-new-package.d.ts +0 -2
  459. package/src/migrations/update-20-2-0/migrate-mf-imports-to-new-package.js +0 -61
  460. package/src/migrations/update-20-2-0/migrate-with-mf-import-to-new-package.d.ts +0 -2
  461. package/src/migrations/update-20-2-0/migrate-with-mf-import-to-new-package.js +0 -41
  462. package/src/migrations/update-20-2-0/remove-angular-eslint-rules.d.ts +0 -3
  463. package/src/migrations/update-20-2-0/remove-angular-eslint-rules.js +0 -62
  464. package/src/migrations/update-20-2-0/remove-tailwind-config-from-ng-packagr-executors.d.ts +0 -3
  465. package/src/migrations/update-20-2-0/remove-tailwind-config-from-ng-packagr-executors.js +0 -73
  466. package/src/migrations/update-20-2-0/update-angular-ssr-imports-to-use-node-entry-point.js +0 -55
  467. package/src/migrations/update-20-3-0/ensure-nx-module-federation-package.d.ts +0 -2
  468. package/src/migrations/update-20-3-0/ensure-nx-module-federation-package.js +0 -18
  469. package/src/migrations/update-21-0-0/change-data-persistence-operators-imports-to-ngrx-router-store-data-persistence.js +0 -122
  470. package/src/migrations/update-21-0-0/set-continuous-option.d.ts +0 -3
  471. package/src/migrations/update-21-0-0/set-continuous-option.js +0 -29
  472. /package/src/executors/utilities/ng-packagr/{pre-v19/stylesheet-processor.d.ts → stylesheet-processor.d.ts} +0 -0
  473. /package/src/generators/setup-ssr/files/{pre-v19/ngmodule-src → ngmodule/src}/__main__ +0 -0
  474. /package/src/generators/setup-ssr/files/{pre-v19/ngmodule-src → ngmodule/src}/app/__rootModuleFileName__ +0 -0
  475. /package/src/generators/setup-ssr/files/{pre-v19/root → root}/tsconfig.server.json__tpl__ +0 -0
  476. /package/src/generators/setup-ssr/files/{pre-v19/standalone-src → standalone/src}/__main__ +0 -0
  477. /package/src/generators/setup-ssr/files/{pre-v19/standalone-src → standalone/src}/app/app.config.server.ts__tpl__ +0 -0
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  (The MIT License)
2
2
 
3
- Copyright (c) 2017-2025 Narwhal Technologies Inc.
3
+ Copyright (c) 2017-2024 Narwhal Technologies Inc.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining
6
6
  a copy of this software and associated documentation files (the
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  [![CircleCI](https://circleci.com/gh/nrwl/nx.svg?style=svg)](https://circleci.com/gh/nrwl/nx)
11
11
  [![License](https://img.shields.io/npm/l/@nx/workspace.svg?style=flat-square)]()
12
- [![NPM Version](https://badge.fury.io/js/nx.svg)](https://www.npmjs.com/package/nx)
12
+ [![NPM Version](https://badge.fury.io/js/%40nrwl%2Fworkspace.svg)](https://www.npmjs.com/@nx/workspace)
13
13
  [![Semantic Release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg?style=flat-square)]()
14
14
  [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)
15
15
  [![Join the chat at https://gitter.im/nrwl-nx/community](https://badges.gitter.im/nrwl-nx/community.svg)](https://gitter.im/nrwl-nx/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
@@ -0,0 +1,2 @@
1
+ export { fetch, navigation, optimisticUpdate, pessimisticUpdate, } from './src/runtime/nx/data-persistence';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixpQkFBaUIsR0FDbEIsTUFBTSxtQ0FBbUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIGZldGNoLFxuICBuYXZpZ2F0aW9uLFxuICBvcHRpbWlzdGljVXBkYXRlLFxuICBwZXNzaW1pc3RpY1VwZGF0ZSxcbn0gZnJvbSAnLi9zcmMvcnVudGltZS9ueC9kYXRhLXBlcnNpc3RlbmNlJztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export { setRemoteUrlResolver, setRemoteDefinitions, setRemoteDefinition, loadRemoteModule, } from './mf';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL21mL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixnQkFBZ0IsR0FDakIsTUFBTSxNQUFNLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBzZXRSZW1vdGVVcmxSZXNvbHZlcixcbiAgc2V0UmVtb3RlRGVmaW5pdGlvbnMsXG4gIHNldFJlbW90ZURlZmluaXRpb24sXG4gIGxvYWRSZW1vdGVNb2R1bGUsXG59IGZyb20gJy4vbWYnO1xuIl19
@@ -0,0 +1,52 @@
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
+ export function setRemoteDefinition(remoteName, remoteUrl) {
10
+ remoteUrlDefinitions ??= {};
11
+ remoteUrlDefinitions[remoteName] = remoteUrl;
12
+ }
13
+ let remoteModuleMap = new Map();
14
+ let remoteContainerMap = new Map();
15
+ export async function loadRemoteModule(remoteName, moduleName) {
16
+ const remoteModuleKey = `${remoteName}:${moduleName}`;
17
+ if (remoteModuleMap.has(remoteModuleKey)) {
18
+ return remoteModuleMap.get(remoteModuleKey);
19
+ }
20
+ const container = remoteContainerMap.has(remoteName)
21
+ ? remoteContainerMap.get(remoteName)
22
+ : await loadRemoteContainer(remoteName);
23
+ const factory = await container.get(moduleName);
24
+ const Module = factory();
25
+ remoteModuleMap.set(remoteModuleKey, Module);
26
+ return Module;
27
+ }
28
+ function loadModule(url) {
29
+ return import(/* webpackIgnore:true */ url);
30
+ }
31
+ let initialSharingScopeCreated = false;
32
+ async function loadRemoteContainer(remoteName) {
33
+ if (!resolveRemoteUrl && !remoteUrlDefinitions) {
34
+ throw new Error('Call setRemoteDefinitions or setRemoteUrlResolver to allow Dynamic Federation to find the remote apps correctly.');
35
+ }
36
+ if (!initialSharingScopeCreated) {
37
+ initialSharingScopeCreated = true;
38
+ await __webpack_init_sharing__('default');
39
+ }
40
+ const remoteUrl = remoteUrlDefinitions
41
+ ? remoteUrlDefinitions[remoteName]
42
+ : await resolveRemoteUrl(remoteName);
43
+ let containerUrl = remoteUrl;
44
+ if (!remoteUrl.endsWith('.mjs') && !remoteUrl.endsWith('.js')) {
45
+ containerUrl = `${remoteUrl}${remoteUrl.endsWith('/') ? '' : '/'}remoteEntry.mjs`;
46
+ }
47
+ const container = await loadModule(containerUrl);
48
+ await container.init(__webpack_share_scopes__.default);
49
+ remoteContainerMap.set(remoteName, container);
50
+ return container;
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL21mL21mLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLElBQUksZ0JBQTBDLENBQUM7QUFFL0MsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxpQkFBMkM7SUFFM0MsZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUM7QUFDdkMsQ0FBQztBQUVELElBQUksb0JBQTRDLENBQUM7QUFFakQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFdBQW1DO0lBQ3RFLG9CQUFvQixHQUFHLFdBQVcsQ0FBQztBQUNyQyxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFVBQWtCLEVBQUUsU0FBaUI7SUFDdkUsb0JBQW9CLEtBQUssRUFBRSxDQUFDO0lBQzVCLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUMvQyxDQUFDO0FBRUQsSUFBSSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7QUFDakQsSUFBSSxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztBQUVwRCxNQUFNLENBQUMsS0FBSyxVQUFVLGdCQUFnQixDQUFDLFVBQWtCLEVBQUUsVUFBa0I7SUFDM0UsTUFBTSxlQUFlLEdBQUcsR0FBRyxVQUFVLElBQUksVUFBVSxFQUFFLENBQUM7SUFDdEQsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7UUFDekMsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQ2xELENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxNQUFNLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTFDLE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoRCxNQUFNLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQztJQUV6QixlQUFlLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUU3QyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsR0FBVztJQUM3QixPQUFPLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQsSUFBSSwwQkFBMEIsR0FBRyxLQUFLLENBQUM7QUFFdkMsS0FBSyxVQUFVLG1CQUFtQixDQUFDLFVBQWtCO0lBQ25ELElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDL0MsTUFBTSxJQUFJLEtBQUssQ0FDYixrSEFBa0gsQ0FDbkgsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUNoQywwQkFBMEIsR0FBRyxJQUFJLENBQUM7UUFDbEMsTUFBTSx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsb0JBQW9CO1FBQ3BDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUM7UUFDbEMsQ0FBQyxDQUFDLE1BQU0sZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFdkMsSUFBSSxZQUFZLEdBQUcsU0FBUyxDQUFDO0lBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzlELFlBQVksR0FBRyxHQUFHLFNBQVMsR0FDekIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUNqQyxpQkFBaUIsQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakQsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXZELGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDOUMsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFJlc29sdmVSZW1vdGVVcmxGdW5jdGlvbiA9IChcbiAgcmVtb3RlTmFtZTogc3RyaW5nXG4pID0+IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPjtcblxuZGVjbGFyZSBjb25zdCBfX3dlYnBhY2tfaW5pdF9zaGFyaW5nX186IChzY29wZTogJ2RlZmF1bHQnKSA9PiBQcm9taXNlPHZvaWQ+O1xuZGVjbGFyZSBjb25zdCBfX3dlYnBhY2tfc2hhcmVfc2NvcGVzX186IHsgZGVmYXVsdDogdW5rbm93biB9O1xuXG5sZXQgcmVzb2x2ZVJlbW90ZVVybDogUmVzb2x2ZVJlbW90ZVVybEZ1bmN0aW9uO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0UmVtb3RlVXJsUmVzb2x2ZXIoXG4gIF9yZXNvbHZlUmVtb3RlVXJsOiBSZXNvbHZlUmVtb3RlVXJsRnVuY3Rpb25cbikge1xuICByZXNvbHZlUmVtb3RlVXJsID0gX3Jlc29sdmVSZW1vdGVVcmw7XG59XG5cbmxldCByZW1vdGVVcmxEZWZpbml0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFJlbW90ZURlZmluaXRpb25zKGRlZmluaXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG4gIHJlbW90ZVVybERlZmluaXRpb25zID0gZGVmaW5pdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZW1vdGVEZWZpbml0aW9uKHJlbW90ZU5hbWU6IHN0cmluZywgcmVtb3RlVXJsOiBzdHJpbmcpIHtcbiAgcmVtb3RlVXJsRGVmaW5pdGlvbnMgPz89IHt9O1xuICByZW1vdGVVcmxEZWZpbml0aW9uc1tyZW1vdGVOYW1lXSA9IHJlbW90ZVVybDtcbn1cblxubGV0IHJlbW90ZU1vZHVsZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCB1bmtub3duPigpO1xubGV0IHJlbW90ZUNvbnRhaW5lck1hcCA9IG5ldyBNYXA8c3RyaW5nLCB1bmtub3duPigpO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFJlbW90ZU1vZHVsZShyZW1vdGVOYW1lOiBzdHJpbmcsIG1vZHVsZU5hbWU6IHN0cmluZykge1xuICBjb25zdCByZW1vdGVNb2R1bGVLZXkgPSBgJHtyZW1vdGVOYW1lfToke21vZHVsZU5hbWV9YDtcbiAgaWYgKHJlbW90ZU1vZHVsZU1hcC5oYXMocmVtb3RlTW9kdWxlS2V5KSkge1xuICAgIHJldHVybiByZW1vdGVNb2R1bGVNYXAuZ2V0KHJlbW90ZU1vZHVsZUtleSk7XG4gIH1cblxuICBjb25zdCBjb250YWluZXIgPSByZW1vdGVDb250YWluZXJNYXAuaGFzKHJlbW90ZU5hbWUpXG4gICAgPyByZW1vdGVDb250YWluZXJNYXAuZ2V0KHJlbW90ZU5hbWUpXG4gICAgOiBhd2FpdCBsb2FkUmVtb3RlQ29udGFpbmVyKHJlbW90ZU5hbWUpO1xuXG4gIGNvbnN0IGZhY3RvcnkgPSBhd2FpdCBjb250YWluZXIuZ2V0KG1vZHVsZU5hbWUpO1xuICBjb25zdCBNb2R1bGUgPSBmYWN0b3J5KCk7XG5cbiAgcmVtb3RlTW9kdWxlTWFwLnNldChyZW1vdGVNb2R1bGVLZXksIE1vZHVsZSk7XG5cbiAgcmV0dXJuIE1vZHVsZTtcbn1cblxuZnVuY3Rpb24gbG9hZE1vZHVsZSh1cmw6IHN0cmluZykge1xuICByZXR1cm4gaW1wb3J0KC8qIHdlYnBhY2tJZ25vcmU6dHJ1ZSAqLyB1cmwpO1xufVxuXG5sZXQgaW5pdGlhbFNoYXJpbmdTY29wZUNyZWF0ZWQgPSBmYWxzZTtcblxuYXN5bmMgZnVuY3Rpb24gbG9hZFJlbW90ZUNvbnRhaW5lcihyZW1vdGVOYW1lOiBzdHJpbmcpIHtcbiAgaWYgKCFyZXNvbHZlUmVtb3RlVXJsICYmICFyZW1vdGVVcmxEZWZpbml0aW9ucykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdDYWxsIHNldFJlbW90ZURlZmluaXRpb25zIG9yIHNldFJlbW90ZVVybFJlc29sdmVyIHRvIGFsbG93IER5bmFtaWMgRmVkZXJhdGlvbiB0byBmaW5kIHRoZSByZW1vdGUgYXBwcyBjb3JyZWN0bHkuJ1xuICAgICk7XG4gIH1cblxuICBpZiAoIWluaXRpYWxTaGFyaW5nU2NvcGVDcmVhdGVkKSB7XG4gICAgaW5pdGlhbFNoYXJpbmdTY29wZUNyZWF0ZWQgPSB0cnVlO1xuICAgIGF3YWl0IF9fd2VicGFja19pbml0X3NoYXJpbmdfXygnZGVmYXVsdCcpO1xuICB9XG5cbiAgY29uc3QgcmVtb3RlVXJsID0gcmVtb3RlVXJsRGVmaW5pdGlvbnNcbiAgICA/IHJlbW90ZVVybERlZmluaXRpb25zW3JlbW90ZU5hbWVdXG4gICAgOiBhd2FpdCByZXNvbHZlUmVtb3RlVXJsKHJlbW90ZU5hbWUpO1xuXG4gIGxldCBjb250YWluZXJVcmwgPSByZW1vdGVVcmw7XG4gIGlmICghcmVtb3RlVXJsLmVuZHNXaXRoKCcubWpzJykgJiYgIXJlbW90ZVVybC5lbmRzV2l0aCgnLmpzJykpIHtcbiAgICBjb250YWluZXJVcmwgPSBgJHtyZW1vdGVVcmx9JHtcbiAgICAgIHJlbW90ZVVybC5lbmRzV2l0aCgnLycpID8gJycgOiAnLydcbiAgICB9cmVtb3RlRW50cnkubWpzYDtcbiAgfVxuXG4gIGNvbnN0IGNvbnRhaW5lciA9IGF3YWl0IGxvYWRNb2R1bGUoY29udGFpbmVyVXJsKTtcbiAgYXdhaXQgY29udGFpbmVyLmluaXQoX193ZWJwYWNrX3NoYXJlX3Njb3Blc19fLmRlZmF1bHQpO1xuXG4gIHJlbW90ZUNvbnRhaW5lck1hcC5zZXQocmVtb3RlTmFtZSwgY29udGFpbmVyKTtcbiAgcmV0dXJuIGNvbnRhaW5lcjtcbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtYW5ndWxhci1tZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbWYvbngtYW5ndWxhci1tZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtYW5ndWxhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbngtYW5ndWxhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,349 @@
1
+ import { ROUTER_NAVIGATION } from '@ngrx/router-store';
2
+ import { isObservable, of } from 'rxjs';
3
+ import { catchError, concatMap, filter, groupBy, map, mergeMap, switchMap, } from 'rxjs/operators';
4
+ /**
5
+ * @whatItDoes Handles pessimistic updates (updating the server first).
6
+ *
7
+ * Updating the server, when implemented naively, suffers from race conditions and poor error handling.
8
+ *
9
+ * `pessimisticUpdate` addresses these problems. It runs all fetches in order, which removes race conditions
10
+ * and forces the developer to handle errors.
11
+ *
12
+ * ## Example:
13
+ *
14
+ * ```typescript
15
+ * @Injectable()
16
+ * class TodoEffects {
17
+ * updateTodo$ = createEffect(() =>
18
+ * this.actions$.pipe(
19
+ * ofType('UPDATE_TODO'),
20
+ * pessimisticUpdate({
21
+ * // provides an action
22
+ * run: (action: UpdateTodo) => {
23
+ * // update the backend first, and then dispatch an action that will
24
+ * // update the client side
25
+ * return this.backend.updateTodo(action.todo.id, action.todo).pipe(
26
+ * map((updated) => ({
27
+ * type: 'UPDATE_TODO_SUCCESS',
28
+ * todo: updated,
29
+ * }))
30
+ * );
31
+ * },
32
+ * onError: (action: UpdateTodo, error: any) => {
33
+ * // we don't need to undo the changes on the client side.
34
+ * // we can dispatch an error, or simply log the error here and return `null`
35
+ * return null;
36
+ * },
37
+ * })
38
+ * )
39
+ * );
40
+ *
41
+ * constructor(private actions$: Actions, private backend: Backend) {}
42
+ * }
43
+ * ```
44
+ *
45
+ * Note that if you don't return a new action from the run callback, you must set the dispatch property
46
+ * of the effect to false, like this:
47
+ *
48
+ * ```typescript
49
+ * class TodoEffects {
50
+ * updateTodo$ = createEffect(() =>
51
+ * this.actions$.pipe(
52
+ * //...
53
+ * ), { dispatch: false }
54
+ * );
55
+ * }
56
+ * ```
57
+ *
58
+ * @param opts
59
+ *
60
+ * @deprecated This will be removed in Nx v21. Import `pessimisticUpdate` from `@ngrx/router-store/data-persistence` instead.
61
+ */
62
+ export function pessimisticUpdate(opts) {
63
+ return (source) => {
64
+ return source.pipe(mapActionAndState(), concatMap(runWithErrorHandling(opts.run, opts.onError)));
65
+ };
66
+ }
67
+ /**
68
+ * @whatItDoes Handles optimistic updates (updating the client first).
69
+ *
70
+ * It runs all fetches in order, which removes race conditions and forces the developer to handle errors.
71
+ *
72
+ * When using `optimisticUpdate`, in case of a failure, the developer has already updated the state locally,
73
+ * so the developer must provide an undo action.
74
+ *
75
+ * The error handling must be done in the callback, or by means of the undo action.
76
+ *
77
+ * ## Example:
78
+ *
79
+ * ```typescript
80
+ * @Injectable()
81
+ * class TodoEffects {
82
+ * updateTodo$ = createEffect(() =>
83
+ * this.actions$.pipe(
84
+ * ofType('UPDATE_TODO'),
85
+ * optimisticUpdate({
86
+ * // provides an action
87
+ * run: (action: UpdateTodo) => {
88
+ * return this.backend.updateTodo(action.todo.id, action.todo).pipe(
89
+ * mapTo({
90
+ * type: 'UPDATE_TODO_SUCCESS',
91
+ * })
92
+ * );
93
+ * },
94
+ * undoAction: (action: UpdateTodo, error: any) => {
95
+ * // dispatch an undo action to undo the changes in the client state
96
+ * return {
97
+ * type: 'UNDO_TODO_UPDATE',
98
+ * todo: action.todo,
99
+ * };
100
+ * },
101
+ * })
102
+ * )
103
+ * );
104
+ *
105
+ * constructor(private actions$: Actions, private backend: Backend) {}
106
+ * }
107
+ * ```
108
+ *
109
+ * Note that if you don't return a new action from the run callback, you must set the dispatch property
110
+ * of the effect to false, like this:
111
+ *
112
+ * ```typescript
113
+ * class TodoEffects {
114
+ * updateTodo$ = createEffect(() =>
115
+ * this.actions$.pipe(
116
+ * //...
117
+ * ), { dispatch: false }
118
+ * );
119
+ * }
120
+ * ```
121
+ *
122
+ * @param opts
123
+ *
124
+ * @deprecated This will be removed in Nx v21. Import `optimisticUpdate` from `@ngrx/router-store/data-persistence` instead.
125
+ */
126
+ export function optimisticUpdate(opts) {
127
+ return (source) => {
128
+ return source.pipe(mapActionAndState(), concatMap(runWithErrorHandling(opts.run, opts.undoAction)));
129
+ };
130
+ }
131
+ /**
132
+ * @whatItDoes Handles data fetching.
133
+ *
134
+ * Data fetching implemented naively suffers from race conditions and poor error handling.
135
+ *
136
+ * `fetch` addresses these problems. It runs all fetches in order, which removes race conditions
137
+ * and forces the developer to handle errors.
138
+ *
139
+ * ## Example:
140
+ *
141
+ * ```typescript
142
+ * @Injectable()
143
+ * class TodoEffects {
144
+ * loadTodos$ = createEffect(() =>
145
+ * this.actions$.pipe(
146
+ * ofType('GET_TODOS'),
147
+ * fetch({
148
+ * // provides an action
149
+ * run: (a: GetTodos) => {
150
+ * return this.backend.getAll().pipe(
151
+ * map((response) => ({
152
+ * type: 'TODOS',
153
+ * todos: response.todos,
154
+ * }))
155
+ * );
156
+ * },
157
+ * onError: (action: GetTodos, error: any) => {
158
+ * // dispatch an undo action to undo the changes in the client state
159
+ * return null;
160
+ * },
161
+ * })
162
+ * )
163
+ * );
164
+ *
165
+ * constructor(private actions$: Actions, private backend: Backend) {}
166
+ * }
167
+ * ```
168
+ *
169
+ * This is correct, but because it set the concurrency to 1, it may not be performant.
170
+ *
171
+ * To fix that, you can provide the `id` function, like this:
172
+ *
173
+ * ```typescript
174
+ * @Injectable()
175
+ * class TodoEffects {
176
+ * loadTodo$ = createEffect(() =>
177
+ * this.actions$.pipe(
178
+ * ofType('GET_TODO'),
179
+ * fetch({
180
+ * id: (todo: GetTodo) => {
181
+ * return todo.id;
182
+ * },
183
+ * // provides an action
184
+ * run: (todo: GetTodo) => {
185
+ * return this.backend.getTodo(todo.id).map((response) => ({
186
+ * type: 'LOAD_TODO_SUCCESS',
187
+ * todo: response.todo,
188
+ * }));
189
+ * },
190
+ * onError: (action: GetTodo, error: any) => {
191
+ * // dispatch an undo action to undo the changes in the client state
192
+ * return null;
193
+ * },
194
+ * })
195
+ * )
196
+ * );
197
+ *
198
+ * constructor(private actions$: Actions, private backend: Backend) {}
199
+ * }
200
+ * ```
201
+ *
202
+ * With this setup, the requests for Todo 1 will run concurrently with the requests for Todo 2.
203
+ *
204
+ * In addition, if there are multiple requests for Todo 1 scheduled, it will only run the last one.
205
+ *
206
+ * @param opts
207
+ *
208
+ * @deprecated This will be removed in Nx v21. Import `fetch` from `@ngrx/router-store/data-persistence` instead.
209
+ */
210
+ export function fetch(opts) {
211
+ return (source) => {
212
+ if (opts.id) {
213
+ const groupedFetches = source.pipe(mapActionAndState(), groupBy(([action, ...store]) => {
214
+ return opts.id(action, ...store);
215
+ }));
216
+ return groupedFetches.pipe(mergeMap((pairs) => pairs.pipe(switchMap(runWithErrorHandling(opts.run, opts.onError)))));
217
+ }
218
+ return source.pipe(mapActionAndState(), concatMap(runWithErrorHandling(opts.run, opts.onError)));
219
+ };
220
+ }
221
+ /**
222
+ * @whatItDoes Handles data fetching as part of router navigation.
223
+ *
224
+ * Data fetching implemented naively suffers from race conditions and poor error handling.
225
+ *
226
+ * `navigation` addresses these problems.
227
+ *
228
+ * It checks if an activated router state contains the passed in component type, and, if it does, runs the `run`
229
+ * callback. It provides the activated snapshot associated with the component and the current state. And it only runs
230
+ * the last request.
231
+ *
232
+ * ## Example:
233
+ *
234
+ * ```typescript
235
+ * @Injectable()
236
+ * class TodoEffects {
237
+ * loadTodo$ = createEffect(() =>
238
+ * this.actions$.pipe(
239
+ * // listens for the routerNavigation action from @ngrx/router-store
240
+ * navigation(TodoComponent, {
241
+ * run: (activatedRouteSnapshot: ActivatedRouteSnapshot) => {
242
+ * return this.backend
243
+ * .fetchTodo(activatedRouteSnapshot.params['id'])
244
+ * .pipe(
245
+ * map((todo) => ({
246
+ * type: 'LOAD_TODO_SUCCESS',
247
+ * todo: todo,
248
+ * }))
249
+ * );
250
+ * },
251
+ * onError: (
252
+ * activatedRouteSnapshot: ActivatedRouteSnapshot,
253
+ * error: any
254
+ * ) => {
255
+ * // we can log and error here and return null
256
+ * // we can also navigate back
257
+ * return null;
258
+ * },
259
+ * })
260
+ * )
261
+ * );
262
+ *
263
+ * constructor(private actions$: Actions, private backend: Backend) {}
264
+ * }
265
+ * ```
266
+ *
267
+ * @param component
268
+ * @param opts
269
+ *
270
+ * @deprecated This will be removed in Nx v21. Import `navigation` from `@ngrx/router-store/data-persistence` instead.
271
+ */
272
+ export function navigation(component, opts) {
273
+ return (source) => {
274
+ const nav = source.pipe(mapActionAndState(), filter(([action]) => isStateSnapshot(action)), map(([action, ...slices]) => {
275
+ if (!isStateSnapshot(action)) {
276
+ // Because of the above filter we'll never get here,
277
+ // but this properly type narrows `action`
278
+ return;
279
+ }
280
+ return [
281
+ findSnapshot(component, action.payload.routerState.root),
282
+ ...slices,
283
+ ];
284
+ }), filter(([snapshot]) => !!snapshot));
285
+ return nav.pipe(switchMap(runWithErrorHandling(opts.run, opts.onError)));
286
+ };
287
+ }
288
+ function isStateSnapshot(action) {
289
+ return action.type === ROUTER_NAVIGATION;
290
+ }
291
+ function runWithErrorHandling(run, onError) {
292
+ return ([action, ...slices]) => {
293
+ try {
294
+ const r = wrapIntoObservable(run(action, ...slices));
295
+ return r.pipe(catchError((e) => wrapIntoObservable(onError(action, e))));
296
+ }
297
+ catch (e) {
298
+ return wrapIntoObservable(onError(action, e));
299
+ }
300
+ };
301
+ }
302
+ /**
303
+ * @whatItDoes maps Observable<Action | [Action, State]> to
304
+ * Observable<[Action, State]>
305
+ */
306
+ function mapActionAndState() {
307
+ return (source) => {
308
+ return source.pipe(map((value) => normalizeActionAndState(value)));
309
+ };
310
+ }
311
+ /**
312
+ * @whatItDoes Normalizes either a bare action or an array of action and slices
313
+ * into an array of action and slices (or undefined)
314
+ */
315
+ function normalizeActionAndState(args) {
316
+ let action, slices;
317
+ if (args instanceof Array) {
318
+ [action, ...slices] = args;
319
+ }
320
+ else {
321
+ slices = [];
322
+ action = args;
323
+ }
324
+ return [action, ...slices];
325
+ }
326
+ function findSnapshot(component, s) {
327
+ if (s.routeConfig && s.routeConfig.component === component) {
328
+ return s;
329
+ }
330
+ for (const c of s.children) {
331
+ const ss = findSnapshot(component, c);
332
+ if (ss) {
333
+ return ss;
334
+ }
335
+ }
336
+ return null;
337
+ }
338
+ function wrapIntoObservable(obj) {
339
+ if (isObservable(obj)) {
340
+ return obj;
341
+ }
342
+ else if (!obj) {
343
+ return of();
344
+ }
345
+ else {
346
+ return of(obj);
347
+ }
348
+ }
349
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1wZXJzaXN0ZW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvc3JjL3J1bnRpbWUvbngvZGF0YS1wZXJzaXN0ZW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUd2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCxNQUFNLEVBQ04sT0FBTyxFQUNQLEdBQUcsRUFDSCxRQUFRLEVBQ1IsU0FBUyxHQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFxQ3hCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5REc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQy9CLElBQWlDO0lBRWpDLE9BQU8sQ0FBQyxNQUFnQyxFQUFzQixFQUFFO1FBQzlELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDaEIsaUJBQWlCLEVBQUUsRUFDbkIsU0FBUyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQ3hELENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwREc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLElBQWdDO0lBRWhDLE9BQU8sQ0FBQyxNQUFnQyxFQUFzQixFQUFFO1FBQzlELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDaEIsaUJBQWlCLEVBQUUsRUFDbkIsU0FBUyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQzNELENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThFRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQ25CLElBQXFCO0lBRXJCLE9BQU8sQ0FBQyxNQUFnQyxFQUFzQixFQUFFO1FBQzlELElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1osTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FDaEMsaUJBQWlCLEVBQUUsRUFDbkIsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxFQUFFO2dCQUM3QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztZQUVGLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FDeEIsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDakIsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUNwRSxDQUNGLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUNoQixpQkFBaUIsRUFBRSxFQUNuQixTQUFTLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FDeEQsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrREc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUN4QixTQUFvQixFQUNwQixJQUE2QjtJQUU3QixPQUFPLENBQUMsTUFBZ0MsRUFBRSxFQUFFO1FBQzFDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQ3JCLGlCQUFpQixFQUFFLEVBQ25CLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUM3QyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUM3QixvREFBb0Q7Z0JBQ3BELDBDQUEwQztnQkFDMUMsT0FBTztZQUNULENBQUM7WUFFRCxPQUFPO2dCQUNMLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO2dCQUN4RCxHQUFHLE1BQU07YUFDd0IsQ0FBQztRQUN0QyxDQUFDLENBQUMsRUFDRixNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQ25DLENBQUM7UUFFRixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQ3RCLE1BQVc7SUFFWCxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssaUJBQWlCLENBQUM7QUFDM0MsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQzNCLEdBQTBELEVBQzFELE9BQVk7SUFFWixPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQVksRUFBaUIsRUFBRTtRQUN2RCxJQUFJLENBQUM7WUFDSCxNQUFNLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNyRCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNFLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLGlCQUFpQjtJQUN4QixPQUFPLENBQUMsTUFBa0QsRUFBRSxFQUFFO1FBQzVELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDaEIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQWMsQ0FBQyxDQUM1RCxDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsdUJBQXVCLENBQzlCLElBQW9DO0lBRXBDLElBQUksTUFBUyxFQUFFLE1BQVMsQ0FBQztJQUV6QixJQUFJLElBQUksWUFBWSxLQUFLLEVBQUUsQ0FBQztRQUMxQixDQUFDLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sR0FBRyxFQUFPLENBQUM7UUFDakIsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FDbkIsU0FBb0IsRUFDcEIsQ0FBeUI7SUFFekIsSUFBSSxDQUFDLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzNELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUNELEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNCLE1BQU0sRUFBRSxHQUFHLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNQLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFJLEdBQTZCO0lBQzFELElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdEIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO1NBQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDZCxDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sRUFBRSxDQUFDLEdBQVEsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7XG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgdHlwZSB7IFJvdXRlck5hdmlnYXRpb25BY3Rpb24gfSBmcm9tICdAbmdyeC9yb3V0ZXItc3RvcmUnO1xuaW1wb3J0IHsgUk9VVEVSX05BVklHQVRJT04gfSBmcm9tICdAbmdyeC9yb3V0ZXItc3RvcmUnO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgdHlwZSB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGNhdGNoRXJyb3IsXG4gIGNvbmNhdE1hcCxcbiAgZmlsdGVyLFxuICBncm91cEJ5LFxuICBtYXAsXG4gIG1lcmdlTWFwLFxuICBzd2l0Y2hNYXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGludGVyZmFjZSBQZXNzaW1pc3RpY1VwZGF0ZU9wdHM8VCBleHRlbmRzIEFycmF5PHVua25vd24+LCBBPiB7XG4gIHJ1bihhOiBBLCAuLi5zbGljZXM6IFsuLi5UXSk6IE9ic2VydmFibGU8QWN0aW9uPiB8IEFjdGlvbiB8IHZvaWQ7XG4gIG9uRXJyb3IoYTogQSwgZTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHwgYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGltaXN0aWNVcGRhdGVPcHRzPFQgZXh0ZW5kcyBBcnJheTx1bmtub3duPiwgQT4ge1xuICBydW4oYTogQSwgLi4uc2xpY2VzOiBbLi4uVF0pOiBPYnNlcnZhYmxlPEFjdGlvbj4gfCBBY3Rpb24gfCB2b2lkO1xuICB1bmRvQWN0aW9uKGE6IEEsIGU6IGFueSk6IE9ic2VydmFibGU8QWN0aW9uPiB8IEFjdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZXRjaE9wdHM8VCBleHRlbmRzIEFycmF5PHVua25vd24+LCBBPiB7XG4gIGlkPyhhOiBBLCAuLi5zbGljZXM6IFsuLi5UXSk6IGFueTtcbiAgcnVuKGE6IEEsIC4uLnNsaWNlczogWy4uLlRdKTogT2JzZXJ2YWJsZTxBY3Rpb24+IHwgQWN0aW9uIHwgdm9pZDtcbiAgb25FcnJvcj8oYTogQSwgZTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHwgYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhhbmRsZU5hdmlnYXRpb25PcHRzPFQgZXh0ZW5kcyBBcnJheTx1bmtub3duPj4ge1xuICBydW4oXG4gICAgYTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICAuLi5zbGljZXM6IFsuLi5UXVxuICApOiBPYnNlcnZhYmxlPEFjdGlvbj4gfCBBY3Rpb24gfCB2b2lkO1xuICBvbkVycm9yPyhhOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBlOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4gfCBhbnk7XG59XG5cbmV4cG9ydCB0eXBlIEFjdGlvbk9yQWN0aW9uV2l0aFN0YXRlczxUIGV4dGVuZHMgQXJyYXk8dW5rbm93bj4sIEE+ID1cbiAgfCBBXG4gIHwgW0EsIC4uLlRdO1xuZXhwb3J0IHR5cGUgQWN0aW9uT3JBY3Rpb25XaXRoU3RhdGU8VCwgQT4gPSBBY3Rpb25PckFjdGlvbldpdGhTdGF0ZXM8W1RdLCBBPjtcbmV4cG9ydCB0eXBlIEFjdGlvblN0YXRlc1N0cmVhbTxUIGV4dGVuZHMgQXJyYXk8dW5rbm93bj4sIEE+ID0gT2JzZXJ2YWJsZTxcbiAgQWN0aW9uT3JBY3Rpb25XaXRoU3RhdGVzPFQsIEE+XG4+O1xuZXhwb3J0IHR5cGUgQWN0aW9uU3RhdGVTdHJlYW08VCwgQT4gPSBPYnNlcnZhYmxlPFxuICBBY3Rpb25PckFjdGlvbldpdGhTdGF0ZXM8W1RdLCBBPlxuPjtcblxuLyoqXG4gKiBAd2hhdEl0RG9lcyBIYW5kbGVzIHBlc3NpbWlzdGljIHVwZGF0ZXMgKHVwZGF0aW5nIHRoZSBzZXJ2ZXIgZmlyc3QpLlxuICpcbiAqIFVwZGF0aW5nIHRoZSBzZXJ2ZXIsIHdoZW4gaW1wbGVtZW50ZWQgbmFpdmVseSwgc3VmZmVycyBmcm9tIHJhY2UgY29uZGl0aW9ucyBhbmQgcG9vciBlcnJvciBoYW5kbGluZy5cbiAqXG4gKiBgcGVzc2ltaXN0aWNVcGRhdGVgIGFkZHJlc3NlcyB0aGVzZSBwcm9ibGVtcy4gSXQgcnVucyBhbGwgZmV0Y2hlcyBpbiBvcmRlciwgd2hpY2ggcmVtb3ZlcyByYWNlIGNvbmRpdGlvbnNcbiAqIGFuZCBmb3JjZXMgdGhlIGRldmVsb3BlciB0byBoYW5kbGUgZXJyb3JzLlxuICpcbiAqICMjIEV4YW1wbGU6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQEluamVjdGFibGUoKVxuICogY2xhc3MgVG9kb0VmZmVjdHMge1xuICogICB1cGRhdGVUb2RvJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICogICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAqICAgICAgIG9mVHlwZSgnVVBEQVRFX1RPRE8nKSxcbiAqICAgICAgIHBlc3NpbWlzdGljVXBkYXRlKHtcbiAqICAgICAgICAgLy8gcHJvdmlkZXMgYW4gYWN0aW9uXG4gKiAgICAgICAgIHJ1bjogKGFjdGlvbjogVXBkYXRlVG9kbykgPT4ge1xuICogICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgYmFja2VuZCBmaXJzdCwgYW5kIHRoZW4gZGlzcGF0Y2ggYW4gYWN0aW9uIHRoYXQgd2lsbFxuICogICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgY2xpZW50IHNpZGVcbiAqICAgICAgICAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnVwZGF0ZVRvZG8oYWN0aW9uLnRvZG8uaWQsIGFjdGlvbi50b2RvKS5waXBlKFxuICogICAgICAgICAgICAgbWFwKCh1cGRhdGVkKSA9PiAoe1xuICogICAgICAgICAgICAgICB0eXBlOiAnVVBEQVRFX1RPRE9fU1VDQ0VTUycsXG4gKiAgICAgICAgICAgICAgIHRvZG86IHVwZGF0ZWQsXG4gKiAgICAgICAgICAgICB9KSlcbiAqICAgICAgICAgICApO1xuICogICAgICAgICB9LFxuICogICAgICAgICBvbkVycm9yOiAoYWN0aW9uOiBVcGRhdGVUb2RvLCBlcnJvcjogYW55KSA9PiB7XG4gKiAgICAgICAgICAgLy8gd2UgZG9uJ3QgbmVlZCB0byB1bmRvIHRoZSBjaGFuZ2VzIG9uIHRoZSBjbGllbnQgc2lkZS5cbiAqICAgICAgICAgICAvLyB3ZSBjYW4gZGlzcGF0Y2ggYW4gZXJyb3IsIG9yIHNpbXBseSBsb2cgdGhlIGVycm9yIGhlcmUgYW5kIHJldHVybiBgbnVsbGBcbiAqICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAqICAgICAgICAgfSxcbiAqICAgICAgIH0pXG4gKiAgICAgKVxuICogICApO1xuICpcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucywgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kKSB7fVxuICogfVxuICogYGBgXG4gKlxuICogTm90ZSB0aGF0IGlmIHlvdSBkb24ndCByZXR1cm4gYSBuZXcgYWN0aW9uIGZyb20gdGhlIHJ1biBjYWxsYmFjaywgeW91IG11c3Qgc2V0IHRoZSBkaXNwYXRjaCBwcm9wZXJ0eVxuICogb2YgdGhlIGVmZmVjdCB0byBmYWxzZSwgbGlrZSB0aGlzOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIFRvZG9FZmZlY3RzIHtcbiAqICAgdXBkYXRlVG9kbyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAqICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gKiAgICAgICAvLy4uLlxuICogICAgICksIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAqICAgKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBvcHRzXG4gKlxuICogQGRlcHJlY2F0ZWQgVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gTnggdjIxLiBJbXBvcnQgYHBlc3NpbWlzdGljVXBkYXRlYCBmcm9tIGBAbmdyeC9yb3V0ZXItc3RvcmUvZGF0YS1wZXJzaXN0ZW5jZWAgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBlc3NpbWlzdGljVXBkYXRlPFQgZXh0ZW5kcyBBcnJheTx1bmtub3duPiwgQSBleHRlbmRzIEFjdGlvbj4oXG4gIG9wdHM6IFBlc3NpbWlzdGljVXBkYXRlT3B0czxULCBBPlxuKSB7XG4gIHJldHVybiAoc291cmNlOiBBY3Rpb25TdGF0ZXNTdHJlYW08VCwgQT4pOiBPYnNlcnZhYmxlPEFjdGlvbj4gPT4ge1xuICAgIHJldHVybiBzb3VyY2UucGlwZShcbiAgICAgIG1hcEFjdGlvbkFuZFN0YXRlKCksXG4gICAgICBjb25jYXRNYXAocnVuV2l0aEVycm9ySGFuZGxpbmcob3B0cy5ydW4sIG9wdHMub25FcnJvcikpXG4gICAgKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBAd2hhdEl0RG9lcyBIYW5kbGVzIG9wdGltaXN0aWMgdXBkYXRlcyAodXBkYXRpbmcgdGhlIGNsaWVudCBmaXJzdCkuXG4gKlxuICogSXQgcnVucyBhbGwgZmV0Y2hlcyBpbiBvcmRlciwgd2hpY2ggcmVtb3ZlcyByYWNlIGNvbmRpdGlvbnMgYW5kIGZvcmNlcyB0aGUgZGV2ZWxvcGVyIHRvIGhhbmRsZSBlcnJvcnMuXG4gKlxuICogV2hlbiB1c2luZyBgb3B0aW1pc3RpY1VwZGF0ZWAsIGluIGNhc2Ugb2YgYSBmYWlsdXJlLCB0aGUgZGV2ZWxvcGVyIGhhcyBhbHJlYWR5IHVwZGF0ZWQgdGhlIHN0YXRlIGxvY2FsbHksXG4gKiBzbyB0aGUgZGV2ZWxvcGVyIG11c3QgcHJvdmlkZSBhbiB1bmRvIGFjdGlvbi5cbiAqXG4gKiBUaGUgZXJyb3IgaGFuZGxpbmcgbXVzdCBiZSBkb25lIGluIHRoZSBjYWxsYmFjaywgb3IgYnkgbWVhbnMgb2YgdGhlIHVuZG8gYWN0aW9uLlxuICpcbiAqICMjIEV4YW1wbGU6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQEluamVjdGFibGUoKVxuICogY2xhc3MgVG9kb0VmZmVjdHMge1xuICogICB1cGRhdGVUb2RvJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICogICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAqICAgICAgIG9mVHlwZSgnVVBEQVRFX1RPRE8nKSxcbiAqICAgICAgIG9wdGltaXN0aWNVcGRhdGUoe1xuICogICAgICAgICAvLyBwcm92aWRlcyBhbiBhY3Rpb25cbiAqICAgICAgICAgcnVuOiAoYWN0aW9uOiBVcGRhdGVUb2RvKSA9PiB7XG4gKiAgICAgICAgICAgcmV0dXJuIHRoaXMuYmFja2VuZC51cGRhdGVUb2RvKGFjdGlvbi50b2RvLmlkLCBhY3Rpb24udG9kbykucGlwZShcbiAqICAgICAgICAgICAgIG1hcFRvKHtcbiAqICAgICAgICAgICAgICAgdHlwZTogJ1VQREFURV9UT0RPX1NVQ0NFU1MnLFxuICogICAgICAgICAgICAgfSlcbiAqICAgICAgICAgICApO1xuICogICAgICAgICB9LFxuICogICAgICAgICB1bmRvQWN0aW9uOiAoYWN0aW9uOiBVcGRhdGVUb2RvLCBlcnJvcjogYW55KSA9PiB7XG4gKiAgICAgICAgICAgLy8gZGlzcGF0Y2ggYW4gdW5kbyBhY3Rpb24gdG8gdW5kbyB0aGUgY2hhbmdlcyBpbiB0aGUgY2xpZW50IHN0YXRlXG4gKiAgICAgICAgICAgcmV0dXJuIHtcbiAqICAgICAgICAgICAgIHR5cGU6ICdVTkRPX1RPRE9fVVBEQVRFJyxcbiAqICAgICAgICAgICAgIHRvZG86IGFjdGlvbi50b2RvLFxuICogICAgICAgICAgIH07XG4gKiAgICAgICAgIH0sXG4gKiAgICAgICB9KVxuICogICAgIClcbiAqICAgKTtcbiAqXG4gKiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMsIHByaXZhdGUgYmFja2VuZDogQmFja2VuZCkge31cbiAqIH1cbiAqIGBgYFxuICpcbiAqIE5vdGUgdGhhdCBpZiB5b3UgZG9uJ3QgcmV0dXJuIGEgbmV3IGFjdGlvbiBmcm9tIHRoZSBydW4gY2FsbGJhY2ssIHlvdSBtdXN0IHNldCB0aGUgZGlzcGF0Y2ggcHJvcGVydHlcbiAqIG9mIHRoZSBlZmZlY3QgdG8gZmFsc2UsIGxpa2UgdGhpczpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBUb2RvRWZmZWN0cyB7XG4gKiAgIHVwZGF0ZVRvZG8kID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gKiAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICogICAgICAgLy8uLi5cbiAqICAgICApLCB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gKiAgICk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gb3B0c1xuICpcbiAqIEBkZXByZWNhdGVkIFRoaXMgd2lsbCBiZSByZW1vdmVkIGluIE54IHYyMS4gSW1wb3J0IGBvcHRpbWlzdGljVXBkYXRlYCBmcm9tIGBAbmdyeC9yb3V0ZXItc3RvcmUvZGF0YS1wZXJzaXN0ZW5jZWAgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9wdGltaXN0aWNVcGRhdGU8VCBleHRlbmRzIEFycmF5PHVua25vd24+LCBBIGV4dGVuZHMgQWN0aW9uPihcbiAgb3B0czogT3B0aW1pc3RpY1VwZGF0ZU9wdHM8VCwgQT5cbikge1xuICByZXR1cm4gKHNvdXJjZTogQWN0aW9uU3RhdGVzU3RyZWFtPFQsIEE+KTogT2JzZXJ2YWJsZTxBY3Rpb24+ID0+IHtcbiAgICByZXR1cm4gc291cmNlLnBpcGUoXG4gICAgICBtYXBBY3Rpb25BbmRTdGF0ZSgpLFxuICAgICAgY29uY2F0TWFwKHJ1bldpdGhFcnJvckhhbmRsaW5nKG9wdHMucnVuLCBvcHRzLnVuZG9BY3Rpb24pKVxuICAgICk7XG4gIH07XG59XG5cbi8qKlxuICogQHdoYXRJdERvZXMgSGFuZGxlcyBkYXRhIGZldGNoaW5nLlxuICpcbiAqIERhdGEgZmV0Y2hpbmcgaW1wbGVtZW50ZWQgbmFpdmVseSBzdWZmZXJzIGZyb20gcmFjZSBjb25kaXRpb25zIGFuZCBwb29yIGVycm9yIGhhbmRsaW5nLlxuICpcbiAqIGBmZXRjaGAgYWRkcmVzc2VzIHRoZXNlIHByb2JsZW1zLiBJdCBydW5zIGFsbCBmZXRjaGVzIGluIG9yZGVyLCB3aGljaCByZW1vdmVzIHJhY2UgY29uZGl0aW9uc1xuICogYW5kIGZvcmNlcyB0aGUgZGV2ZWxvcGVyIHRvIGhhbmRsZSBlcnJvcnMuXG4gKlxuICogIyMgRXhhbXBsZTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBASW5qZWN0YWJsZSgpXG4gKiBjbGFzcyBUb2RvRWZmZWN0cyB7XG4gKiAgIGxvYWRUb2RvcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAqICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gKiAgICAgICBvZlR5cGUoJ0dFVF9UT0RPUycpLFxuICogICAgICAgZmV0Y2goe1xuICogICAgICAgICAvLyBwcm92aWRlcyBhbiBhY3Rpb25cbiAqICAgICAgICAgcnVuOiAoYTogR2V0VG9kb3MpID0+IHtcbiAqICAgICAgICAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldEFsbCgpLnBpcGUoXG4gKiAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiAoe1xuICogICAgICAgICAgICAgICB0eXBlOiAnVE9ET1MnLFxuICogICAgICAgICAgICAgICB0b2RvczogcmVzcG9uc2UudG9kb3MsXG4gKiAgICAgICAgICAgICB9KSlcbiAqICAgICAgICAgICApO1xuICogICAgICAgICB9LFxuICogICAgICAgICBvbkVycm9yOiAoYWN0aW9uOiBHZXRUb2RvcywgZXJyb3I6IGFueSkgPT4ge1xuICogICAgICAgICAgIC8vIGRpc3BhdGNoIGFuIHVuZG8gYWN0aW9uIHRvIHVuZG8gdGhlIGNoYW5nZXMgaW4gdGhlIGNsaWVudCBzdGF0ZVxuICogICAgICAgICAgIHJldHVybiBudWxsO1xuICogICAgICAgICB9LFxuICogICAgICAgfSlcbiAqICAgICApXG4gKiAgICk7XG4gKlxuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFjdGlvbnMkOiBBY3Rpb25zLCBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmQpIHt9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBUaGlzIGlzIGNvcnJlY3QsIGJ1dCBiZWNhdXNlIGl0IHNldCB0aGUgY29uY3VycmVuY3kgdG8gMSwgaXQgbWF5IG5vdCBiZSBwZXJmb3JtYW50LlxuICpcbiAqIFRvIGZpeCB0aGF0LCB5b3UgY2FuIHByb3ZpZGUgdGhlIGBpZGAgZnVuY3Rpb24sIGxpa2UgdGhpczpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBASW5qZWN0YWJsZSgpXG4gKiBjbGFzcyBUb2RvRWZmZWN0cyB7XG4gKiAgIGxvYWRUb2RvJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICogICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAqICAgICAgIG9mVHlwZSgnR0VUX1RPRE8nKSxcbiAqICAgICAgIGZldGNoKHtcbiAqICAgICAgICAgaWQ6ICh0b2RvOiBHZXRUb2RvKSA9PiB7XG4gKiAgICAgICAgICAgcmV0dXJuIHRvZG8uaWQ7XG4gKiAgICAgICAgIH0sXG4gKiAgICAgICAgIC8vIHByb3ZpZGVzIGFuIGFjdGlvblxuICogICAgICAgICBydW46ICh0b2RvOiBHZXRUb2RvKSA9PiB7XG4gKiAgICAgICAgICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRUb2RvKHRvZG8uaWQpLm1hcCgocmVzcG9uc2UpID0+ICh7XG4gKiAgICAgICAgICAgICB0eXBlOiAnTE9BRF9UT0RPX1NVQ0NFU1MnLFxuICogICAgICAgICAgICAgdG9kbzogcmVzcG9uc2UudG9kbyxcbiAqICAgICAgICAgICB9KSk7XG4gKiAgICAgICAgIH0sXG4gKiAgICAgICAgIG9uRXJyb3I6IChhY3Rpb246IEdldFRvZG8sIGVycm9yOiBhbnkpID0+IHtcbiAqICAgICAgICAgICAvLyBkaXNwYXRjaCBhbiB1bmRvIGFjdGlvbiB0byB1bmRvIHRoZSBjaGFuZ2VzIGluIHRoZSBjbGllbnQgc3RhdGVcbiAqICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAqICAgICAgICAgfSxcbiAqICAgICAgIH0pXG4gKiAgICAgKVxuICogICApO1xuICpcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucywgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kKSB7fVxuICogfVxuICogYGBgXG4gKlxuICogV2l0aCB0aGlzIHNldHVwLCB0aGUgcmVxdWVzdHMgZm9yIFRvZG8gMSB3aWxsIHJ1biBjb25jdXJyZW50bHkgd2l0aCB0aGUgcmVxdWVzdHMgZm9yIFRvZG8gMi5cbiAqXG4gKiBJbiBhZGRpdGlvbiwgaWYgdGhlcmUgYXJlIG11bHRpcGxlIHJlcXVlc3RzIGZvciBUb2RvIDEgc2NoZWR1bGVkLCBpdCB3aWxsIG9ubHkgcnVuIHRoZSBsYXN0IG9uZS5cbiAqXG4gKiBAcGFyYW0gb3B0c1xuICpcbiAqIEBkZXByZWNhdGVkIFRoaXMgd2lsbCBiZSByZW1vdmVkIGluIE54IHYyMS4gSW1wb3J0IGBmZXRjaGAgZnJvbSBgQG5ncngvcm91dGVyLXN0b3JlL2RhdGEtcGVyc2lzdGVuY2VgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmZXRjaDxUIGV4dGVuZHMgQXJyYXk8dW5rbm93bj4sIEEgZXh0ZW5kcyBBY3Rpb24+KFxuICBvcHRzOiBGZXRjaE9wdHM8VCwgQT5cbikge1xuICByZXR1cm4gKHNvdXJjZTogQWN0aW9uU3RhdGVzU3RyZWFtPFQsIEE+KTogT2JzZXJ2YWJsZTxBY3Rpb24+ID0+IHtcbiAgICBpZiAob3B0cy5pZCkge1xuICAgICAgY29uc3QgZ3JvdXBlZEZldGNoZXMgPSBzb3VyY2UucGlwZShcbiAgICAgICAgbWFwQWN0aW9uQW5kU3RhdGUoKSxcbiAgICAgICAgZ3JvdXBCeSgoW2FjdGlvbiwgLi4uc3RvcmVdKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9wdHMuaWQoYWN0aW9uLCAuLi5zdG9yZSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gZ3JvdXBlZEZldGNoZXMucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKHBhaXJzKSA9PlxuICAgICAgICAgIHBhaXJzLnBpcGUoc3dpdGNoTWFwKHJ1bldpdGhFcnJvckhhbmRsaW5nKG9wdHMucnVuLCBvcHRzLm9uRXJyb3IpKSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc291cmNlLnBpcGUoXG4gICAgICBtYXBBY3Rpb25BbmRTdGF0ZSgpLFxuICAgICAgY29uY2F0TWFwKHJ1bldpdGhFcnJvckhhbmRsaW5nKG9wdHMucnVuLCBvcHRzLm9uRXJyb3IpKVxuICAgICk7XG4gIH07XG59XG5cbi8qKlxuICogQHdoYXRJdERvZXMgSGFuZGxlcyBkYXRhIGZldGNoaW5nIGFzIHBhcnQgb2Ygcm91dGVyIG5hdmlnYXRpb24uXG4gKlxuICogRGF0YSBmZXRjaGluZyBpbXBsZW1lbnRlZCBuYWl2ZWx5IHN1ZmZlcnMgZnJvbSByYWNlIGNvbmRpdGlvbnMgYW5kIHBvb3IgZXJyb3IgaGFuZGxpbmcuXG4gKlxuICogYG5hdmlnYXRpb25gIGFkZHJlc3NlcyB0aGVzZSBwcm9ibGVtcy5cbiAqXG4gKiBJdCBjaGVja3MgaWYgYW4gYWN0aXZhdGVkIHJvdXRlciBzdGF0ZSBjb250YWlucyB0aGUgcGFzc2VkIGluIGNvbXBvbmVudCB0eXBlLCBhbmQsIGlmIGl0IGRvZXMsIHJ1bnMgdGhlIGBydW5gXG4gKiBjYWxsYmFjay4gSXQgcHJvdmlkZXMgdGhlIGFjdGl2YXRlZCBzbmFwc2hvdCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbXBvbmVudCBhbmQgdGhlIGN1cnJlbnQgc3RhdGUuIEFuZCBpdCBvbmx5IHJ1bnNcbiAqIHRoZSBsYXN0IHJlcXVlc3QuXG4gKlxuICogIyMgRXhhbXBsZTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBASW5qZWN0YWJsZSgpXG4gKiBjbGFzcyBUb2RvRWZmZWN0cyB7XG4gKiAgIGxvYWRUb2RvJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICogICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAqICAgICAgIC8vIGxpc3RlbnMgZm9yIHRoZSByb3V0ZXJOYXZpZ2F0aW9uIGFjdGlvbiBmcm9tIEBuZ3J4L3JvdXRlci1zdG9yZVxuICogICAgICAgbmF2aWdhdGlvbihUb2RvQ29tcG9uZW50LCB7XG4gKiAgICAgICAgIHJ1bjogKGFjdGl2YXRlZFJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpID0+IHtcbiAqICAgICAgICAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gKiAgICAgICAgICAgICAuZmV0Y2hUb2RvKGFjdGl2YXRlZFJvdXRlU25hcHNob3QucGFyYW1zWydpZCddKVxuICogICAgICAgICAgICAgLnBpcGUoXG4gKiAgICAgICAgICAgICAgIG1hcCgodG9kbykgPT4gKHtcbiAqICAgICAgICAgICAgICAgICB0eXBlOiAnTE9BRF9UT0RPX1NVQ0NFU1MnLFxuICogICAgICAgICAgICAgICAgIHRvZG86IHRvZG8sXG4gKiAgICAgICAgICAgICAgIH0pKVxuICogICAgICAgICAgICAgKTtcbiAqICAgICAgICAgfSxcbiAqICAgICAgICAgb25FcnJvcjogKFxuICogICAgICAgICAgIGFjdGl2YXRlZFJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gKiAgICAgICAgICAgZXJyb3I6IGFueVxuICogICAgICAgICApID0+IHtcbiAqICAgICAgICAgICAvLyB3ZSBjYW4gbG9nIGFuZCBlcnJvciBoZXJlIGFuZCByZXR1cm4gbnVsbFxuICogICAgICAgICAgIC8vIHdlIGNhbiBhbHNvIG5hdmlnYXRlIGJhY2tcbiAqICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAqICAgICAgICAgfSxcbiAqICAgICAgIH0pXG4gKiAgICAgKVxuICogICApO1xuICpcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucywgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kKSB7fVxuICogfVxuICogYGBgXG4gKlxuICogQHBhcmFtIGNvbXBvbmVudFxuICogQHBhcmFtIG9wdHNcbiAqXG4gKiBAZGVwcmVjYXRlZCBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBOeCB2MjEuIEltcG9ydCBgbmF2aWdhdGlvbmAgZnJvbSBgQG5ncngvcm91dGVyLXN0b3JlL2RhdGEtcGVyc2lzdGVuY2VgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYXZpZ2F0aW9uPFQgZXh0ZW5kcyBBcnJheTx1bmtub3duPiwgQSBleHRlbmRzIEFjdGlvbj4oXG4gIGNvbXBvbmVudDogVHlwZTxhbnk+LFxuICBvcHRzOiBIYW5kbGVOYXZpZ2F0aW9uT3B0czxUPlxuKSB7XG4gIHJldHVybiAoc291cmNlOiBBY3Rpb25TdGF0ZXNTdHJlYW08VCwgQT4pID0+IHtcbiAgICBjb25zdCBuYXYgPSBzb3VyY2UucGlwZShcbiAgICAgIG1hcEFjdGlvbkFuZFN0YXRlKCksXG4gICAgICBmaWx0ZXIoKFthY3Rpb25dKSA9PiBpc1N0YXRlU25hcHNob3QoYWN0aW9uKSksXG4gICAgICBtYXAoKFthY3Rpb24sIC4uLnNsaWNlc10pID0+IHtcbiAgICAgICAgaWYgKCFpc1N0YXRlU25hcHNob3QoYWN0aW9uKSkge1xuICAgICAgICAgIC8vIEJlY2F1c2Ugb2YgdGhlIGFib3ZlIGZpbHRlciB3ZSdsbCBuZXZlciBnZXQgaGVyZSxcbiAgICAgICAgICAvLyBidXQgdGhpcyBwcm9wZXJseSB0eXBlIG5hcnJvd3MgYGFjdGlvbmBcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIGZpbmRTbmFwc2hvdChjb21wb25lbnQsIGFjdGlvbi5wYXlsb2FkLnJvdXRlclN0YXRlLnJvb3QpLFxuICAgICAgICAgIC4uLnNsaWNlcyxcbiAgICAgICAgXSBhcyBbQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgLi4uVF07XG4gICAgICB9KSxcbiAgICAgIGZpbHRlcigoW3NuYXBzaG90XSkgPT4gISFzbmFwc2hvdClcbiAgICApO1xuXG4gICAgcmV0dXJuIG5hdi5waXBlKHN3aXRjaE1hcChydW5XaXRoRXJyb3JIYW5kbGluZyhvcHRzLnJ1biwgb3B0cy5vbkVycm9yKSkpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBpc1N0YXRlU25hcHNob3QoXG4gIGFjdGlvbjogYW55XG4pOiBhY3Rpb24gaXMgUm91dGVyTmF2aWdhdGlvbkFjdGlvbjxSb3V0ZXJTdGF0ZVNuYXBzaG90PiB7XG4gIHJldHVybiBhY3Rpb24udHlwZSA9PT0gUk9VVEVSX05BVklHQVRJT047XG59XG5cbmZ1bmN0aW9uIHJ1bldpdGhFcnJvckhhbmRsaW5nPFQgZXh0ZW5kcyBBcnJheTx1bmtub3duPiwgQSwgUj4oXG4gIHJ1bjogKGE6IEEsIC4uLnNsaWNlczogWy4uLlRdKSA9PiBPYnNlcnZhYmxlPFI+IHwgUiB8IHZvaWQsXG4gIG9uRXJyb3I6IGFueVxuKSB7XG4gIHJldHVybiAoW2FjdGlvbiwgLi4uc2xpY2VzXTogW0EsIC4uLlRdKTogT2JzZXJ2YWJsZTxSPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHIgPSB3cmFwSW50b09ic2VydmFibGUocnVuKGFjdGlvbiwgLi4uc2xpY2VzKSk7XG4gICAgICByZXR1cm4gci5waXBlKGNhdGNoRXJyb3IoKGUpID0+IHdyYXBJbnRvT2JzZXJ2YWJsZShvbkVycm9yKGFjdGlvbiwgZSkpKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHdyYXBJbnRvT2JzZXJ2YWJsZShvbkVycm9yKGFjdGlvbiwgZSkpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBAd2hhdEl0RG9lcyBtYXBzIE9ic2VydmFibGU8QWN0aW9uIHwgW0FjdGlvbiwgU3RhdGVdPiB0b1xuICogT2JzZXJ2YWJsZTxbQWN0aW9uLCBTdGF0ZV0+XG4gKi9cbmZ1bmN0aW9uIG1hcEFjdGlvbkFuZFN0YXRlPFQgZXh0ZW5kcyBBcnJheTx1bmtub3duPiwgQT4oKSB7XG4gIHJldHVybiAoc291cmNlOiBPYnNlcnZhYmxlPEFjdGlvbk9yQWN0aW9uV2l0aFN0YXRlczxULCBBPj4pID0+IHtcbiAgICByZXR1cm4gc291cmNlLnBpcGUoXG4gICAgICBtYXAoKHZhbHVlKSA9PiBub3JtYWxpemVBY3Rpb25BbmRTdGF0ZSh2YWx1ZSkgYXMgW0EsIC4uLlRdKVxuICAgICk7XG4gIH07XG59XG5cbi8qKlxuICogQHdoYXRJdERvZXMgTm9ybWFsaXplcyBlaXRoZXIgYSBiYXJlIGFjdGlvbiBvciBhbiBhcnJheSBvZiBhY3Rpb24gYW5kIHNsaWNlc1xuICogaW50byBhbiBhcnJheSBvZiBhY3Rpb24gYW5kIHNsaWNlcyAob3IgdW5kZWZpbmVkKVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVBY3Rpb25BbmRTdGF0ZTxUIGV4dGVuZHMgQXJyYXk8dW5rbm93bj4sIEE+KFxuICBhcmdzOiBBY3Rpb25PckFjdGlvbldpdGhTdGF0ZXM8VCwgQT5cbik6IFtBLCAuLi5UXSB7XG4gIGxldCBhY3Rpb246IEEsIHNsaWNlczogVDtcblxuICBpZiAoYXJncyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgW2FjdGlvbiwgLi4uc2xpY2VzXSA9IGFyZ3M7XG4gIH0gZWxzZSB7XG4gICAgc2xpY2VzID0gW10gYXMgVDtcbiAgICBhY3Rpb24gPSBhcmdzO1xuICB9XG5cbiAgcmV0dXJuIFthY3Rpb24sIC4uLnNsaWNlc107XG59XG5cbmZ1bmN0aW9uIGZpbmRTbmFwc2hvdChcbiAgY29tcG9uZW50OiBUeXBlPGFueT4sXG4gIHM6IEFjdGl2YXRlZFJvdXRlU25hcHNob3Rcbik6IEFjdGl2YXRlZFJvdXRlU25hcHNob3Qge1xuICBpZiAocy5yb3V0ZUNvbmZpZyAmJiBzLnJvdXRlQ29uZmlnLmNvbXBvbmVudCA9PT0gY29tcG9uZW50KSB7XG4gICAgcmV0dXJuIHM7XG4gIH1cbiAgZm9yIChjb25zdCBjIG9mIHMuY2hpbGRyZW4pIHtcbiAgICBjb25zdCBzcyA9IGZpbmRTbmFwc2hvdChjb21wb25lbnQsIGMpO1xuICAgIGlmIChzcykge1xuICAgICAgcmV0dXJuIHNzO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gd3JhcEludG9PYnNlcnZhYmxlPE8+KG9iajogT2JzZXJ2YWJsZTxPPiB8IE8gfCB2b2lkKTogT2JzZXJ2YWJsZTxPPiB7XG4gIGlmIChpc09ic2VydmFibGUob2JqKSkge1xuICAgIHJldHVybiBvYmo7XG4gIH0gZWxzZSBpZiAoIW9iaikge1xuICAgIHJldHVybiBvZigpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBvZihvYmogYXMgTyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export { readAll, readFirst } from './src/testing-utils';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL3Rlc3RpbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IHJlYWRBbGwsIHJlYWRGaXJzdCB9IGZyb20gJy4vc3JjL3Rlc3RpbmctdXRpbHMnO1xuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtYW5ndWxhci10ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci90ZXN0aW5nL254LWFuZ3VsYXItdGVzdGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,38 @@
1
+ import { first, toArray } from 'rxjs/operators';
2
+ /**
3
+ * @deprecated This will be removed in Nx v21. If using RxJS 7, use `firstValueFrom(obs$.pipe(toArray()))`
4
+ * or `lastValueFrom(obs$.pipe(toArray()))`. If using RxJS 6, use `obs$.pipe(toArray()).toPromise()`.
5
+ *
6
+ * @whatItDoes reads all the values from an observable and returns a promise
7
+ * with an array of all values. This should be used in combination with async/await.
8
+ *
9
+ * ## Example
10
+ *
11
+ * ```typescript
12
+ * const obs = of(1, 2, 3, 4);
13
+ * const res = await readAll(obs)
14
+ * expect(res).toEqual([1, 2, 3, 4]);
15
+ * ```
16
+ */
17
+ export function readAll(o) {
18
+ return o.pipe(toArray()).toPromise();
19
+ }
20
+ /**
21
+ * @deprecated This will be removed in Nx v21. Since RxJS 7, use `firstValueFrom(obs$)`. If using RxJS 6,
22
+ * use `obs$.pipe(first()).toPromise()`.
23
+ *
24
+ * @whatItDoes reads the first value from an observable and returns a promise
25
+ * with it. This should be used in combination with async/await.
26
+ *
27
+ * ## Example
28
+ *
29
+ * ```typescript
30
+ * const obs = of(1, 2, 3, 4);
31
+ * const res = await readFirst(obs)
32
+ * expect(res).toEqual(1);
33
+ * ```
34
+ */
35
+ export function readFirst(o) {
36
+ return o.pipe(first()).toPromise();
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvdGVzdGluZy9zcmMvdGVzdGluZy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxVQUFVLE9BQU8sQ0FBSSxDQUFnQjtJQUN6QyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUN2QyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFJLENBQWdCO0lBQzNDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ3JDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0LCB0b0FycmF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFRoaXMgd2lsbCBiZSByZW1vdmVkIGluIE54IHYyMS4gSWYgdXNpbmcgUnhKUyA3LCB1c2UgYGZpcnN0VmFsdWVGcm9tKG9icyQucGlwZSh0b0FycmF5KCkpKWBcbiAqIG9yIGBsYXN0VmFsdWVGcm9tKG9icyQucGlwZSh0b0FycmF5KCkpKWAuIElmIHVzaW5nIFJ4SlMgNiwgdXNlIGBvYnMkLnBpcGUodG9BcnJheSgpKS50b1Byb21pc2UoKWAuXG4gKlxuICogQHdoYXRJdERvZXMgcmVhZHMgYWxsIHRoZSB2YWx1ZXMgZnJvbSBhbiBvYnNlcnZhYmxlIGFuZCByZXR1cm5zIGEgcHJvbWlzZVxuICogd2l0aCBhbiBhcnJheSBvZiBhbGwgdmFsdWVzLiBUaGlzIHNob3VsZCBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYXN5bmMvYXdhaXQuXG4gKlxuICogIyMgRXhhbXBsZVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG9icyA9IG9mKDEsIDIsIDMsIDQpO1xuICogY29uc3QgcmVzID0gYXdhaXQgcmVhZEFsbChvYnMpXG4gKiBleHBlY3QocmVzKS50b0VxdWFsKFsxLCAyLCAzLCA0XSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRBbGw8VD4obzogT2JzZXJ2YWJsZTxUPik6IFByb21pc2U8VFtdPiB7XG4gIHJldHVybiBvLnBpcGUodG9BcnJheSgpKS50b1Byb21pc2UoKTtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBOeCB2MjEuIFNpbmNlIFJ4SlMgNywgdXNlIGBmaXJzdFZhbHVlRnJvbShvYnMkKWAuIElmIHVzaW5nIFJ4SlMgNixcbiAqIHVzZSBgb2JzJC5waXBlKGZpcnN0KCkpLnRvUHJvbWlzZSgpYC5cbiAqXG4gKiBAd2hhdEl0RG9lcyByZWFkcyB0aGUgZmlyc3QgdmFsdWUgZnJvbSBhbiBvYnNlcnZhYmxlIGFuZCByZXR1cm5zIGEgcHJvbWlzZVxuICogd2l0aCBpdC4gVGhpcyBzaG91bGQgYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGFzeW5jL2F3YWl0LlxuICpcbiAqICMjIEV4YW1wbGVcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBvYnMgPSBvZigxLCAyLCAzLCA0KTtcbiAqIGNvbnN0IHJlcyA9IGF3YWl0IHJlYWRGaXJzdChvYnMpXG4gKiBleHBlY3QocmVzKS50b0VxdWFsKDEpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkRmlyc3Q8VD4obzogT2JzZXJ2YWJsZTxUPik6IFByb21pc2U8VD4ge1xuICByZXR1cm4gby5waXBlKGZpcnN0KCkpLnRvUHJvbWlzZSgpO1xufVxuIl19
package/executors.d.ts CHANGED
@@ -8,4 +8,9 @@ export * from './src/executors/browser-esbuild/browser-esbuild.impl';
8
8
  export * from './src/executors/application/application.impl';
9
9
  export * from './src/executors/extract-i18n/extract-i18n.impl';
10
10
  export * from './src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl';
11
- export { executeDevServerBuilder } from './src/builders/dev-server/dev-server.impl';
11
+ import { executeDevServerBuilder } from './src/builders/dev-server/dev-server.impl';
12
+ export {
13
+ /**
14
+ * @deprecated Use executeDevServerBuilder instead. It will be removed in Nx v20.
15
+ */
16
+ executeDevServerBuilder as executeWebpackDevServerBuilder, executeDevServerBuilder, };
package/executors.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.executeDevServerBuilder = void 0;
3
+ exports.executeDevServerBuilder = exports.executeWebpackDevServerBuilder = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  tslib_1.__exportStar(require("./src/builders/webpack-browser/webpack-browser.impl"), exports);
6
6
  tslib_1.__exportStar(require("./src/builders/webpack-server/webpack-server.impl"), exports);
@@ -12,5 +12,6 @@ tslib_1.__exportStar(require("./src/executors/browser-esbuild/browser-esbuild.im
12
12
  tslib_1.__exportStar(require("./src/executors/application/application.impl"), exports);
13
13
  tslib_1.__exportStar(require("./src/executors/extract-i18n/extract-i18n.impl"), exports);
14
14
  tslib_1.__exportStar(require("./src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl"), exports);
15
- var dev_server_impl_1 = require("./src/builders/dev-server/dev-server.impl");
15
+ const dev_server_impl_1 = require("./src/builders/dev-server/dev-server.impl");
16
+ Object.defineProperty(exports, "executeWebpackDevServerBuilder", { enumerable: true, get: function () { return dev_server_impl_1.executeDevServerBuilder; } });
16
17
  Object.defineProperty(exports, "executeDevServerBuilder", { enumerable: true, get: function () { return dev_server_impl_1.executeDevServerBuilder; } });
package/executors.json CHANGED
@@ -13,7 +13,7 @@
13
13
  "package": {
14
14
  "implementation": "./src/executors/package/package.impl",
15
15
  "schema": "./src/executors/package/schema.json",
16
- "description": "Builds and packages an Angular library producing an output following the Angular Package Format (APF) to be distributed as an NPM package.\n\nThis executor is a drop-in replacement for the `@angular-devkit/build-angular:ng-packagr` and `@angular/build:ng-packagr` builders, with additional support for incremental builds."
16
+ "description": "Builds and packages an Angular library producing an output following the Angular Package Format (APF) to be distributed as an NPM package.\n\nThis executor is a drop-in replacement for the `@angular-devkit/build-angular:ng-packagr` with additional support for incremental builds."
17
17
  },
18
18
  "browser-esbuild": {
19
19
  "implementation": "./src/executors/browser-esbuild/browser-esbuild.impl",
@@ -33,7 +33,7 @@
33
33
  "application": {
34
34
  "implementation": "./src/executors/application/application.impl",
35
35
  "schema": "./src/executors/application/schema.json",
36
- "description": "Builds an Angular application using [esbuild](https://esbuild.github.io/) with integrated SSR and prerendering capabilities."
36
+ "description": "Builds an Angular application using [esbuild](https://esbuild.github.io/) with integrated SSR and prerendering capabilities. _Note: this is only supported in Angular versions >= 17.0.0_."
37
37
  },
38
38
  "extract-i18n": {
39
39
  "implementation": "./src/executors/extract-i18n/extract-i18n.impl",