@aerokit/sdk 12.68.0 → 12.70.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);
@@ -112,13 +128,18 @@ function Entity(entityName) {
112
128
  function Table(tableName) {
113
129
  return function(value, context) {
114
130
  context.addInitializer(function() {
115
- value.$table_name = tableName || (context.name?.toString() ?? value.name.toUpperCase());
131
+ const target = value;
132
+ target.$table_name = tableName || context.name?.toString() || value.name.toUpperCase();
116
133
  });
117
134
  return value;
118
135
  };
119
136
  }
120
137
  const Column = (options) => createPropertyDecorator("column", options);
121
138
  const Id = () => createPropertyDecorator("id");
139
+ const CreatedAt = () => createPropertyDecorator("createdAt");
140
+ const UpdatedAt = () => createPropertyDecorator("updatedAt");
141
+ const CreatedBy = () => createPropertyDecorator("createdBy");
142
+ const UpdatedBy = () => createPropertyDecorator("updatedBy");
122
143
  const Generated = (strategy) => createPropertyDecorator("generated");
123
144
  function OneToMany(typeFunction, options) {
124
145
  return function(_, context) {
@@ -134,6 +155,10 @@ function OneToMany(typeFunction, options) {
134
155
  metadata = {
135
156
  propertyName,
136
157
  isId: false,
158
+ isCreatedAt: false,
159
+ isUpdatedAt: false,
160
+ isCreatedBy: false,
161
+ isUpdatedBy: false,
137
162
  isGenerated: false
138
163
  };
139
164
  metadataArray.push(metadata);
@@ -156,6 +181,10 @@ function ManyToOne(typeFunction, options = {}) {
156
181
  metadata = {
157
182
  propertyName,
158
183
  isId: false,
184
+ isCreatedAt: false,
185
+ isUpdatedAt: false,
186
+ isCreatedBy: false,
187
+ isUpdatedBy: false,
159
188
  isGenerated: false
160
189
  };
161
190
  metadataArray.push(metadata);
@@ -164,4 +193,4 @@ function ManyToOne(typeFunction, options = {}) {
164
193
  });
165
194
  };
166
195
  }
167
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2RlY29yYXRvcnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogKiBFQ01BU2NyaXB0IDIwMjUtY29tcGxpYW50IE9STSBkZWNvcmF0b3IgaW1wbGVtZW50YXRpb25cbiAqIENvbXBhdGlibGUgd2l0aCBHcmFhbEpTIHJ1bnRpbWUuXG4gKiAqIEZlYXR1cmVzOlxuICogLSBVc2VzIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgZm9yIHN0YWJsZSBkZWNvcmF0b3IgdGltaW5nXG4gKiAtIFN0b3JlcyBtZXRhZGF0YSBpbiBhIGdsb2JhbCBXZWFrTWFwIGNhY2hlXG4gKiAtIEZpbmFsaXplcyBlbnRpdHkgbWV0YWRhdGEgb25jZSBwZXIgY2xhc3NcbiAqIC0gRGVmZXJzIGZpbmFsaXphdGlvbiB2aWEgbWljcm90YXNrIChQcm9taXNlLnJlc29sdmUoKS50aGVuKVxuICovXG5cbi8vIC0tLSBEZWNvcmF0b3IgQ29udGV4dCBUeXBlcyAoYmFzZWQgb24gRUNNQVNjcmlwdCBEZWNvcmF0b3JzIHByb3Bvc2FsKSAtLS1cbnR5cGUgQ2xhc3NGaWVsZERlY29yYXRvckNvbnRleHQgPSB7XG4gIGtpbmQ6IFwiZmllbGRcIjtcbiAgbmFtZTogc3RyaW5nIHwgc3ltYm9sO1xuICBzdGF0aWM6IGJvb2xlYW47XG4gIHByaXZhdGU6IGJvb2xlYW47XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbnR5cGUgQ2xhc3NEZWNvcmF0b3JDb250ZXh0ID0ge1xuICBraW5kOiBcImNsYXNzXCI7XG4gIG5hbWU/OiBzdHJpbmcgfCBzeW1ib2w7XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIENvbHVtblR5cGVzID1cbiAgLy8gTnVtZXJpYyB0eXBlc1xuICB8ICdpbnRlZ2VyJyB8ICdsb25nJyB8ICdzaG9ydCcgfCAnYnl0ZScgfCAnZmxvYXQnIHwgJ2RvdWJsZScgfCAnYmlnX2ludGVnZXInIHwgJ2JpZ19kZWNpbWFsJ1xuICAvLyBTdHJpbmcgdHlwZXNcbiAgfCAnc3RyaW5nJyB8ICdjaGFyJyB8ICd0ZXh0JyB8ICduc3RyaW5nJyB8ICdudGV4dCdcbiAgLy8gRGF0ZS9UaW1lIHR5cGVzXG4gIHwgJ2RhdGUnIHwgJ3RpbWUnIHwgJ3RpbWVzdGFtcCcgfCAnY2FsZW5kYXInIHwgJ2NhbGVuZGFyX2RhdGUnIHwgJ2luc3RhbnQnXG4gIC8vIEJvb2xlYW4gdHlwZXNcbiAgfCAnYm9vbGVhbicgfCAndHJ1ZV9mYWxzZScgfCAneWVzX25vJyB8ICdudW1lcmljX2Jvb2xlYW4nIFxuICAvLyBCaW5hcnkgdHlwZXNcbiAgfCAnYmluYXJ5JyB8ICdibG9iJyB8ICdjbG9iJyB8ICdtYXRlcmlhbGl6ZWRfYmxvYicgfCAnbWF0ZXJpYWxpemVkX2Nsb2InXG4gIC8vIE90aGVyIHR5cGVzXG4gIHwgJ3NlcmlhbGl6YWJsZScgfCAnYW55JyB8ICdvYmplY3QnIHwgJ3V1aWQtY2hhcicgfCAndXVpZC1iaW5hcnknIHwgJ2pzb24nIHwgJ2pzb25iJyB8ICd4bWwnO1xuXG4vLyAtLS0gTWV0YWRhdGEgTW9kZWxzIC0tLVxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5PcHRpb25zIHtcbiAgbmFtZT86IHN0cmluZztcbiAgdHlwZT86IENvbHVtblR5cGVzIHwgKHN0cmluZyAmIHt9KTtcbiAgbGVuZ3RoPzogbnVtYmVyO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICBzY2FsZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbmVUb01hbnlPcHRpb25zIHtcbiAgdGFibGU/OiBzdHJpbmc7XG4gIGpvaW5Db2x1bW46IHN0cmluZztcbiAgY2FzY2FkZT86IFwiYWxsXCIgfCBcIm5vbmVcIiB8IFwicGVyc2lzdFwiIHwgXCJtZXJnZVwiIHwgXCJyZW1vdmVcIjtcbiAgaW52ZXJzZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbiAgam9pbkNvbHVtbk5vdE51bGw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hbnlUb09uZU9wdGlvbnMge1xuICBqb2luQ29sdW1uPzogc3RyaW5nO1xuICBjYXNjYWRlPzogXCJhbGxcIiB8IFwibm9uZVwiIHwgXCJwZXJzaXN0XCIgfCBcIm1lcmdlXCIgfCBcInJlbW92ZVwiO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbn1cblxuaW50ZXJmYWNlIFByb3BlcnR5TWV0YWRhdGEge1xuICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcbiAgaXNJZDogYm9vbGVhbjtcbiAgaXNHZW5lcmF0ZWQ6IGJvb2xlYW47XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIGNvbHVtbk9wdGlvbnM/OiBDb2x1bW5PcHRpb25zO1xuICBvbmVUb01hbnlPcHRpb25zPzogeyB0eXBlOiBGdW5jdGlvbjsgb3B0aW9uczogT25lVG9NYW55T3B0aW9ucyB9O1xuICBtYW55VG9PbmVPcHRpb25zPzogeyB0eXBlOiBGdW5jdGlvbjsgb3B0aW9uczogTWFueVRvT25lT3B0aW9ucyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUNvbnN0cnVjdG9yIGV4dGVuZHMgRnVuY3Rpb24ge1xuICBuZXcoLi4uYXJnczogYW55W10pOiBhbnk7XG4gICRlbnRpdHlfbmFtZTogc3RyaW5nO1xuICAkdGFibGVfbmFtZTogc3RyaW5nO1xuICAkaWRfbmFtZTogc3RyaW5nO1xuICAkaWRfY29sdW1uOiBzdHJpbmc7XG4gICRpbml0aWFsaXplZD86IGJvb2xlYW47XG4gICRkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xufVxuXG4vLyAtLS0gR2xvYmFsIE1ldGFkYXRhIENhY2hlIC0tLVxuY29uc3QgZ2xvYmFsQ2FjaGU6IFdlYWtNYXA8RnVuY3Rpb24sIFByb3BlcnR5TWV0YWRhdGFbXT4gPVxuICAoZ2xvYmFsVGhpcyBhcyBhbnkpLl9fZGVjb3JhdG9yX21ldGFkYXRhX2NhY2hlX18gfHxcbiAgKChnbG9iYWxUaGlzIGFzIGFueSkuX19kZWNvcmF0b3JfbWV0YWRhdGFfY2FjaGVfXyA9IG5ldyBXZWFrTWFwKCkpO1xuXG5mdW5jdGlvbiBnZXRNZXRhZGF0YUFycmF5KGNvbnN0cnVjdG9yOiBGdW5jdGlvbik6IFByb3BlcnR5TWV0YWRhdGFbXSB7XG4gIGlmICghZ2xvYmFsQ2FjaGUuaGFzKGNvbnN0cnVjdG9yKSkge1xuICAgIGdsb2JhbENhY2hlLnNldChjb25zdHJ1Y3RvciwgW10pO1xuICB9XG4gIHJldHVybiBnbG9iYWxDYWNoZS5nZXQoY29uc3RydWN0b3IpITtcbn1cblxuLy8gLS0tIERlZmVyIEhlbHBlciAoR3JhYWxKUy1zYWZlIG1pY3JvdGFzaykgLS0tXG5mdW5jdGlvbiBkZWZlcihmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAvLyBVc2VzIFByb21pc2UgbWljcm90YXNrIHF1ZXVlIGZvciBkZWZlcnJlZCBleGVjdXRpb25cbiAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmbik7XG59XG5cbi8vIC0tLSBDb3JlIFByb3BlcnR5IERlY29yYXRvciBGYWN0b3J5IC0tLVxuZnVuY3Rpb24gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXG4gIGtpbmQ6IFwiY29sdW1uXCIgfCBcImlkXCIgfCBcImdlbmVyYXRlZFwiLFxuICBvcHRpb25zPzogQ29sdW1uT3B0aW9uc1xuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoXzogYW55LCBjb250ZXh0OiBDbGFzc0ZpZWxkRGVjb3JhdG9yQ29udGV4dCkge1xuICAgIGlmIChjb250ZXh0LmtpbmQgIT09IFwiZmllbGRcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBAJHtraW5kfSBtdXN0IGFwcGx5IHRvIGZpZWxkc2ApO1xuICAgIH1cblxuICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY3RvciA9ICh0aGlzIGFzIGFueSkuY29uc3RydWN0b3IgYXMgRW50aXR5Q29uc3RydWN0b3I7XG4gICAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBjb250ZXh0Lm5hbWUudG9TdHJpbmcoKTtcbiAgICAgIGNvbnN0IG1ldGFkYXRhQXJyYXkgPSBnZXRNZXRhZGF0YUFycmF5KGN0b3IpO1xuXG4gICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoXG4gICAgICAgIChtKSA9PiBtLnByb3BlcnR5TmFtZSA9PT0gcHJvcGVydHlOYW1lXG4gICAgICApO1xuXG4gICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgIG1ldGFkYXRhID0ge1xuICAgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlOYW1lLFxuICAgICAgICAgIGlzSWQ6IGZhbHNlLFxuICAgICAgICAgIGlzR2VuZXJhdGVkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgbWV0YWRhdGFBcnJheS5wdXNoKG1ldGFkYXRhKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGtpbmQgPT09IFwiaWRcIikgbWV0YWRhdGEuaXNJZCA9IHRydWU7XG4gICAgICBpZiAoa2luZCA9PT0gXCJnZW5lcmF0ZWRcIikgbWV0YWRhdGEuaXNHZW5lcmF0ZWQgPSB0cnVlO1xuICAgICAgaWYgKGtpbmQgPT09IFwiY29sdW1uXCIpIG1ldGFkYXRhLmNvbHVtbk9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH0pO1xuICB9O1xufVxuXG4vLyAtLS0gQERvY3VtZW50YXRpb24gRGVjb3JhdG9yIChEdWFsLVB1cnBvc2UpIC0tLVxuLyoqXG4gKiBBZGRzIGRvY3VtZW50YXRpb24gbWV0YWRhdGEgdG8gYSBjbGFzcyBvciBhIGZpZWxkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRG9jdW1lbnRhdGlvbihkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoXG4gICAgdmFsdWU6IEZ1bmN0aW9uIHwgYW55LFxuICAgIGNvbnRleHQ6IENsYXNzRGVjb3JhdG9yQ29udGV4dCB8IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0XG4gICkge1xuICAgIGlmIChjb250ZXh0LmtpbmQgPT09IFwiY2xhc3NcIikge1xuICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICAgICh2YWx1ZSBhcyBFbnRpdHlDb25zdHJ1Y3RvcikuJGRvY3VtZW50YXRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSBpZiAoY29udGV4dC5raW5kID09PSBcImZpZWxkXCIpIHtcbiAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBjdG9yID0gKHRoaXMgYXMgYW55KS5jb25zdHJ1Y3RvciBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcbiAgICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhQXJyYXkgPSBnZXRNZXRhZGF0YUFycmF5KGN0b3IpO1xuXG4gICAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZChcbiAgICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlOYW1lLFxuICAgICAgICAgICAgaXNJZDogZmFsc2UsXG4gICAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBtZXRhZGF0YUFycmF5LnB1c2gobWV0YWRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgbWV0YWRhdGEuZG9jdW1lbnRhdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuXG5cbi8vIC0tLSBARW50aXR5IERlY29yYXRvciAtLS1cbi8qKlxuICogTWFya3MgYSBjbGFzcyBhcyBhbiBlbnRpdHkgYW5kIGluaXRpYXRlcyBtZXRhZGF0YSBmaW5hbGl6YXRpb24uXG4gKiBAcGFyYW0gZW50aXR5TmFtZSBUaGUgbmFtZSBvZiB0aGUgZW50aXR5IChkZWZhdWx0cyB0byBjbGFzcyBuYW1lKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEVudGl0eShlbnRpdHlOYW1lPzogc3RyaW5nKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWU6IEZ1bmN0aW9uLCBjb250ZXh0OiBDbGFzc0RlY29yYXRvckNvbnRleHQpIHtcbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIERlZmVyIGV4ZWN1dGlvbiB0byBlbnN1cmUgYWxsIGZpZWxkIGRlY29yYXRvcnMgaGF2ZSBydW5cbiAgICAgIGRlZmVyKCgpID0+IHtcbiAgICAgICAgY29uc3QgY3RvciA9IHZhbHVlIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuXG4gICAgICAgIC8vIFByZXZlbnQgZHVwbGljYXRlIHJlZ2lzdHJhdGlvbiAoaWRlbXBvdGVuY3kpXG4gICAgICAgIGlmIChjdG9yLiRpbml0aWFsaXplZCkgcmV0dXJuO1xuICAgICAgICBjdG9yLiRpbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICAgICAgY3Rvci4kZW50aXR5X25hbWUgPSBlbnRpdHlOYW1lIHx8IGN0b3IubmFtZTtcblxuICAgICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcbiAgICAgICAgY29uc3QgaWRNZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZCgobSkgPT4gbS5pc0lkKTtcblxuICAgICAgICBpZiAoaWRNZXRhZGF0YSkge1xuICAgICAgICAgIGN0b3IuJGlkX25hbWUgPSBpZE1ldGFkYXRhLnByb3BlcnR5TmFtZTtcbiAgICAgICAgICAvLyBEZXRlcm1pbmUgSUQgY29sdW1uIG5hbWU6IHVzZSBleHBsaWNpdCBuYW1lIG9yIGNvbnZlcnQgcHJvcGVydHkgbmFtZSB0byB1cHBlciBjYXNlXG4gICAgICAgICAgY3Rvci4kaWRfY29sdW1uID1cbiAgICAgICAgICAgIGlkTWV0YWRhdGEuY29sdW1uT3B0aW9ucz8ubmFtZSB8fFxuICAgICAgICAgICAgaWRNZXRhZGF0YS5wcm9wZXJ0eU5hbWUudG9VcHBlckNhc2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZ1dHVyZTogTG9naWMgdG8gbWFwIGFsbCBwcm9wZXJ0aWVzIHRvIGNvbHVtbnMvcmVsYXRpb25zIGdvZXMgaGVyZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8vIC0tLSBAVGFibGUgRGVjb3JhdG9yIC0tLVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGRhdGFiYXNlIHRhYmxlIG5hbWUgZm9yIHRoZSBlbnRpdHkuXG4gKiBAcGFyYW0gdGFibGVOYW1lIFRoZSB0YWJsZSBuYW1lIChkZWZhdWx0cyB0byB1cHBlcmNhc2UgY2xhc3MgbmFtZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBUYWJsZSh0YWJsZU5hbWU/OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxUIGV4dGVuZHMgRW50aXR5Q29uc3RydWN0b3I+KFxuICAgIHZhbHVlOiBULFxuICAgIGNvbnRleHQ6IENsYXNzRGVjb3JhdG9yQ29udGV4dFxuICApIHtcbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICh2YWx1ZSBhcyBFbnRpdHlDb25zdHJ1Y3RvcikuJHRhYmxlX25hbWUgPVxuICAgICAgICB0YWJsZU5hbWUgfHwgKGNvbnRleHQubmFtZT8udG9TdHJpbmcoKSA/PyB2YWx1ZS5uYW1lLnRvVXBwZXJDYXNlKCkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG4vLyAtLS0gRXhwb3J0ZWQgUHJvcGVydHkgRGVjb3JhdG9ycyAtLS1cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBhIHN0YW5kYXJkIGRhdGFiYXNlIGNvbHVtbi5cbiAqL1xuZXhwb3J0IGNvbnN0IENvbHVtbiA9IChvcHRpb25zPzogQ29sdW1uT3B0aW9ucykgPT5cbiAgY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJjb2x1bW5cIiwgb3B0aW9ucyk7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyB0aGUgZW50aXR5J3MgcHJpbWFyeSBrZXkuXG4gKi9cbmV4cG9ydCBjb25zdCBJZCA9ICgpID0+IGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwiaWRcIik7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBhIGdlbmVyYXRlZCB2YWx1ZSAoZS5nLiwgYXV0by1pbmNyZW1lbnQpLlxuICogQHBhcmFtIHN0cmF0ZWd5IFRoZSBnZW5lcmF0aW9uIHN0cmF0ZWd5IChlLmcuLCBcIklERU5USVRZXCIpLiBQYXJhbWV0ZXIgaXMgY3VycmVudGx5IHVudXNlZCBpbiBsb2dpYy5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmVyYXRlZCA9IChzdHJhdGVneTogc3RyaW5nKSA9PlxuICBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcImdlbmVyYXRlZFwiKTtcblxuLyoqXG4gKiBEZWZpbmVzIGEgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT25lVG9NYW55KFxuICB0eXBlRnVuY3Rpb246ICgpID0+IEZ1bmN0aW9uLFxuICBvcHRpb25zOiBPbmVUb01hbnlPcHRpb25zXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSByZXR1cm47XG5cbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGN0b3IgPSAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKFxuICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICBpc0lkOiBmYWxzZSxcbiAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIG1ldGFkYXRhQXJyYXkucHVzaChtZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIG1ldGFkYXRhLm9uZVRvTWFueU9wdGlvbnMgPSB7IHR5cGU6IHR5cGVGdW5jdGlvbigpLCBvcHRpb25zIH07XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIG1hbnktdG8tb25lIHJlbGF0aW9uc2hpcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1hbnlUb09uZShcbiAgdHlwZUZ1bmN0aW9uOiAoKSA9PiBGdW5jdGlvbixcbiAgb3B0aW9uczogTWFueVRvT25lT3B0aW9ucyA9IHt9XG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSByZXR1cm47XG5cbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGN0b3IgPSAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKFxuICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICBpc0lkOiBmYWxzZSxcbiAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIG1ldGFkYXRhQXJyYXkucHVzaChtZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIG1ldGFkYXRhLm1hbnlUb09uZU9wdGlvbnMgPSB7IHR5cGU6IHR5cGVGdW5jdGlvbigpLCBvcHRpb25zIH07XG4gICAgfSk7XG4gIH07XG59Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF5RkEsTUFBTSxjQUNILFdBQW1CLGlDQUNsQixXQUFtQiwrQkFBK0Isb0JBQUksUUFBUTtBQUVsRSxTQUFTLGlCQUFpQixhQUEyQztBQUNuRSxNQUFJLENBQUMsWUFBWSxJQUFJLFdBQVcsR0FBRztBQUNqQyxnQkFBWSxJQUFJLGFBQWEsQ0FBQyxDQUFDO0FBQUEsRUFDakM7QUFDQSxTQUFPLFlBQVksSUFBSSxXQUFXO0FBQ3BDO0FBR0EsU0FBUyxNQUFNLElBQXNCO0FBRW5DLFVBQVEsUUFBUSxFQUFFLEtBQUss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
196
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2RlY29yYXRvcnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogKiBFQ01BU2NyaXB0IDIwMjUtY29tcGxpYW50IE9STSBkZWNvcmF0b3IgaW1wbGVtZW50YXRpb25cbiAqIENvbXBhdGlibGUgd2l0aCBHcmFhbEpTIHJ1bnRpbWUuXG4gKiAqIEZlYXR1cmVzOlxuICogLSBVc2VzIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgZm9yIHN0YWJsZSBkZWNvcmF0b3IgdGltaW5nXG4gKiAtIFN0b3JlcyBtZXRhZGF0YSBpbiBhIGdsb2JhbCBXZWFrTWFwIGNhY2hlXG4gKiAtIEZpbmFsaXplcyBlbnRpdHkgbWV0YWRhdGEgb25jZSBwZXIgY2xhc3NcbiAqIC0gRGVmZXJzIGZpbmFsaXphdGlvbiB2aWEgbWljcm90YXNrIChQcm9taXNlLnJlc29sdmUoKS50aGVuKVxuICovXG5cbi8vIC0tLSBEZWNvcmF0b3IgQ29udGV4dCBUeXBlcyAoYmFzZWQgb24gRUNNQVNjcmlwdCBEZWNvcmF0b3JzIHByb3Bvc2FsKSAtLS1cbnR5cGUgQ2xhc3NGaWVsZERlY29yYXRvckNvbnRleHQgPSB7XG4gIGtpbmQ6IFwiZmllbGRcIjtcbiAgbmFtZTogc3RyaW5nIHwgc3ltYm9sO1xuICBzdGF0aWM6IGJvb2xlYW47XG4gIHByaXZhdGU6IGJvb2xlYW47XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbnR5cGUgQ2xhc3NEZWNvcmF0b3JDb250ZXh0ID0ge1xuICBraW5kOiBcImNsYXNzXCI7XG4gIG5hbWU/OiBzdHJpbmcgfCBzeW1ib2w7XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIENvbHVtblR5cGVzID1cbiAgLy8gTnVtZXJpYyB0eXBlc1xuICB8ICdpbnRlZ2VyJyB8ICdsb25nJyB8ICdzaG9ydCcgfCAnYnl0ZScgfCAnZmxvYXQnIHwgJ2RvdWJsZScgfCAnYmlnX2ludGVnZXInIHwgJ2JpZ19kZWNpbWFsJ1xuICAvLyBTdHJpbmcgdHlwZXNcbiAgfCAnc3RyaW5nJyB8ICdjaGFyJyB8ICd0ZXh0JyB8ICduc3RyaW5nJyB8ICdudGV4dCdcbiAgLy8gRGF0ZS9UaW1lIHR5cGVzXG4gIHwgJ2RhdGUnIHwgJ3RpbWUnIHwgJ3RpbWVzdGFtcCcgfCAnY2FsZW5kYXInIHwgJ2NhbGVuZGFyX2RhdGUnIHwgJ2luc3RhbnQnXG4gIC8vIEJvb2xlYW4gdHlwZXNcbiAgfCAnYm9vbGVhbicgfCAndHJ1ZV9mYWxzZScgfCAneWVzX25vJyB8ICdudW1lcmljX2Jvb2xlYW4nIFxuICAvLyBCaW5hcnkgdHlwZXNcbiAgfCAnYmluYXJ5JyB8ICdibG9iJyB8ICdjbG9iJyB8ICdtYXRlcmlhbGl6ZWRfYmxvYicgfCAnbWF0ZXJpYWxpemVkX2Nsb2InXG4gIC8vIE90aGVyIHR5cGVzXG4gIHwgJ3NlcmlhbGl6YWJsZScgfCAnYW55JyB8ICdvYmplY3QnIHwgJ3V1aWQtY2hhcicgfCAndXVpZC1iaW5hcnknIHwgJ2pzb24nIHwgJ2pzb25iJyB8ICd4bWwnO1xuXG4vLyAtLS0gTWV0YWRhdGEgTW9kZWxzIC0tLVxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5PcHRpb25zIHtcbiAgbmFtZT86IHN0cmluZztcbiAgdHlwZT86IENvbHVtblR5cGVzIHwgKHN0cmluZyAmIHt9KTtcbiAgbGVuZ3RoPzogbnVtYmVyO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICBzY2FsZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbmVUb01hbnlPcHRpb25zIHtcbiAgdGFibGU/OiBzdHJpbmc7XG4gIGpvaW5Db2x1bW46IHN0cmluZztcbiAgY2FzY2FkZT86IFwiYWxsXCIgfCBcIm5vbmVcIiB8IFwicGVyc2lzdFwiIHwgXCJtZXJnZVwiIHwgXCJyZW1vdmVcIjtcbiAgaW52ZXJzZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbiAgam9pbkNvbHVtbk5vdE51bGw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hbnlUb09uZU9wdGlvbnMge1xuICBqb2luQ29sdW1uPzogc3RyaW5nO1xuICBjYXNjYWRlPzogXCJhbGxcIiB8IFwibm9uZVwiIHwgXCJwZXJzaXN0XCIgfCBcIm1lcmdlXCIgfCBcInJlbW92ZVwiO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbn1cblxuaW50ZXJmYWNlIFByb3BlcnR5TWV0YWRhdGEge1xuICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcbiAgaXNJZDogYm9vbGVhbjtcbiAgaXNDcmVhdGVkQXQ6IGJvb2xlYW47XG4gIGlzVXBkYXRlZEF0OiBib29sZWFuO1xuICBpc0NyZWF0ZWRCeTogYm9vbGVhbjtcbiAgaXNVcGRhdGVkQnk6IGJvb2xlYW47XG4gIGlzR2VuZXJhdGVkOiBib29sZWFuO1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xuICBjb2x1bW5PcHRpb25zPzogQ29sdW1uT3B0aW9ucztcbiAgb25lVG9NYW55T3B0aW9ucz86IHsgdHlwZTogRnVuY3Rpb247IG9wdGlvbnM6IE9uZVRvTWFueU9wdGlvbnMgfTtcbiAgbWFueVRvT25lT3B0aW9ucz86IHsgdHlwZTogRnVuY3Rpb247IG9wdGlvbnM6IE1hbnlUb09uZU9wdGlvbnMgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlDb25zdHJ1Y3RvciBleHRlbmRzIEZ1bmN0aW9uIHtcbiAgbmV3KC4uLmFyZ3M6IGFueVtdKTogYW55O1xuICAkZW50aXR5X25hbWU6IHN0cmluZztcbiAgJHRhYmxlX25hbWU6IHN0cmluZztcbiAgJGlkX25hbWU6IHN0cmluZztcbiAgJGlkX2NvbHVtbjogc3RyaW5nO1xuICAkaW5pdGlhbGl6ZWQ/OiBib29sZWFuO1xuICAkZG9jdW1lbnRhdGlvbj86IHN0cmluZztcbn1cblxuLy8gLS0tIEdsb2JhbCBNZXRhZGF0YSBDYWNoZSAtLS1cbmNvbnN0IGdsb2JhbENhY2hlOiBXZWFrTWFwPEZ1bmN0aW9uLCBQcm9wZXJ0eU1ldGFkYXRhW10+ID1cbiAgKGdsb2JhbFRoaXMgYXMgYW55KS5fX2RlY29yYXRvcl9tZXRhZGF0YV9jYWNoZV9fIHx8XG4gICgoZ2xvYmFsVGhpcyBhcyBhbnkpLl9fZGVjb3JhdG9yX21ldGFkYXRhX2NhY2hlX18gPSBuZXcgV2Vha01hcCgpKTtcblxuZnVuY3Rpb24gZ2V0TWV0YWRhdGFBcnJheShjb25zdHJ1Y3RvcjogRnVuY3Rpb24pOiBQcm9wZXJ0eU1ldGFkYXRhW10ge1xuICBpZiAoIWdsb2JhbENhY2hlLmhhcyhjb25zdHJ1Y3RvcikpIHtcbiAgICBnbG9iYWxDYWNoZS5zZXQoY29uc3RydWN0b3IsIFtdKTtcbiAgfVxuICByZXR1cm4gZ2xvYmFsQ2FjaGUuZ2V0KGNvbnN0cnVjdG9yKSE7XG59XG5cbi8vIC0tLSBEZWZlciBIZWxwZXIgKEdyYWFsSlMtc2FmZSBtaWNyb3Rhc2spIC0tLVxuZnVuY3Rpb24gZGVmZXIoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgLy8gVXNlcyBQcm9taXNlIG1pY3JvdGFzayBxdWV1ZSBmb3IgZGVmZXJyZWQgZXhlY3V0aW9uXG4gIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZm4pO1xufVxuXG4vLyAtLS0gQ29yZSBQcm9wZXJ0eSBEZWNvcmF0b3IgRmFjdG9yeSAtLS1cbmZ1bmN0aW9uIGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFxuICBraW5kOiBcImNvbHVtblwiIHwgXCJpZFwiIHwgXCJnZW5lcmF0ZWRcIiB8IFwiY3JlYXRlZEF0XCIgfCBcInVwZGF0ZWRBdFwiIHwgXCJjcmVhdGVkQnlcIiB8IFwidXBkYXRlZEJ5XCIsXG4gIG9wdGlvbnM/OiBDb2x1bW5PcHRpb25zXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEAke2tpbmR9IG11c3QgYXBwbHkgdG8gZmllbGRzYCk7XG4gICAgfVxuXG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjdG9yID0gKHRoaXMgYXMgYW55KS5jb25zdHJ1Y3RvciBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcbiAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGNvbnRleHQubmFtZS50b1N0cmluZygpO1xuICAgICAgY29uc3QgbWV0YWRhdGFBcnJheSA9IGdldE1ldGFkYXRhQXJyYXkoY3Rvcik7XG5cbiAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZChcbiAgICAgICAgKG0pID0+IG0ucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcbiAgICAgICk7XG5cbiAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgaXNJZDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRCeTogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRCeTogZmFsc2UsXG4gICAgICAgICAgaXNHZW5lcmF0ZWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBtZXRhZGF0YUFycmF5LnB1c2gobWV0YWRhdGEpO1xuICAgICAgfVxuXG4gICAgICBpZiAoa2luZCA9PT0gXCJpZFwiKSBtZXRhZGF0YS5pc0lkID0gdHJ1ZTtcblx0ICBpZiAoa2luZCA9PT0gXCJjcmVhdGVkQXRcIikgbWV0YWRhdGEuaXNDcmVhdGVkQXQgPSB0cnVlO1xuXHQgIGlmIChraW5kID09PSBcInVwZGF0ZWRBdFwiKSBtZXRhZGF0YS5pc1VwZGF0ZWRBdCA9IHRydWU7XG5cdCAgaWYgKGtpbmQgPT09IFwiY3JlYXRlZEJ5XCIpIG1ldGFkYXRhLmlzQ3JlYXRlZEJ5ID0gdHJ1ZTtcblx0ICBpZiAoa2luZCA9PT0gXCJ1cGRhdGVkQnlcIikgbWV0YWRhdGEuaXNVcGRhdGVkQnkgPSB0cnVlO1xuICAgICAgaWYgKGtpbmQgPT09IFwiZ2VuZXJhdGVkXCIpIG1ldGFkYXRhLmlzR2VuZXJhdGVkID0gdHJ1ZTtcbiAgICAgIGlmIChraW5kID09PSBcImNvbHVtblwiKSBtZXRhZGF0YS5jb2x1bW5PcHRpb25zID0gb3B0aW9ucztcbiAgICB9KTtcbiAgfTtcbn1cblxuLy8gLS0tIEBEb2N1bWVudGF0aW9uIERlY29yYXRvciAoRHVhbC1QdXJwb3NlKSAtLS1cbi8qKlxuICogQWRkcyBkb2N1bWVudGF0aW9uIG1ldGFkYXRhIHRvIGEgY2xhc3Mgb3IgYSBmaWVsZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIERvY3VtZW50YXRpb24oZGVzY3JpcHRpb246IHN0cmluZykge1xuICByZXR1cm4gZnVuY3Rpb24gKFxuICAgIHZhbHVlOiBGdW5jdGlvbiB8IGFueSxcbiAgICBjb250ZXh0OiBDbGFzc0RlY29yYXRvckNvbnRleHQgfCBDbGFzc0ZpZWxkRGVjb3JhdG9yQ29udGV4dFxuICApIHtcbiAgICBpZiAoY29udGV4dC5raW5kID09PSBcImNsYXNzXCIpIHtcbiAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICAodmFsdWUgYXMgRW50aXR5Q29uc3RydWN0b3IpLiRkb2N1bWVudGF0aW9uID0gZGVzY3JpcHRpb247XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKGNvbnRleHQua2luZCA9PT0gXCJmaWVsZFwiKSB7XG4gICAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgY3RvciA9ICh0aGlzIGFzIGFueSkuY29uc3RydWN0b3IgYXMgRW50aXR5Q29uc3RydWN0b3I7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGNvbnRleHQubmFtZS50b1N0cmluZygpO1xuICAgICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoXG4gICAgICAgICAgKG0pID0+IG0ucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgICAgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgIGlzSWQ6IGZhbHNlLFxuXHRcdFx0aXNDcmVhdGVkQXQ6IGZhbHNlLFxuXHRcdFx0aXNVcGRhdGVkQXQ6IGZhbHNlLFxuXHRcdFx0aXNDcmVhdGVkQnk6IGZhbHNlLFxuXHRcdFx0aXNVcGRhdGVkQnk6IGZhbHNlLFxuICAgICAgICAgICAgaXNHZW5lcmF0ZWQ6IGZhbHNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgbWV0YWRhdGFBcnJheS5wdXNoKG1ldGFkYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1ldGFkYXRhLmRvY3VtZW50YXRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cblxuXG4vLyAtLS0gQEVudGl0eSBEZWNvcmF0b3IgLS0tXG4vKipcbiAqIE1hcmtzIGEgY2xhc3MgYXMgYW4gZW50aXR5IGFuZCBpbml0aWF0ZXMgbWV0YWRhdGEgZmluYWxpemF0aW9uLlxuICogQHBhcmFtIGVudGl0eU5hbWUgVGhlIG5hbWUgb2YgdGhlIGVudGl0eSAoZGVmYXVsdHMgdG8gY2xhc3MgbmFtZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbnRpdHkoZW50aXR5TmFtZT86IHN0cmluZykge1xuICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlOiBGdW5jdGlvbiwgY29udGV4dDogQ2xhc3NEZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBEZWZlciBleGVjdXRpb24gdG8gZW5zdXJlIGFsbCBmaWVsZCBkZWNvcmF0b3JzIGhhdmUgcnVuXG4gICAgICBkZWZlcigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGN0b3IgPSB2YWx1ZSBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcblxuICAgICAgICAvLyBQcmV2ZW50IGR1cGxpY2F0ZSByZWdpc3RyYXRpb24gKGlkZW1wb3RlbmN5KVxuICAgICAgICBpZiAoY3Rvci4kaW5pdGlhbGl6ZWQpIHJldHVybjtcbiAgICAgICAgY3Rvci4kaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgIGN0b3IuJGVudGl0eV9uYW1lID0gZW50aXR5TmFtZSB8fCBjdG9yLm5hbWU7XG5cbiAgICAgICAgY29uc3QgbWV0YWRhdGFBcnJheSA9IGdldE1ldGFkYXRhQXJyYXkoY3Rvcik7XG4gICAgICAgIGNvbnN0IGlkTWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoKG0pID0+IG0uaXNJZCk7XG5cbiAgICAgICAgaWYgKGlkTWV0YWRhdGEpIHtcbiAgICAgICAgICBjdG9yLiRpZF9uYW1lID0gaWRNZXRhZGF0YS5wcm9wZXJ0eU5hbWU7XG4gICAgICAgICAgLy8gRGV0ZXJtaW5lIElEIGNvbHVtbiBuYW1lOiB1c2UgZXhwbGljaXQgbmFtZSBvciBjb252ZXJ0IHByb3BlcnR5IG5hbWUgdG8gdXBwZXIgY2FzZVxuICAgICAgICAgIGN0b3IuJGlkX2NvbHVtbiA9XG4gICAgICAgICAgICBpZE1ldGFkYXRhLmNvbHVtbk9wdGlvbnM/Lm5hbWUgfHxcbiAgICAgICAgICAgIGlkTWV0YWRhdGEucHJvcGVydHlOYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGdXR1cmU6IExvZ2ljIHRvIG1hcCBhbGwgcHJvcGVydGllcyB0byBjb2x1bW5zL3JlbGF0aW9ucyBnb2VzIGhlcmVcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufVxuXG4vLyAtLS0gQFRhYmxlIERlY29yYXRvciAtLS1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBkYXRhYmFzZSB0YWJsZSBuYW1lIGZvciB0aGUgZW50aXR5LlxuICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgdGFibGUgbmFtZSAoZGVmYXVsdHMgdG8gdXBwZXJjYXNlIGNsYXNzIG5hbWUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gVGFibGUodGFibGVOYW1lPzogc3RyaW5nKSB7XG4gIHJldHVybiBmdW5jdGlvbiA8VCBleHRlbmRzIGFic3RyYWN0IG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueT4oXG4gICAgdmFsdWU6IFQsXG4gICAgY29udGV4dDogQ2xhc3NEZWNvcmF0b3JDb250ZXh0XG4gICkge1xuICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gdmFsdWUgYXMgYW55O1xuICAgICAgdGFyZ2V0LiR0YWJsZV9uYW1lID0gdGFibGVOYW1lIHx8IGNvbnRleHQubmFtZT8udG9TdHJpbmcoKSB8fCB2YWx1ZS5uYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG59XG5cbi8vIC0tLSBFeHBvcnRlZCBQcm9wZXJ0eSBEZWNvcmF0b3JzIC0tLVxuLyoqXG4gKiBNYXJrcyBhIHByb3BlcnR5IGFzIGEgc3RhbmRhcmQgZGF0YWJhc2UgY29sdW1uLlxuICovXG5leHBvcnQgY29uc3QgQ29sdW1uID0gKG9wdGlvbnM/OiBDb2x1bW5PcHRpb25zKSA9PlxuICBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcImNvbHVtblwiLCBvcHRpb25zKTtcblxuLyoqXG4gKiBNYXJrcyBhIHByb3BlcnR5IGFzIHRoZSBlbnRpdHkncyBwcmltYXJ5IGtleS5cbiAqL1xuZXhwb3J0IGNvbnN0IElkID0gKCkgPT4gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJpZFwiKTtcblxuLyoqXG4gKiBNYXJrcyBhIHByb3BlcnR5IGFzIHRoZSBlbnRpdHkncyBjcmVhdGVkIGF0IHRpbWVzdGFtcC5cbiAqL1xuZXhwb3J0IGNvbnN0IENyZWF0ZWRBdCA9ICgpID0+IGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwiY3JlYXRlZEF0XCIpO1xuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgdGhlIGVudGl0eSdzIHVwZGF0ZSBhdCB0aW1lc3RhbXAuXG4gKi9cbmV4cG9ydCBjb25zdCBVcGRhdGVkQXQgPSAoKSA9PiBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcInVwZGF0ZWRBdFwiKTtcblxuLyoqXG4gKiBNYXJrcyBhIHByb3BlcnR5IGFzIHRoZSBlbnRpdHkncyBjcmVhdGlvbiBhY3Rvci5cbiAqL1xuZXhwb3J0IGNvbnN0IENyZWF0ZWRCeSA9ICgpID0+IGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwiY3JlYXRlZEJ5XCIpO1xuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgdGhlIGVudGl0eSdzIHVwZGF0ZSBhY3Rvci5cbiAqL1xuZXhwb3J0IGNvbnN0IFVwZGF0ZWRCeSA9ICgpID0+IGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwidXBkYXRlZEJ5XCIpO1xuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgYSBnZW5lcmF0ZWQgdmFsdWUgKGUuZy4sIGF1dG8taW5jcmVtZW50KS5cbiAqIEBwYXJhbSBzdHJhdGVneSBUaGUgZ2VuZXJhdGlvbiBzdHJhdGVneSAoZS5nLiwgXCJJREVOVElUWVwiKS4gUGFyYW1ldGVyIGlzIGN1cnJlbnRseSB1bnVzZWQgaW4gbG9naWMuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5lcmF0ZWQgPSAoc3RyYXRlZ3k6IHN0cmluZykgPT5cbiAgY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJnZW5lcmF0ZWRcIik7XG5cbi8qKlxuICogRGVmaW5lcyBhIG9uZS10by1tYW55IHJlbGF0aW9uc2hpcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE9uZVRvTWFueShcbiAgdHlwZUZ1bmN0aW9uOiAoKSA9PiBGdW5jdGlvbixcbiAgb3B0aW9uczogT25lVG9NYW55T3B0aW9uc1xuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoXzogYW55LCBjb250ZXh0OiBDbGFzc0ZpZWxkRGVjb3JhdG9yQ29udGV4dCkge1xuICAgIGlmIChjb250ZXh0LmtpbmQgIT09IFwiZmllbGRcIikgcmV0dXJuO1xuXG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjdG9yID0gKHRoaXMgYXMgYW55KS5jb25zdHJ1Y3RvciBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcbiAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGNvbnRleHQubmFtZS50b1N0cmluZygpO1xuICAgICAgY29uc3QgbWV0YWRhdGFBcnJheSA9IGdldE1ldGFkYXRhQXJyYXkoY3Rvcik7XG5cbiAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZChcbiAgICAgICAgKG0pID0+IG0ucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcbiAgICAgICk7XG5cbiAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgaXNJZDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRCeTogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRCeTogZmFsc2UsXG4gICAgICAgICAgaXNHZW5lcmF0ZWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBtZXRhZGF0YUFycmF5LnB1c2gobWV0YWRhdGEpO1xuICAgICAgfVxuXG4gICAgICBtZXRhZGF0YS5vbmVUb01hbnlPcHRpb25zID0geyB0eXBlOiB0eXBlRnVuY3Rpb24oKSwgb3B0aW9ucyB9O1xuICAgIH0pO1xuICB9O1xufVxuXG4vKipcbiAqIERlZmluZXMgYSBtYW55LXRvLW9uZSByZWxhdGlvbnNoaXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBNYW55VG9PbmUoXG4gIHR5cGVGdW5jdGlvbjogKCkgPT4gRnVuY3Rpb24sXG4gIG9wdGlvbnM6IE1hbnlUb09uZU9wdGlvbnMgPSB7fVxuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoXzogYW55LCBjb250ZXh0OiBDbGFzc0ZpZWxkRGVjb3JhdG9yQ29udGV4dCkge1xuICAgIGlmIChjb250ZXh0LmtpbmQgIT09IFwiZmllbGRcIikgcmV0dXJuO1xuXG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjdG9yID0gKHRoaXMgYXMgYW55KS5jb25zdHJ1Y3RvciBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcbiAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGNvbnRleHQubmFtZS50b1N0cmluZygpO1xuICAgICAgY29uc3QgbWV0YWRhdGFBcnJheSA9IGdldE1ldGFkYXRhQXJyYXkoY3Rvcik7XG5cbiAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZChcbiAgICAgICAgKG0pID0+IG0ucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcbiAgICAgICk7XG5cbiAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgaXNJZDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRCeTogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRCeTogZmFsc2UsXG4gICAgICAgICAgaXNHZW5lcmF0ZWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBtZXRhZGF0YUFycmF5LnB1c2gobWV0YWRhdGEpO1xuICAgICAgfVxuXG4gICAgICBtZXRhZGF0YS5tYW55VG9PbmVPcHRpb25zID0geyB0eXBlOiB0eXBlRnVuY3Rpb24oKSwgb3B0aW9ucyB9O1xuICAgIH0pO1xuICB9O1xufSJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2RkEsTUFBTSxjQUNILFdBQW1CLGlDQUNsQixXQUFtQiwrQkFBK0Isb0JBQUksUUFBUTtBQUVsRSxTQUFTLGlCQUFpQixhQUEyQztBQUNuRSxNQUFJLENBQUMsWUFBWSxJQUFJLFdBQVcsR0FBRztBQUNqQyxnQkFBWSxJQUFJLGFBQWEsQ0FBQyxDQUFDO0FBQUEsRUFDakM7QUFDQSxTQUFPLFlBQVksSUFBSSxXQUFXO0FBQ3BDO0FBR0EsU0FBUyxNQUFNLElBQXNCO0FBRW5DLFVBQVEsUUFBUSxFQUFFLEtBQUssRUFBRTtBQUMzQjtBQUdBLFNBQVMsd0JBQ1AsTUFDQSxTQUNBO0FBQ0EsU0FBTyxTQUFVLEdBQVEsU0FBcUM7QUFDNUQsUUFBSSxRQUFRLFNBQVMsU0FBUztBQUM1QixZQUFNLElBQUksTUFBTSxJQUFJLElBQUksdUJBQXVCO0FBQUEsSUFDakQ7QUFFQSxZQUFRLGVBQWUsV0FBWTtBQUNqQyxZQUFNLE9BQVEsS0FBYTtBQUMzQixZQUFNLGVBQWUsUUFBUSxLQUFLLFNBQVM7QUFDM0MsWUFBTSxnQkFBZ0IsaUJBQWlCLElBQUk7QUFFM0MsVUFBSSxXQUFXLGNBQWM7QUFBQSxRQUMzQixDQUFDLE1BQU0sRUFBRSxpQkFBaUI7QUFBQSxNQUM1QjtBQUVBLFVBQUksQ0FBQyxVQUFVO0FBQ2IsbUJBQVc7QUFBQSxVQUNUO0FBQUEsVUFDQSxN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
@@ -67,7 +67,7 @@ export declare function Entity(entityName?: string): (value: Function, context:
67
67
  * Specifies the database table name for the entity.
68
68
  * @param tableName The table name (defaults to uppercase class name).
69
69
  */
70
- export declare function Table(tableName?: string): <T extends EntityConstructor>(value: T, context: ClassDecoratorContext) => T;
70
+ export declare function Table(tableName?: string): <T extends abstract new (...args: any[]) => any>(value: T, context: ClassDecoratorContext) => T;
71
71
  /**
72
72
  * Marks a property as a standard database column.
73
73
  */
@@ -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);
@@ -83,13 +95,18 @@ function Entity(entityName) {
83
95
  function Table(tableName) {
84
96
  return function(value, context) {
85
97
  context.addInitializer(function() {
86
- value.$table_name = tableName || (context.name?.toString() ?? value.name.toUpperCase());
98
+ const target = value;
99
+ target.$table_name = tableName || context.name?.toString() || value.name.toUpperCase();
87
100
  });
88
101
  return value;
89
102
  };
90
103
  }
91
104
  const Column = (options) => createPropertyDecorator("column", options);
92
105
  const Id = () => createPropertyDecorator("id");
106
+ const CreatedAt = () => createPropertyDecorator("createdAt");
107
+ const UpdatedAt = () => createPropertyDecorator("updatedAt");
108
+ const CreatedBy = () => createPropertyDecorator("createdBy");
109
+ const UpdatedBy = () => createPropertyDecorator("updatedBy");
93
110
  const Generated = (strategy) => createPropertyDecorator("generated");
94
111
  function OneToMany(typeFunction, options) {
95
112
  return function(_, context) {
@@ -105,6 +122,10 @@ function OneToMany(typeFunction, options) {
105
122
  metadata = {
106
123
  propertyName,
107
124
  isId: false,
125
+ isCreatedAt: false,
126
+ isUpdatedAt: false,
127
+ isCreatedBy: false,
128
+ isUpdatedBy: false,
108
129
  isGenerated: false
109
130
  };
110
131
  metadataArray.push(metadata);
@@ -127,6 +148,10 @@ function ManyToOne(typeFunction, options = {}) {
127
148
  metadata = {
128
149
  propertyName,
129
150
  isId: false,
151
+ isCreatedAt: false,
152
+ isUpdatedAt: false,
153
+ isCreatedBy: false,
154
+ isUpdatedBy: false,
130
155
  isGenerated: false
131
156
  };
132
157
  metadataArray.push(metadata);
@@ -137,12 +162,16 @@ function ManyToOne(typeFunction, options = {}) {
137
162
  }
138
163
  export {
139
164
  Column,
165
+ CreatedAt,
166
+ CreatedBy,
140
167
  Documentation,
141
168
  Entity,
142
169
  Generated,
143
170
  Id,
144
171
  ManyToOne,
145
172
  OneToMany,
146
- Table
173
+ Table,
174
+ UpdatedAt,
175
+ UpdatedBy
147
176
  };
148
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2RlY29yYXRvcnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogKiBFQ01BU2NyaXB0IDIwMjUtY29tcGxpYW50IE9STSBkZWNvcmF0b3IgaW1wbGVtZW50YXRpb25cbiAqIENvbXBhdGlibGUgd2l0aCBHcmFhbEpTIHJ1bnRpbWUuXG4gKiAqIEZlYXR1cmVzOlxuICogLSBVc2VzIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgZm9yIHN0YWJsZSBkZWNvcmF0b3IgdGltaW5nXG4gKiAtIFN0b3JlcyBtZXRhZGF0YSBpbiBhIGdsb2JhbCBXZWFrTWFwIGNhY2hlXG4gKiAtIEZpbmFsaXplcyBlbnRpdHkgbWV0YWRhdGEgb25jZSBwZXIgY2xhc3NcbiAqIC0gRGVmZXJzIGZpbmFsaXphdGlvbiB2aWEgbWljcm90YXNrIChQcm9taXNlLnJlc29sdmUoKS50aGVuKVxuICovXG5cbi8vIC0tLSBEZWNvcmF0b3IgQ29udGV4dCBUeXBlcyAoYmFzZWQgb24gRUNNQVNjcmlwdCBEZWNvcmF0b3JzIHByb3Bvc2FsKSAtLS1cbnR5cGUgQ2xhc3NGaWVsZERlY29yYXRvckNvbnRleHQgPSB7XG4gIGtpbmQ6IFwiZmllbGRcIjtcbiAgbmFtZTogc3RyaW5nIHwgc3ltYm9sO1xuICBzdGF0aWM6IGJvb2xlYW47XG4gIHByaXZhdGU6IGJvb2xlYW47XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbnR5cGUgQ2xhc3NEZWNvcmF0b3JDb250ZXh0ID0ge1xuICBraW5kOiBcImNsYXNzXCI7XG4gIG5hbWU/OiBzdHJpbmcgfCBzeW1ib2w7XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIENvbHVtblR5cGVzID1cbiAgLy8gTnVtZXJpYyB0eXBlc1xuICB8ICdpbnRlZ2VyJyB8ICdsb25nJyB8ICdzaG9ydCcgfCAnYnl0ZScgfCAnZmxvYXQnIHwgJ2RvdWJsZScgfCAnYmlnX2ludGVnZXInIHwgJ2JpZ19kZWNpbWFsJ1xuICAvLyBTdHJpbmcgdHlwZXNcbiAgfCAnc3RyaW5nJyB8ICdjaGFyJyB8ICd0ZXh0JyB8ICduc3RyaW5nJyB8ICdudGV4dCdcbiAgLy8gRGF0ZS9UaW1lIHR5cGVzXG4gIHwgJ2RhdGUnIHwgJ3RpbWUnIHwgJ3RpbWVzdGFtcCcgfCAnY2FsZW5kYXInIHwgJ2NhbGVuZGFyX2RhdGUnIHwgJ2luc3RhbnQnXG4gIC8vIEJvb2xlYW4gdHlwZXNcbiAgfCAnYm9vbGVhbicgfCAndHJ1ZV9mYWxzZScgfCAneWVzX25vJyB8ICdudW1lcmljX2Jvb2xlYW4nIFxuICAvLyBCaW5hcnkgdHlwZXNcbiAgfCAnYmluYXJ5JyB8ICdibG9iJyB8ICdjbG9iJyB8ICdtYXRlcmlhbGl6ZWRfYmxvYicgfCAnbWF0ZXJpYWxpemVkX2Nsb2InXG4gIC8vIE90aGVyIHR5cGVzXG4gIHwgJ3NlcmlhbGl6YWJsZScgfCAnYW55JyB8ICdvYmplY3QnIHwgJ3V1aWQtY2hhcicgfCAndXVpZC1iaW5hcnknIHwgJ2pzb24nIHwgJ2pzb25iJyB8ICd4bWwnO1xuXG4vLyAtLS0gTWV0YWRhdGEgTW9kZWxzIC0tLVxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5PcHRpb25zIHtcbiAgbmFtZT86IHN0cmluZztcbiAgdHlwZT86IENvbHVtblR5cGVzIHwgKHN0cmluZyAmIHt9KTtcbiAgbGVuZ3RoPzogbnVtYmVyO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICBzY2FsZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbmVUb01hbnlPcHRpb25zIHtcbiAgdGFibGU/OiBzdHJpbmc7XG4gIGpvaW5Db2x1bW46IHN0cmluZztcbiAgY2FzY2FkZT86IFwiYWxsXCIgfCBcIm5vbmVcIiB8IFwicGVyc2lzdFwiIHwgXCJtZXJnZVwiIHwgXCJyZW1vdmVcIjtcbiAgaW52ZXJzZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbiAgam9pbkNvbHVtbk5vdE51bGw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hbnlUb09uZU9wdGlvbnMge1xuICBqb2luQ29sdW1uPzogc3RyaW5nO1xuICBjYXNjYWRlPzogXCJhbGxcIiB8IFwibm9uZVwiIHwgXCJwZXJzaXN0XCIgfCBcIm1lcmdlXCIgfCBcInJlbW92ZVwiO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbn1cblxuaW50ZXJmYWNlIFByb3BlcnR5TWV0YWRhdGEge1xuICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcbiAgaXNJZDogYm9vbGVhbjtcbiAgaXNHZW5lcmF0ZWQ6IGJvb2xlYW47XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIGNvbHVtbk9wdGlvbnM/OiBDb2x1bW5PcHRpb25zO1xuICBvbmVUb01hbnlPcHRpb25zPzogeyB0eXBlOiBGdW5jdGlvbjsgb3B0aW9uczogT25lVG9NYW55T3B0aW9ucyB9O1xuICBtYW55VG9PbmVPcHRpb25zPzogeyB0eXBlOiBGdW5jdGlvbjsgb3B0aW9uczogTWFueVRvT25lT3B0aW9ucyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUNvbnN0cnVjdG9yIGV4dGVuZHMgRnVuY3Rpb24ge1xuICBuZXcoLi4uYXJnczogYW55W10pOiBhbnk7XG4gICRlbnRpdHlfbmFtZTogc3RyaW5nO1xuICAkdGFibGVfbmFtZTogc3RyaW5nO1xuICAkaWRfbmFtZTogc3RyaW5nO1xuICAkaWRfY29sdW1uOiBzdHJpbmc7XG4gICRpbml0aWFsaXplZD86IGJvb2xlYW47XG4gICRkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xufVxuXG4vLyAtLS0gR2xvYmFsIE1ldGFkYXRhIENhY2hlIC0tLVxuY29uc3QgZ2xvYmFsQ2FjaGU6IFdlYWtNYXA8RnVuY3Rpb24sIFByb3BlcnR5TWV0YWRhdGFbXT4gPVxuICAoZ2xvYmFsVGhpcyBhcyBhbnkpLl9fZGVjb3JhdG9yX21ldGFkYXRhX2NhY2hlX18gfHxcbiAgKChnbG9iYWxUaGlzIGFzIGFueSkuX19kZWNvcmF0b3JfbWV0YWRhdGFfY2FjaGVfXyA9IG5ldyBXZWFrTWFwKCkpO1xuXG5mdW5jdGlvbiBnZXRNZXRhZGF0YUFycmF5KGNvbnN0cnVjdG9yOiBGdW5jdGlvbik6IFByb3BlcnR5TWV0YWRhdGFbXSB7XG4gIGlmICghZ2xvYmFsQ2FjaGUuaGFzKGNvbnN0cnVjdG9yKSkge1xuICAgIGdsb2JhbENhY2hlLnNldChjb25zdHJ1Y3RvciwgW10pO1xuICB9XG4gIHJldHVybiBnbG9iYWxDYWNoZS5nZXQoY29uc3RydWN0b3IpITtcbn1cblxuLy8gLS0tIERlZmVyIEhlbHBlciAoR3JhYWxKUy1zYWZlIG1pY3JvdGFzaykgLS0tXG5mdW5jdGlvbiBkZWZlcihmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAvLyBVc2VzIFByb21pc2UgbWljcm90YXNrIHF1ZXVlIGZvciBkZWZlcnJlZCBleGVjdXRpb25cbiAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmbik7XG59XG5cbi8vIC0tLSBDb3JlIFByb3BlcnR5IERlY29yYXRvciBGYWN0b3J5IC0tLVxuZnVuY3Rpb24gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXG4gIGtpbmQ6IFwiY29sdW1uXCIgfCBcImlkXCIgfCBcImdlbmVyYXRlZFwiLFxuICBvcHRpb25zPzogQ29sdW1uT3B0aW9uc1xuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoXzogYW55LCBjb250ZXh0OiBDbGFzc0ZpZWxkRGVjb3JhdG9yQ29udGV4dCkge1xuICAgIGlmIChjb250ZXh0LmtpbmQgIT09IFwiZmllbGRcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBAJHtraW5kfSBtdXN0IGFwcGx5IHRvIGZpZWxkc2ApO1xuICAgIH1cblxuICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY3RvciA9ICh0aGlzIGFzIGFueSkuY29uc3RydWN0b3IgYXMgRW50aXR5Q29uc3RydWN0b3I7XG4gICAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBjb250ZXh0Lm5hbWUudG9TdHJpbmcoKTtcbiAgICAgIGNvbnN0IG1ldGFkYXRhQXJyYXkgPSBnZXRNZXRhZGF0YUFycmF5KGN0b3IpO1xuXG4gICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoXG4gICAgICAgIChtKSA9PiBtLnByb3BlcnR5TmFtZSA9PT0gcHJvcGVydHlOYW1lXG4gICAgICApO1xuXG4gICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgIG1ldGFkYXRhID0ge1xuICAgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlOYW1lLFxuICAgICAgICAgIGlzSWQ6IGZhbHNlLFxuICAgICAgICAgIGlzR2VuZXJhdGVkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgbWV0YWRhdGFBcnJheS5wdXNoKG1ldGFkYXRhKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGtpbmQgPT09IFwiaWRcIikgbWV0YWRhdGEuaXNJZCA9IHRydWU7XG4gICAgICBpZiAoa2luZCA9PT0gXCJnZW5lcmF0ZWRcIikgbWV0YWRhdGEuaXNHZW5lcmF0ZWQgPSB0cnVlO1xuICAgICAgaWYgKGtpbmQgPT09IFwiY29sdW1uXCIpIG1ldGFkYXRhLmNvbHVtbk9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH0pO1xuICB9O1xufVxuXG4vLyAtLS0gQERvY3VtZW50YXRpb24gRGVjb3JhdG9yIChEdWFsLVB1cnBvc2UpIC0tLVxuLyoqXG4gKiBBZGRzIGRvY3VtZW50YXRpb24gbWV0YWRhdGEgdG8gYSBjbGFzcyBvciBhIGZpZWxkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRG9jdW1lbnRhdGlvbihkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoXG4gICAgdmFsdWU6IEZ1bmN0aW9uIHwgYW55LFxuICAgIGNvbnRleHQ6IENsYXNzRGVjb3JhdG9yQ29udGV4dCB8IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0XG4gICkge1xuICAgIGlmIChjb250ZXh0LmtpbmQgPT09IFwiY2xhc3NcIikge1xuICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICAgICh2YWx1ZSBhcyBFbnRpdHlDb25zdHJ1Y3RvcikuJGRvY3VtZW50YXRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSBpZiAoY29udGV4dC5raW5kID09PSBcImZpZWxkXCIpIHtcbiAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBjdG9yID0gKHRoaXMgYXMgYW55KS5jb25zdHJ1Y3RvciBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcbiAgICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhQXJyYXkgPSBnZXRNZXRhZGF0YUFycmF5KGN0b3IpO1xuXG4gICAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZChcbiAgICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlOYW1lLFxuICAgICAgICAgICAgaXNJZDogZmFsc2UsXG4gICAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBtZXRhZGF0YUFycmF5LnB1c2gobWV0YWRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgbWV0YWRhdGEuZG9jdW1lbnRhdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuXG5cbi8vIC0tLSBARW50aXR5IERlY29yYXRvciAtLS1cbi8qKlxuICogTWFya3MgYSBjbGFzcyBhcyBhbiBlbnRpdHkgYW5kIGluaXRpYXRlcyBtZXRhZGF0YSBmaW5hbGl6YXRpb24uXG4gKiBAcGFyYW0gZW50aXR5TmFtZSBUaGUgbmFtZSBvZiB0aGUgZW50aXR5IChkZWZhdWx0cyB0byBjbGFzcyBuYW1lKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEVudGl0eShlbnRpdHlOYW1lPzogc3RyaW5nKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWU6IEZ1bmN0aW9uLCBjb250ZXh0OiBDbGFzc0RlY29yYXRvckNvbnRleHQpIHtcbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIERlZmVyIGV4ZWN1dGlvbiB0byBlbnN1cmUgYWxsIGZpZWxkIGRlY29yYXRvcnMgaGF2ZSBydW5cbiAgICAgIGRlZmVyKCgpID0+IHtcbiAgICAgICAgY29uc3QgY3RvciA9IHZhbHVlIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuXG4gICAgICAgIC8vIFByZXZlbnQgZHVwbGljYXRlIHJlZ2lzdHJhdGlvbiAoaWRlbXBvdGVuY3kpXG4gICAgICAgIGlmIChjdG9yLiRpbml0aWFsaXplZCkgcmV0dXJuO1xuICAgICAgICBjdG9yLiRpbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICAgICAgY3Rvci4kZW50aXR5X25hbWUgPSBlbnRpdHlOYW1lIHx8IGN0b3IubmFtZTtcblxuICAgICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcbiAgICAgICAgY29uc3QgaWRNZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZCgobSkgPT4gbS5pc0lkKTtcblxuICAgICAgICBpZiAoaWRNZXRhZGF0YSkge1xuICAgICAgICAgIGN0b3IuJGlkX25hbWUgPSBpZE1ldGFkYXRhLnByb3BlcnR5TmFtZTtcbiAgICAgICAgICAvLyBEZXRlcm1pbmUgSUQgY29sdW1uIG5hbWU6IHVzZSBleHBsaWNpdCBuYW1lIG9yIGNvbnZlcnQgcHJvcGVydHkgbmFtZSB0byB1cHBlciBjYXNlXG4gICAgICAgICAgY3Rvci4kaWRfY29sdW1uID1cbiAgICAgICAgICAgIGlkTWV0YWRhdGEuY29sdW1uT3B0aW9ucz8ubmFtZSB8fFxuICAgICAgICAgICAgaWRNZXRhZGF0YS5wcm9wZXJ0eU5hbWUudG9VcHBlckNhc2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZ1dHVyZTogTG9naWMgdG8gbWFwIGFsbCBwcm9wZXJ0aWVzIHRvIGNvbHVtbnMvcmVsYXRpb25zIGdvZXMgaGVyZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8vIC0tLSBAVGFibGUgRGVjb3JhdG9yIC0tLVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGRhdGFiYXNlIHRhYmxlIG5hbWUgZm9yIHRoZSBlbnRpdHkuXG4gKiBAcGFyYW0gdGFibGVOYW1lIFRoZSB0YWJsZSBuYW1lIChkZWZhdWx0cyB0byB1cHBlcmNhc2UgY2xhc3MgbmFtZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBUYWJsZSh0YWJsZU5hbWU/OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxUIGV4dGVuZHMgRW50aXR5Q29uc3RydWN0b3I+KFxuICAgIHZhbHVlOiBULFxuICAgIGNvbnRleHQ6IENsYXNzRGVjb3JhdG9yQ29udGV4dFxuICApIHtcbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICh2YWx1ZSBhcyBFbnRpdHlDb25zdHJ1Y3RvcikuJHRhYmxlX25hbWUgPVxuICAgICAgICB0YWJsZU5hbWUgfHwgKGNvbnRleHQubmFtZT8udG9TdHJpbmcoKSA/PyB2YWx1ZS5uYW1lLnRvVXBwZXJDYXNlKCkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG4vLyAtLS0gRXhwb3J0ZWQgUHJvcGVydHkgRGVjb3JhdG9ycyAtLS1cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBhIHN0YW5kYXJkIGRhdGFiYXNlIGNvbHVtbi5cbiAqL1xuZXhwb3J0IGNvbnN0IENvbHVtbiA9IChvcHRpb25zPzogQ29sdW1uT3B0aW9ucykgPT5cbiAgY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJjb2x1bW5cIiwgb3B0aW9ucyk7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyB0aGUgZW50aXR5J3MgcHJpbWFyeSBrZXkuXG4gKi9cbmV4cG9ydCBjb25zdCBJZCA9ICgpID0+IGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwiaWRcIik7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBhIGdlbmVyYXRlZCB2YWx1ZSAoZS5nLiwgYXV0by1pbmNyZW1lbnQpLlxuICogQHBhcmFtIHN0cmF0ZWd5IFRoZSBnZW5lcmF0aW9uIHN0cmF0ZWd5IChlLmcuLCBcIklERU5USVRZXCIpLiBQYXJhbWV0ZXIgaXMgY3VycmVudGx5IHVudXNlZCBpbiBsb2dpYy5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmVyYXRlZCA9IChzdHJhdGVneTogc3RyaW5nKSA9PlxuICBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcImdlbmVyYXRlZFwiKTtcblxuLyoqXG4gKiBEZWZpbmVzIGEgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT25lVG9NYW55KFxuICB0eXBlRnVuY3Rpb246ICgpID0+IEZ1bmN0aW9uLFxuICBvcHRpb25zOiBPbmVUb01hbnlPcHRpb25zXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSByZXR1cm47XG5cbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGN0b3IgPSAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKFxuICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICBpc0lkOiBmYWxzZSxcbiAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIG1ldGFkYXRhQXJyYXkucHVzaChtZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIG1ldGFkYXRhLm9uZVRvTWFueU9wdGlvbnMgPSB7IHR5cGU6IHR5cGVGdW5jdGlvbigpLCBvcHRpb25zIH07XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIG1hbnktdG8tb25lIHJlbGF0aW9uc2hpcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1hbnlUb09uZShcbiAgdHlwZUZ1bmN0aW9uOiAoKSA9PiBGdW5jdGlvbixcbiAgb3B0aW9uczogTWFueVRvT25lT3B0aW9ucyA9IHt9XG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSByZXR1cm47XG5cbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGN0b3IgPSAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKFxuICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICBpc0lkOiBmYWxzZSxcbiAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIG1ldGFkYXRhQXJyYXkucHVzaChtZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIG1ldGFkYXRhLm1hbnlUb09uZU9wdGlvbnMgPSB7IHR5cGU6IHR5cGVGdW5jdGlvbigpLCBvcHRpb25zIH07XG4gICAgfSk7XG4gIH07XG59Il0sCiAgIm1hcHBpbmdzIjogIkFBeUZBLE1BQU0sY0FDSCxXQUFtQixpQ0FDbEIsV0FBbUIsK0JBQStCLG9CQUFJLFFBQVE7QUFFbEUsU0FBUyxpQkFBaUIsYUFBMkM7QUFDbkUsTUFBSSxDQUFDLFlBQVksSUFBSSxXQUFXLEdBQUc7QUFDakMsZ0JBQVksSUFBSSxhQUFhLENBQUMsQ0FBQztBQUFBLEVBQ2pDO0FBQ0EsU0FBTyxZQUFZLElBQUksV0FBVztBQUNwQztBQUdBLFNBQVMsTUFBTSxJQUFzQjtBQUVuQyxVQUFRLFFBQVEsRUFBRSxLQUFLLEVBQUU7QUFDM0I7QUFHQSxTQUFTLHdCQUNQLE1BQ0EsU0FDQTtBQUNBLFNBQU8sU0FBVSxHQUFRLFNBQXFDO0FBQzVELFFBQUksUUFB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
177
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2RlY29yYXRvcnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogKiBFQ01BU2NyaXB0IDIwMjUtY29tcGxpYW50IE9STSBkZWNvcmF0b3IgaW1wbGVtZW50YXRpb25cbiAqIENvbXBhdGlibGUgd2l0aCBHcmFhbEpTIHJ1bnRpbWUuXG4gKiAqIEZlYXR1cmVzOlxuICogLSBVc2VzIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgZm9yIHN0YWJsZSBkZWNvcmF0b3IgdGltaW5nXG4gKiAtIFN0b3JlcyBtZXRhZGF0YSBpbiBhIGdsb2JhbCBXZWFrTWFwIGNhY2hlXG4gKiAtIEZpbmFsaXplcyBlbnRpdHkgbWV0YWRhdGEgb25jZSBwZXIgY2xhc3NcbiAqIC0gRGVmZXJzIGZpbmFsaXphdGlvbiB2aWEgbWljcm90YXNrIChQcm9taXNlLnJlc29sdmUoKS50aGVuKVxuICovXG5cbi8vIC0tLSBEZWNvcmF0b3IgQ29udGV4dCBUeXBlcyAoYmFzZWQgb24gRUNNQVNjcmlwdCBEZWNvcmF0b3JzIHByb3Bvc2FsKSAtLS1cbnR5cGUgQ2xhc3NGaWVsZERlY29yYXRvckNvbnRleHQgPSB7XG4gIGtpbmQ6IFwiZmllbGRcIjtcbiAgbmFtZTogc3RyaW5nIHwgc3ltYm9sO1xuICBzdGF0aWM6IGJvb2xlYW47XG4gIHByaXZhdGU6IGJvb2xlYW47XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbnR5cGUgQ2xhc3NEZWNvcmF0b3JDb250ZXh0ID0ge1xuICBraW5kOiBcImNsYXNzXCI7XG4gIG5hbWU/OiBzdHJpbmcgfCBzeW1ib2w7XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIENvbHVtblR5cGVzID1cbiAgLy8gTnVtZXJpYyB0eXBlc1xuICB8ICdpbnRlZ2VyJyB8ICdsb25nJyB8ICdzaG9ydCcgfCAnYnl0ZScgfCAnZmxvYXQnIHwgJ2RvdWJsZScgfCAnYmlnX2ludGVnZXInIHwgJ2JpZ19kZWNpbWFsJ1xuICAvLyBTdHJpbmcgdHlwZXNcbiAgfCAnc3RyaW5nJyB8ICdjaGFyJyB8ICd0ZXh0JyB8ICduc3RyaW5nJyB8ICdudGV4dCdcbiAgLy8gRGF0ZS9UaW1lIHR5cGVzXG4gIHwgJ2RhdGUnIHwgJ3RpbWUnIHwgJ3RpbWVzdGFtcCcgfCAnY2FsZW5kYXInIHwgJ2NhbGVuZGFyX2RhdGUnIHwgJ2luc3RhbnQnXG4gIC8vIEJvb2xlYW4gdHlwZXNcbiAgfCAnYm9vbGVhbicgfCAndHJ1ZV9mYWxzZScgfCAneWVzX25vJyB8ICdudW1lcmljX2Jvb2xlYW4nIFxuICAvLyBCaW5hcnkgdHlwZXNcbiAgfCAnYmluYXJ5JyB8ICdibG9iJyB8ICdjbG9iJyB8ICdtYXRlcmlhbGl6ZWRfYmxvYicgfCAnbWF0ZXJpYWxpemVkX2Nsb2InXG4gIC8vIE90aGVyIHR5cGVzXG4gIHwgJ3NlcmlhbGl6YWJsZScgfCAnYW55JyB8ICdvYmplY3QnIHwgJ3V1aWQtY2hhcicgfCAndXVpZC1iaW5hcnknIHwgJ2pzb24nIHwgJ2pzb25iJyB8ICd4bWwnO1xuXG4vLyAtLS0gTWV0YWRhdGEgTW9kZWxzIC0tLVxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5PcHRpb25zIHtcbiAgbmFtZT86IHN0cmluZztcbiAgdHlwZT86IENvbHVtblR5cGVzIHwgKHN0cmluZyAmIHt9KTtcbiAgbGVuZ3RoPzogbnVtYmVyO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICBzY2FsZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbmVUb01hbnlPcHRpb25zIHtcbiAgdGFibGU/OiBzdHJpbmc7XG4gIGpvaW5Db2x1bW46IHN0cmluZztcbiAgY2FzY2FkZT86IFwiYWxsXCIgfCBcIm5vbmVcIiB8IFwicGVyc2lzdFwiIHwgXCJtZXJnZVwiIHwgXCJyZW1vdmVcIjtcbiAgaW52ZXJzZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbiAgam9pbkNvbHVtbk5vdE51bGw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hbnlUb09uZU9wdGlvbnMge1xuICBqb2luQ29sdW1uPzogc3RyaW5nO1xuICBjYXNjYWRlPzogXCJhbGxcIiB8IFwibm9uZVwiIHwgXCJwZXJzaXN0XCIgfCBcIm1lcmdlXCIgfCBcInJlbW92ZVwiO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbn1cblxuaW50ZXJmYWNlIFByb3BlcnR5TWV0YWRhdGEge1xuICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcbiAgaXNJZDogYm9vbGVhbjtcbiAgaXNDcmVhdGVkQXQ6IGJvb2xlYW47XG4gIGlzVXBkYXRlZEF0OiBib29sZWFuO1xuICBpc0NyZWF0ZWRCeTogYm9vbGVhbjtcbiAgaXNVcGRhdGVkQnk6IGJvb2xlYW47XG4gIGlzR2VuZXJhdGVkOiBib29sZWFuO1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xuICBjb2x1bW5PcHRpb25zPzogQ29sdW1uT3B0aW9ucztcbiAgb25lVG9NYW55T3B0aW9ucz86IHsgdHlwZTogRnVuY3Rpb247IG9wdGlvbnM6IE9uZVRvTWFueU9wdGlvbnMgfTtcbiAgbWFueVRvT25lT3B0aW9ucz86IHsgdHlwZTogRnVuY3Rpb247IG9wdGlvbnM6IE1hbnlUb09uZU9wdGlvbnMgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlDb25zdHJ1Y3RvciBleHRlbmRzIEZ1bmN0aW9uIHtcbiAgbmV3KC4uLmFyZ3M6IGFueVtdKTogYW55O1xuICAkZW50aXR5X25hbWU6IHN0cmluZztcbiAgJHRhYmxlX25hbWU6IHN0cmluZztcbiAgJGlkX25hbWU6IHN0cmluZztcbiAgJGlkX2NvbHVtbjogc3RyaW5nO1xuICAkaW5pdGlhbGl6ZWQ/OiBib29sZWFuO1xuICAkZG9jdW1lbnRhdGlvbj86IHN0cmluZztcbn1cblxuLy8gLS0tIEdsb2JhbCBNZXRhZGF0YSBDYWNoZSAtLS1cbmNvbnN0IGdsb2JhbENhY2hlOiBXZWFrTWFwPEZ1bmN0aW9uLCBQcm9wZXJ0eU1ldGFkYXRhW10+ID1cbiAgKGdsb2JhbFRoaXMgYXMgYW55KS5fX2RlY29yYXRvcl9tZXRhZGF0YV9jYWNoZV9fIHx8XG4gICgoZ2xvYmFsVGhpcyBhcyBhbnkpLl9fZGVjb3JhdG9yX21ldGFkYXRhX2NhY2hlX18gPSBuZXcgV2Vha01hcCgpKTtcblxuZnVuY3Rpb24gZ2V0TWV0YWRhdGFBcnJheShjb25zdHJ1Y3RvcjogRnVuY3Rpb24pOiBQcm9wZXJ0eU1ldGFkYXRhW10ge1xuICBpZiAoIWdsb2JhbENhY2hlLmhhcyhjb25zdHJ1Y3RvcikpIHtcbiAgICBnbG9iYWxDYWNoZS5zZXQoY29uc3RydWN0b3IsIFtdKTtcbiAgfVxuICByZXR1cm4gZ2xvYmFsQ2FjaGUuZ2V0KGNvbnN0cnVjdG9yKSE7XG59XG5cbi8vIC0tLSBEZWZlciBIZWxwZXIgKEdyYWFsSlMtc2FmZSBtaWNyb3Rhc2spIC0tLVxuZnVuY3Rpb24gZGVmZXIoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgLy8gVXNlcyBQcm9taXNlIG1pY3JvdGFzayBxdWV1ZSBmb3IgZGVmZXJyZWQgZXhlY3V0aW9uXG4gIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZm4pO1xufVxuXG4vLyAtLS0gQ29yZSBQcm9wZXJ0eSBEZWNvcmF0b3IgRmFjdG9yeSAtLS1cbmZ1bmN0aW9uIGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFxuICBraW5kOiBcImNvbHVtblwiIHwgXCJpZFwiIHwgXCJnZW5lcmF0ZWRcIiB8IFwiY3JlYXRlZEF0XCIgfCBcInVwZGF0ZWRBdFwiIHwgXCJjcmVhdGVkQnlcIiB8IFwidXBkYXRlZEJ5XCIsXG4gIG9wdGlvbnM/OiBDb2x1bW5PcHRpb25zXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEAke2tpbmR9IG11c3QgYXBwbHkgdG8gZmllbGRzYCk7XG4gICAgfVxuXG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjdG9yID0gKHRoaXMgYXMgYW55KS5jb25zdHJ1Y3RvciBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcbiAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGNvbnRleHQubmFtZS50b1N0cmluZygpO1xuICAgICAgY29uc3QgbWV0YWRhdGFBcnJheSA9IGdldE1ldGFkYXRhQXJyYXkoY3Rvcik7XG5cbiAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZChcbiAgICAgICAgKG0pID0+IG0ucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcbiAgICAgICk7XG5cbiAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgaXNJZDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRCeTogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRCeTogZmFsc2UsXG4gICAgICAgICAgaXNHZW5lcmF0ZWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBtZXRhZGF0YUFycmF5LnB1c2gobWV0YWRhdGEpO1xuICAgICAgfVxuXG4gICAgICBpZiAoa2luZCA9PT0gXCJpZFwiKSBtZXRhZGF0YS5pc0lkID0gdHJ1ZTtcblx0ICBpZiAoa2luZCA9PT0gXCJjcmVhdGVkQXRcIikgbWV0YWRhdGEuaXNDcmVhdGVkQXQgPSB0cnVlO1xuXHQgIGlmIChraW5kID09PSBcInVwZGF0ZWRBdFwiKSBtZXRhZGF0YS5pc1VwZGF0ZWRBdCA9IHRydWU7XG5cdCAgaWYgKGtpbmQgPT09IFwiY3JlYXRlZEJ5XCIpIG1ldGFkYXRhLmlzQ3JlYXRlZEJ5ID0gdHJ1ZTtcblx0ICBpZiAoa2luZCA9PT0gXCJ1cGRhdGVkQnlcIikgbWV0YWRhdGEuaXNVcGRhdGVkQnkgPSB0cnVlO1xuICAgICAgaWYgKGtpbmQgPT09IFwiZ2VuZXJhdGVkXCIpIG1ldGFkYXRhLmlzR2VuZXJhdGVkID0gdHJ1ZTtcbiAgICAgIGlmIChraW5kID09PSBcImNvbHVtblwiKSBtZXRhZGF0YS5jb2x1bW5PcHRpb25zID0gb3B0aW9ucztcbiAgICB9KTtcbiAgfTtcbn1cblxuLy8gLS0tIEBEb2N1bWVudGF0aW9uIERlY29yYXRvciAoRHVhbC1QdXJwb3NlKSAtLS1cbi8qKlxuICogQWRkcyBkb2N1bWVudGF0aW9uIG1ldGFkYXRhIHRvIGEgY2xhc3Mgb3IgYSBmaWVsZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIERvY3VtZW50YXRpb24oZGVzY3JpcHRpb246IHN0cmluZykge1xuICByZXR1cm4gZnVuY3Rpb24gKFxuICAgIHZhbHVlOiBGdW5jdGlvbiB8IGFueSxcbiAgICBjb250ZXh0OiBDbGFzc0RlY29yYXRvckNvbnRleHQgfCBDbGFzc0ZpZWxkRGVjb3JhdG9yQ29udGV4dFxuICApIHtcbiAgICBpZiAoY29udGV4dC5raW5kID09PSBcImNsYXNzXCIpIHtcbiAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICAodmFsdWUgYXMgRW50aXR5Q29uc3RydWN0b3IpLiRkb2N1bWVudGF0aW9uID0gZGVzY3JpcHRpb247XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKGNvbnRleHQua2luZCA9PT0gXCJmaWVsZFwiKSB7XG4gICAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgY3RvciA9ICh0aGlzIGFzIGFueSkuY29uc3RydWN0b3IgYXMgRW50aXR5Q29uc3RydWN0b3I7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGNvbnRleHQubmFtZS50b1N0cmluZygpO1xuICAgICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoXG4gICAgICAgICAgKG0pID0+IG0ucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgICAgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgIGlzSWQ6IGZhbHNlLFxuXHRcdFx0aXNDcmVhdGVkQXQ6IGZhbHNlLFxuXHRcdFx0aXNVcGRhdGVkQXQ6IGZhbHNlLFxuXHRcdFx0aXNDcmVhdGVkQnk6IGZhbHNlLFxuXHRcdFx0aXNVcGRhdGVkQnk6IGZhbHNlLFxuICAgICAgICAgICAgaXNHZW5lcmF0ZWQ6IGZhbHNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgbWV0YWRhdGFBcnJheS5wdXNoKG1ldGFkYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1ldGFkYXRhLmRvY3VtZW50YXRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cblxuXG4vLyAtLS0gQEVudGl0eSBEZWNvcmF0b3IgLS0tXG4vKipcbiAqIE1hcmtzIGEgY2xhc3MgYXMgYW4gZW50aXR5IGFuZCBpbml0aWF0ZXMgbWV0YWRhdGEgZmluYWxpemF0aW9uLlxuICogQHBhcmFtIGVudGl0eU5hbWUgVGhlIG5hbWUgb2YgdGhlIGVudGl0eSAoZGVmYXVsdHMgdG8gY2xhc3MgbmFtZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbnRpdHkoZW50aXR5TmFtZT86IHN0cmluZykge1xuICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlOiBGdW5jdGlvbiwgY29udGV4dDogQ2xhc3NEZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBEZWZlciBleGVjdXRpb24gdG8gZW5zdXJlIGFsbCBmaWVsZCBkZWNvcmF0b3JzIGhhdmUgcnVuXG4gICAgICBkZWZlcigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGN0b3IgPSB2YWx1ZSBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcblxuICAgICAgICAvLyBQcmV2ZW50IGR1cGxpY2F0ZSByZWdpc3RyYXRpb24gKGlkZW1wb3RlbmN5KVxuICAgICAgICBpZiAoY3Rvci4kaW5pdGlhbGl6ZWQpIHJldHVybjtcbiAgICAgICAgY3Rvci4kaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgIGN0b3IuJGVudGl0eV9uYW1lID0gZW50aXR5TmFtZSB8fCBjdG9yLm5hbWU7XG5cbiAgICAgICAgY29uc3QgbWV0YWRhdGFBcnJheSA9IGdldE1ldGFkYXRhQXJyYXkoY3Rvcik7XG4gICAgICAgIGNvbnN0IGlkTWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoKG0pID0+IG0uaXNJZCk7XG5cbiAgICAgICAgaWYgKGlkTWV0YWRhdGEpIHtcbiAgICAgICAgICBjdG9yLiRpZF9uYW1lID0gaWRNZXRhZGF0YS5wcm9wZXJ0eU5hbWU7XG4gICAgICAgICAgLy8gRGV0ZXJtaW5lIElEIGNvbHVtbiBuYW1lOiB1c2UgZXhwbGljaXQgbmFtZSBvciBjb252ZXJ0IHByb3BlcnR5IG5hbWUgdG8gdXBwZXIgY2FzZVxuICAgICAgICAgIGN0b3IuJGlkX2NvbHVtbiA9XG4gICAgICAgICAgICBpZE1ldGFkYXRhLmNvbHVtbk9wdGlvbnM/Lm5hbWUgfHxcbiAgICAgICAgICAgIGlkTWV0YWRhdGEucHJvcGVydHlOYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGdXR1cmU6IExvZ2ljIHRvIG1hcCBhbGwgcHJvcGVydGllcyB0byBjb2x1bW5zL3JlbGF0aW9ucyBnb2VzIGhlcmVcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufVxuXG4vLyAtLS0gQFRhYmxlIERlY29yYXRvciAtLS1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBkYXRhYmFzZSB0YWJsZSBuYW1lIGZvciB0aGUgZW50aXR5LlxuICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgdGFibGUgbmFtZSAoZGVmYXVsdHMgdG8gdXBwZXJjYXNlIGNsYXNzIG5hbWUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gVGFibGUodGFibGVOYW1lPzogc3RyaW5nKSB7XG4gIHJldHVybiBmdW5jdGlvbiA8VCBleHRlbmRzIGFic3RyYWN0IG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueT4oXG4gICAgdmFsdWU6IFQsXG4gICAgY29udGV4dDogQ2xhc3NEZWNvcmF0b3JDb250ZXh0XG4gICkge1xuICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gdmFsdWUgYXMgYW55O1xuICAgICAgdGFyZ2V0LiR0YWJsZV9uYW1lID0gdGFibGVOYW1lIHx8IGNvbnRleHQubmFtZT8udG9TdHJpbmcoKSB8fCB2YWx1ZS5uYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG59XG5cbi8vIC0tLSBFeHBvcnRlZCBQcm9wZXJ0eSBEZWNvcmF0b3JzIC0tLVxuLyoqXG4gKiBNYXJrcyBhIHByb3BlcnR5IGFzIGEgc3RhbmRhcmQgZGF0YWJhc2UgY29sdW1uLlxuICovXG5leHBvcnQgY29uc3QgQ29sdW1uID0gKG9wdGlvbnM/OiBDb2x1bW5PcHRpb25zKSA9PlxuICBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcImNvbHVtblwiLCBvcHRpb25zKTtcblxuLyoqXG4gKiBNYXJrcyBhIHByb3BlcnR5IGFzIHRoZSBlbnRpdHkncyBwcmltYXJ5IGtleS5cbiAqL1xuZXhwb3J0IGNvbnN0IElkID0gKCkgPT4gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJpZFwiKTtcblxuLyoqXG4gKiBNYXJrcyBhIHByb3BlcnR5IGFzIHRoZSBlbnRpdHkncyBjcmVhdGVkIGF0IHRpbWVzdGFtcC5cbiAqL1xuZXhwb3J0IGNvbnN0IENyZWF0ZWRBdCA9ICgpID0+IGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwiY3JlYXRlZEF0XCIpO1xuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgdGhlIGVudGl0eSdzIHVwZGF0ZSBhdCB0aW1lc3RhbXAuXG4gKi9cbmV4cG9ydCBjb25zdCBVcGRhdGVkQXQgPSAoKSA9PiBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcInVwZGF0ZWRBdFwiKTtcblxuLyoqXG4gKiBNYXJrcyBhIHByb3BlcnR5IGFzIHRoZSBlbnRpdHkncyBjcmVhdGlvbiBhY3Rvci5cbiAqL1xuZXhwb3J0IGNvbnN0IENyZWF0ZWRCeSA9ICgpID0+IGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwiY3JlYXRlZEJ5XCIpO1xuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgdGhlIGVudGl0eSdzIHVwZGF0ZSBhY3Rvci5cbiAqL1xuZXhwb3J0IGNvbnN0IFVwZGF0ZWRCeSA9ICgpID0+IGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwidXBkYXRlZEJ5XCIpO1xuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgYSBnZW5lcmF0ZWQgdmFsdWUgKGUuZy4sIGF1dG8taW5jcmVtZW50KS5cbiAqIEBwYXJhbSBzdHJhdGVneSBUaGUgZ2VuZXJhdGlvbiBzdHJhdGVneSAoZS5nLiwgXCJJREVOVElUWVwiKS4gUGFyYW1ldGVyIGlzIGN1cnJlbnRseSB1bnVzZWQgaW4gbG9naWMuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5lcmF0ZWQgPSAoc3RyYXRlZ3k6IHN0cmluZykgPT5cbiAgY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJnZW5lcmF0ZWRcIik7XG5cbi8qKlxuICogRGVmaW5lcyBhIG9uZS10by1tYW55IHJlbGF0aW9uc2hpcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE9uZVRvTWFueShcbiAgdHlwZUZ1bmN0aW9uOiAoKSA9PiBGdW5jdGlvbixcbiAgb3B0aW9uczogT25lVG9NYW55T3B0aW9uc1xuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoXzogYW55LCBjb250ZXh0OiBDbGFzc0ZpZWxkRGVjb3JhdG9yQ29udGV4dCkge1xuICAgIGlmIChjb250ZXh0LmtpbmQgIT09IFwiZmllbGRcIikgcmV0dXJuO1xuXG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjdG9yID0gKHRoaXMgYXMgYW55KS5jb25zdHJ1Y3RvciBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcbiAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGNvbnRleHQubmFtZS50b1N0cmluZygpO1xuICAgICAgY29uc3QgbWV0YWRhdGFBcnJheSA9IGdldE1ldGFkYXRhQXJyYXkoY3Rvcik7XG5cbiAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZChcbiAgICAgICAgKG0pID0+IG0ucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcbiAgICAgICk7XG5cbiAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgaXNJZDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRCeTogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRCeTogZmFsc2UsXG4gICAgICAgICAgaXNHZW5lcmF0ZWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBtZXRhZGF0YUFycmF5LnB1c2gobWV0YWRhdGEpO1xuICAgICAgfVxuXG4gICAgICBtZXRhZGF0YS5vbmVUb01hbnlPcHRpb25zID0geyB0eXBlOiB0eXBlRnVuY3Rpb24oKSwgb3B0aW9ucyB9O1xuICAgIH0pO1xuICB9O1xufVxuXG4vKipcbiAqIERlZmluZXMgYSBtYW55LXRvLW9uZSByZWxhdGlvbnNoaXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBNYW55VG9PbmUoXG4gIHR5cGVGdW5jdGlvbjogKCkgPT4gRnVuY3Rpb24sXG4gIG9wdGlvbnM6IE1hbnlUb09uZU9wdGlvbnMgPSB7fVxuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoXzogYW55LCBjb250ZXh0OiBDbGFzc0ZpZWxkRGVjb3JhdG9yQ29udGV4dCkge1xuICAgIGlmIChjb250ZXh0LmtpbmQgIT09IFwiZmllbGRcIikgcmV0dXJuO1xuXG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjdG9yID0gKHRoaXMgYXMgYW55KS5jb25zdHJ1Y3RvciBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcbiAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGNvbnRleHQubmFtZS50b1N0cmluZygpO1xuICAgICAgY29uc3QgbWV0YWRhdGFBcnJheSA9IGdldE1ldGFkYXRhQXJyYXkoY3Rvcik7XG5cbiAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZChcbiAgICAgICAgKG0pID0+IG0ucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcbiAgICAgICk7XG5cbiAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgaXNJZDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRCeTogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRCeTogZmFsc2UsXG4gICAgICAgICAgaXNHZW5lcmF0ZWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBtZXRhZGF0YUFycmF5LnB1c2gobWV0YWRhdGEpO1xuICAgICAgfVxuXG4gICAgICBtZXRhZGF0YS5tYW55VG9PbmVPcHRpb25zID0geyB0eXBlOiB0eXBlRnVuY3Rpb24oKSwgb3B0aW9ucyB9O1xuICAgIH0pO1xuICB9O1xufSJdLAogICJtYXBwaW5ncyI6ICJBQTZGQSxNQUFNLGNBQ0gsV0FBbUIsaUNBQ2xCLFdBQW1CLCtCQUErQixvQkFBSSxRQUFRO0FBRWxFLFNBQVMsaUJBQWlCLGFBQTJDO0FBQ25FLE1BQUksQ0FBQyxZQUFZLElBQUksV0FBVyxHQUFHO0FBQ2pDLGdCQUFZLElBQUksYUFBYSxDQUFDLENBQUM7QUFBQSxFQUNqQztBQUNBLFNBQU8sWUFBWSxJQUFJLFdBQVc7QUFDcEM7QUFHQSxTQUFTLE1BQU0sSUFBc0I7QUFFbkMsVUFBUSxRQUFRLEVBQUUsS0FBSyxFQUFFO0FBQzNCO0FBR0EsU0FBUyx3QkFDUCxNQUNBLFNBQ0E7QUFDQSxTQUFPLFNBQVUsR0FBUSxTQUFxQztBQUM1RCxRQUFJLFFBQVEsU0FBUyxTQUFTO0FBQzVCLFlBQU0sSUFBSSxNQUFNLElBQUksSUFBSSx1QkFBdUI7QUFBQSxJQUNqRDtBQUVBLFlBQVEsZUFBZSxXQUFZO0FBQ2pDLFlBQU0sT0FBUSxLQUFhO0FBQzNCLFlBQU0sZUFBZSxRQUFRLEtBQUssU0FBUztBQUMzQyxZQUFNLGdCQUFnQixpQkFBaUIsSUFBSTtBQUUzQyxVQUFJLFdBQVcsY0FBYztBQUFBLFFBQzNCLENBQUMsTUFBTSxFQUFFLGlCQUFpQjtBQUFBLE1BQzVCO0FBRUEsVUFBSSxDQUFDLFVBQVU7QUFDYixtQkFBVztBQUFBLFVBQ1Q7QUFBQSxVQUNBLE1BQU07QUFBQSxVQUNaLGFBQWE7QUFBQSxVQUNiLGFBQWE7QUFBQSxVQUNiLGFBQWE7QUFBQSxVQUNiLGFBQWE7QUFBQSxVQUNQLGFBQWE7QUFBQSxRQUNmO0FBQ0Esc0JB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aerokit/sdk",
3
- "version": "12.68.0",
3
+ "version": "12.70.0",
4
4
  "description": "Unified TypeScript SDK for modern cloud platforms.",
5
5
  "scripts": {
6
6
  "clean": "rm -rf dist",