@decohere/create 0.0.1-dev.23 → 0.0.1-dev.25
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/commonjs/src/models/compose.model.js +56 -4
- package/commonjs/src/models/dev-container.model.js +29 -2
- package/commonjs/src/models/package-json.model.js +11 -6
- package/commonjs/src/runner.js +26 -2
- package/commonjs/src/webapi/create-api.js +66 -5
- package/commonjs/src/webapi/features/auth.feature.js +288 -7
- package/commonjs/src/webapi/features/auth0-cli.js +256 -9
- package/commonjs/src/webapi/features/database.feature.js +56 -24
- package/commonjs/src/webapi/features/postman.feature.js +337 -48
- package/commonjs/src/webapi/models/api-package-json.model.js +4 -1
- package/commonjs/src/webapi/models/auth-config.model.js +4 -1
- package/commonjs/src/webapi/models/controller-source-file.model.js +16 -8
- package/commonjs/src/webapi/models/main-source-file.model.js +28 -4
- package/es6/src/models/compose.model.js +57 -6
- package/es6/src/models/dev-container.model.js +30 -8
- package/es6/src/models/package-json.model.js +11 -6
- package/es6/src/runner.js +27 -3
- package/es6/src/webapi/create-api.js +66 -5
- package/es6/src/webapi/features/auth.feature.js +288 -7
- package/es6/src/webapi/features/auth0-cli.js +230 -9
- package/es6/src/webapi/features/database.feature.js +56 -24
- package/es6/src/webapi/features/postman.feature.js +324 -45
- package/es6/src/webapi/models/api-package-json.model.js +4 -1
- package/es6/src/webapi/models/auth-config.model.js +4 -1
- package/es6/src/webapi/models/controller-source-file.model.js +16 -8
- package/es6/src/webapi/models/main-source-file.model.js +28 -4
- package/package.json +2 -2
- package/types/src/models/compose.model.d.ts +27 -2
- package/types/src/models/dev-container.model.d.ts +12 -0
- package/types/src/models/package-json.model.d.ts +2 -0
- package/types/src/webapi/features/auth.feature.d.ts +3 -0
- package/types/src/webapi/features/auth0-cli.d.ts +50 -3
- package/types/src/webapi/features/postman.feature.d.ts +5 -0
- package/types/src/webapi/models/auth-config.model.d.ts +8 -0
- package/types/src/webapi/models/controller-source-file.model.d.ts +6 -3
- package/types/src/webapi/models/main-source-file.model.d.ts +12 -0
|
@@ -36,20 +36,28 @@ import { WELL_KNOWN_FILES } from "../../models/const.js";
|
|
|
36
36
|
name;
|
|
37
37
|
_httpDecorator;
|
|
38
38
|
_params;
|
|
39
|
-
_isAsync;
|
|
40
|
-
_body;
|
|
41
39
|
_extraDecorators = [];
|
|
42
|
-
|
|
40
|
+
_body;
|
|
41
|
+
_isAsync;
|
|
42
|
+
constructor(name, _httpDecorator, _params, isAsync, body){
|
|
43
43
|
this.name = name;
|
|
44
44
|
this._httpDecorator = _httpDecorator;
|
|
45
45
|
this._params = _params;
|
|
46
|
-
this._isAsync =
|
|
47
|
-
this._body =
|
|
46
|
+
this._isAsync = isAsync;
|
|
47
|
+
this._body = body;
|
|
48
48
|
}
|
|
49
49
|
addDecorator(decorator) {
|
|
50
50
|
this._extraDecorators.push(decorator);
|
|
51
51
|
return this;
|
|
52
52
|
}
|
|
53
|
+
/** Replace the method body lines (used by features that extend generated behaviour). */ setBody(body) {
|
|
54
|
+
this._body = body;
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
setAsync(isAsync = true) {
|
|
58
|
+
this._isAsync = isAsync;
|
|
59
|
+
return this;
|
|
60
|
+
}
|
|
53
61
|
render() {
|
|
54
62
|
const lines = [];
|
|
55
63
|
for (const d of this._extraDecorators){
|
|
@@ -96,7 +104,7 @@ import { WELL_KNOWN_FILES } from "../../models/const.js";
|
|
|
96
104
|
],
|
|
97
105
|
[
|
|
98
106
|
"create",
|
|
99
|
-
new ControllerMethod("create",
|
|
107
|
+
new ControllerMethod("create", "@Post()", "body: HelloBody", false, [
|
|
100
108
|
"return { message: body.message };"
|
|
101
109
|
])
|
|
102
110
|
],
|
|
@@ -139,7 +147,7 @@ import { WELL_KNOWN_FILES } from "../../models/const.js";
|
|
|
139
147
|
files() {
|
|
140
148
|
const lines = [
|
|
141
149
|
this._cortexImports.render("@decohere/cortex"),
|
|
142
|
-
'import { SampleService } from "../sample.service.js";'
|
|
150
|
+
'import { SampleService } from "../services/sample.service.js";'
|
|
143
151
|
];
|
|
144
152
|
for (const [from, group] of this._extraImportGroups){
|
|
145
153
|
lines.push(group.render(from));
|
|
@@ -168,4 +176,4 @@ import { WELL_KNOWN_FILES } from "../../models/const.js";
|
|
|
168
176
|
}
|
|
169
177
|
}
|
|
170
178
|
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL21vZGVscy9jb250cm9sbGVyLXNvdXJjZS1maWxlLm1vZGVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdFTExfS05PV05fRklMRVMgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbnN0LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEtleWVkTW9kZWwsIFNvdXJjZUZpbGUgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3NvdXJjZS1maWxlLmpzXCI7XG5cbi8qKiBUcmFja3MgbmFtZWQgaW1wb3J0cyBmcm9tIGEgc2luZ2xlIG1vZHVsZSBwYXRoLCBzcGxpdCBpbnRvIHZhbHVlcyBhbmQgdHlwZXMuICovXG5jbGFzcyBJbXBvcnRHcm91cCB7XG5cdHByaXZhdGUgcmVhZG9ubHkgX3ZhbHVlczogc3RyaW5nW10gPSBbXTtcblx0cHJpdmF0ZSByZWFkb25seSBfdHlwZXM6IHN0cmluZ1tdID0gW107XG5cblx0cHVibGljIGFkZChuYW1lOiBzdHJpbmcsIHR5cGVPbmx5ID0gZmFsc2UpOiB0aGlzIHtcblx0XHRpZiAodHlwZU9ubHkpIHtcblx0XHRcdC8vIFZhbHVlIGltcG9ydCBhbHJlYWR5IHByZXNlbnQg4oCUIHZhbHVlIHdpbnMsIHNraXBcblx0XHRcdGlmICghdGhpcy5fdmFsdWVzLmluY2x1ZGVzKG5hbWUpICYmICF0aGlzLl90eXBlcy5pbmNsdWRlcyhuYW1lKSkge1xuXHRcdFx0XHR0aGlzLl90eXBlcy5wdXNoKG5hbWUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBQcm9tb3RlOiByZW1vdmUgZnJvbSB0eXBlcyBpZiBpdCB3YXMgcHJldmlvdXNseSB0eXBlLW9ubHlcblx0XHRcdGNvbnN0IHR5cGVJZHggPSB0aGlzLl90eXBlcy5pbmRleE9mKG5hbWUpO1xuXHRcdFx0aWYgKHR5cGVJZHggIT09IC0xKSB0aGlzLl90eXBlcy5zcGxpY2UodHlwZUlkeCwgMSk7XG5cdFx0XHRpZiAoIXRoaXMuX3ZhbHVlcy5pbmNsdWRlcyhuYW1lKSkgdGhpcy5fdmFsdWVzLnB1c2gobmFtZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHJlbmRlcihmcm9tOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGNvbnN0IHZhbHVlcyA9IFsuLi50aGlzLl92YWx1ZXNdLnNvcnQoKTtcblx0XHRjb25zdCB0eXBlcyA9IFsuLi50aGlzLl90eXBlc10uc29ydCgpLm1hcCgobikgPT4gYHR5cGUgJHtufWApO1xuXHRcdHJldHVybiBgaW1wb3J0IHsgJHtbLi4udmFsdWVzLCAuLi50eXBlc10uam9pbihcIiwgXCIpfSB9IGZyb20gXCIke2Zyb219XCI7YDtcblx0fVxufVxuXG4vKipcbiAqIEEgY29udHJvbGxlciBtZXRob2QuIEZlYXR1cmVzIGNhbGwgYGFkZERlY29yYXRvcigpYCB0byBwcmVwZW5kIGRlY29yYXRvcnNcbiAqIGJlZm9yZSB0aGUgSFRUUCB2ZXJiIGRlY29yYXRvciAoZS5nLiBgQEFsbG93QW5vbnltb3VzYCBiZWZvcmUgYEBHZXQoKWApLlxuICovXG5leHBvcnQgY2xhc3MgQ29udHJvbGxlck1ldGhvZCB7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2V4dHJhRGVjb3JhdG9yczogc3RyaW5nW10gPSBbXTtcblxuXHRwdWJsaWMgY29uc3RydWN0b3IoXG5cdFx0cHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZyxcblx0XHRwcml2YXRlIHJlYWRvbmx5IF9odHRwRGVjb3JhdG9yOiBzdHJpbmcsXG5cdFx0cHJpdmF0ZSByZWFkb25seSBfcGFyYW1zOiBzdHJpbmcsXG5cdFx0cHJpdmF0ZSByZWFkb25seSBfaXNBc3luYzogYm9vbGVhbixcblx0XHRwcml2YXRlIHJlYWRvbmx5IF9ib2R5OiBzdHJpbmdbXSxcblx0KSB7fVxuXG5cdHB1YmxpYyBhZGREZWNvcmF0b3IoZGVjb3JhdG9yOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLl9leHRyYURlY29yYXRvcnMucHVzaChkZWNvcmF0b3IpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHJlbmRlcigpOiBzdHJpbmdbXSB7XG5cdFx0Y29uc3QgbGluZXM6IHN0cmluZ1tdID0gW107XG5cdFx0Zm9yIChjb25zdCBkIG9mIHRoaXMuX2V4dHJhRGVjb3JhdG9ycykge1xuXHRcdFx0bGluZXMucHVzaChgXFx0JHtkfWApO1xuXHRcdH1cblx0XHRsaW5lcy5wdXNoKGBcXHQke3RoaXMuX2h0dHBEZWNvcmF0b3J9YCk7XG5cdFx0Y29uc3QgYXN5bmNLdyA9IHRoaXMuX2lzQXN5bmMgPyBcImFzeW5jIFwiIDogXCJcIjtcblx0XHRsaW5lcy5wdXNoKGBcXHRwdWJsaWMgJHthc3luY0t3fSR7dGhpcy5uYW1lfSgke3RoaXMuX3BhcmFtc30pIHtgKTtcblx0XHRmb3IgKGNvbnN0IGxpbmUgb2YgdGhpcy5fYm9keSkge1xuXHRcdFx0bGluZXMucHVzaChgXFx0XFx0JHtsaW5lfWApO1xuXHRcdH1cblx0XHRsaW5lcy5wdXNoKFwiXFx0fVwiKTtcblx0XHRyZXR1cm4gbGluZXM7XG5cdH1cbn1cblxuLyoqXG4gKiBNb2RlbCBmb3IgYHByb2plY3RzL2FwaS9zcmMvY29udHJvbGxlcnMvaGVsbG8uY29udHJvbGxlci50c2AuXG4gKlxuICogUHJlLWluaXRpYWxpc2VkIHdpdGggYWxsIHJvdXRlcyBhbmQgdGhlaXIgSFRUUCBkZWNvcmF0b3JzLiBGZWF0dXJlcyBtdXRhdGVcbiAqIHRoZSBtb2RlbCB2aWEgYGdldE1ldGhvZChuYW1lKS5hZGREZWNvcmF0b3IoLi4uKWAsIGBhZGREZWNvcmF0b3IoLi4uKWAgKGNsYXNzXG4gKiBsZXZlbCksIGBhZGRDb3J0ZXhJbXBvcnQoLi4uKWAsIGBhZGRJbXBvcnQoLi4uKWAsIGFuZCBgYWRkQ29uc3RydWN0b3JQYXJhbSguLi4pYC5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbnRyb2xsZXJTb3VyY2VGaWxlIGltcGxlbWVudHMgS2V5ZWRNb2RlbCB7XG5cdHB1YmxpYyByZWFkb25seSBrZXkgPSBXRUxMX0tOT1dOX0ZJTEVTLkNPTlRST0xMRVJfVFM7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfY29ydGV4SW1wb3J0cyA9IG5ldyBJbXBvcnRHcm91cCgpXG5cdFx0LmFkZChcIkNvbnRyb2xsZXJcIilcblx0XHQuYWRkKFwiRGVsZXRlXCIpXG5cdFx0LmFkZChcIkZpZWxkXCIpXG5cdFx0LmFkZChcIkdldFwiKVxuXHRcdC5hZGQoXCJQYXJhbVwiKVxuXHRcdC5hZGQoXCJQb3N0XCIpXG5cdFx0LmFkZChcIlB1dFwiKVxuXHRcdC5hZGQoXCJRdWVyeVwiKTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9leHRyYUltcG9ydEdyb3VwcyA9IG5ldyBNYXA8c3RyaW5nLCBJbXBvcnRHcm91cD4oKTtcblx0cHJpdmF0ZSByZWFkb25seSBfY2xhc3NEZWNvcmF0b3JzOiBzdHJpbmdbXSA9IFtdO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9jdG9yUGFyYW1zOiBzdHJpbmdbXSA9IFtcInByaXZhdGUgcmVhZG9ubHkgc2FtcGxlOiBTYW1wbGVTZXJ2aWNlXCJdO1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgX21ldGhvZHMgPSBuZXcgTWFwPHN0cmluZywgQ29udHJvbGxlck1ldGhvZD4oW1xuXHRcdFtcblx0XHRcdFwiZ2V0QWxsXCIsXG5cdFx0XHRuZXcgQ29udHJvbGxlck1ldGhvZChcImdldEFsbFwiLCBcIkBHZXQoKVwiLCAnQFF1ZXJ5KFwiZmlsdGVyXCIpIGZpbHRlcjogc3RyaW5nJywgdHJ1ZSwgW1xuXHRcdFx0XHRcImNvbnN0IGdyZWV0aW5nID0gYXdhaXQgdGhpcy5zYW1wbGUuZ2V0R3JlZXRpbmcoKTtcIixcblx0XHRcdFx0XCJyZXR1cm4geyBmaWx0ZXIsIG1lc3NhZ2U6IGdyZWV0aW5nIH07XCIsXG5cdFx0XHRdKSxcblx0XHRdLFxuXHRcdFtcblx0XHRcdFwiZ2V0T25lXCIsXG5cdFx0XHRuZXcgQ29udHJvbGxlck1ldGhvZChcblx0XHRcdFx0XCJnZXRPbmVcIixcblx0XHRcdFx0J0BHZXQoXCIvOmlkXCIpJyxcblx0XHRcdFx0J0BQYXJhbShcImlkXCIpIGlkOiBzdHJpbmcnLFxuXHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0Ly8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub1RlbXBsYXRlQ3VybHlJblN0cmluZzogdGVtcGxhdGUgbGl0ZXJhbCBpbiBnZW5lcmF0ZWQgY29kZVxuXHRcdFx0XHRbXCJyZXR1cm4geyBpZCwgbWVzc2FnZTogYEhlbGxvICR7aWR9IWAgfTtcIl0sXG5cdFx0XHQpLFxuXHRcdF0sXG5cdFx0W1xuXHRcdFx0XCJjcmVhdGVcIixcblx0XHRcdG5ldyBDb250cm9sbGVyTWV0aG9kKFwiY3JlYXRlXCIsICdAUG9zdChcIi9cIiknLCBcImJvZHk6IEhlbGxvQm9keVwiLCBmYWxzZSwgW1xuXHRcdFx0XHRcInJldHVybiB7IG1lc3NhZ2U6IGJvZHkubWVzc2FnZSB9O1wiLFxuXHRcdFx0XSksXG5cdFx0XSxcblx0XHRbXG5cdFx0XHRcInVwZGF0ZVwiLFxuXHRcdFx0bmV3IENvbnRyb2xsZXJNZXRob2QoXG5cdFx0XHRcdFwidXBkYXRlXCIsXG5cdFx0XHRcdCdAUHV0KFwiLzppZFwiKScsXG5cdFx0XHRcdCdAUGFyYW0oXCJpZFwiKSBpZDogc3RyaW5nLCBib2R5OiBIZWxsb0JvZHknLFxuXHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0W1wicmV0dXJuIHsgaWQsIG1lc3NhZ2U6IGJvZHkubWVzc2FnZSB9O1wiXSxcblx0XHRcdCksXG5cdFx0XSxcblx0XHRbXG5cdFx0XHRcInJlbW92ZVwiLFxuXHRcdFx0bmV3IENvbnRyb2xsZXJNZXRob2QoXCJyZW1vdmVcIiwgJ0BEZWxldGUoXCIvOmlkXCIpJywgJ0BQYXJhbShcImlkXCIpIGlkOiBzdHJpbmcnLCBmYWxzZSwgW1xuXHRcdFx0XHRcInJldHVybiB7IGlkLCBkZWxldGVkOiB0cnVlIH07XCIsXG5cdFx0XHRdKSxcblx0XHRdLFxuXHRdKTtcblxuXHQvKiogUmV0cmlldmUgYSBtZXRob2QgYnkgbmFtZSB0byBtdXRhdGUgaXRzIGRlY29yYXRvcnMuICovXG5cdHB1YmxpYyBnZXRNZXRob2QobmFtZTogc3RyaW5nKTogQ29udHJvbGxlck1ldGhvZCB7XG5cdFx0Y29uc3QgbSA9IHRoaXMuX21ldGhvZHMuZ2V0KG5hbWUpO1xuXHRcdGlmIChtID09IG51bGwpIHRocm93IG5ldyBFcnJvcihgTm8gbWV0aG9kICcke25hbWV9JyBvbiBDb250cm9sbGVyU291cmNlRmlsZWApO1xuXHRcdHJldHVybiBtO1xuXHR9XG5cblx0LyoqIEFkZCBhIGNsYXNzLWxldmVsIGRlY29yYXRvciAoZS5nLiBgQEF1dGhvcml6ZWApLiAqL1xuXHRwdWJsaWMgYWRkRGVjb3JhdG9yKGRlY29yYXRvcjogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fY2xhc3NEZWNvcmF0b3JzLnB1c2goZGVjb3JhdG9yKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKiBBZGQgYSBuYW1lZCBpbXBvcnQgZnJvbSBgQGRlY29oZXJlL2NvcnRleGAuICovXG5cdHB1YmxpYyBhZGRDb3J0ZXhJbXBvcnQobmFtZTogc3RyaW5nLCB0eXBlT25seSA9IGZhbHNlKTogdGhpcyB7XG5cdFx0dGhpcy5fY29ydGV4SW1wb3J0cy5hZGQobmFtZSwgdHlwZU9ubHkpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqIEFkZCBhIG5hbWVkIGltcG9ydCBmcm9tIGFueSBvdGhlciBtb2R1bGUuICovXG5cdHB1YmxpYyBhZGRJbXBvcnQobmFtZTogc3RyaW5nLCBmcm9tOiBzdHJpbmcsIHR5cGVPbmx5ID0gZmFsc2UpOiB0aGlzIHtcblx0XHRjb25zdCBncm91cCA9IHRoaXMuX2V4dHJhSW1wb3J0R3JvdXBzLmdldChmcm9tKSA/PyBuZXcgSW1wb3J0R3JvdXAoKTtcblx0XHRncm91cC5hZGQobmFtZSwgdHlwZU9ubHkpO1xuXHRcdHRoaXMuX2V4dHJhSW1wb3J0R3JvdXBzLnNldChmcm9tLCBncm91cCk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKiogQWRkIGEgY29uc3RydWN0b3IgcGFyYW1ldGVyIChlLmcuIGFuIGluamVjdGVkIGRlcGVuZGVuY3kpLiAqL1xuXHRwdWJsaWMgYWRkQ29uc3RydWN0b3JQYXJhbShwYXJhbTogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fY3RvclBhcmFtcy5wdXNoKHBhcmFtKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBmaWxlcygpOiBTb3VyY2VGaWxlW10ge1xuXHRcdGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtcblx0XHRcdHRoaXMuX2NvcnRleEltcG9ydHMucmVuZGVyKFwiQGRlY29oZXJlL2NvcnRleFwiKSxcblx0XHRcdCdpbXBvcnQgeyBTYW1wbGVTZXJ2aWNlIH0gZnJvbSBcIi4uL3NhbXBsZS5zZXJ2aWNlLmpzXCI7Jyxcblx0XHRdO1xuXG5cdFx0Zm9yIChjb25zdCBbZnJvbSwgZ3JvdXBdIG9mIHRoaXMuX2V4dHJhSW1wb3J0R3JvdXBzKSB7XG5cdFx0XHRsaW5lcy5wdXNoKGdyb3VwLnJlbmRlcihmcm9tKSk7XG5cdFx0fVxuXG5cdFx0bGluZXMucHVzaChcblx0XHRcdFwiXCIsXG5cdFx0XHRcImNsYXNzIEhlbGxvQm9keSB7XCIsXG5cdFx0XHQnXFx0QEZpZWxkKFwiYm9keVwiLCBcIm1lc3NhZ2VcIiknLFxuXHRcdFx0XCJcXHRwdWJsaWMgbWVzc2FnZSE6IHN0cmluZztcIixcblx0XHRcdFwifVwiLFxuXHRcdFx0XCJcIixcblx0XHQpO1xuXG5cdFx0Zm9yIChjb25zdCBkIG9mIHRoaXMuX2NsYXNzRGVjb3JhdG9ycykge1xuXHRcdFx0bGluZXMucHVzaChkKTtcblx0XHR9XG5cdFx0bGluZXMucHVzaCgnQENvbnRyb2xsZXIoeyBwcmVmaXg6IFwiL2hlbGxvXCIgfSknLCBcImV4cG9ydCBjbGFzcyBIZWxsb0NvbnRyb2xsZXIge1wiLCBcIlwiKTtcblxuXHRcdGxpbmVzLnB1c2goXCJcXHRwdWJsaWMgY29uc3RydWN0b3IoXCIpO1xuXHRcdGZvciAoY29uc3QgcCBvZiB0aGlzLl9jdG9yUGFyYW1zKSB7XG5cdFx0XHRsaW5lcy5wdXNoKGBcXHRcXHQke3B9LGApO1xuXHRcdH1cblx0XHRsaW5lcy5wdXNoKFwiXFx0KSB7fVwiKTtcblx0XHRsaW5lcy5wdXNoKFwiXCIpO1xuXG5cdFx0Zm9yIChjb25zdCBtZXRob2Qgb2YgdGhpcy5fbWV0aG9kcy52YWx1ZXMoKSkge1xuXHRcdFx0bGluZXMucHVzaCguLi5tZXRob2QucmVuZGVyKCksIFwiXCIpO1xuXHRcdH1cblxuXHRcdGxpbmVzLnB1c2goXCJ9XCIsIFwiXCIpO1xuXG5cdFx0cmV0dXJuIFtcblx0XHRcdHtcblx0XHRcdFx0ZmlsZVBhdGg6IFwic3JjL2NvbnRyb2xsZXJzL2hlbGxvLmNvbnRyb2xsZXIudHNcIixcblx0XHRcdFx0Y29udGVudDogbGluZXMuam9pbihcIlxcblwiKSxcblx0XHRcdH0sXG5cdFx0XTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIldFTExfS05PV05fRklMRVMiLCJJbXBvcnRHcm91cCIsIl92YWx1ZXMiLCJfdHlwZXMiLCJhZGQiLCJuYW1lIiwidHlwZU9ubHkiLCJpbmNsdWRlcyIsInB1c2giLCJ0eXBlSWR4IiwiaW5kZXhPZiIsInNwbGljZSIsInJlbmRlciIsImZyb20iLCJ2YWx1ZXMiLCJzb3J0IiwidHlwZXMiLCJtYXAiLCJuIiwiam9pbiIsIkNvbnRyb2xsZXJNZXRob2QiLCJfZXh0cmFEZWNvcmF0b3JzIiwiX2h0dHBEZWNvcmF0b3IiLCJfcGFyYW1zIiwiX2lzQXN5bmMiLCJfYm9keSIsImFkZERlY29yYXRvciIsImRlY29yYXRvciIsImxpbmVzIiwiZCIsImFzeW5jS3ciLCJsaW5lIiwiQ29udHJvbGxlclNvdXJjZUZpbGUiLCJrZXkiLCJDT05UUk9MTEVSX1RTIiwiX2NvcnRleEltcG9ydHMiLCJfZXh0cmFJbXBvcnRHcm91cHMiLCJNYXAiLCJfY2xhc3NEZWNvcmF0b3JzIiwiX2N0b3JQYXJhbXMiLCJfbWV0aG9kcyIsImdldE1ldGhvZCIsIm0iLCJnZXQiLCJFcnJvciIsImFkZENvcnRleEltcG9ydCIsImFkZEltcG9ydCIsImdyb3VwIiwic2V0IiwiYWRkQ29uc3RydWN0b3JQYXJhbSIsInBhcmFtIiwiZmlsZXMiLCJwIiwibWV0aG9kIiwiZmlsZVBhdGgiLCJjb250ZW50Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxnQkFBZ0IsUUFBUSx3QkFBd0I7QUFHekQsaUZBQWlGLEdBQ2pGLE1BQU1DO0lBQ1lDLFVBQW9CLEVBQUUsQ0FBQztJQUN2QkMsU0FBbUIsRUFBRSxDQUFDO0lBRWhDQyxJQUFJQyxJQUFZLEVBQUVDLFdBQVcsS0FBSyxFQUFRO1FBQ2hELElBQUlBLFVBQVU7WUFDYixrREFBa0Q7WUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQ0osT0FBTyxDQUFDSyxRQUFRLENBQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUNGLE1BQU0sQ0FBQ0ksUUFBUSxDQUFDRixPQUFPO2dCQUNoRSxJQUFJLENBQUNGLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDSDtZQUNsQjtRQUNELE9BQU87WUFDTiw0REFBNEQ7WUFDNUQsTUFBTUksVUFBVSxJQUFJLENBQUNOLE1BQU0sQ0FBQ08sT0FBTyxDQUFDTDtZQUNwQyxJQUFJSSxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUNOLE1BQU0sQ0FBQ1EsTUFBTSxDQUFDRixTQUFTO1lBQ2hELElBQUksQ0FBQyxJQUFJLENBQUNQLE9BQU8sQ0FBQ0ssUUFBUSxDQUFDRixPQUFPLElBQUksQ0FBQ0gsT0FBTyxDQUFDTSxJQUFJLENBQUNIO1FBQ3JEO1FBQ0EsT0FBTyxJQUFJO0lBQ1o7SUFFT08sT0FBT0MsSUFBWSxFQUFVO1FBQ25DLE1BQU1DLFNBQVM7ZUFBSSxJQUFJLENBQUNaLE9BQU87U0FBQyxDQUFDYSxJQUFJO1FBQ3JDLE1BQU1DLFFBQVE7ZUFBSSxJQUFJLENBQUNiLE1BQU07U0FBQyxDQUFDWSxJQUFJLEdBQUdFLEdBQUcsQ0FBQyxDQUFDQyxJQUFNLENBQUMsS0FB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
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL21vZGVscy9jb250cm9sbGVyLXNvdXJjZS1maWxlLm1vZGVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdFTExfS05PV05fRklMRVMgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbnN0LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEtleWVkTW9kZWwsIFNvdXJjZUZpbGUgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3NvdXJjZS1maWxlLmpzXCI7XG5cbi8qKiBUcmFja3MgbmFtZWQgaW1wb3J0cyBmcm9tIGEgc2luZ2xlIG1vZHVsZSBwYXRoLCBzcGxpdCBpbnRvIHZhbHVlcyBhbmQgdHlwZXMuICovXG5jbGFzcyBJbXBvcnRHcm91cCB7XG5cdHByaXZhdGUgcmVhZG9ubHkgX3ZhbHVlczogc3RyaW5nW10gPSBbXTtcblx0cHJpdmF0ZSByZWFkb25seSBfdHlwZXM6IHN0cmluZ1tdID0gW107XG5cblx0cHVibGljIGFkZChuYW1lOiBzdHJpbmcsIHR5cGVPbmx5ID0gZmFsc2UpOiB0aGlzIHtcblx0XHRpZiAodHlwZU9ubHkpIHtcblx0XHRcdC8vIFZhbHVlIGltcG9ydCBhbHJlYWR5IHByZXNlbnQg4oCUIHZhbHVlIHdpbnMsIHNraXBcblx0XHRcdGlmICghdGhpcy5fdmFsdWVzLmluY2x1ZGVzKG5hbWUpICYmICF0aGlzLl90eXBlcy5pbmNsdWRlcyhuYW1lKSkge1xuXHRcdFx0XHR0aGlzLl90eXBlcy5wdXNoKG5hbWUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBQcm9tb3RlOiByZW1vdmUgZnJvbSB0eXBlcyBpZiBpdCB3YXMgcHJldmlvdXNseSB0eXBlLW9ubHlcblx0XHRcdGNvbnN0IHR5cGVJZHggPSB0aGlzLl90eXBlcy5pbmRleE9mKG5hbWUpO1xuXHRcdFx0aWYgKHR5cGVJZHggIT09IC0xKSB0aGlzLl90eXBlcy5zcGxpY2UodHlwZUlkeCwgMSk7XG5cdFx0XHRpZiAoIXRoaXMuX3ZhbHVlcy5pbmNsdWRlcyhuYW1lKSkgdGhpcy5fdmFsdWVzLnB1c2gobmFtZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHJlbmRlcihmcm9tOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGNvbnN0IHZhbHVlcyA9IFsuLi50aGlzLl92YWx1ZXNdLnNvcnQoKTtcblx0XHRjb25zdCB0eXBlcyA9IFsuLi50aGlzLl90eXBlc10uc29ydCgpLm1hcCgobikgPT4gYHR5cGUgJHtufWApO1xuXHRcdHJldHVybiBgaW1wb3J0IHsgJHtbLi4udmFsdWVzLCAuLi50eXBlc10uam9pbihcIiwgXCIpfSB9IGZyb20gXCIke2Zyb219XCI7YDtcblx0fVxufVxuXG4vKipcbiAqIEEgY29udHJvbGxlciBtZXRob2QuIEZlYXR1cmVzIGNhbGwgYGFkZERlY29yYXRvcigpYCB0byBwcmVwZW5kIGRlY29yYXRvcnNcbiAqIGJlZm9yZSB0aGUgSFRUUCB2ZXJiIGRlY29yYXRvciAoZS5nLiBgQEFsbG93QW5vbnltb3VzYCBiZWZvcmUgYEBHZXQoKWApLlxuICovXG5leHBvcnQgY2xhc3MgQ29udHJvbGxlck1ldGhvZCB7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2V4dHJhRGVjb3JhdG9yczogc3RyaW5nW10gPSBbXTtcblx0cHJpdmF0ZSBfYm9keTogc3RyaW5nW107XG5cdHByaXZhdGUgX2lzQXN5bmM6IGJvb2xlYW47XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKFxuXHRcdHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmcsXG5cdFx0cHJpdmF0ZSByZWFkb25seSBfaHR0cERlY29yYXRvcjogc3RyaW5nLFxuXHRcdHByaXZhdGUgcmVhZG9ubHkgX3BhcmFtczogc3RyaW5nLFxuXHRcdGlzQXN5bmM6IGJvb2xlYW4sXG5cdFx0Ym9keTogc3RyaW5nW10sXG5cdCkge1xuXHRcdHRoaXMuX2lzQXN5bmMgPSBpc0FzeW5jO1xuXHRcdHRoaXMuX2JvZHkgPSBib2R5O1xuXHR9XG5cblx0cHVibGljIGFkZERlY29yYXRvcihkZWNvcmF0b3I6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX2V4dHJhRGVjb3JhdG9ycy5wdXNoKGRlY29yYXRvcik7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKiogUmVwbGFjZSB0aGUgbWV0aG9kIGJvZHkgbGluZXMgKHVzZWQgYnkgZmVhdHVyZXMgdGhhdCBleHRlbmQgZ2VuZXJhdGVkIGJlaGF2aW91cikuICovXG5cdHB1YmxpYyBzZXRCb2R5KGJvZHk6IHN0cmluZ1tdKTogdGhpcyB7XG5cdFx0dGhpcy5fYm9keSA9IGJvZHk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgc2V0QXN5bmMoaXNBc3luYyA9IHRydWUpOiB0aGlzIHtcblx0XHR0aGlzLl9pc0FzeW5jID0gaXNBc3luYztcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyByZW5kZXIoKTogc3RyaW5nW10ge1xuXHRcdGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGZvciAoY29uc3QgZCBvZiB0aGlzLl9leHRyYURlY29yYXRvcnMpIHtcblx0XHRcdGxpbmVzLnB1c2goYFxcdCR7ZH1gKTtcblx0XHR9XG5cdFx0bGluZXMucHVzaChgXFx0JHt0aGlzLl9odHRwRGVjb3JhdG9yfWApO1xuXHRcdGNvbnN0IGFzeW5jS3cgPSB0aGlzLl9pc0FzeW5jID8gXCJhc3luYyBcIiA6IFwiXCI7XG5cdFx0bGluZXMucHVzaChgXFx0cHVibGljICR7YXN5bmNLd30ke3RoaXMubmFtZX0oJHt0aGlzLl9wYXJhbXN9KSB7YCk7XG5cdFx0Zm9yIChjb25zdCBsaW5lIG9mIHRoaXMuX2JvZHkpIHtcblx0XHRcdGxpbmVzLnB1c2goYFxcdFxcdCR7bGluZX1gKTtcblx0XHR9XG5cdFx0bGluZXMucHVzaChcIlxcdH1cIik7XG5cdFx0cmV0dXJuIGxpbmVzO1xuXHR9XG59XG5cbi8qKlxuICogTW9kZWwgZm9yIGBwcm9qZWN0cy9hcGkvc3JjL2NvbnRyb2xsZXJzL2hlbGxvLmNvbnRyb2xsZXIudHNgLlxuICpcbiAqIFByZS1pbml0aWFsaXNlZCB3aXRoIGFsbCByb3V0ZXMgYW5kIHRoZWlyIEhUVFAgZGVjb3JhdG9ycy4gRmVhdHVyZXMgbXV0YXRlXG4gKiB0aGUgbW9kZWwgdmlhIGBnZXRNZXRob2QobmFtZSkuYWRkRGVjb3JhdG9yKC4uLilgLCBgYWRkRGVjb3JhdG9yKC4uLilgIChjbGFzc1xuICogbGV2ZWwpLCBgYWRkQ29ydGV4SW1wb3J0KC4uLilgLCBgYWRkSW1wb3J0KC4uLilgLCBhbmQgYGFkZENvbnN0cnVjdG9yUGFyYW0oLi4uKWAuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb250cm9sbGVyU291cmNlRmlsZSBpbXBsZW1lbnRzIEtleWVkTW9kZWwge1xuXHRwdWJsaWMgcmVhZG9ubHkga2V5ID0gV0VMTF9LTk9XTl9GSUxFUy5DT05UUk9MTEVSX1RTO1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgX2NvcnRleEltcG9ydHMgPSBuZXcgSW1wb3J0R3JvdXAoKVxuXHRcdC5hZGQoXCJDb250cm9sbGVyXCIpXG5cdFx0LmFkZChcIkRlbGV0ZVwiKVxuXHRcdC5hZGQoXCJGaWVsZFwiKVxuXHRcdC5hZGQoXCJHZXRcIilcblx0XHQuYWRkKFwiUGFyYW1cIilcblx0XHQuYWRkKFwiUG9zdFwiKVxuXHRcdC5hZGQoXCJQdXRcIilcblx0XHQuYWRkKFwiUXVlcnlcIik7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfZXh0cmFJbXBvcnRHcm91cHMgPSBuZXcgTWFwPHN0cmluZywgSW1wb3J0R3JvdXA+KCk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2NsYXNzRGVjb3JhdG9yczogc3RyaW5nW10gPSBbXTtcblx0cHJpdmF0ZSByZWFkb25seSBfY3RvclBhcmFtczogc3RyaW5nW10gPSBbXCJwcml2YXRlIHJlYWRvbmx5IHNhbXBsZTogU2FtcGxlU2VydmljZVwiXTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9tZXRob2RzID0gbmV3IE1hcDxzdHJpbmcsIENvbnRyb2xsZXJNZXRob2Q+KFtcblx0XHRbXG5cdFx0XHRcImdldEFsbFwiLFxuXHRcdFx0bmV3IENvbnRyb2xsZXJNZXRob2QoXCJnZXRBbGxcIiwgXCJAR2V0KClcIiwgJ0BRdWVyeShcImZpbHRlclwiKSBmaWx0ZXI6IHN0cmluZycsIHRydWUsIFtcblx0XHRcdFx0XCJjb25zdCBncmVldGluZyA9IGF3YWl0IHRoaXMuc2FtcGxlLmdldEdyZWV0aW5nKCk7XCIsXG5cdFx0XHRcdFwicmV0dXJuIHsgZmlsdGVyLCBtZXNzYWdlOiBncmVldGluZyB9O1wiLFxuXHRcdFx0XSksXG5cdFx0XSxcblx0XHRbXG5cdFx0XHRcImdldE9uZVwiLFxuXHRcdFx0bmV3IENvbnRyb2xsZXJNZXRob2QoXG5cdFx0XHRcdFwiZ2V0T25lXCIsXG5cdFx0XHRcdCdAR2V0KFwiLzppZFwiKScsXG5cdFx0XHRcdCdAUGFyYW0oXCJpZFwiKSBpZDogc3RyaW5nJyxcblx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9UZW1wbGF0ZUN1cmx5SW5TdHJpbmc6IHRlbXBsYXRlIGxpdGVyYWwgaW4gZ2VuZXJhdGVkIGNvZGVcblx0XHRcdFx0W1wicmV0dXJuIHsgaWQsIG1lc3NhZ2U6IGBIZWxsbyAke2lkfSFgIH07XCJdLFxuXHRcdFx0KSxcblx0XHRdLFxuXHRcdFtcblx0XHRcdFwiY3JlYXRlXCIsXG5cdFx0XHRuZXcgQ29udHJvbGxlck1ldGhvZChcImNyZWF0ZVwiLCBcIkBQb3N0KClcIiwgXCJib2R5OiBIZWxsb0JvZHlcIiwgZmFsc2UsIFtcblx0XHRcdFx0XCJyZXR1cm4geyBtZXNzYWdlOiBib2R5Lm1lc3NhZ2UgfTtcIixcblx0XHRcdF0pLFxuXHRcdF0sXG5cdFx0W1xuXHRcdFx0XCJ1cGRhdGVcIixcblx0XHRcdG5ldyBDb250cm9sbGVyTWV0aG9kKFxuXHRcdFx0XHRcInVwZGF0ZVwiLFxuXHRcdFx0XHQnQFB1dChcIi86aWRcIiknLFxuXHRcdFx0XHQnQFBhcmFtKFwiaWRcIikgaWQ6IHN0cmluZywgYm9keTogSGVsbG9Cb2R5Jyxcblx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdFtcInJldHVybiB7IGlkLCBtZXNzYWdlOiBib2R5Lm1lc3NhZ2UgfTtcIl0sXG5cdFx0XHQpLFxuXHRcdF0sXG5cdFx0W1xuXHRcdFx0XCJyZW1vdmVcIixcblx0XHRcdG5ldyBDb250cm9sbGVyTWV0aG9kKFwicmVtb3ZlXCIsICdARGVsZXRlKFwiLzppZFwiKScsICdAUGFyYW0oXCJpZFwiKSBpZDogc3RyaW5nJywgZmFsc2UsIFtcblx0XHRcdFx0XCJyZXR1cm4geyBpZCwgZGVsZXRlZDogdHJ1ZSB9O1wiLFxuXHRcdFx0XSksXG5cdFx0XSxcblx0XSk7XG5cblx0LyoqIFJldHJpZXZlIGEgbWV0aG9kIGJ5IG5hbWUgdG8gbXV0YXRlIGl0cyBkZWNvcmF0b3JzLiAqL1xuXHRwdWJsaWMgZ2V0TWV0aG9kKG5hbWU6IHN0cmluZyk6IENvbnRyb2xsZXJNZXRob2Qge1xuXHRcdGNvbnN0IG0gPSB0aGlzLl9tZXRob2RzLmdldChuYW1lKTtcblx0XHRpZiAobSA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoYE5vIG1ldGhvZCAnJHtuYW1lfScgb24gQ29udHJvbGxlclNvdXJjZUZpbGVgKTtcblx0XHRyZXR1cm4gbTtcblx0fVxuXG5cdC8qKiBBZGQgYSBjbGFzcy1sZXZlbCBkZWNvcmF0b3IgKGUuZy4gYEBBdXRob3JpemVgKS4gKi9cblx0cHVibGljIGFkZERlY29yYXRvcihkZWNvcmF0b3I6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX2NsYXNzRGVjb3JhdG9ycy5wdXNoKGRlY29yYXRvcik7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKiogQWRkIGEgbmFtZWQgaW1wb3J0IGZyb20gYEBkZWNvaGVyZS9jb3J0ZXhgLiAqL1xuXHRwdWJsaWMgYWRkQ29ydGV4SW1wb3J0KG5hbWU6IHN0cmluZywgdHlwZU9ubHkgPSBmYWxzZSk6IHRoaXMge1xuXHRcdHRoaXMuX2NvcnRleEltcG9ydHMuYWRkKG5hbWUsIHR5cGVPbmx5KTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKiBBZGQgYSBuYW1lZCBpbXBvcnQgZnJvbSBhbnkgb3RoZXIgbW9kdWxlLiAqL1xuXHRwdWJsaWMgYWRkSW1wb3J0KG5hbWU6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0eXBlT25seSA9IGZhbHNlKTogdGhpcyB7XG5cdFx0Y29uc3QgZ3JvdXAgPSB0aGlzLl9leHRyYUltcG9ydEdyb3Vwcy5nZXQoZnJvbSkgPz8gbmV3IEltcG9ydEdyb3VwKCk7XG5cdFx0Z3JvdXAuYWRkKG5hbWUsIHR5cGVPbmx5KTtcblx0XHR0aGlzLl9leHRyYUltcG9ydEdyb3Vwcy5zZXQoZnJvbSwgZ3JvdXApO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqIEFkZCBhIGNvbnN0cnVjdG9yIHBhcmFtZXRlciAoZS5nLiBhbiBpbmplY3RlZCBkZXBlbmRlbmN5KS4gKi9cblx0cHVibGljIGFkZENvbnN0cnVjdG9yUGFyYW0ocGFyYW06IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX2N0b3JQYXJhbXMucHVzaChwYXJhbSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZmlsZXMoKTogU291cmNlRmlsZVtdIHtcblx0XHRjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXG5cdFx0XHR0aGlzLl9jb3J0ZXhJbXBvcnRzLnJlbmRlcihcIkBkZWNvaGVyZS9jb3J0ZXhcIiksXG5cdFx0XHQnaW1wb3J0IHsgU2FtcGxlU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9zYW1wbGUuc2VydmljZS5qc1wiOycsXG5cdFx0XTtcblxuXHRcdGZvciAoY29uc3QgW2Zyb20sIGdyb3VwXSBvZiB0aGlzLl9leHRyYUltcG9ydEdyb3Vwcykge1xuXHRcdFx0bGluZXMucHVzaChncm91cC5yZW5kZXIoZnJvbSkpO1xuXHRcdH1cblxuXHRcdGxpbmVzLnB1c2goXG5cdFx0XHRcIlwiLFxuXHRcdFx0XCJjbGFzcyBIZWxsb0JvZHkge1wiLFxuXHRcdFx0J1xcdEBGaWVsZChcImJvZHlcIiwgXCJtZXNzYWdlXCIpJyxcblx0XHRcdFwiXFx0cHVibGljIG1lc3NhZ2UhOiBzdHJpbmc7XCIsXG5cdFx0XHRcIn1cIixcblx0XHRcdFwiXCIsXG5cdFx0KTtcblxuXHRcdGZvciAoY29uc3QgZCBvZiB0aGlzLl9jbGFzc0RlY29yYXRvcnMpIHtcblx0XHRcdGxpbmVzLnB1c2goZCk7XG5cdFx0fVxuXHRcdGxpbmVzLnB1c2goJ0BDb250cm9sbGVyKHsgcHJlZml4OiBcIi9oZWxsb1wiIH0pJywgXCJleHBvcnQgY2xhc3MgSGVsbG9Db250cm9sbGVyIHtcIiwgXCJcIik7XG5cblx0XHRsaW5lcy5wdXNoKFwiXFx0cHVibGljIGNvbnN0cnVjdG9yKFwiKTtcblx0XHRmb3IgKGNvbnN0IHAgb2YgdGhpcy5fY3RvclBhcmFtcykge1xuXHRcdFx0bGluZXMucHVzaChgXFx0XFx0JHtwfSxgKTtcblx0XHR9XG5cdFx0bGluZXMucHVzaChcIlxcdCkge31cIik7XG5cdFx0bGluZXMucHVzaChcIlwiKTtcblxuXHRcdGZvciAoY29uc3QgbWV0aG9kIG9mIHRoaXMuX21ldGhvZHMudmFsdWVzKCkpIHtcblx0XHRcdGxpbmVzLnB1c2goLi4ubWV0aG9kLnJlbmRlcigpLCBcIlwiKTtcblx0XHR9XG5cblx0XHRsaW5lcy5wdXNoKFwifVwiLCBcIlwiKTtcblxuXHRcdHJldHVybiBbXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBcInNyYy9jb250cm9sbGVycy9oZWxsby5jb250cm9sbGVyLnRzXCIsXG5cdFx0XHRcdGNvbnRlbnQ6IGxpbmVzLmpvaW4oXCJcXG5cIiksXG5cdFx0XHR9LFxuXHRcdF07XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJXRUxMX0tOT1dOX0ZJTEVTIiwiSW1wb3J0R3JvdXAiLCJfdmFsdWVzIiwiX3R5cGVzIiwiYWRkIiwibmFtZSIsInR5cGVPbmx5IiwiaW5jbHVkZXMiLCJwdXNoIiwidHlwZUlkeCIsImluZGV4T2YiLCJzcGxpY2UiLCJyZW5kZXIiLCJmcm9tIiwidmFsdWVzIiwic29ydCIsInR5cGVzIiwibWFwIiwibiIsImpvaW4iLCJDb250cm9sbGVyTWV0aG9kIiwiX2V4dHJhRGVjb3JhdG9ycyIsIl9ib2R5IiwiX2lzQXN5bmMiLCJfaHR0cERlY29yYXRvciIsIl9wYXJhbXMiLCJpc0FzeW5jIiwiYm9keSIsImFkZERlY29yYXRvciIsImRlY29yYXRvciIsInNldEJvZHkiLCJzZXRBc3luYyIsImxpbmVzIiwiZCIsImFzeW5jS3ciLCJsaW5lIiwiQ29udHJvbGxlclNvdXJjZUZpbGUiLCJrZXkiLCJDT05UUk9MTEVSX1RTIiwiX2NvcnRleEltcG9ydHMiLCJfZXh0cmFJbXBvcnRHcm91cHMiLCJNYXAiLCJfY2xhc3NEZWNvcmF0b3JzIiwiX2N0b3JQYXJhbXMiLCJfbWV0aG9kcyIsImdldE1ldGhvZCIsIm0iLCJnZXQiLCJFcnJvciIsImFkZENvcnRleEltcG9ydCIsImFkZEltcG9ydCIsImdyb3VwIiwic2V0IiwiYWRkQ29uc3RydWN0b3JQYXJhbSIsInBhcmFtIiwiZmlsZXMiLCJwIiwibWV0aG9kIiwiZmlsZVBhdGgiLCJjb250ZW50Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxnQkFBZ0IsUUFBUSx3QkFBd0I7QUFHekQsaUZBQWlGLEdBQ2pGLE1BQU1DO0lBQ1lDLFVBQW9CLEVBQUUsQ0FBQztJQUN2QkMsU0FBbUIsRUFBRSxDQUFDO0lBRWhDQyxJQUFJQyxJQUFZLEVBQUVDLFdBQVcsS0FBSyxFQUFRO1FBQ2hELElBQUlBLFVBQVU7WUFDYixrREFBa0Q7WUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQ0osT0FBTyxDQUFDSyxRQUFRLENBQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUNGLE1BQU0sQ0FBQ0ksUUFBUSxDQUFDRixPQUFPO2dCQUNoRSxJQUFJLENBQUNGLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDSDtZQUNsQjtRQUNELE9BQU87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
|
|
@@ -43,6 +43,8 @@ import { WELL_KNOWN_FILES } from "../../models/const.js";
|
|
|
43
43
|
_builderCalls = [];
|
|
44
44
|
_entities = [];
|
|
45
45
|
_repositories = [];
|
|
46
|
+
_services = [];
|
|
47
|
+
_typeOrmSeed;
|
|
46
48
|
constructor(appName){
|
|
47
49
|
this.appName = appName;
|
|
48
50
|
}
|
|
@@ -71,6 +73,17 @@ import { WELL_KNOWN_FILES } from "../../models/const.js";
|
|
|
71
73
|
this._repositories.push(repo);
|
|
72
74
|
return this;
|
|
73
75
|
}
|
|
76
|
+
/** Adds a service registered in `.withServices()`. */ addService(service) {
|
|
77
|
+
this._services.push(service);
|
|
78
|
+
return this;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Inline seed callback body for `withTypeOrm({ seed })`.
|
|
82
|
+
* Receives `dataSource` in scope. Example: `await dataSource.getRepository(User).save(...)`.
|
|
83
|
+
*/ setTypeOrmSeed(seedBody) {
|
|
84
|
+
this._typeOrmSeed = seedBody;
|
|
85
|
+
return this;
|
|
86
|
+
}
|
|
74
87
|
files() {
|
|
75
88
|
const imports = [
|
|
76
89
|
'import "@decohere/scribe-pino";',
|
|
@@ -86,20 +99,31 @@ import { WELL_KNOWN_FILES } from "../../models/const.js";
|
|
|
86
99
|
for (const r of this._repositories){
|
|
87
100
|
imports.push(`import { ${r.className} } from "${r.importPath}";`);
|
|
88
101
|
}
|
|
102
|
+
for (const s of this._services){
|
|
103
|
+
imports.push(`import { ${s.className} } from "${s.importPath}";`);
|
|
104
|
+
}
|
|
89
105
|
for (const [from, group] of this._extraImports){
|
|
90
106
|
imports.push(group.render(from));
|
|
91
107
|
}
|
|
92
108
|
imports.push('import { HelloController } from "./controllers/hello.controller.js";');
|
|
109
|
+
const serviceRegs = [
|
|
110
|
+
"cb.registerSingleton(SampleService);",
|
|
111
|
+
...this._services.map((s)=>s.scope === "request" ? `cb.registerRequestScoped(${s.className});` : `cb.registerSingleton(${s.className});`)
|
|
112
|
+
].join(" ");
|
|
93
113
|
const builderCalls = [
|
|
94
114
|
`\t.withHttpProvider(FastifyProvider)`,
|
|
95
115
|
`\t.withConfiguration(YamlDataSource)`,
|
|
96
116
|
...this._builderCalls.map((c)=>`\t${c}`),
|
|
97
|
-
`\t.withServices((cb) => {
|
|
117
|
+
`\t.withServices((cb) => { ${serviceRegs} })`
|
|
98
118
|
];
|
|
99
119
|
if (this._entities.length > 0) {
|
|
100
120
|
const entities = this._entities.map((e)=>e.className).join(", ");
|
|
101
121
|
const repos = this._repositories.map((r)=>r.className).join(", ");
|
|
102
|
-
|
|
122
|
+
if (this._typeOrmSeed) {
|
|
123
|
+
builderCalls.push(`\t.withTypeOrm({ entities: [${entities}], repositories: [${repos}], seed: async (dataSource) => { ${this._typeOrmSeed} } })`);
|
|
124
|
+
} else {
|
|
125
|
+
builderCalls.push(`\t.withTypeOrm({ entities: [${entities}], repositories: [${repos}] })`);
|
|
126
|
+
}
|
|
103
127
|
}
|
|
104
128
|
builderCalls.push(`\t.withControllers(HelloController)`);
|
|
105
129
|
const content = [
|
|
@@ -111,7 +135,7 @@ import { WELL_KNOWN_FILES } from "../../models/const.js";
|
|
|
111
135
|
...builderCalls,
|
|
112
136
|
`\t.build();`,
|
|
113
137
|
"",
|
|
114
|
-
"await app.start({ port: 3000 });",
|
|
138
|
+
"await app.start({ port: Number(process.env.PORT) || 3000 });",
|
|
115
139
|
"",
|
|
116
140
|
"export default app;",
|
|
117
141
|
""
|
|
@@ -125,4 +149,4 @@ import { WELL_KNOWN_FILES } from "../../models/const.js";
|
|
|
125
149
|
}
|
|
126
150
|
}
|
|
127
151
|
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL21vZGVscy9tYWluLXNvdXJjZS1maWxlLm1vZGVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdFTExfS05PV05fRklMRVMgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbnN0LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEtleWVkTW9kZWwsIFNvdXJjZUZpbGUgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3NvdXJjZS1maWxlLmpzXCI7XG5cbmV4cG9ydCB0eXBlIFR5cGVPcm1JbXBvcnQgPSB7IGNsYXNzTmFtZTogc3RyaW5nOyBpbXBvcnRQYXRoOiBzdHJpbmcgfTtcblxuLyoqIFRyYWNrcyBuYW1lZCBpbXBvcnRzIGZyb20gYSBzaW5nbGUgbW9kdWxlIHBhdGgsIHNwbGl0IGludG8gdmFsdWVzIGFuZCB0eXBlcy4gKi9cbmNsYXNzIEltcG9ydEdyb3VwIHtcblx0cHJpdmF0ZSByZWFkb25seSBfdmFsdWVzOiBzdHJpbmdbXSA9IFtdO1xuXHRwcml2YXRlIHJlYWRvbmx5IF90eXBlczogc3RyaW5nW10gPSBbXTtcblxuXHRwdWJsaWMgYWRkKG5hbWU6IHN0cmluZywgdHlwZU9ubHkgPSBmYWxzZSk6IHRoaXMge1xuXHRcdGlmICh0eXBlT25seSkge1xuXHRcdFx0Ly8gVmFsdWUgaW1wb3J0IGFscmVhZHkgcHJlc2VudCDigJQgdmFsdWUgd2lucywgc2tpcFxuXHRcdFx0aWYgKCF0aGlzLl92YWx1ZXMuaW5jbHVkZXMobmFtZSkgJiYgIXRoaXMuX3R5cGVzLmluY2x1ZGVzKG5hbWUpKSB7XG5cdFx0XHRcdHRoaXMuX3R5cGVzLnB1c2gobmFtZSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFByb21vdGU6IHJlbW92ZSBmcm9tIHR5cGVzIGlmIGl0IHdhcyBwcmV2aW91c2x5IHR5cGUtb25seVxuXHRcdFx0Y29uc3QgdHlwZUlkeCA9IHRoaXMuX3R5cGVzLmluZGV4T2YobmFtZSk7XG5cdFx0XHRpZiAodHlwZUlkeCAhPT0gLTEpIHRoaXMuX3R5cGVzLnNwbGljZSh0eXBlSWR4LCAxKTtcblx0XHRcdGlmICghdGhpcy5fdmFsdWVzLmluY2x1ZGVzKG5hbWUpKSB0aGlzLl92YWx1ZXMucHVzaChuYW1lKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgcmVuZGVyKGZyb206IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0Y29uc3QgdmFsdWVzID0gWy4uLnRoaXMuX3ZhbHVlc10uc29ydCgpO1xuXHRcdGNvbnN0IHR5cGVzID0gWy4uLnRoaXMuX3R5cGVzXS5zb3J0KCkubWFwKChuKSA9PiBgdHlwZSAke259YCk7XG5cdFx0cmV0dXJuIGBpbXBvcnQgeyAke1suLi52YWx1ZXMsIC4uLnR5cGVzXS5qb2luKFwiLCBcIil9IH0gZnJvbSBcIiR7ZnJvbX1cIjtgO1xuXHR9XG59XG5cbi8qKlxuICogTW9kZWwgZm9yIGBwcm9qZWN0cy9hcGkvc3JjL21haW4udHNgLlxuICpcbiAqIFN0YXJ0cyB3aXRoIHRoZSBtaW5pbWFsIEhUVFAgKyBZQU1MIGNvbmZpZyBzZXR1cC4gRmVhdHVyZXMgbXV0YXRlIHRoZSBtb2RlbFxuICogYnkgY2FsbGluZyBhZGRTaWRlRWZmZWN0SW1wb3J0IC8gYWRkSW1wb3J0IC8gYWRkQnVpbGRlckNhbGwgLyBhZGRFbnRpdHkgL1xuICogYWRkUmVwb3NpdG9yeS4gZmlsZXMoKSByZW5kZXJzIHdoYXRldmVyIGhhcyBiZWVuIGFjY3VtdWxhdGVkLlxuICovXG5leHBvcnQgY2xhc3MgTWFpblNvdXJjZUZpbGUgaW1wbGVtZW50cyBLZXllZE1vZGVsIHtcblx0cHVibGljIHJlYWRvbmx5IGtleSA9IFdFTExfS05PV05fRklMRVMuTUFJTl9UUztcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9zaWRlRWZmZWN0SW1wb3J0czogc3RyaW5nW10gPSBbXTtcblx0cHJpdmF0ZSByZWFkb25seSBfZXh0cmFJbXBvcnRzID0gbmV3IE1hcDxzdHJpbmcsIEltcG9ydEdyb3VwPigpO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9idWlsZGVyQ2FsbHM6IHN0cmluZ1tdID0gW107XG5cdHByaXZhdGUgcmVhZG9ubHkgX2VudGl0aWVzOiBUeXBlT3JtSW1wb3J0W10gPSBbXTtcblx0cHJpdmF0ZSByZWFkb25seSBfcmVwb3NpdG9yaWVzOiBUeXBlT3JtSW1wb3J0W10gPSBbXTtcblxuXHRwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhcHBOYW1lOiBzdHJpbmcpIHt9XG5cblx0LyoqIEFkZHMgYSBiYXJlIHNpZGUtZWZmZWN0IGltcG9ydCwgZS5nLiBgQGRlY29oZXJlL2NvcnRleC9hdXRoYC4gKi9cblx0cHVibGljIGFkZFNpZGVFZmZlY3RJbXBvcnQocGF0aDogc3RyaW5nKTogdGhpcyB7XG5cdFx0aWYgKCF0aGlzLl9zaWRlRWZmZWN0SW1wb3J0cy5pbmNsdWRlcyhwYXRoKSkgdGhpcy5fc2lkZUVmZmVjdEltcG9ydHMucHVzaChwYXRoKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKiBBZGRzIGEgbmFtZWQgaW1wb3J0LCBlLmcuIGBpbXBvcnQgeyBGb28gfSBmcm9tIFwiYmFyXCJgLiAqL1xuXHRwdWJsaWMgYWRkSW1wb3J0KG5hbWU6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0eXBlT25seSA9IGZhbHNlKTogdGhpcyB7XG5cdFx0Y29uc3QgZ3JvdXAgPSB0aGlzLl9leHRyYUltcG9ydHMuZ2V0KGZyb20pID8/IG5ldyBJbXBvcnRHcm91cCgpO1xuXHRcdGdyb3VwLmFkZChuYW1lLCB0eXBlT25seSk7XG5cdFx0dGhpcy5fZXh0cmFJbXBvcnRzLnNldChmcm9tLCBncm91cCk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIGJ1aWxkZXIgY2FsbCBpbnNlcnRlZCBhZnRlciBgLndpdGhDb25maWd1cmF0aW9uKClgIGFuZCBiZWZvcmVcblx0ICogYC53aXRoU2VydmljZXMoKWAuIFBhc3MgdGhlIGNhbGwgd2l0aG91dCBsZWFkaW5nIGRvdCwgZS5nLiBgLndpdGhBdXRoKClgLlxuXHQgKi9cblx0cHVibGljIGFkZEJ1aWxkZXJDYWxsKGNhbGw6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX2J1aWxkZXJDYWxscy5wdXNoKGNhbGwpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqIEFkZHMgYSBUeXBlT1JNIGVudGl0eSDigJQgaW1wb3J0IGFuZCBlbnRyeSBpbiBgd2l0aFR5cGVPcm0oeyBlbnRpdGllcyB9KWAuICovXG5cdHB1YmxpYyBhZGRFbnRpdHkoZW50aXR5OiBUeXBlT3JtSW1wb3J0KTogdGhpcyB7XG5cdFx0dGhpcy5fZW50aXRpZXMucHVzaChlbnRpdHkpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqIEFkZHMgYSBUeXBlT1JNIHJlcG9zaXRvcnkg4oCUIGltcG9ydCBhbmQgZW50cnkgaW4gYHdpdGhUeXBlT3JtKHsgcmVwb3NpdG9yaWVzIH0pYC4gKi9cblx0cHVibGljIGFkZFJlcG9zaXRvcnkocmVwbzogVHlwZU9ybUltcG9ydCk6IHRoaXMge1xuXHRcdHRoaXMuX3JlcG9zaXRvcmllcy5wdXNoKHJlcG8pO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIGZpbGVzKCk6IFNvdXJjZUZpbGVbXSB7XG5cdFx0Y29uc3QgaW1wb3J0czogc3RyaW5nW10gPSBbXG5cdFx0XHQnaW1wb3J0IFwiQGRlY29oZXJlL3NjcmliZS1waW5vXCI7Jyxcblx0XHRcdCdpbXBvcnQgXCJAZGVjb2hlcmUvY29ydGV4L2h0dHBcIjsnLFxuXHRcdF07XG5cblx0XHRmb3IgKGNvbnN0IHBhdGggb2YgdGhpcy5fc2lkZUVmZmVjdEltcG9ydHMpIHtcblx0XHRcdGltcG9ydHMucHVzaChgaW1wb3J0IFwiJHtwYXRofVwiO2ApO1xuXHRcdH1cblxuXHRcdGltcG9ydHMucHVzaChcblx0XHRcdCdpbXBvcnQgXCJAZGVjb2hlcmUvcHJvdG9jb2xcIjsnLFxuXHRcdFx0J2ltcG9ydCB7IFlhbWxEYXRhU291cmNlIH0gZnJvbSBcIkBkZWNvaGVyZS9wcm90b2NvbFwiOycsXG5cdFx0XHQnaW1wb3J0IHsgQnVpbGRlciB9IGZyb20gXCJAZGVjb2hlcmUvY29ydGV4XCI7Jyxcblx0XHRcdCdpbXBvcnQgeyBGYXN0aWZ5UHJvdmlkZXIgfSBmcm9tIFwiQGRlY29oZXJlL2NvcnRleC9wcm92aWRlcnNcIjsnLFxuXHRcdFx0J2ltcG9ydCB7IHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7Jyxcblx0XHRcdCdpbXBvcnQgeyBTYW1wbGVTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvc2FtcGxlLnNlcnZpY2UuanNcIjsnLFxuXHRcdCk7XG5cblx0XHRmb3IgKGNvbnN0IGUgb2YgdGhpcy5fZW50aXRpZXMpIHtcblx0XHRcdGltcG9ydHMucHVzaChgaW1wb3J0IHsgJHtlLmNsYXNzTmFtZX0gfSBmcm9tIFwiJHtlLmltcG9ydFBhdGh9XCI7YCk7XG5cdFx0fVxuXG5cdFx0Zm9yIChjb25zdCByIG9mIHRoaXMuX3JlcG9zaXRvcmllcykge1xuXHRcdFx0aW1wb3J0cy5wdXNoKGBpbXBvcnQgeyAke3IuY2xhc3NOYW1lfSB9IGZyb20gXCIke3IuaW1wb3J0UGF0aH1cIjtgKTtcblx0XHR9XG5cblx0XHRmb3IgKGNvbnN0IFtmcm9tLCBncm91cF0gb2YgdGhpcy5fZXh0cmFJbXBvcnRzKSB7XG5cdFx0XHRpbXBvcnRzLnB1c2goZ3JvdXAucmVuZGVyKGZyb20pKTtcblx0XHR9XG5cblx0XHRpbXBvcnRzLnB1c2goJ2ltcG9ydCB7IEhlbGxvQ29udHJvbGxlciB9IGZyb20gXCIuL2NvbnRyb2xsZXJzL2hlbGxvLmNvbnRyb2xsZXIuanNcIjsnKTtcblxuXHRcdGNvbnN0IGJ1aWxkZXJDYWxsczogc3RyaW5nW10gPSBbXG5cdFx0XHRgXFx0LndpdGhIdHRwUHJvdmlkZXIoRmFzdGlmeVByb3ZpZGVyKWAsXG5cdFx0XHRgXFx0LndpdGhDb25maWd1cmF0aW9uKFlhbWxEYXRhU291cmNlKWAsXG5cdFx0XHQuLi50aGlzLl9idWlsZGVyQ2FsbHMubWFwKChjKSA9PiBgXFx0JHtjfWApLFxuXHRcdFx0YFxcdC53aXRoU2VydmljZXMoKGNiKSA9PiB7IGNiLnJlZ2lzdGVyU2luZ2xldG9uKFNhbXBsZVNlcnZpY2UpOyB9KWAsXG5cdFx0XTtcblxuXHRcdGlmICh0aGlzLl9lbnRpdGllcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRjb25zdCBlbnRpdGllcyA9IHRoaXMuX2VudGl0aWVzLm1hcCgoZSkgPT4gZS5jbGFzc05hbWUpLmpvaW4oXCIsIFwiKTtcblx0XHRcdGNvbnN0IHJlcG9zID0gdGhpcy5fcmVwb3NpdG9yaWVzLm1hcCgocikgPT4gci5jbGFzc05hbWUpLmpvaW4oXCIsIFwiKTtcblx0XHRcdGJ1aWxkZXJDYWxscy5wdXNoKFxuXHRcdFx0XHRgXFx0LndpdGhUeXBlT3JtKHsgZW50aXRpZXM6IFske2VudGl0aWVzfV0sIHJlcG9zaXRvcmllczogWyR7cmVwb3N9XSB9KWAsXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGJ1aWxkZXJDYWxscy5wdXNoKGBcXHQud2l0aENvbnRyb2xsZXJzKEhlbGxvQ29udHJvbGxlcilgKTtcblxuXHRcdGNvbnN0IGNvbnRlbnQgPSBbXG5cdFx0XHQuLi5pbXBvcnRzLFxuXHRcdFx0XCJcIixcblx0XHRcdFwic2NyaWJlLmV4dGVuZC53aXRoUGlub1ByZXR0eSgpO1wiLFxuXHRcdFx0XCJcIixcblx0XHRcdGBjb25zdCBhcHAgPSBhd2FpdCBCdWlsZGVyLmNyZWF0ZSh7IGFwcGxpY2F0aW9uTmFtZTogXCIke3RoaXMuYXBwTmFtZX1cIiB9KWAsXG5cdFx0XHQuLi5idWlsZGVyQ2FsbHMsXG5cdFx0XHRgXFx0LmJ1aWxkKCk7YCxcblx0XHRcdFwiXCIsXG5cdFx0XHRcImF3YWl0IGFwcC5zdGFydCh7IHBvcnQ6IDMwMDAgfSk7XCIsXG5cdFx0XHRcIlwiLFxuXHRcdFx0XCJleHBvcnQgZGVmYXVsdCBhcHA7XCIsXG5cdFx0XHRcIlwiLFxuXHRcdF0uam9pbihcIlxcblwiKTtcblxuXHRcdHJldHVybiBbXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBcInNyYy9tYWluLnRzXCIsXG5cdFx0XHRcdGNvbnRlbnQsXG5cdFx0XHR9LFxuXHRcdF07XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJXRUxMX0tOT1dOX0ZJTEVTIiwiSW1wb3J0R3JvdXAiLCJfdmFsdWVzIiwiX3R5cGVzIiwiYWRkIiwibmFtZSIsInR5cGVPbmx5IiwiaW5jbHVkZXMiLCJwdXNoIiwidHlwZUlkeCIsImluZGV4T2YiLCJzcGxpY2UiLCJyZW5kZXIiLCJmcm9tIiwidmFsdWVzIiwic29ydCIsInR5cGVzIiwibWFwIiwibiIsImpvaW4iLCJNYWluU291cmNlRmlsZSIsImtleSIsIk1BSU5fVFMiLCJfc2lkZUVmZmVjdEltcG9ydHMiLCJfZXh0cmFJbXBvcnRzIiwiTWFwIiwiX2J1aWxkZXJDYWxscyIsIl9lbnRpdGllcyIsIl9yZXBvc2l0b3JpZXMiLCJhcHBOYW1lIiwiYWRkU2lkZUVmZmVjdEltcG9ydCIsInBhdGgiLCJhZGRJbXBvcnQiLCJncm91cCIsImdldCIsInNldCIsImFkZEJ1aWxkZXJDYWxsIiwiY2FsbCIsImFkZEVudGl0eSIsImVudGl0eSIsImFkZFJlcG9zaXRvcnkiLCJyZXBvIiwiZmlsZXMiLCJpbXBvcnRzIiwiZSIsImNsYXNzTmFtZSIsImltcG9ydFBhdGgiLCJyIiwiYnVpbGRlckNhbGxzIiwiYyIsImxlbmd0aCIsImVudGl0aWVzIiwicmVwb3MiLCJjb250ZW50IiwiZmlsZVBhdGgiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGdCQUFnQixRQUFRLHdCQUF3QjtBQUt6RCxpRkFBaUYsR0FDakYsTUFBTUM7SUFDWUMsVUFBb0IsRUFBRSxDQUFDO0lBQ3ZCQyxTQUFtQixFQUFFLENBQUM7SUFFaENDLElBQUlDLElBQVksRUFBRUMsV0FBVyxLQUFLLEVBQVE7UUFDaEQsSUFBSUEsVUFBVTtZQUNi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
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL21vZGVscy9tYWluLXNvdXJjZS1maWxlLm1vZGVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdFTExfS05PV05fRklMRVMgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbnN0LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEtleWVkTW9kZWwsIFNvdXJjZUZpbGUgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3NvdXJjZS1maWxlLmpzXCI7XG5cbmV4cG9ydCB0eXBlIFR5cGVPcm1JbXBvcnQgPSB7IGNsYXNzTmFtZTogc3RyaW5nOyBpbXBvcnRQYXRoOiBzdHJpbmcgfTtcbmV4cG9ydCB0eXBlIFNlcnZpY2VJbXBvcnQgPSBUeXBlT3JtSW1wb3J0ICYgeyBzY29wZT86IFwic2luZ2xldG9uXCIgfCBcInJlcXVlc3RcIiB9O1xuXG4vKiogVHJhY2tzIG5hbWVkIGltcG9ydHMgZnJvbSBhIHNpbmdsZSBtb2R1bGUgcGF0aCwgc3BsaXQgaW50byB2YWx1ZXMgYW5kIHR5cGVzLiAqL1xuY2xhc3MgSW1wb3J0R3JvdXAge1xuXHRwcml2YXRlIHJlYWRvbmx5IF92YWx1ZXM6IHN0cmluZ1tdID0gW107XG5cdHByaXZhdGUgcmVhZG9ubHkgX3R5cGVzOiBzdHJpbmdbXSA9IFtdO1xuXG5cdHB1YmxpYyBhZGQobmFtZTogc3RyaW5nLCB0eXBlT25seSA9IGZhbHNlKTogdGhpcyB7XG5cdFx0aWYgKHR5cGVPbmx5KSB7XG5cdFx0XHQvLyBWYWx1ZSBpbXBvcnQgYWxyZWFkeSBwcmVzZW50IOKAlCB2YWx1ZSB3aW5zLCBza2lwXG5cdFx0XHRpZiAoIXRoaXMuX3ZhbHVlcy5pbmNsdWRlcyhuYW1lKSAmJiAhdGhpcy5fdHlwZXMuaW5jbHVkZXMobmFtZSkpIHtcblx0XHRcdFx0dGhpcy5fdHlwZXMucHVzaChuYW1lKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gUHJvbW90ZTogcmVtb3ZlIGZyb20gdHlwZXMgaWYgaXQgd2FzIHByZXZpb3VzbHkgdHlwZS1vbmx5XG5cdFx0XHRjb25zdCB0eXBlSWR4ID0gdGhpcy5fdHlwZXMuaW5kZXhPZihuYW1lKTtcblx0XHRcdGlmICh0eXBlSWR4ICE9PSAtMSkgdGhpcy5fdHlwZXMuc3BsaWNlKHR5cGVJZHgsIDEpO1xuXHRcdFx0aWYgKCF0aGlzLl92YWx1ZXMuaW5jbHVkZXMobmFtZSkpIHRoaXMuX3ZhbHVlcy5wdXNoKG5hbWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyByZW5kZXIoZnJvbTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRjb25zdCB2YWx1ZXMgPSBbLi4udGhpcy5fdmFsdWVzXS5zb3J0KCk7XG5cdFx0Y29uc3QgdHlwZXMgPSBbLi4udGhpcy5fdHlwZXNdLnNvcnQoKS5tYXAoKG4pID0+IGB0eXBlICR7bn1gKTtcblx0XHRyZXR1cm4gYGltcG9ydCB7ICR7Wy4uLnZhbHVlcywgLi4udHlwZXNdLmpvaW4oXCIsIFwiKX0gfSBmcm9tIFwiJHtmcm9tfVwiO2A7XG5cdH1cbn1cblxuLyoqXG4gKiBNb2RlbCBmb3IgYHByb2plY3RzL2FwaS9zcmMvbWFpbi50c2AuXG4gKlxuICogU3RhcnRzIHdpdGggdGhlIG1pbmltYWwgSFRUUCArIFlBTUwgY29uZmlnIHNldHVwLiBGZWF0dXJlcyBtdXRhdGUgdGhlIG1vZGVsXG4gKiBieSBjYWxsaW5nIGFkZFNpZGVFZmZlY3RJbXBvcnQgLyBhZGRJbXBvcnQgLyBhZGRCdWlsZGVyQ2FsbCAvIGFkZEVudGl0eSAvXG4gKiBhZGRSZXBvc2l0b3J5LiBmaWxlcygpIHJlbmRlcnMgd2hhdGV2ZXIgaGFzIGJlZW4gYWNjdW11bGF0ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBNYWluU291cmNlRmlsZSBpbXBsZW1lbnRzIEtleWVkTW9kZWwge1xuXHRwdWJsaWMgcmVhZG9ubHkga2V5ID0gV0VMTF9LTk9XTl9GSUxFUy5NQUlOX1RTO1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgX3NpZGVFZmZlY3RJbXBvcnRzOiBzdHJpbmdbXSA9IFtdO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9leHRyYUltcG9ydHMgPSBuZXcgTWFwPHN0cmluZywgSW1wb3J0R3JvdXA+KCk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2J1aWxkZXJDYWxsczogc3RyaW5nW10gPSBbXTtcblx0cHJpdmF0ZSByZWFkb25seSBfZW50aXRpZXM6IFR5cGVPcm1JbXBvcnRbXSA9IFtdO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9yZXBvc2l0b3JpZXM6IFR5cGVPcm1JbXBvcnRbXSA9IFtdO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9zZXJ2aWNlczogU2VydmljZUltcG9ydFtdID0gW107XG5cdHByaXZhdGUgX3R5cGVPcm1TZWVkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYXBwTmFtZTogc3RyaW5nKSB7fVxuXG5cdC8qKiBBZGRzIGEgYmFyZSBzaWRlLWVmZmVjdCBpbXBvcnQsIGUuZy4gYEBkZWNvaGVyZS9jb3J0ZXgvYXV0aGAuICovXG5cdHB1YmxpYyBhZGRTaWRlRWZmZWN0SW1wb3J0KHBhdGg6IHN0cmluZyk6IHRoaXMge1xuXHRcdGlmICghdGhpcy5fc2lkZUVmZmVjdEltcG9ydHMuaW5jbHVkZXMocGF0aCkpIHRoaXMuX3NpZGVFZmZlY3RJbXBvcnRzLnB1c2gocGF0aCk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKiogQWRkcyBhIG5hbWVkIGltcG9ydCwgZS5nLiBgaW1wb3J0IHsgRm9vIH0gZnJvbSBcImJhclwiYC4gKi9cblx0cHVibGljIGFkZEltcG9ydChuYW1lOiBzdHJpbmcsIGZyb206IHN0cmluZywgdHlwZU9ubHkgPSBmYWxzZSk6IHRoaXMge1xuXHRcdGNvbnN0IGdyb3VwID0gdGhpcy5fZXh0cmFJbXBvcnRzLmdldChmcm9tKSA/PyBuZXcgSW1wb3J0R3JvdXAoKTtcblx0XHRncm91cC5hZGQobmFtZSwgdHlwZU9ubHkpO1xuXHRcdHRoaXMuX2V4dHJhSW1wb3J0cy5zZXQoZnJvbSwgZ3JvdXApO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBidWlsZGVyIGNhbGwgaW5zZXJ0ZWQgYWZ0ZXIgYC53aXRoQ29uZmlndXJhdGlvbigpYCBhbmQgYmVmb3JlXG5cdCAqIGAud2l0aFNlcnZpY2VzKClgLiBQYXNzIHRoZSBjYWxsIHdpdGhvdXQgbGVhZGluZyBkb3QsIGUuZy4gYC53aXRoQXV0aCgpYC5cblx0ICovXG5cdHB1YmxpYyBhZGRCdWlsZGVyQ2FsbChjYWxsOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLl9idWlsZGVyQ2FsbHMucHVzaChjYWxsKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKiBBZGRzIGEgVHlwZU9STSBlbnRpdHkg4oCUIGltcG9ydCBhbmQgZW50cnkgaW4gYHdpdGhUeXBlT3JtKHsgZW50aXRpZXMgfSlgLiAqL1xuXHRwdWJsaWMgYWRkRW50aXR5KGVudGl0eTogVHlwZU9ybUltcG9ydCk6IHRoaXMge1xuXHRcdHRoaXMuX2VudGl0aWVzLnB1c2goZW50aXR5KTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKiBBZGRzIGEgVHlwZU9STSByZXBvc2l0b3J5IOKAlCBpbXBvcnQgYW5kIGVudHJ5IGluIGB3aXRoVHlwZU9ybSh7IHJlcG9zaXRvcmllcyB9KWAuICovXG5cdHB1YmxpYyBhZGRSZXBvc2l0b3J5KHJlcG86IFR5cGVPcm1JbXBvcnQpOiB0aGlzIHtcblx0XHR0aGlzLl9yZXBvc2l0b3JpZXMucHVzaChyZXBvKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKiBBZGRzIGEgc2VydmljZSByZWdpc3RlcmVkIGluIGAud2l0aFNlcnZpY2VzKClgLiAqL1xuXHRwdWJsaWMgYWRkU2VydmljZShzZXJ2aWNlOiBTZXJ2aWNlSW1wb3J0KTogdGhpcyB7XG5cdFx0dGhpcy5fc2VydmljZXMucHVzaChzZXJ2aWNlKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBJbmxpbmUgc2VlZCBjYWxsYmFjayBib2R5IGZvciBgd2l0aFR5cGVPcm0oeyBzZWVkIH0pYC5cblx0ICogUmVjZWl2ZXMgYGRhdGFTb3VyY2VgIGluIHNjb3BlLiBFeGFtcGxlOiBgYXdhaXQgZGF0YVNvdXJjZS5nZXRSZXBvc2l0b3J5KFVzZXIpLnNhdmUoLi4uKWAuXG5cdCAqL1xuXHRwdWJsaWMgc2V0VHlwZU9ybVNlZWQoc2VlZEJvZHk6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX3R5cGVPcm1TZWVkID0gc2VlZEJvZHk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZmlsZXMoKTogU291cmNlRmlsZVtdIHtcblx0XHRjb25zdCBpbXBvcnRzOiBzdHJpbmdbXSA9IFtcblx0XHRcdCdpbXBvcnQgXCJAZGVjb2hlcmUvc2NyaWJlLXBpbm9cIjsnLFxuXHRcdFx0J2ltcG9ydCBcIkBkZWNvaGVyZS9jb3J0ZXgvaHR0cFwiOycsXG5cdFx0XTtcblxuXHRcdGZvciAoY29uc3QgcGF0aCBvZiB0aGlzLl9zaWRlRWZmZWN0SW1wb3J0cykge1xuXHRcdFx0aW1wb3J0cy5wdXNoKGBpbXBvcnQgXCIke3BhdGh9XCI7YCk7XG5cdFx0fVxuXG5cdFx0aW1wb3J0cy5wdXNoKFxuXHRcdFx0J2ltcG9ydCBcIkBkZWNvaGVyZS9wcm90b2NvbFwiOycsXG5cdFx0XHQnaW1wb3J0IHsgWWFtbERhdGFTb3VyY2UgfSBmcm9tIFwiQGRlY29oZXJlL3Byb3RvY29sXCI7Jyxcblx0XHRcdCdpbXBvcnQgeyBCdWlsZGVyIH0gZnJvbSBcIkBkZWNvaGVyZS9jb3J0ZXhcIjsnLFxuXHRcdFx0J2ltcG9ydCB7IEZhc3RpZnlQcm92aWRlciB9IGZyb20gXCJAZGVjb2hlcmUvY29ydGV4L3Byb3ZpZGVyc1wiOycsXG5cdFx0XHQnaW1wb3J0IHsgc2NyaWJlIH0gZnJvbSBcIkBkZWNvaGVyZS9zY3JpYmVcIjsnLFxuXHRcdFx0J2ltcG9ydCB7IFNhbXBsZVNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9zYW1wbGUuc2VydmljZS5qc1wiOycsXG5cdFx0KTtcblxuXHRcdGZvciAoY29uc3QgZSBvZiB0aGlzLl9lbnRpdGllcykge1xuXHRcdFx0aW1wb3J0cy5wdXNoKGBpbXBvcnQgeyAke2UuY2xhc3NOYW1lfSB9IGZyb20gXCIke2UuaW1wb3J0UGF0aH1cIjtgKTtcblx0XHR9XG5cblx0XHRmb3IgKGNvbnN0IHIgb2YgdGhpcy5fcmVwb3NpdG9yaWVzKSB7XG5cdFx0XHRpbXBvcnRzLnB1c2goYGltcG9ydCB7ICR7ci5jbGFzc05hbWV9IH0gZnJvbSBcIiR7ci5pbXBvcnRQYXRofVwiO2ApO1xuXHRcdH1cblxuXHRcdGZvciAoY29uc3QgcyBvZiB0aGlzLl9zZXJ2aWNlcykge1xuXHRcdFx0aW1wb3J0cy5wdXNoKGBpbXBvcnQgeyAke3MuY2xhc3NOYW1lfSB9IGZyb20gXCIke3MuaW1wb3J0UGF0aH1cIjtgKTtcblx0XHR9XG5cblx0XHRmb3IgKGNvbnN0IFtmcm9tLCBncm91cF0gb2YgdGhpcy5fZXh0cmFJbXBvcnRzKSB7XG5cdFx0XHRpbXBvcnRzLnB1c2goZ3JvdXAucmVuZGVyKGZyb20pKTtcblx0XHR9XG5cblx0XHRpbXBvcnRzLnB1c2goJ2ltcG9ydCB7IEhlbGxvQ29udHJvbGxlciB9IGZyb20gXCIuL2NvbnRyb2xsZXJzL2hlbGxvLmNvbnRyb2xsZXIuanNcIjsnKTtcblxuXHRcdGNvbnN0IHNlcnZpY2VSZWdzID0gW1xuXHRcdFx0XCJjYi5yZWdpc3RlclNpbmdsZXRvbihTYW1wbGVTZXJ2aWNlKTtcIixcblx0XHRcdC4uLnRoaXMuX3NlcnZpY2VzLm1hcCgocykgPT5cblx0XHRcdFx0cy5zY29wZSA9PT0gXCJyZXF1ZXN0XCJcblx0XHRcdFx0XHQ/IGBjYi5yZWdpc3RlclJlcXVlc3RTY29wZWQoJHtzLmNsYXNzTmFtZX0pO2Bcblx0XHRcdFx0XHQ6IGBjYi5yZWdpc3RlclNpbmdsZXRvbigke3MuY2xhc3NOYW1lfSk7YCxcblx0XHRcdCksXG5cdFx0XS5qb2luKFwiIFwiKTtcblxuXHRcdGNvbnN0IGJ1aWxkZXJDYWxsczogc3RyaW5nW10gPSBbXG5cdFx0XHRgXFx0LndpdGhIdHRwUHJvdmlkZXIoRmFzdGlmeVByb3ZpZGVyKWAsXG5cdFx0XHRgXFx0LndpdGhDb25maWd1cmF0aW9uKFlhbWxEYXRhU291cmNlKWAsXG5cdFx0XHQuLi50aGlzLl9idWlsZGVyQ2FsbHMubWFwKChjKSA9PiBgXFx0JHtjfWApLFxuXHRcdFx0YFxcdC53aXRoU2VydmljZXMoKGNiKSA9PiB7ICR7c2VydmljZVJlZ3N9IH0pYCxcblx0XHRdO1xuXG5cdFx0aWYgKHRoaXMuX2VudGl0aWVzLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnN0IGVudGl0aWVzID0gdGhpcy5fZW50aXRpZXMubWFwKChlKSA9PiBlLmNsYXNzTmFtZSkuam9pbihcIiwgXCIpO1xuXHRcdFx0Y29uc3QgcmVwb3MgPSB0aGlzLl9yZXBvc2l0b3JpZXMubWFwKChyKSA9PiByLmNsYXNzTmFtZSkuam9pbihcIiwgXCIpO1xuXHRcdFx0aWYgKHRoaXMuX3R5cGVPcm1TZWVkKSB7XG5cdFx0XHRcdGJ1aWxkZXJDYWxscy5wdXNoKFxuXHRcdFx0XHRcdGBcXHQud2l0aFR5cGVPcm0oeyBlbnRpdGllczogWyR7ZW50aXRpZXN9XSwgcmVwb3NpdG9yaWVzOiBbJHtyZXBvc31dLCBzZWVkOiBhc3luYyAoZGF0YVNvdXJjZSkgPT4geyAke3RoaXMuX3R5cGVPcm1TZWVkfSB9IH0pYCxcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGJ1aWxkZXJDYWxscy5wdXNoKFxuXHRcdFx0XHRcdGBcXHQud2l0aFR5cGVPcm0oeyBlbnRpdGllczogWyR7ZW50aXRpZXN9XSwgcmVwb3NpdG9yaWVzOiBbJHtyZXBvc31dIH0pYCxcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRidWlsZGVyQ2FsbHMucHVzaChgXFx0LndpdGhDb250cm9sbGVycyhIZWxsb0NvbnRyb2xsZXIpYCk7XG5cblx0XHRjb25zdCBjb250ZW50ID0gW1xuXHRcdFx0Li4uaW1wb3J0cyxcblx0XHRcdFwiXCIsXG5cdFx0XHRcInNjcmliZS5leHRlbmQud2l0aFBpbm9QcmV0dHkoKTtcIixcblx0XHRcdFwiXCIsXG5cdFx0XHRgY29uc3QgYXBwID0gYXdhaXQgQnVpbGRlci5jcmVhdGUoeyBhcHBsaWNhdGlvbk5hbWU6IFwiJHt0aGlzLmFwcE5hbWV9XCIgfSlgLFxuXHRcdFx0Li4uYnVpbGRlckNhbGxzLFxuXHRcdFx0YFxcdC5idWlsZCgpO2AsXG5cdFx0XHRcIlwiLFxuXHRcdFx0XCJhd2FpdCBhcHAuc3RhcnQoeyBwb3J0OiBOdW1iZXIocHJvY2Vzcy5lbnYuUE9SVCkgfHwgMzAwMCB9KTtcIixcblx0XHRcdFwiXCIsXG5cdFx0XHRcImV4cG9ydCBkZWZhdWx0IGFwcDtcIixcblx0XHRcdFwiXCIsXG5cdFx0XS5qb2luKFwiXFxuXCIpO1xuXG5cdFx0cmV0dXJuIFtcblx0XHRcdHtcblx0XHRcdFx0ZmlsZVBhdGg6IFwic3JjL21haW4udHNcIixcblx0XHRcdFx0Y29udGVudCxcblx0XHRcdH0sXG5cdFx0XTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIldFTExfS05PV05fRklMRVMiLCJJbXBvcnRHcm91cCIsIl92YWx1ZXMiLCJfdHlwZXMiLCJhZGQiLCJuYW1lIiwidHlwZU9ubHkiLCJpbmNsdWRlcyIsInB1c2giLCJ0eXBlSWR4IiwiaW5kZXhPZiIsInNwbGljZSIsInJlbmRlciIsImZyb20iLCJ2YWx1ZXMiLCJzb3J0IiwidHlwZXMiLCJtYXAiLCJuIiwiam9pbiIsIk1haW5Tb3VyY2VGaWxlIiwia2V5IiwiTUFJTl9UUyIsIl9zaWRlRWZmZWN0SW1wb3J0cyIsIl9leHRyYUltcG9ydHMiLCJNYXAiLCJfYnVpbGRlckNhbGxzIiwiX2VudGl0aWVzIiwiX3JlcG9zaXRvcmllcyIsIl9zZXJ2aWNlcyIsIl90eXBlT3JtU2VlZCIsImFwcE5hbWUiLCJhZGRTaWRlRWZmZWN0SW1wb3J0IiwicGF0aCIsImFkZEltcG9ydCIsImdyb3VwIiwiZ2V0Iiwic2V0IiwiYWRkQnVpbGRlckNhbGwiLCJjYWxsIiwiYWRkRW50aXR5IiwiZW50aXR5IiwiYWRkUmVwb3NpdG9yeSIsInJlcG8iLCJhZGRTZXJ2aWNlIiwic2VydmljZSIsInNldFR5cGVPcm1TZWVkIiwic2VlZEJvZHkiLCJmaWxlcyIsImltcG9ydHMiLCJlIiwiY2xhc3NOYW1lIiwiaW1wb3J0UGF0aCIsInIiLCJzIiwic2VydmljZVJlZ3MiLCJzY29wZSIsImJ1aWxkZXJDYWxscyIsImMiLCJsZW5ndGgiLCJlbnRpdGllcyIsInJlcG9zIiwiY29udGVudCIsImZpbGVQYXRoIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxnQkFBZ0IsUUFBUSx3QkFBd0I7QUFNekQsaUZBQWlGLEdBQ2pGLE1BQU1DO0lBQ1lDLFVBQW9CLEVBQUUsQ0FBQztJQUN2QkMsU0FBbUIsRUFBRSxDQUFDO0lBRWhDQyxJQUFJQyxJQUFZLEVBQUVDLFdBQVcsS0FBSyxFQUFRO1FBQ2hELElBQUlBLFVBQVU7WUFDYixrREFBa0Q7WUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQ0osT0FBTyxDQUFDSyxRQUFRLENBQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUNGLE1BQU0sQ0FBQ0ksUUFBUSxDQUFDRixPQUFPO2dCQUNoRSxJQUFJLENBQUNGLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDSDtZQUNsQjtRQUNELE9BQU87WUFDTiw0REFBNEQ7WUFDNUQsTUFBTUksVUFBVSxJQUFJLENBQUNOLE1BQU0sQ0FBQ08sT0FBTyxDQUFDTDtZQUNwQyxJQUFJSSxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUNOLE1BQU0sQ0FBQ1EsTUFBTSxDQUFDRixTQUFTO1lBQ2hELElBQUksQ0FBQyxJQUFJLENBQUNQLE9BQU8sQ0FBQ0ssUUFBUSxDQUFDRixPQUFPLElBQUksQ0FBQ0gsT0FBTyxDQUFDTSxJQUFJLENBQUNIO1FBQ3JEO1FBQ0EsT0FBTyxJQUFJO0lB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@decohere/create",
|
|
3
|
-
"version": "0.0.1-dev.
|
|
3
|
+
"version": "0.0.1-dev.25",
|
|
4
4
|
"description": "Scaffold a new Decohere project — build with Forge, serve with Flux",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"decohere",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@decohere/nexus": "0.0.1-dev.
|
|
24
|
+
"@decohere/nexus": "0.0.1-dev.25",
|
|
25
25
|
"commander": "^13.1.0"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {},
|
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
import type { KeyedModel } from "./source-file.js";
|
|
2
|
+
export type ComposeNetworkRef = string | {
|
|
3
|
+
/** Network key under `networks:` on this service */
|
|
4
|
+
[networkKey: string]: {
|
|
5
|
+
aliases?: string[];
|
|
6
|
+
};
|
|
7
|
+
};
|
|
8
|
+
export interface ComposeHealthcheck {
|
|
9
|
+
test: string[];
|
|
10
|
+
interval?: string;
|
|
11
|
+
timeout?: string;
|
|
12
|
+
retries?: number;
|
|
13
|
+
}
|
|
2
14
|
export interface ComposeService {
|
|
3
15
|
build?: string;
|
|
4
16
|
image?: string;
|
|
17
|
+
container_name?: string;
|
|
5
18
|
env_file?: string[];
|
|
6
19
|
environment?: Record<string, string>;
|
|
7
20
|
ports?: string[];
|
|
@@ -9,23 +22,35 @@ export interface ComposeService {
|
|
|
9
22
|
command?: string;
|
|
10
23
|
restart?: string;
|
|
11
24
|
depends_on?: string[];
|
|
25
|
+
/** Attach to compose networks (string name or map with aliases). */
|
|
26
|
+
networks?: ComposeNetworkRef[];
|
|
27
|
+
healthcheck?: ComposeHealthcheck;
|
|
12
28
|
}
|
|
29
|
+
export type ComposeNetwork = {
|
|
30
|
+
/** Fixed Docker network name (shareable across compose projects). */
|
|
31
|
+
name: string;
|
|
32
|
+
external?: boolean;
|
|
33
|
+
};
|
|
13
34
|
/**
|
|
14
35
|
* Live builder for `docker-compose.yml`.
|
|
15
36
|
*
|
|
16
|
-
* Features call `addService` / `addVolume` in their
|
|
17
|
-
* The devcontainer `render` phase calls `render()` and writes the file.
|
|
37
|
+
* Features call `addService` / `addVolume` / `addNetwork` in their scaffold phases.
|
|
18
38
|
*/
|
|
19
39
|
export declare class DockerCompose implements KeyedModel {
|
|
20
40
|
readonly key: string;
|
|
41
|
+
private _projectName;
|
|
21
42
|
private readonly _services;
|
|
22
43
|
private readonly _volumes;
|
|
44
|
+
private readonly _networks;
|
|
45
|
+
/** Compose project name (`name:` top-level) — isolates containers/volumes. */
|
|
46
|
+
setProjectName(name: string): this;
|
|
23
47
|
addService(name: string, config: ComposeService): this;
|
|
24
48
|
files(): {
|
|
25
49
|
filePath: string;
|
|
26
50
|
content: string;
|
|
27
51
|
}[];
|
|
28
52
|
addVolume(name: string): this;
|
|
53
|
+
addNetwork(key: string, network: ComposeNetwork): this;
|
|
29
54
|
/** Append an env_file path to an existing service. */
|
|
30
55
|
addEnvFile(serviceName: string, filePath: string): this;
|
|
31
56
|
getContent(): string;
|
|
@@ -5,17 +5,29 @@ import type { KeyedModel, SourceFile } from "./source-file.js";
|
|
|
5
5
|
* Features call builder methods (`addExtension`, `forwardPort`, etc.) during
|
|
6
6
|
* their configure phase. `MonoRepoScaffold` calls `files()` at render time.
|
|
7
7
|
*/
|
|
8
|
+
export type PortAttributes = {
|
|
9
|
+
label?: string;
|
|
10
|
+
/** When true, host port must match the container port (no random remap). */
|
|
11
|
+
requireLocalPort?: boolean;
|
|
12
|
+
onAutoForward?: "notify" | "openBrowser" | "openPreview" | "silent" | "ignore";
|
|
13
|
+
};
|
|
8
14
|
export declare class DevContainer implements KeyedModel {
|
|
9
15
|
readonly key: string;
|
|
10
16
|
private readonly _extensions;
|
|
11
17
|
private readonly _ports;
|
|
18
|
+
private readonly _portAttributes;
|
|
12
19
|
private readonly _mounts;
|
|
13
20
|
private _postStartCommand?;
|
|
21
|
+
private _initializeCommand?;
|
|
22
|
+
private _remoteUser;
|
|
14
23
|
private _useCompose;
|
|
15
24
|
constructor();
|
|
16
25
|
addExtension(...ids: string[]): this;
|
|
17
26
|
forwardPort(...ports: number[]): this;
|
|
27
|
+
setPortAttributes(port: number, attrs: PortAttributes): this;
|
|
18
28
|
setPostStartCommand(cmd: string): this;
|
|
29
|
+
setInitializeCommand(cmd: string): this;
|
|
30
|
+
setRemoteUser(user: string): this;
|
|
19
31
|
useCompose(): this;
|
|
20
32
|
files(): SourceFile[];
|
|
21
33
|
}
|
|
@@ -11,8 +11,10 @@ export declare class PackageJson implements KeyedModel {
|
|
|
11
11
|
readonly key: string;
|
|
12
12
|
private readonly _dependencies;
|
|
13
13
|
private readonly _devDependencies;
|
|
14
|
+
private readonly _scripts;
|
|
14
15
|
constructor(name: string);
|
|
15
16
|
addDependency(name: string, version: string): this;
|
|
16
17
|
addDevDependency(name: string, version: string): this;
|
|
18
|
+
addScript(name: string, command: string): this;
|
|
17
19
|
files(): SourceFile[];
|
|
18
20
|
}
|
|
@@ -3,5 +3,8 @@ export type AuthOptions = {
|
|
|
3
3
|
authProvider?: "auth0" | "none";
|
|
4
4
|
issuerBaseUrl?: string;
|
|
5
5
|
audience?: string;
|
|
6
|
+
databaseProvider?: "none" | "postgres/typeorm";
|
|
7
|
+
adminUsername?: string;
|
|
8
|
+
adminPassword?: string;
|
|
6
9
|
};
|
|
7
10
|
export declare const AuthFeature: Feature<AuthOptions>;
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
/** Management API scopes needed for API, SPA, connections, and admin users. */
|
|
2
|
+
declare const REQUIRED_SCOPES: string;
|
|
3
|
+
/** Default API scopes matching Hello CASL Authorize decorators. */
|
|
4
|
+
export declare const HELLO_API_SCOPES: readonly ["read:Hello", "create:Hello", "update:Hello", "delete:Hello"];
|
|
5
|
+
export declare const DB_CONNECTION_NAME = "Username-Password-Authentication";
|
|
2
6
|
export declare class Auth0AuthError extends Error {
|
|
3
7
|
constructor(message: string);
|
|
4
8
|
}
|
|
@@ -13,10 +17,53 @@ export declare function listApis(): Array<{
|
|
|
13
17
|
identifier: string;
|
|
14
18
|
name: string;
|
|
15
19
|
}>;
|
|
16
|
-
export declare function createApi(name: string, identifier: string): {
|
|
20
|
+
export declare function createApi(name: string, identifier: string, scopes?: readonly string[]): {
|
|
17
21
|
identifier: string;
|
|
18
22
|
};
|
|
19
|
-
|
|
23
|
+
/** Replace an API's scopes (Auth0 CLI update --scopes replaces the full set). */
|
|
24
|
+
export declare function updateApiScopes(identifier: string, scopes?: readonly string[]): void;
|
|
25
|
+
export declare function createSpaApp(name: string, callbackUrls: string | readonly string[]): {
|
|
20
26
|
client_id: string;
|
|
21
27
|
};
|
|
28
|
+
export type Auth0App = {
|
|
29
|
+
client_id: string;
|
|
30
|
+
name: string;
|
|
31
|
+
};
|
|
32
|
+
export declare function listApps(): Auth0App[];
|
|
33
|
+
export declare function updateSpaCallbacks(clientId: string, callbackUrls: string | readonly string[]): void;
|
|
34
|
+
/**
|
|
35
|
+
* Create a Postman SPA, or reuse an existing app with the same name (re-scaffold).
|
|
36
|
+
* Always returns a client_id suitable for Postman auth0ClientId.
|
|
37
|
+
*/
|
|
38
|
+
export declare function ensureSpaApp(name: string, callbackUrls: string | readonly string[]): {
|
|
39
|
+
client_id: string;
|
|
40
|
+
reused: boolean;
|
|
41
|
+
};
|
|
42
|
+
/** Enable a database connection for an application (required for username/password login). */
|
|
43
|
+
export declare function enableConnectionForClient(connectionName: string, clientId: string): void;
|
|
44
|
+
export type AdminDatabaseUser = {
|
|
45
|
+
user_id: string;
|
|
46
|
+
email: string;
|
|
47
|
+
password: string;
|
|
48
|
+
username: string;
|
|
49
|
+
};
|
|
50
|
+
/** Strong default password when the scaffolder caller leaves password blank. */
|
|
51
|
+
export declare function generateAdminPassword(): string;
|
|
52
|
+
/** Look up a user by email (Management API users-by-email). */
|
|
53
|
+
export declare function findUserByEmail(email: string): {
|
|
54
|
+
user_id: string;
|
|
55
|
+
email: string;
|
|
56
|
+
} | null;
|
|
57
|
+
/** Reset password so a re-scaffold can write a known password to .env. */
|
|
58
|
+
export declare function updateUserPassword(userId: string, password: string): void;
|
|
59
|
+
/**
|
|
60
|
+
* Create a DB connection root-admin user for local / Postman login.
|
|
61
|
+
* If the user already exists, look them up, reset password to `input.password`,
|
|
62
|
+
* and return that identity so callers can still write .env credentials.
|
|
63
|
+
*/
|
|
64
|
+
export declare function createAdminDatabaseUser(input: {
|
|
65
|
+
email: string;
|
|
66
|
+
password: string;
|
|
67
|
+
username: string;
|
|
68
|
+
}): AdminDatabaseUser;
|
|
22
69
|
export { REQUIRED_SCOPES };
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import type { Feature } from "../../services/scaffold.service.js";
|
|
2
|
+
/** Postman OAuth callback URLs (popup + "Authorize using browser"). */
|
|
3
|
+
declare const POSTMAN_CALLBACKS: readonly ["https://oauth.pstmn.io/v1/callback", "https://oauth.pstmn.io/v1/browser-callback"];
|
|
4
|
+
/** Scopes requested for Auth0 access tokens (OIDC + Hello CASL permissions). */
|
|
5
|
+
declare const POSTMAN_SCOPES: string;
|
|
2
6
|
export type PostmanOptions = {
|
|
3
7
|
postmanProvider?: "api" | "local" | "none";
|
|
4
8
|
apiKey?: string;
|
|
5
9
|
workspaceId?: string;
|
|
6
10
|
};
|
|
7
11
|
export declare const PostmanFeature: Feature<PostmanOptions>;
|
|
12
|
+
export { POSTMAN_CALLBACKS, POSTMAN_SCOPES };
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import type { KeyedModel, SourceFile } from "../../models/source-file.js";
|
|
2
|
+
export type AdminUserConfig = {
|
|
3
|
+
sub: string;
|
|
4
|
+
email: string;
|
|
5
|
+
password: string;
|
|
6
|
+
username: string;
|
|
7
|
+
};
|
|
2
8
|
export type AuthConfig = {
|
|
3
9
|
issuerBaseUrl: string;
|
|
4
10
|
audience: string;
|
|
11
|
+
adminUser?: AdminUserConfig;
|
|
5
12
|
};
|
|
6
13
|
/**
|
|
7
14
|
* Data-carrier model for auth configuration.
|
|
@@ -14,5 +21,6 @@ export declare class AuthConfigModel implements KeyedModel {
|
|
|
14
21
|
readonly config: AuthConfig;
|
|
15
22
|
readonly key: string;
|
|
16
23
|
constructor(config: AuthConfig);
|
|
24
|
+
setAdminUser(adminUser: AdminUserConfig): void;
|
|
17
25
|
files(): SourceFile[];
|
|
18
26
|
}
|
|
@@ -7,11 +7,14 @@ export declare class ControllerMethod {
|
|
|
7
7
|
readonly name: string;
|
|
8
8
|
private readonly _httpDecorator;
|
|
9
9
|
private readonly _params;
|
|
10
|
-
private readonly _isAsync;
|
|
11
|
-
private readonly _body;
|
|
12
10
|
private readonly _extraDecorators;
|
|
13
|
-
|
|
11
|
+
private _body;
|
|
12
|
+
private _isAsync;
|
|
13
|
+
constructor(name: string, _httpDecorator: string, _params: string, isAsync: boolean, body: string[]);
|
|
14
14
|
addDecorator(decorator: string): this;
|
|
15
|
+
/** Replace the method body lines (used by features that extend generated behaviour). */
|
|
16
|
+
setBody(body: string[]): this;
|
|
17
|
+
setAsync(isAsync?: boolean): this;
|
|
15
18
|
render(): string[];
|
|
16
19
|
}
|
|
17
20
|
/**
|
|
@@ -3,6 +3,9 @@ export type TypeOrmImport = {
|
|
|
3
3
|
className: string;
|
|
4
4
|
importPath: string;
|
|
5
5
|
};
|
|
6
|
+
export type ServiceImport = TypeOrmImport & {
|
|
7
|
+
scope?: "singleton" | "request";
|
|
8
|
+
};
|
|
6
9
|
/**
|
|
7
10
|
* Model for `projects/api/src/main.ts`.
|
|
8
11
|
*
|
|
@@ -18,6 +21,8 @@ export declare class MainSourceFile implements KeyedModel {
|
|
|
18
21
|
private readonly _builderCalls;
|
|
19
22
|
private readonly _entities;
|
|
20
23
|
private readonly _repositories;
|
|
24
|
+
private readonly _services;
|
|
25
|
+
private _typeOrmSeed;
|
|
21
26
|
constructor(appName: string);
|
|
22
27
|
/** Adds a bare side-effect import, e.g. `@decohere/cortex/auth`. */
|
|
23
28
|
addSideEffectImport(path: string): this;
|
|
@@ -32,5 +37,12 @@ export declare class MainSourceFile implements KeyedModel {
|
|
|
32
37
|
addEntity(entity: TypeOrmImport): this;
|
|
33
38
|
/** Adds a TypeORM repository — import and entry in `withTypeOrm({ repositories })`. */
|
|
34
39
|
addRepository(repo: TypeOrmImport): this;
|
|
40
|
+
/** Adds a service registered in `.withServices()`. */
|
|
41
|
+
addService(service: ServiceImport): this;
|
|
42
|
+
/**
|
|
43
|
+
* Inline seed callback body for `withTypeOrm({ seed })`.
|
|
44
|
+
* Receives `dataSource` in scope. Example: `await dataSource.getRepository(User).save(...)`.
|
|
45
|
+
*/
|
|
46
|
+
setTypeOrmSeed(seedBody: string): this;
|
|
35
47
|
files(): SourceFile[];
|
|
36
48
|
}
|