@angular-devkit/build-angular 17.0.0-next.4 → 17.0.0-next.6

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 (67) hide show
  1. package/package.json +9 -10
  2. package/src/builders/app-shell/render-worker.js +2 -2
  3. package/src/builders/application/execute-build.js +20 -6
  4. package/src/builders/application/i18n.d.ts +25 -0
  5. package/src/builders/application/i18n.js +110 -0
  6. package/src/builders/application/index.js +12 -1
  7. package/src/builders/application/options.d.ts +6 -2
  8. package/src/builders/application/options.js +9 -8
  9. package/src/builders/application/schema.d.ts +4 -16
  10. package/src/builders/application/schema.js +1 -1
  11. package/src/builders/application/schema.json +3 -19
  12. package/src/builders/browser-esbuild/builder-status-warnings.js +1 -6
  13. package/src/builders/dev-server/vite-server.js +21 -2
  14. package/src/builders/extract-i18n/application-extraction.js +2 -1
  15. package/src/builders/prerender/index.js +45 -10
  16. package/src/builders/prerender/render-worker.js +2 -2
  17. package/src/builders/prerender/routes-extractor-worker.d.ts +20 -0
  18. package/src/builders/prerender/routes-extractor-worker.js +71 -0
  19. package/src/builders/prerender/schema.d.ts +2 -2
  20. package/src/builders/prerender/schema.js +1 -1
  21. package/src/builders/prerender/schema.json +2 -2
  22. package/src/builders/server/platform-server-exports-loader.js +7 -2
  23. package/src/tools/esbuild/angular/angular-host.d.ts +1 -0
  24. package/src/tools/esbuild/angular/angular-host.js +1 -1
  25. package/src/tools/esbuild/angular/compilation/aot-compilation.js +12 -6
  26. package/src/tools/esbuild/angular/compilation/jit-compilation.js +12 -5
  27. package/src/tools/esbuild/angular/compiler-plugin.js +50 -30
  28. package/src/tools/esbuild/angular/web-worker-transformer.d.ts +17 -0
  29. package/src/tools/esbuild/angular/web-worker-transformer.js +95 -0
  30. package/src/tools/esbuild/application-code-bundle.js +74 -22
  31. package/src/tools/esbuild/bundler-context.js +3 -3
  32. package/src/tools/esbuild/bundler-execution-result.d.ts +2 -2
  33. package/src/tools/esbuild/bundler-execution-result.js +1 -1
  34. package/src/tools/esbuild/global-scripts.js +2 -2
  35. package/src/tools/esbuild/i18n-inliner-worker.d.ts +37 -0
  36. package/src/tools/esbuild/i18n-inliner-worker.js +138 -0
  37. package/src/tools/esbuild/i18n-inliner.d.ts +40 -0
  38. package/src/tools/esbuild/i18n-inliner.js +119 -0
  39. package/src/tools/esbuild/i18n-locale-plugin.d.ts +18 -0
  40. package/src/tools/esbuild/i18n-locale-plugin.js +91 -0
  41. package/src/tools/esbuild/index-html-generator.d.ts +2 -2
  42. package/src/tools/esbuild/index-html-generator.js +4 -4
  43. package/src/tools/esbuild/rxjs-esm-resolution-plugin.js +2 -2
  44. package/src/tools/esbuild/sourcemap-ignorelist-plugin.d.ts +1 -1
  45. package/src/tools/esbuild/sourcemap-ignorelist-plugin.js +4 -4
  46. package/src/tools/esbuild/utils.d.ts +2 -0
  47. package/src/tools/esbuild/utils.js +34 -2
  48. package/src/tools/esbuild/virtual-module-plugin.d.ts +2 -0
  49. package/src/tools/esbuild/virtual-module-plugin.js +3 -3
  50. package/src/tools/vite/i18n-locale-plugin.d.ts +18 -0
  51. package/src/tools/vite/i18n-locale-plugin.js +56 -0
  52. package/src/utils/routes-extractor/extractor.d.ts +15 -0
  53. package/src/utils/routes-extractor/extractor.js +80 -0
  54. package/src/utils/server-rendering/esm-in-memory-file-loader.d.ts +8 -0
  55. package/src/utils/server-rendering/esm-in-memory-file-loader.js +8 -8
  56. package/src/utils/server-rendering/main-bundle-exports.d.ts +22 -0
  57. package/src/utils/server-rendering/main-bundle-exports.js +10 -0
  58. package/src/utils/server-rendering/prerender.d.ts +1 -2
  59. package/src/utils/server-rendering/prerender.js +55 -55
  60. package/src/utils/server-rendering/render-page.d.ts +1 -13
  61. package/src/utils/server-rendering/render-page.js +2 -2
  62. package/src/utils/server-rendering/render-worker.d.ts +2 -2
  63. package/src/utils/server-rendering/render-worker.js +1 -1
  64. package/src/utils/server-rendering/routes-extractor-worker.d.ts +17 -0
  65. package/src/utils/server-rendering/routes-extractor-worker.js +47 -0
  66. package/src/builders/prerender/utils.d.ts +0 -22
  67. package/src/builders/prerender/utils.js +0 -79
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@angular-devkit/build-angular",
3
- "version": "17.0.0-next.4",
3
+ "version": "17.0.0-next.6",
4
4
  "description": "Angular Webpack Build Facade",
5
5
  "main": "src/index.js",
6
6
  "typings": "src/index.d.ts",
7
7
  "builders": "builders.json",
8
8
  "dependencies": {
9
9
  "@ampproject/remapping": "2.2.1",
10
- "@angular-devkit/architect": "0.1700.0-next.4",
11
- "@angular-devkit/build-webpack": "0.1700.0-next.4",
12
- "@angular-devkit/core": "17.0.0-next.4",
10
+ "@angular-devkit/architect": "0.1700.0-next.6",
11
+ "@angular-devkit/build-webpack": "0.1700.0-next.6",
12
+ "@angular-devkit/core": "17.0.0-next.6",
13
13
  "@babel/core": "7.22.17",
14
14
  "@babel/generator": "7.22.15",
15
15
  "@babel/helper-annotate-as-pure": "7.22.5",
@@ -20,7 +20,7 @@
20
20
  "@babel/preset-env": "7.22.15",
21
21
  "@babel/runtime": "7.22.15",
22
22
  "@discoveryjs/json-ext": "0.5.7",
23
- "@ngtools/webpack": "17.0.0-next.4",
23
+ "@ngtools/webpack": "17.0.0-next.6",
24
24
  "@vitejs/plugin-basic-ssl": "1.0.1",
25
25
  "ansi-colors": "4.1.3",
26
26
  "autoprefixer": "10.4.15",
@@ -32,9 +32,8 @@
32
32
  "copy-webpack-plugin": "11.0.0",
33
33
  "critters": "0.0.20",
34
34
  "css-loader": "6.8.1",
35
- "esbuild-wasm": "0.19.2",
35
+ "esbuild-wasm": "0.19.3",
36
36
  "fast-glob": "3.3.1",
37
- "guess-parser": "0.4.22",
38
37
  "https-proxy-agent": "7.0.2",
39
38
  "http-proxy-middleware": "2.0.6",
40
39
  "inquirer": "8.2.6",
@@ -56,7 +55,7 @@
56
55
  "postcss-loader": "7.3.3",
57
56
  "resolve-url-loader": "5.0.0",
58
57
  "rxjs": "7.8.1",
59
- "sass": "1.66.1",
58
+ "sass": "1.67.0",
60
59
  "sass-loader": "13.3.2",
61
60
  "semver": "7.5.4",
62
61
  "source-map-loader": "4.0.1",
@@ -73,7 +72,7 @@
73
72
  "webpack-subresource-integrity": "5.1.0"
74
73
  },
75
74
  "optionalDependencies": {
76
- "esbuild": "0.19.2"
75
+ "esbuild": "0.19.3"
77
76
  },
78
77
  "peerDependencies": {
79
78
  "@angular/compiler-cli": "^17.0.0 || ^17.0.0-next.0",
@@ -86,7 +85,7 @@
86
85
  "ng-packagr": "^17.0.0 || ^17.0.0-next.1",
87
86
  "protractor": "^7.0.0",
88
87
  "tailwindcss": "^2.0.0 || ^3.0.0",
89
- "typescript": ">=4.9.3 <5.3"
88
+ "typescript": ">=5.2 <5.3"
90
89
  },
91
90
  "peerDependenciesMeta": {
92
91
  "@angular/localize": {
@@ -73,7 +73,7 @@ async function render({ serverBundlePath, document, url }) {
73
73
  });
74
74
  }
75
75
  function isBootstrapFn(value) {
76
- // We can differentiate between a module and a bootstrap function by reading `cmp`:
76
+ // We can differentiate between a module and a bootstrap function by reading compiler-generated `ɵmod` static property:
77
77
  return typeof value === 'function' && !('ɵmod' in value);
78
78
  }
79
79
  /**
@@ -93,4 +93,4 @@ async function initialize() {
93
93
  * This is awaited by piscina prior to using the Worker.
94
94
  */
