@aerokit/sdk 12.68.0 → 12.69.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -18,13 +18,17 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
18
18
|
var decorators_exports = {};
|
|
19
19
|
__export(decorators_exports, {
|
|
20
20
|
Column: () => Column,
|
|
21
|
+
CreatedAt: () => CreatedAt,
|
|
22
|
+
CreatedBy: () => CreatedBy,
|
|
21
23
|
Documentation: () => Documentation,
|
|
22
24
|
Entity: () => Entity,
|
|
23
25
|
Generated: () => Generated,
|
|
24
26
|
Id: () => Id,
|
|
25
27
|
ManyToOne: () => ManyToOne,
|
|
26
28
|
OneToMany: () => OneToMany,
|
|
27
|
-
Table: () => Table
|
|
29
|
+
Table: () => Table,
|
|
30
|
+
UpdatedAt: () => UpdatedAt,
|
|
31
|
+
UpdatedBy: () => UpdatedBy
|
|
28
32
|
});
|
|
29
33
|
module.exports = __toCommonJS(decorators_exports);
|
|
30
34
|
const globalCache = globalThis.__decorator_metadata_cache__ || (globalThis.__decorator_metadata_cache__ = /* @__PURE__ */ new WeakMap());
|
|
@@ -53,11 +57,19 @@ function createPropertyDecorator(kind, options) {
|
|
|
53
57
|
metadata = {
|
|
54
58
|
propertyName,
|
|
55
59
|
isId: false,
|
|
60
|
+
isCreatedAt: false,
|
|
61
|
+
isUpdatedAt: false,
|
|
62
|
+
isCreatedBy: false,
|
|
63
|
+
isUpdatedBy: false,
|
|
56
64
|
isGenerated: false
|
|
57
65
|
};
|
|
58
66
|
metadataArray.push(metadata);
|
|
59
67
|
}
|
|
60
68
|
if (kind === "id") metadata.isId = true;
|
|
69
|
+
if (kind === "createdAt") metadata.isCreatedAt = true;
|
|
70
|
+
if (kind === "updatedAt") metadata.isUpdatedAt = true;
|
|
71
|
+
if (kind === "createdBy") metadata.isCreatedBy = true;
|
|
72
|
+
if (kind === "updatedBy") metadata.isUpdatedBy = true;
|
|
61
73
|
if (kind === "generated") metadata.isGenerated = true;
|
|
62
74
|
if (kind === "column") metadata.columnOptions = options;
|
|
63
75
|
});
|
|
@@ -82,6 +94,10 @@ function Documentation(description) {
|
|
|
82
94
|
metadata = {
|
|
83
95
|
propertyName,
|
|
84
96
|
isId: false,
|
|
97
|
+
isCreatedAt: false,
|
|
98
|
+
isUpdatedAt: false,
|
|
99
|
+
isCreatedBy: false,
|
|
100
|
+
isUpdatedBy: false,
|
|
85
101
|
isGenerated: false
|
|
86
102
|
};
|
|
87
103
|
metadataArray.push(metadata);
|
|
@@ -119,6 +135,10 @@ function Table(tableName) {
|
|
|
119
135
|
}
|
|
120
136
|
const Column = (options) => createPropertyDecorator("column", options);
|
|
121
137
|
const Id = () => createPropertyDecorator("id");
|
|
138
|
+
const CreatedAt = () => createPropertyDecorator("createdAt");
|
|
139
|
+
const UpdatedAt = () => createPropertyDecorator("updatedAt");
|
|
140
|
+
const CreatedBy = () => createPropertyDecorator("createdBy");
|
|
141
|
+
const UpdatedBy = () => createPropertyDecorator("updatedBy");
|
|
122
142
|
const Generated = (strategy) => createPropertyDecorator("generated");
|
|
123
143
|
function OneToMany(typeFunction, options) {
|
|
124
144
|
return function(_, context) {
|
|
@@ -134,6 +154,10 @@ function OneToMany(typeFunction, options) {
|
|
|
134
154
|
metadata = {
|
|
135
155
|
propertyName,
|
|
136
156
|
isId: false,
|
|
157
|
+
isCreatedAt: false,
|
|
158
|
+
isUpdatedAt: false,
|
|
159
|
+
isCreatedBy: false,
|
|
160
|
+
isUpdatedBy: false,
|
|
137
161
|
isGenerated: false
|
|
138
162
|
};
|
|
139
163
|
metadataArray.push(metadata);
|
|
@@ -156,6 +180,10 @@ function ManyToOne(typeFunction, options = {}) {
|
|
|
156
180
|
metadata = {
|
|
157
181
|
propertyName,
|
|
158
182
|
isId: false,
|
|
183
|
+
isCreatedAt: false,
|
|
184
|
+
isUpdatedAt: false,
|
|
185
|
+
isCreatedBy: false,
|
|
186
|
+
isUpdatedBy: false,
|
|
159
187
|
isGenerated: false
|
|
160
188
|
};
|
|
161
189
|
metadataArray.push(metadata);
|
|
@@ -164,4 +192,4 @@ function ManyToOne(typeFunction, options = {}) {
|
|
|
164
192
|
});
|
|
165
193
|
};
|
|
166
194
|
}
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2RlY29yYXRvcnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogKiBFQ01BU2NyaXB0IDIwMjUtY29tcGxpYW50IE9STSBkZWNvcmF0b3IgaW1wbGVtZW50YXRpb25cbiAqIENvbXBhdGlibGUgd2l0aCBHcmFhbEpTIHJ1bnRpbWUuXG4gKiAqIEZlYXR1cmVzOlxuICogLSBVc2VzIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgZm9yIHN0YWJsZSBkZWNvcmF0b3IgdGltaW5nXG4gKiAtIFN0b3JlcyBtZXRhZGF0YSBpbiBhIGdsb2JhbCBXZWFrTWFwIGNhY2hlXG4gKiAtIEZpbmFsaXplcyBlbnRpdHkgbWV0YWRhdGEgb25jZSBwZXIgY2xhc3NcbiAqIC0gRGVmZXJzIGZpbmFsaXphdGlvbiB2aWEgbWljcm90YXNrIChQcm9taXNlLnJlc29sdmUoKS50aGVuKVxuICovXG5cbi8vIC0tLSBEZWNvcmF0b3IgQ29udGV4dCBUeXBlcyAoYmFzZWQgb24gRUNNQVNjcmlwdCBEZWNvcmF0b3JzIHByb3Bvc2FsKSAtLS1cbnR5cGUgQ2xhc3NGaWVsZERlY29yYXRvckNvbnRleHQgPSB7XG4gIGtpbmQ6IFwiZmllbGRcIjtcbiAgbmFtZTogc3RyaW5nIHwgc3ltYm9sO1xuICBzdGF0aWM6IGJvb2xlYW47XG4gIHByaXZhdGU6IGJvb2xlYW47XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbnR5cGUgQ2xhc3NEZWNvcmF0b3JDb250ZXh0ID0ge1xuICBraW5kOiBcImNsYXNzXCI7XG4gIG5hbWU/OiBzdHJpbmcgfCBzeW1ib2w7XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIENvbHVtblR5cGVzID1cbiAgLy8gTnVtZXJpYyB0eXBlc1xuICB8ICdpbnRlZ2VyJyB8ICdsb25nJyB8ICdzaG9ydCcgfCAnYnl0ZScgfCAnZmxvYXQnIHwgJ2RvdWJsZScgfCAnYmlnX2ludGVnZXInIHwgJ2JpZ19kZWNpbWFsJ1xuICAvLyBTdHJpbmcgdHlwZXNcbiAgfCAnc3RyaW5nJyB8ICdjaGFyJyB8ICd0ZXh0JyB8ICduc3RyaW5nJyB8ICdudGV4dCdcbiAgLy8gRGF0ZS9UaW1lIHR5cGVzXG4gIHwgJ2RhdGUnIHwgJ3RpbWUnIHwgJ3RpbWVzdGFtcCcgfCAnY2FsZW5kYXInIHwgJ2NhbGVuZGFyX2RhdGUnIHwgJ2luc3RhbnQnXG4gIC8vIEJvb2xlYW4gdHlwZXNcbiAgfCAnYm9vbGVhbicgfCAndHJ1ZV9mYWxzZScgfCAneWVzX25vJyB8ICdudW1lcmljX2Jvb2xlYW4nIFxuICAvLyBCaW5hcnkgdHlwZXNcbiAgfCAnYmluYXJ5JyB8ICdibG9iJyB8ICdjbG9iJyB8ICdtYXRlcmlhbGl6ZWRfYmxvYicgfCAnbWF0ZXJpYWxpemVkX2Nsb2InXG4gIC8vIE90aGVyIHR5cGVzXG4gIHwgJ3NlcmlhbGl6YWJsZScgfCAnYW55JyB8ICdvYmplY3QnIHwgJ3V1aWQtY2hhcicgfCAndXVpZC1iaW5hcnknIHwgJ2pzb24nIHwgJ2pzb25iJyB8ICd4bWwnO1xuXG4vLyAtLS0gTWV0YWRhdGEgTW9kZWxzIC0tLVxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5PcHRpb25zIHtcbiAgbmFtZT86IHN0cmluZztcbiAgdHlwZT86IENvbHVtblR5cGVzIHwgKHN0cmluZyAmIHt9KTtcbiAgbGVuZ3RoPzogbnVtYmVyO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICBzY2FsZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbmVUb01hbnlPcHRpb25zIHtcbiAgdGFibGU/OiBzdHJpbmc7XG4gIGpvaW5Db2x1bW46IHN0cmluZztcbiAgY2FzY2FkZT86IFwiYWxsXCIgfCBcIm5vbmVcIiB8IFwicGVyc2lzdFwiIHwgXCJtZXJnZVwiIHwgXCJyZW1vdmVcIjtcbiAgaW52ZXJzZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbiAgam9pbkNvbHVtbk5vdE51bGw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hbnlUb09uZU9wdGlvbnMge1xuICBqb2luQ29sdW1uPzogc3RyaW5nO1xuICBjYXNjYWRlPzogXCJhbGxcIiB8IFwibm9uZVwiIHwgXCJwZXJzaXN0XCIgfCBcIm1lcmdlXCIgfCBcInJlbW92ZVwiO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbn1cblxuaW50ZXJmYWNlIFByb3BlcnR5TWV0YWRhdGEge1xuICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcbiAgaXNJZDogYm9vbGVhbjtcbiAgaXNHZW5lcmF0ZWQ6IGJvb2xlYW47XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIGNvbHVtbk9wdGlvbnM/OiBDb2x1bW5PcHRpb25zO1xuICBvbmVUb01hbnlPcHRpb25zPzogeyB0eXBlOiBGdW5jdGlvbjsgb3B0aW9uczogT25lVG9NYW55T3B0aW9ucyB9O1xuICBtYW55VG9PbmVPcHRpb25zPzogeyB0eXBlOiBGdW5jdGlvbjsgb3B0aW9uczogTWFueVRvT25lT3B0aW9ucyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUNvbnN0cnVjdG9yIGV4dGVuZHMgRnVuY3Rpb24ge1xuICBuZXcoLi4uYXJnczogYW55W10pOiBhbnk7XG4gICRlbnRpdHlfbmFtZTogc3RyaW5nO1xuICAkdGFibGVfbmFtZTogc3RyaW5nO1xuICAkaWRfbmFtZTogc3RyaW5nO1xuICAkaWRfY29sdW1uOiBzdHJpbmc7XG4gICRpbml0aWFsaXplZD86IGJvb2xlYW47XG4gICRkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xufVxuXG4vLyAtLS0gR2xvYmFsIE1ldGFkYXRhIENhY2hlIC0tLVxuY29uc3QgZ2xvYmFsQ2FjaGU6IFdlYWtNYXA8RnVuY3Rpb24sIFByb3BlcnR5TWV0YWRhdGFbXT4gPVxuICAoZ2xvYmFsVGhpcyBhcyBhbnkpLl9fZGVjb3JhdG9yX21ldGFkYXRhX2NhY2hlX18gfHxcbiAgKChnbG9iYWxUaGlzIGFzIGFueSkuX19kZWNvcmF0b3JfbWV0YWRhdGFfY2FjaGVfXyA9IG5ldyBXZWFrTWFwKCkpO1xuXG5mdW5jdGlvbiBnZXRNZXRhZGF0YUFycmF5KGNvbnN0cnVjdG9yOiBGdW5jdGlvbik6IFByb3BlcnR5TWV0YWRhdGFbXSB7XG4gIGlmICghZ2xvYmFsQ2FjaGUuaGFzKGNvbnN0cnVjdG9yKSkge1xuICAgIGdsb2JhbENhY2hlLnNldChjb25zdHJ1Y3RvciwgW10pO1xuICB9XG4gIHJldHVybiBnbG9iYWxDYWNoZS5nZXQoY29uc3RydWN0b3IpITtcbn1cblxuLy8gLS0tIERlZmVyIEhlbHBlciAoR3JhYWxKUy1zYWZlIG1pY3JvdGFzaykgLS0tXG5mdW5jdGlvbiBkZWZlcihmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAvLyBVc2VzIFByb21pc2UgbWljcm90YXNrIHF1ZXVlIGZvciBkZWZlcnJlZCBleGVjdXRpb25cbiAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmbik7XG59XG5cbi8vIC0tLSBDb3JlIFByb3BlcnR5IERlY29yYXRvciBGYWN0b3J5IC0tLVxuZnVuY3Rpb24gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXG4gIGtpbmQ6IFwiY29sdW1uXCIgfCBcImlkXCIgfCBcImdlbmVyYXRlZFwiLFxuICBvcHRpb25zPzogQ29sdW1uT3B0aW9uc1xuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoXzogYW55LCBjb250ZXh0OiBDbGFzc0ZpZWxkRGVjb3JhdG9yQ29udGV4dCkge1xuICAgIGlmIChjb250ZXh0LmtpbmQgIT09IFwiZmllbGRcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBAJHtraW5kfSBtdXN0IGFwcGx5IHRvIGZpZWxkc2ApO1xuICAgIH1cblxuICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY3RvciA9ICh0aGlzIGFzIGFueSkuY29uc3RydWN0b3IgYXMgRW50aXR5Q29uc3RydWN0b3I7XG4gICAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBjb250ZXh0Lm5hbWUudG9TdHJpbmcoKTtcbiAgICAgIGNvbnN0IG1ldGFkYXRhQXJyYXkgPSBnZXRNZXRhZGF0YUFycmF5KGN0b3IpO1xuXG4gICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoXG4gICAgICAgIChtKSA9PiBtLnByb3BlcnR5TmFtZSA9PT0gcHJvcGVydHlOYW1lXG4gICAgICApO1xuXG4gICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgIG1ldGFkYXRhID0ge1xuICAgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlOYW1lLFxuICAgICAgICAgIGlzSWQ6IGZhbHNlLFxuICAgICAgICAgIGlzR2VuZXJhdGVkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgbWV0YWRhdGFBcnJheS5wdXNoKG1ldGFkYXRhKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGtpbmQgPT09IFwiaWRcIikgbWV0YWRhdGEuaXNJZCA9IHRydWU7XG4gICAgICBpZiAoa2luZCA9PT0gXCJnZW5lcmF0ZWRcIikgbWV0YWRhdGEuaXNHZW5lcmF0ZWQgPSB0cnVlO1xuICAgICAgaWYgKGtpbmQgPT09IFwiY29sdW1uXCIpIG1ldGFkYXRhLmNvbHVtbk9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH0pO1xuICB9O1xufVxuXG4vLyAtLS0gQERvY3VtZW50YXRpb24gRGVjb3JhdG9yIChEdWFsLVB1cnBvc2UpIC0tLVxuLyoqXG4gKiBBZGRzIGRvY3VtZW50YXRpb24gbWV0YWRhdGEgdG8gYSBjbGFzcyBvciBhIGZpZWxkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRG9jdW1lbnRhdGlvbihkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoXG4gICAgdmFsdWU6IEZ1bmN0aW9uIHwgYW55LFxuICAgIGNvbnRleHQ6IENsYXNzRGVjb3JhdG9yQ29udGV4dCB8IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0XG4gICkge1xuICAgIGlmIChjb250ZXh0LmtpbmQgPT09IFwiY2xhc3NcIikge1xuICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICAgICh2YWx1ZSBhcyBFbnRpdHlDb25zdHJ1Y3RvcikuJGRvY3VtZW50YXRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSBpZiAoY29udGV4dC5raW5kID09PSBcImZpZWxkXCIpIHtcbiAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBjdG9yID0gKHRoaXMgYXMgYW55KS5jb25zdHJ1Y3RvciBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcbiAgICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhQXJyYXkgPSBnZXRNZXRhZGF0YUFycmF5KGN0b3IpO1xuXG4gICAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZChcbiAgICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlOYW1lLFxuICAgICAgICAgICAgaXNJZDogZmFsc2UsXG4gICAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBtZXRhZGF0YUFycmF5LnB1c2gobWV0YWRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgbWV0YWRhdGEuZG9jdW1lbnRhdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuXG5cbi8vIC0tLSBARW50aXR5IERlY29yYXRvciAtLS1cbi8qKlxuICogTWFya3MgYSBjbGFzcyBhcyBhbiBlbnRpdHkgYW5kIGluaXRpYXRlcyBtZXRhZGF0YSBmaW5hbGl6YXRpb24uXG4gKiBAcGFyYW0gZW50aXR5TmFtZSBUaGUgbmFtZSBvZiB0aGUgZW50aXR5IChkZWZhdWx0cyB0byBjbGFzcyBuYW1lKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEVudGl0eShlbnRpdHlOYW1lPzogc3RyaW5nKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWU6IEZ1bmN0aW9uLCBjb250ZXh0OiBDbGFzc0RlY29yYXRvckNvbnRleHQpIHtcbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIERlZmVyIGV4ZWN1dGlvbiB0byBlbnN1cmUgYWxsIGZpZWxkIGRlY29yYXRvcnMgaGF2ZSBydW5cbiAgICAgIGRlZmVyKCgpID0+IHtcbiAgICAgICAgY29uc3QgY3RvciA9IHZhbHVlIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuXG4gICAgICAgIC8vIFByZXZlbnQgZHVwbGljYXRlIHJlZ2lzdHJhdGlvbiAoaWRlbXBvdGVuY3kpXG4gICAgICAgIGlmIChjdG9yLiRpbml0aWFsaXplZCkgcmV0dXJuO1xuICAgICAgICBjdG9yLiRpbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICAgICAgY3Rvci4kZW50aXR5X25hbWUgPSBlbnRpdHlOYW1lIHx8IGN0b3IubmFtZTtcblxuICAgICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcbiAgICAgICAgY29uc3QgaWRNZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZCgobSkgPT4gbS5pc0lkKTtcblxuICAgICAgICBpZiAoaWRNZXRhZGF0YSkge1xuICAgICAgICAgIGN0b3IuJGlkX25hbWUgPSBpZE1ldGFkYXRhLnByb3BlcnR5TmFtZTtcbiAgICAgICAgICAvLyBEZXRlcm1pbmUgSUQgY29sdW1uIG5hbWU6IHVzZSBleHBsaWNpdCBuYW1lIG9yIGNvbnZlcnQgcHJvcGVydHkgbmFtZSB0byB1cHBlciBjYXNlXG4gICAgICAgICAgY3Rvci4kaWRfY29sdW1uID1cbiAgICAgICAgICAgIGlkTWV0YWRhdGEuY29sdW1uT3B0aW9ucz8ubmFtZSB8fFxuICAgICAgICAgICAgaWRNZXRhZGF0YS5wcm9wZXJ0eU5hbWUudG9VcHBlckNhc2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZ1dHVyZTogTG9naWMgdG8gbWFwIGFsbCBwcm9wZXJ0aWVzIHRvIGNvbHVtbnMvcmVsYXRpb25zIGdvZXMgaGVyZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8vIC0tLSBAVGFibGUgRGVjb3JhdG9yIC0tLVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGRhdGFiYXNlIHRhYmxlIG5hbWUgZm9yIHRoZSBlbnRpdHkuXG4gKiBAcGFyYW0gdGFibGVOYW1lIFRoZSB0YWJsZSBuYW1lIChkZWZhdWx0cyB0byB1cHBlcmNhc2UgY2xhc3MgbmFtZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBUYWJsZSh0YWJsZU5hbWU/OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxUIGV4dGVuZHMgRW50aXR5Q29uc3RydWN0b3I+KFxuICAgIHZhbHVlOiBULFxuICAgIGNvbnRleHQ6IENsYXNzRGVjb3JhdG9yQ29udGV4dFxuICApIHtcbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICh2YWx1ZSBhcyBFbnRpdHlDb25zdHJ1Y3RvcikuJHRhYmxlX25hbWUgPVxuICAgICAgICB0YWJsZU5hbWUgfHwgKGNvbnRleHQubmFtZT8udG9TdHJpbmcoKSA/PyB2YWx1ZS5uYW1lLnRvVXBwZXJDYXNlKCkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG4vLyAtLS0gRXhwb3J0ZWQgUHJvcGVydHkgRGVjb3JhdG9ycyAtLS1cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBhIHN0YW5kYXJkIGRhdGFiYXNlIGNvbHVtbi5cbiAqL1xuZXhwb3J0IGNvbnN0IENvbHVtbiA9IChvcHRpb25zPzogQ29sdW1uT3B0aW9ucykgPT5cbiAgY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJjb2x1bW5cIiwgb3B0aW9ucyk7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyB0aGUgZW50aXR5J3MgcHJpbWFyeSBrZXkuXG4gKi9cbmV4cG9ydCBjb25zdCBJZCA9ICgpID0+IGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwiaWRcIik7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBhIGdlbmVyYXRlZCB2YWx1ZSAoZS5nLiwgYXV0by1pbmNyZW1lbnQpLlxuICogQHBhcmFtIHN0cmF0ZWd5IFRoZSBnZW5lcmF0aW9uIHN0cmF0ZWd5IChlLmcuLCBcIklERU5USVRZXCIpLiBQYXJhbWV0ZXIgaXMgY3VycmVudGx5IHVudXNlZCBpbiBsb2dpYy5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmVyYXRlZCA9IChzdHJhdGVneTogc3RyaW5nKSA9PlxuICBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcImdlbmVyYXRlZFwiKTtcblxuLyoqXG4gKiBEZWZpbmVzIGEgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT25lVG9NYW55KFxuICB0eXBlRnVuY3Rpb246ICgpID0+IEZ1bmN0aW9uLFxuICBvcHRpb25zOiBPbmVUb01hbnlPcHRpb25zXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSByZXR1cm47XG5cbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGN0b3IgPSAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKFxuICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICBpc0lkOiBmYWxzZSxcbiAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIG1ldGFkYXRhQXJyYXkucHVzaChtZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIG1ldGFkYXRhLm9uZVRvTWFueU9wdGlvbnMgPSB7IHR5cGU6IHR5cGVGdW5jdGlvbigpLCBvcHRpb25zIH07XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIG1hbnktdG8tb25lIHJlbGF0aW9uc2hpcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1hbnlUb09uZShcbiAgdHlwZUZ1bmN0aW9uOiAoKSA9PiBGdW5jdGlvbixcbiAgb3B0aW9uczogTWFueVRvT25lT3B0aW9ucyA9IHt9XG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSByZXR1cm47XG5cbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGN0b3IgPSAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKFxuICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICBpc0lkOiBmYWxzZSxcbiAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIG1ldGFkYXRhQXJyYXkucHVzaChtZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIG1ldGFkYXRhLm1hbnlUb09uZU9wdGlvbnMgPSB7IHR5cGU6IHR5cGVGdW5jdGlvbigpLCBvcHRpb25zIH07XG4gICAgfSk7XG4gIH07XG59Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF5RkEsTUFBTSxjQUNILFdBQW1CLGlDQUNsQixXQUFtQiwrQkFBK0Isb0JBQUksUUFBUTtBQUVsRSxTQUFTLGlCQUFpQixhQUEyQztBQUNuRSxNQUFJLENBQUMsWUFBWSxJQUFJLFdBQVcsR0FBRztBQUNqQyxnQkFBWSxJQUFJLGFBQWEsQ0FBQyxDQUFDO0FBQUEsRUFDakM7QUFDQSxTQUFPLFlBQVksSUFBSSxXQUFXO0FBQ3BDO0FBR0EsU0FBUyxNQUFNLElBQXNCO0FBRW5DLFVBQVEsUUFBUSxFQUFFLEtBQUss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
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2RlY29yYXRvcnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogKiBFQ01BU2NyaXB0IDIwMjUtY29tcGxpYW50IE9STSBkZWNvcmF0b3IgaW1wbGVtZW50YXRpb25cbiAqIENvbXBhdGlibGUgd2l0aCBHcmFhbEpTIHJ1bnRpbWUuXG4gKiAqIEZlYXR1cmVzOlxuICogLSBVc2VzIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgZm9yIHN0YWJsZSBkZWNvcmF0b3IgdGltaW5nXG4gKiAtIFN0b3JlcyBtZXRhZGF0YSBpbiBhIGdsb2JhbCBXZWFrTWFwIGNhY2hlXG4gKiAtIEZpbmFsaXplcyBlbnRpdHkgbWV0YWRhdGEgb25jZSBwZXIgY2xhc3NcbiAqIC0gRGVmZXJzIGZpbmFsaXphdGlvbiB2aWEgbWljcm90YXNrIChQcm9taXNlLnJlc29sdmUoKS50aGVuKVxuICovXG5cbi8vIC0tLSBEZWNvcmF0b3IgQ29udGV4dCBUeXBlcyAoYmFzZWQgb24gRUNNQVNjcmlwdCBEZWNvcmF0b3JzIHByb3Bvc2FsKSAtLS1cbnR5cGUgQ2xhc3NGaWVsZERlY29yYXRvckNvbnRleHQgPSB7XG4gIGtpbmQ6IFwiZmllbGRcIjtcbiAgbmFtZTogc3RyaW5nIHwgc3ltYm9sO1xuICBzdGF0aWM6IGJvb2xlYW47XG4gIHByaXZhdGU6IGJvb2xlYW47XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbnR5cGUgQ2xhc3NEZWNvcmF0b3JDb250ZXh0ID0ge1xuICBraW5kOiBcImNsYXNzXCI7XG4gIG5hbWU/OiBzdHJpbmcgfCBzeW1ib2w7XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIENvbHVtblR5cGVzID1cbiAgLy8gTnVtZXJpYyB0eXBlc1xuICB8ICdpbnRlZ2VyJyB8ICdsb25nJyB8ICdzaG9ydCcgfCAnYnl0ZScgfCAnZmxvYXQnIHwgJ2RvdWJsZScgfCAnYmlnX2ludGVnZXInIHwgJ2JpZ19kZWNpbWFsJ1xuICAvLyBTdHJpbmcgdHlwZXNcbiAgfCAnc3RyaW5nJyB8ICdjaGFyJyB8ICd0ZXh0JyB8ICduc3RyaW5nJyB8ICdudGV4dCdcbiAgLy8gRGF0ZS9UaW1lIHR5cGVzXG4gIHwgJ2RhdGUnIHwgJ3RpbWUnIHwgJ3RpbWVzdGFtcCcgfCAnY2FsZW5kYXInIHwgJ2NhbGVuZGFyX2RhdGUnIHwgJ2luc3RhbnQnXG4gIC8vIEJvb2xlYW4gdHlwZXNcbiAgfCAnYm9vbGVhbicgfCAndHJ1ZV9mYWxzZScgfCAneWVzX25vJyB8ICdudW1lcmljX2Jvb2xlYW4nIFxuICAvLyBCaW5hcnkgdHlwZXNcbiAgfCAnYmluYXJ5JyB8ICdibG9iJyB8ICdjbG9iJyB8ICdtYXRlcmlhbGl6ZWRfYmxvYicgfCAnbWF0ZXJpYWxpemVkX2Nsb2InXG4gIC8vIE90aGVyIHR5cGVzXG4gIHwgJ3NlcmlhbGl6YWJsZScgfCAnYW55JyB8ICdvYmplY3QnIHwgJ3V1aWQtY2hhcicgfCAndXVpZC1iaW5hcnknIHwgJ2pzb24nIHwgJ2pzb25iJyB8ICd4bWwnO1xuXG4vLyAtLS0gTWV0YWRhdGEgTW9kZWxzIC0tLVxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5PcHRpb25zIHtcbiAgbmFtZT86IHN0cmluZztcbiAgdHlwZT86IENvbHVtblR5cGVzIHwgKHN0cmluZyAmIHt9KTtcbiAgbGVuZ3RoPzogbnVtYmVyO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICBzY2FsZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbmVUb01hbnlPcHRpb25zIHtcbiAgdGFibGU/OiBzdHJpbmc7XG4gIGpvaW5Db2x1bW46IHN0cmluZztcbiAgY2FzY2FkZT86IFwiYWxsXCIgfCBcIm5vbmVcIiB8IFwicGVyc2lzdFwiIHwgXCJtZXJnZVwiIHwgXCJyZW1vdmVcIjtcbiAgaW52ZXJzZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbiAgam9pbkNvbHVtbk5vdE51bGw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hbnlUb09uZU9wdGlvbnMge1xuICBqb2luQ29sdW1uPzogc3RyaW5nO1xuICBjYXNjYWRlPzogXCJhbGxcIiB8IFwibm9uZVwiIHwgXCJwZXJzaXN0XCIgfCBcIm1lcmdlXCIgfCBcInJlbW92ZVwiO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbn1cblxuaW50ZXJmYWNlIFByb3BlcnR5TWV0YWRhdGEge1xuICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcbiAgaXNJZDogYm9vbGVhbjtcbiAgaXNDcmVhdGVkQXQ6IGJvb2xlYW47XG4gIGlzVXBkYXRlZEF0OiBib29sZWFuO1xuICBpc0NyZWF0ZWRCeTogYm9vbGVhbjtcbiAgaXNVcGRhdGVkQnk6IGJvb2xlYW47XG4gIGlzR2VuZXJhdGVkOiBib29sZWFuO1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xuICBjb2x1bW5PcHRpb25zPzogQ29sdW1uT3B0aW9ucztcbiAgb25lVG9NYW55T3B0aW9ucz86IHsgdHlwZTogRnVuY3Rpb247IG9wdGlvbnM6IE9uZVRvTWFueU9wdGlvbnMgfTtcbiAgbWFueVRvT25lT3B0aW9ucz86IHsgdHlwZTogRnVuY3Rpb247IG9wdGlvbnM6IE1hbnlUb09uZU9wdGlvbnMgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlDb25zdHJ1Y3RvciBleHRlbmRzIEZ1bmN0aW9uIHtcbiAgbmV3KC4uLmFyZ3M6IGFueVtdKTogYW55O1xuICAkZW50aXR5X25hbWU6IHN0cmluZztcbiAgJHRhYmxlX25hbWU6IHN0cmluZztcbiAgJGlkX25hbWU6IHN0cmluZztcbiAgJGlkX2NvbHVtbjogc3RyaW5nO1xuICAkaW5pdGlhbGl6ZWQ/OiBib29sZWFuO1xuICAkZG9jdW1lbnRhdGlvbj86IHN0cmluZztcbn1cblxuLy8gLS0tIEdsb2JhbCBNZXRhZGF0YSBDYWNoZSAtLS1cbmNvbnN0IGdsb2JhbENhY2hlOiBXZWFrTWFwPEZ1bmN0aW9uLCBQcm9wZXJ0eU1ldGFkYXRhW10+ID1cbiAgKGdsb2JhbFRoaXMgYXMgYW55KS5fX2RlY29yYXRvcl9tZXRhZGF0YV9jYWNoZV9fIHx8XG4gICgoZ2xvYmFsVGhpcyBhcyBhbnkpLl9fZGVjb3JhdG9yX21ldGFkYXRhX2NhY2hlX18gPSBuZXcgV2Vha01hcCgpKTtcblxuZnVuY3Rpb24gZ2V0TWV0YWRhdGFBcnJheShjb25zdHJ1Y3RvcjogRnVuY3Rpb24pOiBQcm9wZXJ0eU1ldGFkYXRhW10ge1xuICBpZiAoIWdsb2JhbENhY2hlLmhhcyhjb25zdHJ1Y3RvcikpIHtcbiAgICBnbG9iYWxDYWNoZS5zZXQoY29uc3RydWN0b3IsIFtdKTtcbiAgfVxuICByZXR1cm4gZ2xvYmFsQ2FjaGUuZ2V0KGNvbnN0cnVjdG9yKSE7XG59XG5cbi8vIC0tLSBEZWZlciBIZWxwZXIgKEdyYWFsSlMtc2FmZSBtaWNyb3Rhc2spIC0tLVxuZnVuY3Rpb24gZGVmZXIoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgLy8gVXNlcyBQcm9taXNlIG1pY3JvdGFzayBxdWV1ZSBmb3IgZGVmZXJyZWQgZXhlY3V0aW9uXG4gIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZm4pO1xufVxuXG4vLyAtLS0gQ29yZSBQcm9wZXJ0eSBEZWNvcmF0b3IgRmFjdG9yeSAtLS1cbmZ1bmN0aW9uIGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFxuICBraW5kOiBcImNvbHVtblwiIHwgXCJpZFwiIHwgXCJnZW5lcmF0ZWRcIiB8IFwiY3JlYXRlZEF0XCIgfCBcInVwZGF0ZWRBdFwiIHwgXCJjcmVhdGVkQnlcIiB8IFwidXBkYXRlZEJ5XCIsXG4gIG9wdGlvbnM/OiBDb2x1bW5PcHRpb25zXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEAke2tpbmR9IG11c3QgYXBwbHkgdG8gZmllbGRzYCk7XG4gICAgfVxuXG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjdG9yID0gKHRoaXMgYXMgYW55KS5jb25zdHJ1Y3RvciBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcbiAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGNvbnRleHQubmFtZS50b1N0cmluZygpO1xuICAgICAgY29uc3QgbWV0YWRhdGFBcnJheSA9IGdldE1ldGFkYXRhQXJyYXkoY3Rvcik7XG5cbiAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZChcbiAgICAgICAgKG0pID0+IG0ucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcbiAgICAgICk7XG5cbiAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgaXNJZDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRCeTogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRCeTogZmFsc2UsXG4gICAgICAgICAgaXNHZW5lcmF0ZWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBtZXRhZGF0YUFycmF5LnB1c2gobWV0YWRhdGEpO1xuICAgICAgfVxuXG4gICAgICBpZiAoa2luZCA9PT0gXCJpZFwiKSBtZXRhZGF0YS5pc0lkID0gdHJ1ZTtcblx0ICBpZiAoa2luZCA9PT0gXCJjcmVhdGVkQXRcIikgbWV0YWRhdGEuaXNDcmVhdGVkQXQgPSB0cnVlO1xuXHQgIGlmIChraW5kID09PSBcInVwZGF0ZWRBdFwiKSBtZXRhZGF0YS5pc1VwZGF0ZWRBdCA9IHRydWU7XG5cdCAgaWYgKGtpbmQgPT09IFwiY3JlYXRlZEJ5XCIpIG1ldGFkYXRhLmlzQ3JlYXRlZEJ5ID0gdHJ1ZTtcblx0ICBpZiAoa2luZCA9PT0gXCJ1cGRhdGVkQnlcIikgbWV0YWRhdGEuaXNVcGRhdGVkQnkgPSB0cnVlO1xuICAgICAgaWYgKGtpbmQgPT09IFwiZ2VuZXJhdGVkXCIpIG1ldGFkYXRhLmlzR2VuZXJhdGVkID0gdHJ1ZTtcbiAgICAgIGlmIChraW5kID09PSBcImNvbHVtblwiKSBtZXRhZGF0YS5jb2x1bW5PcHRpb25zID0gb3B0aW9ucztcbiAgICB9KTtcbiAgfTtcbn1cblxuLy8gLS0tIEBEb2N1bWVudGF0aW9uIERlY29yYXRvciAoRHVhbC1QdXJwb3NlKSAtLS1cbi8qKlxuICogQWRkcyBkb2N1bWVudGF0aW9uIG1ldGFkYXRhIHRvIGEgY2xhc3Mgb3IgYSBmaWVsZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIERvY3VtZW50YXRpb24oZGVzY3JpcHRpb246IHN0cmluZykge1xuICByZXR1cm4gZnVuY3Rpb24gKFxuICAgIHZhbHVlOiBGdW5jdGlvbiB8IGFueSxcbiAgICBjb250ZXh0OiBDbGFzc0RlY29yYXRvckNvbnRleHQgfCBDbGFzc0ZpZWxkRGVjb3JhdG9yQ29udGV4dFxuICApIHtcbiAgICBpZiAoY29udGV4dC5raW5kID09PSBcImNsYXNzXCIpIHtcbiAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICAodmFsdWUgYXMgRW50aXR5Q29uc3RydWN0b3IpLiRkb2N1bWVudGF0aW9uID0gZGVzY3JpcHRpb247XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKGNvbnRleHQua2luZCA9PT0gXCJmaWVsZFwiKSB7XG4gICAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgY3RvciA9ICh0aGlzIGFzIGFueSkuY29uc3RydWN0b3IgYXMgRW50aXR5Q29uc3RydWN0b3I7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGNvbnRleHQubmFtZS50b1N0cmluZygpO1xuICAgICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoXG4gICAgICAgICAgKG0pID0+IG0ucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgICAgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgIGlzSWQ6IGZhbHNlLFxuXHRcdFx0aXNDcmVhdGVkQXQ6IGZhbHNlLFxuXHRcdFx0aXNVcGRhdGVkQXQ6IGZhbHNlLFxuXHRcdFx0aXNDcmVhdGVkQnk6IGZhbHNlLFxuXHRcdFx0aXNVcGRhdGVkQnk6IGZhbHNlLFxuICAgICAgICAgICAgaXNHZW5lcmF0ZWQ6IGZhbHNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgbWV0YWRhdGFBcnJheS5wdXNoKG1ldGFkYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1ldGFkYXRhLmRvY3VtZW50YXRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cblxuXG4vLyAtLS0gQEVudGl0eSBEZWNvcmF0b3IgLS0tXG4vKipcbiAqIE1hcmtzIGEgY2xhc3MgYXMgYW4gZW50aXR5IGFuZCBpbml0aWF0ZXMgbWV0YWRhdGEgZmluYWxpemF0aW9uLlxuICogQHBhcmFtIGVudGl0eU5hbWUgVGhlIG5hbWUgb2YgdGhlIGVudGl0eSAoZGVmYXVsdHMgdG8gY2xhc3MgbmFtZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbnRpdHkoZW50aXR5TmFtZT86IHN0cmluZykge1xuICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlOiBGdW5jdGlvbiwgY29udGV4dDogQ2xhc3NEZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBEZWZlciBleGVjdXRpb24gdG8gZW5zdXJlIGFsbCBmaWVsZCBkZWNvcmF0b3JzIGhhdmUgcnVuXG4gICAgICBkZWZlcigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGN0b3IgPSB2YWx1ZSBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcblxuICAgICAgICAvLyBQcmV2ZW50IGR1cGxpY2F0ZSByZWdpc3RyYXRpb24gKGlkZW1wb3RlbmN5KVxuICAgICAgICBpZiAoY3Rvci4kaW5pdGlhbGl6ZWQpIHJldHVybjtcbiAgICAgICAgY3Rvci4kaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgIGN0b3IuJGVudGl0eV9uYW1lID0gZW50aXR5TmFtZSB8fCBjdG9yLm5hbWU7XG5cbiAgICAgICAgY29uc3QgbWV0YWRhdGFBcnJheSA9IGdldE1ldGFkYXRhQXJyYXkoY3Rvcik7XG4gICAgICAgIGNvbnN0IGlkTWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoKG0pID0+IG0uaXNJZCk7XG5cbiAgICAgICAgaWYgKGlkTWV0YWRhdGEpIHtcbiAgICAgICAgICBjdG9yLiRpZF9uYW1lID0gaWRNZXRhZGF0YS5wcm9wZXJ0eU5hbWU7XG4gICAgICAgICAgLy8gRGV0ZXJtaW5lIElEIGNvbHVtbiBuYW1lOiB1c2UgZXhwbGljaXQgbmFtZSBvciBjb252ZXJ0IHByb3BlcnR5IG5hbWUgdG8gdXBwZXIgY2FzZVxuICAgICAgICAgIGN0b3IuJGlkX2NvbHVtbiA9XG4gICAgICAgICAgICBpZE1ldGFkYXRhLmNvbHVtbk9wdGlvbnM/Lm5hbWUgfHxcbiAgICAgICAgICAgIGlkTWV0YWRhdGEucHJvcGVydHlOYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGdXR1cmU6IExvZ2ljIHRvIG1hcCBhbGwgcHJvcGVydGllcyB0byBjb2x1bW5zL3JlbGF0aW9ucyBnb2VzIGhlcmVcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufVxuXG4vLyAtLS0gQFRhYmxlIERlY29yYXRvciAtLS1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBkYXRhYmFzZSB0YWJsZSBuYW1lIGZvciB0aGUgZW50aXR5LlxuICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgdGFibGUgbmFtZSAoZGVmYXVsdHMgdG8gdXBwZXJjYXNlIGNsYXNzIG5hbWUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gVGFibGUodGFibGVOYW1lPzogc3RyaW5nKSB7XG4gIHJldHVybiBmdW5jdGlvbiA8VCBleHRlbmRzIEVudGl0eUNvbnN0cnVjdG9yPihcbiAgICB2YWx1ZTogVCxcbiAgICBjb250ZXh0OiBDbGFzc0RlY29yYXRvckNvbnRleHRcbiAgKSB7XG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICAodmFsdWUgYXMgRW50aXR5Q29uc3RydWN0b3IpLiR0YWJsZV9uYW1lID1cbiAgICAgICAgdGFibGVOYW1lIHx8IChjb250ZXh0Lm5hbWU/LnRvU3RyaW5nKCkgPz8gdmFsdWUubmFtZS50b1VwcGVyQ2FzZSgpKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfTtcbn1cblxuLy8gLS0tIEV4cG9ydGVkIFByb3BlcnR5IERlY29yYXRvcnMgLS0tXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgYSBzdGFuZGFyZCBkYXRhYmFzZSBjb2x1bW4uXG4gKi9cbmV4cG9ydCBjb25zdCBDb2x1bW4gPSAob3B0aW9ucz86IENvbHVtbk9wdGlvbnMpID0+XG4gIGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwiY29sdW1uXCIsIG9wdGlvbnMpO1xuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgdGhlIGVudGl0eSdzIHByaW1hcnkga2V5LlxuICovXG5leHBvcnQgY29uc3QgSWQgPSAoKSA9PiBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcImlkXCIpO1xuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgdGhlIGVudGl0eSdzIGNyZWF0ZWQgYXQgdGltZXN0YW1wLlxuICovXG5leHBvcnQgY29uc3QgQ3JlYXRlZEF0ID0gKCkgPT4gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJjcmVhdGVkQXRcIik7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyB0aGUgZW50aXR5J3MgdXBkYXRlIGF0IHRpbWVzdGFtcC5cbiAqL1xuZXhwb3J0IGNvbnN0IFVwZGF0ZWRBdCA9ICgpID0+IGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwidXBkYXRlZEF0XCIpO1xuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgdGhlIGVudGl0eSdzIGNyZWF0aW9uIGFjdG9yLlxuICovXG5leHBvcnQgY29uc3QgQ3JlYXRlZEJ5ID0gKCkgPT4gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJjcmVhdGVkQnlcIik7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyB0aGUgZW50aXR5J3MgdXBkYXRlIGFjdG9yLlxuICovXG5leHBvcnQgY29uc3QgVXBkYXRlZEJ5ID0gKCkgPT4gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJ1cGRhdGVkQnlcIik7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBhIGdlbmVyYXRlZCB2YWx1ZSAoZS5nLiwgYXV0by1pbmNyZW1lbnQpLlxuICogQHBhcmFtIHN0cmF0ZWd5IFRoZSBnZW5lcmF0aW9uIHN0cmF0ZWd5IChlLmcuLCBcIklERU5USVRZXCIpLiBQYXJhbWV0ZXIgaXMgY3VycmVudGx5IHVudXNlZCBpbiBsb2dpYy5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmVyYXRlZCA9IChzdHJhdGVneTogc3RyaW5nKSA9PlxuICBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcImdlbmVyYXRlZFwiKTtcblxuLyoqXG4gKiBEZWZpbmVzIGEgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT25lVG9NYW55KFxuICB0eXBlRnVuY3Rpb246ICgpID0+IEZ1bmN0aW9uLFxuICBvcHRpb25zOiBPbmVUb01hbnlPcHRpb25zXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSByZXR1cm47XG5cbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGN0b3IgPSAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKFxuICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICBpc0lkOiBmYWxzZSxcblx0XHQgIGlzQ3JlYXRlZEF0OiBmYWxzZSxcblx0XHQgIGlzVXBkYXRlZEF0OiBmYWxzZSxcblx0XHQgIGlzQ3JlYXRlZEJ5OiBmYWxzZSxcblx0XHQgIGlzVXBkYXRlZEJ5OiBmYWxzZSxcbiAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIG1ldGFkYXRhQXJyYXkucHVzaChtZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIG1ldGFkYXRhLm9uZVRvTWFueU9wdGlvbnMgPSB7IHR5cGU6IHR5cGVGdW5jdGlvbigpLCBvcHRpb25zIH07XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIG1hbnktdG8tb25lIHJlbGF0aW9uc2hpcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1hbnlUb09uZShcbiAgdHlwZUZ1bmN0aW9uOiAoKSA9PiBGdW5jdGlvbixcbiAgb3B0aW9uczogTWFueVRvT25lT3B0aW9ucyA9IHt9XG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSByZXR1cm47XG5cbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGN0b3IgPSAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKFxuICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICBpc0lkOiBmYWxzZSxcblx0XHQgIGlzQ3JlYXRlZEF0OiBmYWxzZSxcblx0XHQgIGlzVXBkYXRlZEF0OiBmYWxzZSxcblx0XHQgIGlzQ3JlYXRlZEJ5OiBmYWxzZSxcblx0XHQgIGlzVXBkYXRlZEJ5OiBmYWxzZSxcbiAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIG1ldGFkYXRhQXJyYXkucHVzaChtZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIG1ldGFkYXRhLm1hbnlUb09uZU9wdGlvbnMgPSB7IHR5cGU6IHR5cGVGdW5jdGlvbigpLCBvcHRpb25zIH07XG4gICAgfSk7XG4gIH07XG59Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTZGQSxNQUFNLGNBQ0gsV0FBbUIsaUNBQ2xCLFdBQW1CLCtCQUErQixvQkFBSSxRQUFRO0FBRWxFLFNBQVMsaUJBQWlCLGFBQTJDO0FBQ25FLE1BQUksQ0FBQyxZQUFZLElBQUksV0FBVyxHQUFHO0FBQ2pDLGdCQUFZLElBQUksYUFBYSxDQUFDLENBQUM7QUFBQSxFQUNqQztBQUNBLFNBQU8sWUFBWSxJQUFJLFdBQVc7QUFDcEM7QUFHQSxTQUFTLE1BQU0sSUFBc0I7QUFFbkMsVUFBUSxRQUFRLEVBQUUsS0FBSyxFQUFFO0FBQzNCO0FBR0EsU0FBUyx3QkFDUCxNQUNBLFNBQ0E7QUFDQSxTQUFPLFNBQVUsR0FBUSxTQUFxQztBQUM1RCxRQUFJLFFBQVEsU0FBUyxTQUFTO0FBQzVCLFlBQU0sSUFBSSxNQUFNLElBQUksSUFBSSx1QkFBdUI7QUFBQSxJQUNqRDtBQUVBLFlBQVEsZUFBZSxXQUFZO0FBQ2pDLFlBQU0sT0FBUSxLQUFhO0FBQzNCLFlBQU0sZUFBZSxRQUFRLEtBQUssU0FBUztBQUMzQyxZQUFNLGdCQUFnQixpQkFBaUIsSUFBSTtBQUUzQyxVQUFJLFdBQVcsY0FBYztBQUFBLFFBQzNCLENBQUMsTUFBTSxFQUFFLGlCQUFpQjtBQUFBLE1BQzVCO0FBRUEsVUFBSSxDQUFDLFVBQVU7QUFDYixtQkFBVztBQUFBLFVBQ1Q7QUFBQSxVQUNBLE1BQU07QUFBQSxVQUNaLGFBQWE7QUFB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
|
|
@@ -76,6 +76,22 @@ export declare const Column: (options?: ColumnOptions) => (_: any, context: Clas
|
|
|
76
76
|
* Marks a property as the entity's primary key.
|
|
77
77
|
*/
|
|
78
78
|
export declare const Id: () => (_: any, context: ClassFieldDecoratorContext) => void;
|
|
79
|
+
/**
|
|
80
|
+
* Marks a property as the entity's created at timestamp.
|
|
81
|
+
*/
|
|
82
|
+
export declare const CreatedAt: () => (_: any, context: ClassFieldDecoratorContext) => void;
|
|
83
|
+
/**
|
|
84
|
+
* Marks a property as the entity's update at timestamp.
|
|
85
|
+
*/
|
|
86
|
+
export declare const UpdatedAt: () => (_: any, context: ClassFieldDecoratorContext) => void;
|
|
87
|
+
/**
|
|
88
|
+
* Marks a property as the entity's creation actor.
|
|
89
|
+
*/
|
|
90
|
+
export declare const CreatedBy: () => (_: any, context: ClassFieldDecoratorContext) => void;
|
|
91
|
+
/**
|
|
92
|
+
* Marks a property as the entity's update actor.
|
|
93
|
+
*/
|
|
94
|
+
export declare const UpdatedBy: () => (_: any, context: ClassFieldDecoratorContext) => void;
|
|
79
95
|
/**
|
|
80
96
|
* Marks a property as a generated value (e.g., auto-increment).
|
|
81
97
|
* @param strategy The generation strategy (e.g., "IDENTITY"). Parameter is currently unused in logic.
|
|
@@ -24,11 +24,19 @@ function createPropertyDecorator(kind, options) {
|
|
|
24
24
|
metadata = {
|
|
25
25
|
propertyName,
|
|
26
26
|
isId: false,
|
|
27
|
+
isCreatedAt: false,
|
|
28
|
+
isUpdatedAt: false,
|
|
29
|
+
isCreatedBy: false,
|
|
30
|
+
isUpdatedBy: false,
|
|
27
31
|
isGenerated: false
|
|
28
32
|
};
|
|
29
33
|
metadataArray.push(metadata);
|
|
30
34
|
}
|
|
31
35
|
if (kind === "id") metadata.isId = true;
|
|
36
|
+
if (kind === "createdAt") metadata.isCreatedAt = true;
|
|
37
|
+
if (kind === "updatedAt") metadata.isUpdatedAt = true;
|
|
38
|
+
if (kind === "createdBy") metadata.isCreatedBy = true;
|
|
39
|
+
if (kind === "updatedBy") metadata.isUpdatedBy = true;
|
|
32
40
|
if (kind === "generated") metadata.isGenerated = true;
|
|
33
41
|
if (kind === "column") metadata.columnOptions = options;
|
|
34
42
|
});
|
|
@@ -53,6 +61,10 @@ function Documentation(description) {
|
|
|
53
61
|
metadata = {
|
|
54
62
|
propertyName,
|
|
55
63
|
isId: false,
|
|
64
|
+
isCreatedAt: false,
|
|
65
|
+
isUpdatedAt: false,
|
|
66
|
+
isCreatedBy: false,
|
|
67
|
+
isUpdatedBy: false,
|
|
56
68
|
isGenerated: false
|
|
57
69
|
};
|
|
58
70
|
metadataArray.push(metadata);
|
|
@@ -90,6 +102,10 @@ function Table(tableName) {
|
|
|
90
102
|
}
|
|
91
103
|
const Column = (options) => createPropertyDecorator("column", options);
|
|
92
104
|
const Id = () => createPropertyDecorator("id");
|
|
105
|
+
const CreatedAt = () => createPropertyDecorator("createdAt");
|
|
106
|
+
const UpdatedAt = () => createPropertyDecorator("updatedAt");
|
|
107
|
+
const CreatedBy = () => createPropertyDecorator("createdBy");
|
|
108
|
+
const UpdatedBy = () => createPropertyDecorator("updatedBy");
|
|
93
109
|
const Generated = (strategy) => createPropertyDecorator("generated");
|
|
94
110
|
function OneToMany(typeFunction, options) {
|
|
95
111
|
return function(_, context) {
|
|
@@ -105,6 +121,10 @@ function OneToMany(typeFunction, options) {
|
|
|
105
121
|
metadata = {
|
|
106
122
|
propertyName,
|
|
107
123
|
isId: false,
|
|
124
|
+
isCreatedAt: false,
|
|
125
|
+
isUpdatedAt: false,
|
|
126
|
+
isCreatedBy: false,
|
|
127
|
+
isUpdatedBy: false,
|
|
108
128
|
isGenerated: false
|
|
109
129
|
};
|
|
110
130
|
metadataArray.push(metadata);
|
|
@@ -127,6 +147,10 @@ function ManyToOne(typeFunction, options = {}) {
|
|
|
127
147
|
metadata = {
|
|
128
148
|
propertyName,
|
|
129
149
|
isId: false,
|
|
150
|
+
isCreatedAt: false,
|
|
151
|
+
isUpdatedAt: false,
|
|
152
|
+
isCreatedBy: false,
|
|
153
|
+
isUpdatedBy: false,
|
|
130
154
|
isGenerated: false
|
|
131
155
|
};
|
|
132
156
|
metadataArray.push(metadata);
|
|
@@ -137,12 +161,16 @@ function ManyToOne(typeFunction, options = {}) {
|
|
|
137
161
|
}
|
|
138
162
|
export {
|
|
139
163
|
Column,
|
|
164
|
+
CreatedAt,
|
|
165
|
+
CreatedBy,
|
|
140
166
|
Documentation,
|
|
141
167
|
Entity,
|
|
142
168
|
Generated,
|
|
143
169
|
Id,
|
|
144
170
|
ManyToOne,
|
|
145
171
|
OneToMany,
|
|
146
|
-
Table
|
|
172
|
+
Table,
|
|
173
|
+
UpdatedAt,
|
|
174
|
+
UpdatedBy
|
|
147
175
|
};
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2RlY29yYXRvcnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogKiBFQ01BU2NyaXB0IDIwMjUtY29tcGxpYW50IE9STSBkZWNvcmF0b3IgaW1wbGVtZW50YXRpb25cbiAqIENvbXBhdGlibGUgd2l0aCBHcmFhbEpTIHJ1bnRpbWUuXG4gKiAqIEZlYXR1cmVzOlxuICogLSBVc2VzIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgZm9yIHN0YWJsZSBkZWNvcmF0b3IgdGltaW5nXG4gKiAtIFN0b3JlcyBtZXRhZGF0YSBpbiBhIGdsb2JhbCBXZWFrTWFwIGNhY2hlXG4gKiAtIEZpbmFsaXplcyBlbnRpdHkgbWV0YWRhdGEgb25jZSBwZXIgY2xhc3NcbiAqIC0gRGVmZXJzIGZpbmFsaXphdGlvbiB2aWEgbWljcm90YXNrIChQcm9taXNlLnJlc29sdmUoKS50aGVuKVxuICovXG5cbi8vIC0tLSBEZWNvcmF0b3IgQ29udGV4dCBUeXBlcyAoYmFzZWQgb24gRUNNQVNjcmlwdCBEZWNvcmF0b3JzIHByb3Bvc2FsKSAtLS1cbnR5cGUgQ2xhc3NGaWVsZERlY29yYXRvckNvbnRleHQgPSB7XG4gIGtpbmQ6IFwiZmllbGRcIjtcbiAgbmFtZTogc3RyaW5nIHwgc3ltYm9sO1xuICBzdGF0aWM6IGJvb2xlYW47XG4gIHByaXZhdGU6IGJvb2xlYW47XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbnR5cGUgQ2xhc3NEZWNvcmF0b3JDb250ZXh0ID0ge1xuICBraW5kOiBcImNsYXNzXCI7XG4gIG5hbWU/OiBzdHJpbmcgfCBzeW1ib2w7XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIENvbHVtblR5cGVzID1cbiAgLy8gTnVtZXJpYyB0eXBlc1xuICB8ICdpbnRlZ2VyJyB8ICdsb25nJyB8ICdzaG9ydCcgfCAnYnl0ZScgfCAnZmxvYXQnIHwgJ2RvdWJsZScgfCAnYmlnX2ludGVnZXInIHwgJ2JpZ19kZWNpbWFsJ1xuICAvLyBTdHJpbmcgdHlwZXNcbiAgfCAnc3RyaW5nJyB8ICdjaGFyJyB8ICd0ZXh0JyB8ICduc3RyaW5nJyB8ICdudGV4dCdcbiAgLy8gRGF0ZS9UaW1lIHR5cGVzXG4gIHwgJ2RhdGUnIHwgJ3RpbWUnIHwgJ3RpbWVzdGFtcCcgfCAnY2FsZW5kYXInIHwgJ2NhbGVuZGFyX2RhdGUnIHwgJ2luc3RhbnQnXG4gIC8vIEJvb2xlYW4gdHlwZXNcbiAgfCAnYm9vbGVhbicgfCAndHJ1ZV9mYWxzZScgfCAneWVzX25vJyB8ICdudW1lcmljX2Jvb2xlYW4nIFxuICAvLyBCaW5hcnkgdHlwZXNcbiAgfCAnYmluYXJ5JyB8ICdibG9iJyB8ICdjbG9iJyB8ICdtYXRlcmlhbGl6ZWRfYmxvYicgfCAnbWF0ZXJpYWxpemVkX2Nsb2InXG4gIC8vIE90aGVyIHR5cGVzXG4gIHwgJ3NlcmlhbGl6YWJsZScgfCAnYW55JyB8ICdvYmplY3QnIHwgJ3V1aWQtY2hhcicgfCAndXVpZC1iaW5hcnknIHwgJ2pzb24nIHwgJ2pzb25iJyB8ICd4bWwnO1xuXG4vLyAtLS0gTWV0YWRhdGEgTW9kZWxzIC0tLVxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5PcHRpb25zIHtcbiAgbmFtZT86IHN0cmluZztcbiAgdHlwZT86IENvbHVtblR5cGVzIHwgKHN0cmluZyAmIHt9KTtcbiAgbGVuZ3RoPzogbnVtYmVyO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICBzY2FsZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbmVUb01hbnlPcHRpb25zIHtcbiAgdGFibGU/OiBzdHJpbmc7XG4gIGpvaW5Db2x1bW46IHN0cmluZztcbiAgY2FzY2FkZT86IFwiYWxsXCIgfCBcIm5vbmVcIiB8IFwicGVyc2lzdFwiIHwgXCJtZXJnZVwiIHwgXCJyZW1vdmVcIjtcbiAgaW52ZXJzZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbiAgam9pbkNvbHVtbk5vdE51bGw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hbnlUb09uZU9wdGlvbnMge1xuICBqb2luQ29sdW1uPzogc3RyaW5nO1xuICBjYXNjYWRlPzogXCJhbGxcIiB8IFwibm9uZVwiIHwgXCJwZXJzaXN0XCIgfCBcIm1lcmdlXCIgfCBcInJlbW92ZVwiO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbn1cblxuaW50ZXJmYWNlIFByb3BlcnR5TWV0YWRhdGEge1xuICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcbiAgaXNJZDogYm9vbGVhbjtcbiAgaXNHZW5lcmF0ZWQ6IGJvb2xlYW47XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIGNvbHVtbk9wdGlvbnM/OiBDb2x1bW5PcHRpb25zO1xuICBvbmVUb01hbnlPcHRpb25zPzogeyB0eXBlOiBGdW5jdGlvbjsgb3B0aW9uczogT25lVG9NYW55T3B0aW9ucyB9O1xuICBtYW55VG9PbmVPcHRpb25zPzogeyB0eXBlOiBGdW5jdGlvbjsgb3B0aW9uczogTWFueVRvT25lT3B0aW9ucyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUNvbnN0cnVjdG9yIGV4dGVuZHMgRnVuY3Rpb24ge1xuICBuZXcoLi4uYXJnczogYW55W10pOiBhbnk7XG4gICRlbnRpdHlfbmFtZTogc3RyaW5nO1xuICAkdGFibGVfbmFtZTogc3RyaW5nO1xuICAkaWRfbmFtZTogc3RyaW5nO1xuICAkaWRfY29sdW1uOiBzdHJpbmc7XG4gICRpbml0aWFsaXplZD86IGJvb2xlYW47XG4gICRkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xufVxuXG4vLyAtLS0gR2xvYmFsIE1ldGFkYXRhIENhY2hlIC0tLVxuY29uc3QgZ2xvYmFsQ2FjaGU6IFdlYWtNYXA8RnVuY3Rpb24sIFByb3BlcnR5TWV0YWRhdGFbXT4gPVxuICAoZ2xvYmFsVGhpcyBhcyBhbnkpLl9fZGVjb3JhdG9yX21ldGFkYXRhX2NhY2hlX18gfHxcbiAgKChnbG9iYWxUaGlzIGFzIGFueSkuX19kZWNvcmF0b3JfbWV0YWRhdGFfY2FjaGVfXyA9IG5ldyBXZWFrTWFwKCkpO1xuXG5mdW5jdGlvbiBnZXRNZXRhZGF0YUFycmF5KGNvbnN0cnVjdG9yOiBGdW5jdGlvbik6IFByb3BlcnR5TWV0YWRhdGFbXSB7XG4gIGlmICghZ2xvYmFsQ2FjaGUuaGFzKGNvbnN0cnVjdG9yKSkge1xuICAgIGdsb2JhbENhY2hlLnNldChjb25zdHJ1Y3RvciwgW10pO1xuICB9XG4gIHJldHVybiBnbG9iYWxDYWNoZS5nZXQoY29uc3RydWN0b3IpITtcbn1cblxuLy8gLS0tIERlZmVyIEhlbHBlciAoR3JhYWxKUy1zYWZlIG1pY3JvdGFzaykgLS0tXG5mdW5jdGlvbiBkZWZlcihmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAvLyBVc2VzIFByb21pc2UgbWljcm90YXNrIHF1ZXVlIGZvciBkZWZlcnJlZCBleGVjdXRpb25cbiAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmbik7XG59XG5cbi8vIC0tLSBDb3JlIFByb3BlcnR5IERlY29yYXRvciBGYWN0b3J5IC0tLVxuZnVuY3Rpb24gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXG4gIGtpbmQ6IFwiY29sdW1uXCIgfCBcImlkXCIgfCBcImdlbmVyYXRlZFwiLFxuICBvcHRpb25zPzogQ29sdW1uT3B0aW9uc1xuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoXzogYW55LCBjb250ZXh0OiBDbGFzc0ZpZWxkRGVjb3JhdG9yQ29udGV4dCkge1xuICAgIGlmIChjb250ZXh0LmtpbmQgIT09IFwiZmllbGRcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBAJHtraW5kfSBtdXN0IGFwcGx5IHRvIGZpZWxkc2ApO1xuICAgIH1cblxuICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY3RvciA9ICh0aGlzIGFzIGFueSkuY29uc3RydWN0b3IgYXMgRW50aXR5Q29uc3RydWN0b3I7XG4gICAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBjb250ZXh0Lm5hbWUudG9TdHJpbmcoKTtcbiAgICAgIGNvbnN0IG1ldGFkYXRhQXJyYXkgPSBnZXRNZXRhZGF0YUFycmF5KGN0b3IpO1xuXG4gICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoXG4gICAgICAgIChtKSA9PiBtLnByb3BlcnR5TmFtZSA9PT0gcHJvcGVydHlOYW1lXG4gICAgICApO1xuXG4gICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgIG1ldGFkYXRhID0ge1xuICAgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlOYW1lLFxuICAgICAgICAgIGlzSWQ6IGZhbHNlLFxuICAgICAgICAgIGlzR2VuZXJhdGVkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgbWV0YWRhdGFBcnJheS5wdXNoKG1ldGFkYXRhKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGtpbmQgPT09IFwiaWRcIikgbWV0YWRhdGEuaXNJZCA9IHRydWU7XG4gICAgICBpZiAoa2luZCA9PT0gXCJnZW5lcmF0ZWRcIikgbWV0YWRhdGEuaXNHZW5lcmF0ZWQgPSB0cnVlO1xuICAgICAgaWYgKGtpbmQgPT09IFwiY29sdW1uXCIpIG1ldGFkYXRhLmNvbHVtbk9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH0pO1xuICB9O1xufVxuXG4vLyAtLS0gQERvY3VtZW50YXRpb24gRGVjb3JhdG9yIChEdWFsLVB1cnBvc2UpIC0tLVxuLyoqXG4gKiBBZGRzIGRvY3VtZW50YXRpb24gbWV0YWRhdGEgdG8gYSBjbGFzcyBvciBhIGZpZWxkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRG9jdW1lbnRhdGlvbihkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoXG4gICAgdmFsdWU6IEZ1bmN0aW9uIHwgYW55LFxuICAgIGNvbnRleHQ6IENsYXNzRGVjb3JhdG9yQ29udGV4dCB8IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0XG4gICkge1xuICAgIGlmIChjb250ZXh0LmtpbmQgPT09IFwiY2xhc3NcIikge1xuICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICAgICh2YWx1ZSBhcyBFbnRpdHlDb25zdHJ1Y3RvcikuJGRvY3VtZW50YXRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSBpZiAoY29udGV4dC5raW5kID09PSBcImZpZWxkXCIpIHtcbiAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBjdG9yID0gKHRoaXMgYXMgYW55KS5jb25zdHJ1Y3RvciBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcbiAgICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhQXJyYXkgPSBnZXRNZXRhZGF0YUFycmF5KGN0b3IpO1xuXG4gICAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZChcbiAgICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlOYW1lLFxuICAgICAgICAgICAgaXNJZDogZmFsc2UsXG4gICAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBtZXRhZGF0YUFycmF5LnB1c2gobWV0YWRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgbWV0YWRhdGEuZG9jdW1lbnRhdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuXG5cbi8vIC0tLSBARW50aXR5IERlY29yYXRvciAtLS1cbi8qKlxuICogTWFya3MgYSBjbGFzcyBhcyBhbiBlbnRpdHkgYW5kIGluaXRpYXRlcyBtZXRhZGF0YSBmaW5hbGl6YXRpb24uXG4gKiBAcGFyYW0gZW50aXR5TmFtZSBUaGUgbmFtZSBvZiB0aGUgZW50aXR5IChkZWZhdWx0cyB0byBjbGFzcyBuYW1lKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEVudGl0eShlbnRpdHlOYW1lPzogc3RyaW5nKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWU6IEZ1bmN0aW9uLCBjb250ZXh0OiBDbGFzc0RlY29yYXRvckNvbnRleHQpIHtcbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIERlZmVyIGV4ZWN1dGlvbiB0byBlbnN1cmUgYWxsIGZpZWxkIGRlY29yYXRvcnMgaGF2ZSBydW5cbiAgICAgIGRlZmVyKCgpID0+IHtcbiAgICAgICAgY29uc3QgY3RvciA9IHZhbHVlIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuXG4gICAgICAgIC8vIFByZXZlbnQgZHVwbGljYXRlIHJlZ2lzdHJhdGlvbiAoaWRlbXBvdGVuY3kpXG4gICAgICAgIGlmIChjdG9yLiRpbml0aWFsaXplZCkgcmV0dXJuO1xuICAgICAgICBjdG9yLiRpbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICAgICAgY3Rvci4kZW50aXR5X25hbWUgPSBlbnRpdHlOYW1lIHx8IGN0b3IubmFtZTtcblxuICAgICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcbiAgICAgICAgY29uc3QgaWRNZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZCgobSkgPT4gbS5pc0lkKTtcblxuICAgICAgICBpZiAoaWRNZXRhZGF0YSkge1xuICAgICAgICAgIGN0b3IuJGlkX25hbWUgPSBpZE1ldGFkYXRhLnByb3BlcnR5TmFtZTtcbiAgICAgICAgICAvLyBEZXRlcm1pbmUgSUQgY29sdW1uIG5hbWU6IHVzZSBleHBsaWNpdCBuYW1lIG9yIGNvbnZlcnQgcHJvcGVydHkgbmFtZSB0byB1cHBlciBjYXNlXG4gICAgICAgICAgY3Rvci4kaWRfY29sdW1uID1cbiAgICAgICAgICAgIGlkTWV0YWRhdGEuY29sdW1uT3B0aW9ucz8ubmFtZSB8fFxuICAgICAgICAgICAgaWRNZXRhZGF0YS5wcm9wZXJ0eU5hbWUudG9VcHBlckNhc2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZ1dHVyZTogTG9naWMgdG8gbWFwIGFsbCBwcm9wZXJ0aWVzIHRvIGNvbHVtbnMvcmVsYXRpb25zIGdvZXMgaGVyZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8vIC0tLSBAVGFibGUgRGVjb3JhdG9yIC0tLVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGRhdGFiYXNlIHRhYmxlIG5hbWUgZm9yIHRoZSBlbnRpdHkuXG4gKiBAcGFyYW0gdGFibGVOYW1lIFRoZSB0YWJsZSBuYW1lIChkZWZhdWx0cyB0byB1cHBlcmNhc2UgY2xhc3MgbmFtZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBUYWJsZSh0YWJsZU5hbWU/OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxUIGV4dGVuZHMgRW50aXR5Q29uc3RydWN0b3I+KFxuICAgIHZhbHVlOiBULFxuICAgIGNvbnRleHQ6IENsYXNzRGVjb3JhdG9yQ29udGV4dFxuICApIHtcbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICh2YWx1ZSBhcyBFbnRpdHlDb25zdHJ1Y3RvcikuJHRhYmxlX25hbWUgPVxuICAgICAgICB0YWJsZU5hbWUgfHwgKGNvbnRleHQubmFtZT8udG9TdHJpbmcoKSA/PyB2YWx1ZS5uYW1lLnRvVXBwZXJDYXNlKCkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG4vLyAtLS0gRXhwb3J0ZWQgUHJvcGVydHkgRGVjb3JhdG9ycyAtLS1cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBhIHN0YW5kYXJkIGRhdGFiYXNlIGNvbHVtbi5cbiAqL1xuZXhwb3J0IGNvbnN0IENvbHVtbiA9IChvcHRpb25zPzogQ29sdW1uT3B0aW9ucykgPT5cbiAgY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJjb2x1bW5cIiwgb3B0aW9ucyk7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyB0aGUgZW50aXR5J3MgcHJpbWFyeSBrZXkuXG4gKi9cbmV4cG9ydCBjb25zdCBJZCA9ICgpID0+IGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwiaWRcIik7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBhIGdlbmVyYXRlZCB2YWx1ZSAoZS5nLiwgYXV0by1pbmNyZW1lbnQpLlxuICogQHBhcmFtIHN0cmF0ZWd5IFRoZSBnZW5lcmF0aW9uIHN0cmF0ZWd5IChlLmcuLCBcIklERU5USVRZXCIpLiBQYXJhbWV0ZXIgaXMgY3VycmVudGx5IHVudXNlZCBpbiBsb2dpYy5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmVyYXRlZCA9IChzdHJhdGVneTogc3RyaW5nKSA9PlxuICBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcImdlbmVyYXRlZFwiKTtcblxuLyoqXG4gKiBEZWZpbmVzIGEgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT25lVG9NYW55KFxuICB0eXBlRnVuY3Rpb246ICgpID0+IEZ1bmN0aW9uLFxuICBvcHRpb25zOiBPbmVUb01hbnlPcHRpb25zXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSByZXR1cm47XG5cbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGN0b3IgPSAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKFxuICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICBpc0lkOiBmYWxzZSxcbiAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIG1ldGFkYXRhQXJyYXkucHVzaChtZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIG1ldGFkYXRhLm9uZVRvTWFueU9wdGlvbnMgPSB7IHR5cGU6IHR5cGVGdW5jdGlvbigpLCBvcHRpb25zIH07XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIG1hbnktdG8tb25lIHJlbGF0aW9uc2hpcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1hbnlUb09uZShcbiAgdHlwZUZ1bmN0aW9uOiAoKSA9PiBGdW5jdGlvbixcbiAgb3B0aW9uczogTWFueVRvT25lT3B0aW9ucyA9IHt9XG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSByZXR1cm47XG5cbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGN0b3IgPSAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKFxuICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICBpc0lkOiBmYWxzZSxcbiAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIG1ldGFkYXRhQXJyYXkucHVzaChtZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIG1ldGFkYXRhLm1hbnlUb09uZU9wdGlvbnMgPSB7IHR5cGU6IHR5cGVGdW5jdGlvbigpLCBvcHRpb25zIH07XG4gICAgfSk7XG4gIH07XG59Il0sCiAgIm1hcHBpbmdzIjogIkFBeUZBLE1BQU0sY0FDSCxXQUFtQixpQ0FDbEIsV0FBbUIsK0JBQStCLG9CQUFJLFFBQVE7QUFFbEUsU0FBUyxpQkFBaUIsYUFBMkM7QUFDbkUsTUFBSSxDQUFDLFlBQVksSUFBSSxXQUFXLEdBQUc7QUFDakMsZ0JBQVksSUFBSSxhQUFhLENBQUMsQ0FBQztBQUFBLEVBQ2pDO0FBQ0EsU0FBTyxZQUFZLElBQUksV0FBVztBQUNwQztBQUdBLFNBQVMsTUFBTSxJQUFzQjtBQUVuQyxVQUFRLFFBQVEsRUFBRSxLQUFLLEVBQUU7QUFDM0I7QUFHQSxTQUFTLHdCQUNQLE1BQ0EsU0FDQTtBQUNBLFNBQU8sU0FBVSxHQUFRLFNBQXFDO0FBQzVELFFBQUksUUFB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
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2RlY29yYXRvcnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogKiBFQ01BU2NyaXB0IDIwMjUtY29tcGxpYW50IE9STSBkZWNvcmF0b3IgaW1wbGVtZW50YXRpb25cbiAqIENvbXBhdGlibGUgd2l0aCBHcmFhbEpTIHJ1bnRpbWUuXG4gKiAqIEZlYXR1cmVzOlxuICogLSBVc2VzIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgZm9yIHN0YWJsZSBkZWNvcmF0b3IgdGltaW5nXG4gKiAtIFN0b3JlcyBtZXRhZGF0YSBpbiBhIGdsb2JhbCBXZWFrTWFwIGNhY2hlXG4gKiAtIEZpbmFsaXplcyBlbnRpdHkgbWV0YWRhdGEgb25jZSBwZXIgY2xhc3NcbiAqIC0gRGVmZXJzIGZpbmFsaXphdGlvbiB2aWEgbWljcm90YXNrIChQcm9taXNlLnJlc29sdmUoKS50aGVuKVxuICovXG5cbi8vIC0tLSBEZWNvcmF0b3IgQ29udGV4dCBUeXBlcyAoYmFzZWQgb24gRUNNQVNjcmlwdCBEZWNvcmF0b3JzIHByb3Bvc2FsKSAtLS1cbnR5cGUgQ2xhc3NGaWVsZERlY29yYXRvckNvbnRleHQgPSB7XG4gIGtpbmQ6IFwiZmllbGRcIjtcbiAgbmFtZTogc3RyaW5nIHwgc3ltYm9sO1xuICBzdGF0aWM6IGJvb2xlYW47XG4gIHByaXZhdGU6IGJvb2xlYW47XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbnR5cGUgQ2xhc3NEZWNvcmF0b3JDb250ZXh0ID0ge1xuICBraW5kOiBcImNsYXNzXCI7XG4gIG5hbWU/OiBzdHJpbmcgfCBzeW1ib2w7XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIENvbHVtblR5cGVzID1cbiAgLy8gTnVtZXJpYyB0eXBlc1xuICB8ICdpbnRlZ2VyJyB8ICdsb25nJyB8ICdzaG9ydCcgfCAnYnl0ZScgfCAnZmxvYXQnIHwgJ2RvdWJsZScgfCAnYmlnX2ludGVnZXInIHwgJ2JpZ19kZWNpbWFsJ1xuICAvLyBTdHJpbmcgdHlwZXNcbiAgfCAnc3RyaW5nJyB8ICdjaGFyJyB8ICd0ZXh0JyB8ICduc3RyaW5nJyB8ICdudGV4dCdcbiAgLy8gRGF0ZS9UaW1lIHR5cGVzXG4gIHwgJ2RhdGUnIHwgJ3RpbWUnIHwgJ3RpbWVzdGFtcCcgfCAnY2FsZW5kYXInIHwgJ2NhbGVuZGFyX2RhdGUnIHwgJ2luc3RhbnQnXG4gIC8vIEJvb2xlYW4gdHlwZXNcbiAgfCAnYm9vbGVhbicgfCAndHJ1ZV9mYWxzZScgfCAneWVzX25vJyB8ICdudW1lcmljX2Jvb2xlYW4nIFxuICAvLyBCaW5hcnkgdHlwZXNcbiAgfCAnYmluYXJ5JyB8ICdibG9iJyB8ICdjbG9iJyB8ICdtYXRlcmlhbGl6ZWRfYmxvYicgfCAnbWF0ZXJpYWxpemVkX2Nsb2InXG4gIC8vIE90aGVyIHR5cGVzXG4gIHwgJ3NlcmlhbGl6YWJsZScgfCAnYW55JyB8ICdvYmplY3QnIHwgJ3V1aWQtY2hhcicgfCAndXVpZC1iaW5hcnknIHwgJ2pzb24nIHwgJ2pzb25iJyB8ICd4bWwnO1xuXG4vLyAtLS0gTWV0YWRhdGEgTW9kZWxzIC0tLVxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5PcHRpb25zIHtcbiAgbmFtZT86IHN0cmluZztcbiAgdHlwZT86IENvbHVtblR5cGVzIHwgKHN0cmluZyAmIHt9KTtcbiAgbGVuZ3RoPzogbnVtYmVyO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICBzY2FsZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbmVUb01hbnlPcHRpb25zIHtcbiAgdGFibGU/OiBzdHJpbmc7XG4gIGpvaW5Db2x1bW46IHN0cmluZztcbiAgY2FzY2FkZT86IFwiYWxsXCIgfCBcIm5vbmVcIiB8IFwicGVyc2lzdFwiIHwgXCJtZXJnZVwiIHwgXCJyZW1vdmVcIjtcbiAgaW52ZXJzZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbiAgam9pbkNvbHVtbk5vdE51bGw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hbnlUb09uZU9wdGlvbnMge1xuICBqb2luQ29sdW1uPzogc3RyaW5nO1xuICBjYXNjYWRlPzogXCJhbGxcIiB8IFwibm9uZVwiIHwgXCJwZXJzaXN0XCIgfCBcIm1lcmdlXCIgfCBcInJlbW92ZVwiO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbn1cblxuaW50ZXJmYWNlIFByb3BlcnR5TWV0YWRhdGEge1xuICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcbiAgaXNJZDogYm9vbGVhbjtcbiAgaXNDcmVhdGVkQXQ6IGJvb2xlYW47XG4gIGlzVXBkYXRlZEF0OiBib29sZWFuO1xuICBpc0NyZWF0ZWRCeTogYm9vbGVhbjtcbiAgaXNVcGRhdGVkQnk6IGJvb2xlYW47XG4gIGlzR2VuZXJhdGVkOiBib29sZWFuO1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xuICBjb2x1bW5PcHRpb25zPzogQ29sdW1uT3B0aW9ucztcbiAgb25lVG9NYW55T3B0aW9ucz86IHsgdHlwZTogRnVuY3Rpb247IG9wdGlvbnM6IE9uZVRvTWFueU9wdGlvbnMgfTtcbiAgbWFueVRvT25lT3B0aW9ucz86IHsgdHlwZTogRnVuY3Rpb247IG9wdGlvbnM6IE1hbnlUb09uZU9wdGlvbnMgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlDb25zdHJ1Y3RvciBleHRlbmRzIEZ1bmN0aW9uIHtcbiAgbmV3KC4uLmFyZ3M6IGFueVtdKTogYW55O1xuICAkZW50aXR5X25hbWU6IHN0cmluZztcbiAgJHRhYmxlX25hbWU6IHN0cmluZztcbiAgJGlkX25hbWU6IHN0cmluZztcbiAgJGlkX2NvbHVtbjogc3RyaW5nO1xuICAkaW5pdGlhbGl6ZWQ/OiBib29sZWFuO1xuICAkZG9jdW1lbnRhdGlvbj86IHN0cmluZztcbn1cblxuLy8gLS0tIEdsb2JhbCBNZXRhZGF0YSBDYWNoZSAtLS1cbmNvbnN0IGdsb2JhbENhY2hlOiBXZWFrTWFwPEZ1bmN0aW9uLCBQcm9wZXJ0eU1ldGFkYXRhW10+ID1cbiAgKGdsb2JhbFRoaXMgYXMgYW55KS5fX2RlY29yYXRvcl9tZXRhZGF0YV9jYWNoZV9fIHx8XG4gICgoZ2xvYmFsVGhpcyBhcyBhbnkpLl9fZGVjb3JhdG9yX21ldGFkYXRhX2NhY2hlX18gPSBuZXcgV2Vha01hcCgpKTtcblxuZnVuY3Rpb24gZ2V0TWV0YWRhdGFBcnJheShjb25zdHJ1Y3RvcjogRnVuY3Rpb24pOiBQcm9wZXJ0eU1ldGFkYXRhW10ge1xuICBpZiAoIWdsb2JhbENhY2hlLmhhcyhjb25zdHJ1Y3RvcikpIHtcbiAgICBnbG9iYWxDYWNoZS5zZXQoY29uc3RydWN0b3IsIFtdKTtcbiAgfVxuICByZXR1cm4gZ2xvYmFsQ2FjaGUuZ2V0KGNvbnN0cnVjdG9yKSE7XG59XG5cbi8vIC0tLSBEZWZlciBIZWxwZXIgKEdyYWFsSlMtc2FmZSBtaWNyb3Rhc2spIC0tLVxuZnVuY3Rpb24gZGVmZXIoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgLy8gVXNlcyBQcm9taXNlIG1pY3JvdGFzayBxdWV1ZSBmb3IgZGVmZXJyZWQgZXhlY3V0aW9uXG4gIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZm4pO1xufVxuXG4vLyAtLS0gQ29yZSBQcm9wZXJ0eSBEZWNvcmF0b3IgRmFjdG9yeSAtLS1cbmZ1bmN0aW9uIGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFxuICBraW5kOiBcImNvbHVtblwiIHwgXCJpZFwiIHwgXCJnZW5lcmF0ZWRcIiB8IFwiY3JlYXRlZEF0XCIgfCBcInVwZGF0ZWRBdFwiIHwgXCJjcmVhdGVkQnlcIiB8IFwidXBkYXRlZEJ5XCIsXG4gIG9wdGlvbnM/OiBDb2x1bW5PcHRpb25zXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEAke2tpbmR9IG11c3QgYXBwbHkgdG8gZmllbGRzYCk7XG4gICAgfVxuXG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjdG9yID0gKHRoaXMgYXMgYW55KS5jb25zdHJ1Y3RvciBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcbiAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGNvbnRleHQubmFtZS50b1N0cmluZygpO1xuICAgICAgY29uc3QgbWV0YWRhdGFBcnJheSA9IGdldE1ldGFkYXRhQXJyYXkoY3Rvcik7XG5cbiAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZChcbiAgICAgICAgKG0pID0+IG0ucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcbiAgICAgICk7XG5cbiAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgaXNJZDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRCeTogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRCeTogZmFsc2UsXG4gICAgICAgICAgaXNHZW5lcmF0ZWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBtZXRhZGF0YUFycmF5LnB1c2gobWV0YWRhdGEpO1xuICAgICAgfVxuXG4gICAgICBpZiAoa2luZCA9PT0gXCJpZFwiKSBtZXRhZGF0YS5pc0lkID0gdHJ1ZTtcblx0ICBpZiAoa2luZCA9PT0gXCJjcmVhdGVkQXRcIikgbWV0YWRhdGEuaXNDcmVhdGVkQXQgPSB0cnVlO1xuXHQgIGlmIChraW5kID09PSBcInVwZGF0ZWRBdFwiKSBtZXRhZGF0YS5pc1VwZGF0ZWRBdCA9IHRydWU7XG5cdCAgaWYgKGtpbmQgPT09IFwiY3JlYXRlZEJ5XCIpIG1ldGFkYXRhLmlzQ3JlYXRlZEJ5ID0gdHJ1ZTtcblx0ICBpZiAoa2luZCA9PT0gXCJ1cGRhdGVkQnlcIikgbWV0YWRhdGEuaXNVcGRhdGVkQnkgPSB0cnVlO1xuICAgICAgaWYgKGtpbmQgPT09IFwiZ2VuZXJhdGVkXCIpIG1ldGFkYXRhLmlzR2VuZXJhdGVkID0gdHJ1ZTtcbiAgICAgIGlmIChraW5kID09PSBcImNvbHVtblwiKSBtZXRhZGF0YS5jb2x1bW5PcHRpb25zID0gb3B0aW9ucztcbiAgICB9KTtcbiAgfTtcbn1cblxuLy8gLS0tIEBEb2N1bWVudGF0aW9uIERlY29yYXRvciAoRHVhbC1QdXJwb3NlKSAtLS1cbi8qKlxuICogQWRkcyBkb2N1bWVudGF0aW9uIG1ldGFkYXRhIHRvIGEgY2xhc3Mgb3IgYSBmaWVsZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIERvY3VtZW50YXRpb24oZGVzY3JpcHRpb246IHN0cmluZykge1xuICByZXR1cm4gZnVuY3Rpb24gKFxuICAgIHZhbHVlOiBGdW5jdGlvbiB8IGFueSxcbiAgICBjb250ZXh0OiBDbGFzc0RlY29yYXRvckNvbnRleHQgfCBDbGFzc0ZpZWxkRGVjb3JhdG9yQ29udGV4dFxuICApIHtcbiAgICBpZiAoY29udGV4dC5raW5kID09PSBcImNsYXNzXCIpIHtcbiAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICAodmFsdWUgYXMgRW50aXR5Q29uc3RydWN0b3IpLiRkb2N1bWVudGF0aW9uID0gZGVzY3JpcHRpb247XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKGNvbnRleHQua2luZCA9PT0gXCJmaWVsZFwiKSB7XG4gICAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgY3RvciA9ICh0aGlzIGFzIGFueSkuY29uc3RydWN0b3IgYXMgRW50aXR5Q29uc3RydWN0b3I7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGNvbnRleHQubmFtZS50b1N0cmluZygpO1xuICAgICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoXG4gICAgICAgICAgKG0pID0+IG0ucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgICAgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgIGlzSWQ6IGZhbHNlLFxuXHRcdFx0aXNDcmVhdGVkQXQ6IGZhbHNlLFxuXHRcdFx0aXNVcGRhdGVkQXQ6IGZhbHNlLFxuXHRcdFx0aXNDcmVhdGVkQnk6IGZhbHNlLFxuXHRcdFx0aXNVcGRhdGVkQnk6IGZhbHNlLFxuICAgICAgICAgICAgaXNHZW5lcmF0ZWQ6IGZhbHNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgbWV0YWRhdGFBcnJheS5wdXNoKG1ldGFkYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1ldGFkYXRhLmRvY3VtZW50YXRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cblxuXG4vLyAtLS0gQEVudGl0eSBEZWNvcmF0b3IgLS0tXG4vKipcbiAqIE1hcmtzIGEgY2xhc3MgYXMgYW4gZW50aXR5IGFuZCBpbml0aWF0ZXMgbWV0YWRhdGEgZmluYWxpemF0aW9uLlxuICogQHBhcmFtIGVudGl0eU5hbWUgVGhlIG5hbWUgb2YgdGhlIGVudGl0eSAoZGVmYXVsdHMgdG8gY2xhc3MgbmFtZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbnRpdHkoZW50aXR5TmFtZT86IHN0cmluZykge1xuICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlOiBGdW5jdGlvbiwgY29udGV4dDogQ2xhc3NEZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBEZWZlciBleGVjdXRpb24gdG8gZW5zdXJlIGFsbCBmaWVsZCBkZWNvcmF0b3JzIGhhdmUgcnVuXG4gICAgICBkZWZlcigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGN0b3IgPSB2YWx1ZSBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcblxuICAgICAgICAvLyBQcmV2ZW50IGR1cGxpY2F0ZSByZWdpc3RyYXRpb24gKGlkZW1wb3RlbmN5KVxuICAgICAgICBpZiAoY3Rvci4kaW5pdGlhbGl6ZWQpIHJldHVybjtcbiAgICAgICAgY3Rvci4kaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgIGN0b3IuJGVudGl0eV9uYW1lID0gZW50aXR5TmFtZSB8fCBjdG9yLm5hbWU7XG5cbiAgICAgICAgY29uc3QgbWV0YWRhdGFBcnJheSA9IGdldE1ldGFkYXRhQXJyYXkoY3Rvcik7XG4gICAgICAgIGNvbnN0IGlkTWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoKG0pID0+IG0uaXNJZCk7XG5cbiAgICAgICAgaWYgKGlkTWV0YWRhdGEpIHtcbiAgICAgICAgICBjdG9yLiRpZF9uYW1lID0gaWRNZXRhZGF0YS5wcm9wZXJ0eU5hbWU7XG4gICAgICAgICAgLy8gRGV0ZXJtaW5lIElEIGNvbHVtbiBuYW1lOiB1c2UgZXhwbGljaXQgbmFtZSBvciBjb252ZXJ0IHByb3BlcnR5IG5hbWUgdG8gdXBwZXIgY2FzZVxuICAgICAgICAgIGN0b3IuJGlkX2NvbHVtbiA9XG4gICAgICAgICAgICBpZE1ldGFkYXRhLmNvbHVtbk9wdGlvbnM/Lm5hbWUgfHxcbiAgICAgICAgICAgIGlkTWV0YWRhdGEucHJvcGVydHlOYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGdXR1cmU6IExvZ2ljIHRvIG1hcCBhbGwgcHJvcGVydGllcyB0byBjb2x1bW5zL3JlbGF0aW9ucyBnb2VzIGhlcmVcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufVxuXG4vLyAtLS0gQFRhYmxlIERlY29yYXRvciAtLS1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBkYXRhYmFzZSB0YWJsZSBuYW1lIGZvciB0aGUgZW50aXR5LlxuICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgdGFibGUgbmFtZSAoZGVmYXVsdHMgdG8gdXBwZXJjYXNlIGNsYXNzIG5hbWUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gVGFibGUodGFibGVOYW1lPzogc3RyaW5nKSB7XG4gIHJldHVybiBmdW5jdGlvbiA8VCBleHRlbmRzIEVudGl0eUNvbnN0cnVjdG9yPihcbiAgICB2YWx1ZTogVCxcbiAgICBjb250ZXh0OiBDbGFzc0RlY29yYXRvckNvbnRleHRcbiAgKSB7XG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICAodmFsdWUgYXMgRW50aXR5Q29uc3RydWN0b3IpLiR0YWJsZV9uYW1lID1cbiAgICAgICAgdGFibGVOYW1lIHx8IChjb250ZXh0Lm5hbWU/LnRvU3RyaW5nKCkgPz8gdmFsdWUubmFtZS50b1VwcGVyQ2FzZSgpKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfTtcbn1cblxuLy8gLS0tIEV4cG9ydGVkIFByb3BlcnR5IERlY29yYXRvcnMgLS0tXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgYSBzdGFuZGFyZCBkYXRhYmFzZSBjb2x1bW4uXG4gKi9cbmV4cG9ydCBjb25zdCBDb2x1bW4gPSAob3B0aW9ucz86IENvbHVtbk9wdGlvbnMpID0+XG4gIGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwiY29sdW1uXCIsIG9wdGlvbnMpO1xuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgdGhlIGVudGl0eSdzIHByaW1hcnkga2V5LlxuICovXG5leHBvcnQgY29uc3QgSWQgPSAoKSA9PiBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcImlkXCIpO1xuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgdGhlIGVudGl0eSdzIGNyZWF0ZWQgYXQgdGltZXN0YW1wLlxuICovXG5leHBvcnQgY29uc3QgQ3JlYXRlZEF0ID0gKCkgPT4gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJjcmVhdGVkQXRcIik7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyB0aGUgZW50aXR5J3MgdXBkYXRlIGF0IHRpbWVzdGFtcC5cbiAqL1xuZXhwb3J0IGNvbnN0IFVwZGF0ZWRBdCA9ICgpID0+IGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwidXBkYXRlZEF0XCIpO1xuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgdGhlIGVudGl0eSdzIGNyZWF0aW9uIGFjdG9yLlxuICovXG5leHBvcnQgY29uc3QgQ3JlYXRlZEJ5ID0gKCkgPT4gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJjcmVhdGVkQnlcIik7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyB0aGUgZW50aXR5J3MgdXBkYXRlIGFjdG9yLlxuICovXG5leHBvcnQgY29uc3QgVXBkYXRlZEJ5ID0gKCkgPT4gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJ1cGRhdGVkQnlcIik7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBhIGdlbmVyYXRlZCB2YWx1ZSAoZS5nLiwgYXV0by1pbmNyZW1lbnQpLlxuICogQHBhcmFtIHN0cmF0ZWd5IFRoZSBnZW5lcmF0aW9uIHN0cmF0ZWd5IChlLmcuLCBcIklERU5USVRZXCIpLiBQYXJhbWV0ZXIgaXMgY3VycmVudGx5IHVudXNlZCBpbiBsb2dpYy5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmVyYXRlZCA9IChzdHJhdGVneTogc3RyaW5nKSA9PlxuICBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcImdlbmVyYXRlZFwiKTtcblxuLyoqXG4gKiBEZWZpbmVzIGEgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT25lVG9NYW55KFxuICB0eXBlRnVuY3Rpb246ICgpID0+IEZ1bmN0aW9uLFxuICBvcHRpb25zOiBPbmVUb01hbnlPcHRpb25zXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSByZXR1cm47XG5cbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGN0b3IgPSAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKFxuICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICBpc0lkOiBmYWxzZSxcblx0XHQgIGlzQ3JlYXRlZEF0OiBmYWxzZSxcblx0XHQgIGlzVXBkYXRlZEF0OiBmYWxzZSxcblx0XHQgIGlzQ3JlYXRlZEJ5OiBmYWxzZSxcblx0XHQgIGlzVXBkYXRlZEJ5OiBmYWxzZSxcbiAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIG1ldGFkYXRhQXJyYXkucHVzaChtZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIG1ldGFkYXRhLm9uZVRvTWFueU9wdGlvbnMgPSB7IHR5cGU6IHR5cGVGdW5jdGlvbigpLCBvcHRpb25zIH07XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIG1hbnktdG8tb25lIHJlbGF0aW9uc2hpcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1hbnlUb09uZShcbiAgdHlwZUZ1bmN0aW9uOiAoKSA9PiBGdW5jdGlvbixcbiAgb3B0aW9uczogTWFueVRvT25lT3B0aW9ucyA9IHt9XG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSByZXR1cm47XG5cbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGN0b3IgPSAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKFxuICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICBpc0lkOiBmYWxzZSxcblx0XHQgIGlzQ3JlYXRlZEF0OiBmYWxzZSxcblx0XHQgIGlzVXBkYXRlZEF0OiBmYWxzZSxcblx0XHQgIGlzQ3JlYXRlZEJ5OiBmYWxzZSxcblx0XHQgIGlzVXBkYXRlZEJ5OiBmYWxzZSxcbiAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIG1ldGFkYXRhQXJyYXkucHVzaChtZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIG1ldGFkYXRhLm1hbnlUb09uZU9wdGlvbnMgPSB7IHR5cGU6IHR5cGVGdW5jdGlvbigpLCBvcHRpb25zIH07XG4gICAgfSk7XG4gIH07XG59Il0sCiAgIm1hcHBpbmdzIjogIkFBNkZBLE1BQU0sY0FDSCxXQUFtQixpQ0FDbEIsV0FBbUIsK0JBQStCLG9CQUFJLFFBQVE7QUFFbEUsU0FBUyxpQkFBaUIsYUFBMkM7QUFDbkUsTUFBSSxDQUFDLFlBQVksSUFBSSxXQUFXLEdBQUc7QUFDakMsZ0JBQVksSUFBSSxhQUFhLENBQUMsQ0FBQztBQUFBLEVBQ2pDO0FBQ0EsU0FBTyxZQUFZLElBQUksV0FBVztBQUNwQztBQUdBLFNBQVMsTUFBTSxJQUFzQjtBQUVuQyxVQUFRLFFBQVEsRUFBRSxLQUFLLEVBQUU7QUFDM0I7QUFHQSxTQUFTLHdCQUNQLE1BQ0EsU0FDQTtBQUNBLFNBQU8sU0FBVSxHQUFRLFNBQXFDO0FBQzVELFFBQUksUUFBUSxTQUFTLFNBQVM7QUFDNUIsWUFBTSxJQUFJLE1BQU0sSUFBSSxJQUFJLHVCQUF1QjtBQUFBLElBQ2pEO0FBRUEsWUFBUSxlQUFlLFdBQVk7QUFDakMsWUFBTSxPQUFRLEtBQWE7QUFDM0IsWUFBTSxlQUFlLFFBQVEsS0FBSyxTQUFTO0FBQzNDLFlBQU0sZ0JBQWdCLGlCQUFpQixJQUFJO0FBRTNDLFVBQUksV0FBVyxjQUFjO0FBQUEsUUFDM0IsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCO0FBQUEsTUFDNUI7QUFFQSxVQUFJLENBQUMsVUFBVTtBQUNiLG1CQUFXO0FBQUEsVUFDVDtBQUFBLFVBQ0EsTUFBTTtBQUFBLFVBQ1osYUFBYTtBQUFBLFVBQ2IsYUFBYTtBQUFBLFVBQ2IsYUFBYTtBQUFBLFVBQ2IsYUFBYTtBQUFBLFVBQ1AsYUFBYTtBQUFBLFFBQ2Y7QUFDQSxzQkFBYyxLQUFLLFFBQVE7QUFBQSxNQUM3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
|