@angular/platform-server 18.1.0-rc.0 → 18.2.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/src/http.mjs +3 -3
- package/esm2022/src/location.mjs +3 -3
- package/esm2022/src/platform_state.mjs +3 -3
- package/esm2022/src/private_export.mjs +2 -1
- package/esm2022/src/profiler.mjs +55 -0
- package/esm2022/src/server.mjs +4 -4
- package/esm2022/src/server_events.mjs +3 -3
- package/esm2022/src/utils.mjs +7 -4
- package/esm2022/src/version.mjs +1 -1
- package/esm2022/testing/src/server.mjs +4 -4
- package/fesm2022/init.mjs +1 -1
- package/fesm2022/platform-server.mjs +72 -22
- package/fesm2022/platform-server.mjs.map +1 -1
- package/fesm2022/testing.mjs +5 -5
- package/index.d.ts +10 -1
- package/init/index.d.ts +1 -1
- package/package.json +6 -6
- package/testing/index.d.ts +1 -1
package/esm2022/src/http.mjs
CHANGED
|
@@ -27,10 +27,10 @@ export class ServerXhr {
|
|
|
27
27
|
}
|
|
28
28
|
return new impl.XMLHttpRequest();
|
|
29
29
|
}
|
|
30
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
31
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
30
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerXhr, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerXhr }); }
|
|
32
32
|
}
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerXhr, decorators: [{
|
|
34
34
|
type: Injectable
|
|
35
35
|
}] });
|
|
36
36
|
function relativeUrlsTransformerInterceptorFn(request, next) {
|
package/esm2022/src/location.mjs
CHANGED
|
@@ -101,10 +101,10 @@ export class ServerPlatformLocation {
|
|
|
101
101
|
getState() {
|
|
102
102
|
return undefined;
|
|
103
103
|
}
|
|
104
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
105
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
104
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerPlatformLocation, deps: [{ token: DOCUMENT }, { token: INITIAL_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
105
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerPlatformLocation }); }
|
|
106
106
|
}
|
|
107
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerPlatformLocation, decorators: [{
|
|
108
108
|
type: Injectable
|
|
109
109
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
110
110
|
type: Inject,
|
|
@@ -30,10 +30,10 @@ export class PlatformState {
|
|
|
30
30
|
getDocument() {
|
|
31
31
|
return this._doc;
|
|
32
32
|
}
|
|
33
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
34
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
33
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: PlatformState, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
34
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: PlatformState }); }
|
|
35
35
|
}
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: PlatformState, decorators: [{
|
|
37
37
|
type: Injectable
|
|
38
38
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
39
39
|
type: Inject,
|
|
@@ -7,4 +7,5 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export { INTERNAL_SERVER_PLATFORM_PROVIDERS as ɵINTERNAL_SERVER_PLATFORM_PROVIDERS, SERVER_RENDER_PROVIDERS as ɵSERVER_RENDER_PROVIDERS, } from './server';
|
|
9
9
|
export { SERVER_CONTEXT as ɵSERVER_CONTEXT } from './utils';
|
|
10
|
-
|
|
10
|
+
export { enableSsrProfiling as ɵenableSsrProfiling, disableSsrProfiling as ɵdisableSsrProfiling, } from './profiler';
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9leHBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS1zZXJ2ZXIvc3JjL3ByaXZhdGVfZXhwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFDTCxrQ0FBa0MsSUFBSSxtQ0FBbUMsRUFDekUsdUJBQXVCLElBQUksd0JBQXdCLEdBQ3BELE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBQyxjQUFjLElBQUksZUFBZSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQzFELE9BQU8sRUFDTCxrQkFBa0IsSUFBSSxtQkFBbUIsRUFDekMsbUJBQW1CLElBQUksb0JBQW9CLEdBQzVDLE1BQU0sWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmV4cG9ydCB7XG4gIElOVEVSTkFMX1NFUlZFUl9QTEFURk9STV9QUk9WSURFUlMgYXMgybVJTlRFUk5BTF9TRVJWRVJfUExBVEZPUk1fUFJPVklERVJTLFxuICBTRVJWRVJfUkVOREVSX1BST1ZJREVSUyBhcyDJtVNFUlZFUl9SRU5ERVJfUFJPVklERVJTLFxufSBmcm9tICcuL3NlcnZlcic7XG5leHBvcnQge1NFUlZFUl9DT05URVhUIGFzIMm1U0VSVkVSX0NPTlRFWFR9IGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0IHtcbiAgZW5hYmxlU3NyUHJvZmlsaW5nIGFzIMm1ZW5hYmxlU3NyUHJvZmlsaW5nLFxuICBkaXNhYmxlU3NyUHJvZmlsaW5nIGFzIMm1ZGlzYWJsZVNzclByb2ZpbGluZyxcbn0gZnJvbSAnLi9wcm9maWxlcic7XG4iXX0=
|
|
@@ -0,0 +1,55 @@
|
|
|
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
|
+
const PERFORMANCE_MARK_PREFIX = '🅰️';
|
|
9
|
+
let enablePerfLogging = false;
|
|
10
|
+
export function runAndMeasurePerf(label, method) {
|
|
11
|
+
if (!enablePerfLogging) {
|
|
12
|
+
return method();
|
|
13
|
+
}
|
|
14
|
+
const labelName = `${PERFORMANCE_MARK_PREFIX}:${label}`;
|
|
15
|
+
const startLabel = `start:${labelName}`;
|
|
16
|
+
const endLabel = `end:${labelName}`;
|
|
17
|
+
const end = () => {
|
|
18
|
+
/* tslint:disable:ban */
|
|
19
|
+
performance.mark(endLabel);
|
|
20
|
+
performance.measure(labelName, startLabel, endLabel);
|
|
21
|
+
performance.clearMarks(startLabel);
|
|
22
|
+
performance.clearMarks(endLabel);
|
|
23
|
+
/* tslint:enable:ban */
|
|
24
|
+
};
|
|
25
|
+
/* tslint:disable:ban */
|
|
26
|
+
performance.mark(startLabel);
|
|
27
|
+
/* tslint:enable:ban */
|
|
28
|
+
const returnValue = method();
|
|
29
|
+
if (returnValue instanceof Promise) {
|
|
30
|
+
return returnValue.finally(() => end());
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
end();
|
|
34
|
+
return returnValue;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
let warningLogged = false;
|
|
38
|
+
/**
|
|
39
|
+
* This enables an internal performance profiler for SSR apps
|
|
40
|
+
*
|
|
41
|
+
* It should not be imported in application code
|
|
42
|
+
*/
|
|
43
|
+
export function enableSsrProfiling() {
|
|
44
|
+
if (!warningLogged &&
|
|
45
|
+
(typeof performance === 'undefined' || !performance.mark || !performance.measure)) {
|
|
46
|
+
warningLogged = true;
|
|
47
|
+
console.warn('Performance API is not supported on this platform');
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
enablePerfLogging = true;
|
|
51
|
+
}
|
|
52
|
+
export function disableSsrProfiling() {
|
|
53
|
+
enablePerfLogging = false;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS1zZXJ2ZXIvc3JjL3Byb2ZpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE1BQU0sdUJBQXVCLEdBQUcsS0FBSyxDQUFDO0FBRXRDLElBQUksaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0FBRTlCLE1BQU0sVUFBVSxpQkFBaUIsQ0FBSSxLQUFhLEVBQUUsTUFBZTtJQUNqRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN2QixPQUFPLE1BQU0sRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxHQUFHLHVCQUF1QixJQUFJLEtBQUssRUFBRSxDQUFDO0lBQ3hELE1BQU0sVUFBVSxHQUFHLFNBQVMsU0FBUyxFQUFFLENBQUM7SUFDeEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxTQUFTLEVBQUUsQ0FBQztJQUVwQyxNQUFNLEdBQUcsR0FBRyxHQUFHLEVBQUU7UUFDZix3QkFBd0I7UUFDeEIsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQixXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDckQsV0FBVyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuQyxXQUFXLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pDLHVCQUF1QjtJQUN6QixDQUFDLENBQUM7SUFFRix3QkFBd0I7SUFDeEIsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM3Qix1QkFBdUI7SUFFdkIsTUFBTSxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDN0IsSUFBSSxXQUFXLFlBQVksT0FBTyxFQUFFLENBQUM7UUFDbkMsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFNLENBQUM7SUFDL0MsQ0FBQztTQUFNLENBQUM7UUFDTixHQUFHLEVBQUUsQ0FBQztRQUNOLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7QUFDSCxDQUFDO0FBRUQsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO0FBQzFCOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCO0lBQ2hDLElBQ0UsQ0FBQyxhQUFhO1FBQ2QsQ0FBQyxPQUFPLFdBQVcsS0FBSyxXQUFXLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUNqRixDQUFDO1FBQ0QsYUFBYSxHQUFHLElBQUksQ0FBQztRQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLG1EQUFtRCxDQUFDLENBQUM7UUFDbEUsT0FBTztJQUNULENBQUM7SUFFRCxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDM0IsQ0FBQztBQUNELE1BQU0sVUFBVSxtQkFBbUI7SUFDakMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0FBQzVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuY29uc3QgUEVSRk9STUFOQ0VfTUFSS19QUkVGSVggPSAn8J+FsO+4jyc7XG5cbmxldCBlbmFibGVQZXJmTG9nZ2luZyA9IGZhbHNlO1xuXG5leHBvcnQgZnVuY3Rpb24gcnVuQW5kTWVhc3VyZVBlcmY8VD4obGFiZWw6IHN0cmluZywgbWV0aG9kOiAoKSA9PiBUKTogVCB7XG4gIGlmICghZW5hYmxlUGVyZkxvZ2dpbmcpIHtcbiAgICByZXR1cm4gbWV0aG9kKCk7XG4gIH1cblxuICBjb25zdCBsYWJlbE5hbWUgPSBgJHtQRVJGT1JNQU5DRV9NQVJLX1BSRUZJWH06JHtsYWJlbH1gO1xuICBjb25zdCBzdGFydExhYmVsID0gYHN0YXJ0OiR7bGFiZWxOYW1lfWA7XG4gIGNvbnN0IGVuZExhYmVsID0gYGVuZDoke2xhYmVsTmFtZX1gO1xuXG4gIGNvbnN0IGVuZCA9ICgpID0+IHtcbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZTpiYW4gKi9cbiAgICBwZXJmb3JtYW5jZS5tYXJrKGVuZExhYmVsKTtcbiAgICBwZXJmb3JtYW5jZS5tZWFzdXJlKGxhYmVsTmFtZSwgc3RhcnRMYWJlbCwgZW5kTGFiZWwpO1xuICAgIHBlcmZvcm1hbmNlLmNsZWFyTWFya3Moc3RhcnRMYWJlbCk7XG4gICAgcGVyZm9ybWFuY2UuY2xlYXJNYXJrcyhlbmRMYWJlbCk7XG4gICAgLyogdHNsaW50OmVuYWJsZTpiYW4gKi9cbiAgfTtcblxuICAvKiB0c2xpbnQ6ZGlzYWJsZTpiYW4gKi9cbiAgcGVyZm9ybWFuY2UubWFyayhzdGFydExhYmVsKTtcbiAgLyogdHNsaW50OmVuYWJsZTpiYW4gKi9cblxuICBjb25zdCByZXR1cm5WYWx1ZSA9IG1ldGhvZCgpO1xuICBpZiAocmV0dXJuVmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgcmV0dXJuIHJldHVyblZhbHVlLmZpbmFsbHkoKCkgPT4gZW5kKCkpIGFzIFQ7XG4gIH0gZWxzZSB7XG4gICAgZW5kKCk7XG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xuICB9XG59XG5cbmxldCB3YXJuaW5nTG9nZ2VkID0gZmFsc2U7XG4vKipcbiAqIFRoaXMgZW5hYmxlcyBhbiBpbnRlcm5hbCBwZXJmb3JtYW5jZSBwcm9maWxlciBmb3IgU1NSIGFwcHNcbiAqXG4gKiBJdCBzaG91bGQgbm90IGJlIGltcG9ydGVkIGluIGFwcGxpY2F0aW9uIGNvZGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuYWJsZVNzclByb2ZpbGluZygpIHtcbiAgaWYgKFxuICAgICF3YXJuaW5nTG9nZ2VkICYmXG4gICAgKHR5cGVvZiBwZXJmb3JtYW5jZSA9PT0gJ3VuZGVmaW5lZCcgfHwgIXBlcmZvcm1hbmNlLm1hcmsgfHwgIXBlcmZvcm1hbmNlLm1lYXN1cmUpXG4gICkge1xuICAgIHdhcm5pbmdMb2dnZWQgPSB0cnVlO1xuICAgIGNvbnNvbGUud2FybignUGVyZm9ybWFuY2UgQVBJIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybScpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGVuYWJsZVBlcmZMb2dnaW5nID0gdHJ1ZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkaXNhYmxlU3NyUHJvZmlsaW5nKCkge1xuICBlbmFibGVQZXJmTG9nZ2luZyA9IGZhbHNlO1xufVxuIl19
|
package/esm2022/src/server.mjs
CHANGED
|
@@ -53,11 +53,11 @@ export const PLATFORM_SERVER_PROVIDERS = [
|
|
|
53
53
|
* @publicApi
|
|
54
54
|
*/
|
|
55
55
|
export class ServerModule {
|
|
56
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
57
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.
|
|
58
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.
|
|
56
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
57
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerModule, imports: [HttpClientModule, NoopAnimationsModule], exports: [BrowserModule] }); }
|
|
58
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerModule, providers: PLATFORM_SERVER_PROVIDERS, imports: [HttpClientModule, NoopAnimationsModule, BrowserModule] }); }
|
|
59
59
|
}
|
|
60
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerModule, decorators: [{
|
|
61
61
|
type: NgModule,
|
|
62
62
|
args: [{
|
|
63
63
|
exports: [BrowserModule],
|
|
@@ -21,10 +21,10 @@ export class ServerEventManagerPlugin extends EventManagerPlugin {
|
|
|
21
21
|
addEventListener(element, eventName, handler) {
|
|
22
22
|
return getDOM().onAndCancel(element, eventName, handler);
|
|
23
23
|
}
|
|
24
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
25
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerEventManagerPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
25
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerEventManagerPlugin }); }
|
|
26
26
|
}
|
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerEventManagerPlugin, decorators: [{
|
|
28
28
|
type: Injectable
|
|
29
29
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
30
30
|
type: Inject,
|
package/esm2022/src/utils.mjs
CHANGED
|
@@ -10,6 +10,7 @@ import { PlatformState } from './platform_state';
|
|
|
10
10
|
import { platformServer } from './server';
|
|
11
11
|
import { BEFORE_APP_SERIALIZED, INITIAL_CONFIG } from './tokens';
|
|
12
12
|
import { createScript } from './transfer_state';
|
|
13
|
+
import { runAndMeasurePerf } from './profiler';
|
|
13
14
|
/**
|
|
14
15
|
* Event dispatch (JSAction) script is inlined into the HTML by the build
|
|
15
16
|
* process to avoid extra blocking request on a page. The script looks like this:
|
|
@@ -208,8 +209,10 @@ export async function renderModule(moduleType, options) {
|
|
|
208
209
|
* @publicApi
|
|
209
210
|
*/
|
|
210
211
|
export async function renderApplication(bootstrap, options) {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
212
|
+
return runAndMeasurePerf('renderApplication', async () => {
|
|
213
|
+
const platformRef = createServerPlatform(options);
|
|
214
|
+
const applicationRef = await bootstrap();
|
|
215
|
+
return _render(platformRef, applicationRef);
|
|
216
|
+
});
|
|
214
217
|
}
|
|
215
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS1zZXJ2ZXIvc3JjL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFDTCxNQUFNLEVBQ04sY0FBYyxFQUNkLFNBQVMsRUFDVCxjQUFjLEVBR2QsU0FBUyxFQUdULHFCQUFxQixJQUFJLG9CQUFvQixFQUM3QywrQkFBK0IsSUFBSSw4QkFBOEIsRUFDakUsNkJBQTZCLElBQUksNEJBQTRCLEVBQzdELFdBQVcsSUFBSSxVQUFVLEdBQzFCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxjQUFjLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDL0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRTlDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyw0QkFBNEIsQ0FBQztBQVFyRTs7O0dBR0c7QUFDSCxTQUFTLG9CQUFvQixDQUFDLE9BQXdCO0lBQ3BELE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7SUFDdkQsT0FBTyxjQUFjLENBQUM7UUFDcEIsRUFBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxFQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFDLEVBQUM7UUFDbkYsY0FBYztLQUNmLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLHVCQUF1QixDQUFDLEdBQWE7SUFDNUMsT0FBTyxHQUFHLENBQUMsY0FBYyxD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QXFCLENBQUMsYUFBcUI7SUFDbEQsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3RCxPQUFPLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDO0FBQy9ELENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsWUFBWSxDQUNoQyxVQUFtQixFQUNuQixPQUF3RjtJQUV4RixNQUFNLEVBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUMsR0FBRyxPQUFPLENBQUM7SUFDbkUsTUFBTSxXQUFXLEdBQUcsb0JBQW9CLENBQUMsRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLGlCQUFpQixFQUFDLENBQUMsQ0FBQztJQUM3RSxNQUFNLFNBQVMsR0FBRyxNQUFNLFdBQVcsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEUsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDOUQsT0FBTyxPQUFPLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLFNBQXdDLEVBQ3hDLE9BQXFGO0lBRXJGLE1BQU0sV0FBVyxHQUFHLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELE1BQU0sY0FBYyxHQUFHLE1BQU0sU0FBUyxFQUFFLENBQUM7SUFDekMsT0FBTyxPQUFPLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtcbiAgQVBQX0lELFxuICBBcHBsaWNhdGlvblJlZixcbiAgQ1NQX05PTkNFLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgUGxhdGZvcm1SZWYsXG4gIFByb3ZpZGVyLFxuICBSZW5kZXJlcjIsXG4gIFN0YXRpY1Byb3ZpZGVyLFxuICBUeXBlLFxuICDJtWFubm90YXRlRm9ySHlkcmF0aW9uIGFzIGFubm90YXRlRm9ySHlkcmF0aW9uLFxuICDJtUlTX0hZRFJBVElPTl9ET01fUkVVU0VfRU5BQkxFRCBhcyBJU19IWURSQVRJT05fRE9NX1JFVVNFX0VOQUJMRUQsXG4gIMm1U1NSX0NPTlRFTlRfSU5URUdSSVRZX01BUktFUiBhcyBTU1JfQ09OVEVOVF9JTlRFR1JJVFlfTUFSS0VSLFxuICDJtXdoZW5TdGFibGUgYXMgd2hlblN0YWJsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7UGxhdGZvcm1TdGF0ZX0gZnJvbSAnLi9wbGF0Zm9ybV9zdGF0ZSc7XG5pbXBvcnQge3BsYXRmb3JtU2VydmVyfSBmcm9tICcuL3NlcnZlcic7XG5pbXBvcnQge0JFRk9SRV9BUFBfU0VSSUFMSVpFRCwgSU5JVElBTF9DT05GSUd9IGZyb20gJy4vdG9rZW5zJztcbmltcG9ydCB7Y3JlYXRlU2NyaXB0fSBmcm9tICcuL3RyYW5zZmVyX3N0YXRlJztcblxuLyoqXG4gKiBFdmVudCBkaXNwYXRjaCAoSlNBY3Rpb24pIHNjcmlwdCBpcyBpbmxpbmVkIGludG8gdGhlIEhUTUwgYnkgdGhlIGJ1aWxkXG4gKiBwcm9jZXNzIHRvIGF2b2lkIGV4dHJhIGJsb2NraW5nIHJlcXVlc3Qgb24gYSBwYWdlLiBUaGUgc2NyaXB0IGxvb2tzIGxpa2UgdGhpczpcbiAqIGBgYFxuICogPHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIgaWQ9XCJuZy1ldmVudC1kaXNwYXRjaC1jb250cmFjdFwiPi4uLjwvc2NyaXB0PlxuICogYGBgXG4gKiBUaGlzIGNvbnN0IHJlcHJlc2VudHMgdGhlIFwiaWRcIiBhdHRyaWJ1dGUgdmFsdWUuXG4gKi9cbmV4cG9ydCBjb25zdCBFVkVOVF9ESVNQQVRDSF9TQ1JJUFRfSUQgPSAnbmctZXZlbnQtZGlzcGF0Y2gtY29udHJhY3QnO1xuXG5pbnRlcmZhY2UgUGxhdGZvcm1PcHRpb25zIHtcbiAgZG9jdW1lbnQ/OiBzdHJpbmcgfCBEb2N1bWVudDtcbiAgdXJsPzogc3RyaW5nO1xuICBwbGF0Zm9ybVByb3ZpZGVycz86IFByb3ZpZGVyW107XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBhIHNlcnZlciBwbGF0Zm9ybSAod2l0aCBvciB3aXRob3V0IEpJVCBjb21waWxlciBzdXBwb3J0XG4gKiBkZXBlbmRpbmcgb24gdGhlIGBuZ0ppdE1vZGVgIGdsb2JhbCBjb25zdCB2YWx1ZSksIHVzaW5nIHByb3ZpZGVkIG9wdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVNlcnZlclBsYXRmb3JtKG9wdGlvbnM6IFBsYXRmb3JtT3B0aW9ucyk6IFBsYXRmb3JtUmVmIHtcbiAgY29uc3QgZXh0cmFQcm92aWRlcnMgPSBvcHRpb25zLnBsYXRmb3JtUHJvdmlkZXJzID8/IFtdO1xuICByZXR1cm4gcGxhdGZvcm1TZXJ2ZXIoW1xuICAgIHtwcm92aWRlOiBJTklUSUFMX0NPTkZJRywgdXNlVmFsdWU6IHtkb2N1bWVudDogb3B0aW9ucy5kb2N1bWVudCwgdXJsOiBvcHRpb25zLnVybH19LFxuICAgIGV4dHJhUHJvdmlkZXJzLFxuICBdKTtcbn1cblxuLyoqXG4gKiBGaW5kcyBhbmQgcmV0dXJucyBpbmxpbmVkIGV2ZW50IGRpc3BhdGNoIHNjcmlwdCBpZiBpdCBleGlzdHMuXG4gKiBTZWUgdGhlIGBFVkVOVF9ESVNQQVRDSF9TQ1JJUFRfSURgIGNvbnN0IGRvY3MgZm9yIGFkZGl0aW9uYWwgaW5mby5cbiAqL1xuZnVuY3Rpb24gZmluZEV2ZW50RGlzcGF0Y2hTY3JpcHQoZG9jOiBEb2N1bWVudCkge1xuICByZXR1cm4gZG9jLmdldEVsZW1lbnRCeUlkKEVWRU5UX0RJU1BBVENIX1NDUklQVF9JRCk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBpbmxpbmVkIGV2ZW50IGRpc3BhdGNoIHNjcmlwdCBpZiBpdCBleGlzdHMuXG4gKiBTZWUgdGhlIGBFVkVOVF9ESVNQQVRDSF9TQ1JJUFRfSURgIGNvbnN0IGRvY3MgZm9yIGFkZGl0aW9uYWwgaW5mby5cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlRXZlbnREaXNwYXRjaFNjcmlwdChkb2M6IERvY3VtZW50KSB7XG4gIGZpbmRFdmVudERpc3BhdGNoU2NyaXB0KGRvYyk/LnJlbW92ZSgpO1xufVxuXG4vKipcbiAqIEFubm90YXRlIG5vZGVzIGZvciBoeWRyYXRpb24gYW5kIHJlbW92ZSBldmVudCBkaXNwYXRjaCBzY3JpcHQgd2hlbiBub3QgbmVlZGVkLlxuICovXG5mdW5jdGlvbiBwcmVwYXJlRm9ySHlkcmF0aW9uKHBsYXRmb3JtU3RhdGU6IFBsYXRmb3JtU3RhdGUsIGFwcGxpY2F0aW9uUmVmOiBBcHBsaWNhdGlvblJlZik6IHZvaWQge1xuICBjb25zdCBlbnZpcm9ubWVudEluamVjdG9yID0gYXBwbGljYXRpb25SZWYuaW5qZWN0b3I7XG4gIGNvbnN0IGRvYyA9IHBsYXRmb3JtU3RhdGUuZ2V0RG9jdW1lbnQoKTtcblxuICBpZiAoIWVudmlyb25tZW50SW5qZWN0b3IuZ2V0KElTX0hZRFJBVElPTl9ET01fUkVVU0VfRU5BQkxFRCwgZmFsc2UpKSB7XG4gICAgLy8gSHlkcmF0aW9uIGlzIGRpYWJsZWQsIHJlbW92ZSBpbmxpbmVkIGV2ZW50IGRpc3BhdGNoIHNjcmlwdC5cbiAgICAvLyAod2hpY2ggd2FzIGluamVjdGVkIGJ5IHRoZSBidWlsZCBwcm9jZXNzKSBmcm9tIHRoZSBIVE1MLlxuICAgIHJlbW92ZUV2ZW50RGlzcGF0Y2hTY3JpcHQoZG9jKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGFwcGVuZFNzckNvbnRlbnRJbnRlZ3JpdHlNYXJrZXIoZG9jKTtcblxuICBjb25zdCBldmVudFR5cGVzVG9SZXBsYXkgPSBhbm5vdGF0ZUZvckh5ZHJhdGlvbihhcHBsaWNhdGlvblJlZiwgZG9jKTtcbiAgaWYgKGV2ZW50VHlwZXNUb1JlcGxheS5yZWd1bGFyLnNpemUgfHwgZXZlbnRUeXBlc1RvUmVwbGF5LmNhcHR1cmUuc2l6ZSkge1xuICAgIGluc2VydEV2ZW50UmVjb3JkU2NyaXB0KFxuICAgICAgZW52aXJvbm1lbnRJbmplY3Rvci5nZXQoQVBQX0lEKSxcbiAgICAgIGRvYyxcbiAgICAgIGV2ZW50VHlwZXNUb1JlcGxheSxcbiAgICAgIGVudmlyb25tZW50SW5qZWN0b3IuZ2V0KENTUF9OT05DRSwgbnVsbCksXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBObyBldmVudHMgdG8gcmVwbGF5LCB3ZSBzaG91bGQgcmVtb3ZlIGlubGluZWQgZXZlbnQgZGlzcGF0Y2ggc2NyaXB0XG4gICAgLy8gKHdoaWNoIHdhcyBpbmplY3RlZCBieSB0aGUgYnVpbGQgcHJvY2VzcykgZnJvbSB0aGUgSFRNTC5cbiAgICByZW1vdmVFdmVudERpc3BhdGNoU2NyaXB0KGRvYyk7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbWFya2VyIGNvbW1lbnQgbm9kZSBhbmQgYXBwZW5kIGl0IGludG8gdGhlIGA8Ym9keT5gLlxuICogU29tZSBDRE5zIGhhdmUgbWVjaGFuaXNtcyB0byByZW1vdmUgYWxsIGNvbW1lbnQgbm9kZSBmcm9tIEhUTUwuXG4gKiBUaGlzIGJlaGF2aW91ciBicmVha3MgaHlkcmF0aW9uLCBzbyB3ZSdsbCBkZXRlY3Qgb24gdGhlIGNsaWVudCBzaWRlIGlmIHRoaXNcbiAqIG1hcmtlciBjb21tZW50IGlzIHN0aWxsIGF2YWlsYWJsZSBvciBlbHNlIHRocm93IGFuIGVycm9yXG4gKi9cbmZ1bmN0aW9uIGFwcGVuZFNzckNvbnRlbnRJbnRlZ3JpdHlNYXJrZXIoZG9jOiBEb2N1bWVudCkge1xuICAvLyBBZGRpbmcgYSBuZyBoeWRyYXRpb24gbWFya2VyIGNvbW1lbnRcbiAgY29uc3QgY29tbWVudCA9IGRvYy5jcmVhdGVDb21tZW50KFNTUl9DT05URU5UX0lOVEVHUklUWV9NQVJLRVIpO1xuICBkb2MuYm9keS5maXJzdENoaWxkXG4gICAgPyBkb2MuYm9keS5pbnNlcnRCZWZvcmUoY29tbWVudCwgZG9jLmJvZHkuZmlyc3RDaGlsZClcbiAgICA6IGRvYy5ib2R5LmFwcGVuZChjb21tZW50KTtcbn1cblxuLyoqXG4gKiBBZGRzIHRoZSBgbmctc2VydmVyLWNvbnRleHRgIGF0dHJpYnV0ZSB0byBob3N0IGVsZW1lbnRzIG9mIGFsbCBib290c3RyYXBwZWQgY29tcG9uZW50c1xuICogd2l0aGluIGEgZ2l2ZW4gYXBwbGljYXRpb24uXG4gKi9cbmZ1bmN0aW9uIGFwcGVuZFNlcnZlckNvbnRleHRJbmZvKGFwcGxpY2F0aW9uUmVmOiBBcHBsaWNhdGlvblJlZikge1xuICBjb25zdCBpbmplY3RvciA9IGFwcGxpY2F0aW9uUmVmLmluamVjdG9yO1xuICBsZXQgc2VydmVyQ29udGV4dCA9IHNhbml0aXplU2VydmVyQ29udGV4dChpbmplY3Rvci5nZXQoU0VSVkVSX0NPTlRFWFQsIERFRkFVTFRfU0VSVkVSX0NPTlRFWFQpKTtcbiAgYXBwbGljYXRpb25SZWYuY29tcG9uZW50cy5mb3JFYWNoKChjb21wb25lbnRSZWYpID0+IHtcbiAgICBjb25zdCByZW5kZXJlciA9IGNvbXBvbmVudFJlZi5pbmplY3Rvci5nZXQoUmVuZGVyZXIyKTtcbiAgICBjb25zdCBlbGVtZW50ID0gY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIHJlbmRlcmVyLnNldEF0dHJpYnV0ZShlbGVtZW50LCAnbmctc2VydmVyLWNvbnRleHQnLCBzZXJ2ZXJDb250ZXh0KTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRFdmVudFJlY29yZFNjcmlwdChcbiAgYXBwSWQ6IHN0cmluZyxcbiAgZG9jOiBEb2N1bWVudCxcbiAgZXZlbnRUeXBlc1RvUmVwbGF5OiB7cmVndWxhcjogU2V0PHN0cmluZz47IGNhcHR1cmU6IFNldDxzdHJpbmc+fSxcbiAgbm9uY2U6IHN0cmluZyB8IG51bGwsXG4pOiB2b2lkIHtcbiAgY29uc3Qge3JlZ3VsYXIsIGNhcHR1cmV9ID0gZXZlbnRUeXBlc1RvUmVwbGF5O1xuICBjb25zdCBldmVudERpc3BhdGNoU2NyaXB0ID0gZmluZEV2ZW50RGlzcGF0Y2hTY3JpcHQoZG9jKTtcbiAgaWYgKGV2ZW50RGlzcGF0Y2hTY3JpcHQpIHtcbiAgICAvLyBUaGlzIGlzIGRlZmluZWQgaW4gcGFja2FnZXMvY29yZS9wcmltaXRpdmVzL2V2ZW50LWRpc3BhdGNoL2NvbnRyYWN0X2JpbmFyeS50c1xuICAgIGNvbnN0IHJlcGxheVNjcmlwdENvbnRlbnRzID0gYHdpbmRvdy5fX2pzYWN0aW9uX2Jvb3RzdHJhcCgnbmdDb250cmFjdHMnLCBkb2N1bWVudC5ib2R5LCAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgYXBwSWQsXG4gICAgKX0sICR7SlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbShyZWd1bGFyKSl9JHtjYXB0dXJlLnNpemUgPyAnLCcgKyBKU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKGNhcHR1cmUpKSA6ICcnfSk7YDtcblxuICAgIGNvbnN0IHJlcGxheVNjcmlwdCA9IGNyZWF0ZVNjcmlwdChkb2MsIHJlcGxheVNjcmlwdENvbnRlbnRzLCBub25jZSk7XG5cbiAgICAvLyBJbnNlcnQgcmVwbGF5IHNjcmlwdCByaWdodCBhZnRlciBpbmxpbmVkIGV2ZW50IGRpc3BhdGNoIHNjcmlwdCwgc2luY2UgaXRcbiAgICAvLyByZWxpZXMgb24gYF9fanNhY3Rpb25fYm9vdHN0cmFwYCB0byBiZSBkZWZpbmVkIGluIHRoZSBnbG9iYWwgc2NvcGUuXG4gICAgZXZlbnREaXNwYXRjaFNjcmlwdC5hZnRlcihyZXBsYXlTY3JpcHQpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIF9yZW5kZXIocGxhdGZvcm1SZWY6IFBsYXRmb3JtUmVmLCBhcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYpOiBQcm9taXNlPHN0cmluZz4ge1xuICAvLyBCbG9jayB1bnRpbCBhcHBsaWNhdGlvbiBpcyBzdGFibGUuXG4gIGF3YWl0IHdoZW5TdGFibGUoYXBwbGljYXRpb25SZWYpO1xuXG4gIGNvbnN0IHBsYXRmb3JtU3RhdGUgPSBwbGF0Zm9ybVJlZi5pbmplY3Rvci5nZXQoUGxhdGZvcm1TdGF0ZSk7XG4gIHByZXBhcmVGb3JIeWRyYXRpb24ocGxhdGZvcm1TdGF0ZSwgYXBwbGljYXRpb25SZWYpO1xuXG4gIC8vIFJ1biBhbnkgQkVGT1JFX0FQUF9TRVJJQUxJWkVEIGNhbGxiYWNrcyBqdXN0IGJlZm9yZSByZW5kZXJpbmcgdG8gc3RyaW5nLlxuICBjb25zdCBlbnZpcm9ubWVudEluamVjdG9yID0gYXBwbGljYXRpb25SZWYuaW5qZWN0b3I7XG4gIGNvbnN0IGNhbGxiYWNrcyA9IGVudmlyb25tZW50SW5qZWN0b3IuZ2V0KEJFRk9SRV9BUFBfU0VSSUFMSVpFRCwgbnVsbCk7XG4gIGlmIChjYWxsYmFja3MpIHtcbiAgICBjb25zdCBhc3luY0NhbGxiYWNrczogUHJvbWlzZTx2b2lkPltdID0gW107XG4gICAgZm9yIChjb25zdCBjYWxsYmFjayBvZiBjYWxsYmFja3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNhbGxiYWNrUmVzdWx0ID0gY2FsbGJhY2soKTtcbiAgICAgICAgaWYgKGNhbGxiYWNrUmVzdWx0KSB7XG4gICAgICAgICAgYXN5bmNDYWxsYmFja3MucHVzaChjYWxsYmFja1Jlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gSWdub3JlIGV4Y2VwdGlvbnMuXG4gICAgICAgIGNvbnNvbGUud2FybignSWdub3JpbmcgQkVGT1JFX0FQUF9TRVJJQUxJWkVEIEV4Y2VwdGlvbjogJywgZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFzeW5jQ2FsbGJhY2tzLmxlbmd0aCkge1xuICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKGFzeW5jQ2FsbGJhY2tzKSkge1xuICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ3JlamVjdGVkJykge1xuICAgICAgICAgIGNvbnNvbGUud2FybignSWdub3JpbmcgQkVGT1JFX0FQUF9TRVJJQUxJWkVEIEV4Y2VwdGlvbjogJywgcmVzdWx0LnJlYXNvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhcHBlbmRTZXJ2ZXJDb250ZXh0SW5mbyhhcHBsaWNhdGlvblJlZik7XG4gIGNvbnN0IG91dHB1dCA9IHBsYXRmb3JtU3RhdGUucmVuZGVyVG9TdHJpbmcoKTtcblxuICAvLyBEZXN0cm95IHRoZSBhcHBsaWNhdGlvbiBpbiBhIG1hY3JvdGFzaywgdGhpcyBhbGxvd3MgcGVuZGluZyBwcm9taXNlcyB0byBiZSBzZXR0bGVkIGFuZCBlcnJvcnNcbiAgLy8gdG8gYmUgc3VyZmFjZWQgdG8gdGhlIHVzZXJzLlxuICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgcGxhdGZvcm1SZWYuZGVzdHJveSgpO1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH0sIDApO1xuICB9KTtcblxuICByZXR1cm4gb3V0cHV0O1xufVxuXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgdmFsdWUgdGhhdCBzaG91bGQgYmUgdXNlZCBpZiBubyBzZXJ2ZXIgY29udGV4dCB2YWx1ZSBoYXMgYmVlbiBwcm92aWRlZC5cbiAqL1xuY29uc3QgREVGQVVMVF9TRVJWRVJfQ09OVEVYVCA9ICdvdGhlcic7XG5cbi8qKlxuICogQW4gaW50ZXJuYWwgdG9rZW4gdGhhdCBhbGxvd3MgcHJvdmlkaW5nIGV4dHJhIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzZXJ2ZXIgY29udGV4dFxuICogKGUuZy4gd2hldGhlciBTU1Igb3IgU1NHIHdhcyB1c2VkKS4gVGhlIHZhbHVlIGlzIGEgc3RyaW5nIGFuZCBjaGFyYWN0ZXJzIG90aGVyXG4gKiB0aGFuIFthLXpBLVowLTlcXC1dIGFyZSByZW1vdmVkLiBTZWUgdGhlIGRlZmF1bHQgdmFsdWUgaW4gYERFRkFVTFRfU0VSVkVSX0NPTlRFWFRgIGNvbnN0LlxuICovXG5leHBvcnQgY29uc3QgU0VSVkVSX0NPTlRFWFQgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignU0VSVkVSX0NPTlRFWFQnKTtcblxuLyoqXG4gKiBTYW5pdGl6ZXMgcHJvdmlkZWQgc2VydmVyIGNvbnRleHQ6XG4gKiAtIHJlbW92ZXMgYWxsIGNoYXJhY3RlcnMgb3RoZXIgdGhhbiBhLXosIEEtWiwgMC05IGFuZCBgLWBcbiAqIC0gcmV0dXJucyBgb3RoZXJgIGlmIG5vdGhpbmcgaXMgcHJvdmlkZWQgb3IgdGhlIHN0cmluZyBpcyBlbXB0eSBhZnRlciBzYW5pdGl6YXRpb25cbiAqL1xuZnVuY3Rpb24gc2FuaXRpemVTZXJ2ZXJDb250ZXh0KHNlcnZlckNvbnRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGNvbnRleHQgPSBzZXJ2ZXJDb250ZXh0LnJlcGxhY2UoL1teYS16QS1aMC05XFwtXS9nLCAnJyk7XG4gIHJldHVybiBjb250ZXh0Lmxlbmd0aCA+IDAgPyBjb250ZXh0IDogREVGQVVMVF9TRVJWRVJfQ09OVEVYVDtcbn1cblxuLyoqXG4gKiBCb290c3RyYXBzIGFuIGFwcGxpY2F0aW9uIHVzaW5nIHByb3ZpZGVkIE5nTW9kdWxlIGFuZCBzZXJpYWxpemVzIHRoZSBwYWdlIGNvbnRlbnQgdG8gc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBtb2R1bGVUeXBlIEEgcmVmZXJlbmNlIHRvIGFuIE5nTW9kdWxlIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIGJvb3RzdHJhcC5cbiAqIEBwYXJhbSBvcHRpb25zIEFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIHJlbmRlciBvcGVyYXRpb246XG4gKiAgLSBgZG9jdW1lbnRgIC0gdGhlIGRvY3VtZW50IG9mIHRoZSBwYWdlIHRvIHJlbmRlciwgZWl0aGVyIGFzIGFuIEhUTUwgc3RyaW5nIG9yXG4gKiAgICAgICAgICAgICAgICAgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGBkb2N1bWVudGAgaW5zdGFuY2UuXG4gKiAgLSBgdXJsYCAtIHRoZSBVUkwgZm9yIHRoZSBjdXJyZW50IHJlbmRlciByZXF1ZXN0LlxuICogIC0gYGV4dHJhUHJvdmlkZXJzYCAtIHNldCBvZiBwbGF0Zm9ybSBsZXZlbCBwcm92aWRlcnMgZm9yIHRoZSBjdXJyZW50IHJlbmRlciByZXF1ZXN0LlxuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlck1vZHVsZTxUPihcbiAgbW9kdWxlVHlwZTogVHlwZTxUPixcbiAgb3B0aW9uczoge2RvY3VtZW50Pzogc3RyaW5nIHwgRG9jdW1lbnQ7IHVybD86IHN0cmluZzsgZXh0cmFQcm92aWRlcnM/OiBTdGF0aWNQcm92aWRlcltdfSxcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHtkb2N1bWVudCwgdXJsLCBleHRyYVByb3ZpZGVyczogcGxhdGZvcm1Qcm92aWRlcnN9ID0gb3B0aW9ucztcbiAgY29uc3QgcGxhdGZvcm1SZWYgPSBjcmVhdGVTZXJ2ZXJQbGF0Zm9ybSh7ZG9jdW1lbnQsIHVybCwgcGxhdGZvcm1Qcm92aWRlcnN9KTtcbiAgY29uc3QgbW9kdWxlUmVmID0gYXdhaXQgcGxhdGZvcm1SZWYuYm9vdHN0cmFwTW9kdWxlKG1vZHVsZVR5cGUpO1xuICBjb25zdCBhcHBsaWNhdGlvblJlZiA9IG1vZHVsZVJlZi5pbmplY3Rvci5nZXQoQXBwbGljYXRpb25SZWYpO1xuICByZXR1cm4gX3JlbmRlcihwbGF0Zm9ybVJlZiwgYXBwbGljYXRpb25SZWYpO1xufVxuXG4vKipcbiAqIEJvb3RzdHJhcHMgYW4gaW5zdGFuY2Ugb2YgYW4gQW5ndWxhciBhcHBsaWNhdGlvbiBhbmQgcmVuZGVycyBpdCB0byBhIHN0cmluZy5cblxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgYm9vdHN0cmFwID0gKCkgPT4gYm9vdHN0cmFwQXBwbGljYXRpb24oUm9vdENvbXBvbmVudCwgYXBwQ29uZmlnKTtcbiAqIGNvbnN0IG91dHB1dDogc3RyaW5nID0gYXdhaXQgcmVuZGVyQXBwbGljYXRpb24oYm9vdHN0cmFwKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBib290c3RyYXAgQSBtZXRob2QgdGhhdCB3aGVuIGludm9rZWQgcmV0dXJucyBhIHByb21pc2UgdGhhdCByZXR1cm5zIGFuIGBBcHBsaWNhdGlvblJlZmBcbiAqICAgICBpbnN0YW5jZSBvbmNlIHJlc29sdmVkLlxuICogQHBhcmFtIG9wdGlvbnMgQWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgcmVuZGVyIG9wZXJhdGlvbjpcbiAqICAtIGBkb2N1bWVudGAgLSB0aGUgZG9jdW1lbnQgb2YgdGhlIHBhZ2UgdG8gcmVuZGVyLCBlaXRoZXIgYXMgYW4gSFRNTCBzdHJpbmcgb3JcbiAqICAgICAgICAgICAgICAgICBhcyBhIHJlZmVyZW5jZSB0byB0aGUgYGRvY3VtZW50YCBpbnN0YW5jZS5cbiAqICAtIGB1cmxgIC0gdGhlIFVSTCBmb3IgdGhlIGN1cnJlbnQgcmVuZGVyIHJlcXVlc3QuXG4gKiAgLSBgcGxhdGZvcm1Qcm92aWRlcnNgIC0gdGhlIHBsYXRmb3JtIGxldmVsIHByb3ZpZGVycyBmb3IgdGhlIGN1cnJlbnQgcmVuZGVyIHJlcXVlc3QuXG4gKlxuICogQHJldHVybnMgQSBQcm9taXNlLCB0aGF0IHJldHVybnMgc2VyaWFsaXplZCAodG8gYSBzdHJpbmcpIHJlbmRlcmVkIHBhZ2UsIG9uY2UgcmVzb2x2ZWQuXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyQXBwbGljYXRpb248VD4oXG4gIGJvb3RzdHJhcDogKCkgPT4gUHJvbWlzZTxBcHBsaWNhdGlvblJlZj4sXG4gIG9wdGlvbnM6IHtkb2N1bWVudD86IHN0cmluZyB8IERvY3VtZW50OyB1cmw/OiBzdHJpbmc7IHBsYXRmb3JtUHJvdmlkZXJzPzogUHJvdmlkZXJbXX0sXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBwbGF0Zm9ybVJlZiA9IGNyZWF0ZVNlcnZlclBsYXRmb3JtKG9wdGlvbnMpO1xuICBjb25zdCBhcHBsaWNhdGlvblJlZiA9IGF3YWl0IGJvb3RzdHJhcCgpO1xuICByZXR1cm4gX3JlbmRlcihwbGF0Zm9ybVJlZiwgYXBwbGljYXRpb25SZWYpO1xufVxuIl19
|
|
218
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS1zZXJ2ZXIvc3JjL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFDTCxNQUFNLEVBQ04sY0FBYyxFQUNkLFNBQVMsRUFDVCxjQUFjLEVBR2QsU0FBUyxFQUdULHFCQUFxQixJQUFJLG9CQUFvQixFQUM3QywrQkFBK0IsSUFBSSw4QkFBOEIsRUFDakUsNkJBQTZCLElBQUksNEJBQTRCLEVBQzdELFdBQVcsSUFBSSxVQUFVLEdBQzFCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxjQUFjLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDL0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUU3Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsNEJBQTRCLENBQUM7QUFRckU7OztHQUdHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FBQyxPQUF3QjtJQUNwRCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDO0lBQ3ZELE9BQU8sY0FBYyxDQUFDO1FBQ3BCLEVBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsRUFBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBQyxFQUFDO1FBQ25GLGNBQWM7S0FDZixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyx1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QztJQUM5QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtcbiAgQVBQX0lELFxuICBBcHBsaWNhdGlvblJlZixcbiAgQ1NQX05PTkNFLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgUGxhdGZvcm1SZWYsXG4gIFByb3ZpZGVyLFxuICBSZW5kZXJlcjIsXG4gIFN0YXRpY1Byb3ZpZGVyLFxuICBUeXBlLFxuICDJtWFubm90YXRlRm9ySHlkcmF0aW9uIGFzIGFubm90YXRlRm9ySHlkcmF0aW9uLFxuICDJtUlTX0hZRFJBVElPTl9ET01fUkVVU0VfRU5BQkxFRCBhcyBJU19IWURSQVRJT05fRE9NX1JFVVNFX0VOQUJMRUQsXG4gIMm1U1NSX0NPTlRFTlRfSU5URUdSSVRZX01BUktFUiBhcyBTU1JfQ09OVEVOVF9JTlRFR1JJVFlfTUFSS0VSLFxuICDJtXdoZW5TdGFibGUgYXMgd2hlblN0YWJsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7UGxhdGZvcm1TdGF0ZX0gZnJvbSAnLi9wbGF0Zm9ybV9zdGF0ZSc7XG5pbXBvcnQge3BsYXRmb3JtU2VydmVyfSBmcm9tICcuL3NlcnZlcic7XG5pbXBvcnQge0JFRk9SRV9BUFBfU0VSSUFMSVpFRCwgSU5JVElBTF9DT05GSUd9IGZyb20gJy4vdG9rZW5zJztcbmltcG9ydCB7Y3JlYXRlU2NyaXB0fSBmcm9tICcuL3RyYW5zZmVyX3N0YXRlJztcbmltcG9ydCB7cnVuQW5kTWVhc3VyZVBlcmZ9IGZyb20gJy4vcHJvZmlsZXInO1xuXG4vKipcbiAqIEV2ZW50IGRpc3BhdGNoIChKU0FjdGlvbikgc2NyaXB0IGlzIGlubGluZWQgaW50byB0aGUgSFRNTCBieSB0aGUgYnVpbGRcbiAqIHByb2Nlc3MgdG8gYXZvaWQgZXh0cmEgYmxvY2tpbmcgcmVxdWVzdCBvbiBhIHBhZ2UuIFRoZSBzY3JpcHQgbG9va3MgbGlrZSB0aGlzOlxuICogYGBgXG4gKiA8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiBpZD1cIm5nLWV2ZW50LWRpc3BhdGNoLWNvbnRyYWN0XCI+Li4uPC9zY3JpcHQ+XG4gKiBgYGBcbiAqIFRoaXMgY29uc3QgcmVwcmVzZW50cyB0aGUgXCJpZFwiIGF0dHJpYnV0ZSB2YWx1ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEVWRU5UX0RJU1BBVENIX1NDUklQVF9JRCA9ICduZy1ldmVudC1kaXNwYXRjaC1jb250cmFjdCc7XG5cbmludGVyZmFjZSBQbGF0Zm9ybU9wdGlvbnMge1xuICBkb2N1bWVudD86IHN0cmluZyB8IERvY3VtZW50O1xuICB1cmw/OiBzdHJpbmc7XG4gIHBsYXRmb3JtUHJvdmlkZXJzPzogUHJvdmlkZXJbXTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIGEgc2VydmVyIHBsYXRmb3JtICh3aXRoIG9yIHdpdGhvdXQgSklUIGNvbXBpbGVyIHN1cHBvcnRcbiAqIGRlcGVuZGluZyBvbiB0aGUgYG5nSml0TW9kZWAgZ2xvYmFsIGNvbnN0IHZhbHVlKSwgdXNpbmcgcHJvdmlkZWQgb3B0aW9ucy5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlU2VydmVyUGxhdGZvcm0ob3B0aW9uczogUGxhdGZvcm1PcHRpb25zKTogUGxhdGZvcm1SZWYge1xuICBjb25zdCBleHRyYVByb3ZpZGVycyA9IG9wdGlvbnMucGxhdGZvcm1Qcm92aWRlcnMgPz8gW107XG4gIHJldHVybiBwbGF0Zm9ybVNlcnZlcihbXG4gICAge3Byb3ZpZGU6IElOSVRJQUxfQ09ORklHLCB1c2VWYWx1ZToge2RvY3VtZW50OiBvcHRpb25zLmRvY3VtZW50LCB1cmw6IG9wdGlvbnMudXJsfX0sXG4gICAgZXh0cmFQcm92aWRlcnMsXG4gIF0pO1xufVxuXG4vKipcbiAqIEZpbmRzIGFuZCByZXR1cm5zIGlubGluZWQgZXZlbnQgZGlzcGF0Y2ggc2NyaXB0IGlmIGl0IGV4aXN0cy5cbiAqIFNlZSB0aGUgYEVWRU5UX0RJU1BBVENIX1NDUklQVF9JRGAgY29uc3QgZG9jcyBmb3IgYWRkaXRpb25hbCBpbmZvLlxuICovXG5mdW5jdGlvbiBmaW5kRXZlbnREaXNwYXRjaFNjcmlwdChkb2M6IERvY3VtZW50KSB7XG4gIHJldHVybiBkb2MuZ2V0RWxlbWVudEJ5SWQoRVZFTlRfRElTUEFUQ0hfU0NSSVBUX0lEKTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGlubGluZWQgZXZlbnQgZGlzcGF0Y2ggc2NyaXB0IGlmIGl0IGV4aXN0cy5cbiAqIFNlZSB0aGUgYEVWRU5UX0RJU1BBVENIX1NDUklQVF9JRGAgY29uc3QgZG9jcyBmb3IgYWRkaXRpb25hbCBpbmZvLlxuICovXG5mdW5jdGlvbiByZW1vdmVFdmVudERpc3BhdGNoU2NyaXB0KGRvYzogRG9jdW1lbnQpIHtcbiAgZmluZEV2ZW50RGlzcGF0Y2hTY3JpcHQoZG9jKT8ucmVtb3ZlKCk7XG59XG5cbi8qKlxuICogQW5ub3RhdGUgbm9kZXMgZm9yIGh5ZHJhdGlvbiBhbmQgcmVtb3ZlIGV2ZW50IGRpc3BhdGNoIHNjcmlwdCB3aGVuIG5vdCBuZWVkZWQuXG4gKi9cbmZ1bmN0aW9uIHByZXBhcmVGb3JIeWRyYXRpb24ocGxhdGZvcm1TdGF0ZTogUGxhdGZvcm1TdGF0ZSwgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmKTogdm9pZCB7XG4gIGNvbnN0IGVudmlyb25tZW50SW5qZWN0b3IgPSBhcHBsaWNhdGlvblJlZi5pbmplY3RvcjtcbiAgY29uc3QgZG9jID0gcGxhdGZvcm1TdGF0ZS5nZXREb2N1bWVudCgpO1xuXG4gIGlmICghZW52aXJvbm1lbnRJbmplY3Rvci5nZXQoSVNfSFlEUkFUSU9OX0RPTV9SRVVTRV9FTkFCTEVELCBmYWxzZSkpIHtcbiAgICAvLyBIeWRyYXRpb24gaXMgZGlhYmxlZCwgcmVtb3ZlIGlubGluZWQgZXZlbnQgZGlzcGF0Y2ggc2NyaXB0LlxuICAgIC8vICh3aGljaCB3YXMgaW5qZWN0ZWQgYnkgdGhlIGJ1aWxkIHByb2Nlc3MpIGZyb20gdGhlIEhUTUwuXG4gICAgcmVtb3ZlRXZlbnREaXNwYXRjaFNjcmlwdChkb2MpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgYXBwZW5kU3NyQ29udGVudEludGVncml0eU1hcmtlcihkb2MpO1xuXG4gIGNvbnN0IGV2ZW50VHlwZXNUb1JlcGxheSA9IGFubm90YXRlRm9ySHlkcmF0aW9uKGFwcGxpY2F0aW9uUmVmLCBkb2MpO1xuICBpZiAoZXZlbnRUeXBlc1RvUmVwbGF5LnJlZ3VsYXIuc2l6ZSB8fCBldmVudFR5cGVzVG9SZXBsYXkuY2FwdHVyZS5zaXplKSB7XG4gICAgaW5zZXJ0RXZlbnRSZWNvcmRTY3JpcHQoXG4gICAgICBlbnZpcm9ubWVudEluamVjdG9yLmdldChBUFBfSUQpLFxuICAgICAgZG9jLFxuICAgICAgZXZlbnRUeXBlc1RvUmVwbGF5LFxuICAgICAgZW52aXJvbm1lbnRJbmplY3Rvci5nZXQoQ1NQX05PTkNFLCBudWxsKSxcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIC8vIE5vIGV2ZW50cyB0byByZXBsYXksIHdlIHNob3VsZCByZW1vdmUgaW5saW5lZCBldmVudCBkaXNwYXRjaCBzY3JpcHRcbiAgICAvLyAod2hpY2ggd2FzIGluamVjdGVkIGJ5IHRoZSBidWlsZCBwcm9jZXNzKSBmcm9tIHRoZSBIVE1MLlxuICAgIHJlbW92ZUV2ZW50RGlzcGF0Y2hTY3JpcHQoZG9jKTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXJrZXIgY29tbWVudCBub2RlIGFuZCBhcHBlbmQgaXQgaW50byB0aGUgYDxib2R5PmAuXG4gKiBTb21lIENETnMgaGF2ZSBtZWNoYW5pc21zIHRvIHJlbW92ZSBhbGwgY29tbWVudCBub2RlIGZyb20gSFRNTC5cbiAqIFRoaXMgYmVoYXZpb3VyIGJyZWFrcyBoeWRyYXRpb24sIHNvIHdlJ2xsIGRldGVjdCBvbiB0aGUgY2xpZW50IHNpZGUgaWYgdGhpc1xuICogbWFya2VyIGNvbW1lbnQgaXMgc3RpbGwgYXZhaWxhYmxlIG9yIGVsc2UgdGhyb3cgYW4gZXJyb3JcbiAqL1xuZnVuY3Rpb24gYXBwZW5kU3NyQ29udGVudEludGVncml0eU1hcmtlcihkb2M6IERvY3VtZW50KSB7XG4gIC8vIEFkZGluZyBhIG5nIGh5ZHJhdGlvbiBtYXJrZXIgY29tbWVudFxuICBjb25zdCBjb21tZW50ID0gZG9jLmNyZWF0ZUNvbW1lbnQoU1NSX0NPTlRFTlRfSU5URUdSSVRZX01BUktFUik7XG4gIGRvYy5ib2R5LmZpcnN0Q2hpbGRcbiAgICA/IGRvYy5ib2R5Lmluc2VydEJlZm9yZShjb21tZW50LCBkb2MuYm9keS5maXJzdENoaWxkKVxuICAgIDogZG9jLmJvZHkuYXBwZW5kKGNvbW1lbnQpO1xufVxuXG4vKipcbiAqIEFkZHMgdGhlIGBuZy1zZXJ2ZXItY29udGV4dGAgYXR0cmlidXRlIHRvIGhvc3QgZWxlbWVudHMgb2YgYWxsIGJvb3RzdHJhcHBlZCBjb21wb25lbnRzXG4gKiB3aXRoaW4gYSBnaXZlbiBhcHBsaWNhdGlvbi5cbiAqL1xuZnVuY3Rpb24gYXBwZW5kU2VydmVyQ29udGV4dEluZm8oYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmKSB7XG4gIGNvbnN0IGluamVjdG9yID0gYXBwbGljYXRpb25SZWYuaW5qZWN0b3I7XG4gIGxldCBzZXJ2ZXJDb250ZXh0ID0gc2FuaXRpemVTZXJ2ZXJDb250ZXh0KGluamVjdG9yLmdldChTRVJWRVJfQ09OVEVYVCwgREVGQVVMVF9TRVJWRVJfQ09OVEVYVCkpO1xuICBhcHBsaWNhdGlvblJlZi5jb21wb25lbnRzLmZvckVhY2goKGNvbXBvbmVudFJlZikgPT4ge1xuICAgIGNvbnN0IHJlbmRlcmVyID0gY29tcG9uZW50UmVmLmluamVjdG9yLmdldChSZW5kZXJlcjIpO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBjb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgcmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsZW1lbnQsICduZy1zZXJ2ZXItY29udGV4dCcsIHNlcnZlckNvbnRleHQpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGluc2VydEV2ZW50UmVjb3JkU2NyaXB0KFxuICBhcHBJZDogc3RyaW5nLFxuICBkb2M6IERvY3VtZW50LFxuICBldmVudFR5cGVzVG9SZXBsYXk6IHtyZWd1bGFyOiBTZXQ8c3RyaW5nPjsgY2FwdHVyZTogU2V0PHN0cmluZz59LFxuICBub25jZTogc3RyaW5nIHwgbnVsbCxcbik6IHZvaWQge1xuICBjb25zdCB7cmVndWxhciwgY2FwdHVyZX0gPSBldmVudFR5cGVzVG9SZXBsYXk7XG4gIGNvbnN0IGV2ZW50RGlzcGF0Y2hTY3JpcHQgPSBmaW5kRXZlbnREaXNwYXRjaFNjcmlwdChkb2MpO1xuICBpZiAoZXZlbnREaXNwYXRjaFNjcmlwdCkge1xuICAgIC8vIFRoaXMgaXMgZGVmaW5lZCBpbiBwYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZXMvZXZlbnQtZGlzcGF0Y2gvY29udHJhY3RfYmluYXJ5LnRzXG4gICAgY29uc3QgcmVwbGF5U2NyaXB0Q29udGVudHMgPSBgd2luZG93Ll9fanNhY3Rpb25fYm9vdHN0cmFwKCduZ0NvbnRyYWN0cycsIGRvY3VtZW50LmJvZHksICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICBhcHBJZCxcbiAgICApfSwgJHtKU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKHJlZ3VsYXIpKX0ke1xuICAgICAgY2FwdHVyZS5zaXplID8gJywnICsgSlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbShjYXB0dXJlKSkgOiAnJ1xuICAgIH0pO2A7XG5cbiAgICBjb25zdCByZXBsYXlTY3JpcHQgPSBjcmVhdGVTY3JpcHQoZG9jLCByZXBsYXlTY3JpcHRDb250ZW50cywgbm9uY2UpO1xuXG4gICAgLy8gSW5zZXJ0IHJlcGxheSBzY3JpcHQgcmlnaHQgYWZ0ZXIgaW5saW5lZCBldmVudCBkaXNwYXRjaCBzY3JpcHQsIHNpbmNlIGl0XG4gICAgLy8gcmVsaWVzIG9uIGBfX2pzYWN0aW9uX2Jvb3RzdHJhcGAgdG8gYmUgZGVmaW5lZCBpbiB0aGUgZ2xvYmFsIHNjb3BlLlxuICAgIGV2ZW50RGlzcGF0Y2hTY3JpcHQuYWZ0ZXIocmVwbGF5U2NyaXB0KTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBfcmVuZGVyKHBsYXRmb3JtUmVmOiBQbGF0Zm9ybVJlZiwgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgLy8gQmxvY2sgdW50aWwgYXBwbGljYXRpb24gaXMgc3RhYmxlLlxuICBhd2FpdCB3aGVuU3RhYmxlKGFwcGxpY2F0aW9uUmVmKTtcblxuICBjb25zdCBwbGF0Zm9ybVN0YXRlID0gcGxhdGZvcm1SZWYuaW5qZWN0b3IuZ2V0KFBsYXRmb3JtU3RhdGUpO1xuICBwcmVwYXJlRm9ySHlkcmF0aW9uKHBsYXRmb3JtU3RhdGUsIGFwcGxpY2F0aW9uUmVmKTtcblxuICAvLyBSdW4gYW55IEJFRk9SRV9BUFBfU0VSSUFMSVpFRCBjYWxsYmFja3MganVzdCBiZWZvcmUgcmVuZGVyaW5nIHRvIHN0cmluZy5cbiAgY29uc3QgZW52aXJvbm1lbnRJbmplY3RvciA9IGFwcGxpY2F0aW9uUmVmLmluamVjdG9yO1xuICBjb25zdCBjYWxsYmFja3MgPSBlbnZpcm9ubWVudEluamVjdG9yLmdldChCRUZPUkVfQVBQX1NFUklBTElaRUQsIG51bGwpO1xuICBpZiAoY2FsbGJhY2tzKSB7XG4gICAgY29uc3QgYXN5bmNDYWxsYmFja3M6IFByb21pc2U8dm9pZD5bXSA9IFtdO1xuICAgIGZvciAoY29uc3QgY2FsbGJhY2sgb2YgY2FsbGJhY2tzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjYWxsYmFja1Jlc3VsdCA9IGNhbGxiYWNrKCk7XG4gICAgICAgIGlmIChjYWxsYmFja1Jlc3VsdCkge1xuICAgICAgICAgIGFzeW5jQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2tSZXN1bHQpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIElnbm9yZSBleGNlcHRpb25zLlxuICAgICAgICBjb25zb2xlLndhcm4oJ0lnbm9yaW5nIEJFRk9SRV9BUFBfU0VSSUFMSVpFRCBFeGNlcHRpb246ICcsIGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhc3luY0NhbGxiYWNrcy5sZW5ndGgpIHtcbiAgICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChhc3luY0NhbGxiYWNrcykpIHtcbiAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09ICdyZWplY3RlZCcpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ0lnbm9yaW5nIEJFRk9SRV9BUFBfU0VSSUFMSVpFRCBFeGNlcHRpb246ICcsIHJlc3VsdC5yZWFzb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXBwZW5kU2VydmVyQ29udGV4dEluZm8oYXBwbGljYXRpb25SZWYpO1xuICBjb25zdCBvdXRwdXQgPSBwbGF0Zm9ybVN0YXRlLnJlbmRlclRvU3RyaW5nKCk7XG5cbiAgLy8gRGVzdHJveSB0aGUgYXBwbGljYXRpb24gaW4gYSBtYWNyb3Rhc2ssIHRoaXMgYWxsb3dzIHBlbmRpbmcgcHJvbWlzZXMgdG8gYmUgc2V0dGxlZCBhbmQgZXJyb3JzXG4gIC8vIHRvIGJlIHN1cmZhY2VkIHRvIHRoZSB1c2Vycy5cbiAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHBsYXRmb3JtUmVmLmRlc3Ryb3koKTtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9LCAwKTtcbiAgfSk7XG5cbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHZhbHVlIHRoYXQgc2hvdWxkIGJlIHVzZWQgaWYgbm8gc2VydmVyIGNvbnRleHQgdmFsdWUgaGFzIGJlZW4gcHJvdmlkZWQuXG4gKi9cbmNvbnN0IERFRkFVTFRfU0VSVkVSX0NPTlRFWFQgPSAnb3RoZXInO1xuXG4vKipcbiAqIEFuIGludGVybmFsIHRva2VuIHRoYXQgYWxsb3dzIHByb3ZpZGluZyBleHRyYSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2VydmVyIGNvbnRleHRcbiAqIChlLmcuIHdoZXRoZXIgU1NSIG9yIFNTRyB3YXMgdXNlZCkuIFRoZSB2YWx1ZSBpcyBhIHN0cmluZyBhbmQgY2hhcmFjdGVycyBvdGhlclxuICogdGhhbiBbYS16QS1aMC05XFwtXSBhcmUgcmVtb3ZlZC4gU2VlIHRoZSBkZWZhdWx0IHZhbHVlIGluIGBERUZBVUxUX1NFUlZFUl9DT05URVhUYCBjb25zdC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNFUlZFUl9DT05URVhUID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ1NFUlZFUl9DT05URVhUJyk7XG5cbi8qKlxuICogU2FuaXRpemVzIHByb3ZpZGVkIHNlcnZlciBjb250ZXh0OlxuICogLSByZW1vdmVzIGFsbCBjaGFyYWN0ZXJzIG90aGVyIHRoYW4gYS16LCBBLVosIDAtOSBhbmQgYC1gXG4gKiAtIHJldHVybnMgYG90aGVyYCBpZiBub3RoaW5nIGlzIHByb3ZpZGVkIG9yIHRoZSBzdHJpbmcgaXMgZW1wdHkgYWZ0ZXIgc2FuaXRpemF0aW9uXG4gKi9cbmZ1bmN0aW9uIHNhbml0aXplU2VydmVyQ29udGV4dChzZXJ2ZXJDb250ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBjb250ZXh0ID0gc2VydmVyQ29udGV4dC5yZXBsYWNlKC9bXmEtekEtWjAtOVxcLV0vZywgJycpO1xuICByZXR1cm4gY29udGV4dC5sZW5ndGggPiAwID8gY29udGV4dCA6IERFRkFVTFRfU0VSVkVSX0NPTlRFWFQ7XG59XG5cbi8qKlxuICogQm9vdHN0cmFwcyBhbiBhcHBsaWNhdGlvbiB1c2luZyBwcm92aWRlZCBOZ01vZHVsZSBhbmQgc2VyaWFsaXplcyB0aGUgcGFnZSBjb250ZW50IHRvIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gbW9kdWxlVHlwZSBBIHJlZmVyZW5jZSB0byBhbiBOZ01vZHVsZSB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciBib290c3RyYXAuXG4gKiBAcGFyYW0gb3B0aW9ucyBBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSByZW5kZXIgb3BlcmF0aW9uOlxuICogIC0gYGRvY3VtZW50YCAtIHRoZSBkb2N1bWVudCBvZiB0aGUgcGFnZSB0byByZW5kZXIsIGVpdGhlciBhcyBhbiBIVE1MIHN0cmluZyBvclxuICogICAgICAgICAgICAgICAgIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBgZG9jdW1lbnRgIGluc3RhbmNlLlxuICogIC0gYHVybGAgLSB0aGUgVVJMIGZvciB0aGUgY3VycmVudCByZW5kZXIgcmVxdWVzdC5cbiAqICAtIGBleHRyYVByb3ZpZGVyc2AgLSBzZXQgb2YgcGxhdGZvcm0gbGV2ZWwgcHJvdmlkZXJzIGZvciB0aGUgY3VycmVudCByZW5kZXIgcmVxdWVzdC5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJNb2R1bGU8VD4oXG4gIG1vZHVsZVR5cGU6IFR5cGU8VD4sXG4gIG9wdGlvbnM6IHtkb2N1bWVudD86IHN0cmluZyB8IERvY3VtZW50OyB1cmw/OiBzdHJpbmc7IGV4dHJhUHJvdmlkZXJzPzogU3RhdGljUHJvdmlkZXJbXX0sXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7ZG9jdW1lbnQsIHVybCwgZXh0cmFQcm92aWRlcnM6IHBsYXRmb3JtUHJvdmlkZXJzfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHBsYXRmb3JtUmVmID0gY3JlYXRlU2VydmVyUGxhdGZvcm0oe2RvY3VtZW50LCB1cmwsIHBsYXRmb3JtUHJvdmlkZXJzfSk7XG4gIGNvbnN0IG1vZHVsZVJlZiA9IGF3YWl0IHBsYXRmb3JtUmVmLmJvb3RzdHJhcE1vZHVsZShtb2R1bGVUeXBlKTtcbiAgY29uc3QgYXBwbGljYXRpb25SZWYgPSBtb2R1bGVSZWYuaW5qZWN0b3IuZ2V0KEFwcGxpY2F0aW9uUmVmKTtcbiAgcmV0dXJuIF9yZW5kZXIocGxhdGZvcm1SZWYsIGFwcGxpY2F0aW9uUmVmKTtcbn1cblxuLyoqXG4gKiBCb290c3RyYXBzIGFuIGluc3RhbmNlIG9mIGFuIEFuZ3VsYXIgYXBwbGljYXRpb24gYW5kIHJlbmRlcnMgaXQgdG8gYSBzdHJpbmcuXG5cbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGJvb3RzdHJhcCA9ICgpID0+IGJvb3RzdHJhcEFwcGxpY2F0aW9uKFJvb3RDb21wb25lbnQsIGFwcENvbmZpZyk7XG4gKiBjb25zdCBvdXRwdXQ6IHN0cmluZyA9IGF3YWl0IHJlbmRlckFwcGxpY2F0aW9uKGJvb3RzdHJhcCk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gYm9vdHN0cmFwIEEgbWV0aG9kIHRoYXQgd2hlbiBpbnZva2VkIHJldHVybnMgYSBwcm9taXNlIHRoYXQgcmV0dXJucyBhbiBgQXBwbGljYXRpb25SZWZgXG4gKiAgICAgaW5zdGFuY2Ugb25jZSByZXNvbHZlZC5cbiAqIEBwYXJhbSBvcHRpb25zIEFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIHJlbmRlciBvcGVyYXRpb246XG4gKiAgLSBgZG9jdW1lbnRgIC0gdGhlIGRvY3VtZW50IG9mIHRoZSBwYWdlIHRvIHJlbmRlciwgZWl0aGVyIGFzIGFuIEhUTUwgc3RyaW5nIG9yXG4gKiAgICAgICAgICAgICAgICAgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGBkb2N1bWVudGAgaW5zdGFuY2UuXG4gKiAgLSBgdXJsYCAtIHRoZSBVUkwgZm9yIHRoZSBjdXJyZW50IHJlbmRlciByZXF1ZXN0LlxuICogIC0gYHBsYXRmb3JtUHJvdmlkZXJzYCAtIHRoZSBwbGF0Zm9ybSBsZXZlbCBwcm92aWRlcnMgZm9yIHRoZSBjdXJyZW50IHJlbmRlciByZXF1ZXN0LlxuICpcbiAqIEByZXR1cm5zIEEgUHJvbWlzZSwgdGhhdCByZXR1cm5zIHNlcmlhbGl6ZWQgKHRvIGEgc3RyaW5nKSByZW5kZXJlZCBwYWdlLCBvbmNlIHJlc29sdmVkLlxuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlckFwcGxpY2F0aW9uPFQ+KFxuICBib290c3RyYXA6ICgpID0+IFByb21pc2U8QXBwbGljYXRpb25SZWY+LFxuICBvcHRpb25zOiB7ZG9jdW1lbnQ/OiBzdHJpbmcgfCBEb2N1bWVudDsgdXJsPzogc3RyaW5nOyBwbGF0Zm9ybVByb3ZpZGVycz86IFByb3ZpZGVyW119LFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmV0dXJuIHJ1bkFuZE1lYXN1cmVQZXJmKCdyZW5kZXJBcHBsaWNhdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwbGF0Zm9ybVJlZiA9IGNyZWF0ZVNlcnZlclBsYXRmb3JtKG9wdGlvbnMpO1xuXG4gICAgY29uc3QgYXBwbGljYXRpb25SZWYgPSBhd2FpdCBib290c3RyYXAoKTtcbiAgICByZXR1cm4gX3JlbmRlcihwbGF0Zm9ybVJlZiwgYXBwbGljYXRpb25SZWYpO1xuICB9KTtcbn1cbiJdfQ==
|
package/esm2022/src/version.mjs
CHANGED
|
@@ -14,5 +14,5 @@ import { Version } from '@angular/core';
|
|
|
14
14
|
/**
|
|
15
15
|
* @publicApi
|
|
16
16
|
*/
|
|
17
|
-
export const VERSION = new Version('18.
|
|
17
|
+
export const VERSION = new Version('18.2.0-next.0');
|
|
18
18
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYXRmb3JtLXNlcnZlci9zcmMvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSDs7OztHQUlHO0FBRUgsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV0Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKlxuICogQG1vZHVsZVxuICogQGRlc2NyaXB0aW9uXG4gKiBFbnRyeSBwb2ludCBmb3IgYWxsIHB1YmxpYyBBUElzIG9mIHRoZSBwbGF0Zm9ybS1zZXJ2ZXIgcGFja2FnZS5cbiAqL1xuXG5pbXBvcnQge1ZlcnNpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBuZXcgVmVyc2lvbignMC4wLjAtUExBQ0VIT0xERVInKTtcbiJdfQ==
|
|
@@ -22,11 +22,11 @@ export const platformServerTesting = createPlatformFactory(platformCoreDynamicTe
|
|
|
22
22
|
* @publicApi
|
|
23
23
|
*/
|
|
24
24
|
export class ServerTestingModule {
|
|
25
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
26
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.
|
|
27
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.
|
|
25
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
26
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerTestingModule, imports: [NoopAnimationsModule], exports: [BrowserDynamicTestingModule] }); }
|
|
27
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerTestingModule, providers: SERVER_RENDER_PROVIDERS, imports: [NoopAnimationsModule, BrowserDynamicTestingModule] }); }
|
|
28
28
|
}
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerTestingModule, decorators: [{
|
|
30
30
|
type: NgModule,
|
|
31
31
|
args: [{
|
|
32
32
|
exports: [BrowserDynamicTestingModule],
|
package/fesm2022/init.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v18.
|
|
2
|
+
* @license Angular v18.2.0-next.0
|
|
3
3
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -16216,10 +16216,10 @@ class PlatformState {
|
|
|
16216
16216
|
getDocument() {
|
|
16217
16217
|
return this._doc;
|
|
16218
16218
|
}
|
|
16219
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
16220
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
16219
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: PlatformState, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
16220
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: PlatformState }); }
|
|
16221
16221
|
}
|
|
16222
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
16222
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: PlatformState, decorators: [{
|
|
16223
16223
|
type: Injectable
|
|
16224
16224
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
16225
16225
|
type: Inject,
|
|
@@ -16244,10 +16244,10 @@ class ServerXhr {
|
|
|
16244
16244
|
}
|
|
16245
16245
|
return new impl.XMLHttpRequest();
|
|
16246
16246
|
}
|
|
16247
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
16248
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
16247
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerXhr, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
16248
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerXhr }); }
|
|
16249
16249
|
}
|
|
16250
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
16250
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerXhr, decorators: [{
|
|
16251
16251
|
type: Injectable
|
|
16252
16252
|
}] });
|
|
16253
16253
|
function relativeUrlsTransformerInterceptorFn(request, next) {
|
|
@@ -16379,10 +16379,10 @@ class ServerPlatformLocation {
|
|
|
16379
16379
|
getState() {
|
|
16380
16380
|
return undefined;
|
|
16381
16381
|
}
|
|
16382
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
16383
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
16382
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerPlatformLocation, deps: [{ token: DOCUMENT }, { token: INITIAL_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
16383
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerPlatformLocation }); }
|
|
16384
16384
|
}
|
|
16385
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
16385
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerPlatformLocation, decorators: [{
|
|
16386
16386
|
type: Injectable
|
|
16387
16387
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
16388
16388
|
type: Inject,
|
|
@@ -16406,10 +16406,10 @@ class ServerEventManagerPlugin extends EventManagerPlugin {
|
|
|
16406
16406
|
addEventListener(element, eventName, handler) {
|
|
16407
16407
|
return ɵgetDOM().onAndCancel(element, eventName, handler);
|
|
16408
16408
|
}
|
|
16409
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
16410
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
16409
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerEventManagerPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
16410
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerEventManagerPlugin }); }
|
|
16411
16411
|
}
|
|
16412
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
16412
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerEventManagerPlugin, decorators: [{
|
|
16413
16413
|
type: Injectable
|
|
16414
16414
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
16415
16415
|
type: Inject,
|
|
@@ -16493,11 +16493,11 @@ const PLATFORM_SERVER_PROVIDERS = [
|
|
|
16493
16493
|
* @publicApi
|
|
16494
16494
|
*/
|
|
16495
16495
|
class ServerModule {
|
|
16496
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
16497
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.
|
|
16498
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.
|
|
16496
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
16497
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerModule, imports: [HttpClientModule, NoopAnimationsModule], exports: [BrowserModule] }); }
|
|
16498
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerModule, providers: PLATFORM_SERVER_PROVIDERS, imports: [HttpClientModule, NoopAnimationsModule, BrowserModule] }); }
|
|
16499
16499
|
}
|
|
16500
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
16500
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.0", ngImport: i0, type: ServerModule, decorators: [{
|
|
16501
16501
|
type: NgModule,
|
|
16502
16502
|
args: [{
|
|
16503
16503
|
exports: [BrowserModule],
|
|
@@ -16545,6 +16545,54 @@ function provideServerRendering() {
|
|
|
16545
16545
|
return makeEnvironmentProviders([provideNoopAnimations(), ...PLATFORM_SERVER_PROVIDERS]);
|
|
16546
16546
|
}
|
|
16547
16547
|
|
|
16548
|
+
const PERFORMANCE_MARK_PREFIX = '🅰️';
|
|
16549
|
+
let enablePerfLogging = false;
|
|
16550
|
+
function runAndMeasurePerf(label, method) {
|
|
16551
|
+
if (!enablePerfLogging) {
|
|
16552
|
+
return method();
|
|
16553
|
+
}
|
|
16554
|
+
const labelName = `${PERFORMANCE_MARK_PREFIX}:${label}`;
|
|
16555
|
+
const startLabel = `start:${labelName}`;
|
|
16556
|
+
const endLabel = `end:${labelName}`;
|
|
16557
|
+
const end = () => {
|
|
16558
|
+
/* tslint:disable:ban */
|
|
16559
|
+
performance.mark(endLabel);
|
|
16560
|
+
performance.measure(labelName, startLabel, endLabel);
|
|
16561
|
+
performance.clearMarks(startLabel);
|
|
16562
|
+
performance.clearMarks(endLabel);
|
|
16563
|
+
/* tslint:enable:ban */
|
|
16564
|
+
};
|
|
16565
|
+
/* tslint:disable:ban */
|
|
16566
|
+
performance.mark(startLabel);
|
|
16567
|
+
/* tslint:enable:ban */
|
|
16568
|
+
const returnValue = method();
|
|
16569
|
+
if (returnValue instanceof Promise) {
|
|
16570
|
+
return returnValue.finally(() => end());
|
|
16571
|
+
}
|
|
16572
|
+
else {
|
|
16573
|
+
end();
|
|
16574
|
+
return returnValue;
|
|
16575
|
+
}
|
|
16576
|
+
}
|
|
16577
|
+
let warningLogged = false;
|
|
16578
|
+
/**
|
|
16579
|
+
* This enables an internal performance profiler for SSR apps
|
|
16580
|
+
*
|
|
16581
|
+
* It should not be imported in application code
|
|
16582
|
+
*/
|
|
16583
|
+
function enableSsrProfiling() {
|
|
16584
|
+
if (!warningLogged &&
|
|
16585
|
+
(typeof performance === 'undefined' || !performance.mark || !performance.measure)) {
|
|
16586
|
+
warningLogged = true;
|
|
16587
|
+
console.warn('Performance API is not supported on this platform');
|
|
16588
|
+
return;
|
|
16589
|
+
}
|
|
16590
|
+
enablePerfLogging = true;
|
|
16591
|
+
}
|
|
16592
|
+
function disableSsrProfiling() {
|
|
16593
|
+
enablePerfLogging = false;
|
|
16594
|
+
}
|
|
16595
|
+
|
|
16548
16596
|
/**
|
|
16549
16597
|
* Event dispatch (JSAction) script is inlined into the HTML by the build
|
|
16550
16598
|
* process to avoid extra blocking request on a page. The script looks like this:
|
|
@@ -16743,9 +16791,11 @@ async function renderModule(moduleType, options) {
|
|
|
16743
16791
|
* @publicApi
|
|
16744
16792
|
*/
|
|
16745
16793
|
async function renderApplication(bootstrap, options) {
|
|
16746
|
-
|
|
16747
|
-
|
|
16748
|
-
|
|
16794
|
+
return runAndMeasurePerf('renderApplication', async () => {
|
|
16795
|
+
const platformRef = createServerPlatform(options);
|
|
16796
|
+
const applicationRef = await bootstrap();
|
|
16797
|
+
return _render(platformRef, applicationRef);
|
|
16798
|
+
});
|
|
16749
16799
|
}
|
|
16750
16800
|
|
|
16751
16801
|
/**
|
|
@@ -16756,7 +16806,7 @@ async function renderApplication(bootstrap, options) {
|
|
|
16756
16806
|
/**
|
|
16757
16807
|
* @publicApi
|
|
16758
16808
|
*/
|
|
16759
|
-
const VERSION = new Version('18.
|
|
16809
|
+
const VERSION = new Version('18.2.0-next.0');
|
|
16760
16810
|
|
|
16761
16811
|
/// <reference types="node" />
|
|
16762
16812
|
// This file only reexports content of the `src` folder. Keep it that way.
|
|
@@ -16767,5 +16817,5 @@ const VERSION = new Version('18.1.0-rc.0');
|
|
|
16767
16817
|
* Generated bundle index. Do not edit.
|
|
16768
16818
|
*/
|
|
16769
16819
|
|
|
16770
|
-
export { BEFORE_APP_SERIALIZED, INITIAL_CONFIG, PlatformState, ServerModule, VERSION, platformServer, provideServerRendering, renderApplication, renderModule, INTERNAL_SERVER_PLATFORM_PROVIDERS as ɵINTERNAL_SERVER_PLATFORM_PROVIDERS, SERVER_CONTEXT as ɵSERVER_CONTEXT, SERVER_RENDER_PROVIDERS as ɵSERVER_RENDER_PROVIDERS };
|
|
16820
|
+
export { BEFORE_APP_SERIALIZED, INITIAL_CONFIG, PlatformState, ServerModule, VERSION, platformServer, provideServerRendering, renderApplication, renderModule, INTERNAL_SERVER_PLATFORM_PROVIDERS as ɵINTERNAL_SERVER_PLATFORM_PROVIDERS, SERVER_CONTEXT as ɵSERVER_CONTEXT, SERVER_RENDER_PROVIDERS as ɵSERVER_RENDER_PROVIDERS, disableSsrProfiling as ɵdisableSsrProfiling, enableSsrProfiling as ɵenableSsrProfiling };
|
|
16771
16821
|
//# sourceMappingURL=platform-server.mjs.map
|