95
95
  exports.default = initialize();
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLXdvcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL2J1aWxkZXJzL2FwcC1zaGVsbC9yZW5kZXItd29ya2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJSCw4REFBaUM7QUFDakMsNkRBQWlEO0FBRWpEOzs7R0FHRztBQUNILE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxnQ0FFdkIsQ0FBQztBQXFDRjs7OztHQUlHO0FBQ0gsS0FBSyxVQUFVLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQWlCO0lBQ3RFLE1BQU0sRUFDSixlQUFlLEVBQ2YsZUFBZSxFQUNmLFlBQVksRUFDWixpQkFBaUIsRUFDakIsT0FBTyxFQUFFLGNBQWMsR0FDeEIsR0FBRyxDQUFDLHlCQUFhLGdCQUFnQix1Q0FBQyxDQUF3QixDQUFDO0lBRTVELElBQUEscUJBQU0sRUFBQyxlQUFlLEVBQUUsMENBQTBDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztJQUV2RixNQUFNLGlCQUFpQixHQUFxQjtRQUMxQztZQUNFLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFFBQVEsRUFBRSxXQUFXO1NBQ3RCO0tBQ0YsQ0FBQztJQUVGLGdDQUFnQztJQUNoQyxJQUFJLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRTtRQUNqQyxJQUFBLHFCQUFNLEVBQUMsaUJBQWlCLEVBQUUsNENBQTRDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztRQUUzRixPQUFPLGlCQUFpQixDQUFDLGNBQWMsRUFBRTtZQUN2QyxRQUFRO1lBQ1IsR0FBRztZQUNILGlCQUFpQjtTQUNsQixDQUFDLENBQUM7S0FDSjtJQUNELElBQUEscUJBQU0sRUFBQyxZQUFZLEVBQUUsdUNBQXVDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztJQUNqRixNQUFNLFdBQVcsR0FBRyxjQUFjLElBQUksZUFBZSxDQUFDO0lBQ3RELElBQUEscUJBQU0sRUFDSixXQUFXLEVBQ1gsOEVBQThFLGdCQUFnQixHQUFHLENBQ2xHLENBQUM7SUFFRixPQUFPLFlBQVksQ0FBQyxXQUFXLEVBQUU7UUFDL0IsUUFBUTtRQUNSLEdBQUc7UUFDSCxjQUFjLEVBQUUsaUJBQWlCO0tBQ2xDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxLQUFjO0lBQ25DLG1GQUFtRjtJQUNuRixPQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILEtBQUssVUFBVSxVQUFVO0lBQ3ZCLGdCQUFnQjtJQUNoQix5QkFBYSxXQUFXLHVDQUFDLENBQUM7SUFFMUIscUNBQXFDO0lBQ3JDLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxrQkFBZSxVQUFVLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcGxpY2F0aW9uUmVmLCBTdGF0aWNQcm92aWRlciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyByZW5kZXJBcHBsaWNhdGlvbiwgcmVuZGVyTW9kdWxlLCDJtVNFUlZFUl9DT05URVhUIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tc2VydmVyJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnbm9kZTphc3NlcnQnO1xuaW1wb3J0IHsgd29ya2VyRGF0YSB9IGZyb20gJ25vZGU6d29ya2VyX3RocmVhZHMnO1xuXG4vKipcbiAqIFRoZSBmdWxseSByZXNvbHZlZCBwYXRoIHRvIHRoZSB6b25lLmpzIHBhY2thZ2UgdGhhdCB3aWxsIGJlIGxvYWRlZCBkdXJpbmcgd29ya2VyIGluaXRpYWxpemF0aW9uLlxuICogVGhpcyBpcyBwYXNzZWQgYXMgd29ya2VyRGF0YSB3aGVuIHNldHRpbmcgdXAgdGhlIHdvcmtlciB2aWEgdGhlIGBwaXNjaW5hYCBwYWNrYWdlLlxuICovXG5jb25zdCB7IHpvbmVQYWNrYWdlIH0gPSB3b3JrZXJEYXRhIGFzIHtcbiAgem9uZVBhY2thZ2U6IHN0cmluZztcbn07XG5cbmludGVyZmFjZSBTZXJ2ZXJCdW5kbGVFeHBvcnRzIHtcbiAgLyoqIEFuIGludGVybmFsIHRva2VuIHRoYXQgYWxsb3dzIHByb3ZpZGluZyBleHRyYSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2VydmVyIGNvbnRleHQuICovXG4gIMm1U0VSVkVSX0NPTlRFWFQ/OiB0eXBlb2YgybVTRVJWRVJfQ09OVEVYVDtcblxuICAvKiogUmVuZGVyIGFuIE5nTW9kdWxlIGFwcGxpY2F0aW9uLiAqL1xuICByZW5kZXJNb2R1bGU/OiB0eXBlb2YgcmVuZGVyTW9kdWxlO1xuXG4gIC8qKiBOZ01vZHVsZSB0byByZW5kZXIuICovXG4gIEFwcFNlcnZlck1vZHVsZT86IFR5cGU8dW5rbm93bj47XG5cbiAgLyoqIE1ldGhvZCB0byByZW5kZXIgYSBzdGFuZGFsb25lIGFwcGxpY2F0aW9uLiAqL1xuICByZW5kZXJBcHBsaWNhdGlvbj86IHR5cGVvZiByZW5kZXJBcHBsaWNhdGlvbjtcblxuICAvKiogU3RhbmRhbG9uZSBhcHBsaWNhdGlvbiBib290c3RyYXBwaW5nIGZ1bmN0aW9uLiAqL1xuICBkZWZhdWx0PzogKCkgPT4gUHJvbWlzZTxBcHBsaWNhdGlvblJlZj47XG59XG5cbi8qKlxuICogQSByZXF1ZXN0IHRvIHJlbmRlciBhIFNlcnZlciBidW5kbGUgZ2VuZXJhdGUgYnkgdGhlIHVuaXZlcnNhbCBzZXJ2ZXIgYnVpbGRlci5cbiAqL1xuaW50ZXJmYWNlIFJlbmRlclJlcXVlc3Qge1xuICAvKipcbiAgICogVGhlIHBhdGggdG8gdGhlIHNlcnZlciBidW5kbGUgdGhhdCBzaG91bGQgYmUgbG9hZGVkIGFuZCByZW5kZXJlZC5cbiAgICovXG4gIHNlcnZlckJ1bmRsZVBhdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBleGlzdGluZyBIVE1MIGRvY3VtZW50IGFzIGEgc3RyaW5nIHRoYXQgd2lsbCBiZSBhdWdtZW50ZWQgd2l0aCB0aGUgcmVuZGVyZWQgYXBwbGljYXRpb24uXG4gICAqL1xuICBkb2N1bWVudDogc3RyaW5nO1xuICAvKipcbiAgICogQW4gb3B0aW9uYWwgVVJMIHBhdGggdGhhdCByZXByZXNlbnRzIHRoZSBBbmd1bGFyIHJvdXRlIHRoYXQgc2hvdWxkIGJlIHJlbmRlcmVkLlxuICAgKi9cbiAgdXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmVuZGVycyBhbiBhcHBsaWNhdGlvbiBiYXNlZCBvbiBhIHByb3ZpZGVkIHNlcnZlciBidW5kbGUgcGF0aCwgaW5pdGlhbCBkb2N1bWVudCwgYW5kIG9wdGlvbmFsIFVSTCByb3V0ZS5cbiAqIEBwYXJhbSBwYXJhbTAgQSByZXF1ZXN0IHRvIHJlbmRlciBhIHNlcnZlciBidW5kbGUuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgcmVuZGVyIEhUTUwgZG9jdW1lbnQgZm9yIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVuZGVyKHsgc2VydmVyQnVuZGxlUGF0aCwgZG9jdW1lbnQsIHVybCB9OiBSZW5kZXJSZXF1ZXN0KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qge1xuICAgIMm1U0VSVkVSX0NPTlRFWFQsXG4gICAgQXBwU2VydmVyTW9kdWxlLFxuICAgIHJlbmRlck1vZHVsZSxcbiAgICByZW5kZXJBcHBsaWNhdGlvbixcbiAgICBkZWZhdWx0OiBib290c3RyYXBBcHBGbixcbiAgfSA9IChhd2FpdCBpbXBvcnQoc2VydmVyQnVuZGxlUGF0aCkpIGFzIFNlcnZlckJ1bmRsZUV4cG9ydHM7XG5cbiAgYXNzZXJ0KMm1U0VSVkVSX0NPTlRFWFQsIGDJtVNFUlZFUl9DT05URVhUIHdhcyBub3QgZXhwb3J0ZWQgZnJvbTogJHtzZXJ2ZXJCdW5kbGVQYXRofS5gKTtcblxuICBjb25zdCBwbGF0Zm9ybVByb3ZpZGVyczogU3RhdGljUHJvdmlkZXJbXSA9IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiDJtVNFUlZFUl9DT05URVhULFxuICAgICAgdXNlVmFsdWU6ICdhcHAtc2hlbGwnLFxuICAgIH0sXG4gIF07XG5cbiAgLy8gUmVuZGVyIHBsYXRmb3JtIHNlcnZlciBtb2R1bGVcbiAgaWYgKGlzQm9vdHN0cmFwRm4oYm9vdHN0cmFwQXBwRm4pKSB7XG4gICAgYXNzZXJ0KHJlbmRlckFwcGxpY2F0aW9uLCBgcmVuZGVyQXBwbGljYXRpb24gd2FzIG5vdCBleHBvcnRlZCBmcm9tOiAke3NlcnZlckJ1bmRsZVBhdGh9LmApO1xuXG4gICAgcmV0dXJuIHJlbmRlckFwcGxpY2F0aW9uKGJvb3RzdHJhcEFwcEZuLCB7XG4gICAgICBkb2N1bWVudCxcbiAgICAgIHVybCxcbiAgICAgIHBsYXRmb3JtUHJvdmlkZXJzLFxuICAgIH0pO1xuICB9XG4gIGFzc2VydChyZW5kZXJNb2R1bGUsIGByZW5kZXJNb2R1bGUgd2FzIG5vdCBleHBvcnRlZCBmcm9tOiAke3NlcnZlckJ1bmRsZVBhdGh9LmApO1xuICBjb25zdCBtb2R1bGVDbGFzcyA9IGJvb3RzdHJhcEFwcEZuIHx8IEFwcFNlcnZlck1vZHVsZTtcbiAgYXNzZXJ0KFxuICAgIG1vZHVsZUNsYXNzLFxuICAgIGBOZWl0aGVyIGFuIEFwcFNlcnZlck1vZHVsZSBub3IgYSBib290c3RyYXBwaW5nIGZ1bmN0aW9uIHdhcyBleHBvcnRlZCBmcm9tOiAke3NlcnZlckJ1bmRsZVBhdGh9LmAsXG4gICk7XG5cbiAgcmV0dXJuIHJlbmRlck1vZHVsZShtb2R1bGVDbGFzcywge1xuICAgIGRvY3VtZW50LFxuICAgIHVybCxcbiAgICBleHRyYVByb3ZpZGVyczogcGxhdGZvcm1Qcm92aWRlcnMsXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpc0Jvb3RzdHJhcEZuKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgKCkgPT4gUHJvbWlzZTxBcHBsaWNhdGlvblJlZj4ge1xuICAvLyBXZSBjYW4gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGEgbW9kdWxlIGFuZCBhIGJvb3RzdHJhcCBmdW5jdGlvbiBieSByZWFkaW5nIGBjbXBgOlxuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmICEoJ8m1bW9kJyBpbiB2YWx1ZSk7XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgdGhlIHdvcmtlciB3aGVuIGl0IGlzIGZpcnN0IGNyZWF0ZWQgYnkgbG9hZGluZyB0aGUgWm9uZS5qcyBwYWNrYWdlXG4gKiBpbnRvIHRoZSB3b3JrZXIgaW5zdGFuY2UuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHJlc29sdmluZyB0byB0aGUgcmVuZGVyIGZ1bmN0aW9uIG9mIHRoZSB3b3JrZXIuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gIC8vIFNldHVwIFpvbmUuanNcbiAgYXdhaXQgaW1wb3J0KHpvbmVQYWNrYWdlKTtcblxuICAvLyBSZXR1cm4gdGhlIHJlbmRlciBmdW5jdGlvbiBmb3IgdXNlXG4gIHJldHVybiByZW5kZXI7XG59XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgZXhwb3J0IHdpbGwgYmUgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIGluaXRpYWxpemUgZnVuY3Rpb24uXG4gKiBUaGlzIGlzIGF3YWl0ZWQgYnkgcGlzY2luYSBwcmlvciB0byB1c2luZyB0aGUgV29ya2VyLlxuICovXG5leHBvcnQgZGVmYXVsdCBpbml0aWFsaXplKCk7XG4iXX0=
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLXdvcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL2J1aWxkZXJzL2FwcC1zaGVsbC9yZW5kZXItd29ya2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJSCw4REFBaUM7QUFDakMsNkRBQWlEO0FBRWpEOzs7R0FHRztBQUNILE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxnQ0FFdkIsQ0FBQztBQXFDRjs7OztHQUlHO0FBQ0gsS0FBSyxVQUFVLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQWlCO0lBQ3RFLE1BQU0sRUFDSixlQUFlLEVBQ2YsZUFBZSxFQUNmLFlBQVksRUFDWixpQkFBaUIsRUFDakIsT0FBTyxFQUFFLGNBQWMsR0FDeEIsR0FBRyxDQUFDLHlCQUFhLGdCQUFnQix1Q0FBQyxDQUF3QixDQUFDO0lBRTVELElBQUEscUJBQU0sRUFBQyxlQUFlLEVBQUUsMENBQTBDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztJQUV2RixNQUFNLGlCQUFpQixHQUFxQjtRQUMxQztZQUNFLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFFBQVEsRUFBRSxXQUFXO1NBQ3RCO0tBQ0YsQ0FBQztJQUVGLGdDQUFnQztJQUNoQyxJQUFJLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRTtRQUNqQyxJQUFBLHFCQUFNLEVBQUMsaUJBQWlCLEVBQUUsNENBQTRDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztRQUUzRixPQUFPLGlCQUFpQixDQUFDLGNBQWMsRUFBRTtZQUN2QyxRQUFRO1lBQ1IsR0FBRztZQUNILGlCQUFpQjtTQUNsQixDQUFDLENBQUM7S0FDSjtJQUNELElBQUEscUJBQU0sRUFBQyxZQUFZLEVBQUUsdUNBQXVDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztJQUNqRixNQUFNLFdBQVcsR0FBRyxjQUFjLElBQUksZUFBZSxDQUFDO0lBQ3RELElBQUEscUJBQU0sRUFDSixXQUFXLEVBQ1gsOEVBQThFLGdCQUFnQixHQUFHLENBQ2xHLENBQUM7SUFFRixPQUFPLFlBQVksQ0FBQyxXQUFXLEVBQUU7UUFDL0IsUUFBUTtRQUNSLEdBQUc7UUFDSCxjQUFjLEVBQUUsaUJBQWlCO0tBQ2xDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxLQUFjO0lBQ25DLHVIQUF1SDtJQUN2SCxPQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILEtBQUssVUFBVSxVQUFVO0lBQ3ZCLGdCQUFnQjtJQUNoQix5QkFBYSxXQUFXLHVDQUFDLENBQUM7SUFFMUIscUNBQXFDO0lBQ3JDLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxrQkFBZSxVQUFVLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcGxpY2F0aW9uUmVmLCBTdGF0aWNQcm92aWRlciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyByZW5kZXJBcHBsaWNhdGlvbiwgcmVuZGVyTW9kdWxlLCDJtVNFUlZFUl9DT05URVhUIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tc2VydmVyJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnbm9kZTphc3NlcnQnO1xuaW1wb3J0IHsgd29ya2VyRGF0YSB9IGZyb20gJ25vZGU6d29ya2VyX3RocmVhZHMnO1xuXG4vKipcbiAqIFRoZSBmdWxseSByZXNvbHZlZCBwYXRoIHRvIHRoZSB6b25lLmpzIHBhY2thZ2UgdGhhdCB3aWxsIGJlIGxvYWRlZCBkdXJpbmcgd29ya2VyIGluaXRpYWxpemF0aW9uLlxuICogVGhpcyBpcyBwYXNzZWQgYXMgd29ya2VyRGF0YSB3aGVuIHNldHRpbmcgdXAgdGhlIHdvcmtlciB2aWEgdGhlIGBwaXNjaW5hYCBwYWNrYWdlLlxuICovXG5jb25zdCB7IHpvbmVQYWNrYWdlIH0gPSB3b3JrZXJEYXRhIGFzIHtcbiAgem9uZVBhY2thZ2U6IHN0cmluZztcbn07XG5cbmludGVyZmFjZSBTZXJ2ZXJCdW5kbGVFeHBvcnRzIHtcbiAgLyoqIEFuIGludGVybmFsIHRva2VuIHRoYXQgYWxsb3dzIHByb3ZpZGluZyBleHRyYSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2VydmVyIGNvbnRleHQuICovXG4gIMm1U0VSVkVSX0NPTlRFWFQ/OiB0eXBlb2YgybVTRVJWRVJfQ09OVEVYVDtcblxuICAvKiogUmVuZGVyIGFuIE5nTW9kdWxlIGFwcGxpY2F0aW9uLiAqL1xuICByZW5kZXJNb2R1bGU/OiB0eXBlb2YgcmVuZGVyTW9kdWxlO1xuXG4gIC8qKiBOZ01vZHVsZSB0byByZW5kZXIuICovXG4gIEFwcFNlcnZlck1vZHVsZT86IFR5cGU8dW5rbm93bj47XG5cbiAgLyoqIE1ldGhvZCB0byByZW5kZXIgYSBzdGFuZGFsb25lIGFwcGxpY2F0aW9uLiAqL1xuICByZW5kZXJBcHBsaWNhdGlvbj86IHR5cGVvZiByZW5kZXJBcHBsaWNhdGlvbjtcblxuICAvKiogU3RhbmRhbG9uZSBhcHBsaWNhdGlvbiBib290c3RyYXBwaW5nIGZ1bmN0aW9uLiAqL1xuICBkZWZhdWx0PzogKCkgPT4gUHJvbWlzZTxBcHBsaWNhdGlvblJlZj47XG59XG5cbi8qKlxuICogQSByZXF1ZXN0IHRvIHJlbmRlciBhIFNlcnZlciBidW5kbGUgZ2VuZXJhdGUgYnkgdGhlIHVuaXZlcnNhbCBzZXJ2ZXIgYnVpbGRlci5cbiAqL1xuaW50ZXJmYWNlIFJlbmRlclJlcXVlc3Qge1xuICAvKipcbiAgICogVGhlIHBhdGggdG8gdGhlIHNlcnZlciBidW5kbGUgdGhhdCBzaG91bGQgYmUgbG9hZGVkIGFuZCByZW5kZXJlZC5cbiAgICovXG4gIHNlcnZlckJ1bmRsZVBhdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBleGlzdGluZyBIVE1MIGRvY3VtZW50IGFzIGEgc3RyaW5nIHRoYXQgd2lsbCBiZSBhdWdtZW50ZWQgd2l0aCB0aGUgcmVuZGVyZWQgYXBwbGljYXRpb24uXG4gICAqL1xuICBkb2N1bWVudDogc3RyaW5nO1xuICAvKipcbiAgICogQW4gb3B0aW9uYWwgVVJMIHBhdGggdGhhdCByZXByZXNlbnRzIHRoZSBBbmd1bGFyIHJvdXRlIHRoYXQgc2hvdWxkIGJlIHJlbmRlcmVkLlxuICAgKi9cbiAgdXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmVuZGVycyBhbiBhcHBsaWNhdGlvbiBiYXNlZCBvbiBhIHByb3ZpZGVkIHNlcnZlciBidW5kbGUgcGF0aCwgaW5pdGlhbCBkb2N1bWVudCwgYW5kIG9wdGlvbmFsIFVSTCByb3V0ZS5cbiAqIEBwYXJhbSBwYXJhbTAgQSByZXF1ZXN0IHRvIHJlbmRlciBhIHNlcnZlciBidW5kbGUuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgcmVuZGVyIEhUTUwgZG9jdW1lbnQgZm9yIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVuZGVyKHsgc2VydmVyQnVuZGxlUGF0aCwgZG9jdW1lbnQsIHVybCB9OiBSZW5kZXJSZXF1ZXN0KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qge1xuICAgIMm1U0VSVkVSX0NPTlRFWFQsXG4gICAgQXBwU2VydmVyTW9kdWxlLFxuICAgIHJlbmRlck1vZHVsZSxcbiAgICByZW5kZXJBcHBsaWNhdGlvbixcbiAgICBkZWZhdWx0OiBib290c3RyYXBBcHBGbixcbiAgfSA9IChhd2FpdCBpbXBvcnQoc2VydmVyQnVuZGxlUGF0aCkpIGFzIFNlcnZlckJ1bmRsZUV4cG9ydHM7XG5cbiAgYXNzZXJ0KMm1U0VSVkVSX0NPTlRFWFQsIGDJtVNFUlZFUl9DT05URVhUIHdhcyBub3QgZXhwb3J0ZWQgZnJvbTogJHtzZXJ2ZXJCdW5kbGVQYXRofS5gKTtcblxuICBjb25zdCBwbGF0Zm9ybVByb3ZpZGVyczogU3RhdGljUHJvdmlkZXJbXSA9IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiDJtVNFUlZFUl9DT05URVhULFxuICAgICAgdXNlVmFsdWU6ICdhcHAtc2hlbGwnLFxuICAgIH0sXG4gIF07XG5cbiAgLy8gUmVuZGVyIHBsYXRmb3JtIHNlcnZlciBtb2R1bGVcbiAgaWYgKGlzQm9vdHN0cmFwRm4oYm9vdHN0cmFwQXBwRm4pKSB7XG4gICAgYXNzZXJ0KHJlbmRlckFwcGxpY2F0aW9uLCBgcmVuZGVyQXBwbGljYXRpb24gd2FzIG5vdCBleHBvcnRlZCBmcm9tOiAke3NlcnZlckJ1bmRsZVBhdGh9LmApO1xuXG4gICAgcmV0dXJuIHJlbmRlckFwcGxpY2F0aW9uKGJvb3RzdHJhcEFwcEZuLCB7XG4gICAgICBkb2N1bWVudCxcbiAgICAgIHVybCxcbiAgICAgIHBsYXRmb3JtUHJvdmlkZXJzLFxuICAgIH0pO1xuICB9XG4gIGFzc2VydChyZW5kZXJNb2R1bGUsIGByZW5kZXJNb2R1bGUgd2FzIG5vdCBleHBvcnRlZCBmcm9tOiAke3NlcnZlckJ1bmRsZVBhdGh9LmApO1xuICBjb25zdCBtb2R1bGVDbGFzcyA9IGJvb3RzdHJhcEFwcEZuIHx8IEFwcFNlcnZlck1vZHVsZTtcbiAgYXNzZXJ0KFxuICAgIG1vZHVsZUNsYXNzLFxuICAgIGBOZWl0aGVyIGFuIEFwcFNlcnZlck1vZHVsZSBub3IgYSBib290c3RyYXBwaW5nIGZ1bmN0aW9uIHdhcyBleHBvcnRlZCBmcm9tOiAke3NlcnZlckJ1bmRsZVBhdGh9LmAsXG4gICk7XG5cbiAgcmV0dXJuIHJlbmRlck1vZHVsZShtb2R1bGVDbGFzcywge1xuICAgIGRvY3VtZW50LFxuICAgIHVybCxcbiAgICBleHRyYVByb3ZpZGVyczogcGxhdGZvcm1Qcm92aWRlcnMsXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpc0Jvb3RzdHJhcEZuKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgKCkgPT4gUHJvbWlzZTxBcHBsaWNhdGlvblJlZj4ge1xuICAvLyBXZSBjYW4gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGEgbW9kdWxlIGFuZCBhIGJvb3RzdHJhcCBmdW5jdGlvbiBieSByZWFkaW5nIGNvbXBpbGVyLWdlbmVyYXRlZCBgybVtb2RgIHN0YXRpYyBwcm9wZXJ0eTpcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJiAhKCfJtW1vZCcgaW4gdmFsdWUpO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemVzIHRoZSB3b3JrZXIgd2hlbiBpdCBpcyBmaXJzdCBjcmVhdGVkIGJ5IGxvYWRpbmcgdGhlIFpvbmUuanMgcGFja2FnZVxuICogaW50byB0aGUgd29ya2VyIGluc3RhbmNlLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIHJlbmRlciBmdW5jdGlvbiBvZiB0aGUgd29ya2VyLlxuICovXG5hc3luYyBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAvLyBTZXR1cCBab25lLmpzXG4gIGF3YWl0IGltcG9ydCh6b25lUGFja2FnZSk7XG5cbiAgLy8gUmV0dXJuIHRoZSByZW5kZXIgZnVuY3Rpb24gZm9yIHVzZVxuICByZXR1cm4gcmVuZGVyO1xufVxuXG4vKipcbiAqIFRoZSBkZWZhdWx0IGV4cG9ydCB3aWxsIGJlIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBpbml0aWFsaXplIGZ1bmN0aW9uLlxuICogVGhpcyBpcyBhd2FpdGVkIGJ5IHBpc2NpbmEgcHJpb3IgdG8gdXNpbmcgdGhlIFdvcmtlci5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgaW5pdGlhbGl6ZSgpO1xuIl19
@@ -27,12 +27,18 @@ const environment_options_1 = require("../../utils/environment-options");
27
27
  const prerender_1 = require("../../utils/server-rendering/prerender");
28
28
  const service_worker_1 = require("../../utils/service-worker");
