@angular/platform-server 19.0.0-next.1 → 19.0.0-next.11

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 (40) hide show
  1. package/LICENSE +21 -0
  2. package/fesm2022/init.mjs +1 -1
  3. package/fesm2022/init.mjs.map +1 -1
  4. package/fesm2022/platform-server.mjs +117 -102
  5. package/fesm2022/platform-server.mjs.map +1 -1
  6. package/fesm2022/testing.mjs +5 -5
  7. package/fesm2022/testing.mjs.map +1 -1
  8. package/index.d.ts +5 -13
  9. package/init/index.d.ts +1 -1
  10. package/package.json +6 -13
  11. package/testing/index.d.ts +1 -1
  12. package/esm2022/index.mjs +0 -13
  13. package/esm2022/init/index.mjs +0 -13
  14. package/esm2022/init/init.mjs +0 -5
  15. package/esm2022/init/public_api.mjs +0 -14
  16. package/esm2022/init/src/bundled-domino.mjs +0 -16109
  17. package/esm2022/init/src/init.mjs +0 -15
  18. package/esm2022/init/src/shims.mjs +0 -19
  19. package/esm2022/platform-server.mjs +0 -5
  20. package/esm2022/public_api.mjs +0 -16
  21. package/esm2022/src/bundled-domino.mjs +0 -16109
  22. package/esm2022/src/domino_adapter.mjs +0 -91
  23. package/esm2022/src/http.mjs +0 -59
  24. package/esm2022/src/location.mjs +0 -118
  25. package/esm2022/src/platform-server.mjs +0 -15
  26. package/esm2022/src/platform_state.mjs +0 -42
  27. package/esm2022/src/private_export.mjs +0 -11
  28. package/esm2022/src/profiler.mjs +0 -55
  29. package/esm2022/src/provide_server.mjs +0 -29
  30. package/esm2022/src/server.mjs +0 -88
  31. package/esm2022/src/server_events.mjs +0 -33
  32. package/esm2022/src/tokens.mjs +0 -22
  33. package/esm2022/src/transfer_state.mjs +0 -52
  34. package/esm2022/src/utils.mjs +0 -223
  35. package/esm2022/src/version.mjs +0 -18
  36. package/esm2022/testing/index.mjs +0 -13
  37. package/esm2022/testing/public_api.mjs +0 -15
  38. package/esm2022/testing/src/server.mjs +0 -37
  39. package/esm2022/testing/src/testing.mjs +0 -14
  40. package/esm2022/testing/testing.mjs +0 -5
