@schematics/angular 17.0.0-next.5 → 17.0.0-next.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/application/index.js +9 -14
- package/application/schema.d.ts +5 -0
- package/application/schema.js +1 -1
- package/application/schema.json +8 -1
- package/collection.json +6 -0
- package/component/schema.json +1 -1
- package/directive/schema.json +1 -1
- package/e2e/index.js +2 -1
- package/interceptor/schema.json +1 -1
- package/library/schema.json +1 -1
- package/ng-new/schema.d.ts +5 -0
- package/ng-new/schema.js +1 -1
- package/ng-new/schema.json +7 -1
- package/package.json +3 -3
- package/pipe/schema.json +1 -1
- package/server/index.js +3 -1
- package/ssr/files/application-builder/server.ts.template +53 -0
- package/ssr/files/server-builder/server.ts.template +67 -0
- package/ssr/index.d.ts +10 -0
- package/ssr/index.js +229 -0
- package/ssr/schema.d.ts +10 -0
- package/ssr/schema.js +5 -0
- package/ssr/schema.json +22 -0
- package/utility/latest-versions/package.json +1 -0
- package/workspace/files/package.json.template +1 -1
package/application/index.js
CHANGED
|
@@ -19,10 +19,6 @@ const schema_1 = require("./schema");
|
|
|
19
19
|
function default_1(options) {
|
|
20
20
|
return async (host, context) => {
|
|
21
21
|
const { appDir, appRootSelector, componentOptions, folderName, sourceDir } = await getAppOptions(host, options);
|
|
22
|
-
if (options.standalone) {
|
|
23
|
-
context.logger.warn('Standalone application structure is new and not yet supported by many existing' +
|
|
24
|
-
` 'ng add' and 'ng update' integrations with community libraries.`);
|
|
25
|
-
}
|
|
26
22
|
return (0, schematics_1.chain)([
|
|
27
23
|
addAppToWorkspaceFile(options, appDir, folderName),
|
|
28
24
|
options.standalone
|
|
@@ -78,6 +74,11 @@ function default_1(options) {
|
|
|
78
74
|
}),
|
|
79
75
|
(0, schematics_1.move)(appDir),
|
|
80
76
|
]), schematics_1.MergeStrategy.Overwrite),
|
|
77
|
+
options.ssr
|
|
78
|
+
? (0, schematics_1.schematic)('ssr', {
|
|
79
|
+
project: options.name,
|
|
80
|
+
})
|
|
81
|
+
: (0, schematics_1.noop)(),
|
|
81
82
|
options.skipPackageJson ? (0, schematics_1.noop)() : addDependenciesToPackageJson(options),
|
|
82
83
|
]);
|
|
83
84
|
};
|
|
@@ -142,19 +143,13 @@ function addAppToWorkspaceFile(options, appDir, folderName) {
|
|
|
142
143
|
'service',
|
|
143
144
|
];
|
|
144
145
|
schematicsWithTests.forEach((type) => {
|
|
145
|
-
|
|
146
|
-
schematics[`@schematics/angular:${type}`] = {};
|
|
147
|
-
}
|
|
148
|
-
schematics[`@schematics/angular:${type}`].skipTests = true;
|
|
146
|
+
(schematics[`@schematics/angular:${type}`] ??= {}).skipTests = true;
|
|
149
147
|
});
|
|
150
148
|
}
|
|
151
|
-
if (options.standalone) {
|
|
149
|
+
if (!options.standalone) {
|
|
152
150
|
const schematicsWithStandalone = ['component', 'directive', 'pipe'];
|
|
153
151
|
schematicsWithStandalone.forEach((type) => {
|
|
154
|
-
|
|
155
|
-
schematics[`@schematics/angular:${type}`] = {};
|
|
156
|
-
}
|
|
157
|
-
schematics[`@schematics/angular:${type}`].standalone = true;
|
|
152
|
+
(schematics[`@schematics/angular:${type}`] ??= {}).standalone = false;
|
|
158
153
|
});
|
|
159
154
|
}
|
|
160
155
|
const sourceRoot = (0, core_1.join)((0, core_1.normalize)(projectRoot), 'src');
|
|
@@ -302,4 +297,4 @@ function getComponentOptions(options) {
|
|
|
302
297
|
};
|
|
303
298
|
return componentOptions;
|
|
304
299
|
}
|
|
305
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zY2hlbWF0aWNzL2FuZ3VsYXIvYXBwbGljYXRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7QUFFSCwrQ0FBbUU7QUFDbkUsMkRBZW9DO0FBQ3BDLDREQUEwRTtBQUUxRSwwREFBdUY7QUFDdkYsZ0VBQTREO0FBQzVELDRDQUErRDtBQUMvRCxvREFBcUU7QUFDckUsa0VBQW9FO0FBQ3BFLHFDQUErRDtBQUUvRCxtQkFBeUIsT0FBMkI7SUFDbEQsT0FBTyxLQUFLLEVBQUUsSUFBVSxFQUFFLE9BQXlCLEVBQUUsRUFBRTtRQUNyRCxNQUFNLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEdBQ3hFLE1BQU0sYUFBYSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVyQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2pCLGdGQUFnRjtnQkFDOUUsa0VBQWtFLENBQ3JFLENBQUM7U0FDSDtRQUVELE9BQU8sSUFBQSxrQkFBSyxFQUFDO1lBQ1gscUJBQXFCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUM7WUFDbEQsT0FBTyxDQUFDLFVBQVU7Z0JBQ2hCLENBQUMsQ0FBQyxJQUFBLGlCQUFJLEdBQUU7Z0JBQ1IsQ0FBQyxDQUFDLElBQUEsc0JBQVMsRUFBQyxRQUFRLEVBQUU7b0JBQ2xCLElBQUksRUFBRSxLQUFLO29CQUNYLFlBQVksRUFBRSxLQUFLO29CQUNuQixJQUFJLEVBQUUsSUFBSTtvQkFDVixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87b0JBQ3hCLFlBQVksRUFBRSxNQUFNO29CQUNwQixJQUFJLEVBQUUsU0FBUztvQkFDZixPQUFPLEVBQUUsT0FB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LGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYyxJQUFJLElBQUk7WUFDOUMsU0FBUyxFQUFFLElBQUk7WUFDZixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7WUFDcEIsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLGlCQUFpQjtTQUM3QyxDQUFDO0lBRU4sT0FBTyxnQkFBZ0IsQ0FBQztBQUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IEpzb25PYmplY3QsIGpvaW4sIG5vcm1hbGl6ZSB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCB7XG4gIE1lcmdlU3RyYXRlZ3ksXG4gIFJ1bGUsXG4gIFNjaGVtYXRpY0NvbnRleHQsXG4gIFRyZWUsXG4gIGFwcGx5LFxuICBhcHBseVRlbXBsYXRlcyxcbiAgY2hhaW4sXG4gIGZpbHRlcixcbiAgbWVyZ2VXaXRoLFxuICBtb3ZlLFxuICBub29wLFxuICBzY2hlbWF0aWMsXG4gIHN0cmluZ3MsXG4gIHVybCxcbn0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuaW1wb3J0IHsgTm9kZVBhY2thZ2VJbnN0YWxsVGFzayB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzL3Rhc2tzJztcbmltcG9ydCB7IFNjaGVtYSBhcyBDb21wb25lbnRPcHRpb25zIH0gZnJvbSAnLi4vY29tcG9uZW50L3NjaGVtYSc7XG5pbXBvcnQgeyBOb2RlRGVwZW5kZW5jeVR5cGUsIGFkZFBhY2thZ2VKc29uRGVwZW5kZW5jeSB9IGZyb20gJy4uL3V0aWxpdHkvZGVwZW5kZW5jaWVzJztcbmltcG9ydCB7IGxhdGVzdFZlcnNpb25zIH0gZnJvbSAnLi4vdXRpbGl0eS9sYXRlc3QtdmVyc2lvbnMnO1xuaW1wb3J0IHsgcmVsYXRpdmVQYXRoVG9Xb3Jrc3BhY2VSb290IH0gZnJvbSAnLi4vdXRpbGl0eS9wYXRocyc7XG5pbXBvcnQgeyBnZXRXb3Jrc3BhY2UsIHVwZGF0ZVdvcmtzcGFjZSB9IGZyb20gJy4uL3V0aWxpdHkvd29ya3NwYWNlJztcbmltcG9ydCB7IEJ1aWxkZXJzLCBQcm9qZWN0VHlwZSB9IGZyb20gJy4uL3V0aWxpdHkvd29ya3NwYWNlLW1vZGVscyc7XG5pbXBvcnQgeyBTY2hlbWEgYXMgQXBwbGljYXRpb25PcHRpb25zLCBTdHlsZSB9IGZyb20gJy4vc2NoZW1hJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKG9wdGlvbnM6IEFwcGxpY2F0aW9uT3B0aW9ucyk6IFJ1bGUge1xuICByZXR1cm4gYXN5bmMgKGhvc3Q6IFRyZWUsIGNvbnRleHQ6IFNjaGVtYXRpY0NvbnRleHQpID0+IHtcbiAgICBjb25zdCB7IGFwcERpciwgYXBwUm9vdFNlbGVjdG9yLCBjb21wb25lbnRPcHRpb25zLCBmb2xkZXJOYW1lLCBzb3VyY2VEaXIgfSA9XG4gICAgICBhd2FpdCBnZXRBcHBPcHRpb25zKGhvc3QsIG9wdGlvbnMpO1xuXG4gICAgaWYgKG9wdGlvbnMuc3RhbmRhbG9uZSkge1xuICAgICAgY29udGV4dC5sb2dnZXIud2FybihcbiAgICAgICAgJ1N0YW5kYWxvbmUgYXBwbGljYXRpb24gc3RydWN0dXJlIGlzIG5ldyBhbmQgbm90IHlldCBzdXBwb3J0ZWQgYnkgbWFueSBleGlzdGluZycgK1xuICAgICAgICAgIGAgJ25nIGFkZCcgYW5kICduZyB1cGRhdGUnIGludGVncmF0aW9ucyB3aXRoIGNvbW11bml0eSBsaWJyYXJpZXMuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYWluKFtcbiAgICAgIGFkZEFwcFRvV29ya3NwYWNlRmlsZShvcHRpb25zLCBhcHBEaXIsIGZvbGRlck5hbWUpLFxuICAgICAgb3B0aW9ucy5zdGFuZGFsb25lXG4gICAgICAgID8gbm9vcCgpXG4gICAgICAgIDogc2NoZW1hdGljKCdtb2R1bGUnLCB7XG4gICAgICAgICAgICBuYW1lOiAnYXBwJyxcbiAgICAgICAgICAgIGNvbW1vbk1vZHVsZTogZmFsc2UsXG4gICAgICAgICAgICBmbGF0OiB0cnVlLFxuICAgICAgICAgICAgcm91dGluZzogb3B0aW9ucy5yb3V0aW5nLFxuICAgICAgICAgICAgcm91dGluZ1Njb3BlOiAnUm9vdCcsXG4gICAgICAgICAgICBwYXRoOiBzb3VyY2VEaXIsXG4gICAgICAgICAgICBwcm9qZWN0OiBvcHRpb25zLm5hbWUsXG4gICAgICAgICAgfSksXG4gICAgICBzY2hlbWF0aWMoJ2NvbXBvbmVudCcsIHtcbiAgICAgICAgbmFtZTogJ2FwcCcsXG4gICAgICAgIHNlbGVjdG9yOiBhcHBSb290U2VsZWN0b3IsXG4gICAgICAgIGZsYXQ6IHRydWUsXG4gICAgICAgIHBhdGg6IHNvdXJjZURpcixcbiAgICAgICAgc2tpcEltcG9ydDogdHJ1ZSxcbiAgICAgICAgcHJvamVjdDogb3B0aW9ucy5uYW1lLFxuICAgICAgICAuLi5jb21wb25lbnRPcHRpb25zLFxuICAgICAgfSksXG4gICAgICBtZXJnZVdpdGgoXG4gICAgICAgIGFwcGx5KHVybChvcHRpb25zLnN0YW5kYWxvbmUgPyAnLi9maWxlcy9zdGFuZGFsb25lLWZpbGVzJyA6ICcuL2ZpbGVzL21vZHVsZS1maWxlcycpLCBbXG4gICAgICAgICAgb3B0aW9ucy5yb3V0aW5nID8gbm9vcCgpIDogZmlsdGVyKChwYXRoKSA9PiAhcGF0aC5lbmRzV2l0aCgnYXBwLnJvdXRlcy50cy50ZW1wbGF0ZScpKSxcbiAgICAgICAgICBjb21wb25lbnRPcHRpb25zLnNraXBUZXN0c1xuICAgICAgICAgICAgPyBmaWx0ZXIoKHBhdGgpID0+ICFwYXRoLmVuZHNXaXRoKCcuc3BlYy50cy50ZW1wbGF0ZScpKVxuICAgICAgICAgICAgOiBub29wKCksXG4gICAgICAgICAgYXBwbHlUZW1wbGF0ZXMoe1xuICAgICAgICAgICAgdXRpbHM6IHN0cmluZ3MsXG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgLi4uY29tcG9uZW50T3B0aW9ucyxcbiAgICAgICAgICAgIHNlbGVjdG9yOiBhcHBSb290U2VsZWN0b3IsXG4gICAgICAgICAgICByZWxhdGl2ZVBhdGhUb1dvcmtzcGFjZVJvb3Q6IHJlbGF0aXZlUGF0aFRvV29ya3NwYWNlUm9vdChhcHBEaXIpLFxuICAgICAgICAgICAgYXBwTmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICAgICAgZm9sZGVyTmFtZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBtb3ZlKGFwcERpciksXG4gICAgICAgIF0pLFxuICAgICAgICBNZXJnZVN0cmF0ZWd5Lk92ZXJ3cml0ZSxcbiAgICAgICksXG4gICAgICBtZXJnZVdpdGgoXG4gICAgICAgIGFwcGx5KHVybCgnLi9maWxlcy9jb21tb24tZmlsZXMnKSwgW1xuICAgICAgICAgIG9wdGlvbnMubWluaW1hbFxuICAgICAgICAgICAgPyBmaWx0ZXIoKHBhdGgpID0+ICFwYXRoLmVuZHNXaXRoKCd0c2NvbmZpZy5zcGVjLmpzb24udGVtcGxhdGUnKSlcbiAgICAgICAgICAgIDogbm9vcCgpLFxuICAgICAgICAgIGNvbXBvbmVudE9wdGlvbnMuaW5saW5lVGVtcGxhdGVcbiAgICAgICAgICAgID8gZmlsdGVyKChwYXRoKSA9PiAhcGF0aC5lbmRzV2l0aCgnY29tcG9uZW50Lmh0bWwudGVtcGxhdGUnKSlcbiAgICAgICAgICAgIDogbm9vcCgpLFxuICAgICAgICAgIGFwcGx5VGVtcGxhdGVzKHtcbiAgICAgICAgICAgIHV0aWxzOiBzdHJpbmdzLFxuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIHNlbGVjdG9yOiBhcHBSb290U2VsZWN0b3IsXG4gICAgICAgICAgICByZWxhdGl2ZVBhdGhUb1dvcmtzcGFjZVJvb3Q6IHJlbGF0aXZlUGF0aFRvV29ya3NwYWNlUm9vdChhcHBEaXIpLFxuICAgICAgICAgICAgYXBwTmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICAgICAgZm9sZGVyTmFtZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBtb3ZlKGFwcERpciksXG4gICAgICAgIF0pLFxuICAgICAgICBNZXJnZVN0cmF0ZWd5Lk92ZXJ3cml0ZSxcbiAgICAgICksXG4gICAgICBvcHRpb25zLnNraXBQYWNrYWdlSnNvbiA/IG5vb3AoKSA6IGFkZERlcGVuZGVuY2llc1RvUGFja2FnZUpzb24ob3B0aW9ucyksXG4gICAgXSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGFkZERlcGVuZGVuY2llc1RvUGFja2FnZUpzb24ob3B0aW9uczogQXBwbGljYXRpb25PcHRpb25zKSB7XG4gIHJldHVybiAoaG9zdDogVHJlZSwgY29udGV4dDogU2NoZW1hdGljQ29udGV4dCkgPT4ge1xuICAgIFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogTm9kZURlcGVuZGVuY3lUeXBlLkRldixcbiAgICAgICAgbmFtZTogJ0Bhbmd1bGFyL2NvbXBpbGVyLWNsaScsXG4gICAgICAgIHZlcnNpb246IGxhdGVzdFZlcnNpb25zLkFuZ3VsYXIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBOb2RlRGVwZW5kZW5jeVR5cGUuRGV2LFxuICAgICAgICBuYW1lOiAnQGFuZ3VsYXItZGV2a2l0L2J1aWxkLWFuZ3VsYXInLFxuICAgICAgICB2ZXJzaW9uOiBsYXRlc3RWZXJzaW9ucy5EZXZraXRCdWlsZEFuZ3VsYXIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBOb2RlRGVwZW5kZW5jeVR5cGUuRGV2LFxuICAgICAgICBuYW1lOiAndHlwZXNjcmlwdCcsXG4gICAgICAgIHZlcnNpb246IGxhdGVzdFZlcnNpb25zWyd0eXBlc2NyaXB0J10sXG4gICAgICB9LFxuICAgIF0uZm9yRWFjaCgoZGVwZW5kZW5jeSkgPT4gYWRkUGFja2FnZUpzb25EZXBlbmRlbmN5KGhvc3QsIGRlcGVuZGVuY3kpKTtcblxuICAgIGlmICghb3B0aW9ucy5za2lwSW5zdGFsbCkge1xuICAgICAgY29udGV4dC5hZGRUYXNrKG5ldyBOb2RlUGFja2FnZUluc3RhbGxUYXNrKCkpO1xuICAgIH1cblxuICAgIHJldHVybiBob3N0O1xuICB9O1xufVxuXG5mdW5jdGlvbiBhZGRBcHBUb1dvcmtzcGFjZUZpbGUoXG4gIG9wdGlvbnM6IEFwcGxpY2F0aW9uT3B0aW9ucyxcbiAgYXBwRGlyOiBzdHJpbmcsXG4gIGZvbGRlck5hbWU6IHN0cmluZyxcbik6IFJ1bGUge1xuICBsZXQgcHJvamVjdFJvb3QgPSBhcHBEaXI7XG4gIGlmIChwcm9qZWN0Um9vdCkge1xuICAgIHByb2plY3RSb290ICs9ICcvJztcbiAgfVxuXG4gIGNvbnN0IHNjaGVtYXRpY3M6IEpzb25PYmplY3QgPSB7fTtcblxuICBpZiAoXG4gICAgb3B0aW9ucy5pbmxpbmVUZW1wbGF0ZSB8fFxuICAgIG9wdGlvbnMuaW5saW5lU3R5bGUgfHxcbiAgICBvcHRpb25zLm1pbmltYWwgfHxcbiAgICBvcHRpb25zLnN0eWxlICE9PSBTdHlsZS5Dc3NcbiAgKSB7XG4gICAgY29uc3QgY29tcG9uZW50U2NoZW1hdGljc09wdGlvbnM6IEpzb25PYmplY3QgPSB7fTtcbiAgICBpZiAob3B0aW9ucy5pbmxpbmVUZW1wbGF0ZSA/PyBvcHRpb25zLm1pbmltYWwpIHtcbiAgICAgIGNvbXBvbmVudFNjaGVtYXRpY3NPcHRpb25zLmlubGluZVRlbXBsYXRlID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuaW5saW5lU3R5bGUgPz8gb3B0aW9ucy5taW5pbWFsKSB7XG4gICAgICBjb21wb25lbnRTY2hlbWF0aWNzT3B0aW9ucy5pbmxpbmVTdHlsZSA9IHRydWU7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnN0eWxlICYmIG9wdGlvbnMuc3R5bGUgIT09IFN0eWxlLkNzcykge1xuICAgICAgY29tcG9uZW50U2NoZW1hdGljc09wdGlvbnMuc3R5bGUgPSBvcHRpb25zLnN0eWxlO1xuICAgIH1cblxuICAgIHNjaGVtYXRpY3NbJ0BzY2hlbWF0aWNzL2FuZ3VsYXI6Y29tcG9uZW50J10gPSBjb21wb25lbnRTY2hlbWF0aWNzT3B0aW9ucztcbiAgfVxuXG4gIGlmIChvcHRpb25zLnNraXBUZXN0cyB8fCBvcHRpb25zLm1pbmltYWwpIHtcbiAgICBjb25zdCBzY2hlbWF0aWNzV2l0aFRlc3RzID0gW1xuICAgICAgJ2NsYXNzJyxcbiAgICAgICdjb21wb25lbnQnLFxuICAgICAgJ2RpcmVjdGl2ZScsXG4gICAgICAnZ3VhcmQnLFxuICAgICAgJ2ludGVyY2VwdG9yJyxcbiAgICAgICdwaXBlJyxcbiAgICAgICdyZXNvbHZlcicsXG4gICAgICAnc2VydmljZScsXG4gICAgXTtcblxuICAgIHNjaGVtYXRpY3NXaXRoVGVzdHMuZm9yRWFjaCgodHlwZSkgPT4ge1xuICAgICAgaWYgKCEoYEBzY2hlbWF0aWNzL2FuZ3VsYXI6JHt0eXBlfWAgaW4gc2NoZW1hdGljcykpIHtcbiAgICAgICAgc2NoZW1hdGljc1tgQHNjaGVtYXRpY3MvYW5ndWxhcjoke3R5cGV9YF0gPSB7fTtcbiAgICAgIH1cbiAgICAgIChzY2hlbWF0aWNzW2BAc2NoZW1hdGljcy9hbmd1bGFyOiR7dHlwZX1gXSBhcyBKc29uT2JqZWN0KS5za2lwVGVzdHMgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuc3RhbmRhbG9uZSkge1xuICAgIGNvbnN0IHNjaGVtYXRpY3NXaXRoU3RhbmRhbG9uZSA9IFsnY29tcG9uZW50JywgJ2RpcmVjdGl2ZScsICdwaXBlJ107XG4gICAgc2NoZW1hdGljc1dpdGhTdGFuZGFsb25lLmZvckVhY2goKHR5cGUpID0+IHtcbiAgICAgIGlmICghKGBAc2NoZW1hdGljcy9hbmd1bGFyOiR7dHlwZX1gIGluIHNjaGVtYXRpY3MpKSB7XG4gICAgICAgIHNjaGVtYXRpY3NbYEBzY2hlbWF0aWNzL2FuZ3VsYXI6JHt0eXBlfWBdID0ge307XG4gICAgICB9XG4gICAgICAoc2NoZW1hdGljc1tgQHNjaGVtYXRpY3MvYW5ndWxhcjoke3R5cGV9YF0gYXMgSnNvbk9iamVjdCkuc3RhbmRhbG9uZSA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBzb3VyY2VSb290ID0gam9pbihub3JtYWxpemUocHJvamVjdFJvb3QpLCAnc3JjJyk7XG4gIGxldCBidWRnZXRzID0gW107XG4gIGlmIChvcHRpb25zLnN0cmljdCkge1xuICAgIGJ1ZGdldHMgPSBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdpbml0aWFsJyxcbiAgICAgICAgbWF4aW11bVdhcm5pbmc6ICc1MDBrYicsXG4gICAgICAgIG1heGltdW1FcnJvcjogJzFtYicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnYW55Q29tcG9uZW50U3R5bGUnLFxuICAgICAgICBtYXhpbXVtV2FybmluZzogJzJrYicsXG4gICAgICAgIG1heGltdW1FcnJvcjogJzRrYicsXG4gICAgICB9LFxuICAgIF07XG4gIH0gZWxzZSB7XG4gICAgYnVkZ2V0cyA9IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2luaXRpYWwnLFxuICAgICAgICBtYXhpbXVtV2FybmluZzogJzJtYicsXG4gICAgICAgIG1heGltdW1FcnJvcjogJzVtYicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnYW55Q29tcG9uZW50U3R5bGUnLFxuICAgICAgICBtYXhpbXVtV2FybmluZzogJzZrYicsXG4gICAgICAgIG1heGltdW1FcnJvcjogJzEwa2InLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgY29uc3QgaW5saW5lU3R5bGVMYW5ndWFnZSA9IG9wdGlvbnM/LnN0eWxlICE9PSBTdHlsZS5Dc3MgPyBvcHRpb25zLnN0eWxlIDogdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHByb2plY3QgPSB7XG4gICAgcm9vdDogbm9ybWFsaXplKHByb2plY3RSb290KSxcbiAgICBzb3VyY2VSb290LFxuICAgIHByb2plY3RUeXBlOiBQcm9qZWN0VHlwZS5BcHBsaWNhdGlvbixcbiAgICBwcmVmaXg6IG9wdGlvbnMucHJlZml4IHx8ICdhcHAnLFxuICAgIHNjaGVtYXRpY3MsXG4gICAgdGFyZ2V0czoge1xuICAgICAgYnVpbGQ6IHtcbiAgICAgICAgYnVpbGRlcjogQnVpbGRlcnMuQXBwbGljYXRpb24sXG4gICAgICAgIGRlZmF1bHRDb25maWd1cmF0aW9uOiAncHJvZHVjdGlvbicsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBvdXRwdXRQYXRoOiBgZGlzdC8ke2ZvbGRlck5hbWV9YCxcbiAgICAgICAgICBpbmRleDogYCR7c291cmNlUm9vdH0vaW5kZXguaHRtbGAsXG4gICAgICAgICAgYnJvd3NlcjogYCR7c291cmNlUm9vdH0vbWFpbi50c2AsXG4gICAgICAgICAgcG9seWZpbGxzOiBbJ3pvbmUuanMnXSxcbiAgICAgICAgICB0c0NvbmZpZzogYCR7cHJvamVjdFJvb3R9dHNjb25maWcuYXBwLmpzb25gLFxuICAgICAgICAgIGlubGluZVN0eWxlTGFuZ3VhZ2UsXG4gICAgICAgICAgYXNzZXRzOiBbYCR7c291cmNlUm9vdH0vZmF2aWNvbi5pY29gLCBgJHtzb3VyY2VSb290fS9hc3NldHNgXSxcbiAgICAgICAgICBzdHlsZXM6IFtgJHtzb3VyY2VSb290fS9zdHlsZXMuJHtvcHRpb25zLnN0eWxlfWBdLFxuICAgICAgICAgIHNjcmlwdHM6IFtdLFxuICAgICAgICB9LFxuICAgICAgICBjb25maWd1cmF0aW9uczoge1xuICAgICAgICAgIHByb2R1Y3Rpb246IHtcbiAgICAgICAgICAgIGJ1ZGdldHMsXG4gICAgICAgICAgICBvdXRwdXRIYXNoaW5nOiAnYWxsJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRldmVsb3BtZW50OiB7XG4gICAgICAgICAgICBvcHRpbWl6YXRpb246IGZhbHNlLFxuICAgICAgICAgICAgZXh0cmFjdExpY2Vuc2VzOiBmYWxzZSxcbiAgICAgICAgICAgIHNvdXJjZU1hcDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHNlcnZlOiB7XG4gICAgICAgIGJ1aWxkZXI6IEJ1aWxkZXJzLkRldlNlcnZlcixcbiAgICAgICAgZGVmYXVsdENvbmZpZ3VyYXRpb246ICdkZXZlbG9wbWVudCcsXG4gICAgICAgIG9wdGlvbnM6IHt9LFxuICAgICAgICBjb25maWd1cmF0aW9uczoge1xuICAgICAgICAgIHByb2R1Y3Rpb246IHtcbiAgICAgICAgICAgIGJyb3dzZXJUYXJnZXQ6IGAke29wdGlvbnMubmFtZX06YnVpbGQ6cHJvZHVjdGlvbmAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZXZlbG9wbWVudDoge1xuICAgICAgICAgICAgYnJvd3NlclRhcmdldDogYCR7b3B0aW9ucy5uYW1lfTpidWlsZDpkZXZlbG9wbWVudGAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICAnZXh0cmFjdC1pMThuJzoge1xuICAgICAgICBidWlsZGVyOiBCdWlsZGVycy5FeHRyYWN0STE4bixcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGJyb3dzZXJUYXJnZXQ6IGAke29wdGlvbnMubmFtZX06YnVpbGRgLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHRlc3Q6IG9wdGlvbnMubWluaW1hbFxuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6IHtcbiAgICAgICAgICAgIGJ1aWxkZXI6IEJ1aWxkZXJzLkthcm1hLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBwb2x5ZmlsbHM6IFsnem9uZS5qcycsICd6b25lLmpzL3Rlc3RpbmcnXSxcbiAgICAgICAgICAgICAgdHNDb25maWc6IGAke3Byb2plY3RSb290fXRzY29uZmlnLnNwZWMuanNvbmAsXG4gICAgICAgICAgICAgIGlubGluZVN0eWxlTGFuZ3VhZ2UsXG4gICAgICAgICAgICAgIGFzc2V0czogW2Ake3NvdXJjZVJvb3R9L2Zhdmljb24uaWNvYCwgYCR7c291cmNlUm9vdH0vYXNzZXRzYF0sXG4gICAgICAgICAgICAgIHN0eWxlczogW2Ake3NvdXJjZVJvb3R9L3N0eWxlcy4ke29wdGlvbnMuc3R5bGV9YF0sXG4gICAgICAgICAgICAgIHNjcmlwdHM6IFtdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgIH0sXG4gIH07XG5cbiAgcmV0dXJuIHVwZGF0ZVdvcmtzcGFjZSgod29ya3NwYWNlKSA9PiB7XG4gICAgd29ya3NwYWNlLnByb2plY3RzLmFkZCh7XG4gICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICAuLi5wcm9qZWN0LFxuICAgIH0pO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QXBwT3B0aW9ucyhcbiAgaG9zdDogVHJlZSxcbiAgb3B0aW9uczogQXBwbGljYXRpb25PcHRpb25zLFxuKTogUHJvbWlzZTx7XG4gIGFwcERpcjogc3RyaW5nO1xuICBhcHBSb290U2VsZWN0b3I6IHN0cmluZztcbiAgY29tcG9uZW50T3B0aW9uczogUGFydGlhbDxDb21wb25lbnRPcHRpb25zPjtcbiAgZm9sZGVyTmFtZTogc3RyaW5nO1xuICBzb3VyY2VEaXI6IHN0cmluZztcbn0+IHtcbiAgY29uc3QgYXBwUm9vdFNlbGVjdG9yID0gYCR7b3B0aW9ucy5wcmVmaXh9LXJvb3RgO1xuICBjb25zdCBjb21wb25lbnRPcHRpb25zID0gZ2V0Q29tcG9uZW50T3B0aW9ucyhvcHRpb25zKTtcblxuICBjb25zdCB3b3Jrc3BhY2UgPSBhd2FpdCBnZXRXb3Jrc3BhY2UoaG9zdCk7XG4gIGNvbnN0IG5ld1Byb2plY3RSb290ID0gKHdvcmtzcGFjZS5leHRlbnNpb25zLm5ld1Byb2plY3RSb290IGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgfHwgJyc7XG5cbiAgLy8gSWYgc2NvcGVkIHByb2plY3QgKGkuZS4gXCJAZm9vL2JhclwiKSwgY29udmVydCBkaXIgdG8gXCJmb28vYmFyXCIuXG4gIGxldCBmb2xkZXJOYW1lID0gb3B0aW9ucy5uYW1lLnN0YXJ0c1dpdGgoJ0AnKSA/IG9wdGlvbnMubmFtZS5zbGljZSgxKSA6IG9wdGlvbnMubmFtZTtcbiAgaWYgKC9bQS1aXS8udGVzdChmb2xkZXJOYW1lKSkge1xuICAgIGZvbGRlck5hbWUgPSBzdHJpbmdzLmRhc2hlcml6ZShmb2xkZXJOYW1lKTtcbiAgfVxuXG4gIGNvbnN0IGFwcERpciA9XG4gICAgb3B0aW9ucy5wcm9qZWN0Um9vdCA9PT0gdW5kZWZpbmVkXG4gICAgICA/IGpvaW4obm9ybWFsaXplKG5ld1Byb2plY3RSb290KSwgZm9sZGVyTmFtZSlcbiAgICAgIDogbm9ybWFsaXplKG9wdGlvbnMucHJvamVjdFJvb3QpO1xuXG4gIGNvbnN0IHNvdXJjZURpciA9IGAke2FwcERpcn0vc3JjL2FwcGA7XG5cbiAgcmV0dXJuIHtcbiAgICBhcHBEaXIsXG4gICAgYXBwUm9vdFNlbGVjdG9yLFxuICAgIGNvbXBvbmVudE9wdGlvbnMsXG4gICAgZm9sZGVyTmFtZSxcbiAgICBzb3VyY2VEaXIsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldENvbXBvbmVudE9wdGlvbnMob3B0aW9uczogQXBwbGljYXRpb25PcHRpb25zKTogUGFydGlhbDxDb21wb25lbnRPcHRpb25zPiB7XG4gIGNvbnN0IGNvbXBvbmVudE9wdGlvbnM6IFBhcnRpYWw8Q29tcG9uZW50T3B0aW9ucz4gPSAhb3B0aW9ucy5taW5pbWFsXG4gICAgPyB7XG4gICAgICAgIGlubGluZVN0eWxlOiBvcHRpb25zLmlubGluZVN0eWxlLFxuICAgICAgICBpbmxpbmVUZW1wbGF0ZTogb3B0aW9ucy5pbmxpbmVUZW1wbGF0ZSxcbiAgICAgICAgc2tpcFRlc3RzOiBvcHRpb25zLnNraXBUZXN0cyxcbiAgICAgICAgc3R5bGU6IG9wdGlvbnMuc3R5bGUsXG4gICAgICAgIHZpZXdFbmNhcHN1bGF0aW9uOiBvcHRpb25zLnZpZXdFbmNhcHN1bGF0aW9uLFxuICAgICAgfVxuICAgIDoge1xuICAgICAgICBpbmxpbmVTdHlsZTogb3B0aW9ucy5pbmxpbmVTdHlsZSA/PyB0cnVlLFxuICAgICAgICBpbmxpbmVUZW1wbGF0ZTogb3B0aW9ucy5pbmxpbmVUZW1wbGF0ZSA/PyB0cnVlLFxuICAgICAgICBza2lwVGVzdHM6IHRydWUsXG4gICAgICAgIHN0eWxlOiBvcHRpb25zLnN0eWxlLFxuICAgICAgICB2aWV3RW5jYXBzdWxhdGlvbjogb3B0aW9ucy52aWV3RW5jYXBzdWxhdGlvbixcbiAgICAgIH07XG5cbiAgcmV0dXJuIGNvbXBvbmVudE9wdGlvbnM7XG59XG4iXX0=
|
|
300
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zY2hlbWF0aWNzL2FuZ3VsYXIvYXBwbGljYXRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7QUFFSCwrQ0FBbUU7QUFDbkUsMkRBZW9DO0FBQ3BDLDREQUEwRTtBQUUxRSwwREFBdUY7QUFDdkYsZ0VBQTREO0FBQzVELDRDQUErRDtBQUMvRCxvREFBcUU7QUFDckUsa0VBQW9FO0FBQ3BFLHFDQUErRDtBQUUvRCxtQkFBeUIsT0FBMkI7SUFDbEQsT0FBTyxLQUFLLEVBQUUsSUFBVSxFQUFFLE9BQXlCLEVBQUUsRUFBRTtRQUNyRCxNQUFNLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEdBQ3hFLE1BQU0sYUFBYSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVyQyxPQUFPLElBQUEsa0JBQUssRUFBQztZQUNYLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDO1lBQ2xELE9BQU8sQ0FBQyxVQUFVO2dCQUNoQixDQUFDLENBQUMsSUFBQSxpQkFBSSxHQUFFO2dCQUNSLENBQUMsQ0FBQyxJQUFBLHNCQUFTLEVBQUMsUUFBUSxFQUFFO29CQUNsQixJQUFJLEVBQUUsS0FBSztvQkFDWCxZQUFZLEVBQUUsS0FBSztvQkFDbkIsSUFBSSxFQUFFLElBQUk7b0JBQ1YsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO29CQUN4QixZQUFZLEVBQUUsTUFBTTtvQkFDcEIsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJO2lCQUN0QixDQUFDO1lBQ04sSUFBQSxzQkFBUyxFQUFDLFdBQVcsRUFBRTtnQkFDckIsSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pC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QUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IEpzb25PYmplY3QsIGpvaW4sIG5vcm1hbGl6ZSB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCB7XG4gIE1lcmdlU3RyYXRlZ3ksXG4gIFJ1bGUsXG4gIFNjaGVtYXRpY0NvbnRleHQsXG4gIFRyZWUsXG4gIGFwcGx5LFxuICBhcHBseVRlbXBsYXRlcyxcbiAgY2hhaW4sXG4gIGZpbHRlcixcbiAgbWVyZ2VXaXRoLFxuICBtb3ZlLFxuICBub29wLFxuICBzY2hlbWF0aWMsXG4gIHN0cmluZ3MsXG4gIHVybCxcbn0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuaW1wb3J0IHsgTm9kZVBhY2thZ2VJbnN0YWxsVGFzayB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzL3Rhc2tzJztcbmltcG9ydCB7IFNjaGVtYSBhcyBDb21wb25lbnRPcHRpb25zIH0gZnJvbSAnLi4vY29tcG9uZW50L3NjaGVtYSc7XG5pbXBvcnQgeyBOb2RlRGVwZW5kZW5jeVR5cGUsIGFkZFBhY2thZ2VKc29uRGVwZW5kZW5jeSB9IGZyb20gJy4uL3V0aWxpdHkvZGVwZW5kZW5jaWVzJztcbmltcG9ydCB7IGxhdGVzdFZlcnNpb25zIH0gZnJvbSAnLi4vdXRpbGl0eS9sYXRlc3QtdmVyc2lvbnMnO1xuaW1wb3J0IHsgcmVsYXRpdmVQYXRoVG9Xb3Jrc3BhY2VSb290IH0gZnJvbSAnLi4vdXRpbGl0eS9wYXRocyc7XG5pbXBvcnQgeyBnZXRXb3Jrc3BhY2UsIHVwZGF0ZVdvcmtzcGFjZSB9IGZyb20gJy4uL3V0aWxpdHkvd29ya3NwYWNlJztcbmltcG9ydCB7IEJ1aWxkZXJzLCBQcm9qZWN0VHlwZSB9IGZyb20gJy4uL3V0aWxpdHkvd29ya3NwYWNlLW1vZGVscyc7XG5pbXBvcnQgeyBTY2hlbWEgYXMgQXBwbGljYXRpb25PcHRpb25zLCBTdHlsZSB9IGZyb20gJy4vc2NoZW1hJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKG9wdGlvbnM6IEFwcGxpY2F0aW9uT3B0aW9ucyk6IFJ1bGUge1xuICByZXR1cm4gYXN5bmMgKGhvc3Q6IFRyZWUsIGNvbnRleHQ6IFNjaGVtYXRpY0NvbnRleHQpID0+IHtcbiAgICBjb25zdCB7IGFwcERpciwgYXBwUm9vdFNlbGVjdG9yLCBjb21wb25lbnRPcHRpb25zLCBmb2xkZXJOYW1lLCBzb3VyY2VEaXIgfSA9XG4gICAgICBhd2FpdCBnZXRBcHBPcHRpb25zKGhvc3QsIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIGNoYWluKFtcbiAgICAgIGFkZEFwcFRvV29ya3NwYWNlRmlsZShvcHRpb25zLCBhcHBEaXIsIGZvbGRlck5hbWUpLFxuICAgICAgb3B0aW9ucy5zdGFuZGFsb25lXG4gICAgICAgID8gbm9vcCgpXG4gICAgICAgIDogc2NoZW1hdGljKCdtb2R1bGUnLCB7XG4gICAgICAgICAgICBuYW1lOiAnYXBwJyxcbiAgICAgICAgICAgIGNvbW1vbk1vZHVsZTogZmFsc2UsXG4gICAgICAgICAgICBmbGF0OiB0cnVlLFxuICAgICAgICAgICAgcm91dGluZzogb3B0aW9ucy5yb3V0aW5nLFxuICAgICAgICAgICAgcm91dGluZ1Njb3BlOiAnUm9vdCcsXG4gICAgICAgICAgICBwYXRoOiBzb3VyY2VEaXIsXG4gICAgICAgICAgICBwcm9qZWN0OiBvcHRpb25zLm5hbWUsXG4gICAgICAgICAgfSksXG4gICAgICBzY2hlbWF0aWMoJ2NvbXBvbmVudCcsIHtcbiAgICAgICAgbmFtZTogJ2FwcCcsXG4gICAgICAgIHNlbGVjdG9yOiBhcHBSb290U2VsZWN0b3IsXG4gICAgICAgIGZsYXQ6IHRydWUsXG4gICAgICAgIHBhdGg6IHNvdXJjZURpcixcbiAgICAgICAgc2tpcEltcG9ydDogdHJ1ZSxcbiAgICAgICAgcHJvamVjdDogb3B0aW9ucy5uYW1lLFxuICAgICAgICAuLi5jb21wb25lbnRPcHRpb25zLFxuICAgICAgfSksXG4gICAgICBtZXJnZVdpdGgoXG4gICAgICAgIGFwcGx5KHVybChvcHRpb25zLnN0YW5kYWxvbmUgPyAnLi9maWxlcy9zdGFuZGFsb25lLWZpbGVzJyA6ICcuL2ZpbGVzL21vZHVsZS1maWxlcycpLCBbXG4gICAgICAgICAgb3B0aW9ucy5yb3V0aW5nID8gbm9vcCgpIDogZmlsdGVyKChwYXRoKSA9PiAhcGF0aC5lbmRzV2l0aCgnYXBwLnJvdXRlcy50cy50ZW1wbGF0ZScpKSxcbiAgICAgICAgICBjb21wb25lbnRPcHRpb25zLnNraXBUZXN0c1xuICAgICAgICAgICAgPyBmaWx0ZXIoKHBhdGgpID0+ICFwYXRoLmVuZHNXaXRoKCcuc3BlYy50cy50ZW1wbGF0ZScpKVxuICAgICAgICAgICAgOiBub29wKCksXG4gICAgICAgICAgYXBwbHlUZW1wbGF0ZXMoe1xuICAgICAgICAgICAgdXRpbHM6IHN0cmluZ3MsXG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgLi4uY29tcG9uZW50T3B0aW9ucyxcbiAgICAgICAgICAgIHNlbGVjdG9yOiBhcHBSb290U2VsZWN0b3IsXG4gICAgICAgICAgICByZWxhdGl2ZVBhdGhUb1dvcmtzcGFjZVJvb3Q6IHJlbGF0aXZlUGF0aFRvV29ya3NwYWNlUm9vdChhcHBEaXIpLFxuICAgICAgICAgICAgYXBwTmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICAgICAgZm9sZGVyTmFtZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBtb3ZlKGFwcERpciksXG4gICAgICAgIF0pLFxuICAgICAgICBNZXJnZVN0cmF0ZWd5Lk92ZXJ3cml0ZSxcbiAgICAgICksXG4gICAgICBtZXJnZVdpdGgoXG4gICAgICAgIGFwcGx5KHVybCgnLi9maWxlcy9jb21tb24tZmlsZXMnKSwgW1xuICAgICAgICAgIG9wdGlvbnMubWluaW1hbFxuICAgICAgICAgICAgPyBmaWx0ZXIoKHBhdGgpID0+ICFwYXRoLmVuZHNXaXRoKCd0c2NvbmZpZy5zcGVjLmpzb24udGVtcGxhdGUnKSlcbiAgICAgICAgICAgIDogbm9vcCgpLFxuICAgICAgICAgIGNvbXBvbmVudE9wdGlvbnMuaW5saW5lVGVtcGxhdGVcbiAgICAgICAgICAgID8gZmlsdGVyKChwYXRoKSA9PiAhcGF0aC5lbmRzV2l0aCgnY29tcG9uZW50Lmh0bWwudGVtcGxhdGUnKSlcbiAgICAgICAgICAgIDogbm9vcCgpLFxuICAgICAgICAgIGFwcGx5VGVtcGxhdGVzKHtcbiAgICAgICAgICAgIHV0aWxzOiBzdHJpbmdzLFxuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIHNlbGVjdG9yOiBhcHBSb290U2VsZWN0b3IsXG4gICAgICAgICAgICByZWxhdGl2ZVBhdGhUb1dvcmtzcGFjZVJvb3Q6IHJlbGF0aXZlUGF0aFRvV29ya3NwYWNlUm9vdChhcHBEaXIpLFxuICAgICAgICAgICAgYXBwTmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICAgICAgZm9sZGVyTmFtZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBtb3ZlKGFwcERpciksXG4gICAgICAgIF0pLFxuICAgICAgICBNZXJnZVN0cmF0ZWd5Lk92ZXJ3cml0ZSxcbiAgICAgICksXG4gICAgICBvcHRpb25zLnNzclxuICAgICAgICA/IHNjaGVtYXRpYygnc3NyJywge1xuICAgICAgICAgICAgcHJvamVjdDogb3B0aW9ucy5uYW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgIDogbm9vcCgpLFxuICAgICAgb3B0aW9ucy5za2lwUGFja2FnZUpzb24gPyBub29wKCkgOiBhZGREZXBlbmRlbmNpZXNUb1BhY2thZ2VKc29uKG9wdGlvbnMpLFxuICAgIF0pO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhZGREZXBlbmRlbmNpZXNUb1BhY2thZ2VKc29uKG9wdGlvbnM6IEFwcGxpY2F0aW9uT3B0aW9ucykge1xuICByZXR1cm4gKGhvc3Q6IFRyZWUsIGNvbnRleHQ6IFNjaGVtYXRpY0NvbnRleHQpID0+IHtcbiAgICBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IE5vZGVEZXBlbmRlbmN5VHlwZS5EZXYsXG4gICAgICAgIG5hbWU6ICdAYW5ndWxhci9jb21waWxlci1jbGknLFxuICAgICAgICB2ZXJzaW9uOiBsYXRlc3RWZXJzaW9ucy5Bbmd1bGFyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogTm9kZURlcGVuZGVuY3lUeXBlLkRldixcbiAgICAgICAgbmFtZTogJ0Bhbmd1bGFyLWRldmtpdC9idWlsZC1hbmd1bGFyJyxcbiAgICAgICAgdmVyc2lvbjogbGF0ZXN0VmVyc2lvbnMuRGV2a2l0QnVpbGRBbmd1bGFyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogTm9kZURlcGVuZGVuY3lUeXBlLkRldixcbiAgICAgICAgbmFtZTogJ3R5cGVzY3JpcHQnLFxuICAgICAgICB2ZXJzaW9uOiBsYXRlc3RWZXJzaW9uc1sndHlwZXNjcmlwdCddLFxuICAgICAgfSxcbiAgICBdLmZvckVhY2goKGRlcGVuZGVuY3kpID0+IGFkZFBhY2thZ2VKc29uRGVwZW5kZW5jeShob3N0LCBkZXBlbmRlbmN5KSk7XG5cbiAgICBpZiAoIW9wdGlvbnMuc2tpcEluc3RhbGwpIHtcbiAgICAgIGNvbnRleHQuYWRkVGFzayhuZXcgTm9kZVBhY2thZ2VJbnN0YWxsVGFzaygpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaG9zdDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYWRkQXBwVG9Xb3Jrc3BhY2VGaWxlKFxuICBvcHRpb25zOiBBcHBsaWNhdGlvbk9wdGlvbnMsXG4gIGFwcERpcjogc3RyaW5nLFxuICBmb2xkZXJOYW1lOiBzdHJpbmcsXG4pOiBSdWxlIHtcbiAgbGV0IHByb2plY3RSb290ID0gYXBwRGlyO1xuICBpZiAocHJvamVjdFJvb3QpIHtcbiAgICBwcm9qZWN0Um9vdCArPSAnLyc7XG4gIH1cblxuICBjb25zdCBzY2hlbWF0aWNzOiBKc29uT2JqZWN0ID0ge307XG5cbiAgaWYgKFxuICAgIG9wdGlvbnMuaW5saW5lVGVtcGxhdGUgfHxcbiAgICBvcHRpb25zLmlubGluZVN0eWxlIHx8XG4gICAgb3B0aW9ucy5taW5pbWFsIHx8XG4gICAgb3B0aW9ucy5zdHlsZSAhPT0gU3R5bGUuQ3NzXG4gICkge1xuICAgIGNvbnN0IGNvbXBvbmVudFNjaGVtYXRpY3NPcHRpb25zOiBKc29uT2JqZWN0ID0ge307XG4gICAgaWYgKG9wdGlvbnMuaW5saW5lVGVtcGxhdGUgPz8gb3B0aW9ucy5taW5pbWFsKSB7XG4gICAgICBjb21wb25lbnRTY2hlbWF0aWNzT3B0aW9ucy5pbmxpbmVUZW1wbGF0ZSA9IHRydWU7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmlubGluZVN0eWxlID8/IG9wdGlvbnMubWluaW1hbCkge1xuICAgICAgY29tcG9uZW50U2NoZW1hdGljc09wdGlvbnMuaW5saW5lU3R5bGUgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5zdHlsZSAmJiBvcHRpb25zLnN0eWxlICE9PSBTdHlsZS5Dc3MpIHtcbiAgICAgIGNvbXBvbmVudFNjaGVtYXRpY3NPcHRpb25zLnN0eWxlID0gb3B0aW9ucy5zdHlsZTtcbiAgICB9XG5cbiAgICBzY2hlbWF0aWNzWydAc2NoZW1hdGljcy9hbmd1bGFyOmNvbXBvbmVudCddID0gY29tcG9uZW50U2NoZW1hdGljc09wdGlvbnM7XG4gIH1cblxuICBpZiAob3B0aW9ucy5za2lwVGVzdHMgfHwgb3B0aW9ucy5taW5pbWFsKSB7XG4gICAgY29uc3Qgc2NoZW1hdGljc1dpdGhUZXN0cyA9IFtcbiAgICAgICdjbGFzcycsXG4gICAgICAnY29tcG9uZW50JyxcbiAgICAgICdkaXJlY3RpdmUnLFxuICAgICAgJ2d1YXJkJyxcbiAgICAgICdpbnRlcmNlcHRvcicsXG4gICAgICAncGlwZScsXG4gICAgICAncmVzb2x2ZXInLFxuICAgICAgJ3NlcnZpY2UnLFxuICAgIF07XG5cbiAgICBzY2hlbWF0aWNzV2l0aFRlc3RzLmZvckVhY2goKHR5cGUpID0+IHtcbiAgICAgICgoc2NoZW1hdGljc1tgQHNjaGVtYXRpY3MvYW5ndWxhcjoke3R5cGV9YF0gPz89IHt9KSBhcyBKc29uT2JqZWN0KS5za2lwVGVzdHMgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFvcHRpb25zLnN0YW5kYWxvbmUpIHtcbiAgICBjb25zdCBzY2hlbWF0aWNzV2l0aFN0YW5kYWxvbmUgPSBbJ2NvbXBvbmVudCcsICdkaXJlY3RpdmUnLCAncGlwZSddO1xuICAgIHNjaGVtYXRpY3NXaXRoU3RhbmRhbG9uZS5mb3JFYWNoKCh0eXBlKSA9PiB7XG4gICAgICAoKHNjaGVtYXRpY3NbYEBzY2hlbWF0aWNzL2FuZ3VsYXI6JHt0eXBlfWBdID8/PSB7fSkgYXMgSnNvbk9iamVjdCkuc3RhbmRhbG9uZSA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3Qgc291cmNlUm9vdCA9IGpvaW4obm9ybWFsaXplKHByb2plY3RSb290KSwgJ3NyYycpO1xuICBsZXQgYnVkZ2V0cyA9IFtdO1xuICBpZiAob3B0aW9ucy5zdHJpY3QpIHtcbiAgICBidWRnZXRzID0gW1xuICAgICAge1xuICAgICAgICB0eXBlOiAnaW5pdGlhbCcsXG4gICAgICAgIG1heGltdW1XYXJuaW5nOiAnNTAwa2InLFxuICAgICAgICBtYXhpbXVtRXJyb3I6ICcxbWInLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2FueUNvbXBvbmVudFN0eWxlJyxcbiAgICAgICAgbWF4aW11bVdhcm5pbmc6ICcya2InLFxuICAgICAgICBtYXhpbXVtRXJyb3I6ICc0a2InLFxuICAgICAgfSxcbiAgICBdO1xuICB9IGVsc2Uge1xuICAgIGJ1ZGdldHMgPSBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdpbml0aWFsJyxcbiAgICAgICAgbWF4aW11bVdhcm5pbmc6ICcybWInLFxuICAgICAgICBtYXhpbXVtRXJyb3I6ICc1bWInLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2FueUNvbXBvbmVudFN0eWxlJyxcbiAgICAgICAgbWF4aW11bVdhcm5pbmc6ICc2a2InLFxuICAgICAgICBtYXhpbXVtRXJyb3I6ICcxMGtiJyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0IGlubGluZVN0eWxlTGFuZ3VhZ2UgPSBvcHRpb25zPy5zdHlsZSAhPT0gU3R5bGUuQ3NzID8gb3B0aW9ucy5zdHlsZSA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBwcm9qZWN0ID0ge1xuICAgIHJvb3Q6IG5vcm1hbGl6ZShwcm9qZWN0Um9vdCksXG4gICAgc291cmNlUm9vdCxcbiAgICBwcm9qZWN0VHlwZTogUHJvamVjdFR5cGUuQXBwbGljYXRpb24sXG4gICAgcHJlZml4OiBvcHRpb25zLnByZWZpeCB8fCAnYXBwJyxcbiAgICBzY2hlbWF0aWNzLFxuICAgIHRhcmdldHM6IHtcbiAgICAgIGJ1aWxkOiB7XG4gICAgICAgIGJ1aWxkZXI6IEJ1aWxkZXJzLkFwcGxpY2F0aW9uLFxuICAgICAgICBkZWZhdWx0Q29uZmlndXJhdGlvbjogJ3Byb2R1Y3Rpb24nLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgb3V0cHV0UGF0aDogYGRpc3QvJHtmb2xkZXJOYW1lfWAsXG4gICAgICAgICAgaW5kZXg6IGAke3NvdXJjZVJvb3R9L2luZGV4Lmh0bWxgLFxuICAgICAgICAgIGJyb3dzZXI6IGAke3NvdXJjZVJvb3R9L21haW4udHNgLFxuICAgICAgICAgIHBvbHlmaWxsczogWyd6b25lLmpzJ10sXG4gICAgICAgICAgdHNDb25maWc6IGAke3Byb2plY3RSb290fXRzY29uZmlnLmFwcC5qc29uYCxcbiAgICAgICAgICBpbmxpbmVTdHlsZUxhbmd1YWdlLFxuICAgICAgICAgIGFzc2V0czogW2Ake3NvdXJjZVJvb3R9L2Zhdmljb24uaWNvYCwgYCR7c291cmNlUm9vdH0vYXNzZXRzYF0sXG4gICAgICAgICAgc3R5bGVzOiBbYCR7c291cmNlUm9vdH0vc3R5bGVzLiR7b3B0aW9ucy5zdHlsZX1gXSxcbiAgICAgICAgICBzY3JpcHRzOiBbXSxcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmlndXJhdGlvbnM6IHtcbiAgICAgICAgICBwcm9kdWN0aW9uOiB7XG4gICAgICAgICAgICBidWRnZXRzLFxuICAgICAgICAgICAgb3V0cHV0SGFzaGluZzogJ2FsbCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZXZlbG9wbWVudDoge1xuICAgICAgICAgICAgb3B0aW1pemF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIGV4dHJhY3RMaWNlbnNlczogZmFsc2UsXG4gICAgICAgICAgICBzb3VyY2VNYXA6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzZXJ2ZToge1xuICAgICAgICBidWlsZGVyOiBCdWlsZGVycy5EZXZTZXJ2ZXIsXG4gICAgICAgIGRlZmF1bHRDb25maWd1cmF0aW9uOiAnZGV2ZWxvcG1lbnQnLFxuICAgICAgICBvcHRpb25zOiB7fSxcbiAgICAgICAgY29uZmlndXJhdGlvbnM6IHtcbiAgICAgICAgICBwcm9kdWN0aW9uOiB7XG4gICAgICAgICAgICBicm93c2VyVGFyZ2V0OiBgJHtvcHRpb25zLm5hbWV9OmJ1aWxkOnByb2R1Y3Rpb25gLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZGV2ZWxvcG1lbnQ6IHtcbiAgICAgICAgICAgIGJyb3dzZXJUYXJnZXQ6IGAke29wdGlvbnMubmFtZX06YnVpbGQ6ZGV2ZWxvcG1lbnRgLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgJ2V4dHJhY3QtaTE4bic6IHtcbiAgICAgICAgYnVpbGRlcjogQnVpbGRlcnMuRXh0cmFjdEkxOG4sXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBicm93c2VyVGFyZ2V0OiBgJHtvcHRpb25zLm5hbWV9OmJ1aWxkYCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0ZXN0OiBvcHRpb25zLm1pbmltYWxcbiAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgOiB7XG4gICAgICAgICAgICBidWlsZGVyOiBCdWlsZGVycy5LYXJtYSxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgcG9seWZpbGxzOiBbJ3pvbmUuanMnLCAnem9uZS5qcy90ZXN0aW5nJ10sXG4gICAgICAgICAgICAgIHRzQ29uZmlnOiBgJHtwcm9qZWN0Um9vdH10c2NvbmZpZy5zcGVjLmpzb25gLFxuICAgICAgICAgICAgICBpbmxpbmVTdHlsZUxhbmd1YWdlLFxuICAgICAgICAgICAgICBhc3NldHM6IFtgJHtzb3VyY2VSb290fS9mYXZpY29uLmljb2AsIGAke3NvdXJjZVJvb3R9L2Fzc2V0c2BdLFxuICAgICAgICAgICAgICBzdHlsZXM6IFtgJHtzb3VyY2VSb290fS9zdHlsZXMuJHtvcHRpb25zLnN0eWxlfWBdLFxuICAgICAgICAgICAgICBzY3JpcHRzOiBbXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiB1cGRhdGVXb3Jrc3BhY2UoKHdvcmtzcGFjZSkgPT4ge1xuICAgIHdvcmtzcGFjZS5wcm9qZWN0cy5hZGQoe1xuICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgLi4ucHJvamVjdCxcbiAgICB9KTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFwcE9wdGlvbnMoXG4gIGhvc3Q6IFRyZWUsXG4gIG9wdGlvbnM6IEFwcGxpY2F0aW9uT3B0aW9ucyxcbik6IFByb21pc2U8e1xuICBhcHBEaXI6IHN0cmluZztcbiAgYXBwUm9vdFNlbGVjdG9yOiBzdHJpbmc7XG4gIGNvbXBvbmVudE9wdGlvbnM6IFBhcnRpYWw8Q29tcG9uZW50T3B0aW9ucz47XG4gIGZvbGRlck5hbWU6IHN0cmluZztcbiAgc291cmNlRGlyOiBzdHJpbmc7XG59PiB7XG4gIGNvbnN0IGFwcFJvb3RTZWxlY3RvciA9IGAke29wdGlvbnMucHJlZml4fS1yb290YDtcbiAgY29uc3QgY29tcG9uZW50T3B0aW9ucyA9IGdldENvbXBvbmVudE9wdGlvbnMob3B0aW9ucyk7XG5cbiAgY29uc3Qgd29ya3NwYWNlID0gYXdhaXQgZ2V0V29ya3NwYWNlKGhvc3QpO1xuICBjb25zdCBuZXdQcm9qZWN0Um9vdCA9ICh3b3Jrc3BhY2UuZXh0ZW5zaW9ucy5uZXdQcm9qZWN0Um9vdCBhcyBzdHJpbmcgfCB1bmRlZmluZWQpIHx8ICcnO1xuXG4gIC8vIElmIHNjb3BlZCBwcm9qZWN0IChpLmUuIFwiQGZvby9iYXJcIiksIGNvbnZlcnQgZGlyIHRvIFwiZm9vL2JhclwiLlxuICBsZXQgZm9sZGVyTmFtZSA9IG9wdGlvbnMubmFtZS5zdGFydHNXaXRoKCdAJykgPyBvcHRpb25zLm5hbWUuc2xpY2UoMSkgOiBvcHRpb25zLm5hbWU7XG4gIGlmICgvW0EtWl0vLnRlc3QoZm9sZGVyTmFtZSkpIHtcbiAgICBmb2xkZXJOYW1lID0gc3RyaW5ncy5kYXNoZXJpemUoZm9sZGVyTmFtZSk7XG4gIH1cblxuICBjb25zdCBhcHBEaXIgPVxuICAgIG9wdGlvbnMucHJvamVjdFJvb3QgPT09IHVuZGVmaW5lZFxuICAgICAgPyBqb2luKG5vcm1hbGl6ZShuZXdQcm9qZWN0Um9vdCksIGZvbGRlck5hbWUpXG4gICAgICA6IG5vcm1hbGl6ZShvcHRpb25zLnByb2plY3RSb290KTtcblxuICBjb25zdCBzb3VyY2VEaXIgPSBgJHthcHBEaXJ9L3NyYy9hcHBgO1xuXG4gIHJldHVybiB7XG4gICAgYXBwRGlyLFxuICAgIGFwcFJvb3RTZWxlY3RvcixcbiAgICBjb21wb25lbnRPcHRpb25zLFxuICAgIGZvbGRlck5hbWUsXG4gICAgc291cmNlRGlyLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRDb21wb25lbnRPcHRpb25zKG9wdGlvbnM6IEFwcGxpY2F0aW9uT3B0aW9ucyk6IFBhcnRpYWw8Q29tcG9uZW50T3B0aW9ucz4ge1xuICBjb25zdCBjb21wb25lbnRPcHRpb25zOiBQYXJ0aWFsPENvbXBvbmVudE9wdGlvbnM+ID0gIW9wdGlvbnMubWluaW1hbFxuICAgID8ge1xuICAgICAgICBpbmxpbmVTdHlsZTogb3B0aW9ucy5pbmxpbmVTdHlsZSxcbiAgICAgICAgaW5saW5lVGVtcGxhdGU6IG9wdGlvbnMuaW5saW5lVGVtcGxhdGUsXG4gICAgICAgIHNraXBUZXN0czogb3B0aW9ucy5za2lwVGVzdHMsXG4gICAgICAgIHN0eWxlOiBvcHRpb25zLnN0eWxlLFxuICAgICAgICB2aWV3RW5jYXBzdWxhdGlvbjogb3B0aW9ucy52aWV3RW5jYXBzdWxhdGlvbixcbiAgICAgIH1cbiAgICA6IHtcbiAgICAgICAgaW5saW5lU3R5bGU6IG9wdGlvbnMuaW5saW5lU3R5bGUgPz8gdHJ1ZSxcbiAgICAgICAgaW5saW5lVGVtcGxhdGU6IG9wdGlvbnMuaW5saW5lVGVtcGxhdGUgPz8gdHJ1ZSxcbiAgICAgICAgc2tpcFRlc3RzOiB0cnVlLFxuICAgICAgICBzdHlsZTogb3B0aW9ucy5zdHlsZSxcbiAgICAgICAgdmlld0VuY2Fwc3VsYXRpb246IG9wdGlvbnMudmlld0VuY2Fwc3VsYXRpb24sXG4gICAgICB9O1xuXG4gIHJldHVybiBjb21wb25lbnRPcHRpb25zO1xufVxuIl19
|
package/application/schema.d.ts
CHANGED
|
@@ -46,6 +46,11 @@ export interface Schema {
|
|
|
46
46
|
* Do not create "spec.ts" test files for the application.
|
|
47
47
|
*/
|
|
48
48
|
skipTests?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Creates an application with Server-Side Rendering (SSR) and Static Site Generation
|
|
51
|
+
* (SSG/Prerendering) enabled.
|
|
52
|
+
*/
|
|
53
|
+
ssr?: boolean;
|
|
49
54
|
/**
|
|
50
55
|
* Creates an application based upon the standalone API, without NgModules.
|
|
51
56
|
*/
|
package/application/schema.js
CHANGED
|
@@ -22,4 +22,4 @@ var ViewEncapsulation;
|
|
|
22
22
|
ViewEncapsulation["None"] = "None";
|
|
23
23
|
ViewEncapsulation["ShadowDom"] = "ShadowDom";
|
|
24
24
|
})(ViewEncapsulation || (exports.ViewEncapsulation = ViewEncapsulation = {}));
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc2NoZW1hdGljcy9hbmd1bGFyL2FwcGxpY2F0aW9uL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsbUZBQW1GO0FBQ25GLG9GQUFvRjs7O0FBeUVwRjs7R0FFRztBQUNILElBQVksS0FLWDtBQUxELFdBQVksS0FBSztJQUNiLG9CQUFXLENBQUE7SUFDWCxzQkFBYSxDQUFBO0lBQ2Isc0JBQWEsQ0FBQTtJQUNiLHNCQUFhLENBQUE7QUFDakIsQ0FBQyxFQUxXLEtBQUsscUJBQUwsS0FBSyxRQUtoQjtBQUVEOztHQUVHO0FBQ0gsSUFBWSxpQkFJWDtBQUpELFdBQVksaUJBQWlCO0lBQ3pCLDBDQUFxQixDQUFBO0lBQ3JCLGtDQUFhLENBQUE7SUFDYiw0Q0FBdUIsQ0FBQTtBQUMzQixDQUFDLEVBSlcsaUJBQWlCLGlDQUFqQixpQkFBaUIsUUFJNUIiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIFRISVMgRklMRSBJUyBBVVRPTUFUSUNBTExZIEdFTkVSQVRFRC4gVE8gVVBEQVRFIFRISVMgRklMRSBZT1UgTkVFRCBUTyBDSEFOR0UgVEhFXG4vLyBDT1JSRVNQT05ESU5HIEpTT04gU0NIRU1BIEZJTEUsIFRIRU4gUlVOIGRldmtpdC1hZG1pbiBidWlsZCAob3IgYmF6ZWwgYnVpbGQgLi4uKS5cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBuZXcgYmFzaWMgYXBwbGljYXRpb24gZGVmaW5pdGlvbiBpbiB0aGUgXCJwcm9qZWN0c1wiIHN1YmZvbGRlciBvZiB0aGUgd29ya3NwYWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYSB7XG4gICAgLyoqXG4gICAgICogSW5jbHVkZSBzdHlsZXMgaW5saW5lIGluIHRoZSByb290IGNvbXBvbmVudC50cyBmaWxlLiBPbmx5IENTUyBzdHlsZXMgY2FuIGJlIGluY2x1ZGVkXG4gICAgICogaW5saW5lLiBEZWZhdWx0IGlzIGZhbHNlLCBtZWFuaW5nIHRoYXQgYW4gZXh0ZXJuYWwgc3R5bGVzIGZpbGUgaXMgY3JlYXRlZCBhbmQgcmVmZXJlbmNlZFxuICAgICAqIGluIHRoZSByb290IGNvbXBvbmVudC50cyBmaWxlLlxuICAgICAqL1xuICAgIGlubGluZVN0eWxlPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBJbmNsdWRlIHRlbXBsYXRlIGlubGluZSBpbiB0aGUgcm9vdCBjb21wb25lbnQudHMgZmlsZS4gRGVmYXVsdCBpcyBmYWxzZSwgbWVhbmluZyB0aGF0IGFuXG4gICAgICogZXh0ZXJuYWwgdGVtcGxhdGUgZmlsZSBpcyBjcmVhdGVkIGFuZCByZWZlcmVuY2VkIGluIHRoZSByb290IGNvbXBvbmVudC50cyBmaWxlLlxuICAgICAqL1xuICAgIGlubGluZVRlbXBsYXRlPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBiYXJlLWJvbmVzIHByb2plY3Qgd2l0aG91dCBhbnkgdGVzdGluZyBmcmFtZXdvcmtzLiAoVXNlIGZvciBsZWFybmluZyBwdXJwb3Nlc1xuICAgICAqIG9ubHkuKVxuICAgICAqL1xuICAgIG1pbmltYWw/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBuZXcgYXBwbGljYXRpb24uXG4gICAgICovXG4gICAgbmFtZTogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEEgcHJlZml4IHRvIGFwcGx5IHRvIGdlbmVyYXRlZCBzZWxlY3RvcnMuXG4gICAgICovXG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgbmV3IGFwcGxpY2F0aW9uLlxuICAgICAqL1xuICAgIHByb2plY3RSb290Pzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXBwbGljYXRpb24gd2l0aCByb3V0aW5nIGVuYWJsZWQuXG4gICAgICovXG4gICAgcm91dGluZz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogU2tpcCBpbnN0YWxsaW5nIGRlcGVuZGVuY3kgcGFja2FnZXMuXG4gICAgICovXG4gICAgc2tpcEluc3RhbGw/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIERvIG5vdCBhZGQgZGVwZW5kZW5jaWVzIHRvIHRoZSBcInBhY2thZ2UuanNvblwiIGZpbGUuXG4gICAgICovXG4gICAgc2tpcFBhY2thZ2VKc29uPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBEbyBub3QgY3JlYXRlIFwic3BlYy50c1wiIHRlc3QgZmlsZXMgZm9yIHRoZSBhcHBsaWNhdGlvbi5cbiAgICAgKi9cbiAgICBza2lwVGVzdHM/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXBwbGljYXRpb24gd2l0aCBTZXJ2ZXItU2lkZSBSZW5kZXJpbmcgKFNTUikgYW5kIFN0YXRpYyBTaXRlIEdlbmVyYXRpb25cbiAgICAgKiAoU1NHL1ByZXJlbmRlcmluZykgZW5hYmxlZC5cbiAgICAgKi9cbiAgICBzc3I/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXBwbGljYXRpb24gYmFzZWQgdXBvbiB0aGUgc3RhbmRhbG9uZSBBUEksIHdpdGhvdXQgTmdNb2R1bGVzLlxuICAgICAqL1xuICAgIHN0YW5kYWxvbmU/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXBwbGljYXRpb24gd2l0aCBzdHJpY3RlciBidW5kbGUgYnVkZ2V0cyBzZXR0aW5ncy5cbiAgICAgKi9cbiAgICBzdHJpY3Q/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFRoZSBmaWxlIGV4dGVuc2lvbiBvciBwcmVwcm9jZXNzb3IgdG8gdXNlIGZvciBzdHlsZSBmaWxlcy5cbiAgICAgKi9cbiAgICBzdHlsZT86IFN0eWxlO1xuICAgIC8qKlxuICAgICAqIFRoZSB2aWV3IGVuY2Fwc3VsYXRpb24gc3RyYXRlZ3kgdG8gdXNlIGluIHRoZSBuZXcgYXBwbGljYXRpb24uXG4gICAgICovXG4gICAgdmlld0VuY2Fwc3VsYXRpb24/OiBWaWV3RW5jYXBzdWxhdGlvbjtcbn1cblxuLyoqXG4gKiBUaGUgZmlsZSBleHRlbnNpb24gb3IgcHJlcHJvY2Vzc29yIHRvIHVzZSBmb3Igc3R5bGUgZmlsZXMuXG4gKi9cbmV4cG9ydCBlbnVtIFN0eWxlIHtcbiAgICBDc3MgPSBcImNzc1wiLFxuICAgIExlc3MgPSBcImxlc3NcIixcbiAgICBTYXNzID0gXCJzYXNzXCIsXG4gICAgU2NzcyA9IFwic2Nzc1wiLFxufVxuXG4vKipcbiAqIFRoZSB2aWV3IGVuY2Fwc3VsYXRpb24gc3RyYXRlZ3kgdG8gdXNlIGluIHRoZSBuZXcgYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCBlbnVtIFZpZXdFbmNhcHN1bGF0aW9uIHtcbiAgICBFbXVsYXRlZCA9IFwiRW11bGF0ZWRcIixcbiAgICBOb25lID0gXCJOb25lXCIsXG4gICAgU2hhZG93RG9tID0gXCJTaGFkb3dEb21cIixcbn1cbiJdfQ==
|
package/application/schema.json
CHANGED
|
@@ -105,8 +105,15 @@
|
|
|
105
105
|
"standalone": {
|
|
106
106
|
"description": "Creates an application based upon the standalone API, without NgModules.",
|
|
107
107
|
"type": "boolean",
|
|
108
|
-
"default":
|
|
108
|
+
"default": true,
|
|
109
109
|
"x-user-analytics": "ep.ng_standalone"
|
|
110
|
+
},
|
|
111
|
+
"ssr": {
|
|
112
|
+
"description": "Creates an application with Server-Side Rendering (SSR) and Static Site Generation (SSG/Prerendering) enabled.",
|
|
113
|
+
"x-prompt": "Do you want to enable Server-Side Rendering (SSR) and Static Site Generation (SSG/Prerendering)?",
|
|
114
|
+
"type": "boolean",
|
|
115
|
+
"default": false,
|
|
116
|
+
"x-user-analytics": "ep.ng_ssr"
|
|
110
117
|
}
|
|
111
118
|
},
|
|
112
119
|
"required": ["name"]
|
package/collection.json
CHANGED
|
@@ -100,6 +100,12 @@
|
|
|
100
100
|
"schema": "./server/schema.json",
|
|
101
101
|
"hidden": true
|
|
102
102
|
},
|
|
103
|
+
"ssr": {
|
|
104
|
+
"factory": "./ssr",
|
|
105
|
+
"description": "Adds SSR to an Angular app.",
|
|
106
|
+
"schema": "./ssr/schema.json",
|
|
107
|
+
"hidden": true
|
|
108
|
+
},
|
|
103
109
|
"app-shell": {
|
|
104
110
|
"factory": "./app-shell",
|
|
105
111
|
"description": "Create an application shell.",
|
package/component/schema.json
CHANGED
package/directive/schema.json
CHANGED
package/e2e/index.js
CHANGED
|
@@ -65,6 +65,7 @@ function default_1(options) {
|
|
|
65
65
|
}),
|
|
66
66
|
(0, schematics_1.move)(e2eRootPath),
|
|
67
67
|
])),
|
|
68
|
+
(0, utility_1.addRootProvider)(relatedAppName, ({ code, external }) => code `${external('provideProtractorTestingSupport', '@angular/platform-browser')}()`),
|
|
68
69
|
...E2E_DEV_DEPENDENCIES.map((name) => (0, utility_1.addDependency)(name, latest_versions_1.latestVersions[name], {
|
|
69
70
|
type: utility_1.DependencyType.Dev,
|
|
70
71
|
existing: utility_1.ExistingBehavior.Skip,
|
|
@@ -74,4 +75,4 @@ function default_1(options) {
|
|
|
74
75
|
});
|
|
75
76
|
}
|
|
76
77
|
exports.default = default_1;
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zY2hlbWF0aWNzL2FuZ3VsYXIvZTJlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7O0FBRUgsMkRBVW9DO0FBQ3BDLHlEQU9xQztBQUNyQywrQkFBcUM7QUFDckMsb0RBQWdEO0FBQ2hELGdFQUE0RDtBQUc1RDs7OztHQUlHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3pDLFlBQVk7SUFDWix1QkFBdUI7SUFDdkIsU0FBUztJQUNULGFBQWE7Q0FDZCxDQUFDLENBQUM7QUFFSCxTQUFTLHVCQUF1QjtJQUM5QixPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDZCxNQUFNLE9BQU8sR0FBRyxJQUFJLG9CQUFRLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sYUFBYSxHQUFHLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXpDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQy9CLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNoRDtJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxtQkFBeUIsT0FBbUI7SUFDMUMsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUVuQyxPQUFPLElBQUEseUJBQWUsRUFBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1FBQ25DLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXZELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixNQUFNLElBQUksZ0NBQW1CLENBQUMsaUJBQWlCLGNBQWMsc0JBQXNCLENBQUMsQ0FBQztTQUN0RjtRQUVELE1BQU0sV0FBVyxHQUFHLFlBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUVuRCxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUNsQixJQUFJLEVBQUUsS0FBSztZQUNYLE9BQU8sRUFBRSx3QkFBYyxDQUFDLFVBQVU7WUFDbEMsb0JBQW9CLEVBQUUsYUFBYTtZQUNuQyxPQUFPLEVBQUU7Z0JBQ1AsZ0JBQWdCLEVBQUUsWUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsb0JBQW9CLENBQUM7YUFDL0Q7WUFDRCxjQUFjLEVBQUU7Z0JBQ2QsVUFBVSxFQUFFO29CQUNWLGVBQWUsRUFBRSxHQUFHLGNBQWMsbUJBQW1CO2lCQUN0RDtnQkFDRCxXQUFXLEVBQUU7b0JBQ1gsZUFBZSxFQUFFLEdBQUcsY0FBYyxvQkFBb0I7aUJBQ3ZEO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUEsa0JBQUssRUFBQztZQUNYLElBQUEsc0JBQVMsRUFDUCxJQUFBLGtCQUFLLEVBQUMsSUFBQSxnQkFBRyxFQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUNwQixJQUFBLDJCQUFjLEVBQUM7b0JBQ2IsS0FBSyxFQUFFLG9CQUFPO29CQUNkLEdBQUcsT0FBTztvQkFDViwyQkFBMkIsRUFBRSxZQUFJLENBQUMsUUFBUSxDQUFDLFlBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQztpQkFDN0UsQ0FBQztnQkFDRixJQUFBLGlCQUFJLEVBQUMsV0FBVyxDQUFDO2FBQ2xCLENBQUMsQ0FDSDtZQUNELElBQUEseUJBQWUsRUFDYixjQUFjLEVBQ2QsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQ3JCLElBQUksQ0FBQSxHQUFHLFFBQVEsQ0FBQyxpQ0FBaUMsRUFBRSwyQkFBMkIsQ0FBQyxJQUFJLENBQ3RGO1lBQ0QsR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNuQyxJQUFBLHVCQUFhLEVBQUMsSUFBSSxFQUFFLGdDQUFjLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3hDLElBQUksRUFBRSx3QkFBYyxDQUFDLEdBQUc7Z0JBQ3hCLFFBQVEsRUFBRSwwQkFBZ0IsQ0FBQyxJQUFJO2FBQ2hDLENBQUMsQ0FDSDtZQUNELHVCQUF1QixFQUFFO1NBQzFCLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQXRERCw0QkFzREMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtcbiAgUnVsZSxcbiAgU2NoZW1hdGljc0V4Y2VwdGlvbixcbiAgYXBwbHksXG4gIGFwcGx5VGVtcGxhdGVzLFxuICBjaGFpbixcbiAgbWVyZ2VXaXRoLFxuICBtb3ZlLFxuICBzdHJpbmdzLFxuICB1cmwsXG59IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzJztcbmltcG9ydCB7XG4gIEFuZ3VsYXJCdWlsZGVyLFxuICBEZXBlbmRlbmN5VHlwZSxcbiAgRXhpc3RpbmdCZWhhdmlvcixcbiAgYWRkRGVwZW5kZW5jeSxcbiAgYWRkUm9vdFByb3ZpZGVyLFxuICB1cGRhdGVXb3Jrc3BhY2UsXG59IGZyb20gJ0BzY2hlbWF0aWNzL2FuZ3VsYXIvdXRpbGl0eSc7XG5pbXBvcnQgeyBwb3NpeCBhcyBwYXRoIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBKU09ORmlsZSB9IGZyb20gJy4uL3V0aWxpdHkvanNvbi1maWxlJztcbmltcG9ydCB7IGxhdGVzdFZlcnNpb25zIH0gZnJvbSAnLi4vdXRpbGl0eS9sYXRlc3QtdmVyc2lvbnMnO1xuaW1wb3J0IHsgU2NoZW1hIGFzIEUyZU9wdGlvbnMgfSBmcm9tICcuL3NjaGVtYSc7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2YgZGV2ZWxvcG1lbnQgZGVwZW5kZW5jaWVzIHVzZWQgYnkgdGhlIEUyRSBwcm90cmFjdG9yLWJhc2VkIGJ1aWxkZXIuXG4gKiBUaGUgdmVyc2lvbnMgYXJlIHNvdXJjZWQgZnJvbSB0aGUgbGF0ZXN0IHZlcnNpb25zIGAuLi91dGlsaXR5L2xhdGVzdC12ZXJzaW9ucy9wYWNrYWdlLmpzb25gXG4gKiBmaWxlIHdoaWNoIGlzIGF1dG9tYXRpY2FsbHkgdXBkYXRlZCB2aWEgcmVub3ZhdGUuXG4gKi9cbmNvbnN0IEUyRV9ERVZfREVQRU5ERU5DSUVTID0gT2JqZWN0LmZyZWV6ZShbXG4gICdwcm90cmFjdG9yJyxcbiAgJ2phc21pbmUtc3BlYy1yZXBvcnRlcicsXG4gICd0cy1ub2RlJyxcbiAgJ0B0eXBlcy9ub2RlJyxcbl0pO1xuXG5mdW5jdGlvbiBhZGRTY3JpcHRzVG9QYWNrYWdlSnNvbigpOiBSdWxlIHtcbiAgcmV0dXJuIChob3N0KSA9PiB7XG4gICAgY29uc3QgcGtnSnNvbiA9IG5ldyBKU09ORmlsZShob3N0LCAncGFja2FnZS5qc29uJyk7XG4gICAgY29uc3QgZTJlU2NyaXB0UGF0aCA9IFsnc2NyaXB0cycsICdlMmUnXTtcblxuICAgIGlmICghcGtnSnNvbi5nZXQoZTJlU2NyaXB0UGF0aCkpIHtcbiAgICAgIHBrZ0pzb24ubW9kaWZ5KGUyZVNjcmlwdFBhdGgsICduZyBlMmUnLCBmYWxzZSk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAob3B0aW9uczogRTJlT3B0aW9ucyk6IFJ1bGUge1xuICBjb25zdCB7IHJlbGF0ZWRBcHBOYW1lIH0gPSBvcHRpb25zO1xuXG4gIHJldHVybiB1cGRhdGVXb3Jrc3BhY2UoKHdvcmtzcGFjZSkgPT4ge1xuICAgIGNvbnN0IHByb2plY3QgPSB3b3Jrc3BhY2UucHJvamVjdHMuZ2V0KHJlbGF0ZWRBcHBOYW1lKTtcblxuICAgIGlmICghcHJvamVjdCkge1xuICAgICAgdGhyb3cgbmV3IFNjaGVtYXRpY3NFeGNlcHRpb24oYFByb2plY3QgbmFtZSBcIiR7cmVsYXRlZEFwcE5hbWV9XCIgZG9lc24ndCBub3QgZXhpc3QuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgZTJlUm9vdFBhdGggPSBwYXRoLmpvaW4ocHJvamVjdC5yb290LCAnZTJlJyk7XG5cbiAgICBwcm9qZWN0LnRhcmdldHMuYWRkKHtcbiAgICAgIG5hbWU6ICdlMmUnLFxuICAgICAgYnVpbGRlcjogQW5ndWxhckJ1aWxkZXIuUHJvdHJhY3RvcixcbiAgICAgIGRlZmF1bHRDb25maWd1cmF0aW9uOiAnZGV2ZWxvcG1lbnQnLFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBwcm90cmFjdG9yQ29uZmlnOiBwYXRoLmpvaW4oZTJlUm9vdFBhdGgsICdwcm90cmFjdG9yLmNvbmYuanMnKSxcbiAgICAgIH0sXG4gICAgICBjb25maWd1cmF0aW9uczoge1xuICAgICAgICBwcm9kdWN0aW9uOiB7XG4gICAgICAgICAgZGV2U2VydmVyVGFyZ2V0OiBgJHtyZWxhdGVkQXBwTmFtZX06c2VydmU6cHJvZHVjdGlvbmAsXG4gICAgICAgIH0sXG4gICAgICAgIGRldmVsb3BtZW50OiB7XG4gICAgICAgICAgZGV2U2VydmVyVGFyZ2V0OiBgJHtyZWxhdGVkQXBwTmFtZX06c2VydmU6ZGV2ZWxvcG1lbnRgLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBjaGFpbihbXG4gICAgICBtZXJnZVdpdGgoXG4gICAgICAgIGFwcGx5KHVybCgnLi9maWxlcycpLCBbXG4gICAgICAgICAgYXBwbHlUZW1wbGF0ZXMoe1xuICAgICAgICAgICAgdXRpbHM6IHN0cmluZ3MsXG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgcmVsYXRpdmVQYXRoVG9Xb3Jrc3BhY2VSb290OiBwYXRoLnJlbGF0aXZlKHBhdGguam9pbignLycsIGUyZVJvb3RQYXRoKSwgJy8nKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBtb3ZlKGUyZVJvb3RQYXRoKSxcbiAgICAgICAgXSksXG4gICAgICApLFxuICAgICAgYWRkUm9vdFByb3ZpZGVyKFxuICAgICAgICByZWxhdGVkQXBwTmFtZSxcbiAgICAgICAgKHsgY29kZSwgZXh0ZXJuYWwgfSkgPT5cbiAgICAgICAgICBjb2RlYCR7ZXh0ZXJuYWwoJ3Byb3ZpZGVQcm90cmFjdG9yVGVzdGluZ1N1cHBvcnQnLCAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlcicpfSgpYCxcbiAgICAgICksXG4gICAgICAuLi5FMkVfREVWX0RFUEVOREVOQ0lFUy5tYXAoKG5hbWUpID0+XG4gICAgICAgIGFkZERlcGVuZGVuY3kobmFtZSwgbGF0ZXN0VmVyc2lvbnNbbmFtZV0sIHtcbiAgICAgICAgICB0eXBlOiBEZXBlbmRlbmN5VHlwZS5EZXYsXG4gICAgICAgICAgZXhpc3Rpbmc6IEV4aXN0aW5nQmVoYXZpb3IuU2tpcCxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICAgYWRkU2NyaXB0c1RvUGFja2FnZUpzb24oKSxcbiAgICBdKTtcbiAgfSk7XG59XG4iXX0=
|
package/interceptor/schema.json
CHANGED
package/library/schema.json
CHANGED
package/ng-new/schema.d.ts
CHANGED
|
@@ -66,6 +66,11 @@ export interface Schema {
|
|
|
66
66
|
* Do not generate "spec.ts" test files for the new project.
|
|
67
67
|
*/
|
|
68
68
|
skipTests?: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Creates an application with Server-Side Rendering (SSR) and Static Site Generation
|
|
71
|
+
* (SSG/Prerendering) enabled.
|
|
72
|
+
*/
|
|
73
|
+
ssr?: boolean;
|
|
69
74
|
/**
|
|
70
75
|
* Creates an application based upon the standalone API, without NgModules.
|
|
71
76
|
*/
|
package/ng-new/schema.js
CHANGED
|
@@ -32,4 +32,4 @@ var ViewEncapsulation;
|
|
|
32
32
|
ViewEncapsulation["None"] = "None";
|
|
33
33
|
ViewEncapsulation["ShadowDom"] = "ShadowDom";
|
|
34
34
|
})(ViewEncapsulation || (exports.ViewEncapsulation = ViewEncapsulation = {}));
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc2NoZW1hdGljcy9hbmd1bGFyL25nLW5ldy9zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLG1GQUFtRjtBQUNuRixvRkFBb0Y7OztBQStHcEY7O0dBRUc7QUFDSCxJQUFZLGNBS1g7QUFMRCxXQUFZLGNBQWM7SUFDdEIsK0JBQWEsQ0FBQTtJQUNiLDZCQUFXLENBQUE7SUFDWCwrQkFBYSxDQUFBO0lBQ2IsK0JBQWEsQ0FBQTtBQUNqQixDQUFDLEVBTFcsY0FBYyw4QkFBZCxjQUFjLFFBS3pCO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLEtBS1g7QUFMRCxXQUFZLEtBQUs7SUFDYixvQkFBVyxDQUFBO0lBQ1gsc0JBQWEsQ0FBQTtJQUNiLHNCQUFhLENBQUE7SUFDYixzQkFBYSxDQUFBO0FBQ2pCLENBQUMsRUFMVyxLQUFLLHFCQUFMLEtBQUssUUFLaEI7QUFFRDs7R0FFRztBQUNILElBQVksaUJBSVg7QUFKRCxXQUFZLGlCQUFpQjtJQUN6QiwwQ0FBcUIsQ0FBQTtJQUNyQixrQ0FBYSxDQUFBO0lBQ2IsNENBQXVCLENBQUE7QUFDM0IsQ0FBQyxFQUpXLGlCQUFpQixpQ0FBakIsaUJBQWlCLFFBSTVCIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyBUSElTIEZJTEUgSVMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQuIFRPIFVQREFURSBUSElTIEZJTEUgWU9VIE5FRUQgVE8gQ0hBTkdFIFRIRVxuLy8gQ09SUkVTUE9ORElORyBKU09OIFNDSEVNQSBGSUxFLCBUSEVOIFJVTiBkZXZraXQtYWRtaW4gYnVpbGQgKG9yIGJhemVsIGJ1aWxkIC4uLikuXG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBwcm9qZWN0IGJ5IGNvbWJpbmluZyB0aGUgd29ya3NwYWNlIGFuZCBhcHBsaWNhdGlvbiBzY2hlbWF0aWNzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYSB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhbCBnaXQgcmVwb3NpdG9yeSBjb21taXQgaW5mb3JtYXRpb24uXG4gICAgICovXG4gICAgY29tbWl0PzogQ29tbWl0VW5pb247XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgbmV3IGluaXRpYWwgYXBwbGljYXRpb24gcHJvamVjdCBpbiB0aGUgJ3NyYycgZm9sZGVyIG9mIHRoZSBuZXcgd29ya3NwYWNlLiBXaGVuXG4gICAgICogZmFsc2UsIGNyZWF0ZXMgYW4gZW1wdHkgd29ya3NwYWNlIHdpdGggbm8gaW5pdGlhbCBhcHBsaWNhdGlvbi4gWW91IGNhbiB0aGVuIHVzZSB0aGVcbiAgICAgKiBnZW5lcmF0ZSBhcHBsaWNhdGlvbiBjb21tYW5kIHNvIHRoYXQgYWxsIGFwcGxpY2F0aW9ucyBhcmUgY3JlYXRlZCBpbiB0aGUgcHJvamVjdHMgZm9sZGVyLlxuICAgICAqL1xuICAgIGNyZWF0ZUFwcGxpY2F0aW9uPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBUaGUgZGlyZWN0b3J5IG5hbWUgdG8gY3JlYXRlIHRoZSB3b3Jrc3BhY2UgaW4uXG4gICAgICovXG4gICAgZGlyZWN0b3J5Pzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEluY2x1ZGUgc3R5bGVzIGlubGluZSBpbiB0aGUgY29tcG9uZW50IFRTIGZpbGUuIEJ5IGRlZmF1bHQsIGFuIGV4dGVybmFsIHN0eWxlcyBmaWxlIGlzXG4gICAgICogY3JlYXRlZCBhbmQgcmVmZXJlbmNlZCBpbiB0aGUgY29tcG9uZW50IFR5cGVTY3JpcHQgZmlsZS5cbiAgICAgKi9cbiAgICBpbmxpbmVTdHlsZT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogSW5jbHVkZSB0ZW1wbGF0ZSBpbmxpbmUgaW4gdGhlIGNvbXBvbmVudCBUUyBmaWxlLiBCeSBkZWZhdWx0LCBhbiBleHRlcm5hbCB0ZW1wbGF0ZSBmaWxlXG4gICAgICogaXMgY3JlYXRlZCBhbmQgcmVmZXJlbmNlZCBpbiB0aGUgY29tcG9uZW50IFR5cGVTY3JpcHQgZmlsZS5cbiAgICAgKi9cbiAgICBpbmxpbmVUZW1wbGF0ZT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogTGluayB0aGUgQ0xJIHRvIHRoZSBnbG9iYWwgdmVyc2lvbiAoaW50ZXJuYWwgZGV2ZWxvcG1lbnQgb25seSkuXG4gICAgICovXG4gICAgbGlua0NsaT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgd29ya3NwYWNlIHdpdGhvdXQgYW55IHRlc3RpbmcgZnJhbWV3b3Jrcy4gKFVzZSBmb3IgbGVhcm5pbmcgcHVycG9zZXMgb25seS4pXG4gICAgICovXG4gICAgbWluaW1hbD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIG5ldyB3b3Jrc3BhY2UgYW5kIGluaXRpYWwgcHJvamVjdC5cbiAgICAgKi9cbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIHBhdGggd2hlcmUgbmV3IHByb2plY3RzIHdpbGwgYmUgY3JlYXRlZCwgcmVsYXRpdmUgdG8gdGhlIG5ldyB3b3Jrc3BhY2Ugcm9vdC5cbiAgICAgKi9cbiAgICBuZXdQcm9qZWN0Um9vdD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgcGFja2FnZSBtYW5hZ2VyIHVzZWQgdG8gaW5zdGFsbCBkZXBlbmRlbmNpZXMuXG4gICAgICovXG4gICAgcGFja2FnZU1hbmFnZXI/OiBQYWNrYWdlTWFuYWdlcjtcbiAgICAvKipcbiAgICAgKiBUaGUgcHJlZml4IHRvIGFwcGx5IHRvIGdlbmVyYXRlZCBzZWxlY3RvcnMgZm9yIHRoZSBpbml0aWFsIHByb2plY3QuXG4gICAgICovXG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEVuYWJsZSByb3V0aW5nIGluIHRoZSBpbml0aWFsIHByb2plY3QuXG4gICAgICovXG4gICAgcm91dGluZz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogRG8gbm90IGluaXRpYWxpemUgYSBnaXQgcmVwb3NpdG9yeS5cbiAgICAgKi9cbiAgICBza2lwR2l0PzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBEbyBub3QgaW5zdGFsbCBkZXBlbmRlbmN5IHBhY2thZ2VzLlxuICAgICAqL1xuICAgIHNraXBJbnN0YWxsPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBEbyBub3QgZ2VuZXJhdGUgXCJzcGVjLnRzXCIgdGVzdCBmaWxlcyBmb3IgdGhlIG5ldyBwcm9qZWN0LlxuICAgICAqL1xuICAgIHNraXBUZXN0cz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcHBsaWNhdGlvbiB3aXRoIFNlcnZlci1TaWRlIFJlbmRlcmluZyAoU1NSKSBhbmQgU3RhdGljIFNpdGUgR2VuZXJhdGlvblxuICAgICAqIChTU0cvUHJlcmVuZGVyaW5nKSBlbmFibGVkLlxuICAgICAqL1xuICAgIHNzcj86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcHBsaWNhdGlvbiBiYXNlZCB1cG9uIHRoZSBzdGFuZGFsb25lIEFQSSwgd2l0aG91dCBOZ01vZHVsZXMuXG4gICAgICovXG4gICAgc3RhbmRhbG9uZT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHdvcmtzcGFjZSB3aXRoIHN0cmljdGVyIHR5cGUgY2hlY2tpbmcgYW5kIHN0cmljdGVyIGJ1bmRsZSBidWRnZXRzIHNldHRpbmdzLlxuICAgICAqIFRoaXMgc2V0dGluZyBoZWxwcyBpbXByb3ZlIG1haW50YWluYWJpbGl0eSBhbmQgY2F0Y2ggYnVncyBhaGVhZCBvZiB0aW1lLiBGb3IgbW9yZVxuICAgICAqIGluZm9ybWF0aW9uLCBzZWUgaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL3N0cmljdC1tb2RlXG4gICAgICovXG4gICAgc3RyaWN0PzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBUaGUgZmlsZSBleHRlbnNpb24gb3IgcHJlcHJvY2Vzc29yIHRvIHVzZSBmb3Igc3R5bGUgZmlsZXMuXG4gICAgICovXG4gICAgc3R5bGU/OiBTdHlsZTtcbiAgICAvKipcbiAgICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgQW5ndWxhciBDTEkgdG8gdXNlLlxuICAgICAqL1xuICAgIHZlcnNpb246IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgdmlldyBlbmNhcHN1bGF0aW9uIHN0cmF0ZWd5IHRvIHVzZSBpbiB0aGUgaW5pdGlhbCBwcm9qZWN0LlxuICAgICAqL1xuICAgIHZpZXdFbmNhcHN1bGF0aW9uPzogVmlld0VuY2Fwc3VsYXRpb247XG59XG5cbi8qKlxuICogSW5pdGlhbCBnaXQgcmVwb3NpdG9yeSBjb21taXQgaW5mb3JtYXRpb24uXG4gKi9cbmV4cG9ydCB0eXBlIENvbW1pdFVuaW9uID0gYm9vbGVhbiB8IENvbW1pdE9iamVjdDtcblxuZXhwb3J0IGludGVyZmFjZSBDb21taXRPYmplY3Qge1xuICAgIGVtYWlsOiAgICBzdHJpbmc7XG4gICAgbWVzc2FnZT86IHN0cmluZztcbiAgICBuYW1lOiAgICAgc3RyaW5nO1xuICAgIFtwcm9wZXJ0eTogc3RyaW5nXTogYW55O1xufVxuXG4vKipcbiAqIFRoZSBwYWNrYWdlIG1hbmFnZXIgdXNlZCB0byBpbnN0YWxsIGRlcGVuZGVuY2llcy5cbiAqL1xuZXhwb3J0IGVudW0gUGFja2FnZU1hbmFnZXIge1xuICAgIENucG0gPSBcImNucG1cIixcbiAgICBOcG0gPSBcIm5wbVwiLFxuICAgIFBucG0gPSBcInBucG1cIixcbiAgICBZYXJuID0gXCJ5YXJuXCIsXG59XG5cbi8qKlxuICogVGhlIGZpbGUgZXh0ZW5zaW9uIG9yIHByZXByb2Nlc3NvciB0byB1c2UgZm9yIHN0eWxlIGZpbGVzLlxuICovXG5leHBvcnQgZW51bSBTdHlsZSB7XG4gICAgQ3NzID0gXCJjc3NcIixcbiAgICBMZXNzID0gXCJsZXNzXCIsXG4gICAgU2FzcyA9IFwic2Fzc1wiLFxuICAgIFNjc3MgPSBcInNjc3NcIixcbn1cblxuLyoqXG4gKiBUaGUgdmlldyBlbmNhcHN1bGF0aW9uIHN0cmF0ZWd5IHRvIHVzZSBpbiB0aGUgaW5pdGlhbCBwcm9qZWN0LlxuICovXG5leHBvcnQgZW51bSBWaWV3RW5jYXBzdWxhdGlvbiB7XG4gICAgRW11bGF0ZWQgPSBcIkVtdWxhdGVkXCIsXG4gICAgTm9uZSA9IFwiTm9uZVwiLFxuICAgIFNoYWRvd0RvbSA9IFwiU2hhZG93RG9tXCIsXG59XG4iXX0=
|
package/ng-new/schema.json
CHANGED
|
@@ -137,8 +137,14 @@
|
|
|
137
137
|
"standalone": {
|
|
138
138
|
"description": "Creates an application based upon the standalone API, without NgModules.",
|
|
139
139
|
"type": "boolean",
|
|
140
|
-
"default":
|
|
140
|
+
"default": true,
|
|
141
141
|
"x-user-analytics": "ep.ng_standalone"
|
|
142
|
+
},
|
|
143
|
+
"ssr": {
|
|
144
|
+
"description": "Creates an application with Server-Side Rendering (SSR) and Static Site Generation (SSG/Prerendering) enabled.",
|
|
145
|
+
"type": "boolean",
|
|
146
|
+
"default": false,
|
|
147
|
+
"x-user-analytics": "ep.ng_ssr"
|
|
142
148
|
}
|
|
143
149
|
},
|
|
144
150
|
"required": ["name", "version"]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@schematics/angular",
|
|
3
|
-
"version": "17.0.0-next.
|
|
3
|
+
"version": "17.0.0-next.6",
|
|
4
4
|
"description": "Schematics specific to Angular",
|
|
5
5
|
"homepage": "https://github.com/angular/angular-cli",
|
|
6
6
|
"keywords": [
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
},
|
|
24
24
|
"schematics": "./collection.json",
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@angular-devkit/core": "17.0.0-next.
|
|
27
|
-
"@angular-devkit/schematics": "17.0.0-next.
|
|
26
|
+
"@angular-devkit/core": "17.0.0-next.6",
|
|
27
|
+
"@angular-devkit/schematics": "17.0.0-next.6",
|
|
28
28
|
"jsonc-parser": "3.2.0"
|
|
29
29
|
},
|
|
30
30
|
"repository": {
|
package/pipe/schema.json
CHANGED
package/server/index.js
CHANGED
|
@@ -11,6 +11,7 @@ const core_1 = require("@angular-devkit/core");
|
|
|
11
11
|
const schematics_1 = require("@angular-devkit/schematics");
|
|
12
12
|
const tasks_1 = require("@angular-devkit/schematics/tasks");
|
|
13
13
|
const node_path_1 = require("node:path");
|
|
14
|
+
const utility_1 = require("../utility");
|
|
14
15
|
const dependencies_1 = require("../utility/dependencies");
|
|
15
16
|
const json_file_1 = require("../utility/json-file");
|
|
16
17
|
const latest_versions_1 = require("../utility/latest-versions");
|
|
@@ -175,8 +176,9 @@ function default_1(options) {
|
|
|
175
176
|
updateConfigFileBrowserBuilder(options, tsConfigDirectory),
|
|
176
177
|
]),
|
|
177
178
|
addDependencies(),
|
|
179
|
+
(0, utility_1.addRootProvider)(options.project, ({ code, external }) => code `${external('provideClientHydration', '@angular/platform-browser')}()`),
|
|
178
180
|
]);
|
|
179
181
|
};
|
|
180
182
|
}
|
|
181
183
|
exports.default = default_1;
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zY2hlbWF0aWNzL2FuZ3VsYXIvc2VydmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7O0FBRUgsK0NBQTJGO0FBQzNGLDJEQVlvQztBQUNwQyw0REFBMEU7QUFDMUUseUNBQWtDO0FBQ2xDLDBEQUlpQztBQUNqQyxvREFBZ0Q7QUFDaEQsZ0VBQTREO0FBQzVELDBEQUEwRDtBQUMxRCw0Q0FBK0Q7QUFDL0QsZ0VBQXNFO0FBQ3RFLHFEQUE2RDtBQUM3RCxvREFBcUU7QUFDckUsa0VBQXVEO0FBR3ZELE1BQU0sbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUM7QUFFN0MsU0FBUyw4QkFBOEIsQ0FBQyxPQUFzQixFQUFFLGlCQUF1QjtJQUNyRixPQUFPLElBQUEsMkJBQWUsRUFBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1FBQ25DLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU5RCxJQUFJLGFBQWEsRUFBRTtZQUNqQixnREFBZ0Q7WUFDaEQsb0RBQW9EO1lBQ3BELHVEQUF1RDtZQUN2RCwyRkFBMkY7WUFDM0YsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFVBQWlELEVBQUUsRUFBTSxFQUFFO2dCQUNuRixPQUFPO29CQUNMLGNBQWMsRUFBRSxPQUFPLEVBQUUsY0FBYztvQkFDdkMsYUFBYSxFQUFFLE9BQU8sRUFBRSxhQUFhLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxhQUFhO29CQUNsRixnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCO29CQUMzQyxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENB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aUIsR0FBRyxJQUFBLGNBQU8sRUFBQyxjQUFjLENBQUMsQ0FBQztRQUVsRCxPQUFPLElBQUEsa0JBQUssRUFBQztZQUNYLElBQUEsc0JBQVMsRUFBQyxjQUFjLENBQUM7WUFDekIsR0FBRyxDQUFDLHlCQUF5QjtnQkFDM0IsQ0FBQyxDQUFDO29CQUNFLGtDQUFrQyxDQUFDLE9BQU8sQ0FBQztvQkFDM0Msa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDO2lCQUNoRDtnQkFDSCxDQUFDLENBQUM7b0JBQ0UsSUFBQSxzQkFBUyxFQUNQLElBQUEsa0JBQUssRUFBQyxJQUFBLGdCQUFHLEVBQUMsY0FBYyxDQUFDLEVBQUU7d0JBQ3pCLElBQUEsMkJBQWMsRUFBQzs0QkFDYixHQUFHLG9CQUFPOzRCQUNWLEdBQUcsT0FBTzs0QkFDVixnQkFBZ0IsRUFBRSxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDOzRCQUN2RCxlQUFlOzRCQUNmLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxJQUFBLHVDQUF3QixFQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQzs0QkFDekUsMkJBQTJCLEVBQUUsSUFBQSxtQ0FBMkIsRUFBQyxpQkFBaUIsQ0FBQzt5QkFDNUUsQ0FBQzt3QkFDRixJQUFBLGlCQUFJLEVBQUMsaUJBQWlCLENBQUM7cUJBQ3hCLENBQUMsQ0FDSDtvQkFDRCw4QkFBOEIsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUM7aUJBQzNELENBQUM7WUFDTixlQUFlLEVBQUU7U0FDbEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQW5FRCw0QkFtRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgSnNvblZhbHVlLCBQYXRoLCBiYXNlbmFtZSwgZGlybmFtZSwgam9pbiwgbm9ybWFsaXplIH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0IHtcbiAgUnVsZSxcbiAgU2NoZW1hdGljQ29udGV4dCxcbiAgU2NoZW1hdGljc0V4Y2VwdGlvbixcbiAgVHJlZSxcbiAgYXBwbHksXG4gIGFwcGx5VGVtcGxhdGVzLFxuICBjaGFpbixcbiAgbWVyZ2VXaXRoLFxuICBtb3ZlLFxuICBzdHJpbmdzLFxuICB1cmwsXG59IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzJztcbmltcG9ydCB7IE5vZGVQYWNrYWdlSW5zdGFsbFRhc2sgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvc2NoZW1hdGljcy90YXNrcyc7XG5pbXBvcnQgeyBwb3NpeCB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQge1xuICBOb2RlRGVwZW5kZW5jeVR5cGUsXG4gIGFkZFBhY2thZ2VKc29uRGVwZW5kZW5jeSxcbiAgZ2V0UGFja2FnZUpzb25EZXBlbmRlbmN5LFxufSBmcm9tICcuLi91dGlsaXR5L2RlcGVuZGVuY2llcyc7XG5pbXBvcnQgeyBKU09ORmlsZSB9IGZyb20gJy4uL3V0aWxpdHkvanNvbi1maWxlJztcbmltcG9ydCB7IGxhdGVzdFZlcnNpb25zIH0gZnJvbSAnLi4vdXRpbGl0eS9sYXRlc3QtdmVyc2lvbnMnO1xuaW1wb3J0IHsgaXNTdGFuZGFsb25lQXBwIH0gZnJvbSAnLi4vdXRpbGl0eS9uZy1hc3QtdXRpbHMnO1xuaW1wb3J0IHsgcmVsYXRpdmVQYXRoVG9Xb3Jrc3BhY2VSb290IH0gZnJvbSAnLi4vdXRpbGl0eS9wYXRocyc7XG5pbXBvcnQgeyB0YXJnZXRCdWlsZE5vdEZvdW5kRXJyb3IgfSBmcm9tICcuLi91dGlsaXR5L3Byb2plY3QtdGFyZ2V0cyc7XG5pbXBvcnQgeyBnZXRNYWluRmlsZVBhdGggfSBmcm9tICcuLi91dGlsaXR5L3N0YW5kYWxvbmUvdXRpbCc7XG5pbXBvcnQgeyBnZXRXb3Jrc3BhY2UsIHVwZGF0ZVdvcmtzcGFjZSB9IGZyb20gJy4uL3V0aWxpdHkvd29ya3NwYWNlJztcbmltcG9ydCB7IEJ1aWxkZXJzIH0gZnJvbSAnLi4vdXRpbGl0eS93b3Jrc3BhY2UtbW9kZWxzJztcbmltcG9ydCB7IFNjaGVtYSBhcyBTZXJ2ZXJPcHRpb25zIH0gZnJvbSAnLi9zY2hlbWEnO1xuXG5jb25zdCBzZXJ2ZXJNYWluRW50cnlOYW1lID0gJ21haW4uc2VydmVyLnRzJztcblxuZnVuY3Rpb24gdXBkYXRlQ29uZmlnRmlsZUJyb3dzZXJCdWlsZGVyKG9wdGlvbnM6IFNlcnZlck9wdGlvbnMsIHRzQ29uZmlnRGlyZWN0b3J5OiBQYXRoKTogUnVsZSB7XG4gIHJldHVybiB1cGRhdGVXb3Jrc3BhY2UoKHdvcmtzcGFjZSkgPT4ge1xuICAgIGNvbnN0IGNsaWVudFByb2plY3QgPSB3b3Jrc3BhY2UucHJvamVjdHMuZ2V0KG9wdGlvbnMucHJvamVjdCk7XG5cbiAgICBpZiAoY2xpZW50UHJvamVjdCkge1xuICAgICAgLy8gSW4gY2FzZSB0aGUgYnJvd3NlciBidWlsZGVyIGhhc2hlcyB0aGUgYXNzZXRzXG4gICAgICAvLyB3ZSBuZWVkIHRvIGFkZCB0aGlzIHNldHRpbmcgdG8gdGhlIHNlcnZlciBidWlsZGVyXG4gICAgICAvLyBhcyBvdGhlcndpc2Ugd2hlbiBhc3NldHMgaXQgd2lsbCBiZSByZXF1ZXN0ZWQgdHdpY2UuXG4gICAgICAvLyBPbmUgZm9yIHRoZSBzZXJ2ZXIgd2hpY2ggd2lsbCBiZSB1bmhhc2hlZCwgYW5kIG90aGVyIG9uIHRoZSBjbGllbnQgd2hpY2ggd2lsbCBiZSBoYXNoZWQuXG4gICAgICBjb25zdCBnZXRTZXJ2ZXJPcHRpb25zID0gKG9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIEpzb25WYWx1ZSB8IHVuZGVmaW5lZD4gPSB7fSk6IHt9ID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBidWlsZE9wdGltaXplcjogb3B0aW9ucz8uYnVpbGRPcHRpbWl6ZXIsXG4gICAgICAgICAgb3V0cHV0SGFzaGluZzogb3B0aW9ucz8ub3V0cHV0SGFzaGluZyA9PT0gJ2FsbCcgPyAnbWVkaWEnIDogb3B0aW9ucz8ub3V0cHV0SGFzaGluZyxcbiAgICAgICAgICBmaWxlUmVwbGFjZW1lbnRzOiBvcHRpb25zPy5maWxlUmVwbGFjZW1lbnRzLFxuICAgICAgICAgIG9wdGltaXphdGlvbjogb3B0aW9ucz8ub3B0aW1pemF0aW9uID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiAhIW9wdGlvbnM/Lm9wdGltaXphdGlvbixcbiAgICAgICAgICBzb3VyY2VNYXA6IG9wdGlvbnM/LnNvdXJjZU1hcCxcbiAgICAgICAgICBsb2NhbGl6YXRpb246IG9wdGlvbnM/LmxvY2FsaXphdGlvbixcbiAgICAgICAgICBzdHlsZVByZXByb2Nlc3Nvck9wdGlvbnM6IG9wdGlvbnM/LnN0eWxlUHJlcHJvY2Vzc29yT3B0aW9ucyxcbiAgICAgICAgICByZXNvdXJjZXNPdXRwdXRQYXRoOiBvcHRpb25zPy5yZXNvdXJjZXNPdXRwdXRQYXRoLFxuICAgICAgICAgIGRlcGxveVVybDogb3B0aW9ucz8uZGVwbG95VXJsLFxuICAgICAgICAgIGkxOG5NaXNzaW5nVHJhbnNsYXRpb246IG9wdGlvbnM/LmkxOG5NaXNzaW5nVHJhbnNsYXRpb24sXG4gICAgICAgICAgcHJlc2VydmVTeW1saW5rczogb3B0aW9ucz8ucHJlc2VydmVTeW1saW5rcyxcbiAgICAgICAgICBleHRyYWN0TGljZW5zZXM6IG9wdGlvbnM/LmV4dHJhY3RMaWNlbnNlcyxcbiAgICAgICAgICBpbmxpbmVTdHlsZUxhbmd1YWdlOiBvcHRpb25zPy5pbmxpbmVTdHlsZUxhbmd1YWdlLFxuICAgICAgICAgIHZlbmRvckNodW5rOiBvcHRpb25zPy52ZW5kb3JDaHVuayxcbiAgICAgICAgfTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGJ1aWxkVGFyZ2V0ID0gY2xpZW50UHJvamVjdC50YXJnZXRzLmdldCgnYnVpbGQnKTtcbiAgICAgIGlmIChidWlsZFRhcmdldD8ub3B0aW9ucykge1xuICAgICAgICBidWlsZFRhcmdldC5vcHRpb25zLm91dHB1dFBhdGggPSBgZGlzdC8ke29wdGlvbnMucHJvamVjdH0vYnJvd3NlcmA7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJ1aWxkQ29uZmlndXJhdGlvbnMgPSBidWlsZFRhcmdldD8uY29uZmlndXJhdGlvbnM7XG4gICAgICBjb25zdCBjb25maWd1cmF0aW9uczogUmVjb3JkPHN0cmluZywge30+ID0ge307XG4gICAgICBpZiAoYnVpbGRDb25maWd1cmF0aW9ucykge1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIG9wdGlvbnNdIG9mIE9iamVjdC5lbnRyaWVzKGJ1aWxkQ29uZmlndXJhdGlvbnMpKSB7XG4gICAgICAgICAgY29uZmlndXJhdGlvbnNba2V5XSA9IGdldFNlcnZlck9wdGlvbnMob3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3Qgc291cmNlUm9vdCA9IGNsaWVudFByb2plY3Quc291cmNlUm9vdCA/PyBqb2luKG5vcm1hbGl6ZShjbGllbnRQcm9qZWN0LnJvb3QpLCAnc3JjJyk7XG4gICAgICBjb25zdCBzZXJ2ZXJUc0NvbmZpZyA9IGpvaW4odHNDb25maWdEaXJlY3RvcnksICd0c2NvbmZpZy5zZXJ2ZXIuanNvbicpO1xuICAgICAgY2xpZW50UHJvamVjdC50YXJnZXRzLmFkZCh7XG4gICAgICAgIG5hbWU6ICdzZXJ2ZXInLFxuICAgICAgICBidWlsZGVyOiBCdWlsZGVycy5TZXJ2ZXIsXG4gICAgICAgIGRlZmF1bHRDb25maWd1cmF0aW9uOiAncHJvZHVjdGlvbicsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBvdXRwdXRQYXRoOiBgZGlzdC8ke29wdGlvbnMucHJvamVjdH0vc2VydmVyYCxcbiAgICAgICAgICBtYWluOiBqb2luKG5vcm1hbGl6ZShzb3VyY2VSb290KSwgc2VydmVyTWFpbkVudHJ5TmFtZSksXG4gICAgICAgICAgdHNDb25maWc6IHNlcnZlclRzQ29uZmlnLFxuICAgICAgICAgIC4uLihidWlsZFRhcmdldD8ub3B0aW9ucyA/IGdldFNlcnZlck9wdGlvbnMoYnVpbGRUYXJnZXQ/Lm9wdGlvbnMpIDoge30pLFxuICAgICAgICB9LFxuICAgICAgICBjb25maWd1cmF0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUNvbmZpZ0ZpbGVBcHBsaWNhdGlvbkJ1aWxkZXIob3B0aW9uczogU2VydmVyT3B0aW9ucyk6IFJ1bGUge1xuICByZXR1cm4gdXBkYXRlV29ya3NwYWNlKCh3b3Jrc3BhY2UpID0+IHtcbiAgICBjb25zdCBwcm9qZWN0ID0gd29ya3NwYWNlLnByb2plY3RzLmdldChvcHRpb25zLnByb2plY3QpO1xuICAgIGlmICghcHJvamVjdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1aWxkVGFyZ2V0ID0gcHJvamVjdC50YXJnZXRzLmdldCgnYnVpbGQnKTtcbiAgICBpZiAoYnVpbGRUYXJnZXQ/LmJ1aWxkZXIgIT09IEJ1aWxkZXJzLkFwcGxpY2F0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgU2NoZW1hdGljc0V4Y2VwdGlvbihcbiAgICAgICAgYFRoaXMgc2NoZW1hdGljIHJlcXVpcmVzIFwiJHtCdWlsZGVycy5BcHBsaWNhdGlvbn1cIiB0byBiZSB1c2VkIGFzIGEgYnVpbGQgYnVpbGRlci5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBidWlsZFRhcmdldC5vcHRpb25zID8/PSB7fTtcbiAgICBidWlsZFRhcmdldC5vcHRpb25zWydzZXJ2ZXInXSA9IHBvc2l4LmpvaW4oXG4gICAgICBwcm9qZWN0LnNvdXJjZVJvb3QgPz8gcG9zaXguam9pbihwcm9qZWN0LnJvb3QsICdzcmMnKSxcbiAgICAgIHNlcnZlck1haW5FbnRyeU5hbWUsXG4gICAgKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVRzQ29uZmlnRmlsZSh0c0NvbmZpZ1BhdGg6IHN0cmluZyk6IFJ1bGUge1xuICByZXR1cm4gKGhvc3Q6IFRyZWUpID0+IHtcbiAgICBjb25zdCBqc29uID0gbmV3IEpTT05GaWxlKGhvc3QsIHRzQ29uZmlnUGF0aCk7XG4gICAgY29uc3QgZmlsZXNQYXRoID0gWydmaWxlcyddO1xuICAgIGNvbnN0IGZpbGVzID0gbmV3IFNldCgoanNvbi5nZXQoZmlsZXNQYXRoKSBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZCkgPz8gW10pO1xuICAgIGZpbGVzLmFkZCgnc3JjLycgKyBzZXJ2ZXJNYWluRW50cnlOYW1lKTtcbiAgICBqc29uLm1vZGlmeShmaWxlc1BhdGgsIFsuLi5maWxlc10pO1xuXG4gICAgY29uc3QgdHlwZVBhdGggPSBbJ2NvbXBpbGVyT3B0aW9ucycsICd0eXBlcyddO1xuICAgIGNvbnN0IHR5cGVzID0gbmV3IFNldCgoanNvbi5nZXQodHlwZVBhdGgpIGFzIHN0cmluZ1tdIHwgdW5kZWZpbmVkKSA/PyBbXSk7XG4gICAgdHlwZXMuYWRkKCdub2RlJyk7XG4gICAganNvbi5tb2RpZnkodHlwZVBhdGgsIFsuLi50eXBlc10pO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhZGREZXBlbmRlbmNpZXMoKTogUnVsZSB7XG4gIHJldHVybiAoaG9zdDogVHJlZSkgPT4ge1xuICAgIGNvbnN0IGNvcmVEZXAgPSBnZXRQYWNrYWdlSnNvbkRlcGVuZGVuY3koaG9zdCwgJ0Bhbmd1bGFyL2NvcmUnKTtcbiAgICBpZiAoY29yZURlcCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IFNjaGVtYXRpY3NFeGNlcHRpb24oJ0NvdWxkIG5vdCBmaW5kIHZlcnNpb24uJyk7XG4gICAgfVxuICAgIGNvbnN0IHBsYXRmb3JtU2VydmVyRGVwID0ge1xuICAgICAgLi4uY29yZURlcCxcbiAgICAgIG5hbWU6ICdAYW5ndWxhci9wbGF0Zm9ybS1zZXJ2ZXInLFxuICAgIH07XG4gICAgYWRkUGFja2FnZUpzb25EZXBlbmRlbmN5KGhvc3QsIHBsYXRmb3JtU2VydmVyRGVwKTtcblxuICAgIGFkZFBhY2thZ2VKc29uRGVwZW5kZW5jeShob3N0LCB7XG4gICAgICB0eXBlOiBOb2RlRGVwZW5kZW5jeVR5cGUuRGV2LFxuICAgICAgbmFtZTogJ0B0eXBlcy9ub2RlJyxcbiAgICAgIHZlcnNpb246IGxhdGVzdFZlcnNpb25zWydAdHlwZXMvbm9kZSddLFxuICAgIH0pO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAob3B0aW9uczogU2VydmVyT3B0aW9ucyk6IFJ1bGUge1xuICByZXR1cm4gYXN5bmMgKGhvc3Q6IFRyZWUsIGNvbnRleHQ6IFNjaGVtYXRpY0NvbnRleHQpID0+IHtcbiAgICBjb25zdCB3b3Jrc3BhY2UgPSBhd2FpdCBnZXRXb3Jrc3BhY2UoaG9zdCk7XG4gICAgY29uc3QgY2xpZW50UHJvamVjdCA9IHdvcmtzcGFjZS5wcm9qZWN0cy5nZXQob3B0aW9ucy5wcm9qZWN0KTtcbiAgICBpZiAoY2xpZW50UHJvamVjdD8uZXh0ZW5zaW9ucy5wcm9qZWN0VHlwZSAhPT0gJ2FwcGxpY2F0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFNjaGVtYXRpY3NFeGNlcHRpb24oYFNlcnZlciBzY2hlbWF0aWMgcmVxdWlyZXMgYSBwcm9qZWN0IHR5cGUgb2YgXCJhcHBsaWNhdGlvblwiLmApO1xuICAgIH1cblxuICAgIGNvbnN0IGNsaWVudEJ1aWxkVGFyZ2V0ID0gY2xpZW50UHJvamVjdC50YXJnZXRzLmdldCgnYnVpbGQnKTtcbiAgICBpZiAoIWNsaWVudEJ1aWxkVGFyZ2V0KSB7XG4gICAgICB0aHJvdyB0YXJnZXRCdWlsZE5vdEZvdW5kRXJyb3IoKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc1VzaW5nQXBwbGljYXRpb25CdWlsZGVyID0gY2xpZW50QnVpbGRUYXJnZXQuYnVpbGRlciA9PT0gQnVpbGRlcnMuQXBwbGljYXRpb247XG4gICAgaWYgKFxuICAgICAgY2xpZW50UHJvamVjdC50YXJnZXRzLmhhcygnc2VydmVyJykgfHxcbiAgICAgIChpc1VzaW5nQXBwbGljYXRpb25CdWlsZGVyICYmIGNsaWVudEJ1aWxkVGFyZ2V0Lm9wdGlvbnM/LnNlcnZlciAhPT0gdW5kZWZpbmVkKVxuICAgICkge1xuICAgICAgLy8gU2VydmVyIGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLnNraXBJbnN0YWxsKSB7XG4gICAgICBjb250ZXh0LmFkZFRhc2sobmV3IE5vZGVQYWNrYWdlSW5zdGFsbFRhc2soKSk7XG4gICAgfVxuICAgIGNvbnN0IGNsaWVudEJ1aWxkT3B0aW9ucyA9IGNsaWVudEJ1aWxkVGFyZ2V0Lm9wdGlvbnMgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBjb25zdCBicm93c2VyRW50cnlQb2ludCA9IGF3YWl0IGdldE1haW5GaWxlUGF0aChob3N0LCBvcHRpb25zLnByb2plY3QpO1xuICAgIGNvbnN0IGlzU3RhbmRhbG9uZSA9IGlzU3RhbmRhbG9uZUFwcChob3N0LCBicm93c2VyRW50cnlQb2ludCk7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZVNvdXJjZSA9IGFwcGx5KHVybChpc1N0YW5kYWxvbmUgPyAnLi9maWxlcy9zdGFuZGFsb25lLXNyYycgOiAnLi9maWxlcy9zcmMnKSwgW1xuICAgICAgYXBwbHlUZW1wbGF0ZXMoe1xuICAgICAgICAuLi5zdHJpbmdzLFxuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgfSksXG4gICAgICBtb3ZlKGpvaW4obm9ybWFsaXplKGNsaWVudFByb2plY3Qucm9vdCksICdzcmMnKSksXG4gICAgXSk7XG5cbiAgICBjb25zdCBjbGllbnRUc0NvbmZpZyA9IG5vcm1hbGl6ZShjbGllbnRCdWlsZE9wdGlvbnMudHNDb25maWcpO1xuICAgIGNvbnN0IHRzQ29uZmlnRXh0ZW5kcyA9IGJhc2VuYW1lKGNsaWVudFRzQ29uZmlnKTtcbiAgICBjb25zdCB0c0NvbmZpZ0RpcmVjdG9yeSA9IGRpcm5hbWUoY2xpZW50VHNDb25maWcpO1xuXG4gICAgcmV0dXJuIGNoYWluKFtcbiAgICAgIG1lcmdlV2l0aCh0ZW1wbGF0ZVNvdXJjZSksXG4gICAgICAuLi4oaXNVc2luZ0FwcGxpY2F0aW9uQnVpbGRlclxuICAgICAgICA/IFtcbiAgICAgICAgICAgIHVwZGF0ZUNvbmZpZ0ZpbGVBcHBsaWNhdGlvbkJ1aWxkZXIob3B0aW9ucyksXG4gICAgICAgICAgICB1cGRhdGVUc0NvbmZpZ0ZpbGUoY2xpZW50QnVpbGRPcHRpb25zLnRzQ29uZmlnKSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW1xuICAgICAgICAgICAgbWVyZ2VXaXRoKFxuICAgICAgICAgICAgICBhcHBseSh1cmwoJy4vZmlsZXMvcm9vdCcpLCBbXG4gICAgICAgICAgICAgICAgYXBwbHlUZW1wbGF0ZXMoe1xuICAgICAgICAgICAgICAgICAgLi4uc3RyaW5ncyxcbiAgICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICBzdHJpcFRzRXh0ZW5zaW9uOiAoczogc3RyaW5nKSA9PiBzLnJlcGxhY2UoL1xcLnRzJC8sICcnKSxcbiAgICAgICAgICAgICAgICAgIHRzQ29uZmlnRXh0ZW5kcyxcbiAgICAgICAgICAgICAgICAgIGhhc0xvY2FsaXplUGFja2FnZTogISFnZXRQYWNrYWdlSnNvbkRlcGVuZGVuY3koaG9zdCwgJ0Bhbmd1bGFyL2xvY2FsaXplJyksXG4gICAgICAgICAgICAgICAgICByZWxhdGl2ZVBhdGhUb1dvcmtzcGFjZVJvb3Q6IHJlbGF0aXZlUGF0aFRvV29ya3NwYWNlUm9vdCh0c0NvbmZpZ0RpcmVjdG9yeSksXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbW92ZSh0c0NvbmZpZ0RpcmVjdG9yeSksXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHVwZGF0ZUNvbmZpZ0ZpbGVCcm93c2VyQnVpbGRlcihvcHRpb25zLCB0c0NvbmZpZ0RpcmVjdG9yeSksXG4gICAgICAgICAgXSksXG4gICAgICBhZGREZXBlbmRlbmNpZXMoKSxcbiAgICBdKTtcbiAgfTtcbn1cbiJdfQ==
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zY2hlbWF0aWNzL2FuZ3VsYXIvc2VydmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7O0FBRUgsK0NBQTJGO0FBQzNGLDJEQVlvQztBQUNwQyw0REFBMEU7QUFDMUUseUNBQWtDO0FBQ2xDLHdDQUE2QztBQUM3QywwREFJaUM7QUFDakMsb0RBQWdEO0FBQ2hELGdFQUE0RDtBQUM1RCwwREFBMEQ7QUFDMUQsNENBQStEO0FBQy9ELGdFQUFzRTtBQUN0RSxxREFBNkQ7QUFDN0Qsb0RBQXFFO0FBQ3JFLGtFQUF1RDtBQUd2RCxNQUFNLG1CQUFtQixHQUFHLGdCQUFnQixDQUFDO0FBRTdDLFNBQVMsOEJBQThCLENBQUMsT0FBc0IsRUFBRSxpQkFBdUI7SUFDckYsT0FBTyxJQUFBLDJCQUFlLEVBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtRQUNuQyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFOUQsSUFBSSxhQUFhLEVBQUU7WUFDakIsZ0RBQWdEO1lBQ2hELG9EQUFvRDtZQUNwRCx1REFBdUQ7WUFDdkQsMkZBQTJGO1lBQzNGLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxVQUFpRCxFQUFFLEVBQU0sRUFBRTtnQkFDbkYsT0FBTztvQkFDTCxjQUFjLEVBQUUsT0FBTyxFQUFFLGNBQWM7b0JBQ3ZDLGFBQWEsRUFBRSxPQUFPLEVBQUUsYUFBYSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsYUFBYTtvQkFDbEYsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLGdCQUFnQjtvQkFDM0MsWUFBWSxFQUFFLE9BQU8sRUFBRSxZQUFZLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFT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NEJBd0VDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IEpzb25WYWx1ZSwgUGF0aCwgYmFzZW5hbWUsIGRpcm5hbWUsIGpvaW4sIG5vcm1hbGl6ZSB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCB7XG4gIFJ1bGUsXG4gIFNjaGVtYXRpY0NvbnRleHQsXG4gIFNjaGVtYXRpY3NFeGNlcHRpb24sXG4gIFRyZWUsXG4gIGFwcGx5LFxuICBhcHBseVRlbXBsYXRlcyxcbiAgY2hhaW4sXG4gIG1lcmdlV2l0aCxcbiAgbW92ZSxcbiAgc3RyaW5ncyxcbiAgdXJsLFxufSBmcm9tICdAYW5ndWxhci1kZXZraXQvc2NoZW1hdGljcyc7XG5pbXBvcnQgeyBOb2RlUGFja2FnZUluc3RhbGxUYXNrIH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MvdGFza3MnO1xuaW1wb3J0IHsgcG9zaXggfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgYWRkUm9vdFByb3ZpZGVyIH0gZnJvbSAnLi4vdXRpbGl0eSc7XG5pbXBvcnQge1xuICBOb2RlRGVwZW5kZW5jeVR5cGUsXG4gIGFkZFBhY2thZ2VKc29uRGVwZW5kZW5jeSxcbiAgZ2V0UGFja2FnZUpzb25EZXBlbmRlbmN5LFxufSBmcm9tICcuLi91dGlsaXR5L2RlcGVuZGVuY2llcyc7XG5pbXBvcnQgeyBKU09ORmlsZSB9IGZyb20gJy4uL3V0aWxpdHkvanNvbi1maWxlJztcbmltcG9ydCB7IGxhdGVzdFZlcnNpb25zIH0gZnJvbSAnLi4vdXRpbGl0eS9sYXRlc3QtdmVyc2lvbnMnO1xuaW1wb3J0IHsgaXNTdGFuZGFsb25lQXBwIH0gZnJvbSAnLi4vdXRpbGl0eS9uZy1hc3QtdXRpbHMnO1xuaW1wb3J0IHsgcmVsYXRpdmVQYXRoVG9Xb3Jrc3BhY2VSb290IH0gZnJvbSAnLi4vdXRpbGl0eS9wYXRocyc7XG5pbXBvcnQgeyB0YXJnZXRCdWlsZE5vdEZvdW5kRXJyb3IgfSBmcm9tICcuLi91dGlsaXR5L3Byb2plY3QtdGFyZ2V0cyc7XG5pbXBvcnQgeyBnZXRNYWluRmlsZVBhdGggfSBmcm9tICcuLi91dGlsaXR5L3N0YW5kYWxvbmUvdXRpbCc7XG5pbXBvcnQgeyBnZXRXb3Jrc3BhY2UsIHVwZGF0ZVdvcmtzcGFjZSB9IGZyb20gJy4uL3V0aWxpdHkvd29ya3NwYWNlJztcbmltcG9ydCB7IEJ1aWxkZXJzIH0gZnJvbSAnLi4vdXRpbGl0eS93b3Jrc3BhY2UtbW9kZWxzJztcbmltcG9ydCB7IFNjaGVtYSBhcyBTZXJ2ZXJPcHRpb25zIH0gZnJvbSAnLi9zY2hlbWEnO1xuXG5jb25zdCBzZXJ2ZXJNYWluRW50cnlOYW1lID0gJ21haW4uc2VydmVyLnRzJztcblxuZnVuY3Rpb24gdXBkYXRlQ29uZmlnRmlsZUJyb3dzZXJCdWlsZGVyKG9wdGlvbnM6IFNlcnZlck9wdGlvbnMsIHRzQ29uZmlnRGlyZWN0b3J5OiBQYXRoKTogUnVsZSB7XG4gIHJldHVybiB1cGRhdGVXb3Jrc3BhY2UoKHdvcmtzcGFjZSkgPT4ge1xuICAgIGNvbnN0IGNsaWVudFByb2plY3QgPSB3b3Jrc3BhY2UucHJvamVjdHMuZ2V0KG9wdGlvbnMucHJvamVjdCk7XG5cbiAgICBpZiAoY2xpZW50UHJvamVjdCkge1xuICAgICAgLy8gSW4gY2FzZSB0aGUgYnJvd3NlciBidWlsZGVyIGhhc2hlcyB0aGUgYXNzZXRzXG4gICAgICAvLyB3ZSBuZWVkIHRvIGFkZCB0aGlzIHNldHRpbmcgdG8gdGhlIHNlcnZlciBidWlsZGVyXG4gICAgICAvLyBhcyBvdGhlcndpc2Ugd2hlbiBhc3NldHMgaXQgd2lsbCBiZSByZXF1ZXN0ZWQgdHdpY2UuXG4gICAgICAvLyBPbmUgZm9yIHRoZSBzZXJ2ZXIgd2hpY2ggd2lsbCBiZSB1bmhhc2hlZCwgYW5kIG90aGVyIG9uIHRoZSBjbGllbnQgd2hpY2ggd2lsbCBiZSBoYXNoZWQuXG4gICAgICBjb25zdCBnZXRTZXJ2ZXJPcHRpb25zID0gKG9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIEpzb25WYWx1ZSB8IHVuZGVmaW5lZD4gPSB7fSk6IHt9ID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBidWlsZE9wdGltaXplcjogb3B0aW9ucz8uYnVpbGRPcHRpbWl6ZXIsXG4gICAgICAgICAgb3V0cHV0SGFzaGluZzogb3B0aW9ucz8ub3V0cHV0SGFzaGluZyA9PT0gJ2FsbCcgPyAnbWVkaWEnIDogb3B0aW9ucz8ub3V0cHV0SGFzaGluZyxcbiAgICAgICAgICBmaWxlUmVwbGFjZW1lbnRzOiBvcHRpb25zPy5maWxlUmVwbGFjZW1lbnRzLFxuICAgICAgICAgIG9wdGltaXphdGlvbjogb3B0aW9ucz8ub3B0aW1pemF0aW9uID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiAhIW9wdGlvbnM/Lm9wdGltaXphdGlvbixcbiAgICAgICAgICBzb3VyY2VNYXA6IG9wdGlvbnM/LnNvdXJjZU1hcCxcbiAgICAgICAgICBsb2NhbGl6YXRpb246IG9wdGlvbnM/LmxvY2FsaXphdGlvbixcbiAgICAgICAgICBzdHlsZVByZXByb2Nlc3Nvck9wdGlvbnM6IG9wdGlvbnM/LnN0eWxlUHJlcHJvY2Vzc29yT3B0aW9ucyxcbiAgICAgICAgICByZXNvdXJjZXNPdXRwdXRQYXRoOiBvcHRpb25zPy5yZXNvdXJjZXNPdXRwdXRQYXRoLFxuICAgICAgICAgIGRlcGxveVVybDogb3B0aW9ucz8uZGVwbG95VXJsLFxuICAgICAgICAgIGkxOG5NaXNzaW5nVHJhbnNsYXRpb246IG9wdGlvbnM/LmkxOG5NaXNzaW5nVHJhbnNsYXRpb24sXG4gICAgICAgICAgcHJlc2VydmVTeW1saW5rczogb3B0aW9ucz8ucHJlc2VydmVTeW1saW5rcyxcbiAgICAgICAgICBleHRyYWN0TGljZW5zZXM6IG9wdGlvbnM/LmV4dHJhY3RMaWNlbnNlcyxcbiAgICAgICAgICBpbmxpbmVTdHlsZUxhbmd1YWdlOiBvcHRpb25zPy5pbmxpbmVTdHlsZUxhbmd1YWdlLFxuICAgICAgICAgIHZlbmRvckNodW5rOiBvcHRpb25zPy52ZW5kb3JDaHVuayxcbiAgICAgICAgfTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGJ1aWxkVGFyZ2V0ID0gY2xpZW50UHJvamVjdC50YXJnZXRzLmdldCgnYnVpbGQnKTtcbiAgICAgIGlmIChidWlsZFRhcmdldD8ub3B0aW9ucykge1xuICAgICAgICBidWlsZFRhcmdldC5vcHRpb25zLm91dHB1dFBhdGggPSBgZGlzdC8ke29wdGlvbnMucHJvamVjdH0vYnJvd3NlcmA7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJ1aWxkQ29uZmlndXJhdGlvbnMgPSBidWlsZFRhcmdldD8uY29uZmlndXJhdGlvbnM7XG4gICAgICBjb25zdCBjb25maWd1cmF0aW9uczogUmVjb3JkPHN0cmluZywge30+ID0ge307XG4gICAgICBpZiAoYnVpbGRDb25maWd1cmF0aW9ucykge1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIG9wdGlvbnNdIG9mIE9iamVjdC5lbnRyaWVzKGJ1aWxkQ29uZmlndXJhdGlvbnMpKSB7XG4gICAgICAgICAgY29uZmlndXJhdGlvbnNba2V5XSA9IGdldFNlcnZlck9wdGlvbnMob3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3Qgc291cmNlUm9vdCA9IGNsaWVudFByb2plY3Quc291cmNlUm9vdCA/PyBqb2luKG5vcm1hbGl6ZShjbGllbnRQcm9qZWN0LnJvb3QpLCAnc3JjJyk7XG4gICAgICBjb25zdCBzZXJ2ZXJUc0NvbmZpZyA9IGpvaW4odHNDb25maWdEaXJlY3RvcnksICd0c2NvbmZpZy5zZXJ2ZXIuanNvbicpO1xuICAgICAgY2xpZW50UHJvamVjdC50YXJnZXRzLmFkZCh7XG4gICAgICAgIG5hbWU6ICdzZXJ2ZXInLFxuICAgICAgICBidWlsZGVyOiBCdWlsZGVycy5TZXJ2ZXIsXG4gICAgICAgIGRlZmF1bHRDb25maWd1cmF0aW9uOiAncHJvZHVjdGlvbicsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBvdXRwdXRQYXRoOiBgZGlzdC8ke29wdGlvbnMucHJvamVjdH0vc2VydmVyYCxcbiAgICAgICAgICBtYWluOiBqb2luKG5vcm1hbGl6ZShzb3VyY2VSb290KSwgc2VydmVyTWFpbkVudHJ5TmFtZSksXG4gICAgICAgICAgdHNDb25maWc6IHNlcnZlclRzQ29uZmlnLFxuICAgICAgICAgIC4uLihidWlsZFRhcmdldD8ub3B0aW9ucyA/IGdldFNlcnZlck9wdGlvbnMoYnVpbGRUYXJnZXQ/Lm9wdGlvbnMpIDoge30pLFxuICAgICAgICB9LFxuICAgICAgICBjb25maWd1cmF0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUNvbmZpZ0ZpbGVBcHBsaWNhdGlvbkJ1aWxkZXIob3B0aW9uczogU2VydmVyT3B0aW9ucyk6IFJ1bGUge1xuICByZXR1cm4gdXBkYXRlV29ya3NwYWNlKCh3b3Jrc3BhY2UpID0+IHtcbiAgICBjb25zdCBwcm9qZWN0ID0gd29ya3NwYWNlLnByb2plY3RzLmdldChvcHRpb25zLnByb2plY3QpO1xuICAgIGlmICghcHJvamVjdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1aWxkVGFyZ2V0ID0gcHJvamVjdC50YXJnZXRzLmdldCgnYnVpbGQnKTtcbiAgICBpZiAoYnVpbGRUYXJnZXQ/LmJ1aWxkZXIgIT09IEJ1aWxkZXJzLkFwcGxpY2F0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgU2NoZW1hdGljc0V4Y2VwdGlvbihcbiAgICAgICAgYFRoaXMgc2NoZW1hdGljIHJlcXVpcmVzIFwiJHtCdWlsZGVycy5BcHBsaWNhdGlvbn1cIiB0byBiZSB1c2VkIGFzIGEgYnVpbGQgYnVpbGRlci5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBidWlsZFRhcmdldC5vcHRpb25zID8/PSB7fTtcbiAgICBidWlsZFRhcmdldC5vcHRpb25zWydzZXJ2ZXInXSA9IHBvc2l4LmpvaW4oXG4gICAgICBwcm9qZWN0LnNvdXJjZVJvb3QgPz8gcG9zaXguam9pbihwcm9qZWN0LnJvb3QsICdzcmMnKSxcbiAgICAgIHNlcnZlck1haW5FbnRyeU5hbWUsXG4gICAgKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVRzQ29uZmlnRmlsZSh0c0NvbmZpZ1BhdGg6IHN0cmluZyk6IFJ1bGUge1xuICByZXR1cm4gKGhvc3Q6IFRyZWUpID0+IHtcbiAgICBjb25zdCBqc29uID0gbmV3IEpTT05GaWxlKGhvc3QsIHRzQ29uZmlnUGF0aCk7XG4gICAgY29uc3QgZmlsZXNQYXRoID0gWydmaWxlcyddO1xuICAgIGNvbnN0IGZpbGVzID0gbmV3IFNldCgoanNvbi5nZXQoZmlsZXNQYXRoKSBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZCkgPz8gW10pO1xuICAgIGZpbGVzLmFkZCgnc3JjLycgKyBzZXJ2ZXJNYWluRW50cnlOYW1lKTtcbiAgICBqc29uLm1vZGlmeShmaWxlc1BhdGgsIFsuLi5maWxlc10pO1xuXG4gICAgY29uc3QgdHlwZVBhdGggPSBbJ2NvbXBpbGVyT3B0aW9ucycsICd0eXBlcyddO1xuICAgIGNvbnN0IHR5cGVzID0gbmV3IFNldCgoanNvbi5nZXQodHlwZVBhdGgpIGFzIHN0cmluZ1tdIHwgdW5kZWZpbmVkKSA/PyBbXSk7XG4gICAgdHlwZXMuYWRkKCdub2RlJyk7XG4gICAganNvbi5tb2RpZnkodHlwZVBhdGgsIFsuLi50eXBlc10pO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhZGREZXBlbmRlbmNpZXMoKTogUnVsZSB7XG4gIHJldHVybiAoaG9zdDogVHJlZSkgPT4ge1xuICAgIGNvbnN0IGNvcmVEZXAgPSBnZXRQYWNrYWdlSnNvbkRlcGVuZGVuY3koaG9zdCwgJ0Bhbmd1bGFyL2NvcmUnKTtcbiAgICBpZiAoY29yZURlcCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IFNjaGVtYXRpY3NFeGNlcHRpb24oJ0NvdWxkIG5vdCBmaW5kIHZlcnNpb24uJyk7XG4gICAgfVxuICAgIGNvbnN0IHBsYXRmb3JtU2VydmVyRGVwID0ge1xuICAgICAgLi4uY29yZURlcCxcbiAgICAgIG5hbWU6ICdAYW5ndWxhci9wbGF0Zm9ybS1zZXJ2ZXInLFxuICAgIH07XG4gICAgYWRkUGFja2FnZUpzb25EZXBlbmRlbmN5KGhvc3QsIHBsYXRmb3JtU2VydmVyRGVwKTtcblxuICAgIGFkZFBhY2thZ2VKc29uRGVwZW5kZW5jeShob3N0LCB7XG4gICAgICB0eXBlOiBOb2RlRGVwZW5kZW5jeVR5cGUuRGV2LFxuICAgICAgbmFtZTogJ0B0eXBlcy9ub2RlJyxcbiAgICAgIHZlcnNpb246IGxhdGVzdFZlcnNpb25zWydAdHlwZXMvbm9kZSddLFxuICAgIH0pO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAob3B0aW9uczogU2VydmVyT3B0aW9ucyk6IFJ1bGUge1xuICByZXR1cm4gYXN5bmMgKGhvc3Q6IFRyZWUsIGNvbnRleHQ6IFNjaGVtYXRpY0NvbnRleHQpID0+IHtcbiAgICBjb25zdCB3b3Jrc3BhY2UgPSBhd2FpdCBnZXRXb3Jrc3BhY2UoaG9zdCk7XG4gICAgY29uc3QgY2xpZW50UHJvamVjdCA9IHdvcmtzcGFjZS5wcm9qZWN0cy5nZXQob3B0aW9ucy5wcm9qZWN0KTtcbiAgICBpZiAoY2xpZW50UHJvamVjdD8uZXh0ZW5zaW9ucy5wcm9qZWN0VHlwZSAhPT0gJ2FwcGxpY2F0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFNjaGVtYXRpY3NFeGNlcHRpb24oYFNlcnZlciBzY2hlbWF0aWMgcmVxdWlyZXMgYSBwcm9qZWN0IHR5cGUgb2YgXCJhcHBsaWNhdGlvblwiLmApO1xuICAgIH1cblxuICAgIGNvbnN0IGNsaWVudEJ1aWxkVGFyZ2V0ID0gY2xpZW50UHJvamVjdC50YXJnZXRzLmdldCgnYnVpbGQnKTtcbiAgICBpZiAoIWNsaWVudEJ1aWxkVGFyZ2V0KSB7XG4gICAgICB0aHJvdyB0YXJnZXRCdWlsZE5vdEZvdW5kRXJyb3IoKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc1VzaW5nQXBwbGljYXRpb25CdWlsZGVyID0gY2xpZW50QnVpbGRUYXJnZXQuYnVpbGRlciA9PT0gQnVpbGRlcnMuQXBwbGljYXRpb247XG4gICAgaWYgKFxuICAgICAgY2xpZW50UHJvamVjdC50YXJnZXRzLmhhcygnc2VydmVyJykgfHxcbiAgICAgIChpc1VzaW5nQXBwbGljYXRpb25CdWlsZGVyICYmIGNsaWVudEJ1aWxkVGFyZ2V0Lm9wdGlvbnM/LnNlcnZlciAhPT0gdW5kZWZpbmVkKVxuICAgICkge1xuICAgICAgLy8gU2VydmVyIGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLnNraXBJbnN0YWxsKSB7XG4gICAgICBjb250ZXh0LmFkZFRhc2sobmV3IE5vZGVQYWNrYWdlSW5zdGFsbFRhc2soKSk7XG4gICAgfVxuICAgIGNvbnN0IGNsaWVudEJ1aWxkT3B0aW9ucyA9IGNsaWVudEJ1aWxkVGFyZ2V0Lm9wdGlvbnMgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBjb25zdCBicm93c2VyRW50cnlQb2ludCA9IGF3YWl0IGdldE1haW5GaWxlUGF0aChob3N0LCBvcHRpb25zLnByb2plY3QpO1xuICAgIGNvbnN0IGlzU3RhbmRhbG9uZSA9IGlzU3RhbmRhbG9uZUFwcChob3N0LCBicm93c2VyRW50cnlQb2ludCk7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZVNvdXJjZSA9IGFwcGx5KHVybChpc1N0YW5kYWxvbmUgPyAnLi9maWxlcy9zdGFuZGFsb25lLXNyYycgOiAnLi9maWxlcy9zcmMnKSwgW1xuICAgICAgYXBwbHlUZW1wbGF0ZXMoe1xuICAgICAgICAuLi5zdHJpbmdzLFxuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgfSksXG4gICAgICBtb3ZlKGpvaW4obm9ybWFsaXplKGNsaWVudFByb2plY3Qucm9vdCksICdzcmMnKSksXG4gICAgXSk7XG5cbiAgICBjb25zdCBjbGllbnRUc0NvbmZpZyA9IG5vcm1hbGl6ZShjbGllbnRCdWlsZE9wdGlvbnMudHNDb25maWcpO1xuICAgIGNvbnN0IHRzQ29uZmlnRXh0ZW5kcyA9IGJhc2VuYW1lKGNsaWVudFRzQ29uZmlnKTtcbiAgICBjb25zdCB0c0NvbmZpZ0RpcmVjdG9yeSA9IGRpcm5hbWUoY2xpZW50VHNDb25maWcpO1xuXG4gICAgcmV0dXJuIGNoYWluKFtcbiAgICAgIG1lcmdlV2l0aCh0ZW1wbGF0ZVNvdXJjZSksXG4gICAgICAuLi4oaXNVc2luZ0FwcGxpY2F0aW9uQnVpbGRlclxuICAgICAgICA/IFtcbiAgICAgICAgICAgIHVwZGF0ZUNvbmZpZ0ZpbGVBcHBsaWNhdGlvbkJ1aWxkZXIob3B0aW9ucyksXG4gICAgICAgICAgICB1cGRhdGVUc0NvbmZpZ0ZpbGUoY2xpZW50QnVpbGRPcHRpb25zLnRzQ29uZmlnKSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW1xuICAgICAgICAgICAgbWVyZ2VXaXRoKFxuICAgICAgICAgICAgICBhcHBseSh1cmwoJy4vZmlsZXMvcm9vdCcpLCBbXG4gICAgICAgICAgICAgICAgYXBwbHlUZW1wbGF0ZXMoe1xuICAgICAgICAgICAgICAgICAgLi4uc3RyaW5ncyxcbiAgICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICBzdHJpcFRzRXh0ZW5zaW9uOiAoczogc3RyaW5nKSA9PiBzLnJlcGxhY2UoL1xcLnRzJC8sICcnKSxcbiAgICAgICAgICAgICAgICAgIHRzQ29uZmlnRXh0ZW5kcyxcbiAgICAgICAgICAgICAgICAgIGhhc0xvY2FsaXplUGFja2FnZTogISFnZXRQYWNrYWdlSnNvbkRlcGVuZGVuY3koaG9zdCwgJ0Bhbmd1bGFyL2xvY2FsaXplJyksXG4gICAgICAgICAgICAgICAgICByZWxhdGl2ZVBhdGhUb1dvcmtzcGFjZVJvb3Q6IHJlbGF0aXZlUGF0aFRvV29ya3NwYWNlUm9vdCh0c0NvbmZpZ0RpcmVjdG9yeSksXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbW92ZSh0c0NvbmZpZ0RpcmVjdG9yeSksXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHVwZGF0ZUNvbmZpZ0ZpbGVCcm93c2VyQnVpbGRlcihvcHRpb25zLCB0c0NvbmZpZ0RpcmVjdG9yeSksXG4gICAgICAgICAgXSksXG4gICAgICBhZGREZXBlbmRlbmNpZXMoKSxcbiAgICAgIGFkZFJvb3RQcm92aWRlcihcbiAgICAgICAgb3B0aW9ucy5wcm9qZWN0LFxuICAgICAgICAoeyBjb2RlLCBleHRlcm5hbCB9KSA9PlxuICAgICAgICAgIGNvZGVgJHtleHRlcm5hbCgncHJvdmlkZUNsaWVudEh5ZHJhdGlvbicsICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJyl9KClgLFxuICAgICAgKSxcbiAgICBdKTtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { APP_BASE_HREF } from '@angular/common';
|
|
2
|
+
import { CommonEngine } from '@angular/ssr';
|
|
3
|
+
import express from 'express';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { dirname, join } from 'node:path';
|
|
6
|
+
import <% if (isStandalone) { %>bootstrap<% } else { %>AppServerModule<% } %> from './src/main.server';
|
|
7
|
+
|
|
8
|
+
// The Express app is exported so that it can be used by serverless Functions.
|
|
9
|
+
export function app(): express.Express {
|
|
10
|
+
const server = express();
|
|
11
|
+
const browserDistFolder = dirname(fileURLToPath(import.meta.url));
|
|
12
|
+
const indexHtml = join(browserDistFolder, 'index.server.html');
|
|
13
|
+
|
|
14
|
+
const commonEngine = new CommonEngine();
|
|
15
|
+
|
|
16
|
+
server.set('view engine', 'html');
|
|
17
|
+
server.set('views', browserDistFolder);
|
|
18
|
+
|
|
19
|
+
// Example Express Rest API endpoints
|
|
20
|
+
// server.get('/api/**', (req, res) => { });
|
|
21
|
+
// Serve static files from /browser
|
|
22
|
+
server.get('*.*', express.static(browserDistFolder, {
|
|
23
|
+
maxAge: '1y'
|
|
24
|
+
}));
|
|
25
|
+
|
|
26
|
+
// All regular routes use the Angular engine
|
|
27
|
+
server.get('*', (req, res, next) => {
|
|
28
|
+
commonEngine
|
|
29
|
+
.render({
|
|
30
|
+
<% if (isStandalone) { %>bootstrap<% } else { %>bootstrap: AppServerModule<% } %>,
|
|
31
|
+
documentFilePath: indexHtml,
|
|
32
|
+
url: req.originalUrl,
|
|
33
|
+
publicPath: browserDistFolder,
|
|
34
|
+
providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }],
|
|
35
|
+
})
|
|
36
|
+
.then((html) => res.send(html))
|
|
37
|
+
.catch((err) => next(err));
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
return server;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function run(): void {
|
|
44
|
+
const port = process.env['PORT'] || 4000;
|
|
45
|
+
|
|
46
|
+
// Start up the Node server
|
|
47
|
+
const server = app();
|
|
48
|
+
server.listen(port, () => {
|
|
49
|
+
console.log(`Node Express server listening on http://localhost:${port}`);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
run();
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import 'zone.js/node';
|
|
2
|
+
|
|
3
|
+
import { APP_BASE_HREF } from '@angular/common';
|
|
4
|
+
import { CommonEngine } from '@angular/ssr';
|
|
5
|
+
import * as express from 'express';
|
|
6
|
+
import { existsSync } from 'node:fs';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
import <% if (isStandalone) { %>bootstrap<% } else { %>AppServerModule<% } %> from './src/main.server';
|
|
9
|
+
|
|
10
|
+
// The Express app is exported so that it can be used by serverless Functions.
|
|
11
|
+
export function app(): express.Express {
|
|
12
|
+
const server = express();
|
|
13
|
+
const distFolder = join(process.cwd(), '<%= browserDistDirectory %>');
|
|
14
|
+
const indexHtml = existsSync(join(distFolder, 'index.original.html'))
|
|
15
|
+
? join(distFolder, 'index.original.html')
|
|
16
|
+
: join(distFolder, 'index.html');
|
|
17
|
+
|
|
18
|
+
const commonEngine = new CommonEngine();
|
|
19
|
+
|
|
20
|
+
server.set('view engine', 'html');
|
|
21
|
+
server.set('views', distFolder);
|
|
22
|
+
|
|
23
|
+
// Example Express Rest API endpoints
|
|
24
|
+
// server.get('/api/**', (req, res) => { });
|
|
25
|
+
// Serve static files from /browser
|
|
26
|
+
server.get('*.*', express.static(distFolder, {
|
|
27
|
+
maxAge: '1y'
|
|
28
|
+
}));
|
|
29
|
+
|
|
30
|
+
// All regular routes use the Angular engine
|
|
31
|
+
server.get('*', (req, res, next) => {
|
|
32
|
+
commonEngine
|
|
33
|
+
.render({
|
|
34
|
+
<% if (isStandalone) { %>bootstrap<% } else { %>bootstrap: AppServerModule<% } %>,
|
|
35
|
+
documentFilePath: indexHtml,
|
|
36
|
+
url: req.originalUrl,
|
|
37
|
+
publicPath: distFolder,
|
|
38
|
+
providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }],
|
|
39
|
+
})
|
|
40
|
+
.then((html) => res.send(html))
|
|
41
|
+
.catch((err) => next(err));
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
return server;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function run(): void {
|
|
48
|
+
const port = process.env['PORT'] || 4000;
|
|
49
|
+
|
|
50
|
+
// Start up the Node server
|
|
51
|
+
const server = app();
|
|
52
|
+
server.listen(port, () => {
|
|
53
|
+
console.log(`Node Express server listening on http://localhost:${port}`);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Webpack will replace 'require' with '__webpack_require__'
|
|
58
|
+
// '__non_webpack_require__' is a proxy to Node 'require'
|
|
59
|
+
// The below code is to ensure that the server is run only when not requiring the bundle.
|
|
60
|
+
declare const __non_webpack_require__: NodeRequire;
|
|
61
|
+
const mainModule = __non_webpack_require__.main;
|
|
62
|
+
const moduleFilename = mainModule && mainModule.filename || '';
|
|
63
|
+
if (moduleFilename === __filename || moduleFilename.includes('iisnode')) {
|
|
64
|
+
run();
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export default <% if (isStandalone) { %>bootstrap<% } else { %>AppServerModule<% } %>;
|
package/ssr/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
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 { Rule } from '@angular-devkit/schematics';
|
|
9
|
+
import { Schema as SSROptions } from './schema';
|
|
10
|
+
export default function (options: SSROptions): Rule;
|
package/ssr/index.js
ADDED
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright Google LLC All Rights Reserved.
|
|
5
|
+
*
|
|
6
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
+
* found in the LICENSE file at https://angular.io/license
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
const core_1 = require("@angular-devkit/core");
|
|
11
|
+
const schematics_1 = require("@angular-devkit/schematics");
|
|
12
|
+
const utility_1 = require("../utility");
|
|
13
|
+
const json_file_1 = require("../utility/json-file");
|
|
14
|
+
const latest_versions_1 = require("../utility/latest-versions");
|
|
15
|
+
const ng_ast_utils_1 = require("../utility/ng-ast-utils");
|
|
16
|
+
const project_targets_1 = require("../utility/project-targets");
|
|
17
|
+
const util_1 = require("../utility/standalone/util");
|
|
18
|
+
const workspace_1 = require("../utility/workspace");
|
|
19
|
+
const workspace_models_1 = require("../utility/workspace-models");
|
|
20
|
+
const SERVE_SSR_TARGET_NAME = 'serve-ssr';
|
|
21
|
+
const PRERENDER_TARGET_NAME = 'prerender';
|
|
22
|
+
async function getOutputPath(host, projectName, target) {
|
|
23
|
+
// Generate new output paths
|
|
24
|
+
const workspace = await (0, utility_1.readWorkspace)(host);
|
|
25
|
+
const project = workspace.projects.get(projectName);
|
|
26
|
+
const serverTarget = project?.targets.get(target);
|
|
27
|
+
if (!serverTarget || !serverTarget.options) {
|
|
28
|
+
throw new schematics_1.SchematicsException(`Cannot find 'options' for ${projectName} ${target} target.`);
|
|
29
|
+
}
|
|
30
|
+
const { outputPath } = serverTarget.options;
|
|
31
|
+
if (typeof outputPath !== 'string') {
|
|
32
|
+
throw new schematics_1.SchematicsException(`outputPath for ${projectName} ${target} target is not a string.`);
|
|
33
|
+
}
|
|
34
|
+
return outputPath;
|
|
35
|
+
}
|
|
36
|
+
function addScriptsRule(options) {
|
|
37
|
+
return async (host) => {
|
|
38
|
+
const pkgPath = '/package.json';
|
|
39
|
+
const buffer = host.read(pkgPath);
|
|
40
|
+
if (buffer === null) {
|
|
41
|
+
throw new schematics_1.SchematicsException('Could not find package.json');
|
|
42
|
+
}
|
|
43
|
+
const serverDist = await getOutputPath(host, options.project, 'server');
|
|
44
|
+
const pkg = JSON.parse(buffer.toString());
|
|
45
|
+
pkg.scripts = {
|
|
46
|
+
...pkg.scripts,
|
|
47
|
+
'dev:ssr': `ng run ${options.project}:${SERVE_SSR_TARGET_NAME}`,
|
|
48
|
+
'serve:ssr': `node ${serverDist}/main.js`,
|
|
49
|
+
'build:ssr': `ng build && ng run ${options.project}:server`,
|
|
50
|
+
'prerender': `ng run ${options.project}:${PRERENDER_TARGET_NAME}`,
|
|
51
|
+
};
|
|
52
|
+
host.overwrite(pkgPath, JSON.stringify(pkg, null, 2));
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function updateApplicationBuilderTsConfigRule(options) {
|
|
56
|
+
return async (host) => {
|
|
57
|
+
const workspace = await (0, utility_1.readWorkspace)(host);
|
|
58
|
+
const project = workspace.projects.get(options.project);
|
|
59
|
+
const buildTarget = project?.targets.get('build');
|
|
60
|
+
if (!buildTarget || !buildTarget.options) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const tsConfigPath = buildTarget.options.tsConfig;
|
|
64
|
+
if (!tsConfigPath || typeof tsConfigPath !== 'string') {
|
|
65
|
+
// No tsconfig path
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const tsConfig = new json_file_1.JSONFile(host, tsConfigPath);
|
|
69
|
+
const filesAstNode = tsConfig.get(['files']);
|
|
70
|
+
const serverFilePath = 'server.ts';
|
|
71
|
+
if (Array.isArray(filesAstNode) && !filesAstNode.some(({ text }) => text === serverFilePath)) {
|
|
72
|
+
tsConfig.modify(['files'], [...filesAstNode, serverFilePath]);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function updateApplicationBuilderWorkspaceConfigRule(projectRoot, options) {
|
|
77
|
+
return (0, utility_1.updateWorkspace)((workspace) => {
|
|
78
|
+
const buildTarget = workspace.projects.get(options.project)?.targets.get('build');
|
|
79
|
+
if (!buildTarget) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
buildTarget.options = {
|
|
83
|
+
...buildTarget.options,
|
|
84
|
+
prerender: true,
|
|
85
|
+
ssr: (0, core_1.join)((0, core_1.normalize)(projectRoot), 'server.ts'),
|
|
86
|
+
};
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
function updateWebpackBuilderWorkspaceConfigRule(options) {
|
|
90
|
+
return (0, utility_1.updateWorkspace)((workspace) => {
|
|
91
|
+
const projectName = options.project;
|
|
92
|
+
const project = workspace.projects.get(projectName);
|
|
93
|
+
if (!project) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
97
|
+
const serverTarget = project.targets.get('server');
|
|
98
|
+
(serverTarget.options ??= {}).main = (0, core_1.join)((0, core_1.normalize)(project.root), 'server.ts');
|
|
99
|
+
const serveSSRTarget = project.targets.get(SERVE_SSR_TARGET_NAME);
|
|
100
|
+
if (serveSSRTarget) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
project.targets.add({
|
|
104
|
+
name: SERVE_SSR_TARGET_NAME,
|
|
105
|
+
builder: '@angular-devkit/build-angular:ssr-dev-server',
|
|
106
|
+
defaultConfiguration: 'development',
|
|
107
|
+
options: {},
|
|
108
|
+
configurations: {
|
|
109
|
+
development: {
|
|
110
|
+
browserTarget: `${projectName}:build:development`,
|
|
111
|
+
serverTarget: `${projectName}:server:development`,
|
|
112
|
+
},
|
|
113
|
+
production: {
|
|
114
|
+
browserTarget: `${projectName}:build:production`,
|
|
115
|
+
serverTarget: `${projectName}:server:production`,
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
const prerenderTarget = project.targets.get(PRERENDER_TARGET_NAME);
|
|
120
|
+
if (prerenderTarget) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
project.targets.add({
|
|
124
|
+
name: PRERENDER_TARGET_NAME,
|
|
125
|
+
builder: '@angular-devkit/build-angular:prerender',
|
|
126
|
+
defaultConfiguration: 'production',
|
|
127
|
+
options: {
|
|
128
|
+
routes: ['/'],
|
|
129
|
+
},
|
|
130
|
+
configurations: {
|
|
131
|
+
production: {
|
|
132
|
+
browserTarget: `${projectName}:build:production`,
|
|
133
|
+
serverTarget: `${projectName}:server:production`,
|
|
134
|
+
},
|
|
135
|
+
development: {
|
|
136
|
+
browserTarget: `${projectName}:build:development`,
|
|
137
|
+
serverTarget: `${projectName}:server:development`,
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
function updateWebpackBuilderServerTsConfigRule(options) {
|
|
144
|
+
return async (host) => {
|
|
145
|
+
const workspace = await (0, utility_1.readWorkspace)(host);
|
|
146
|
+
const project = workspace.projects.get(options.project);
|
|
147
|
+
const serverTarget = project?.targets.get('server');
|
|
148
|
+
if (!serverTarget || !serverTarget.options) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const tsConfigPath = serverTarget.options.tsConfig;
|
|
152
|
+
if (!tsConfigPath || typeof tsConfigPath !== 'string') {
|
|
153
|
+
// No tsconfig path
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const tsConfig = new json_file_1.JSONFile(host, tsConfigPath);
|
|
157
|
+
const filesAstNode = tsConfig.get(['files']);
|
|
158
|
+
const serverFilePath = 'server.ts';
|
|
159
|
+
if (Array.isArray(filesAstNode) && !filesAstNode.some(({ text }) => text === serverFilePath)) {
|
|
160
|
+
tsConfig.modify(['files'], [...filesAstNode, serverFilePath]);
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
function addDependencies() {
|
|
165
|
+
return (0, schematics_1.chain)([
|
|
166
|
+
(0, utility_1.addDependency)('@angular/ssr', '^17.0.0-next.6', {
|
|
167
|
+
type: utility_1.DependencyType.Default,
|
|
168
|
+
}),
|
|
169
|
+
(0, utility_1.addDependency)('express', latest_versions_1.latestVersions['express'], {
|
|
170
|
+
type: utility_1.DependencyType.Default,
|
|
171
|
+
}),
|
|
172
|
+
(0, utility_1.addDependency)('@types/express', latest_versions_1.latestVersions['@types/express'], {
|
|
173
|
+
type: utility_1.DependencyType.Dev,
|
|
174
|
+
}),
|
|
175
|
+
]);
|
|
176
|
+
}
|
|
177
|
+
function addServerFile(options, isStandalone) {
|
|
178
|
+
return async (host) => {
|
|
179
|
+
const workspace = await (0, utility_1.readWorkspace)(host);
|
|
180
|
+
const project = workspace.projects.get(options.project);
|
|
181
|
+
if (!project) {
|
|
182
|
+
throw new schematics_1.SchematicsException(`Invalid project name (${options.project})`);
|
|
183
|
+
}
|
|
184
|
+
const browserDistDirectory = await getOutputPath(host, options.project, 'build');
|
|
185
|
+
return (0, schematics_1.mergeWith)((0, schematics_1.apply)((0, schematics_1.url)(`./files/${project?.targets?.get('build')?.builder === workspace_models_1.Builders.Application
|
|
186
|
+
? 'application-builder'
|
|
187
|
+
: 'server-builder'}`), [
|
|
188
|
+
(0, schematics_1.applyTemplates)({
|
|
189
|
+
...core_1.strings,
|
|
190
|
+
...options,
|
|
191
|
+
browserDistDirectory,
|
|
192
|
+
isStandalone,
|
|
193
|
+
}),
|
|
194
|
+
(0, schematics_1.move)(project.root),
|
|
195
|
+
]));
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
function default_1(options) {
|
|
199
|
+
return async (host) => {
|
|
200
|
+
const browserEntryPoint = await (0, util_1.getMainFilePath)(host, options.project);
|
|
201
|
+
const isStandalone = (0, ng_ast_utils_1.isStandaloneApp)(host, browserEntryPoint);
|
|
202
|
+
const workspace = await (0, workspace_1.getWorkspace)(host);
|
|
203
|
+
const clientProject = workspace.projects.get(options.project);
|
|
204
|
+
if (!clientProject) {
|
|
205
|
+
throw (0, project_targets_1.targetBuildNotFoundError)();
|
|
206
|
+
}
|
|
207
|
+
const isUsingApplicationBuilder = clientProject.targets.get('build')?.builder === workspace_models_1.Builders.Application;
|
|
208
|
+
return (0, schematics_1.chain)([
|
|
209
|
+
(0, schematics_1.externalSchematic)('@schematics/angular', 'server', {
|
|
210
|
+
...options,
|
|
211
|
+
skipInstall: true,
|
|
212
|
+
}),
|
|
213
|
+
...(isUsingApplicationBuilder
|
|
214
|
+
? [
|
|
215
|
+
updateApplicationBuilderWorkspaceConfigRule(clientProject.root, options),
|
|
216
|
+
updateApplicationBuilderTsConfigRule(options),
|
|
217
|
+
]
|
|
218
|
+
: [
|
|
219
|
+
addScriptsRule(options),
|
|
220
|
+
updateWebpackBuilderServerTsConfigRule(options),
|
|
221
|
+
updateWebpackBuilderWorkspaceConfigRule(options),
|
|
222
|
+
]),
|
|
223
|
+
addServerFile(options, isStandalone),
|
|
224
|
+
addDependencies(),
|
|
225
|
+
]);
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
exports.default = default_1;
|
|
229
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zY2hlbWF0aWNzL2FuZ3VsYXIvc3NyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7O0FBRUgsK0NBQWdFO0FBQ2hFLDJEQVdvQztBQUVwQyx3Q0FBMkY7QUFDM0Ysb0RBQWdEO0FBQ2hELGdFQUE0RDtBQUM1RCwwREFBMEQ7QUFDMUQsZ0VBQXNFO0FBQ3RFLHFEQUE2RDtBQUM3RCxvREFBb0Q7QUFDcEQsa0VBQXVEO0FBSXZELE1BQU0scUJBQXFCLEdBQUcsV0FBVyxDQUFDO0FBQzFDLE1BQU0scUJBQXFCLEdBQUcsV0FBVyxDQUFDO0FBRTFDLEtBQUssVUFBVSxhQUFhLENBQzFCLElBQVUsRUFDVixXQUFtQixFQUNuQixNQUEwQjtJQUUxQiw0QkFBNEI7SUFDNUIsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFBLHVCQUFhLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsTUFBTSxZQUFZLEdBQUcsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUU7UUFDMUMsTUFBTSxJQUFJLGdDQUFtQixDQUFDLDZCQUE2QixXQUFXLElBQUksTUFBTSxVQUFVLENBQUMsQ0FBQztLQUM3RjtJQUVELE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDO0lBQzVDLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFO1FBQ2xDLE1BQU0sSUFBSSxnQ0FBbUIsQ0FDM0Isa0JBQWtCLFdBQVcsSUFBSSxNQUFNLDBCQUEwQixDQUNsRSxDQUFDO0tBQ0g7SUFF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QUM7WUFDcEMsZUFBZSxFQUFFO1NBQ2xCLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztBQUNKLENBQUM7QUFoQ0QsNEJBZ0NDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IGpvaW4sIG5vcm1hbGl6ZSwgc3RyaW5ncyB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCB7XG4gIFJ1bGUsXG4gIFNjaGVtYXRpY3NFeGNlcHRpb24sXG4gIFRyZWUsXG4gIGFwcGx5LFxuICBhcHBseVRlbXBsYXRlcyxcbiAgY2hhaW4sXG4gIGV4dGVybmFsU2NoZW1hdGljLFxuICBtZXJnZVdpdGgsXG4gIG1vdmUsXG4gIHVybCxcbn0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuaW1wb3J0IHsgU2NoZW1hIGFzIFNlcnZlck9wdGlvbnMgfSBmcm9tICcuLi9zZXJ2ZXIvc2NoZW1hJztcbmltcG9ydCB7IERlcGVuZGVuY3lUeXBlLCBhZGREZXBlbmRlbmN5LCByZWFkV29ya3NwYWNlLCB1cGRhdGVXb3Jrc3BhY2UgfSBmcm9tICcuLi91dGlsaXR5JztcbmltcG9ydCB7IEpTT05GaWxlIH0gZnJvbSAnLi4vdXRpbGl0eS9qc29uLWZpbGUnO1xuaW1wb3J0IHsgbGF0ZXN0VmVyc2lvbnMgfSBmcm9tICcuLi91dGlsaXR5L2xhdGVzdC12ZXJzaW9ucyc7XG5pbXBvcnQgeyBpc1N0YW5kYWxvbmVBcHAgfSBmcm9tICcuLi91dGlsaXR5L25nLWFzdC11dGlscyc7XG5pbXBvcnQgeyB0YXJnZXRCdWlsZE5vdEZvdW5kRXJyb3IgfSBmcm9tICcuLi91dGlsaXR5L3Byb2plY3QtdGFyZ2V0cyc7XG5pbXBvcnQgeyBnZXRNYWluRmlsZVBhdGggfSBmcm9tICcuLi91dGlsaXR5L3N0YW5kYWxvbmUvdXRpbCc7XG5pbXBvcnQgeyBnZXRXb3Jrc3BhY2UgfSBmcm9tICcuLi91dGlsaXR5L3dvcmtzcGFjZSc7XG5pbXBvcnQgeyBCdWlsZGVycyB9IGZyb20gJy4uL3V0aWxpdHkvd29ya3NwYWNlLW1vZGVscyc7XG5cbmltcG9ydCB7IFNjaGVtYSBhcyBTU1JPcHRpb25zIH0gZnJvbSAnLi9zY2hlbWEnO1xuXG5jb25zdCBTRVJWRV9TU1JfVEFSR0VUX05BTUUgPSAnc2VydmUtc3NyJztcbmNvbnN0IFBSRVJFTkRFUl9UQVJHRVRfTkFNRSA9ICdwcmVyZW5kZXInO1xuXG5hc3luYyBmdW5jdGlvbiBnZXRPdXRwdXRQYXRoKFxuICBob3N0OiBUcmVlLFxuICBwcm9qZWN0TmFtZTogc3RyaW5nLFxuICB0YXJnZXQ6ICdzZXJ2ZXInIHwgJ2J1aWxkJyxcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIC8vIEdlbmVyYXRlIG5ldyBvdXRwdXQgcGF0aHNcbiAgY29uc3Qgd29ya3NwYWNlID0gYXdhaXQgcmVhZFdvcmtzcGFjZShob3N0KTtcbiAgY29uc3QgcHJvamVjdCA9IHdvcmtzcGFjZS5wcm9qZWN0cy5nZXQocHJvamVjdE5hbWUpO1xuICBjb25zdCBzZXJ2ZXJUYXJnZXQgPSBwcm9qZWN0Py50YXJnZXRzLmdldCh0YXJnZXQpO1xuICBpZiAoIXNlcnZlclRhcmdldCB8fCAhc2VydmVyVGFyZ2V0Lm9wdGlvbnMpIHtcbiAgICB0aHJvdyBuZXcgU2NoZW1hdGljc0V4Y2VwdGlvbihgQ2Fubm90IGZpbmQgJ29wdGlvbnMnIGZvciAke3Byb2plY3ROYW1lfSAke3RhcmdldH0gdGFyZ2V0LmApO1xuICB9XG5cbiAgY29uc3QgeyBvdXRwdXRQYXRoIH0gPSBzZXJ2ZXJUYXJnZXQub3B0aW9ucztcbiAgaWYgKHR5cGVvZiBvdXRwdXRQYXRoICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBTY2hlbWF0aWNzRXhjZXB0aW9uKFxuICAgICAgYG91dHB1dFBhdGggZm9yICR7cHJvamVjdE5hbWV9ICR7dGFyZ2V0fSB0YXJnZXQgaXMgbm90IGEgc3RyaW5nLmAsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBvdXRwdXRQYXRoO1xufVxuXG5mdW5jdGlvbiBhZGRTY3JpcHRzUnVsZShvcHRpb25zOiBTU1JPcHRpb25zKTogUnVsZSB7XG4gIHJldHVybiBhc3luYyAoaG9zdCkgPT4ge1xuICAgIGNvbnN0IHBrZ1BhdGggPSAnL3BhY2thZ2UuanNvbic7XG4gICAgY29uc3QgYnVmZmVyID0gaG9zdC5yZWFkKHBrZ1BhdGgpO1xuICAgIGlmIChidWZmZXIgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBTY2hlbWF0aWNzRXhjZXB0aW9uKCdDb3VsZCBub3QgZmluZCBwYWNrYWdlLmpzb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXJ2ZXJEaXN0ID0gYXdhaXQgZ2V0T3V0cHV0UGF0aChob3N0LCBvcHRpb25zLnByb2plY3QsICdzZXJ2ZXInKTtcbiAgICBjb25zdCBwa2cgPSBKU09OLnBhcnNlKGJ1ZmZlci50b1N0cmluZygpKSBhcyB7IHNjcmlwdHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IH07XG4gICAgcGtnLnNjcmlwdHMgPSB7XG4gICAgICAuLi5wa2cuc2NyaXB0cyxcbiAgICAgICdkZXY6c3NyJzogYG5nIHJ1biAke29wdGlvbnMucHJvamVjdH06JHtTRVJWRV9TU1JfVEFSR0VUX05BTUV9YCxcbiAgICAgICdzZXJ2ZTpzc3InOiBgbm9kZSAke3NlcnZlckRpc3R9L21haW4uanNgLFxuICAgICAgJ2J1aWxkOnNzcic6IGBuZyBidWlsZCAmJiBuZyBydW4gJHtvcHRpb25zLnByb2plY3R9OnNlcnZlcmAsXG4gICAgICAncHJlcmVuZGVyJzogYG5nIHJ1biAke29wdGlvbnMucHJvamVjdH06JHtQUkVSRU5ERVJfVEFSR0VUX05BTUV9YCxcbiAgICB9O1xuXG4gICAgaG9zdC5vdmVyd3JpdGUocGtnUGF0aCwgSlNPTi5zdHJpbmdpZnkocGtnLCBudWxsLCAyKSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUFwcGxpY2F0aW9uQnVpbGRlclRzQ29uZmlnUnVsZShvcHRpb25zOiBTU1JPcHRpb25zKTogUnVsZSB7XG4gIHJldHVybiBhc3luYyAoaG9zdCkgPT4ge1xuICAgIGNvbnN0IHdvcmtzcGFjZSA9IGF3YWl0IHJlYWRXb3Jrc3BhY2UoaG9zdCk7XG4gICAgY29uc3QgcHJvamVjdCA9IHdvcmtzcGFjZS5wcm9qZWN0cy5nZXQob3B0aW9ucy5wcm9qZWN0KTtcbiAgICBjb25zdCBidWlsZFRhcmdldCA9IHByb2plY3Q/LnRhcmdldHMuZ2V0KCdidWlsZCcpO1xuICAgIGlmICghYnVpbGRUYXJnZXQgfHwgIWJ1aWxkVGFyZ2V0Lm9wdGlvbnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0c0NvbmZpZ1BhdGggPSBidWlsZFRhcmdldC5vcHRpb25zLnRzQ29uZmlnO1xuICAgIGlmICghdHNDb25maWdQYXRoIHx8IHR5cGVvZiB0c0NvbmZpZ1BhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBObyB0c2NvbmZpZyBwYXRoXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdHNDb25maWcgPSBuZXcgSlNPTkZpbGUoaG9zdCwgdHNDb25maWdQYXRoKTtcbiAgICBjb25zdCBmaWxlc0FzdE5vZGUgPSB0c0NvbmZpZy5nZXQoWydmaWxlcyddKTtcbiAgICBjb25zdCBzZXJ2ZXJGaWxlUGF0aCA9ICdzZXJ2ZXIudHMnO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGZpbGVzQXN0Tm9kZSkgJiYgIWZpbGVzQXN0Tm9kZS5zb21lKCh7IHRleHQgfSkgPT4gdGV4dCA9PT0gc2VydmVyRmlsZVBhdGgpKSB7XG4gICAgICB0c0NvbmZpZy5tb2RpZnkoWydmaWxlcyddLCBbLi4uZmlsZXNBc3ROb2RlLCBzZXJ2ZXJGaWxlUGF0aF0pO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlQXBwbGljYXRpb25CdWlsZGVyV29ya3NwYWNlQ29uZmlnUnVsZShcbiAgcHJvamVjdFJvb3Q6IHN0cmluZyxcbiAgb3B0aW9uczogU1NST3B0aW9ucyxcbik6IFJ1bGUge1xuICByZXR1cm4gdXBkYXRlV29ya3NwYWNlKCh3b3Jrc3BhY2UpID0+IHtcbiAgICBjb25zdCBidWlsZFRhcmdldCA9IHdvcmtzcGFjZS5wcm9qZWN0cy5nZXQob3B0aW9ucy5wcm9qZWN0KT8udGFyZ2V0cy5nZXQoJ2J1aWxkJyk7XG4gICAgaWYgKCFidWlsZFRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGJ1aWxkVGFyZ2V0Lm9wdGlvbnMgPSB7XG4gICAgICAuLi5idWlsZFRhcmdldC5vcHRpb25zLFxuICAgICAgcHJlcmVuZGVyOiB0cnVlLFxuICAgICAgc3NyOiBqb2luKG5vcm1hbGl6ZShwcm9qZWN0Um9vdCksICdzZXJ2ZXIudHMnKSxcbiAgICB9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlV2VicGFja0J1aWxkZXJXb3Jrc3BhY2VDb25maWdSdWxlKG9wdGlvbnM6IFNTUk9wdGlvbnMpOiBSdWxlIHtcbiAgcmV0dXJuIHVwZGF0ZVdvcmtzcGFjZSgod29ya3NwYWNlKSA9PiB7XG4gICAgY29uc3QgcHJvamVjdE5hbWUgPSBvcHRpb25zLnByb2plY3Q7XG4gICAgY29uc3QgcHJvamVjdCA9IHdvcmtzcGFjZS5wcm9qZWN0cy5nZXQocHJvamVjdE5hbWUpO1xuICAgIGlmICghcHJvamVjdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgY29uc3Qgc2VydmVyVGFyZ2V0ID0gcHJvamVjdC50YXJnZXRzLmdldCgnc2VydmVyJykhO1xuICAgIChzZXJ2ZXJUYXJnZXQub3B0aW9ucyA/Pz0ge30pLm1haW4gPSBqb2luKG5vcm1hbGl6ZShwcm9qZWN0LnJvb3QpLCAnc2VydmVyLnRzJyk7XG5cbiAgICBjb25zdCBzZXJ2ZVNTUlRhcmdldCA9IHByb2plY3QudGFyZ2V0cy5nZXQoU0VSVkVfU1NSX1RBUkdFVF9OQU1FKTtcbiAgICBpZiAoc2VydmVTU1JUYXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwcm9qZWN0LnRhcmdldHMuYWRkKHtcbiAgICAgIG5hbWU6IFNFUlZFX1NTUl9UQVJHRVRfTkFNRSxcbiAgICAgIGJ1aWxkZXI6ICdAYW5ndWxhci1kZXZraXQvYnVpbGQtYW5ndWxhcjpzc3ItZGV2LXNlcnZlcicsXG4gICAgICBkZWZhdWx0Q29uZmlndXJhdGlvbjogJ2RldmVsb3BtZW50JyxcbiAgICAgIG9wdGlvbnM6IHt9LFxuICAgICAgY29uZmlndXJhdGlvbnM6IHtcbiAgICAgICAgZGV2ZWxvcG1lbnQ6IHtcbiAgICAgICAgICBicm93c2VyVGFyZ2V0OiBgJHtwcm9qZWN0TmFtZX06YnVpbGQ6ZGV2ZWxvcG1lbnRgLFxuICAgICAgICAgIHNlcnZlclRhcmdldDogYCR7cHJvamVjdE5hbWV9OnNlcnZlcjpkZXZlbG9wbWVudGAsXG4gICAgICAgIH0sXG4gICAgICAgIHByb2R1Y3Rpb246IHtcbiAgICAgICAgICBicm93c2VyVGFyZ2V0OiBgJHtwcm9qZWN0TmFtZX06YnVpbGQ6cHJvZHVjdGlvbmAsXG4gICAgICAgICAgc2VydmVyVGFyZ2V0OiBgJHtwcm9qZWN0TmFtZX06c2VydmVyOnByb2R1Y3Rpb25gLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHByZXJlbmRlclRhcmdldCA9IHByb2plY3QudGFyZ2V0cy5nZXQoUFJFUkVOREVSX1RBUkdFVF9OQU1FKTtcbiAgICBpZiAocHJlcmVuZGVyVGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcHJvamVjdC50YXJnZXRzLmFkZCh7XG4gICAgICBuYW1lOiBQUkVSRU5ERVJfVEFSR0VUX05BTUUsXG4gICAgICBidWlsZGVyOiAnQGFuZ3VsYXItZGV2a2l0L2J1aWxkLWFuZ3VsYXI6cHJlcmVuZGVyJyxcbiAgICAgIGRlZmF1bHRDb25maWd1cmF0aW9uOiAncHJvZHVjdGlvbicsXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIHJvdXRlczogWycvJ10sXG4gICAgICB9LFxuICAgICAgY29uZmlndXJhdGlvbnM6IHtcbiAgICAgICAgcHJvZHVjdGlvbjoge1xuICAgICAgICAgIGJyb3dzZXJUYXJnZXQ6IGAke3Byb2plY3ROYW1lfTpidWlsZDpwcm9kdWN0aW9uYCxcbiAgICAgICAgICBzZXJ2ZXJUYXJnZXQ6IGAke3Byb2plY3ROYW1lfTpzZXJ2ZXI6cHJvZHVjdGlvbmAsXG4gICAgICAgIH0sXG4gICAgICAgIGRldmVsb3BtZW50OiB7XG4gICAgICAgICAgYnJvd3NlclRhcmdldDogYCR7cHJvamVjdE5hbWV9OmJ1aWxkOmRldmVsb3BtZW50YCxcbiAgICAgICAgICBzZXJ2ZXJUYXJnZXQ6IGAke3Byb2plY3ROYW1lfTpzZXJ2ZXI6ZGV2ZWxvcG1lbnRgLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVdlYnBhY2tCdWlsZGVyU2VydmVyVHNDb25maWdSdWxlKG9wdGlvbnM6IFNTUk9wdGlvbnMpOiBSdWxlIHtcbiAgcmV0dXJuIGFzeW5jIChob3N0KSA9PiB7XG4gICAgY29uc3Qgd29ya3NwYWNlID0gYXdhaXQgcmVhZFdvcmtzcGFjZShob3N0KTtcbiAgICBjb25zdCBwcm9qZWN0ID0gd29ya3NwYWNlLnByb2plY3RzLmdldChvcHRpb25zLnByb2plY3QpO1xuICAgIGNvbnN0IHNlcnZlclRhcmdldCA9IHByb2plY3Q/LnRhcmdldHMuZ2V0KCdzZXJ2ZXInKTtcbiAgICBpZiAoIXNlcnZlclRhcmdldCB8fCAhc2VydmVyVGFyZ2V0Lm9wdGlvbnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0c0NvbmZpZ1BhdGggPSBzZXJ2ZXJUYXJnZXQub3B0aW9ucy50c0NvbmZpZztcbiAgICBpZiAoIXRzQ29uZmlnUGF0aCB8fCB0eXBlb2YgdHNDb25maWdQYXRoICE9PSAnc3RyaW5nJykge1xuICAgICAgLy8gTm8gdHNjb25maWcgcGF0aFxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRzQ29uZmlnID0gbmV3IEpTT05GaWxlKGhvc3QsIHRzQ29uZmlnUGF0aCk7XG4gICAgY29uc3QgZmlsZXNBc3ROb2RlID0gdHNDb25maWcuZ2V0KFsnZmlsZXMnXSk7XG4gICAgY29uc3Qgc2VydmVyRmlsZVBhdGggPSAnc2VydmVyLnRzJztcbiAgICBpZiAoQXJyYXkuaXNBcnJheShmaWxlc0FzdE5vZGUpICYmICFmaWxlc0FzdE5vZGUuc29tZSgoeyB0ZXh0IH0pID0+IHRleHQgPT09IHNlcnZlckZpbGVQYXRoKSkge1xuICAgICAgdHNDb25maWcubW9kaWZ5KFsnZmlsZXMnXSwgWy4uLmZpbGVzQXN0Tm9kZSwgc2VydmVyRmlsZVBhdGhdKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGFkZERlcGVuZGVuY2llcygpOiBSdWxlIHtcbiAgcmV0dXJuIGNoYWluKFtcbiAgICBhZGREZXBlbmRlbmN5KCdAYW5ndWxhci9zc3InLCAnXjAuMC4wLVBMQUNFSE9MREVSJywge1xuICAgICAgdHlwZTogRGVwZW5kZW5jeVR5cGUuRGVmYXVsdCxcbiAgICB9KSxcbiAgICBhZGREZXBlbmRlbmN5KCdleHByZXNzJywgbGF0ZXN0VmVyc2lvbnNbJ2V4cHJlc3MnXSwge1xuICAgICAgdHlwZTogRGVwZW5kZW5jeVR5cGUuRGVmYXVsdCxcbiAgICB9KSxcbiAgICBhZGREZXBlbmRlbmN5KCdAdHlwZXMvZXhwcmVzcycsIGxhdGVzdFZlcnNpb25zWydAdHlwZXMvZXhwcmVzcyddLCB7XG4gICAgICB0eXBlOiBEZXBlbmRlbmN5VHlwZS5EZXYsXG4gICAgfSksXG4gIF0pO1xufVxuXG5mdW5jdGlvbiBhZGRTZXJ2ZXJGaWxlKG9wdGlvbnM6IFNlcnZlck9wdGlvbnMsIGlzU3RhbmRhbG9uZTogYm9vbGVhbik6IFJ1bGUge1xuICByZXR1cm4gYXN5bmMgKGhvc3QpID0+IHtcbiAgICBjb25zdCB3b3Jrc3BhY2UgPSBhd2FpdCByZWFkV29ya3NwYWNlKGhvc3QpO1xuICAgIGNvbnN0IHByb2plY3QgPSB3b3Jrc3BhY2UucHJvamVjdHMuZ2V0KG9wdGlvbnMucHJvamVjdCk7XG4gICAgaWYgKCFwcm9qZWN0KSB7XG4gICAgICB0aHJvdyBuZXcgU2NoZW1hdGljc0V4Y2VwdGlvbihgSW52YWxpZCBwcm9qZWN0IG5hbWUgKCR7b3B0aW9ucy5wcm9qZWN0fSlgKTtcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyRGlzdERpcmVjdG9yeSA9IGF3YWl0IGdldE91dHB1dFBhdGgoaG9zdCwgb3B0aW9ucy5wcm9qZWN0LCAnYnVpbGQnKTtcblxuICAgIHJldHVybiBtZXJnZVdpdGgoXG4gICAgICBhcHBseShcbiAgICAgICAgdXJsKFxuICAgICAgICAgIGAuL2ZpbGVzLyR7XG4gICAgICAgICAgICBwcm9qZWN0Py50YXJnZXRzPy5nZXQoJ2J1aWxkJyk/LmJ1aWxkZXIgPT09IEJ1aWxkZXJzLkFwcGxpY2F0aW9uXG4gICAgICAgICAgICAgID8gJ2FwcGxpY2F0aW9uLWJ1aWxkZXInXG4gICAgICAgICAgICAgIDogJ3NlcnZlci1idWlsZGVyJ1xuICAgICAgICAgIH1gLFxuICAgICAgICApLFxuICAgICAgICBbXG4gICAgICAgICAgYXBwbHlUZW1wbGF0ZXMoe1xuICAgICAgICAgICAgLi4uc3RyaW5ncyxcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICBicm93c2VyRGlzdERpcmVjdG9yeSxcbiAgICAgICAgICAgIGlzU3RhbmRhbG9uZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBtb3ZlKHByb2plY3Qucm9vdCksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgICk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChvcHRpb25zOiBTU1JPcHRpb25zKTogUnVsZSB7XG4gIHJldHVybiBhc3luYyAoaG9zdCkgPT4ge1xuICAgIGNvbnN0IGJyb3dzZXJFbnRyeVBvaW50ID0gYXdhaXQgZ2V0TWFpbkZpbGVQYXRoKGhvc3QsIG9wdGlvbnMucHJvamVjdCk7XG4gICAgY29uc3QgaXNTdGFuZGFsb25lID0gaXNTdGFuZGFsb25lQXBwKGhvc3QsIGJyb3dzZXJFbnRyeVBvaW50KTtcblxuICAgIGNvbnN0IHdvcmtzcGFjZSA9IGF3YWl0IGdldFdvcmtzcGFjZShob3N0KTtcbiAgICBjb25zdCBjbGllbnRQcm9qZWN0ID0gd29ya3NwYWNlLnByb2plY3RzLmdldChvcHRpb25zLnByb2plY3QpO1xuICAgIGlmICghY2xpZW50UHJvamVjdCkge1xuICAgICAgdGhyb3cgdGFyZ2V0QnVpbGROb3RGb3VuZEVycm9yKCk7XG4gICAgfVxuICAgIGNvbnN0IGlzVXNpbmdBcHBsaWNhdGlvbkJ1aWxkZXIgPVxuICAgICAgY2xpZW50UHJvamVjdC50YXJnZXRzLmdldCgnYnVpbGQnKT8uYnVpbGRlciA9PT0gQnVpbGRlcnMuQXBwbGljYXRpb247XG5cbiAgICByZXR1cm4gY2hhaW4oW1xuICAgICAgZXh0ZXJuYWxTY2hlbWF0aWMoJ0BzY2hlbWF0aWNzL2FuZ3VsYXInLCAnc2VydmVyJywge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBza2lwSW5zdGFsbDogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICAgLi4uKGlzVXNpbmdBcHBsaWNhdGlvbkJ1aWxkZXJcbiAgICAgICAgPyBbXG4gICAgICAgICAgICB1cGRhdGVBcHBsaWNhdGlvbkJ1aWxkZXJXb3Jrc3BhY2VDb25maWdSdWxlKGNsaWVudFByb2plY3Qucm9vdCwgb3B0aW9ucyksXG4gICAgICAgICAgICB1cGRhdGVBcHBsaWNhdGlvbkJ1aWxkZXJUc0NvbmZpZ1J1bGUob3B0aW9ucyksXG4gICAgICAgICAgXVxuICAgICAgICA6IFtcbiAgICAgICAgICAgIGFkZFNjcmlwdHNSdWxlKG9wdGlvbnMpLFxuICAgICAgICAgICAgdXBkYXRlV2VicGFja0J1aWxkZXJTZXJ2ZXJUc0NvbmZpZ1J1bGUob3B0aW9ucyksXG4gICAgICAgICAgICB1cGRhdGVXZWJwYWNrQnVpbGRlcldvcmtzcGFjZUNvbmZpZ1J1bGUob3B0aW9ucyksXG4gICAgICAgICAgXSksXG4gICAgICBhZGRTZXJ2ZXJGaWxlKG9wdGlvbnMsIGlzU3RhbmRhbG9uZSksXG4gICAgICBhZGREZXBlbmRlbmNpZXMoKSxcbiAgICBdKTtcbiAgfTtcbn1cbiJdfQ==
|
package/ssr/schema.d.ts
ADDED
package/ssr/schema.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// THIS FILE IS AUTOMATICALLY GENERATED. TO UPDATE THIS FILE YOU NEED TO CHANGE THE
|
|
3
|
+
// CORRESPONDING JSON SCHEMA FILE, THEN RUN devkit-admin build (or bazel build ...).
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc2NoZW1hdGljcy9hbmd1bGFyL3Nzci9zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLG1GQUFtRjtBQUNuRixvRkFBb0YiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIFRISVMgRklMRSBJUyBBVVRPTUFUSUNBTExZIEdFTkVSQVRFRC4gVE8gVVBEQVRFIFRISVMgRklMRSBZT1UgTkVFRCBUTyBDSEFOR0UgVEhFXG4vLyBDT1JSRVNQT05ESU5HIEpTT04gU0NIRU1BIEZJTEUsIFRIRU4gUlVOIGRldmtpdC1hZG1pbiBidWlsZCAob3IgYmF6ZWwgYnVpbGQgLi4uKS5cblxuZXhwb3J0IGludGVyZmFjZSBTY2hlbWEge1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0LlxuICAgICAqL1xuICAgIHByb2plY3Q6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBTa2lwIGluc3RhbGxpbmcgZGVwZW5kZW5jeSBwYWNrYWdlcy5cbiAgICAgKi9cbiAgICBza2lwSW5zdGFsbD86IGJvb2xlYW47XG59XG4iXX0=
|
package/ssr/schema.json
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema",
|
|
3
|
+
"$id": "SchematicsAngularSSR",
|
|
4
|
+
"title": "Angular SSR Options Schema",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"project": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "The name of the project.",
|
|
10
|
+
"$default": {
|
|
11
|
+
"$source": "projectName"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"skipInstall": {
|
|
15
|
+
"description": "Skip installing dependency packages.",
|
|
16
|
+
"type": "boolean",
|
|
17
|
+
"default": false
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"required": ["project"],
|
|
21
|
+
"additionalProperties": false
|
|
22
|
+
}
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"zone.js": "<%= latestVersions['zone.js'] %>"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@angular/cli": "<%= '
|
|
26
|
+
"@angular/cli": "<%= '^' + version %>",
|
|
27
27
|
"@angular/compiler-cli": "<%= latestVersions.Angular %>",<% if (!minimal) { %>
|
|
28
28
|
"@types/jasmine": "<%= latestVersions['@types/jasmine'] %>",
|
|
29
29
|
"jasmine-core": "<%= latestVersions['jasmine-core'] %>",
|