29
29
  const supported_browsers_1 = require("../../utils/supported-browsers");
30
+ const i18n_1 = require("./i18n");
30
31
  // eslint-disable-next-line max-lines-per-function
31
32
  async function executeBuild(options, context, rebuildState) {
32
33
  const startTime = process.hrtime.bigint();
33
- const { projectRoot, workspaceRoot, serviceWorker, optimizationOptions, serverEntryPoint, assets, indexHtmlOptions, cacheOptions, prerenderOptions, appShellOptions, ssrOptions, } = options;
34
+ const { projectRoot, workspaceRoot, serviceWorker, optimizationOptions, serverEntryPoint, assets, indexHtmlOptions, cacheOptions, prerenderOptions, appShellOptions, ssrOptions, verbose, } = options;
34
35
  const browsers = (0, supported_browsers_1.getSupportedBrowsers)(projectRoot, context.logger);
35
36
  const target = (0, utils_1.transformSupportedBrowsersToTargets)(browsers);
37
+ // Load active translations if inlining
38
+ // TODO: Integrate into watch mode and only load changed translations
39
+ if (options.i18nOptions.shouldInline) {
40
+ await (0, i18n_1.loadActiveTranslations)(context, options.i18nOptions);
41
+ }
36
42
  // Reuse rebuild state or create new bundle contexts for code and global stylesheets
37
43
  let bundlerContexts = rebuildState?.rebuildContexts;
38
44
  const codeBundleCache = rebuildState?.codeBundleCache ??
@@ -89,11 +95,15 @@ async function executeBuild(options, context, rebuildState) {
89
95
  */
90
96
  let indexContentOutputNoCssInlining;
91
97
  // Generate index HTML file
92
- if (indexHtmlOptions) {
93
- const { content, contentWithoutCriticalCssInlined, errors, warnings } = await (0, index_html_generator_1.generateIndexHtml)(initialFiles, executionResult, {
98
+ // If localization is enabled, index generation is handled in the inlining process.
99
+ // NOTE: Localization with SSR is not currently supported.
100
+ if (indexHtmlOptions && !options.i18nOptions.shouldInline) {
101
+ const { content, contentWithoutCriticalCssInlined, errors, warnings } = await (0, index_html_generator_1.generateIndexHtml)(initialFiles, executionResult.outputFiles, {
94
102
  ...options,
95
103
  optimizationOptions,
96
- });
104
+ },
105
+ // Set lang attribute to the defined source locale if present
106
+ options.i18nOptions.hasDefinedSourceLocale ? options.i18nOptions.sourceLocale : undefined);
97
107
  indexContentOutputNoCssInlining = contentWithoutCriticalCssInlined;
98
108
  printWarningsAndErrorsToConsole(context, warnings, errors);
99
109
  executionResult.addOutputFile(indexHtmlOptions.output, content);
@@ -104,7 +114,7 @@ async function executeBuild(options, context, rebuildState) {
104
114
  // Pre-render (SSG) and App-shell
105
115
  if (prerenderOptions || appShellOptions) {
106
116
  (0, node_assert_1.default)(indexContentOutputNoCssInlining, 'The "index" option is required when using the "ssg" or "appShell" options.');
107
- const { output, warnings, errors } = await (0, prerender_1.prerenderPages)(workspaceRoot, options.tsconfig, appShellOptions, prerenderOptions, executionResult.outputFiles, indexContentOutputNoCssInlining, optimizationOptions.styles.inlineCritical, environment_options_1.maxWorkers);
117
+ const { output, warnings, errors } = await (0, prerender_1.prerenderPages)(workspaceRoot, appShellOptions, prerenderOptions, executionResult.outputFiles, indexContentOutputNoCssInlining, optimizationOptions.styles.inlineCritical, environment_options_1.maxWorkers, verbose);
108
118
  printWarningsAndErrorsToConsole(context, warnings, errors);
109
119
  for (const [path, content] of Object.entries(output)) {
110
120
  executionResult.addOutputFile(path, content);
@@ -144,6 +154,10 @@ async function executeBuild(options, context, rebuildState) {
144
154
  (0, utils_1.logBuildStats)(context, metafile, initialFiles, estimatedTransferSizes);
145
155
  const buildTime = Number(process.hrtime.bigint() - startTime) / 10 ** 9;
146
156
  context.logger.info(`Application bundle generation complete. [${buildTime.toFixed(3)} seconds]`);
157
+ // Perform i18n translation inlining if enabled
158
+ if (options.i18nOptions.shouldInline) {
159
+ await (0, i18n_1.inlineI18n)(options, executionResult, initialFiles);
160
+ }
147
161
  return executionResult;
148
162
  }
149
163
  exports.executeBuild = executeBuild;
@@ -155,4 +169,4 @@ function printWarningsAndErrorsToConsole(context, warnings, errors) {
155
169
  context.logger.warn(warning);
156
170
  }
157
171
  }
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZS1idWlsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL2J1aWxkZXJzL2FwcGxpY2F0aW9uL2V4ZWN1dGUtYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7O0FBR0gsOERBQWlDO0FBQ2pDLGlGQUE4RTtBQUM5RSx5RkFHcUQ7QUFDckQseUVBQXFFO0FBQ3JFLDJGQUE2RjtBQUM3RiwyRUFBNEU7QUFDNUUsdUVBQXNGO0FBQ3RGLHFFQUFvRjtBQUNwRixtRkFBNkU7QUFDN0UsNkVBQXdFO0FBQ3hFLHFEQUttQztBQUNuQyx5REFBcUQ7QUFDckQseUVBQTZEO0FBQzdELHNFQUF3RTtBQUN4RSwrREFBZ0Y7QUFDaEYsdUVBQXNFO0FBR3RFLGtEQUFrRDtBQUMzQyxLQUFLLFVBQVUsWUFBWSxDQUNoQyxPQUEwQyxFQUMxQyxPQUF1QixFQUN2QixZQUEyQjtJQUUzQixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBRTFDLE1BQU0sRUFDSixXQUFXLEVBQ1gsYUFBYSxFQUNiLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsVUFBVSxHQUNYLEdBQUcsT0FBTyxDQUFDO0lBRVosTUFBTSxRQUFRLEdBQUcsSUFBQSx5Q0FBb0IsRUFBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25FLE1BQU0sTUFBTSxHQUFHLElBQUEsMkNBQW1DLEVBQUMsUUFBUSxDQUFDLENBQUM7SUFFN0Qsb0ZBQW9GO0lBQ3BGLElBQUksZUFBZSxHQUFHLFlBQVksRUFBRSxlQUFlLENBQUM7SUFDcEQsTUFBTSxlQUFl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QUFJLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDOUI7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IEJ1aWxkZXJDb250ZXh0IH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2FyY2hpdGVjdCc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ25vZGU6YXNzZXJ0JztcbmltcG9ydCB7IFNvdXJjZUZpbGVDYWNoZSB9IGZyb20gJy4uLy4uL3Rvb2xzL2VzYnVpbGQvYW5ndWxhci9jb21waWxlci1wbHVnaW4nO1xuaW1wb3J0IHtcbiAgY3JlYXRlQnJvd3NlckNvZGVCdW5kbGVPcHRpb25zLFxuICBjcmVhdGVTZXJ2ZXJDb2RlQnVuZGxlT3B0aW9ucyxcbn0gZnJvbSAnLi4vLi4vdG9vbHMvZXNidWlsZC9hcHBsaWNhdGlvbi1jb2RlLWJ1bmRsZSc7XG5pbXBvcnQgeyBCdW5kbGVyQ29udGV4dCB9IGZyb20gJy4uLy4uL3Rvb2xzL2VzYnVpbGQvYnVuZGxlci1jb250ZXh0JztcbmltcG9ydCB7IEV4ZWN1dGlvblJlc3VsdCwgUmVidWlsZFN0YXRlIH0gZnJvbSAnLi4vLi4vdG9vbHMvZXNidWlsZC9idW5kbGVyLWV4ZWN1dGlvbi1yZXN1bHQnO1xuaW1wb3J0IHsgY2hlY2tDb21tb25KU01vZHVsZXMgfSBmcm9tICcuLi8uLi90b29scy9lc2J1aWxkL2NvbW1vbmpzLWNoZWNrZXInO1xuaW1wb3J0IHsgY3JlYXRlR2xvYmFsU2NyaXB0c0J1bmRsZU9wdGlvbnMgfSBmcm9tICcuLi8uLi90b29scy9lc2J1aWxkL2dsb2JhbC1zY3JpcHRzJztcbmltcG9ydCB7IGNyZWF0ZUdsb2JhbFN0eWxlc0J1bmRsZU9wdGlvbnMgfSBmcm9tICcuLi8uLi90b29scy9lc2J1aWxkL2dsb2JhbC1zdHlsZXMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVJbmRleEh0bWwgfSBmcm9tICcuLi8uLi90b29scy9lc2J1aWxkL2luZGV4LWh0bWwtZ2VuZXJhdG9yJztcbmltcG9ydCB7IGV4dHJhY3RMaWNlbnNlcyB9IGZyb20gJy4uLy4uL3Rvb2xzL2VzYnVpbGQvbGljZW5zZS1leHRyYWN0b3InO1xuaW1wb3J0IHtcbiAgY2FsY3VsYXRlRXN0aW1hdGVkVHJhbnNmZXJTaXplcyxcbiAgbG9nQnVpbGRTdGF0cyxcbiAgbG9nTWVzc2FnZXMsXG4gIHRyYW5zZm9ybVN1cHBvcnRlZEJyb3dzZXJzVG9UYXJnZXRzLFxufSBmcm9tICcuLi8uLi90b29scy9lc2J1aWxkL3V0aWxzJztcbmltcG9ydCB7IGNvcHlBc3NldHMgfSBmcm9tICcuLi8uLi91dGlscy9jb3B5LWFzc2V0cyc7XG5pbXBvcnQgeyBtYXhXb3JrZXJzIH0gZnJvbSAnLi4vLi4vdXRpbHMvZW52aXJvbm1lbnQtb3B0aW9ucyc7XG5pbXBvcnQgeyBwcmVyZW5kZXJQYWdlcyB9IGZyb20gJy4uLy4uL3V0aWxzL3NlcnZlci1yZW5kZXJpbmcvcHJlcmVuZGVyJztcbmltcG9ydCB7IGF1Z21lbnRBcHBXaXRoU2VydmljZVdvcmtlckVzYnVpbGQgfSBmcm9tICcuLi8uLi91dGlscy9zZXJ2aWNlLXdvcmtlcic7XG5pbXBvcnQgeyBnZXRTdXBwb3J0ZWRCcm93c2VycyB9IGZyb20gJy4uLy4uL3V0aWxzL3N1cHBvcnRlZC1icm93c2Vycyc7XG5pbXBvcnQgeyBOb3JtYWxpemVkQXBwbGljYXRpb25CdWlsZE9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxpbmVzLXBlci1mdW5jdGlvblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVCdWlsZChcbiAgb3B0aW9uczogTm9ybWFsaXplZEFwcGxpY2F0aW9uQnVpbGRPcHRpb25zLFxuICBjb250ZXh0OiBCdWlsZGVyQ29udGV4dCxcbiAgcmVidWlsZFN0YXRlPzogUmVidWlsZFN0YXRlLFxuKTogUHJvbWlzZTxFeGVjdXRpb25SZXN1bHQ+IHtcbiAgY29uc3Qgc3RhcnRUaW1lID0gcHJvY2Vzcy5ocnRpbWUuYmlnaW50KCk7XG5cbiAgY29uc3Qge1xuICAgIHByb2plY3RSb290LFxuICAgIHdvcmtzcGFjZVJvb3QsXG4gICAgc2VydmljZVdvcmtlcixcbiAgICBvcHRpbWl6YXRpb25PcHRpb25zLFxuICAgIHNlcnZlckVudHJ5UG9pbnQsXG4gICAgYXNzZXRzLFxuICAgIGluZGV4SHRtbE9wdGlvbnMsXG4gICAgY2FjaGVPcHRpb25zLFxuICAgIHByZXJlbmRlck9wdGlvbnMsXG4gICAgYXBwU2hlbGxPcHRpb25zLFxuICAgIHNzck9wdGlvbnMsXG4gIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IGJyb3dzZXJzID0gZ2V0U3VwcG9ydGVkQnJvd3NlcnMocHJvamVjdFJvb3QsIGNvbnRleHQubG9nZ2VyKTtcbiAgY29uc3QgdGFyZ2V0ID0gdHJhbnNmb3JtU3VwcG9ydGVkQnJvd3NlcnNUb1RhcmdldHMoYnJvd3NlcnMpO1xuXG4gIC8vIFJldXNlIHJlYnVpbGQgc3RhdGUgb3IgY3JlYXRlIG5ldyBidW5kbGUgY29udGV4dHMgZm9yIGNvZGUgYW5kIGdsb2JhbCBzdHlsZXNoZWV0c1xuICBsZXQgYnVuZGxlckNvbnRleHRzID0gcmVidWlsZFN0YXRlPy5yZWJ1aWxkQ29udGV4dHM7XG4gIGNvbnN0IGNvZGVCdW5kbGVDYWNoZSA9XG4gICAgcmVidWlsZFN0YXRlPy5jb2RlQnVuZGxlQ2FjaGUgPz9cbiAgICBuZXcgU291cmNlRmlsZUNhY2hlKGNhY2hlT3B0aW9ucy5lbmFibGVkID8gY2FjaGVPcHRpb25zLnBhdGggOiB1bmRlZmluZWQpO1xuICBpZiAoYnVuZGxlckNvbnRleHRzID09PSB1bmRlZmluZWQpIHtcbiAgICBidW5kbGVyQ29udGV4dHMgPSBbXTtcblxuICAgIC8vIEJyb3dzZXIgYXBwbGljYXRpb24gY29kZVxuICAgIGJ1bmRsZXJDb250ZXh0cy5wdXNoKFxuICAgICAgbmV3IEJ1bmRsZXJDb250ZXh0KFxuICAgICAgICB3b3Jrc3BhY2VSb290LFxuICAgICAgICAhIW9wdGlvbnMud2F0Y2gsXG4gICAgICAgIGNyZWF0ZUJyb3dzZXJDb2RlQnVuZGxlT3B0aW9ucyhvcHRpb25zLCB0YXJnZXQsIGNvZGVCdW5kbGVDYWNoZSksXG4gICAgICApLFxuICAgICk7XG5cbiAgICAvLyBHbG9iYWwgU3R5bGVzaGVldHNcbiAgICBpZiAob3B0aW9ucy5nbG9iYWxTdHlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBpbml0aWFsIG9mIFt0cnVlLCBmYWxzZV0pIHtcbiAgICAgICAgY29uc3QgYnVuZGxlT3B0aW9ucyA9IGNyZWF0ZUdsb2JhbFN0eWxlc0J1bmRsZU9wdGlvbnMoXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgaW5pdGlhbCxcbiAgICAgICAgICBjb2RlQnVuZGxlQ2FjaGU/LmxvYWRSZXN1bHRDYWNoZSxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGJ1bmRsZU9wdGlvbnMpIHtcbiAgICAgICAgICBidW5kbGVyQ29udGV4dHMucHVzaChcbiAgICAgICAgICAgIG5ldyBCdW5kbGVyQ29udGV4dCh3b3Jrc3BhY2VSb290LCAhIW9wdGlvbnMud2F0Y2gsIGJ1bmRsZU9wdGlvbnMsICgpID0+IGluaXRpYWwpLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHbG9iYWwgU2NyaXB0c1xuICAgIGlmIChvcHRpb25zLmdsb2JhbFNjcmlwdHMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBpbml0aWFsIG9mIFt0cnVlLCBmYWxzZV0pIHtcbiAgICAgICAgY29uc3QgYnVuZGxlT3B0aW9ucyA9IGNyZWF0ZUdsb2JhbFNjcmlwdHNCdW5kbGVPcHRpb25zKG9wdGlvbnMsIGluaXRpYWwpO1xuICAgICAgICBpZiAoYnVuZGxlT3B0aW9ucykge1xuICAgICAgICAgIGJ1bmRsZXJDb250ZXh0cy5wdXNoKFxuICAgICAgICAgICAgbmV3IEJ1bmRsZXJDb250ZXh0KHdvcmtzcGFjZVJvb3QsICEhb3B0aW9ucy53YXRjaCwgYnVuZGxlT3B0aW9ucywgKCkgPT4gaW5pdGlhbCksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNlcnZlciBhcHBsaWNhdGlvbiBjb2RlXG4gICAgaWYgKHNlcnZlckVudHJ5UG9pbnQpIHtcbiAgICAgIGJ1bmRsZXJDb250ZXh0cy5wdXNoKFxuICAgICAgICBuZXcgQnVuZGxlckNvbnRleHQoXG4gICAgICAgICAgd29ya3NwYWNlUm9vdCxcbiAgICAgICAgICAhIW9wdGlvbnMud2F0Y2gsXG4gICAgICAgICAgY3JlYXRlU2VydmVyQ29kZUJ1bmRsZU9wdGlvbnMoXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgLy8gTk9URTogZWFybGllciB2ZXJzaW9ucyBvZiBOb2RlLmpzIGFyZSBub3Qgc3VwcG9ydGVkIGR1ZSB0byB1bnNhZmUgcHJvbWlzZSBwYXRjaGluZy5cbiAgICAgICAgICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9wdWxsLzUwNTUyI2lzc3VlLTE3Mzc5Njc1OTJcbiAgICAgICAgICAgIFsuLi50YXJnZXQsICdub2RlMTguMTMnXSxcbiAgICAgICAgICAgIGNvZGVCdW5kbGVDYWNoZSxcbiAgICAgICAgICApLFxuICAgICAgICAgICgpID0+IGZhbHNlLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBidW5kbGluZ1Jlc3VsdCA9IGF3YWl0IEJ1bmRsZXJDb250ZXh0LmJ1bmRsZUFsbChidW5kbGVyQ29udGV4dHMpO1xuXG4gIC8vIExvZyBhbGwgd2FybmluZ3MgYW5kIGVycm9ycyBnZW5lcmF0ZWQgZHVyaW5nIGJ1bmRsaW5nXG4gIGF3YWl0IGxvZ01lc3NhZ2VzKGNvbnRleHQsIGJ1bmRsaW5nUmVzdWx0KTtcblxuICBjb25zdCBleGVjdXRpb25SZXN1bHQgPSBuZXcgRXhlY3V0aW9uUmVzdWx0KGJ1bmRsZXJDb250ZXh0cywgY29kZUJ1bmRsZUNhY2hlKTtcblxuICAvLyBSZXR1cm4gaWYgdGhlIGJ1bmRsaW5nIGhhcyBlcnJvcnNcbiAgaWYgKGJ1bmRsaW5nUmVzdWx0LmVycm9ycykge1xuICAgIHJldHVybiBleGVjdXRpb25SZXN1bHQ7XG4gIH1cblxuICBjb25zdCB7IG1ldGFmaWxlLCBpbml0aWFsRmlsZXMsIG91dHB1dEZpbGVzIH0gPSBidW5kbGluZ1Jlc3VsdDtcblxuICBleGVjdXRpb25SZXN1bHQub3V0cHV0RmlsZXMucHVzaCguLi5vdXRwdXRGaWxlcyk7XG5cbiAgLy8gQ2hlY2sgbWV0YWZpbGUgZm9yIENvbW1vbkpTIG1vZHVsZSB1c2FnZSBpZiBvcHRpbWl6aW5nIHNjcmlwdHNcbiAgaWYgKG9wdGltaXphdGlvbk9wdGlvbnMuc2NyaXB0cykge1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gY2hlY2tDb21tb25KU01vZHVsZXMobWV0YWZpbGUsIG9wdGlvbnMuYWxsb3dlZENvbW1vbkpzRGVwZW5kZW5jaWVzKTtcbiAgICBhd2FpdCBsb2dNZXNzYWdlcyhjb250ZXh0LCB7IHdhcm5pbmdzOiBtZXNzYWdlcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRleCBIVE1MIGNvbnRlbnQgd2l0aG91dCBDU1MgaW5saW5pbmcgdG8gYmUgdXNlZCBmb3Igc2VydmVyIHJlbmRlcmluZyAoQXBwU2hlbGwsIFNTRyBhbmQgU1NSKS5cbiAgICpcbiAgICogTk9URTogd2UgZG9uJ3QgcGVyZm9ybSBjcml0aWNhbCBDU1MgaW5saW5pbmcgYXMgdGhpcyB3aWxsIGJlIGRvbmUgZHVyaW5nIHNlcnZlciByZW5kZXJpbmcuXG4gICAqL1xuICBsZXQgaW5kZXhDb250ZW50T3V0cHV0Tm9Dc3NJbmxpbmluZzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8vIEdlbmVyYXRlIGluZGV4IEhUTUwgZmlsZVxuICBpZiAoaW5kZXhIdG1sT3B0aW9ucykge1xuICAgIGNvbnN0IHsgY29udGVudCwgY29udGVudFdpdGhvdXRDcml0aWNhbENzc0lubGluZWQsIGVycm9ycywgd2FybmluZ3MgfSA9IGF3YWl0IGdlbmVyYXRlSW5kZXhIdG1sKFxuICAgICAgaW5pdGlhbEZpbGVzLFxuICAgICAgZXhlY3V0aW9uUmVzdWx0LFxuICAgICAge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBvcHRpbWl6YXRpb25PcHRpb25zLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaW5kZXhDb250ZW50T3V0cHV0Tm9Dc3NJbmxpbmluZyA9IGNvbnRlbnRXaXRob3V0Q3JpdGljYWxDc3NJbmxpbmVkO1xuICAgIHByaW50V2FybmluZ3NBbmRFcnJvcnNUb0NvbnNvbGUoY29udGV4dCwgd2FybmluZ3MsIGVycm9ycyk7XG5cbiAgICBleGVjdXRpb25SZXN1bHQuYWRkT3V0cHV0RmlsZShpbmRleEh0bWxPcHRpb25zLm91dHB1dCwgY29udGVudCk7XG5cbiAgICBpZiAoc3NyT3B0aW9ucykge1xuICAgICAgZXhlY3V0aW9uUmVzdWx0LmFkZE91dHB1dEZpbGUoJ2luZGV4LnNlcnZlci5odG1sJywgY29udGVudFdpdGhvdXRDcml0aWNhbENzc0lubGluZWQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFByZS1yZW5kZXIgKFNTRykgYW5kIEFwcC1zaGVsbFxuICBpZiAocHJlcmVuZGVyT3B0aW9ucyB8fCBhcHBTaGVsbE9wdGlvbnMpIHtcbiAgICBhc3NlcnQoXG4gICAgICBpbmRleENvbnRlbnRPdXRwdXROb0Nzc0lubGluaW5nLFxuICAgICAgJ1RoZSBcImluZGV4XCIgb3B0aW9uIGlzIHJlcXVpcmVkIHdoZW4gdXNpbmcgdGhlIFwic3NnXCIgb3IgXCJhcHBTaGVsbFwiIG9wdGlvbnMuJyxcbiAgICApO1xuXG4gICAgY29uc3QgeyBvdXRwdXQsIHdhcm5pbmdzLCBlcnJvcnMgfSA9IGF3YWl0IHByZXJlbmRlclBhZ2VzKFxuICAgICAgd29ya3NwYWNlUm9vdCxcbiAgICAgIG9wdGlvbnMudHNjb25maWcsXG4gICAgICBhcHBTaGVsbE9wdGlvbnMsXG4gICAgICBwcmVyZW5kZXJPcHRpb25zLFxuICAgICAgZXhlY3V0aW9uUmVzdWx0Lm91dHB1dEZpbGVzLFxuICAgICAgaW5kZXhDb250ZW50T3V0cHV0Tm9Dc3NJbmxpbmluZyxcbiAgICAgIG9wdGltaXphdGlvbk9wdGlvbnMuc3R5bGVzLmlubGluZUNyaXRpY2FsLFxuICAgICAgbWF4V29ya2VycyxcbiAgICApO1xuXG4gICAgcHJpbnRXYXJuaW5nc0FuZEVycm9yc1RvQ29uc29sZShjb250ZXh0LCB3YXJuaW5ncywgZXJyb3JzKTtcblxuICAgIGZvciAoY29uc3QgW3BhdGgsIGNvbnRlbnRdIG9mIE9iamVjdC5lbnRyaWVzKG91dHB1dCkpIHtcbiAgICAgIGV4ZWN1dGlvblJlc3VsdC5hZGRPdXRwdXRGaWxlKHBhdGgsIGNvbnRlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvcHkgYXNzZXRzXG4gIGlmIChhc3NldHMpIHtcbiAgICAvLyBUaGUgd2VicGFjayBjb3B5IGFzc2V0cyBoZWxwZXIgaXMgdXNlZCB3aXRoIG5vIGJhc2UgcGF0aHMgZGVmaW5lZC4gVGhpcyBwcmV2ZW50cyB0aGUgaGVscGVyXG4gICAgLy8gZnJvbSBkaXJlY3RseSB3cml0aW5nIHRvIGRpc2suIFRoaXMgc2hvdWxkIGV2ZW50dWFsbHkgYmUgcmVwbGFjZWQgd2l0aCBhIG1vcmUgb3B0aW1pemVkIGhlbHBlci5cbiAgICBleGVjdXRpb25SZXN1bHQuYXNzZXRGaWxlcy5wdXNoKC4uLihhd2FpdCBjb3B5QXNzZXRzKGFzc2V0cywgW10sIHdvcmtzcGFjZVJvb3QpKSk7XG4gIH1cblxuICAvLyBXcml0ZSBtZXRhZmlsZSBpZiBzdGF0cyBvcHRpb24gaXMgZW5hYmxlZFxuICBpZiAob3B0aW9ucy5zdGF0cykge1xuICAgIGV4ZWN1dGlvblJlc3VsdC5hZGRPdXRwdXRGaWxlKCdzdGF0cy5qc29uJywgSlNPTi5zdHJpbmdpZnkobWV0YWZpbGUsIG51bGwsIDIpKTtcbiAgfVxuXG4gIC8vIEV4dHJhY3QgYW5kIHdyaXRlIGxpY2Vuc2VzIGZvciB1c2VkIHBhY2thZ2VzXG4gIGlmIChvcHRpb25zLmV4dHJhY3RMaWNlbnNlcykge1xuICAgIGV4ZWN1dGlvblJlc3VsdC5hZGRPdXRwdXRGaWxlKFxuICAgICAgJzNyZHBhcnR5bGljZW5zZXMudHh0JyxcbiAgICAgIGF3YWl0IGV4dHJhY3RMaWNlbnNlcyhtZXRhZmlsZSwgd29ya3NwYWNlUm9vdCksXG4gICAgKTtcbiAgfVxuXG4gIC8vIEF1Z21lbnQgdGhlIGFwcGxpY2F0aW9uIHdpdGggc2VydmljZSB3b3JrZXIgc3VwcG9ydFxuICBpZiAoc2VydmljZVdvcmtlcikge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzZXJ2aWNlV29ya2VyUmVzdWx0ID0gYXdhaXQgYXVnbWVudEFwcFdpdGhTZXJ2aWNlV29ya2VyRXNidWlsZChcbiAgICAgICAgd29ya3NwYWNlUm9vdCxcbiAgICAgICAgc2VydmljZVdvcmtlcixcbiAgICAgICAgb3B0aW9ucy5iYXNlSHJlZiB8fCAnLycsXG4gICAgICAgIGV4ZWN1dGlvblJlc3VsdC5vdXRwdXRGaWxlcyxcbiAgICAgICAgZXhlY3V0aW9uUmVzdWx0LmFzc2V0RmlsZXMsXG4gICAgICApO1xuICAgICAgZXhlY3V0aW9uUmVzdWx0LmFkZE91dHB1dEZpbGUoJ25nc3cuanNvbicsIHNlcnZpY2VXb3JrZXJSZXN1bHQubWFuaWZlc3QpO1xuICAgICAgZXhlY3V0aW9uUmVzdWx0LmFzc2V0RmlsZXMucHVzaCguLi5zZXJ2aWNlV29ya2VyUmVzdWx0LmFzc2V0RmlsZXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb250ZXh0LmxvZ2dlci5lcnJvcihlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IGAke2Vycm9yfWApO1xuXG4gICAgICByZXR1cm4gZXhlY3V0aW9uUmVzdWx0O1xuICAgIH1cbiAgfVxuXG4gIC8vIENhbGN1bGF0ZSBlc3RpbWF0ZWQgdHJhbnNmZXIgc2l6ZSBpZiBzY3JpcHRzIGFyZSBvcHRpbWl6ZWRcbiAgbGV0IGVzdGltYXRlZFRyYW5zZmVyU2l6ZXM7XG4gIGlmIChvcHRpbWl6YXRpb25PcHRpb25zLnNjcmlwdHMgfHwgb3B0aW1pemF0aW9uT3B0aW9ucy5zdHlsZXMubWluaWZ5KSB7XG4gICAgZXN0aW1hdGVkVHJhbnNmZXJTaXplcyA9IGF3YWl0IGNhbGN1bGF0ZUVzdGltYXRlZFRyYW5zZmVyU2l6ZXMoZXhlY3V0aW9uUmVzdWx0Lm91dHB1dEZpbGVzKTtcbiAgfVxuICBsb2dCdWlsZFN0YXRzKGNvbnRleHQsIG1ldGFmaWxlLCBpbml0aWFsRmlsZXMsIGVzdGltYXRlZFRyYW5zZmVyU2l6ZXMpO1xuXG4gIGNvbnN0IGJ1aWxkVGltZSA9IE51bWJlcihwcm9jZXNzLmhydGltZS5iaWdpbnQoKSAtIHN0YXJ0VGltZSkgLyAxMCAqKiA5O1xuICBjb250ZXh0LmxvZ2dlci5pbmZvKGBBcHBsaWNhdGlvbiBidW5kbGUgZ2VuZXJhdGlvbiBjb21wbGV0ZS4gWyR7YnVpbGRUaW1lLnRvRml4ZWQoMyl9IHNlY29uZHNdYCk7XG5cbiAgcmV0dXJuIGV4ZWN1dGlvblJlc3VsdDtcbn1cblxuZnVuY3Rpb24gcHJpbnRXYXJuaW5nc0FuZEVycm9yc1RvQ29uc29sZShcbiAgY29udGV4dDogQnVpbGRlckNvbnRleHQsXG4gIHdhcm5pbmdzOiBzdHJpbmdbXSxcbiAgZXJyb3JzOiBzdHJpbmdbXSxcbik6IHZvaWQge1xuICBmb3IgKGNvbnN0IGVycm9yIG9mIGVycm9ycykge1xuICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgfVxuICBmb3IgKGNvbnN0IHdhcm5pbmcgb2Ygd2FybmluZ3MpIHtcbiAgICBjb250ZXh0LmxvZ2dlci53YXJuKHdhcm5pbmcpO1xuICB9XG59XG4iXX0=
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZS1idWlsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL2J1aWxkZXJzL2FwcGxpY2F0aW9uL2V4ZWN1dGUtYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7O0FBR0gsOERBQWlDO0FBQ2pDLGlGQUE4RTtBQUM5RSx5RkFHcUQ7QUFDckQseUVBQXFFO0FBQ3JFLDJGQUE2RjtBQUM3RiwyRUFBNEU7QUFDNUUsdUVBQXNGO0FBQ3RGLHFFQUFvRjtBQUNwRixtRkFBNkU7QUFDN0UsNkVBQXdFO0FBQ3hFLHFEQUttQztBQUNuQyx5REFBcUQ7QUFDckQseUVBQTZEO0FBQzdELHNFQUF3RTtBQUN4RSwrREFBZ0Y7QUFDaEYsdUVBQXNFO0FBQ3RFLGlDQUE0RDtBQUc1RCxrREFBa0Q7QUFDM0MsS0FBSyxVQUFVLFlBQVksQ0FDaEMsT0FBMEMsRUFDMUMsT0FBdUIsRUFDdkIsWUFBMkI7SUFFM0IsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUUxQyxNQUFNLEVBQ0osV0FBVyxFQUNYLGFBQWEsRUFDYixhQUFhLEVBQ2IsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLFVBQVUsRUFDVixPQUFPLEdBQ1IsR0FBRyxPQUFPLENBQUM7SUFFWixNQUFNLFFBQVEsR0FBRyxJQUFBLHlDQUFvQixFQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkUsTUFBTSxNQUFNLEdBQUcsSUFBQSwyQ0FBbUMsRUFBQyxRQUFRLENBQUMsQ0FBQztJQUU3RCx1Q0FBdUM7SUFDdkMscUVBQXFFO0lBQ3JFLElBQUksT0FBTyxDQUFD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TUFBTSxDQUFDLElBQUksQ0FBQyw0Q0FBNEMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFakcsK0NBQStDO0lBQy9DLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUU7UUFDcEMsTUFBTSxJQUFBLGlCQUFVLEVBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztLQUMxRDtJQUVELE9BQU8sZUFBZSxDQUFDO0FBQ3pCLENBQUM7QUF2T0Qsb0NBdU9DO0FBRUQsU0FBUywrQkFBK0IsQ0FDdEMsT0FBdUIsRUFDdkIsUUFBa0IsRUFDbEIsTUFBZ0I7SUFFaEIsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7UUFDMUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDN0I7SUFDRCxLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRTtRQUM5QixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUM5QjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgQnVpbGRlckNvbnRleHQgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvYXJjaGl0ZWN0JztcbmltcG9ydCBhc3NlcnQgZnJvbSAnbm9kZTphc3NlcnQnO1xuaW1wb3J0IHsgU291cmNlRmlsZUNhY2hlIH0gZnJvbSAnLi4vLi4vdG9vbHMvZXNidWlsZC9hbmd1bGFyL2NvbXBpbGVyLXBsdWdpbic7XG5pbXBvcnQge1xuICBjcmVhdGVCcm93c2VyQ29kZUJ1bmRsZU9wdGlvbnMsXG4gIGNyZWF0ZVNlcnZlckNvZGVCdW5kbGVPcHRpb25zLFxufSBmcm9tICcuLi8uLi90b29scy9lc2J1aWxkL2FwcGxpY2F0aW9uLWNvZGUtYnVuZGxlJztcbmltcG9ydCB7IEJ1bmRsZXJDb250ZXh0IH0gZnJvbSAnLi4vLi4vdG9vbHMvZXNidWlsZC9idW5kbGVyLWNvbnRleHQnO1xuaW1wb3J0IHsgRXhlY3V0aW9uUmVzdWx0LCBSZWJ1aWxkU3RhdGUgfSBmcm9tICcuLi8uLi90b29scy9lc2J1aWxkL2J1bmRsZXItZXhlY3V0aW9uLXJlc3VsdCc7XG5pbXBvcnQgeyBjaGVja0NvbW1vbkpTTW9kdWxlcyB9IGZyb20gJy4uLy4uL3Rvb2xzL2VzYnVpbGQvY29tbW9uanMtY2hlY2tlcic7XG5pbXBvcnQgeyBjcmVhdGVHbG9iYWxTY3JpcHRzQnVuZGxlT3B0aW9ucyB9IGZyb20gJy4uLy4uL3Rvb2xzL2VzYnVpbGQvZ2xvYmFsLXNjcmlwdHMnO1xuaW1wb3J0IHsgY3JlYXRlR2xvYmFsU3R5bGVzQnVuZGxlT3B0aW9ucyB9IGZyb20gJy4uLy4uL3Rvb2xzL2VzYnVpbGQvZ2xvYmFsLXN0eWxlcyc7XG5pbXBvcnQgeyBnZW5lcmF0ZUluZGV4SHRtbCB9IGZyb20gJy4uLy4uL3Rvb2xzL2VzYnVpbGQvaW5kZXgtaHRtbC1nZW5lcmF0b3InO1xuaW1wb3J0IHsgZXh0cmFjdExpY2Vuc2VzIH0gZnJvbSAnLi4vLi4vdG9vbHMvZXNidWlsZC9saWNlbnNlLWV4dHJhY3Rvcic7XG5pbXBvcnQge1xuICBjYWxjdWxhdGVFc3RpbWF0ZWRUcmFuc2ZlclNpemVzLFxuICBsb2dCdWlsZFN0YXRzLFxuICBsb2dNZXNzYWdlcyxcbiAgdHJhbnNmb3JtU3VwcG9ydGVkQnJvd3NlcnNUb1RhcmdldHMsXG59IGZyb20gJy4uLy4uL3Rvb2xzL2VzYnVpbGQvdXRpbHMnO1xuaW1wb3J0IHsgY29weUFzc2V0cyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvcHktYXNzZXRzJztcbmltcG9ydCB7IG1heFdvcmtlcnMgfSBmcm9tICcuLi8uLi91dGlscy9lbnZpcm9ubWVudC1vcHRpb25zJztcbmltcG9ydCB7IHByZXJlbmRlclBhZ2VzIH0gZnJvbSAnLi4vLi4vdXRpbHMvc2VydmVyLXJlbmRlcmluZy9wcmVyZW5kZXInO1xuaW1wb3J0IHsgYXVnbWVudEFwcFdpdGhTZXJ2aWNlV29ya2VyRXNidWlsZCB9IGZyb20gJy4uLy4uL3V0aWxzL3NlcnZpY2Utd29ya2VyJztcbmltcG9ydCB7IGdldFN1cHBvcnRlZEJyb3dzZXJzIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3VwcG9ydGVkLWJyb3dzZXJzJztcbmltcG9ydCB7IGlubGluZUkxOG4sIGxvYWRBY3RpdmVUcmFuc2xhdGlvbnMgfSBmcm9tICcuL2kxOG4nO1xuaW1wb3J0IHsgTm9ybWFsaXplZEFwcGxpY2F0aW9uQnVpbGRPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1saW5lcy1wZXItZnVuY3Rpb25cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjdXRlQnVpbGQoXG4gIG9wdGlvbnM6IE5vcm1hbGl6ZWRBcHBsaWNhdGlvbkJ1aWxkT3B0aW9ucyxcbiAgY29udGV4dDogQnVpbGRlckNvbnRleHQsXG4gIHJlYnVpbGRTdGF0ZT86IFJlYnVpbGRTdGF0ZSxcbik6IFByb21pc2U8RXhlY3V0aW9uUmVzdWx0PiB7XG4gIGNvbnN0IHN0YXJ0VGltZSA9IHByb2Nlc3MuaHJ0aW1lLmJpZ2ludCgpO1xuXG4gIGNvbnN0IHtcbiAgICBwcm9qZWN0Um9vdCxcbiAgICB3b3Jrc3BhY2VSb290LFxuICAgIHNlcnZpY2VXb3JrZXIsXG4gICAgb3B0aW1pemF0aW9uT3B0aW9ucyxcbiAgICBzZXJ2ZXJFbnRyeVBvaW50LFxuICAgIGFzc2V0cyxcbiAgICBpbmRleEh0bWxPcHRpb25zLFxuICAgIGNhY2hlT3B0aW9ucyxcbiAgICBwcmVyZW5kZXJPcHRpb25zLFxuICAgIGFwcFNoZWxsT3B0aW9ucyxcbiAgICBzc3JPcHRpb25zLFxuICAgIHZlcmJvc2UsXG4gIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IGJyb3dzZXJzID0gZ2V0U3VwcG9ydGVkQnJvd3NlcnMocHJvamVjdFJvb3QsIGNvbnRleHQubG9nZ2VyKTtcbiAgY29uc3QgdGFyZ2V0ID0gdHJhbnNmb3JtU3VwcG9ydGVkQnJvd3NlcnNUb1RhcmdldHMoYnJvd3NlcnMpO1xuXG4gIC8vIExvYWQgYWN0aXZlIHRyYW5zbGF0aW9ucyBpZiBpbmxpbmluZ1xuICAvLyBUT0RPOiBJbnRlZ3JhdGUgaW50byB3YXRjaCBtb2RlIGFuZCBvbmx5IGxvYWQgY2hhbmdlZCB0cmFuc2xhdGlvbnNcbiAgaWYgKG9wdGlvbnMuaTE4bk9wdGlvbnMuc2hvdWxkSW5saW5lKSB7XG4gICAgYXdhaXQgbG9hZEFjdGl2ZVRyYW5zbGF0aW9ucyhjb250ZXh0LCBvcHRpb25zLmkxOG5PcHRpb25zKTtcbiAgfVxuXG4gIC8vIFJldXNlIHJlYnVpbGQgc3RhdGUgb3IgY3JlYXRlIG5ldyBidW5kbGUgY29udGV4dHMgZm9yIGNvZGUgYW5kIGdsb2JhbCBzdHlsZXNoZWV0c1xuICBsZXQgYnVuZGxlckNvbnRleHRzID0gcmVidWlsZFN0YXRlPy5yZWJ1aWxkQ29udGV4dHM7XG4gIGNvbnN0IGNvZGVCdW5kbGVDYWNoZSA9XG4gICAgcmVidWlsZFN0YXRlPy5jb2RlQnVuZGxlQ2FjaGUgPz9cbiAgICBuZXcgU291cmNlRmlsZUNhY2hlKGNhY2hlT3B0aW9ucy5lbmFibGVkID8gY2FjaGVPcHRpb25zLnBhdGggOiB1bmRlZmluZWQpO1xuICBpZiAoYnVuZGxlckNvbnRleHRzID09PSB1bmRlZmluZWQpIHtcbiAgICBidW5kbGVyQ29udGV4dHMgPSBbXTtcblxuICAgIC8vIEJyb3dzZXIgYXBwbGljYXRpb24gY29kZVxuICAgIGJ1bmRsZXJDb250ZXh0cy5wdXNoKFxuICAgICAgbmV3IEJ1bmRsZXJDb250ZXh0KFxuICAgICAgICB3b3Jrc3BhY2VSb290LFxuICAgICAgICAhIW9wdGlvbnMud2F0Y2gsXG4gICAgICAgIGNyZWF0ZUJyb3dzZXJDb2RlQnVuZGxlT3B0aW9ucyhvcHRpb25zLCB0YXJnZXQsIGNvZGVCdW5kbGVDYWNoZSksXG4gICAgICApLFxuICAgICk7XG5cbiAgICAvLyBHbG9iYWwgU3R5bGVzaGVldHNcbiAgICBpZiAob3B0aW9ucy5nbG9iYWxTdHlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBpbml0aWFsIG9mIFt0cnVlLCBmYWxzZV0pIHtcbiAgICAgICAgY29uc3QgYnVuZGxlT3B0aW9ucyA9IGNyZWF0ZUdsb2JhbFN0eWxlc0J1bmRsZU9wdGlvbnMoXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgaW5pdGlhbCxcbiAgICAgICAgICBjb2RlQnVuZGxlQ2FjaGU/LmxvYWRSZXN1bHRDYWNoZSxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGJ1bmRsZU9wdGlvbnMpIHtcbiAgICAgICAgICBidW5kbGVyQ29udGV4dHMucHVzaChcbiAgICAgICAgICAgIG5ldyBCdW5kbGVyQ29udGV4dCh3b3Jrc3BhY2VSb290LCAhIW9wdGlvbnMud2F0Y2gsIGJ1bmRsZU9wdGlvbnMsICgpID0+IGluaXRpYWwpLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHbG9iYWwgU2NyaXB0c1xuICAgIGlmIChvcHRpb25zLmdsb2JhbFNjcmlwdHMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBpbml0aWFsIG9mIFt0cnVlLCBmYWxzZV0pIHtcbiAgICAgICAgY29uc3QgYnVuZGxlT3B0aW9ucyA9IGNyZWF0ZUdsb2JhbFNjcmlwdHNCdW5kbGVPcHRpb25zKG9wdGlvbnMsIGluaXRpYWwpO1xuICAgICAgICBpZiAoYnVuZGxlT3B0aW9ucykge1xuICAgICAgICAgIGJ1bmRsZXJDb250ZXh0cy5wdXNoKFxuICAgICAgICAgICAgbmV3IEJ1bmRsZXJDb250ZXh0KHdvcmtzcGFjZVJvb3QsICEhb3B0aW9ucy53YXRjaCwgYnVuZGxlT3B0aW9ucywgKCkgPT4gaW5pdGlhbCksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNlcnZlciBhcHBsaWNhdGlvbiBjb2RlXG4gICAgaWYgKHNlcnZlckVudHJ5UG9pbnQpIHtcbiAgICAgIGJ1bmRsZXJDb250ZXh0cy5wdXNoKFxuICAgICAgICBuZXcgQnVuZGxlckNvbnRleHQoXG4gICAgICAgICAgd29ya3NwYWNlUm9vdCxcbiAgICAgICAgICAhIW9wdGlvbnMud2F0Y2gsXG4gICAgICAgICAgY3JlYXRlU2VydmVyQ29kZUJ1bmRsZU9wdGlvbnMoXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgLy8gTk9URTogZWFybGllciB2ZXJzaW9ucyBvZiBOb2RlLmpzIGFyZSBub3Qgc3VwcG9ydGVkIGR1ZSB0byB1bnNhZmUgcHJvbWlzZSBwYXRjaGluZy5cbiAgICAgICAgICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9wdWxsLzUwNTUyI2lzc3VlLTE3Mzc5Njc1OTJcbiAgICAgICAgICAgIFsuLi50YXJnZXQsICdub2RlMTguMTMnXSxcbiAgICAgICAgICAgIGNvZGVCdW5kbGVDYWNoZSxcbiAgICAgICAgICApLFxuICAgICAgICAgICgpID0+IGZhbHNlLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBidW5kbGluZ1Jlc3VsdCA9IGF3YWl0IEJ1bmRsZXJDb250ZXh0LmJ1bmRsZUFsbChidW5kbGVyQ29udGV4dHMpO1xuXG4gIC8vIExvZyBhbGwgd2FybmluZ3MgYW5kIGVycm9ycyBnZW5lcmF0ZWQgZHVyaW5nIGJ1bmRsaW5nXG4gIGF3YWl0IGxvZ01lc3NhZ2VzKGNvbnRleHQsIGJ1bmRsaW5nUmVzdWx0KTtcblxuICBjb25zdCBleGVjdXRpb25SZXN1bHQgPSBuZXcgRXhlY3V0aW9uUmVzdWx0KGJ1bmRsZXJDb250ZXh0cywgY29kZUJ1bmRsZUNhY2hlKTtcblxuICAvLyBSZXR1cm4gaWYgdGhlIGJ1bmRsaW5nIGhhcyBlcnJvcnNcbiAgaWYgKGJ1bmRsaW5nUmVzdWx0LmVycm9ycykge1xuICAgIHJldHVybiBleGVjdXRpb25SZXN1bHQ7XG4gIH1cblxuICBjb25zdCB7IG1ldGFmaWxlLCBpbml0aWFsRmlsZXMsIG91dHB1dEZpbGVzIH0gPSBidW5kbGluZ1Jlc3VsdDtcblxuICBleGVjdXRpb25SZXN1bHQub3V0cHV0RmlsZXMucHVzaCguLi5vdXRwdXRGaWxlcyk7XG5cbiAgLy8gQ2hlY2sgbWV0YWZpbGUgZm9yIENvbW1vbkpTIG1vZHVsZSB1c2FnZSBpZiBvcHRpbWl6aW5nIHNjcmlwdHNcbiAgaWYgKG9wdGltaXphdGlvbk9wdGlvbnMuc2NyaXB0cykge1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gY2hlY2tDb21tb25KU01vZHVsZXMobWV0YWZpbGUsIG9wdGlvbnMuYWxsb3dlZENvbW1vbkpzRGVwZW5kZW5jaWVzKTtcbiAgICBhd2FpdCBsb2dNZXNzYWdlcyhjb250ZXh0LCB7IHdhcm5pbmdzOiBtZXNzYWdlcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRleCBIVE1MIGNvbnRlbnQgd2l0aG91dCBDU1MgaW5saW5pbmcgdG8gYmUgdXNlZCBmb3Igc2VydmVyIHJlbmRlcmluZyAoQXBwU2hlbGwsIFNTRyBhbmQgU1NSKS5cbiAgICpcbiAgICogTk9URTogd2UgZG9uJ3QgcGVyZm9ybSBjcml0aWNhbCBDU1MgaW5saW5pbmcgYXMgdGhpcyB3aWxsIGJlIGRvbmUgZHVyaW5nIHNlcnZlciByZW5kZXJpbmcuXG4gICAqL1xuICBsZXQgaW5kZXhDb250ZW50T3V0cHV0Tm9Dc3NJbmxpbmluZzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8vIEdlbmVyYXRlIGluZGV4IEhUTUwgZmlsZVxuICAvLyBJZiBsb2NhbGl6YXRpb24gaXMgZW5hYmxlZCwgaW5kZXggZ2VuZXJhdGlvbiBpcyBoYW5kbGVkIGluIHRoZSBpbmxpbmluZyBwcm9jZXNzLlxuICAvLyBOT1RFOiBMb2NhbGl6YXRpb24gd2l0aCBTU1IgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuXG4gIGlmIChpbmRleEh0bWxPcHRpb25zICYmICFvcHRpb25zLmkxOG5PcHRpb25zLnNob3VsZElubGluZSkge1xuICAgIGNvbnN0IHsgY29udGVudCwgY29udGVudFdpdGhvdXRDcml0aWNhbENzc0lubGluZWQsIGVycm9ycywgd2FybmluZ3MgfSA9IGF3YWl0IGdlbmVyYXRlSW5kZXhIdG1sKFxuICAgICAgaW5pdGlhbEZpbGVzLFxuICAgICAgZXhlY3V0aW9uUmVzdWx0Lm91dHB1dEZpbGVzLFxuICAgICAge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBvcHRpbWl6YXRpb25PcHRpb25zLFxuICAgICAgfSxcbiAgICAgIC8vIFNldCBsYW5nIGF0dHJpYnV0ZSB0byB0aGUgZGVmaW5lZCBzb3VyY2UgbG9jYWxlIGlmIHByZXNlbnRcbiAgICAgIG9wdGlvbnMuaTE4bk9wdGlvbnMuaGFzRGVmaW5lZFNvdXJjZUxvY2FsZSA/IG9wdGlvbnMuaTE4bk9wdGlvbnMuc291cmNlTG9jYWxlIDogdW5kZWZpbmVkLFxuICAgICk7XG5cbiAgICBpbmRleENvbnRlbnRPdXRwdXROb0Nzc0lubGluaW5nID0gY29udGVudFdpdGhvdXRDcml0aWNhbENzc0lubGluZWQ7XG4gICAgcHJpbnRXYXJuaW5nc0FuZEVycm9yc1RvQ29uc29sZShjb250ZXh0LCB3YXJuaW5ncywgZXJyb3JzKTtcblxuICAgIGV4ZWN1dGlvblJlc3VsdC5hZGRPdXRwdXRGaWxlKGluZGV4SHRtbE9wdGlvbnMub3V0cHV0LCBjb250ZW50KTtcblxuICAgIGlmIChzc3JPcHRpb25zKSB7XG4gICAgICBleGVjdXRpb25SZXN1bHQuYWRkT3V0cHV0RmlsZSgnaW5kZXguc2VydmVyLmh0bWwnLCBjb250ZW50V2l0aG91dENyaXRpY2FsQ3NzSW5saW5lZCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUHJlLXJlbmRlciAoU1NHKSBhbmQgQXBwLXNoZWxsXG4gIGlmIChwcmVyZW5kZXJPcHRpb25zIHx8IGFwcFNoZWxsT3B0aW9ucykge1xuICAgIGFzc2VydChcbiAgICAgIGluZGV4Q29udGVudE91dHB1dE5vQ3NzSW5saW5pbmcsXG4gICAgICAnVGhlIFwiaW5kZXhcIiBvcHRpb24gaXMgcmVxdWlyZWQgd2hlbiB1c2luZyB0aGUgXCJzc2dcIiBvciBcImFwcFNoZWxsXCIgb3B0aW9ucy4nLFxuICAgICk7XG5cbiAgICBjb25zdCB7IG91dHB1dCwgd2FybmluZ3MsIGVycm9ycyB9ID0gYXdhaXQgcHJlcmVuZGVyUGFnZXMoXG4gICAgICB3b3Jrc3BhY2VSb290LFxuICAgICAgYXBwU2hlbGxPcHRpb25zLFxuICAgICAgcHJlcmVuZGVyT3B0aW9ucyxcbiAgICAgIGV4ZWN1dGlvblJlc3VsdC5vdXRwdXRGaWxlcyxcbiAgICAgIGluZGV4Q29udGVudE91dHB1dE5vQ3NzSW5saW5pbmcsXG4gICAgICBvcHRpbWl6YXRpb25PcHRpb25zLnN0eWxlcy5pbmxpbmVDcml0aWNhbCxcbiAgICAgIG1heFdvcmtlcnMsXG4gICAgICB2ZXJib3NlLFxuICAgICk7XG5cbiAgICBwcmludFdhcm5pbmdzQW5kRXJyb3JzVG9Db25zb2xlKGNvbnRleHQsIHdhcm5pbmdzLCBlcnJvcnMpO1xuXG4gICAgZm9yIChjb25zdCBbcGF0aCwgY29udGVudF0gb2YgT2JqZWN0LmVudHJpZXMob3V0cHV0KSkge1xuICAgICAgZXhlY3V0aW9uUmVzdWx0LmFkZE91dHB1dEZpbGUocGF0aCwgY29udGVudCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29weSBhc3NldHNcbiAgaWYgKGFzc2V0cykge1xuICAgIC8vIFRoZSB3ZWJwYWNrIGNvcHkgYXNzZXRzIGhlbHBlciBpcyB1c2VkIHdpdGggbm8gYmFzZSBwYXRocyBkZWZpbmVkLiBUaGlzIHByZXZlbnRzIHRoZSBoZWxwZXJcbiAgICAvLyBmcm9tIGRpcmVjdGx5IHdyaXRpbmcgdG8gZGlzay4gVGhpcyBzaG91bGQgZXZlbnR1YWxseSBiZSByZXBsYWNlZCB3aXRoIGEgbW9yZSBvcHRpbWl6ZWQgaGVscGVyLlxuICAgIGV4ZWN1dGlvblJlc3VsdC5hc3NldEZpbGVzLnB1c2goLi4uKGF3YWl0IGNvcHlBc3NldHMoYXNzZXRzLCBbXSwgd29ya3NwYWNlUm9vdCkpKTtcbiAgfVxuXG4gIC8vIFdyaXRlIG1ldGFmaWxlIGlmIHN0YXRzIG9wdGlvbiBpcyBlbmFibGVkXG4gIGlmIChvcHRpb25zLnN0YXRzKSB7XG4gICAgZXhlY3V0aW9uUmVzdWx0LmFkZE91dHB1dEZpbGUoJ3N0YXRzLmpzb24nLCBKU09OLnN0cmluZ2lmeShtZXRhZmlsZSwgbnVsbCwgMikpO1xuICB9XG5cbiAgLy8gRXh0cmFjdCBhbmQgd3JpdGUgbGljZW5zZXMgZm9yIHVzZWQgcGFja2FnZXNcbiAgaWYgKG9wdGlvbnMuZXh0cmFjdExpY2Vuc2VzKSB7XG4gICAgZXhlY3V0aW9uUmVzdWx0LmFkZE91dHB1dEZpbGUoXG4gICAgICAnM3JkcGFydHlsaWNlbnNlcy50eHQnLFxuICAgICAgYXdhaXQgZXh0cmFjdExpY2Vuc2VzKG1ldGFmaWxlLCB3b3Jrc3BhY2VSb290KSxcbiAgICApO1xuICB9XG5cbiAgLy8gQXVnbWVudCB0aGUgYXBwbGljYXRpb24gd2l0aCBzZXJ2aWNlIHdvcmtlciBzdXBwb3J0XG4gIGlmIChzZXJ2aWNlV29ya2VyKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNlcnZpY2VXb3JrZXJSZXN1bHQgPSBhd2FpdCBhdWdtZW50QXBwV2l0aFNlcnZpY2VXb3JrZXJFc2J1aWxkKFxuICAgICAgICB3b3Jrc3BhY2VSb290LFxuICAgICAgICBzZXJ2aWNlV29ya2VyLFxuICAgICAgICBvcHRpb25zLmJhc2VIcmVmIHx8ICcvJyxcbiAgICAgICAgZXhlY3V0aW9uUmVzdWx0Lm91dHB1dEZpbGVzLFxuICAgICAgICBleGVjdXRpb25SZXN1bHQuYXNzZXRGaWxlcyxcbiAgICAgICk7XG4gICAgICBleGVjdXRpb25SZXN1bHQuYWRkT3V0cHV0RmlsZSgnbmdzdy5qc29uJywgc2VydmljZVdvcmtlclJlc3VsdC5tYW5pZmVzdCk7XG4gICAgICBleGVjdXRpb25SZXN1bHQuYXNzZXRGaWxlcy5wdXNoKC4uLnNlcnZpY2VXb3JrZXJSZXN1bHQuYXNzZXRGaWxlcyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogYCR7ZXJyb3J9YCk7XG5cbiAgICAgIHJldHVybiBleGVjdXRpb25SZXN1bHQ7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIGVzdGltYXRlZCB0cmFuc2ZlciBzaXplIGlmIHNjcmlwdHMgYXJlIG9wdGltaXplZFxuICBsZXQgZXN0aW1hdGVkVHJhbnNmZXJTaXplcztcbiAgaWYgKG9wdGltaXphdGlvbk9wdGlvbnMuc2NyaXB0cyB8fCBvcHRpbWl6YXRpb25PcHRpb25zLnN0eWxlcy5taW5pZnkpIHtcbiAgICBlc3RpbWF0ZWRUcmFuc2ZlclNpemVzID0gYXdhaXQgY2FsY3VsYXRlRXN0aW1hdGVkVHJhbnNmZXJTaXplcyhleGVjdXRpb25SZXN1bHQub3V0cHV0RmlsZXMpO1xuICB9XG5cbiAgbG9nQnVpbGRTdGF0cyhjb250ZXh0LCBtZXRhZmlsZSwgaW5pdGlhbEZpbGVzLCBlc3RpbWF0ZWRUcmFuc2ZlclNpemVzKTtcblxuICBjb25zdCBidWlsZFRpbWUgPSBOdW1iZXIocHJvY2Vzcy5ocnRpbWUuYmlnaW50KCkgLSBzdGFydFRpbWUpIC8gMTAgKiogOTtcbiAgY29udGV4dC5sb2dnZXIuaW5mbyhgQXBwbGljYXRpb24gYnVuZGxlIGdlbmVyYXRpb24gY29tcGxldGUuIFske2J1aWxkVGltZS50b0ZpeGVkKDMpfSBzZWNvbmRzXWApO1xuXG4gIC8vIFBlcmZvcm0gaTE4biB0cmFuc2xhdGlvbiBpbmxpbmluZyBpZiBlbmFibGVkXG4gIGlmIChvcHRpb25zLmkxOG5PcHRpb25zLnNob3VsZElubGluZSkge1xuICAgIGF3YWl0IGlubGluZUkxOG4ob3B0aW9ucywgZXhlY3V0aW9uUmVzdWx0LCBpbml0aWFsRmlsZXMpO1xuICB9XG5cbiAgcmV0dXJuIGV4ZWN1dGlvblJlc3VsdDtcbn1cblxuZnVuY3Rpb24gcHJpbnRXYXJuaW5nc0FuZEVycm9yc1RvQ29uc29sZShcbiAgY29udGV4dDogQnVpbGRlckNvbnRleHQsXG4gIHdhcm5pbmdzOiBzdHJpbmdbXSxcbiAgZXJyb3JzOiBzdHJpbmdbXSxcbik6IHZvaWQge1xuICBmb3IgKGNvbnN0IGVycm9yIG9mIGVycm9ycykge1xuICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgfVxuICBmb3IgKGNvbnN0IHdhcm5pbmcgb2Ygd2FybmluZ3MpIHtcbiAgICBjb250ZXh0LmxvZ2dlci53YXJuKHdhcm5pbmcpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { BuilderContext } from '@angular-devkit/architect';
9
+ import { InitialFileRecord } from '../../tools/esbuild/bundler-context';
10
+ import { ExecutionResult } from '../../tools/esbuild/bundler-execution-result';
11
+ import { NormalizedApplicationBuildOptions } from './options';
12
+ /**
13
+ * Inlines all active locales as specified by the application build options into all
14
+ * application JavaScript files created during the build.
15
+ * @param options The normalized application builder options used to create the build.
16
+ * @param executionResult The result of an executed build.
17
+ * @param initialFiles A map containing initial file information for the executed build.
18
+ */
19
+ export declare function inlineI18n(options: NormalizedApplicationBuildOptions, executionResult: ExecutionResult, initialFiles: Map<string, InitialFileRecord>): Promise<void>;
20
+ /**
21
+ * Loads all active translations using the translation loaders from the `@angular/localize` package.
22
+ * @param context The architect builder context for the current build.
23
+ * @param i18n The normalized i18n options to use.
24
+ */
25
+ export declare function loadActiveTranslations(context: BuilderContext, i18n: NormalizedApplicationBuildOptions['i18nOptions']): Promise<void>;
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.loadActiveTranslations = exports.inlineI18n = void 0;
11
+ const node_path_1 = require("node:path");
12
+ const i18n_inliner_1 = require("../../tools/esbuild/i18n-inliner");
13
+ const index_html_generator_1 = require("../../tools/esbuild/index-html-generator");
14
+ const utils_1 = require("../../tools/esbuild/utils");
15
+ const environment_options_1 = require("../../utils/environment-options");
16
+ const i18n_options_1 = require("../../utils/i18n-options");
17
+ const load_translations_1 = require("../../utils/load-translations");
18
+ const url_1 = require("../../utils/url");
19
+ /**
20
+ * Inlines all active locales as specified by the application build options into all
21
+ * application JavaScript files created during the build.
22
+ * @param options The normalized application builder options used to create the build.
23
+ * @param executionResult The result of an executed build.
24
+ * @param initialFiles A map containing initial file information for the executed build.
25
+ */
26
+ async function inlineI18n(options, executionResult, initialFiles) {
27
+ // Create the multi-threaded inliner with common options and the files generated from the build.
28
+ const inliner = new i18n_inliner_1.I18nInliner({
29
+ missingTranslation: options.i18nOptions.missingTranslationBehavior ?? 'warning',
30
+ outputFiles: executionResult.outputFiles,
31
+ shouldOptimize: options.optimizationOptions.scripts,
32
+ }, environment_options_1.maxWorkers);
33
+ // For each active locale, use the inliner to process the output files of the build.
34
+ const updatedOutputFiles = [];
35
+ const updatedAssetFiles = [];
36
+ try {
37
+ for (const locale of options.i18nOptions.inlineLocales) {
38
+ // A locale specific set of files is returned from the inliner.
39
+ const localeOutputFiles = await inliner.inlineForLocale(locale, options.i18nOptions.locales[locale].translation);
40
+ // Generate locale specific index HTML files
41
+ if (options.indexHtmlOptions) {
42
+ const { content, errors, warnings } = await (0, index_html_generator_1.generateIndexHtml)(initialFiles, localeOutputFiles, {
43
+ ...options,
44
+ baseHref: getLocaleBaseHref(options.baseHref, options.i18nOptions, locale) ?? options.baseHref,
45
+ }, locale);
46
+ localeOutputFiles.push((0, utils_1.createOutputFileFromText)(options.indexHtmlOptions.output, content));
47
+ }
48
+ // Update directory with locale base
49
+ if (options.i18nOptions.flatOutput !== true) {
50
+ localeOutputFiles.forEach((file) => {
51
+ file.path = (0, node_path_1.join)(locale, file.path);
52
+ });
53
+ for (const assetFile of executionResult.assetFiles) {
54
+ updatedAssetFiles.push({
55
+ source: assetFile.source,
56
+ destination: (0, node_path_1.join)(locale, assetFile.destination),
57
+ });
58
+ }
59
+ }
60
+ updatedOutputFiles.push(...localeOutputFiles);
61
+ }
62
+ }
63
+ finally {
64
+ await inliner.close();
65
+ }
66
+ // Update the result with all localized files
67
+ executionResult.outputFiles = updatedOutputFiles;
68
+ // Assets are only changed if not using the flat output option
69
+ if (options.i18nOptions.flatOutput !== true) {
70
+ executionResult.assetFiles = updatedAssetFiles;
71
+ }
72
+ }
73
+ exports.inlineI18n = inlineI18n;
74
+ function getLocaleBaseHref(baseHref, i18n, locale) {
75
+ if (i18n.flatOutput) {
76
+ return undefined;
77
+ }
78
+ if (i18n.locales[locale] && i18n.locales[locale].baseHref !== '') {
79
+ return (0, url_1.urlJoin)(baseHref || '', i18n.locales[locale].baseHref ?? `/${locale}/`);
80
+ }
81
+ return undefined;
82
+ }
83
+ /**
84
+ * Loads all active translations using the translation loaders from the `@angular/localize` package.
85
+ * @param context The architect builder context for the current build.
86
+ * @param i18n The normalized i18n options to use.
87
+ */
88
+ async function loadActiveTranslations(context, i18n) {
89
+ // Load locale data and translations (if present)
90
+ let loader;
91
+ for (const [locale, desc] of Object.entries(i18n.locales)) {
92
+ if (!i18n.inlineLocales.has(locale) && locale !== i18n.sourceLocale) {
93
+ continue;
94
+ }
95
+ if (!desc.files.length) {
96
+ continue;
97
+ }
98
+ loader ??= await (0, load_translations_1.createTranslationLoader)();
99
+ (0, i18n_options_1.loadTranslations)(locale, desc, context.workspaceRoot, loader, {
100
+ warn(message) {
101
+ context.logger.warn(message);
102
+ },
103
+ error(message) {
104
+ throw new Error(message);
105
+ },
106
+ }, undefined, i18n.duplicateTranslationBehavior);
107
+ }
108
+ }
109
+ exports.loadActiveTranslations = loadActiveTranslations;
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL2J1aWxkZXJzL2FwcGxpY2F0aW9uL2kxOG4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBR0gseUNBQWlDO0FBR2pDLG1FQUErRDtBQUMvRCxtRkFBNkU7QUFDN0UscURBQXFFO0FBQ3JFLHlFQUE2RDtBQUM3RCwyREFBNEQ7QUFDNUQscUVBQXdFO0FBQ3hFLHlDQUEwQztBQUcxQzs7Ozs7O0dBTUc7QUFDSSxLQUFLLFVBQVUsVUFBVSxDQUM5QixPQUEwQyxFQUMxQyxlQUFnQyxFQUNoQyxZQUE0QztJQUU1QyxnR0FBZ0c7SUFDaEcsTUFBTSxPQUFPLEdBQUcsSUFBSSwwQkFBVyxDQUM3QjtRQUNFLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsMEJBQTBCLElBQUksU0FBUztRQUMvRSxXQUFXLEVBQUUsZUFBZSxDQUFDLFdBQVc7UUFDeEMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPO0tBQ3BELEVBQ0QsZ0NBQVUsQ0FDWCxDQUFDO0lBRUYsb0ZBQW9GO0lBQ3BGLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0lBQzlCLE1BQU0saUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQzdCLElBQUk7UUFDRixLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFO1lBQ3RELCtEQUErRDtZQUMvRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sT0FBTyxDQUFDLGVBQWUsQ0FDckQsTUFBTSxFQUNOLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FDaEQsQ0FBQztZQUVGLDRDQUE0QztZQUM1QyxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFB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QyxJQUFBLCtCQUFnQixFQUNkLE1BQU0sRUFDTixJQUFJLEVBQ0osT0FBTyxDQUFDLGFBQWEsRUFDckIsTUFBTSxFQUNOO1lBQ0UsSUFBSSxDQUFDLE9BQU87Z0JBQ1YsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0IsQ0FBQztZQUNELEtBQUssQ0FBQyxPQUFPO2dCQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDM0IsQ0FBQztTQUNGLEVBQ0QsU0FBUyxFQUNULElBQUksQ0FBQyw0QkFBNEIsQ0FDbEMsQ0FBQztLQUNIO0FBQ0gsQ0FBQztBQWxDRCx3REFrQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgQnVpbGRlckNvbnRleHQgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvYXJjaGl0ZWN0JztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgSW5pdGlhbEZpbGVSZWNvcmQgfSBmcm9tICcuLi8uLi90b29scy9lc2J1aWxkL2J1bmRsZXItY29udGV4dCc7XG5pbXBvcnQgeyBFeGVjdXRpb25SZXN1bHQgfSBmcm9tICcuLi8uLi90b29scy9lc2J1aWxkL2J1bmRsZXItZXhlY3V0aW9uLXJlc3VsdCc7XG5pbXBvcnQgeyBJMThuSW5saW5lciB9IGZyb20gJy4uLy4uL3Rvb2xzL2VzYnVpbGQvaTE4bi1pbmxpbmVyJztcbmltcG9ydCB7IGdlbmVyYXRlSW5kZXhIdG1sIH0gZnJvbSAnLi4vLi4vdG9vbHMvZXNidWlsZC9pbmRleC1odG1sLWdlbmVyYXRvcic7XG5pbXBvcnQgeyBjcmVhdGVPdXRwdXRGaWxlRnJvbVRleHQgfSBmcm9tICcuLi8uLi90b29scy9lc2J1aWxkL3V0aWxzJztcbmltcG9ydCB7IG1heFdvcmtlcnMgfSBmcm9tICcuLi8uLi91dGlscy9lbnZpcm9ubWVudC1vcHRpb25zJztcbmltcG9ydCB7IGxvYWRUcmFuc2xhdGlvbnMgfSBmcm9tICcuLi8uLi91dGlscy9pMThuLW9wdGlvbnMnO1xuaW1wb3J0IHsgY3JlYXRlVHJhbnNsYXRpb25Mb2FkZXIgfSBmcm9tICcuLi8uLi91dGlscy9sb2FkLXRyYW5zbGF0aW9ucyc7XG5pbXBvcnQgeyB1cmxKb2luIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXJsJztcbmltcG9ydCB7IE5vcm1hbGl6ZWRBcHBsaWNhdGlvbkJ1aWxkT3B0aW9ucyB9IGZyb20gJy4vb3B0aW9ucyc7XG5cbi8qKlxuICogSW5saW5lcyBhbGwgYWN0aXZlIGxvY2FsZXMgYXMgc3BlY2lmaWVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBidWlsZCBvcHRpb25zIGludG8gYWxsXG4gKiBhcHBsaWNhdGlvbiBKYXZhU2NyaXB0IGZpbGVzIGNyZWF0ZWQgZHVyaW5nIHRoZSBidWlsZC5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBub3JtYWxpemVkIGFwcGxpY2F0aW9uIGJ1aWxkZXIgb3B0aW9ucyB1c2VkIHRvIGNyZWF0ZSB0aGUgYnVpbGQuXG4gKiBAcGFyYW0gZXhlY3V0aW9uUmVzdWx0IFRoZSByZXN1bHQgb2YgYW4gZXhlY3V0ZWQgYnVpbGQuXG4gKiBAcGFyYW0gaW5pdGlhbEZpbGVzIEEgbWFwIGNvbnRhaW5pbmcgaW5pdGlhbCBmaWxlIGluZm9ybWF0aW9uIGZvciB0aGUgZXhlY3V0ZWQgYnVpbGQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbmxpbmVJMThuKFxuICBvcHRpb25zOiBOb3JtYWxpemVkQXBwbGljYXRpb25CdWlsZE9wdGlvbnMsXG4gIGV4ZWN1dGlvblJlc3VsdDogRXhlY3V0aW9uUmVzdWx0LFxuICBpbml0aWFsRmlsZXM6IE1hcDxzdHJpbmcsIEluaXRpYWxGaWxlUmVjb3JkPixcbik6IFByb21pc2U8dm9pZD4ge1xuICAvLyBDcmVhdGUgdGhlIG11bHRpLXRocmVhZGVkIGlubGluZXIgd2l0aCBjb21tb24gb3B0aW9ucyBhbmQgdGhlIGZpbGVzIGdlbmVyYXRlZCBmcm9tIHRoZSBidWlsZC5cbiAgY29uc3QgaW5saW5lciA9IG5ldyBJMThuSW5saW5lcihcbiAgICB7XG4gICAgICBtaXNzaW5nVHJhbnNsYXRpb246IG9wdGlvbnMuaTE4bk9wdGlvbnMubWlzc2luZ1RyYW5zbGF0aW9uQmVoYXZpb3IgPz8gJ3dhcm5pbmcnLFxuICAgICAgb3V0cHV0RmlsZXM6IGV4ZWN1dGlvblJlc3VsdC5vdXRwdXRGaWxlcyxcbiAgICAgIHNob3VsZE9wdGltaXplOiBvcHRpb25zLm9wdGltaXphdGlvbk9wdGlvbnMuc2NyaXB0cyxcbiAgICB9LFxuICAgIG1heFdvcmtlcnMsXG4gICk7XG5cbiAgLy8gRm9yIGVhY2ggYWN0aXZlIGxvY2FsZSwgdXNlIHRoZSBpbmxpbmVyIHRvIHByb2Nlc3MgdGhlIG91dHB1dCBmaWxlcyBvZiB0aGUgYnVpbGQuXG4gIGNvbnN0IHVwZGF0ZWRPdXRwdXRGaWxlcyA9IFtdO1xuICBjb25zdCB1cGRhdGVkQXNzZXRGaWxlcyA9IFtdO1xuICB0cnkge1xuICAgIGZvciAoY29uc3QgbG9jYWxlIG9mIG9wdGlvbnMuaTE4bk9wdGlvbnMuaW5saW5lTG9jYWxlcykge1xuICAgICAgLy8gQSBsb2NhbGUgc3BlY2lmaWMgc2V0IG9mIGZpbGVzIGlzIHJldHVybmVkIGZyb20gdGhlIGlubGluZXIuXG4gICAgICBjb25zdCBsb2NhbGVPdXRwdXRGaWxlcyA9IGF3YWl0IGlubGluZXIuaW5saW5lRm9yTG9jYWxlKFxuICAgICAgICBsb2NhbGUsXG4gICAgICAgIG9wdGlvbnMuaTE4bk9wdGlvbnMubG9jYWxlc1tsb2NhbGVdLnRyYW5zbGF0aW9uLFxuICAgICAgKTtcblxuICAgICAgLy8gR2VuZXJhdGUgbG9jYWxlIHNwZWNpZmljIGluZGV4IEhUTUwgZmlsZXNcbiAgICAgIGlmIChvcHRpb25zLmluZGV4SHRtbE9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgeyBjb250ZW50LCBlcnJvcnMsIHdhcm5pbmdzIH0gPSBhd2FpdCBnZW5lcmF0ZUluZGV4SHRtbChcbiAgICAgICAgICBpbml0aWFsRmlsZXMsXG4gICAgICAgICAgbG9jYWxlT3V0cHV0RmlsZXMsXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIGJhc2VIcmVmOlxuICAgICAgICAgICAgICBnZXRMb2NhbGVCYXNlSHJlZihvcHRpb25zLmJhc2VIcmVmLCBvcHRpb25zLmkxOG5PcHRpb25zLCBsb2NhbGUpID8/IG9wdGlvbnMuYmFzZUhyZWYsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICk7XG5cbiAgICAgICAgbG9jYWxlT3V0cHV0RmlsZXMucHVzaChjcmVhdGVPdXRwdXRGaWxlRnJvbVRleHQob3B0aW9ucy5pbmRleEh0bWxPcHRpb25zLm91dHB1dCwgY29udGVudCkpO1xuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgZGlyZWN0b3J5IHdpdGggbG9jYWxlIGJhc2VcbiAgICAgIGlmIChvcHRpb25zLmkxOG5PcHRpb25zLmZsYXRPdXRwdXQgIT09IHRydWUpIHtcbiAgICAgICAgbG9jYWxlT3V0cHV0RmlsZXMuZm9yRWFjaCgoZmlsZSkgPT4ge1xuICAgICAgICAgIGZpbGUucGF0aCA9IGpvaW4obG9jYWxlLCBmaWxlLnBhdGgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBmb3IgKGNvbnN0IGFzc2V0RmlsZSBvZiBleGVjdXRpb25SZXN1bHQuYXNzZXRGaWxlcykge1xuICAgICAgICAgIHVwZGF0ZWRBc3NldEZpbGVzLnB1c2goe1xuICAgICAgICAgICAgc291cmNlOiBhc3NldEZpbGUuc291cmNlLFxuICAgICAgICAgICAgZGVzdGluYXRpb246IGpvaW4obG9jYWxlLCBhc3NldEZpbGUuZGVzdGluYXRpb24pLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZWRPdXRwdXRGaWxlcy5wdXNoKC4uLmxvY2FsZU91dHB1dEZpbGVzKTtcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgaW5saW5lci5jbG9zZSgpO1xuICB9XG5cbiAgLy8gVXBkYXRlIHRoZSByZXN1bHQgd2l0aCBhbGwgbG9jYWxpemVkIGZpbGVzXG4gIGV4ZWN1dGlvblJlc3VsdC5vdXRwdXRGaWxlcyA9IHVwZGF0ZWRPdXRwdXRGaWxlcztcblxuICAvLyBBc3NldHMgYXJlIG9ubHkgY2hhbmdlZCBpZiBub3QgdXNpbmcgdGhlIGZsYXQgb3V0cHV0IG9wdGlvblxuICBpZiAob3B0aW9ucy5pMThuT3B0aW9ucy5mbGF0T3V0cHV0ICE9PSB0cnVlKSB7XG4gICAgZXhlY3V0aW9uUmVzdWx0LmFzc2V0RmlsZXMgPSB1cGRhdGVkQXNzZXRGaWxlcztcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRMb2NhbGVCYXNlSHJlZihcbiAgYmFzZUhyZWY6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgaTE4bjogTm9ybWFsaXplZEFwcGxpY2F0aW9uQnVpbGRPcHRpb25zWydpMThuT3B0aW9ucyddLFxuICBsb2NhbGU6IHN0cmluZyxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChpMThuLmZsYXRPdXRwdXQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKGkxOG4ubG9jYWxlc1tsb2NhbGVdICYmIGkxOG4ubG9jYWxlc1tsb2NhbGVdLmJhc2VIcmVmICE9PSAnJykge1xuICAgIHJldHVybiB1cmxKb2luKGJhc2VIcmVmIHx8ICcnLCBpMThuLmxvY2FsZXNbbG9jYWxlXS5iYXNlSHJlZiA/PyBgLyR7bG9jYWxlfS9gKTtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogTG9hZHMgYWxsIGFjdGl2ZSB0cmFuc2xhdGlvbnMgdXNpbmcgdGhlIHRyYW5zbGF0aW9uIGxvYWRlcnMgZnJvbSB0aGUgYEBhbmd1bGFyL2xvY2FsaXplYCBwYWNrYWdlLlxuICogQHBhcmFtIGNvbnRleHQgVGhlIGFyY2hpdGVjdCBidWlsZGVyIGNvbnRleHQgZm9yIHRoZSBjdXJyZW50IGJ1aWxkLlxuICogQHBhcmFtIGkxOG4gVGhlIG5vcm1hbGl6ZWQgaTE4biBvcHRpb25zIHRvIHVzZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRBY3RpdmVUcmFuc2xhdGlvbnMoXG4gIGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0LFxuICBpMThuOiBOb3JtYWxpemVkQXBwbGljYXRpb25CdWlsZE9wdGlvbnNbJ2kxOG5PcHRpb25zJ10sXG4pIHtcbiAgLy8gTG9hZCBsb2NhbGUgZGF0YSBhbmQgdHJhbnNsYXRpb25zIChpZiBwcmVzZW50KVxuICBsZXQgbG9hZGVyO1xuICBmb3IgKGNvbnN0IFtsb2NhbGUsIGRlc2NdIG9mIE9iamVjdC5lbnRyaWVzKGkxOG4ubG9jYWxlcykpIHtcbiAgICBpZiAoIWkxOG4uaW5saW5lTG9jYWxlcy5oYXMobG9jYWxlKSAmJiBsb2NhbGUgIT09IGkxOG4uc291cmNlTG9jYWxlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoIWRlc2MuZmlsZXMubGVuZ3RoKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBsb2FkZXIgPz89IGF3YWl0IGNyZWF0ZVRyYW5zbGF0aW9uTG9hZGVyKCk7XG5cbiAgICBsb2FkVHJhbnNsYXRpb25zKFxuICAgICAgbG9jYWxlLFxuICAgICAgZGVzYyxcbiAgICAgIGNvbnRleHQud29ya3NwYWNlUm9vdCxcbiAgICAgIGxvYWRlcixcbiAgICAgIHtcbiAgICAgICAgd2FybihtZXNzYWdlKSB7XG4gICAgICAgICAgY29udGV4dC5sb2dnZXIud2FybihtZXNzYWdlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3IobWVzc2FnZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBpMThuLmR1cGxpY2F0ZVRyYW5zbGF0aW9uQmVoYXZpb3IsXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -26,6 +26,17 @@ async function* buildApplicationInternal(options, context, infrastructureSetting
26
26
  return;
27
27
  }
28
28
  const normalizedOptions = await (0, options_1.normalizeOptions)(context, projectName, options);
29
+ // Warn about prerender/ssr not yet supporting localize
30
+ if (normalizedOptions.i18nOptions.shouldInline &&
31
+ (normalizedOptions.prerenderOptions ||
32
+ normalizedOptions.ssrOptions ||
33
+ normalizedOptions.appShellOptions)) {
34
+ context.logger.warn(`Prerendering, App Shell, and SSR are not yet supported with the 'localize' option and will be disabled for this build.`);
35
+ normalizedOptions.prerenderOptions =
36
+ normalizedOptions.ssrOptions =
37
+ normalizedOptions.appShellOptions =
38
+ undefined;
39
+ }
29
40
  yield* (0, build_action_1.runEsBuildBuildAction)((rebuildState) => (0, execute_build_1.executeBuild)(normalizedOptions, context, rebuildState), {
30
41
  watch: normalizedOptions.watch,
31
42
  poll: normalizedOptions.poll,
@@ -46,4 +57,4 @@ function buildApplication(options, context) {
46
57
  }
47
58
  exports.buildApplication = buildApplication;
48
59
  exports.default = (0, architect_1.createBuilder)(buildApplication);
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy9idWlsZGVycy9hcHBsaWNhdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCx5REFBeUY7QUFFekYseURBQStEO0FBQy9ELGlEQUFxRTtBQUNyRSxpREFBdUQ7QUFDdkQsbURBQStDO0FBQy9DLHVDQUFnRjtBQUd6RSxLQUFLLFNBQVMsQ0FBQyxDQUFDLHdCQUF3QixDQUM3QyxPQUEwQyxFQUMxQyxPQUF1QixFQUN2QixzQkFFQztJQU9ELHlCQUF5QjtJQUN6QixJQUFBLHdDQUE4QixFQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUV0RCw4QkFBOEI7SUFDOUIsTUFBTSxJQUFBLGtDQUFvQixFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXBDLHFEQUFxRDtJQUNyRCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQztJQUM1QyxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ2hCLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7UUFFckYsT0FBTztLQUNSO0lBRUQsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUEsMEJBQWdCLEVBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoRixLQUFLLENBQUMsQ0FBQyxJQUFBLG9DQUFxQixFQUMxQixDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsSUFBQSw0QkFBWSxFQUFDLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMsRUFDeEU7UUFDRSxLQUFLLEVBQUUsaUJBQWlCLENBQUMsS0FBSztRQUM5QixJQUFJLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtRQUM1QixnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxnQkFBZ0I7UUFDcEQsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQVk7UUFDNUMsVUFBVSxFQUFFLGlCQUFpQixDQUFDLFVBQVU7UUFDeEMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLE9BQU87UUFDbEMsV0FBVyxFQUFFLGlCQUFpQixDQUFDLFdBQVc7UUFDMUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLGFBQWE7UUFDOUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLFFBQVE7UUFDcEMsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsS0FBSztRQUNoRCxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07S0FDdkIsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQTNDRCw0REEyQ0M7QUFFRCxTQUFnQixnQkFBZ0IsQ0FDOUIsT0FBa0MsRUFDbEMsT0FBdUI7SUFPdkIsT0FBTyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQVZELDRDQVVDO0FBRUQsa0JBQWUsSUFBQSx5QkFBYSxFQUFDLGdCQUFnQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgQnVpbGRlckNvbnRleHQsIEJ1aWxkZXJPdXRwdXQsIGNyZWF0ZUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvYXJjaGl0ZWN0JztcbmltcG9ydCB0eXBlIHsgT3V0cHV0RmlsZSB9IGZyb20gJ2VzYnVpbGQnO1xuaW1wb3J0IHsgcHVyZ2VTdGFsZUJ1aWxkQ2FjaGUgfSBmcm9tICcuLi8uLi91dGlscy9wdXJnZS1jYWNoZSc7XG5pbXBvcnQgeyBhc3NlcnRDb21wYXRpYmxlQW5ndWxhclZlcnNpb24gfSBmcm9tICcuLi8uLi91dGlscy92ZXJzaW9uJztcbmltcG9ydCB7IHJ1bkVzQnVpbGRCdWlsZEFjdGlvbiB9IGZyb20gJy4vYnVpbGQtYWN0aW9uJztcbmltcG9ydCB7IGV4ZWN1dGVCdWlsZCB9IGZyb20gJy4vZXhlY3V0ZS1idWlsZCc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkJ1aWxkZXJJbnRlcm5hbE9wdGlvbnMsIG5vcm1hbGl6ZU9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMnO1xuaW1wb3J0IHsgU2NoZW1hIGFzIEFwcGxpY2F0aW9uQnVpbGRlck9wdGlvbnMgfSBmcm9tICcuL3NjaGVtYSc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogYnVpbGRBcHBsaWNhdGlvbkludGVybmFsKFxuICBvcHRpb25zOiBBcHBsaWNhdGlvbkJ1aWxkZXJJbnRlcm5hbE9wdGlvbnMsXG4gIGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0LFxuICBpbmZyYXN0cnVjdHVyZVNldHRpbmdzPzoge1xuICAgIHdyaXRlPzogYm9vbGVhbjtcbiAgfSxcbik6IEFzeW5jSXRlcmFibGU8XG4gIEJ1aWxkZXJPdXRwdXQgJiB7XG4gICAgb3V0cHV0RmlsZXM/OiBPdXRwdXRGaWxlW107XG4gICAgYXNzZXRGaWxlcz86IHsgc291cmNlOiBzdHJpbmc7IGRlc3RpbmF0aW9uOiBzdHJpbmcgfVtdO1xuICB9XG4+IHtcbiAgLy8gQ2hlY2sgQW5ndWxhciB2ZXJzaW9uLlxuICBhc3NlcnRDb21wYXRpYmxlQW5ndWxhclZlcnNpb24oY29udGV4dC53b3Jrc3BhY2VSb290KTtcblxuICAvLyBQdXJnZSBvbGQgYnVpbGQgZGlzayBjYWNoZS5cbiAgYXdhaXQgcHVyZ2VTdGFsZUJ1aWxkQ2FjaGUoY29udGV4dCk7XG5cbiAgLy8gRGV0ZXJtaW5lIHByb2plY3QgbmFtZSBmcm9tIGJ1aWxkZXIgY29udGV4dCB0YXJnZXRcbiAgY29uc3QgcHJvamVjdE5hbWUgPSBjb250ZXh0LnRhcmdldD8ucHJvamVjdDtcbiAgaWYgKCFwcm9qZWN0TmFtZSkge1xuICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKGBUaGUgJ2FwcGxpY2F0aW9uJyBidWlsZGVyIHJlcXVpcmVzIGEgdGFyZ2V0IHRvIGJlIHNwZWNpZmllZC5gKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG5vcm1hbGl6ZWRPcHRpb25zID0gYXdhaXQgbm9ybWFsaXplT3B0aW9ucyhjb250ZXh0LCBwcm9qZWN0TmFtZSwgb3B0aW9ucyk7XG4gIHlpZWxkKiBydW5Fc0J1aWxkQnVpbGRBY3Rpb24oXG4gICAgKHJlYnVpbGRTdGF0ZSkgPT4gZXhlY3V0ZUJ1aWxkKG5vcm1hbGl6ZWRPcHRpb25zLCBjb250ZXh0LCByZWJ1aWxkU3RhdGUpLFxuICAgIHtcbiAgICAgIHdhdGNoOiBub3JtYWxpemVkT3B0aW9ucy53YXRjaCxcbiAgICAgIHBvbGw6IG5vcm1hbGl6ZWRPcHRpb25zLnBvbGwsXG4gICAgICBkZWxldGVPdXRwdXRQYXRoOiBub3JtYWxpemVkT3B0aW9ucy5kZWxldGVPdXRwdXRQYXRoLFxuICAgICAgY2FjaGVPcHRpb25zOiBub3JtYWxpemVkT3B0aW9ucy5jYWNoZU9wdGlvbnMsXG4gICAgICBvdXRwdXRQYXRoOiBub3JtYWxpemVkT3B0aW9ucy5vdXRwdXRQYXRoLFxuICAgICAgdmVyYm9zZTogbm9ybWFsaXplZE9wdGlvbnMudmVyYm9zZSxcbiAgICAgIHByb2plY3RSb290OiBub3JtYWxpemVkT3B0aW9ucy5wcm9qZWN0Um9vdCxcbiAgICAgIHdvcmtzcGFjZVJvb3Q6IG5vcm1hbGl6ZWRPcHRpb25zLndvcmtzcGFjZVJvb3QsXG4gICAgICBwcm9ncmVzczogbm9ybWFsaXplZE9wdGlvbnMucHJvZ3Jlc3MsXG4gICAgICB3cml0ZVRvRmlsZVN5c3RlbTogaW5mcmFzdHJ1Y3R1cmVTZXR0aW5ncz8ud3JpdGUsXG4gICAgICBsb2dnZXI6IGNvbnRleHQubG9nZ2VyLFxuICAgIH0sXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEFwcGxpY2F0aW9uKFxuICBvcHRpb25zOiBBcHBsaWNhdGlvbkJ1aWxkZXJPcHRpb25zLFxuICBjb250ZXh0OiBCdWlsZGVyQ29udGV4dCxcbik6IEFzeW5jSXRlcmFibGU8XG4gIEJ1aWxkZXJPdXRwdXQgJiB7XG4gICAgb3V0cHV0RmlsZXM/OiBPdXRwdXRGaWxlW107XG4gICAgYXNzZXRGaWxlcz86IHsgc291cmNlOiBzdHJpbmc7IGRlc3RpbmF0aW9uOiBzdHJpbmcgfVtdO1xuICB9XG4+IHtcbiAgcmV0dXJuIGJ1aWxkQXBwbGljYXRpb25JbnRlcm5hbChvcHRpb25zLCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQnVpbGRlcihidWlsZEFwcGxpY2F0aW9uKTtcbiJdfQ==
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy9idWlsZGVycy9hcHBsaWNhdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCx5REFBeUY7QUFFekYseURBQStEO0FBQy9ELGlEQUFxRTtBQUNyRSxpREFBdUQ7QUFDdkQsbURBQStDO0FBQy9DLHVDQUFnRjtBQUd6RSxLQUFLLFNBQVMsQ0FBQyxDQUFDLHdCQUF3QixDQUM3QyxPQUEwQyxFQUMxQyxPQUF1QixFQUN2QixzQkFFQztJQU9ELHlCQUF5QjtJQUN6QixJQUFBLHdDQUE4QixFQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUV0RCw4QkFBOEI7SUFDOUIsTUFBTSxJQUFBLGtDQUFvQixFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXBDLHFEQUFxRDtJQUNyRCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQztJQUM1QyxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ2hCLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7UUFFckYsT0FBTztLQUNSO0lBRUQsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUEsMEJBQWdCLEVBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVoRix1REFBdUQ7SUFDdkQsSUFDRSxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsWUFBWTtRQUMxQyxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQjtZQUNqQyxpQkFBaUIsQ0FBQyxVQUFVO1lBQzVCLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxFQUNwQztRQUNBLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNqQix3SEFBd0gsQ0FDekgsQ0FBQztRQUNGLGlCQUFpQixDQUFDLGdCQUFnQjtZQUNoQyxpQkFBaUIsQ0FBQyxVQUFVO2dCQUM1QixpQkFBaUIsQ0FBQyxlQUFlO29CQUMvQixTQUFTLENBQUM7S0FDZjtJQUVELEtBQUssQ0FBQyxDQUFDLElBQUEsb0NBQXFCLEVBQzFCLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFBLDRCQUFZLEVBQUMsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxFQUN4RTtRQUNFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxLQUFLO1FBQzlCLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO1FBQzVCLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLGdCQUFnQjtRQUNwRCxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWTtRQUM1QyxVQUFVLEVBQUUsaUJBQWlCLENBQUMsVUFBVTtRQUN4QyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsT0FBTztRQUNsQyxXQUFXLEVBQUUsaUJBQWlCLENBQUMsV0FBVztRQUMxQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsYUFBYTtRQUM5QyxRQUFRLEVBQUUsaUJBQWlCLENBQUMsUUFBUTtRQUNwQyxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxLQUFLO1FBQ2hELE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN2QixDQUNGLENBQUM7QUFDSixDQUFDO0FBNURELDREQTREQztBQUVELFNBQWdCLGdCQUFnQixDQUM5QixPQUFrQyxFQUNsQyxPQUF1QjtJQU92QixPQUFPLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBVkQsNENBVUM7QUFFRCxrQkFBZSxJQUFBLHlCQUFhLEVBQUMsZ0JBQWdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBCdWlsZGVyQ29udGV4dCwgQnVpbGRlck91dHB1dCwgY3JlYXRlQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9hcmNoaXRlY3QnO1xuaW1wb3J0IHR5cGUgeyBPdXRwdXRGaWxlIH0gZnJvbSAnZXNidWlsZCc7XG5pbXBvcnQgeyBwdXJnZVN0YWxlQnVpbGRDYWNoZSB9IGZyb20gJy4uLy4uL3V0aWxzL3B1cmdlLWNhY2hlJztcbmltcG9ydCB7IGFzc2VydENvbXBhdGlibGVBbmd1bGFyVmVyc2lvbiB9IGZyb20gJy4uLy4uL3V0aWxzL3ZlcnNpb24nO1xuaW1wb3J0IHsgcnVuRXNCdWlsZEJ1aWxkQWN0aW9uIH0gZnJvbSAnLi9idWlsZC1hY3Rpb24nO1xuaW1wb3J0IHsgZXhlY3V0ZUJ1aWxkIH0gZnJvbSAnLi9leGVjdXRlLWJ1aWxkJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQnVpbGRlckludGVybmFsT3B0aW9ucywgbm9ybWFsaXplT3B0aW9ucyB9IGZyb20gJy4vb3B0aW9ucyc7XG5pbXBvcnQgeyBTY2hlbWEgYXMgQXBwbGljYXRpb25CdWlsZGVyT3B0aW9ucyB9IGZyb20gJy4vc2NoZW1hJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiBidWlsZEFwcGxpY2F0aW9uSW50ZXJuYWwoXG4gIG9wdGlvbnM6IEFwcGxpY2F0aW9uQnVpbGRlckludGVybmFsT3B0aW9ucyxcbiAgY29udGV4dDogQnVpbGRlckNvbnRleHQsXG4gIGluZnJhc3RydWN0dXJlU2V0dGluZ3M/OiB7XG4gICAgd3JpdGU/OiBib29sZWFuO1xuICB9LFxuKTogQXN5bmNJdGVyYWJsZTxcbiAgQnVpbGRlck91dHB1dCAmIHtcbiAgICBvdXRwdXRGaWxlcz86IE91dHB1dEZpbGVbXTtcbiAgICBhc3NldEZpbGVzPzogeyBzb3VyY2U6IHN0cmluZzsgZGVzdGluYXRpb246IHN0cmluZyB9W107XG4gIH1cbj4ge1xuICAvLyBDaGVjayBBbmd1bGFyIHZlcnNpb24uXG4gIGFzc2VydENvbXBhdGlibGVBbmd1bGFyVmVyc2lvbihjb250ZXh0LndvcmtzcGFjZVJvb3QpO1xuXG4gIC8vIFB1cmdlIG9sZCBidWlsZCBkaXNrIGNhY2hlLlxuICBhd2FpdCBwdXJnZVN0YWxlQnVpbGRDYWNoZShjb250ZXh0KTtcblxuICAvLyBEZXRlcm1pbmUgcHJvamVjdCBuYW1lIGZyb20gYnVpbGRlciBjb250ZXh0IHRhcmdldFxuICBjb25zdCBwcm9qZWN0TmFtZSA9IGNvbnRleHQudGFyZ2V0Py5wcm9qZWN0O1xuICBpZiAoIXByb2plY3ROYW1lKSB7XG4gICAgY29udGV4dC5sb2dnZXIuZXJyb3IoYFRoZSAnYXBwbGljYXRpb24nIGJ1aWxkZXIgcmVxdWlyZXMgYSB0YXJnZXQgdG8gYmUgc3BlY2lmaWVkLmApO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgbm9ybWFsaXplZE9wdGlvbnMgPSBhd2FpdCBub3JtYWxpemVPcHRpb25zKGNvbnRleHQsIHByb2plY3ROYW1lLCBvcHRpb25zKTtcblxuICAvLyBXYXJuIGFib3V0IHByZXJlbmRlci9zc3Igbm90IHlldCBzdXBwb3J0aW5nIGxvY2FsaXplXG4gIGlmIChcbiAgICBub3JtYWxpemVkT3B0aW9ucy5pMThuT3B0aW9ucy5zaG91bGRJbmxpbmUgJiZcbiAgICAobm9ybWFsaXplZE9wdGlvbnMucHJlcmVuZGVyT3B0aW9ucyB8fFxuICAgICAgbm9ybWFsaXplZE9wdGlvbnMuc3NyT3B0aW9ucyB8fFxuICAgICAgbm9ybWFsaXplZE9wdGlvbnMuYXBwU2hlbGxPcHRpb25zKVxuICApIHtcbiAgICBjb250ZXh0LmxvZ2dlci53YXJuKFxuICAgICAgYFByZXJlbmRlcmluZywgQXBwIFNoZWxsLCBhbmQgU1NSIGFyZSBub3QgeWV0IHN1cHBvcnRlZCB3aXRoIHRoZSAnbG9jYWxpemUnIG9wdGlvbiBhbmQgd2lsbCBiZSBkaXNhYmxlZCBmb3IgdGhpcyBidWlsZC5gLFxuICAgICk7XG4gICAgbm9ybWFsaXplZE9wdGlvbnMucHJlcmVuZGVyT3B0aW9ucyA9XG4gICAgICBub3JtYWxpemVkT3B0aW9ucy5zc3JPcHRpb25zID1cbiAgICAgIG5vcm1hbGl6ZWRPcHRpb25zLmFwcFNoZWxsT3B0aW9ucyA9XG4gICAgICAgIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHlpZWxkKiBydW5Fc0J1aWxkQnVpbGRBY3Rpb24oXG4gICAgKHJlYnVpbGRTdGF0ZSkgPT4gZXhlY3V0ZUJ1aWxkKG5vcm1hbGl6ZWRPcHRpb25zLCBjb250ZXh0LCByZWJ1aWxkU3RhdGUpLFxuICAgIHtcbiAgICAgIHdhdGNoOiBub3JtYWxpemVkT3B0aW9ucy53YXRjaCxcbiAgICAgIHBvbGw6IG5vcm1hbGl6ZWRPcHRpb25zLnBvbGwsXG4gICAgICBkZWxldGVPdXRwdXRQYXRoOiBub3JtYWxpemVkT3B0aW9ucy5kZWxldGVPdXRwdXRQYXRoLFxuICAgICAgY2FjaGVPcHRpb25zOiBub3JtYWxpemVkT3B0aW9ucy5jYWNoZU9wdGlvbnMsXG4gICAgICBvdXRwdXRQYXRoOiBub3JtYWxpemVkT3B0aW9ucy5vdXRwdXRQYXRoLFxuICAgICAgdmVyYm9zZTogbm9ybWFsaXplZE9wdGlvbnMudmVyYm9zZSxcbiAgICAgIHByb2plY3RSb290OiBub3JtYWxpemVkT3B0aW9ucy5wcm9qZWN0Um9vdCxcbiAgICAgIHdvcmtzcGFjZVJvb3Q6IG5vcm1hbGl6ZWRPcHRpb25zLndvcmtzcGFjZVJvb3QsXG4gICAgICBwcm9ncmVzczogbm9ybWFsaXplZE9wdGlvbnMucHJvZ3Jlc3MsXG4gICAgICB3cml0ZVRvRmlsZVN5c3RlbTogaW5mcmFzdHJ1Y3R1cmVTZXR0aW5ncz8ud3JpdGUsXG4gICAgICBsb2dnZXI6IGNvbnRleHQubG9nZ2VyLFxuICAgIH0sXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEFwcGxpY2F0aW9uKFxuICBvcHRpb25zOiBBcHBsaWNhdGlvbkJ1aWxkZXJPcHRpb25zLFxuICBjb250ZXh0OiBCdWlsZGVyQ29udGV4dCxcbik6IEFzeW5jSXRlcmFibGU8XG4gIEJ1aWxkZXJPdXRwdXQgJiB7XG4gICAgb3V0cHV0RmlsZXM/OiBPdXRwdXRGaWxlW107XG4gICAgYXNzZXRGaWxlcz86IHsgc291cmNlOiBzdHJpbmc7IGRlc3RpbmF0aW9uOiBzdHJpbmcgfVtdO1xuICB9XG4+IHtcbiAgcmV0dXJuIGJ1aWxkQXBwbGljYXRpb25JbnRlcm5hbChvcHRpb25zLCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQnVpbGRlcihidWlsZEFwcGxpY2F0aW9uKTtcbiJdfQ==
@@ -25,6 +25,11 @@ interface InternalOptions {
25
25
  * Currently used by the dev-server to support prebundling.
26
26
  */
27
27
  externalPackages?: boolean;
28
+ /**
29
+ * Forces the output from the localize post-processing to not create nested directories per locale output.
30
+ * This is only used by the development server which currently only supports a single locale per build.
31
+ */
32
+ forceI18nFlatOutput?: boolean;
28
33
  }
29
34
  /** Full set of options for `application` builder. */
30
35
  export type ApplicationBuilderInternalOptions = Omit<ApplicationBuilderOptions & InternalOptions, 'browser'> & {
@@ -62,7 +67,6 @@ export declare function normalizeOptions(context: BuilderContext, projectName: s
62
67
  serverEntryPoint: string | undefined;
63
68
  prerenderOptions: {
64
69
  discoverRoutes: boolean;
65
- routes: string[];
66
70
  routesFile: string | undefined;
67
71
  } | undefined;
68
72
  appShellOptions: {
@@ -71,7 +75,7 @@ export declare function normalizeOptions(context: BuilderContext, projectName: s
71
75
  ssrOptions: {
72
76
  entry?: undefined;
73
77
  } | {
74
- entry: string | undefined;
78
+ entry: string;
75
79
  } | undefined;
76
80
  verbose: boolean | undefined;
77
81
  watch: boolean | undefined;