@@ -1,22 +0,0 @@
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 { InjectionToken } from '@angular/core';
9
- /**
10
- * The DI token for setting the initial config for the platform.
11
- *
12
- * @publicApi
13
- */
14
- export const INITIAL_CONFIG = new InjectionToken('Server.INITIAL_CONFIG');
15
- /**
16
- * A function that will be executed when calling `renderApplication` or
17
- * `renderModule` just before current platform state is rendered to string.
18
- *
19
- * @publicApi
20
- */
21
- export const BEFORE_APP_SERIALIZED = new InjectionToken('Server.RENDER_MODULE_HOOK');
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhdGZvcm0tc2VydmVyL3NyYy90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQXNCN0M7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBaUIsdUJBQXVCLENBQUMsQ0FBQztBQUUxRjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUNyRCwyQkFBMkIsQ0FDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0luamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBDb25maWcgb2JqZWN0IHBhc3NlZCB0byBpbml0aWFsaXplIHRoZSBwbGF0Zm9ybS5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxhdGZvcm1Db25maWcge1xuICAvKipcbiAgICogVGhlIGluaXRpYWwgRE9NIHRvIHVzZSB0byBib290c3RyYXAgdGhlIHNlcnZlciBhcHBsaWNhdGlvbi5cbiAgICogQGRlZmF1bHQgY3JlYXRlIGEgbmV3IERPTSB1c2luZyBEb21pbm9cbiAgICovXG4gIGRvY3VtZW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIFVSTCBmb3IgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24gc3RhdGUuIFRoaXMgaXMgdXNlZCBmb3IgaW5pdGlhbGl6aW5nXG4gICAqIHRoZSBwbGF0Zm9ybSdzIGxvY2F0aW9uLiBgcHJvdG9jb2xgLCBgaG9zdG5hbWVgLCBhbmQgYHBvcnRgIHdpbGwgYmVcbiAgICogb3ZlcnJpZGRlbiBpZiBgYmFzZVVybGAgaXMgc2V0LlxuICAgKiBAZGVmYXVsdCBub25lXG4gICAqL1xuICB1cmw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIERJIHRva2VuIGZvciBzZXR0aW5nIHRoZSBpbml0aWFsIGNvbmZpZyBmb3IgdGhlIHBsYXRmb3JtLlxuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGNvbnN0IElOSVRJQUxfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFBsYXRmb3JtQ29uZmlnPignU2VydmVyLklOSVRJQUxfQ09ORklHJyk7XG5cbi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiBjYWxsaW5nIGByZW5kZXJBcHBsaWNhdGlvbmAgb3JcbiAqIGByZW5kZXJNb2R1bGVgIGp1c3QgYmVmb3JlIGN1cnJlbnQgcGxhdGZvcm0gc3RhdGUgaXMgcmVuZGVyZWQgdG8gc3RyaW5nLlxuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGNvbnN0IEJFRk9SRV9BUFBfU0VSSUFMSVpFRCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZWFkb25seUFycmF5PCgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+Pj4oXG4gICdTZXJ2ZXIuUkVOREVSX01PRFVMRV9IT09LJyxcbik7XG4iXX0=
@@ -1,52 +0,0 @@
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 { DOCUMENT } from '@angular/common';
9
- import { APP_ID, TransferState } from '@angular/core';
10
- import { BEFORE_APP_SERIALIZED } from './tokens';
11
- export const TRANSFER_STATE_SERIALIZATION_PROVIDERS = [
12
- {
13
- provide: BEFORE_APP_SERIALIZED,
14
- useFactory: serializeTransferStateFactory,
15
- deps: [DOCUMENT, APP_ID, TransferState],
16
- multi: true,
17
- },
18
- ];
19
- /** TODO: Move this to a utils folder and convert to use SafeValues. */
20
- export function createScript(doc, textContent, nonce) {
21
- const script = doc.createElement('script');
22
- script.textContent = textContent;
23
- if (nonce) {
24
- script.setAttribute('nonce', nonce);
25
- }
26
- return script;
27
- }
28
- function serializeTransferStateFactory(doc, appId, transferStore) {
29
- return () => {
30
- // The `.toJSON` here causes the `onSerialize` callbacks to be called.
31
- // These callbacks can be used to provide the value for a given key.
32
- const content = transferStore.toJson();
33
- if (transferStore.isEmpty) {
34
- // The state is empty, nothing to transfer,
35
- // avoid creating an extra `<script>` tag in this case.
36
- return;
37
- }
38
- const script = createScript(doc, content,
39
- /**
40
- * `nonce` is not required for 'application/json'
41
- * See: https://html.spec.whatwg.org/multipage/scripting.html#attr-script-type
42
- */
43
- null);
44
- script.id = appId + '-state';
45
- script.setAttribute('type', 'application/json');
46
- // It is intentional that we add the script at the very bottom. Angular CLI script tags for
47
- // bundles are always `type="module"`. These are deferred by default and cause the transfer
48
- // transfer data to be queried only after the browser has finished parsing the DOM.
49
- doc.body.appendChild(script);
50
- };
51
- }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJfc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS1zZXJ2ZXIvc3JjL3RyYW5zZmVyX3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsTUFBTSxFQUFZLGFBQWEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQWU7SUFDaEU7UUFDRSxPQUFPLEVBQUUscUJBQXFCO1FBQzlCLFVBQVUsRUFBRSw2QkFBNkI7UUFDekMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUM7UUFDdkMsS0FBSyxFQUFFLElBQUk7S0FDWjtDQUNGLENBQUM7QUFFRix1RUFBdUU7QUFDdkUsTUFBTSxVQUFVLFlBQVksQ0FDMUIsR0FBYSxFQUNiLFdBQW1CLEVBQ25CLEtBQW9CO0lBRXBCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0MsTUFBTSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyw2QkFBNkIsQ0FBQyxHQUFhLEVBQUUsS0FBYSxFQUFFLGFBQTRCO0lBQy9GLE9BQU8sR0FBRyxFQUFFO1FBQ1Ysc0VBQXNFO1FBQ3RFLG9FQUFvRTtRQUNwRSxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFdkMsSUFBSSxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsMkNBQTJDO1lBQzNDLHVEQUF1RDtZQUN2RCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FDekIsR0FBRyxFQUNILE9BQU87UUFDUDs7O1dBR0c7UUFDSCxJQUFJLENBQ0wsQ0FBQztRQUNGLE1BQU0sQ0FBQyxFQUFFLEdBQUcsS0FBSyxHQUFHLFFBQVEsQ0FBQztRQUM3QixNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBRWhELDJGQUEyRjtRQUMzRiwyRkFBMkY7UUFDM0YsbUZBQW1GO1FBQ25GLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7QVBQX0lELCBQcm92aWRlciwgVHJhbnNmZXJTdGF0ZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7QkVGT1JFX0FQUF9TRVJJQUxJWkVEfSBmcm9tICcuL3Rva2Vucyc7XG5cbmV4cG9ydCBjb25zdCBUUkFOU0ZFUl9TVEFURV9TRVJJQUxJWkFUSU9OX1BST1ZJREVSUzogUHJvdmlkZXJbXSA9IFtcbiAge1xuICAgIHByb3ZpZGU6IEJFRk9SRV9BUFBfU0VSSUFMSVpFRCxcbiAgICB1c2VGYWN0b3J5OiBzZXJpYWxpemVUcmFuc2ZlclN0YXRlRmFjdG9yeSxcbiAgICBkZXBzOiBbRE9DVU1FTlQsIEFQUF9JRCwgVHJhbnNmZXJTdGF0ZV0sXG4gICAgbXVsdGk6IHRydWUsXG4gIH0sXG5dO1xuXG4vKiogVE9ETzogTW92ZSB0aGlzIHRvIGEgdXRpbHMgZm9sZGVyIGFuZCBjb252ZXJ0IHRvIHVzZSBTYWZlVmFsdWVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNjcmlwdChcbiAgZG9jOiBEb2N1bWVudCxcbiAgdGV4dENvbnRlbnQ6IHN0cmluZyxcbiAgbm9uY2U6IHN0cmluZyB8IG51bGwsXG4pOiBIVE1MU2NyaXB0RWxlbWVudCB7XG4gIGNvbnN0IHNjcmlwdCA9IGRvYy5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgc2NyaXB0LnRleHRDb250ZW50ID0gdGV4dENvbnRlbnQ7XG4gIGlmIChub25jZSkge1xuICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ25vbmNlJywgbm9uY2UpO1xuICB9XG5cbiAgcmV0dXJuIHNjcmlwdDtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplVHJhbnNmZXJTdGF0ZUZhY3RvcnkoZG9jOiBEb2N1bWVudCwgYXBwSWQ6IHN0cmluZywgdHJhbnNmZXJTdG9yZTogVHJhbnNmZXJTdGF0ZSkge1xuICByZXR1cm4gKCkgPT4ge1xuICAgIC8vIFRoZSBgLnRvSlNPTmAgaGVyZSBjYXVzZXMgdGhlIGBvblNlcmlhbGl6ZWAgY2FsbGJhY2tzIHRvIGJlIGNhbGxlZC5cbiAgICAvLyBUaGVzZSBjYWxsYmFja3MgY2FuIGJlIHVzZWQgdG8gcHJvdmlkZSB0aGUgdmFsdWUgZm9yIGEgZ2l2ZW4ga2V5LlxuICAgIGNvbnN0IGNvbnRlbnQgPSB0cmFuc2ZlclN0b3JlLnRvSnNvbigpO1xuXG4gICAgaWYgKHRyYW5zZmVyU3RvcmUuaXNFbXB0eSkge1xuICAgICAgLy8gVGhlIHN0YXRlIGlzIGVtcHR5LCBub3RoaW5nIHRvIHRyYW5zZmVyLFxuICAgICAgLy8gYXZvaWQgY3JlYXRpbmcgYW4gZXh0cmEgYDxzY3JpcHQ+YCB0YWcgaW4gdGhpcyBjYXNlLlxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNjcmlwdCA9IGNyZWF0ZVNjcmlwdChcbiAgICAgIGRvYyxcbiAgICAgIGNvbnRlbnQsXG4gICAgICAvKipcbiAgICAgICAqIGBub25jZWAgaXMgbm90IHJlcXVpcmVkIGZvciAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAqIFNlZTogaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2NyaXB0aW5nLmh0bWwjYXR0ci1zY3JpcHQtdHlwZVxuICAgICAgICovXG4gICAgICBudWxsLFxuICAgICk7XG4gICAgc2NyaXB0LmlkID0gYXBwSWQgKyAnLXN0YXRlJztcbiAgICBzY3JpcHQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcblxuICAgIC8vIEl0IGlzIGludGVudGlvbmFsIHRoYXQgd2UgYWRkIHRoZSBzY3JpcHQgYXQgdGhlIHZlcnkgYm90dG9tLiBBbmd1bGFyIENMSSBzY3JpcHQgdGFncyBmb3JcbiAgICAvLyBidW5kbGVzIGFyZSBhbHdheXMgYHR5cGU9XCJtb2R1bGVcImAuIFRoZXNlIGFyZSBkZWZlcnJlZCBieSBkZWZhdWx0IGFuZCBjYXVzZSB0aGUgdHJhbnNmZXJcbiAgICAvLyB0cmFuc2ZlciBkYXRhIHRvIGJlIHF1ZXJpZWQgb25seSBhZnRlciB0aGUgYnJvd3NlciBoYXMgZmluaXNoZWQgcGFyc2luZyB0aGUgRE9NLlxuICAgIGRvYy5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gIH07XG59XG4iXX0=
@@ -1,223 +0,0 @@
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 { APP_ID, ApplicationRef, CSP_NONCE, InjectionToken, Renderer2, ɵannotateForHydration as annotateForHydration, ɵIS_HYDRATION_DOM_REUSE_ENABLED as IS_HYDRATION_DOM_REUSE_ENABLED, ɵSSR_CONTENT_INTEGRITY_MARKER as SSR_CONTENT_INTEGRITY_MARKER, ɵwhenStable as whenStable, } from '@angular/core';
9
- import { PlatformState } from './platform_state';
10
- import { platformServer } from './server';
11
- import { BEFORE_APP_SERIALIZED, INITIAL_CONFIG } from './tokens';
12
- import { createScript } from './transfer_state';
13
- import { runAndMeasurePerf } from './profiler';
14
- /**
15
- * Event dispatch (JSAction) script is inlined into the HTML by the build
16
- * process to avoid extra blocking request on a page. The script looks like this:
17
- * ```
18
- * <script type="text/javascript" id="ng-event-dispatch-contract">...</script>
19
- * ```
20
- * This const represents the "id" attribute value.
21
- */
22
- export const EVENT_DISPATCH_SCRIPT_ID = 'ng-event-dispatch-contract';
23
- /**
24
- * Creates an instance of a server platform (with or without JIT compiler support
25
- * depending on the `ngJitMode` global const value), using provided options.
26
- */
27
- function createServerPlatform(options) {
28
- const extraProviders = options.platformProviders ?? [];
29
- return platformServer([
30
- { provide: INITIAL_CONFIG, useValue: { document: options.document, url: options.url } },
31
- extraProviders,
32
- ]);
33
- }
34
- /**
35
- * Finds and returns inlined event dispatch script if it exists.
36
- * See the `EVENT_DISPATCH_SCRIPT_ID` const docs for additional info.
37
- */
38
- function findEventDispatchScript(doc) {
39
- return doc.getElementById(EVENT_DISPATCH_SCRIPT_ID);
40
- }
41
- /**
42
- * Removes inlined event dispatch script if it exists.
43
- * See the `EVENT_DISPATCH_SCRIPT_ID` const docs for additional info.
44
- */
45
- function removeEventDispatchScript(doc) {
46
- findEventDispatchScript(doc)?.remove();
47
- }
48
- /**
49
- * Annotate nodes for hydration and remove event dispatch script when not needed.
50
- */
51
- function prepareForHydration(platformState, applicationRef) {
52
- const environmentInjector = applicationRef.injector;
53
- const doc = platformState.getDocument();
54
- if (!environmentInjector.get(IS_HYDRATION_DOM_REUSE_ENABLED, false)) {
55
- // Hydration is diabled, remove inlined event dispatch script.
56
- // (which was injected by the build process) from the HTML.
57
- removeEventDispatchScript(doc);
58
- return;
59
- }
60
- appendSsrContentIntegrityMarker(doc);
61
- const eventTypesToReplay = annotateForHydration(applicationRef, doc);
62
- if (eventTypesToReplay.regular.size || eventTypesToReplay.capture.size) {
63
- insertEventRecordScript(environmentInjector.get(APP_ID), doc, eventTypesToReplay, environmentInjector.get(CSP_NONCE, null));
64
- }
65
- else {
66
- // No events to replay, we should remove inlined event dispatch script
67
- // (which was injected by the build process) from the HTML.
68
- removeEventDispatchScript(doc);
69
- }
70
- }
71
- /**
72
- * Creates a marker comment node and append it into the `<body>`.
73
- * Some CDNs have mechanisms to remove all comment node from HTML.
74
- * This behaviour breaks hydration, so we'll detect on the client side if this
75
- * marker comment is still available or else throw an error
76
- */
77
- function appendSsrContentIntegrityMarker(doc) {
78
- // Adding a ng hydration marker comment
79
- const comment = doc.createComment(SSR_CONTENT_INTEGRITY_MARKER);
80
- doc.body.firstChild
81
- ? doc.body.insertBefore(comment, doc.body.firstChild)
82
- : doc.body.append(comment);
83
- }
84
- /**
85
- * Adds the `ng-server-context` attribute to host elements of all bootstrapped components
86
- * within a given application.
87
- */
88
- function appendServerContextInfo(applicationRef) {
89
- const injector = applicationRef.injector;
90
- let serverContext = sanitizeServerContext(injector.get(SERVER_CONTEXT, DEFAULT_SERVER_CONTEXT));
91
- applicationRef.components.forEach((componentRef) => {
92
- const renderer = componentRef.injector.get(Renderer2);
93
- const element = componentRef.location.nativeElement;
94
- if (element) {
95
- renderer.setAttribute(element, 'ng-server-context', serverContext);
96
- }
97
- });
98
- }
99
- function insertEventRecordScript(appId, doc, eventTypesToReplay, nonce) {
100
- const { regular, capture } = eventTypesToReplay;
101
- const eventDispatchScript = findEventDispatchScript(doc);
102
- if (eventDispatchScript) {
103
- // This is defined in packages/core/primitives/event-dispatch/contract_binary.ts
104
- const replayScriptContents = `window.__jsaction_bootstrap(` +
105
- `document.body,` +
106
- `"${appId}",` +
107
- `${JSON.stringify(Array.from(regular))},` +
108
- `${JSON.stringify(Array.from(capture))}` +
109
- `);`;
110
- const replayScript = createScript(doc, replayScriptContents, nonce);
111
- // Insert replay script right after inlined event dispatch script, since it
112
- // relies on `__jsaction_bootstrap` to be defined in the global scope.
113
- eventDispatchScript.after(replayScript);
114
- }
115
- }
116
- async function _render(platformRef, applicationRef) {
117
- // Block until application is stable.
118
- await whenStable(applicationRef);
119
- const platformState = platformRef.injector.get(PlatformState);
120
- prepareForHydration(platformState, applicationRef);
121
- // Run any BEFORE_APP_SERIALIZED callbacks just before rendering to string.
122
- const environmentInjector = applicationRef.injector;
123
- const callbacks = environmentInjector.get(BEFORE_APP_SERIALIZED, null);
124
- if (callbacks) {
125
- const asyncCallbacks = [];
126
- for (const callback of callbacks) {
127
- try {
128
- const callbackResult = callback();
129
- if (callbackResult) {
130
- asyncCallbacks.push(callbackResult);
131
- }
132
- }
133
- catch (e) {
134
- // Ignore exceptions.
135
- console.warn('Ignoring BEFORE_APP_SERIALIZED Exception: ', e);
136
- }
137
- }
138
- if (asyncCallbacks.length) {
139
- for (const result of await Promise.allSettled(asyncCallbacks)) {
140
- if (result.status === 'rejected') {
141
- console.warn('Ignoring BEFORE_APP_SERIALIZED Exception: ', result.reason);
142
- }
143
- }
144
- }
145
- }
146
- appendServerContextInfo(applicationRef);
147
- const output = platformState.renderToString();
148
- // Destroy the application in a macrotask, this allows pending promises to be settled and errors
149
- // to be surfaced to the users.
150
- await new Promise((resolve) => {
151
- setTimeout(() => {
152
- platformRef.destroy();
153
- resolve();
154
- }, 0);
155
- });
156
- return output;
157
- }
158
- /**
159
- * Specifies the value that should be used if no server context value has been provided.
160
- */
161
- const DEFAULT_SERVER_CONTEXT = 'other';
162
- /**
163
- * An internal token that allows providing extra information about the server context
164
- * (e.g. whether SSR or SSG was used). The value is a string and characters other
165
- * than [a-zA-Z0-9\-] are removed. See the default value in `DEFAULT_SERVER_CONTEXT` const.
166
- */
167
- export const SERVER_CONTEXT = new InjectionToken('SERVER_CONTEXT');
168
- /**
169
- * Sanitizes provided server context:
170
- * - removes all characters other than a-z, A-Z, 0-9 and `-`
171
- * - returns `other` if nothing is provided or the string is empty after sanitization
172
- */
173
- function sanitizeServerContext(serverContext) {
174
- const context = serverContext.replace(/[^a-zA-Z0-9\-]/g, '');
175
- return context.length > 0 ? context : DEFAULT_SERVER_CONTEXT;
176
- }
177
- /**
178
- * Bootstraps an application using provided NgModule and serializes the page content to string.
179
- *
180
- * @param moduleType A reference to an NgModule that should be used for bootstrap.
181
- * @param options Additional configuration for the render operation:
182
- * - `document` - the document of the page to render, either as an HTML string or
183
- * as a reference to the `document` instance.
184
- * - `url` - the URL for the current render request.
185
- * - `extraProviders` - set of platform level providers for the current render request.
186
- *
187
- * @publicApi
188
- */
189
- export async function renderModule(moduleType, options) {
190
- const { document, url, extraProviders: platformProviders } = options;
191
- const platformRef = createServerPlatform({ document, url, platformProviders });
192
- const moduleRef = await platformRef.bootstrapModule(moduleType);
193
- const applicationRef = moduleRef.injector.get(ApplicationRef);
194
- return _render(platformRef, applicationRef);
195
- }
196
- /**
197
- * Bootstraps an instance of an Angular application and renders it to a string.
198
-
199
- * ```typescript
200
- * const bootstrap = () => bootstrapApplication(RootComponent, appConfig);
201
- * const output: string = await renderApplication(bootstrap);
202
- * ```
203
- *
204
- * @param bootstrap A method that when invoked returns a promise that returns an `ApplicationRef`
205
- * instance once resolved.
206
- * @param options Additional configuration for the render operation:
207
- * - `document` - the document of the page to render, either as an HTML string or
208
- * as a reference to the `document` instance.
209
- * - `url` - the URL for the current render request.
210
- * - `platformProviders` - the platform level providers for the current render request.
211
- *
212
- * @returns A Promise, that returns serialized (to a string) rendered page, once resolved.
213
- *
214
- * @publicApi
215
- */
216
- export async function renderApplication(bootstrap, options) {
217
- return runAndMeasurePerf('renderApplication', async () => {
218
- const platformRef = createServerPlatform(options);
219
- const applicationRef = await bootstrap();
220
- return _render(platformRef, applicationRef);
221
- });
222
- }
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS1zZXJ2ZXIvc3JjL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFDTCxNQUFNLEVBQ04sY0FBYyxFQUNkLFNBQVMsRUFDVCxjQUFjLEVBR2QsU0FBUyxFQUdULHFCQUFxQixJQUFJLG9CQUFvQixFQUM3QywrQkFBK0IsSUFBSSw4QkFBOEIsRUFDakUsNkJBQTZCLElBQUksNEJBQTRCLEVBQzdELFdBQVcsSUFBSSxVQUFVLEdBQzFCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxjQUFjLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDL0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUU3Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsNEJBQTRCLENBQUM7QUFRckU7OztHQUdHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FBQyxPQUF3QjtJQUNwRCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDO0lBQ3ZELE9BQU8sY0FBYyxDQUFDO1FBQ3BCLEVBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsRUFBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBQyxFQUFDO1FBQ25GLGNBQWM7S0FDZixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyx1QkFBdUIsQ0FBQyxHQUFhO0lBQzVDLE9BQU8sR0FBRyxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLHlCQUF5QixDQUFDLEdBQWE7SUFDOUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDekMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxhQUE0QixFQUFFLGNBQThCO0lBQ3ZGLE1BQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQztJQUNwRCxNQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFeEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3BFLDhEQUE4RDtRQUM5RCwyREFBMkQ7UUFDM0QseUJBQXlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFL0IsT0FBTztJQUNULENBQUM7SUFFRCwrQkFBK0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVyQyxNQUFNLGtCQUFrQixHQUFHLG9CQUFvQixDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNyRSxJQUFJLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZFLHVCQUF1QixDQUNyQixtQkFBbUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQy9CLEdBQUcsRUFDSCxrQkFBa0IsRUFDbEIsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FDekMsQ0FBQztJQUNKLENBQUM7U0FBTSxDQUFDO1FBQ04sc0VBQXNFO1FBQ3RFLDJEQUEyRDtRQUMzRCx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUywrQkFBK0IsQ0FBQyxHQUFhO0lBQ3BELHVDQUF1QztJQUN2QyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDaEUsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVO1FBQ2pCLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDckQsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLHVCQUF1QixDQUFDLGNBQThCO0lBQzdELE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUM7SUFDekMsSUFBSSxhQUFhLEdBQUcscUJBQXFCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLGNBQWMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7UUFDakQsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEQsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7UUFDcEQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLFFBQVEsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLHVCQUF1QixDQUM5QixLQUFhLEVBQ2IsR0FBYSxFQUNiLGtCQUFnRSxFQUNoRSxLQUFvQjtJQUVwQixNQUFNLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBQyxHQUFHLGtCQUFrQixDQUFDO0lBQzlDLE1BQU0sbUJBQW1CLEdBQUcsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekQsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ3hCLGdGQUFnRjtRQUNoRixNQUFNLG9CQUFvQixHQUN4Qiw4QkFBOEI7WUFDOUIsZ0JBQWdCO1lBQ2hCLElBQUksS0FBSyxJQUFJO1lBQ2IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRztZQUN6QyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFO1lBQ3hDLElBQUksQ0FBQztRQUVQLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFcEUsMkVBQTJFO1FBQzNFLHNFQUFzRTtRQUN0RSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUMsQ0FBQztBQUNILENBQUM7QUFFRCxLQUFLLFVBQVUsT0FBTyxDQUFDLFdBQXdCLEVBQUUsY0FBOEI7SUFDN0UscUNBQXFDO0lBQ3JDLE1BQU0sVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRWpDLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzlELG1CQUFtQixDQUFDLGFBQWEsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUVuRCwyRUFBMkU7SUFDM0UsTUFBTSxtQkFBbUIsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDO0lBQ3BELE1BQU0sU0FBUyxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN2RSxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsTUFBTSxjQUFjLEdBQW9CLEVBQUUsQ0FBQztRQUMzQyxLQUFLLE1BQU0sUUFBUSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQztnQkFDSCxNQUFNLGNBQWMsR0FBRyxRQUFRLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxjQUFjLEVBQUUsQ0FBQztvQkFDbkIsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDdEMsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLHFCQUFxQjtnQkFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyw0Q0FBNEMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNoRSxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFCLEtBQUssTUFBTSxNQUFNLElBQUksTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7Z0JBQzlELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDakMsT0FBTyxDQUFDLElBQUksQ0FBQyw0Q0FBNEMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzVFLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4QyxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUM7SUFFOUMsZ0dBQWdHO0lBQ2hHLCtCQUErQjtJQUMvQixNQUFNLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDbEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN0QixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxzQkFBc0IsR0FBRyxPQUFPLENBQUM7QUFFdkM7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBUyxnQkFBZ0IsQ0FBQyxDQUFDO0FBRTNFOzs7O0dBSUc7QUFDSCxTQUFTLHFCQUFxQixDQUFDLGFBQXFCO0lBQ2xELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0QsT0FBTyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQztBQUMvRCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVksQ0FDaEMsVUFBbUIsRUFDbkIsT0FBd0Y7SUFFeEYsTUFBTSxFQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFDLEdBQUcsT0FBTyxDQUFDO0lBQ25FLE1BQU0sV0FBVyxHQUFHLG9CQUFvQixDQUFDLEVBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsRUFBQyxDQUFDLENBQUM7SUFDN0UsTUFBTSxTQUFTLEdBQUcsTUFBTSxXQUFXLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzlELE9BQU8sT0FBTyxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxTQUF3QyxFQUN4QyxPQUFxRjtJQUVyRixPQUFPLGlCQUFpQixDQUFDLG1CQUFtQixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3ZELE1BQU0sV0FBVyxHQUFHLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWxELE1BQU0sY0FBYyxHQUFHLE1BQU0sU0FBUyxFQUFFLENBQUM7UUFDekMsT0FBTyxPQUFPLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzlDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1xuICBBUFBfSUQsXG4gIEFwcGxpY2F0aW9uUmVmLFxuICBDU1BfTk9OQ0UsXG4gIEluamVjdGlvblRva2VuLFxuICBQbGF0Zm9ybVJlZixcbiAgUHJvdmlkZXIsXG4gIFJlbmRlcmVyMixcbiAgU3RhdGljUHJvdmlkZXIsXG4gIFR5cGUsXG4gIMm1YW5ub3RhdGVGb3JIeWRyYXRpb24gYXMgYW5ub3RhdGVGb3JIeWRyYXRpb24sXG4gIMm1SVNfSFlEUkFUSU9OX0RPTV9SRVVTRV9FTkFCTEVEIGFzIElTX0hZRFJBVElPTl9ET01fUkVVU0VfRU5BQkxFRCxcbiAgybVTU1JfQ09OVEVOVF9JTlRFR1JJVFlfTUFSS0VSIGFzIFNTUl9DT05URU5UX0lOVEVHUklUWV9NQVJLRVIsXG4gIMm1d2hlblN0YWJsZSBhcyB3aGVuU3RhYmxlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtQbGF0Zm9ybVN0YXRlfSBmcm9tICcuL3BsYXRmb3JtX3N0YXRlJztcbmltcG9ydCB7cGxhdGZvcm1TZXJ2ZXJ9IGZyb20gJy4vc2VydmVyJztcbmltcG9ydCB7QkVGT1JFX0FQUF9TRVJJQUxJWkVELCBJTklUSUFMX0NPTkZJR30gZnJvbSAnLi90b2tlbnMnO1xuaW1wb3J0IHtjcmVhdGVTY3JpcHR9IGZyb20gJy4vdHJhbnNmZXJfc3RhdGUnO1xuaW1wb3J0IHtydW5BbmRNZWFzdXJlUGVyZn0gZnJvbSAnLi9wcm9maWxlcic7XG5cbi8qKlxuICogRXZlbnQgZGlzcGF0Y2ggKEpTQWN0aW9uKSBzY3JpcHQgaXMgaW5saW5lZCBpbnRvIHRoZSBIVE1MIGJ5IHRoZSBidWlsZFxuICogcHJvY2VzcyB0byBhdm9pZCBleHRyYSBibG9ja2luZyByZXF1ZXN0IG9uIGEgcGFnZS4gVGhlIHNjcmlwdCBsb29rcyBsaWtlIHRoaXM6XG4gKiBgYGBcbiAqIDxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiIGlkPVwibmctZXZlbnQtZGlzcGF0Y2gtY29udHJhY3RcIj4uLi48L3NjcmlwdD5cbiAqIGBgYFxuICogVGhpcyBjb25zdCByZXByZXNlbnRzIHRoZSBcImlkXCIgYXR0cmlidXRlIHZhbHVlLlxuICovXG5leHBvcnQgY29uc3QgRVZFTlRfRElTUEFUQ0hfU0NSSVBUX0lEID0gJ25nLWV2ZW50LWRpc3BhdGNoLWNvbnRyYWN0JztcblxuaW50ZXJmYWNlIFBsYXRmb3JtT3B0aW9ucyB7XG4gIGRvY3VtZW50Pzogc3RyaW5nIHwgRG9jdW1lbnQ7XG4gIHVybD86IHN0cmluZztcbiAgcGxhdGZvcm1Qcm92aWRlcnM/OiBQcm92aWRlcltdO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgYSBzZXJ2ZXIgcGxhdGZvcm0gKHdpdGggb3Igd2l0aG91dCBKSVQgY29tcGlsZXIgc3VwcG9ydFxuICogZGVwZW5kaW5nIG9uIHRoZSBgbmdKaXRNb2RlYCBnbG9iYWwgY29uc3QgdmFsdWUpLCB1c2luZyBwcm92aWRlZCBvcHRpb25zLlxuICovXG5mdW5jdGlvbiBjcmVhdGVTZXJ2ZXJQbGF0Zm9ybShvcHRpb25zOiBQbGF0Zm9ybU9wdGlvbnMpOiBQbGF0Zm9ybVJlZiB7XG4gIGNvbnN0IGV4dHJhUHJvdmlkZXJzID0gb3B0aW9ucy5wbGF0Zm9ybVByb3ZpZGVycyA/PyBbXTtcbiAgcmV0dXJuIHBsYXRmb3JtU2VydmVyKFtcbiAgICB7cHJvdmlkZTogSU5JVElBTF9DT05GSUcsIHVzZVZhbHVlOiB7ZG9jdW1lbnQ6IG9wdGlvbnMuZG9jdW1lbnQsIHVybDogb3B0aW9ucy51cmx9fSxcbiAgICBleHRyYVByb3ZpZGVycyxcbiAgXSk7XG59XG5cbi8qKlxuICogRmluZHMgYW5kIHJldHVybnMgaW5saW5lZCBldmVudCBkaXNwYXRjaCBzY3JpcHQgaWYgaXQgZXhpc3RzLlxuICogU2VlIHRoZSBgRVZFTlRfRElTUEFUQ0hfU0NSSVBUX0lEYCBjb25zdCBkb2NzIGZvciBhZGRpdGlvbmFsIGluZm8uXG4gKi9cbmZ1bmN0aW9uIGZpbmRFdmVudERpc3BhdGNoU2NyaXB0KGRvYzogRG9jdW1lbnQpIHtcbiAgcmV0dXJuIGRvYy5nZXRFbGVtZW50QnlJZChFVkVOVF9ESVNQQVRDSF9TQ1JJUFRfSUQpO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgaW5saW5lZCBldmVudCBkaXNwYXRjaCBzY3JpcHQgaWYgaXQgZXhpc3RzLlxuICogU2VlIHRoZSBgRVZFTlRfRElTUEFUQ0hfU0NSSVBUX0lEYCBjb25zdCBkb2NzIGZvciBhZGRpdGlvbmFsIGluZm8uXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZUV2ZW50RGlzcGF0Y2hTY3JpcHQoZG9jOiBEb2N1bWVudCkge1xuICBmaW5kRXZlbnREaXNwYXRjaFNjcmlwdChkb2MpPy5yZW1vdmUoKTtcbn1cblxuLyoqXG4gKiBBbm5vdGF0ZSBub2RlcyBmb3IgaHlkcmF0aW9uIGFuZCByZW1vdmUgZXZlbnQgZGlzcGF0Y2ggc2NyaXB0IHdoZW4gbm90IG5lZWRlZC5cbiAqL1xuZnVuY3Rpb24gcHJlcGFyZUZvckh5ZHJhdGlvbihwbGF0Zm9ybVN0YXRlOiBQbGF0Zm9ybVN0YXRlLCBhcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYpOiB2b2lkIHtcbiAgY29uc3QgZW52aXJvbm1lbnRJbmplY3RvciA9IGFwcGxpY2F0aW9uUmVmLmluamVjdG9yO1xuICBjb25zdCBkb2MgPSBwbGF0Zm9ybVN0YXRlLmdldERvY3VtZW50KCk7XG5cbiAgaWYgKCFlbnZpcm9ubWVudEluamVjdG9yLmdldChJU19IWURSQVRJT05fRE9NX1JFVVNFX0VOQUJMRUQsIGZhbHNlKSkge1xuICAgIC8vIEh5ZHJhdGlvbiBpcyBkaWFibGVkLCByZW1vdmUgaW5saW5lZCBldmVudCBkaXNwYXRjaCBzY3JpcHQuXG4gICAgLy8gKHdoaWNoIHdhcyBpbmplY3RlZCBieSB0aGUgYnVpbGQgcHJvY2VzcykgZnJvbSB0aGUgSFRNTC5cbiAgICByZW1vdmVFdmVudERpc3BhdGNoU2NyaXB0KGRvYyk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBhcHBlbmRTc3JDb250ZW50SW50ZWdyaXR5TWFya2VyKGRvYyk7XG5cbiAgY29uc3QgZXZlbnRUeXBlc1RvUmVwbGF5ID0gYW5ub3RhdGVGb3JIeWRyYXRpb24oYXBwbGljYXRpb25SZWYsIGRvYyk7XG4gIGlmIChldmVudFR5cGVzVG9SZXBsYXkucmVndWxhci5zaXplIHx8IGV2ZW50VHlwZXNUb1JlcGxheS5jYXB0dXJlLnNpemUpIHtcbiAgICBpbnNlcnRFdmVudFJlY29yZFNjcmlwdChcbiAgICAgIGVudmlyb25tZW50SW5qZWN0b3IuZ2V0KEFQUF9JRCksXG4gICAgICBkb2MsXG4gICAgICBldmVudFR5cGVzVG9SZXBsYXksXG4gICAgICBlbnZpcm9ubWVudEluamVjdG9yLmdldChDU1BfTk9OQ0UsIG51bGwpLFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgLy8gTm8gZXZlbnRzIHRvIHJlcGxheSwgd2Ugc2hvdWxkIHJlbW92ZSBpbmxpbmVkIGV2ZW50IGRpc3BhdGNoIHNjcmlwdFxuICAgIC8vICh3aGljaCB3YXMgaW5qZWN0ZWQgYnkgdGhlIGJ1aWxkIHByb2Nlc3MpIGZyb20gdGhlIEhUTUwuXG4gICAgcmVtb3ZlRXZlbnREaXNwYXRjaFNjcmlwdChkb2MpO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG1hcmtlciBjb21tZW50IG5vZGUgYW5kIGFwcGVuZCBpdCBpbnRvIHRoZSBgPGJvZHk+YC5cbiAqIFNvbWUgQ0ROcyBoYXZlIG1lY2hhbmlzbXMgdG8gcmVtb3ZlIGFsbCBjb21tZW50IG5vZGUgZnJvbSBIVE1MLlxuICogVGhpcyBiZWhhdmlvdXIgYnJlYWtzIGh5ZHJhdGlvbiwgc28gd2UnbGwgZGV0ZWN0IG9uIHRoZSBjbGllbnQgc2lkZSBpZiB0aGlzXG4gKiBtYXJrZXIgY29tbWVudCBpcyBzdGlsbCBhdmFpbGFibGUgb3IgZWxzZSB0aHJvdyBhbiBlcnJvclxuICovXG5mdW5jdGlvbiBhcHBlbmRTc3JDb250ZW50SW50ZWdyaXR5TWFya2VyKGRvYzogRG9jdW1lbnQpIHtcbiAgLy8gQWRkaW5nIGEgbmcgaHlkcmF0aW9uIG1hcmtlciBjb21tZW50XG4gIGNvbnN0IGNvbW1lbnQgPSBkb2MuY3JlYXRlQ29tbWVudChTU1JfQ09OVEVOVF9JTlRFR1JJVFlfTUFSS0VSKTtcbiAgZG9jLmJvZHkuZmlyc3RDaGlsZFxuICAgID8gZG9jLmJvZHkuaW5zZXJ0QmVmb3JlKGNvbW1lbnQsIGRvYy5ib2R5LmZpcnN0Q2hpbGQpXG4gICAgOiBkb2MuYm9keS5hcHBlbmQoY29tbWVudCk7XG59XG5cbi8qKlxuICogQWRkcyB0aGUgYG5nLXNlcnZlci1jb250ZXh0YCBhdHRyaWJ1dGUgdG8gaG9zdCBlbGVtZW50cyBvZiBhbGwgYm9vdHN0cmFwcGVkIGNvbXBvbmVudHNcbiAqIHdpdGhpbiBhIGdpdmVuIGFwcGxpY2F0aW9uLlxuICovXG5mdW5jdGlvbiBhcHBlbmRTZXJ2ZXJDb250ZXh0SW5mbyhhcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYpIHtcbiAgY29uc3QgaW5qZWN0b3IgPSBhcHBsaWNhdGlvblJlZi5pbmplY3RvcjtcbiAgbGV0IHNlcnZlckNvbnRleHQgPSBzYW5pdGl6ZVNlcnZlckNvbnRleHQoaW5qZWN0b3IuZ2V0KFNFUlZFUl9DT05URVhULCBERUZBVUxUX1NFUlZFUl9DT05URVhUKSk7XG4gIGFwcGxpY2F0aW9uUmVmLmNvbXBvbmVudHMuZm9yRWFjaCgoY29tcG9uZW50UmVmKSA9PiB7XG4gICAgY29uc3QgcmVuZGVyZXIgPSBjb21wb25lbnRSZWYuaW5qZWN0b3IuZ2V0KFJlbmRlcmVyMik7XG4gICAgY29uc3QgZWxlbWVudCA9IGNvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICByZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgJ25nLXNlcnZlci1jb250ZXh0Jywgc2VydmVyQ29udGV4dCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gaW5zZXJ0RXZlbnRSZWNvcmRTY3JpcHQoXG4gIGFwcElkOiBzdHJpbmcsXG4gIGRvYzogRG9jdW1lbnQsXG4gIGV2ZW50VHlwZXNUb1JlcGxheToge3JlZ3VsYXI6IFNldDxzdHJpbmc+OyBjYXB0dXJlOiBTZXQ8c3RyaW5nPn0sXG4gIG5vbmNlOiBzdHJpbmcgfCBudWxsLFxuKTogdm9pZCB7XG4gIGNvbnN0IHtyZWd1bGFyLCBjYXB0dXJlfSA9IGV2ZW50VHlwZXNUb1JlcGxheTtcbiAgY29uc3QgZXZlbnREaXNwYXRjaFNjcmlwdCA9IGZpbmRFdmVudERpc3BhdGNoU2NyaXB0KGRvYyk7XG4gIGlmIChldmVudERpc3BhdGNoU2NyaXB0KSB7XG4gICAgLy8gVGhpcyBpcyBkZWZpbmVkIGluIHBhY2thZ2VzL2NvcmUvcHJpbWl0aXZlcy9ldmVudC1kaXNwYXRjaC9jb250cmFjdF9iaW5hcnkudHNcbiAgICBjb25zdCByZXBsYXlTY3JpcHRDb250ZW50cyA9XG4gICAgICBgd2luZG93Ll9fanNhY3Rpb25fYm9vdHN0cmFwKGAgK1xuICAgICAgYGRvY3VtZW50LmJvZHksYCArXG4gICAgICBgXCIke2FwcElkfVwiLGAgK1xuICAgICAgYCR7SlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbShyZWd1bGFyKSl9LGAgK1xuICAgICAgYCR7SlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbShjYXB0dXJlKSl9YCArXG4gICAgICBgKTtgO1xuXG4gICAgY29uc3QgcmVwbGF5U2NyaXB0ID0gY3JlYXRlU2NyaXB0KGRvYywgcmVwbGF5U2NyaXB0Q29udGVudHMsIG5vbmNlKTtcblxuICAgIC8vIEluc2VydCByZXBsYXkgc2NyaXB0IHJpZ2h0IGFmdGVyIGlubGluZWQgZXZlbnQgZGlzcGF0Y2ggc2NyaXB0LCBzaW5jZSBpdFxuICAgIC8vIHJlbGllcyBvbiBgX19qc2FjdGlvbl9ib290c3RyYXBgIHRvIGJlIGRlZmluZWQgaW4gdGhlIGdsb2JhbCBzY29wZS5cbiAgICBldmVudERpc3BhdGNoU2NyaXB0LmFmdGVyKHJlcGxheVNjcmlwdCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gX3JlbmRlcihwbGF0Zm9ybVJlZjogUGxhdGZvcm1SZWYsIGFwcGxpY2F0aW9uUmVmOiBBcHBsaWNhdGlvblJlZik6IFByb21pc2U8c3RyaW5nPiB7XG4gIC8vIEJsb2NrIHVudGlsIGFwcGxpY2F0aW9uIGlzIHN0YWJsZS5cbiAgYXdhaXQgd2hlblN0YWJsZShhcHBsaWNhdGlvblJlZik7XG5cbiAgY29uc3QgcGxhdGZvcm1TdGF0ZSA9IHBsYXRmb3JtUmVmLmluamVjdG9yLmdldChQbGF0Zm9ybVN0YXRlKTtcbiAgcHJlcGFyZUZvckh5ZHJhdGlvbihwbGF0Zm9ybVN0YXRlLCBhcHBsaWNhdGlvblJlZik7XG5cbiAgLy8gUnVuIGFueSBCRUZPUkVfQVBQX1NFUklBTElaRUQgY2FsbGJhY2tzIGp1c3QgYmVmb3JlIHJlbmRlcmluZyB0byBzdHJpbmcuXG4gIGNvbnN0IGVudmlyb25tZW50SW5qZWN0b3IgPSBhcHBsaWNhdGlvblJlZi5pbmplY3RvcjtcbiAgY29uc3QgY2FsbGJhY2tzID0gZW52aXJvbm1lbnRJbmplY3Rvci5nZXQoQkVGT1JFX0FQUF9TRVJJQUxJWkVELCBudWxsKTtcbiAgaWYgKGNhbGxiYWNrcykge1xuICAgIGNvbnN0IGFzeW5jQ2FsbGJhY2tzOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNhbGxiYWNrIG9mIGNhbGxiYWNrcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY2FsbGJhY2tSZXN1bHQgPSBjYWxsYmFjaygpO1xuICAgICAgICBpZiAoY2FsbGJhY2tSZXN1bHQpIHtcbiAgICAgICAgICBhc3luY0NhbGxiYWNrcy5wdXNoKGNhbGxiYWNrUmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBJZ25vcmUgZXhjZXB0aW9ucy5cbiAgICAgICAgY29uc29sZS53YXJuKCdJZ25vcmluZyBCRUZPUkVfQVBQX1NFUklBTElaRUQgRXhjZXB0aW9uOiAnLCBlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYXN5bmNDYWxsYmFja3MubGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoYXN5bmNDYWxsYmFja3MpKSB7XG4gICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSAncmVqZWN0ZWQnKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdJZ25vcmluZyBCRUZPUkVfQVBQX1NFUklBTElaRUQgRXhjZXB0aW9uOiAnLCByZXN1bHQucmVhc29uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFwcGVuZFNlcnZlckNvbnRleHRJbmZvKGFwcGxpY2F0aW9uUmVmKTtcbiAgY29uc3Qgb3V0cHV0ID0gcGxhdGZvcm1TdGF0ZS5yZW5kZXJUb1N0cmluZygpO1xuXG4gIC8vIERlc3Ryb3kgdGhlIGFwcGxpY2F0aW9uIGluIGEgbWFjcm90YXNrLCB0aGlzIGFsbG93cyBwZW5kaW5nIHByb21pc2VzIHRvIGJlIHNldHRsZWQgYW5kIGVycm9yc1xuICAvLyB0byBiZSBzdXJmYWNlZCB0byB0aGUgdXNlcnMuXG4gIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBwbGF0Zm9ybVJlZi5kZXN0cm95KCk7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSwgMCk7XG4gIH0pO1xuXG4gIHJldHVybiBvdXRwdXQ7XG59XG5cbi8qKlxuICogU3BlY2lmaWVzIHRoZSB2YWx1ZSB0aGF0IHNob3VsZCBiZSB1c2VkIGlmIG5vIHNlcnZlciBjb250ZXh0IHZhbHVlIGhhcyBiZWVuIHByb3ZpZGVkLlxuICovXG5jb25zdCBERUZBVUxUX1NFUlZFUl9DT05URVhUID0gJ290aGVyJztcblxuLyoqXG4gKiBBbiBpbnRlcm5hbCB0b2tlbiB0aGF0IGFsbG93cyBwcm92aWRpbmcgZXh0cmEgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNlcnZlciBjb250ZXh0XG4gKiAoZS5nLiB3aGV0aGVyIFNTUiBvciBTU0cgd2FzIHVzZWQpLiBUaGUgdmFsdWUgaXMgYSBzdHJpbmcgYW5kIGNoYXJhY3RlcnMgb3RoZXJcbiAqIHRoYW4gW2EtekEtWjAtOVxcLV0gYXJlIHJlbW92ZWQuIFNlZSB0aGUgZGVmYXVsdCB2YWx1ZSBpbiBgREVGQVVMVF9TRVJWRVJfQ09OVEVYVGAgY29uc3QuXG4gKi9cbmV4cG9ydCBjb25zdCBTRVJWRVJfQ09OVEVYVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdTRVJWRVJfQ09OVEVYVCcpO1xuXG4vKipcbiAqIFNhbml0aXplcyBwcm92aWRlZCBzZXJ2ZXIgY29udGV4dDpcbiAqIC0gcmVtb3ZlcyBhbGwgY2hhcmFjdGVycyBvdGhlciB0aGFuIGEteiwgQS1aLCAwLTkgYW5kIGAtYFxuICogLSByZXR1cm5zIGBvdGhlcmAgaWYgbm90aGluZyBpcyBwcm92aWRlZCBvciB0aGUgc3RyaW5nIGlzIGVtcHR5IGFmdGVyIHNhbml0aXphdGlvblxuICovXG5mdW5jdGlvbiBzYW5pdGl6ZVNlcnZlckNvbnRleHQoc2VydmVyQ29udGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgY29udGV4dCA9IHNlcnZlckNvbnRleHQucmVwbGFjZSgvW15hLXpBLVowLTlcXC1dL2csICcnKTtcbiAgcmV0dXJuIGNvbnRleHQubGVuZ3RoID4gMCA/IGNvbnRleHQgOiBERUZBVUxUX1NFUlZFUl9DT05URVhUO1xufVxuXG4vKipcbiAqIEJvb3RzdHJhcHMgYW4gYXBwbGljYXRpb24gdXNpbmcgcHJvdmlkZWQgTmdNb2R1bGUgYW5kIHNlcmlhbGl6ZXMgdGhlIHBhZ2UgY29udGVudCB0byBzdHJpbmcuXG4gKlxuICogQHBhcmFtIG1vZHVsZVR5cGUgQSByZWZlcmVuY2UgdG8gYW4gTmdNb2R1bGUgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgYm9vdHN0cmFwLlxuICogQHBhcmFtIG9wdGlvbnMgQWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgcmVuZGVyIG9wZXJhdGlvbjpcbiAqICAtIGBkb2N1bWVudGAgLSB0aGUgZG9jdW1lbnQgb2YgdGhlIHBhZ2UgdG8gcmVuZGVyLCBlaXRoZXIgYXMgYW4gSFRNTCBzdHJpbmcgb3JcbiAqICAgICAgICAgICAgICAgICBhcyBhIHJlZmVyZW5jZSB0byB0aGUgYGRvY3VtZW50YCBpbnN0YW5jZS5cbiAqICAtIGB1cmxgIC0gdGhlIFVSTCBmb3IgdGhlIGN1cnJlbnQgcmVuZGVyIHJlcXVlc3QuXG4gKiAgLSBgZXh0cmFQcm92aWRlcnNgIC0gc2V0IG9mIHBsYXRmb3JtIGxldmVsIHByb3ZpZGVycyBmb3IgdGhlIGN1cnJlbnQgcmVuZGVyIHJlcXVlc3QuXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyTW9kdWxlPFQ+KFxuICBtb2R1bGVUeXBlOiBUeXBlPFQ+LFxuICBvcHRpb25zOiB7ZG9jdW1lbnQ/OiBzdHJpbmcgfCBEb2N1bWVudDsgdXJsPzogc3RyaW5nOyBleHRyYVByb3ZpZGVycz86IFN0YXRpY1Byb3ZpZGVyW119LFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qge2RvY3VtZW50LCB1cmwsIGV4dHJhUHJvdmlkZXJzOiBwbGF0Zm9ybVByb3ZpZGVyc30gPSBvcHRpb25zO1xuICBjb25zdCBwbGF0Zm9ybVJlZiA9IGNyZWF0ZVNlcnZlclBsYXRmb3JtKHtkb2N1bWVudCwgdXJsLCBwbGF0Zm9ybVByb3ZpZGVyc30pO1xuICBjb25zdCBtb2R1bGVSZWYgPSBhd2FpdCBwbGF0Zm9ybVJlZi5ib290c3RyYXBNb2R1bGUobW9kdWxlVHlwZSk7XG4gIGNvbnN0IGFwcGxpY2F0aW9uUmVmID0gbW9kdWxlUmVmLmluamVjdG9yLmdldChBcHBsaWNhdGlvblJlZik7XG4gIHJldHVybiBfcmVuZGVyKHBsYXRmb3JtUmVmLCBhcHBsaWNhdGlvblJlZik7XG59XG5cbi8qKlxuICogQm9vdHN0cmFwcyBhbiBpbnN0YW5jZSBvZiBhbiBBbmd1bGFyIGFwcGxpY2F0aW9uIGFuZCByZW5kZXJzIGl0IHRvIGEgc3RyaW5nLlxuXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBib290c3RyYXAgPSAoKSA9PiBib290c3RyYXBBcHBsaWNhdGlvbihSb290Q29tcG9uZW50LCBhcHBDb25maWcpO1xuICogY29uc3Qgb3V0cHV0OiBzdHJpbmcgPSBhd2FpdCByZW5kZXJBcHBsaWNhdGlvbihib290c3RyYXApO1xuICogYGBgXG4gKlxuICogQHBhcmFtIGJvb3RzdHJhcCBBIG1ldGhvZCB0aGF0IHdoZW4gaW52b2tlZCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJldHVybnMgYW4gYEFwcGxpY2F0aW9uUmVmYFxuICogICAgIGluc3RhbmNlIG9uY2UgcmVzb2x2ZWQuXG4gKiBAcGFyYW0gb3B0aW9ucyBBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSByZW5kZXIgb3BlcmF0aW9uOlxuICogIC0gYGRvY3VtZW50YCAtIHRoZSBkb2N1bWVudCBvZiB0aGUgcGFnZSB0byByZW5kZXIsIGVpdGhlciBhcyBhbiBIVE1MIHN0cmluZyBvclxuICogICAgICAgICAgICAgICAgIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBgZG9jdW1lbnRgIGluc3RhbmNlLlxuICogIC0gYHVybGAgLSB0aGUgVVJMIGZvciB0aGUgY3VycmVudCByZW5kZXIgcmVxdWVzdC5cbiAqICAtIGBwbGF0Zm9ybVByb3ZpZGVyc2AgLSB0aGUgcGxhdGZvcm0gbGV2ZWwgcHJvdmlkZXJzIGZvciB0aGUgY3VycmVudCByZW5kZXIgcmVxdWVzdC5cbiAqXG4gKiBAcmV0dXJucyBBIFByb21pc2UsIHRoYXQgcmV0dXJucyBzZXJpYWxpemVkICh0byBhIHN0cmluZykgcmVuZGVyZWQgcGFnZSwgb25jZSByZXNvbHZlZC5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJBcHBsaWNhdGlvbjxUPihcbiAgYm9vdHN0cmFwOiAoKSA9PiBQcm9taXNlPEFwcGxpY2F0aW9uUmVmPixcbiAgb3B0aW9uczoge2RvY3VtZW50Pzogc3RyaW5nIHwgRG9jdW1lbnQ7IHVybD86IHN0cmluZzsgcGxhdGZvcm1Qcm92aWRlcnM/OiBQcm92aWRlcltdfSxcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIHJldHVybiBydW5BbmRNZWFzdXJlUGVyZigncmVuZGVyQXBwbGljYXRpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcGxhdGZvcm1SZWYgPSBjcmVhdGVTZXJ2ZXJQbGF0Zm9ybShvcHRpb25zKTtcblxuICAgIGNvbnN0IGFwcGxpY2F0aW9uUmVmID0gYXdhaXQgYm9vdHN0cmFwKCk7XG4gICAgcmV0dXJuIF9yZW5kZXIocGxhdGZvcm1SZWYsIGFwcGxpY2F0aW9uUmVmKTtcbiAgfSk7XG59XG4iXX0=
@@ -1,18 +0,0 @@
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
- /**
9
- * @module
10
- * @description
11
- * Entry point for all public APIs of the platform-server package.
12
- */
13
- import { Version } from '@angular/core';
14
- /**
15
- * @publicApi
16
- */
17
- export const VERSION = new Version('19.0.0-next.1');
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYXRmb3JtLXNlcnZlci9zcmMvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSDs7OztHQUlHO0FBRUgsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV0Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKlxuICogQG1vZHVsZVxuICogQGRlc2NyaXB0aW9uXG4gKiBFbnRyeSBwb2ludCBmb3IgYWxsIHB1YmxpYyBBUElzIG9mIHRoZSBwbGF0Zm9ybS1zZXJ2ZXIgcGFja2FnZS5cbiAqL1xuXG5pbXBvcnQge1ZlcnNpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBuZXcgVmVyc2lvbignMC4wLjAtUExBQ0VIT0xERVInKTtcbiJdfQ==
@@ -1,13 +0,0 @@
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
- // This file is not used to build this module. It is only used during editing
9
- // by the TypeScript language service and during build for verification. `ngc`
10
- // replaces this file with production index.ts when it rewrites private symbol
11
- // names.
12
- export * from './public_api';
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS1zZXJ2ZXIvdGVzdGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCw2RUFBNkU7QUFDN0UsOEVBQThFO0FBQzlFLDhFQUE4RTtBQUM5RSxTQUFTO0FBRVQsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLy8gVGhpcyBmaWxlIGlzIG5vdCB1c2VkIHRvIGJ1aWxkIHRoaXMgbW9kdWxlLiBJdCBpcyBvbmx5IHVzZWQgZHVyaW5nIGVkaXRpbmdcbi8vIGJ5IHRoZSBUeXBlU2NyaXB0IGxhbmd1YWdlIHNlcnZpY2UgYW5kIGR1cmluZyBidWlsZCBmb3IgdmVyaWZpY2F0aW9uLiBgbmdjYFxuLy8gcmVwbGFjZXMgdGhpcyBmaWxlIHdpdGggcHJvZHVjdGlvbiBpbmRleC50cyB3aGVuIGl0IHJld3JpdGVzIHByaXZhdGUgc3ltYm9sXG4vLyBuYW1lcy5cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==
@@ -1,15 +0,0 @@
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
- /**
9
- * @module
10
- * @description
11
- * Entry point for all public APIs of this package.
12
- */
13
- export * from './src/testing';
14
- // This file only reexports content of the `src` folder. Keep it that way.
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYXRmb3JtLXNlcnZlci90ZXN0aW5nL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUg7Ozs7R0FJRztBQUNILGNBQWMsZUFBZSxDQUFDO0FBRTlCLDBFQUEwRSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIEBtb2R1bGVcbiAqIEBkZXNjcmlwdGlvblxuICogRW50cnkgcG9pbnQgZm9yIGFsbCBwdWJsaWMgQVBJcyBvZiB0aGlzIHBhY2thZ2UuXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vc3JjL3Rlc3RpbmcnO1xuXG4vLyBUaGlzIGZpbGUgb25seSByZWV4cG9ydHMgY29udGVudCBvZiB0aGUgYHNyY2AgZm9sZGVyLiBLZWVwIGl0IHRoYXQgd2F5LlxuIl19
@@ -1,37 +0,0 @@
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 { createPlatformFactory, NgModule } from '@angular/core';
9
- import { BrowserDynamicTestingModule, ɵplatformCoreDynamicTesting as platformCoreDynamicTesting, } from '@angular/platform-browser-dynamic/testing';
10
- import { NoopAnimationsModule } from '@angular/platform-browser/animations';
11
- import { ɵINTERNAL_SERVER_PLATFORM_PROVIDERS as INTERNAL_SERVER_PLATFORM_PROVIDERS, ɵSERVER_RENDER_PROVIDERS as SERVER_RENDER_PROVIDERS, } from '@angular/platform-server';
12
- import * as i0 from "@angular/core";
13
- /**
14
- * Platform for testing
15
- *
16
- * @publicApi
17
- */
18
- export const platformServerTesting = createPlatformFactory(platformCoreDynamicTesting, 'serverTesting', INTERNAL_SERVER_PLATFORM_PROVIDERS);
19
- /**
20
- * NgModule for testing.
21
- *
22
- * @publicApi
23
- */
24
- export class ServerTestingModule {
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: ServerTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
26
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.1", ngImport: i0, type: ServerTestingModule, imports: [NoopAnimationsModule], exports: [BrowserDynamicTestingModule] }); }
27
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: ServerTestingModule, providers: SERVER_RENDER_PROVIDERS, imports: [NoopAnimationsModule, BrowserDynamicTestingModule] }); }
28
- }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: ServerTestingModule, decorators: [{
30
- type: NgModule,
31
- args: [{
32
- exports: [BrowserDynamicTestingModule],
33
- imports: [NoopAnimationsModule],
34
- providers: SERVER_RENDER_PROVIDERS,
35
- }]
36
- }] });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhdGZvcm0tc2VydmVyL3Rlc3Rpbmcvc3JjL3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMscUJBQXFCLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFDTCwyQkFBMkIsRUFDM0IsMkJBQTJCLElBQUksMEJBQTBCLEdBQzFELE1BQU0sMkNBQTJDLENBQUM7QUFDbkQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUNMLG1DQUFtQyxJQUFJLGtDQUFrQyxFQUN6RSx3QkFBd0IsSUFBSSx1QkFBdUIsR0FDcEQsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFbEM7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLHFCQUFxQixDQUN4RCwwQkFBMEIsRUFDMUIsZUFBZSxFQUNmLGtDQUFrQyxDQUNuQyxDQUFDO0FBRUY7Ozs7R0FJRztBQU1ILE1BQU0sT0FBTyxtQkFBbUI7eUhBQW5CLG1CQUFtQjswSEFBbkIsbUJBQW1CLFlBSHBCLG9CQUFvQixhQURwQiwyQkFBMkI7MEhBSTFCLG1CQUFtQixhQUZuQix1QkFBdUIsWUFEeEIsb0JBQW9CLEVBRHBCLDJCQUEyQjs7c0dBSTFCLG1CQUFtQjtrQkFML0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztvQkFDdEMsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUM7b0JBQy9CLFNBQVMsRUFBRSx1QkFBdUI7aUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7Y3JlYXRlUGxhdGZvcm1GYWN0b3J5LCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBCcm93c2VyRHluYW1pY1Rlc3RpbmdNb2R1bGUsXG4gIMm1cGxhdGZvcm1Db3JlRHluYW1pY1Rlc3RpbmcgYXMgcGxhdGZvcm1Db3JlRHluYW1pY1Rlc3RpbmcsXG59IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXItZHluYW1pYy90ZXN0aW5nJztcbmltcG9ydCB7Tm9vcEFuaW1hdGlvbnNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICDJtUlOVEVSTkFMX1NFUlZFUl9QTEFURk9STV9QUk9WSURFUlMgYXMgSU5URVJOQUxfU0VSVkVSX1BMQVRGT1JNX1BST1ZJREVSUyxcbiAgybVTRVJWRVJfUkVOREVSX1BST1ZJREVSUyBhcyBTRVJWRVJfUkVOREVSX1BST1ZJREVSUyxcbn0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tc2VydmVyJztcblxuLyoqXG4gKiBQbGF0Zm9ybSBmb3IgdGVzdGluZ1xuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGNvbnN0IHBsYXRmb3JtU2VydmVyVGVzdGluZyA9IGNyZWF0ZVBsYXRmb3JtRmFjdG9yeShcbiAgcGxhdGZvcm1Db3JlRHluYW1pY1Rlc3RpbmcsXG4gICdzZXJ2ZXJUZXN0aW5nJyxcbiAgSU5URVJOQUxfU0VSVkVSX1BMQVRGT1JNX1BST1ZJREVSUyxcbik7XG5cbi8qKlxuICogTmdNb2R1bGUgZm9yIHRlc3RpbmcuXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5ATmdNb2R1bGUoe1xuICBleHBvcnRzOiBbQnJvd3NlckR5bmFtaWNUZXN0aW5nTW9kdWxlXSxcbiAgaW1wb3J0czogW05vb3BBbmltYXRpb25zTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBTRVJWRVJfUkVOREVSX1BST1ZJREVSUyxcbn0pXG5leHBvcnQgY2xhc3MgU2VydmVyVGVzdGluZ01vZHVsZSB7fVxuIl19
@@ -1,14 +0,0 @@
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
- /**
9
- * @module
10
- * @description
11
- * Entry point for all public APIs of the platform-browser-dynamic/testing package.
12
- */
13
- export * from './server';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYXRmb3JtLXNlcnZlci90ZXN0aW5nL3NyYy90ZXN0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVIOzs7O0dBSUc7QUFDSCxjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIEBtb2R1bGVcbiAqIEBkZXNjcmlwdGlvblxuICogRW50cnkgcG9pbnQgZm9yIGFsbCBwdWJsaWMgQVBJcyBvZiB0aGUgcGxhdGZvcm0tYnJvd3Nlci1keW5hbWljL3Rlc3RpbmcgcGFja2FnZS5cbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2ZXInO1xuIl19
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYXRmb3JtLXNlcnZlci90ZXN0aW5nL3Rlc3RpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=