velocious 1.0.156 → 1.0.158

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.
Files changed (53) hide show
  1. package/README.md +10 -1
  2. package/build/src/configuration-types.d.ts +7 -0
  3. package/build/src/configuration-types.d.ts.map +1 -1
  4. package/build/src/configuration-types.js +3 -1
  5. package/build/src/configuration.d.ts +6 -1
  6. package/build/src/configuration.d.ts.map +1 -1
  7. package/build/src/configuration.js +12 -2
  8. package/build/src/database/drivers/base-column.d.ts +8 -0
  9. package/build/src/database/drivers/base-column.d.ts.map +1 -1
  10. package/build/src/database/drivers/base-column.js +20 -1
  11. package/build/src/database/drivers/base.d.ts +4 -0
  12. package/build/src/database/drivers/base.d.ts.map +1 -1
  13. package/build/src/database/drivers/base.js +8 -1
  14. package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
  15. package/build/src/database/drivers/mssql/index.js +13 -11
  16. package/build/src/database/drivers/mysql/column.d.ts +1 -0
  17. package/build/src/database/drivers/mysql/column.d.ts.map +1 -1
  18. package/build/src/database/drivers/mysql/column.js +12 -6
  19. package/build/src/database/drivers/pgsql/column.d.ts +1 -0
  20. package/build/src/database/drivers/pgsql/column.d.ts.map +1 -1
  21. package/build/src/database/drivers/pgsql/column.js +7 -1
  22. package/build/src/database/drivers/pgsql/index.d.ts.map +1 -1
  23. package/build/src/database/drivers/pgsql/index.js +11 -1
  24. package/build/src/database/drivers/pgsql/table.d.ts.map +1 -1
  25. package/build/src/database/drivers/pgsql/table.js +3 -2
  26. package/build/src/database/drivers/sqlite/sql/alter-table.d.ts.map +1 -1
  27. package/build/src/database/drivers/sqlite/sql/alter-table.js +9 -2
  28. package/build/src/database/query/alter-table-base.d.ts.map +1 -1
  29. package/build/src/database/query/alter-table-base.js +13 -3
  30. package/build/src/database/query/create-table-base.d.ts.map +1 -1
  31. package/build/src/database/query/create-table-base.js +9 -1
  32. package/build/src/database/query/model-class-query.d.ts +5 -0
  33. package/build/src/database/query/model-class-query.d.ts.map +1 -1
  34. package/build/src/database/query/model-class-query.js +122 -1
  35. package/build/src/database/query/where-hash.d.ts.map +1 -1
  36. package/build/src/database/query/where-hash.js +7 -2
  37. package/build/src/database/query/where-model-class-hash.d.ts +71 -0
  38. package/build/src/database/query/where-model-class-hash.d.ts.map +1 -0
  39. package/build/src/database/query/where-model-class-hash.js +195 -0
  40. package/build/src/database/record/index.d.ts +10 -0
  41. package/build/src/database/record/index.d.ts.map +1 -1
  42. package/build/src/database/record/index.js +52 -10
  43. package/build/src/database/table-data/table-column.d.ts +23 -0
  44. package/build/src/database/table-data/table-column.d.ts.map +1 -1
  45. package/build/src/database/table-data/table-column.js +32 -2
  46. package/build/src/testing/test.d.ts +5 -0
  47. package/build/src/testing/test.d.ts.map +1 -1
  48. package/build/src/testing/test.js +32 -6
  49. package/build/src/utils/timezone-context.d.ts +20 -0
  50. package/build/src/utils/timezone-context.d.ts.map +1 -0
  51. package/build/src/utils/timezone-context.js +53 -0
  52. package/build/tsconfig.tsbuildinfo +1 -1
  53. package/package.json +1 -1
@@ -139,6 +139,16 @@ export default class VelociousDatabaseDriversPgsql extends Base {
139
139
  queryToSql(query) { return new QueryParser({ query }).toSql(); }
140
140
  shouldSetAutoIncrementWhenPrimaryKey() { return true; }
141
141
  supportsDefaultPrimaryKeyUUID() { return true; }
142
+ /**
143
+ * @param {any} value - Value to use.
144
+ * @returns {any} - The converted value.
145
+ */
146
+ _convertValue(value) {
147
+ if (typeof value === "boolean") {
148
+ return value ? "true" : "false";
149
+ }
150
+ return super._convertValue(value);
151
+ }
142
152
  /**
143
153
  * @param {any} value - Value to use.
144
154
  * @returns {any} - The escape.
@@ -217,4 +227,4 @@ export default class VelociousDatabaseDriversPgsql extends Base {
217
227
  return await new StructureSql({ driver: this }).toSql();
218
228
  }
219
229
  }
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9wZ3NxbC9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxVQUFVLE1BQU0sc0JBQXNCLENBQUE7QUFDN0MsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFBO0FBQzdCLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxJQUFJLENBQUE7QUFDekIsT0FBTyxjQUFjLE1BQU0sMEJBQTBCLENBQUE7QUFDckQsT0FBTyxXQUFXLE1BQU0sdUJBQXVCLENBQUE7QUFDL0MsT0FBTyxXQUFXLE1BQU0sdUJBQXVCLENBQUE7QUFDL0MsT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUE7QUFDcEMsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUM5QixPQUFPLFNBQVMsTUFBTSxxQkFBcUIsQ0FBQTtBQUMzQyxPQUFPLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQTtBQUNwQyxPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUE7QUFDbEMsT0FBTyxXQUFXLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFBO0FBQzlCLE9BQU8sWUFBWSxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBRXBDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sNkJBQThCLFNBQVEsSUFBSTtJQUM3RCxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO1FBRTdDLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ3hCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsdUNBQXVDO1lBQ3ZDLElBQUksS0FBSyxZQUFZLEtB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T0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO0lBQzFDLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUVyRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUE7SUFDdEIsQ0FBQztJQUVELEtBQUssQ0FBQyx1QkFBdUI7UUFDM0IsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUE7SUFDdkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBQztRQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFBO1FBRXRFLE9BQU8sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxZQUFZO1FBQ2hCLE9BQU8sTUFBTSxJQUFJLFlBQVksQ0FBQyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3ZELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQWx0ZXJUYWJsZSBmcm9tIFwiLi9zcWwvYWx0ZXItdGFibGUuanNcIlxuaW1wb3J0IEJhc2UgZnJvbSBcIi4uL2Jhc2UuanNcIlxuaW1wb3J0IHtDbGllbnR9IGZyb20gXCJwZ1wiXG5pbXBvcnQgQ3JlYXRlRGF0YWJhc2UgZnJvbSBcIi4vc3FsL2NyZWF0ZS1kYXRhYmFzZS5qc1wiXG5pbXBvcnQgQ3JlYXRlSW5kZXggZnJvbSBcIi4vc3FsL2NyZWF0ZS1pbmRleC5qc1wiXG5pbXBvcnQgQ3JlYXRlVGFibGUgZnJvbSBcIi4vc3FsL2NyZWF0ZS10YWJsZS5qc1wiXG5pbXBvcnQgRGVsZXRlIGZyb20gXCIuL3NxbC9kZWxldGUuanNcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBEcm9wVGFibGUgZnJvbSBcIi4vc3FsL2Ryb3AtdGFibGUuanNcIlxuaW1wb3J0IEluc2VydCBmcm9tIFwiLi9zcWwvaW5zZXJ0LmpzXCJcbmltcG9ydCBPcHRpb25zIGZyb20gXCIuL29wdGlvbnMuanNcIlxuaW1wb3J0IFF1ZXJ5UGFyc2VyIGZyb20gXCIuL3F1ZXJ5LXBhcnNlci5qc1wiXG5pbXBvcnQgVGFibGUgZnJvbSBcIi4vdGFibGUuanNcIlxuaW1wb3J0IFN0cnVjdHVyZVNxbCBmcm9tIFwiLi9zdHJ1Y3R1cmUtc3FsLmpzXCJcbmltcG9ydCBVcGRhdGUgZnJvbSBcIi4vc3FsL3VwZGF0ZS5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlRHJpdmVyc1Bnc3FsIGV4dGVuZHMgQmFzZXtcbiAgYXN5bmMgY29ubmVjdCgpIHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgQ2xpZW50KHRoaXMuY29ubmVjdEFyZ3MoKSlcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjbGllbnQuY29ubmVjdCgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIFJlLXRocm93IHRvIHJlY292ZXIgcmVhbCBzdGFjayB0cmFjZVxuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb25uZWN0IHRvIFBvc3RncmVzIHNlcnZlciBmYWlsZWQ6ICR7ZXJyb3IubWVzc2FnZX1gKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb25uZWN0IHRvIFBvc3RncmVzIHNlcnZlciBmYWlsZWQ6ICR7ZXJyb3J9YClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvbm5lY3Rpb24gPSBjbGllbnRcbiAgfVxuXG4gIGFzeW5jIGRpc2Nvbm5lY3QoKSB7XG4gICAgYXdhaXQgdGhpcy5jb25uZWN0aW9uPy5lbmQoKVxuICB9XG5cbiAgY29ubmVjdEFyZ3MoKSB7XG4gICAgY29uc3QgYXJncyA9IHRoaXMuZ2V0QXJncygpXG4gICAgY29uc3QgZm9yd2FyZCA9IFtcImRhdGFiYXNlXCIsIFwiaG9zdFwiLCBcInBhc3N3b3JkXCIsIFwicG9ydFwiXVxuXG4gICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSAqL1xuICAgIGNvbnN0IGNvbm5lY3RBcmdzID0ge31cblxuICAgIGZvciAoY29uc3QgZm9yd2FyZFZhbHVlIG9mIGZvcndhcmQpIHtcbiAgICAgIGlmIChmb3J3YXJkVmFsdWUgaW4gYXJncykgY29ubmVjdEFyZ3NbZm9yd2FyZFZhbHVlXSA9IGRpZ2coYXJncywgZm9yd2FyZFZhbHVlKVxuICAgIH1cblxuICAgIGlmIChcInVzZXJuYW1lXCIgaW4gYXJncykgY29ubmVjdEFyZ3NbXCJ1c2VyXCJdID0gYXJnc1tcInVzZXJuYW1lXCJdXG5cbiAgICByZXR1cm4gY29ubmVjdEFyZ3NcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKCkge1xuICAgIGF3YWl0IHRoaXMuY29ubmVjdGlvbj8uZW5kKClcbiAgICB0aGlzLmNvbm5lY3Rpb24gPSB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL3RhYmxlLWRhdGEvaW5kZXguanNcIikuZGVmYXVsdH0gdGFibGVEYXRhIC0gVGFibGUgZGF0YS5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nW10+fSAtIFJlc29sdmVzIHdpdGggU1FMIHN0YXRlbWVudHMuXG4gICAqL1xuICBhc3luYyBhbHRlclRhYmxlU1FMcyh0YWJsZURhdGEpIHtcbiAgICBjb25zdCBhbHRlckFyZ3MgPSB7dGFibGVEYXRhLCBkcml2ZXI6IHRoaXN9XG4gICAgY29uc3QgYWx0ZXJUYWJsZSA9IG5ldyBBbHRlclRhYmxlKGFsdGVyQXJncylcblxuICAgIHJldHVybiBhd2FpdCBhbHRlclRhYmxlLnRvU1FMcygpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGFiYXNlTmFtZSAtIERhdGFiYXNlIG5hbWUuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc10gLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbYXJncy5pZk5vdEV4aXN0c10gLSBXaGV0aGVyIGlmIG5vdCBleGlzdHMuXG4gICAqIEByZXR1cm5zIHtzdHJpbmdbXX0gLSBTUUwgc3RhdGVtZW50cy5cbiAgICovXG4gIGNyZWF0ZURhdGFiYXNlU3FsKGRhdGFiYXNlTmFtZSwgYXJncykge1xuICAgIGNvbnN0IGNyZWF0ZUFyZ3MgPSBPYmplY3QuYXNzaWduKHtkYXRhYmFzZU5hbWUsIGRyaXZlcjogdGhpc30sIGFyZ3MpXG4gICAgY29uc3QgY3JlYXRlRGF0YWJhc2UgPSBuZXcgQ3JlYXRlRGF0YWJhc2UoY3JlYXRlQXJncylcblxuICAgIHJldHVybiBjcmVhdGVEYXRhYmFzZS50b1NxbCgpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9iYXNlLmpzXCIpLkNyZWF0ZUluZGV4U3FsQXJnc30gaW5kZXhEYXRhIC0gSW5kZXggZGF0YS5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nW10+fSAtIFJlc29sdmVzIHdpdGggU1FMIHN0YXRlbWVudHMuXG4gICAqL1xuICBhc3luYyBjcmVhdGVJbmRleFNRTHMoaW5kZXhEYXRhKSB7XG4gICAgY29uc3QgY3JlYXRlQXJncyA9IE9iamVjdC5hc3NpZ24oe2RyaXZlcjogdGhpc30sIGluZGV4RGF0YSlcbiAgICBjb25zdCBjcmVhdGVJbmRleCA9IG5ldyBDcmVhdGVJbmRleChjcmVhdGVBcmdzKVxuXG4gICAgcmV0dXJuIGF3YWl0IGNyZWF0ZUluZGV4LnRvU1FMcygpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi90YWJsZS1kYXRhL2luZGV4LmpzXCIpLmRlZmF1bHR9IHRhYmxlRGF0YSAtIFRhYmxlIGRhdGEuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZ1tdPn0gLSBSZXNvbHZlcyB3aXRoIFNRTCBzdGF0ZW1lbnRzLlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlVGFibGVTcWwodGFibGVEYXRhKSB7XG4gICAgY29uc3QgY3JlYXRlQXJncyA9IHt0YWJsZURhdGEsIGRyaXZlcjogdGhpcywgaW5kZXhJbkNyZWF0ZVRhYmxlOiBmYWxzZX1cbiAgICBjb25zdCBjcmVhdGVUYWJsZSA9IG5ldyBDcmVhdGVUYWJsZShjcmVhdGVBcmdzKVxuXG4gICAgcmV0dXJuIGF3YWl0IGNyZWF0ZVRhYmxlLnRvU3FsKClcbiAgfVxuXG4gIGFzeW5jIGN1cnJlbnREYXRhYmFzZSgpIHtcbiAgICBjb25zdCByb3dzID0gYXdhaXQgdGhpcy5xdWVyeShcIlNFTEVDVCBDVVJSRU5UX0RBVEFCQVNFKCkgQVMgZGJfbmFtZVwiKVxuXG4gICAgcmV0dXJuIGRpZ2cocm93cywgMCwgXCJkYl9uYW1lXCIpXG4gIH1cblxuICBhc3luYyBkaXNhYmxlRm9yZWlnbktleXMoKSB7XG4gICAgYXdhaXQgdGhpcy5xdWVyeShcIlNFVCBzZXNzaW9uX3JlcGxpY2F0aW9uX3JvbGUgPSAncmVwbGljYSdcIilcbiAgfVxuXG4gIGFzeW5jIGVuYWJsZUZvcmVpZ25LZXlzKCkge1xuICAgIGF3YWl0IHRoaXMucXVlcnkoXCJTRVQgc2Vzc2lvbl9yZXBsaWNhdGlvbl9yb2xlID0gJ29yaWdpbidcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGFibGUgbmFtZS5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9iYXNlLmpzXCIpLkRyb3BUYWJsZVNxbEFyZ3NUeXBlfSBbYXJnc10gLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nW10+fSAtIFJlc29sdmVzIHdpdGggU1FMIHN0YXRlbWVudHMuXG4gICAqL1xuICBhc3luYyBkcm9wVGFibGVTUUxzKHRhYmxlTmFtZSwgYXJncyA9IHt9KSB7XG4gICAgY29uc3QgZHJvcEFyZ3MgPSBPYmplY3QuYXNzaWduKHt0YWJsZU5hbWUsIGRyaXZlcjogdGhpc30sIGFyZ3MpXG4gICAgY29uc3QgZHJvcFRhYmxlID0gbmV3IERyb3BUYWJsZShkcm9wQXJncylcblxuICAgIHJldHVybiBhd2FpdCBkcm9wVGFibGUudG9TUUxzKClcbiAgfVxuXG4gIGdldFR5cGUoKSB7IHJldHVybiBcInBnc3FsXCIgfVxuICBwcmltYXJ5S2V5VHlwZSgpIHsgcmV0dXJuIFwiYmlnaW50XCIgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3FsIC0gU1FMIHN0cmluZy5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi4vYmFzZS5qc1wiKS5RdWVyeVJlc3VsdFR5cGU+fSAtIFJlc29sdmVzIHdpdGggdGhlIHF1ZXJ5IGFjdHVhbC5cbiAgICovXG4gIGFzeW5jIF9xdWVyeUFjdHVhbChzcWwpIHtcbiAgICBsZXQgcmVzcG9uc2VcblxuICAgIGlmICghdGhpcy5jb25uZWN0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJOb3QgeWV0IGNvbm5lY3RlZFwiKVxuXG4gICAgdHJ5IHtcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb25uZWN0aW9uLnF1ZXJ5KHNxbClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBRdWVyeSBmYWlsZWQ6ICR7ZXJyb3IubWVzc2FnZX0gd2l0aCBTUUw6ICR7c3FsfWApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFF1ZXJ5IGZhaWxlZDogJHtlcnJvcn0gd2l0aCBTUUw6ICR7c3FsfWApXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3BvbnNlLnJvd3NcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL3F1ZXJ5L2luZGV4LmpzXCIpLmRlZmF1bHR9IHF1ZXJ5IC0gUXVlcnkgaW5zdGFuY2UuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gU1FMIHN0cmluZy5cbiAgICovXG4gIHF1ZXJ5VG9TcWwocXVlcnkpIHsgcmV0dXJuIG5ldyBRdWVyeVBhcnNlcih7cXVlcnl9KS50b1NxbCgpIH1cbiAgc2hvdWxkU2V0QXV0b0luY3JlbWVudFdoZW5QcmltYXJ5S2V5KCkgeyByZXR1cm4gdHJ1ZSB9XG4gIHN1cHBvcnRzRGVmYXVsdFByaW1hcnlLZXlVVUlEKCkgeyByZXR1cm4gdHJ1ZSB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7YW55fSB2YWx1ZSAtIFZhbHVlIHRvIHVzZS5cbiAgICogQHJldHVybnMge2FueX0gLSBUaGUgZXNjYXBlLlxuICAgKi9cbiAgZXNjYXBlKHZhbHVlKSB7XG4gICAgaWYgKCF0aGlzLmNvbm5lY3Rpb24pIHRocm93IG5ldyBFcnJvcihcIkNhbid0IGVzY2FwZSBiZWZvcmUgY29ubmVjdGVkXCIpXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHZhbHVlXG5cbiAgICBjb25zdCBlc2NhcGVkVmFsdWVXaXRoUXVvdGVzID0gdGhpcy5jb25uZWN0aW9uLmVzY2FwZUxpdGVyYWwodGhpcy5fY29udmVydFZhbHVlKHZhbHVlKSlcblxuICAgIHJldHVybiBlc2NhcGVkVmFsdWVXaXRoUXVvdGVzLnNsaWNlKDEsIGVzY2FwZWRWYWx1ZVdpdGhRdW90ZXMubGVuZ3RoIC0gMSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2FueX0gdmFsdWUgLSBWYWx1ZSB0byB1c2UuXG4gICAqIEByZXR1cm5zIHtzdHJpbmcgfCBudW1iZXJ9IC0gVGhlIHF1b3RlZCB2YWx1ZS5cbiAgICovXG4gIHF1b3RlKHZhbHVlKSB7XG4gICAgaWYgKCF0aGlzLmNvbm5lY3Rpb24pIHRocm93IG5ldyBFcnJvcihcIkNhbid0IGVzY2FwZSBiZWZvcmUgY29ubmVjdGVkXCIpXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHZhbHVlXG5cbiAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLmVzY2FwZUxpdGVyYWwodGhpcy5fY29udmVydFZhbHVlKHZhbHVlKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2Jhc2UuanNcIikuRGVsZXRlU3FsQXJnc1R5cGV9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBTUUwgc3RyaW5nLlxuICAgKi9cbiAgZGVsZXRlU3FsKHt0YWJsZU5hbWUsIGNvbmRpdGlvbnN9KSB7XG4gICAgY29uc3QgZGVsZXRlSW5zdHJ1Y3Rpb24gPSBuZXcgRGVsZXRlKHtjb25kaXRpb25zLCBkcml2ZXI6IHRoaXMsIHRhYmxlTmFtZX0pXG5cbiAgICByZXR1cm4gZGVsZXRlSW5zdHJ1Y3Rpb24udG9TcWwoKVxuICB9XG5cbiAgLyoqXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2Jhc2UuanNcIikuSW5zZXJ0U3FsQXJnc1R5cGV9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBTUUwgc3RyaW5nLlxuICAgKi9cbiAgaW5zZXJ0U3FsKGFyZ3MpIHtcbiAgICBjb25zdCBpbnNlcnRBcmdzID0gT2JqZWN0LmFzc2lnbih7ZHJpdmVyOiB0aGlzfSwgYXJncylcbiAgICBjb25zdCBpbnNlcnQgPSBuZXcgSW5zZXJ0KGluc2VydEFyZ3MpXG5cbiAgICByZXR1cm4gaW5zZXJ0LnRvU3FsKClcbiAgfVxuXG4gIGFzeW5jIGdldFRhYmxlcygpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnF1ZXJ5KFwiU0VMRUNUICogRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIFdIRVJFIHRhYmxlX2NhdGFsb2cgPSBDVVJSRU5UX0RBVEFCQVNFKCkgQU5EIHRhYmxlX3NjaGVtYSA9ICdwdWJsaWMnXCIpXG4gICAgY29uc3QgdGFibGVzID0gW11cblxuICAgIGZvciAoY29uc3Qgcm93IG9mIHJlc3VsdCkge1xuICAgICAgY29uc3QgdGFibGUgPSBuZXcgVGFibGUodGhpcywgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSAqLyAocm93KSlcblxuICAgICAgdGFibGVzLnB1c2godGFibGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRhYmxlc1xuICB9XG5cbiAgYXN5bmMgbGFzdEluc2VydElEKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucXVlcnkoXCJTRUxFQ1QgTEFTVFZBTCgpIEFTIGxhc3RfaW5zZXJ0X2lkXCIpXG5cbiAgICByZXR1cm4gZGlnZyhyZXN1bHQsIDAsIFwibGFzdF9pbnNlcnRfaWRcIilcbiAgfVxuXG4gIG9wdGlvbnMoKSB7XG4gICAgaWYgKCF0aGlzLl9vcHRpb25zKSB0aGlzLl9vcHRpb25zID0gbmV3IE9wdGlvbnModGhpcylcblxuICAgIHJldHVybiB0aGlzLl9vcHRpb25zXG4gIH1cblxuICBhc3luYyBfc3RhcnRUcmFuc2FjdGlvbkFjdGlvbigpIHtcbiAgICBhd2FpdCB0aGlzLnF1ZXJ5KFwiU1RBUlQgVFJBTlNBQ1RJT05cIilcbiAgfVxuXG4gIC8qKlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9iYXNlLmpzXCIpLlVwZGF0ZVNxbEFyZ3NUeXBlfSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gU1FMIHN0cmluZy5cbiAgICovXG4gIHVwZGF0ZVNxbCh7Y29uZGl0aW9ucywgZGF0YSwgdGFibGVOYW1lfSkge1xuICAgIGNvbnN0IHVwZGF0ZSA9IG5ldyBVcGRhdGUoe2NvbmRpdGlvbnMsIGRhdGEsIGRyaXZlcjogdGhpcywgdGFibGVOYW1lfSlcblxuICAgIHJldHVybiB1cGRhdGUudG9TcWwoKVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZyB8IG51bGw+fSAtIFJlc29sdmVzIHdpdGggU1FMIHN0cmluZy5cbiAgICovXG4gIGFzeW5jIHN0cnVjdHVyZVNxbCgpIHtcbiAgICByZXR1cm4gYXdhaXQgbmV3IFN0cnVjdHVyZVNxbCh7ZHJpdmVyOiB0aGlzfSkudG9TcWwoKVxuICB9XG59XG5cbiJdfQ==
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9wZ3NxbC9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxVQUFVLE1BQU0sc0JBQXNCLENBQUE7QUFDN0MsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFBO0FBQzdCLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxJQUFJLENBQUE7QUFDekIsT0FBTyxjQUFjLE1BQU0sMEJBQTBCLENBQUE7QUFDckQsT0FBTyxXQUFXLE1BQU0sdUJBQXVCLENBQUE7QUFDL0MsT0FBTyxXQUFXLE1BQU0sdUJBQXVCLENBQUE7QUFDL0MsT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUE7QUFDcEMsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUM5QixPQUFPLFNBQVMsTUFBTSxxQkFBcUIsQ0FBQTtBQUMzQyxPQUFPLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQTtBQUNwQyxPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUE7QUFDbEMsT0FBTyxXQUFXLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFBO0FBQzlCLE9BQU8sWUFBWSxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBRXBDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sNkJBQThCLFNBQVEsSUFBSTtJQUM3RCxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO1FBRTdDLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ3hCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsdUNBQXVDO1lBQ3ZDLElBQUksS0FBSyxZQUFZLEtB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Q0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFFMUUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNwQixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVk7UUFDaEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUE7UUFFckUsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO0lBQzFDLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUVyRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUE7SUFDdEIsQ0FBQztJQUVELEtBQUssQ0FBQyx1QkFBdUI7UUFDM0IsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUE7SUFDdkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBQztRQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFBO1FBRXRFLE9BQU8sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxZQUFZO1FBQ2hCLE9BQU8sTUFBTSxJQUFJLFlBQVksQ0FBQyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3ZELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQWx0ZXJUYWJsZSBmcm9tIFwiLi9zcWwvYWx0ZXItdGFibGUuanNcIlxuaW1wb3J0IEJhc2UgZnJvbSBcIi4uL2Jhc2UuanNcIlxuaW1wb3J0IHtDbGllbnR9IGZyb20gXCJwZ1wiXG5pbXBvcnQgQ3JlYXRlRGF0YWJhc2UgZnJvbSBcIi4vc3FsL2NyZWF0ZS1kYXRhYmFzZS5qc1wiXG5pbXBvcnQgQ3JlYXRlSW5kZXggZnJvbSBcIi4vc3FsL2NyZWF0ZS1pbmRleC5qc1wiXG5pbXBvcnQgQ3JlYXRlVGFibGUgZnJvbSBcIi4vc3FsL2NyZWF0ZS10YWJsZS5qc1wiXG5pbXBvcnQgRGVsZXRlIGZyb20gXCIuL3NxbC9kZWxldGUuanNcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBEcm9wVGFibGUgZnJvbSBcIi4vc3FsL2Ryb3AtdGFibGUuanNcIlxuaW1wb3J0IEluc2VydCBmcm9tIFwiLi9zcWwvaW5zZXJ0LmpzXCJcbmltcG9ydCBPcHRpb25zIGZyb20gXCIuL29wdGlvbnMuanNcIlxuaW1wb3J0IFF1ZXJ5UGFyc2VyIGZyb20gXCIuL3F1ZXJ5LXBhcnNlci5qc1wiXG5pbXBvcnQgVGFibGUgZnJvbSBcIi4vdGFibGUuanNcIlxuaW1wb3J0IFN0cnVjdHVyZVNxbCBmcm9tIFwiLi9zdHJ1Y3R1cmUtc3FsLmpzXCJcbmltcG9ydCBVcGRhdGUgZnJvbSBcIi4vc3FsL3VwZGF0ZS5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlRHJpdmVyc1Bnc3FsIGV4dGVuZHMgQmFzZXtcbiAgYXN5bmMgY29ubmVjdCgpIHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgQ2xpZW50KHRoaXMuY29ubmVjdEFyZ3MoKSlcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjbGllbnQuY29ubmVjdCgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIFJlLXRocm93IHRvIHJlY292ZXIgcmVhbCBzdGFjayB0cmFjZVxuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb25uZWN0IHRvIFBvc3RncmVzIHNlcnZlciBmYWlsZWQ6ICR7ZXJyb3IubWVzc2FnZX1gKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb25uZWN0IHRvIFBvc3RncmVzIHNlcnZlciBmYWlsZWQ6ICR7ZXJyb3J9YClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvbm5lY3Rpb24gPSBjbGllbnRcbiAgfVxuXG4gIGFzeW5jIGRpc2Nvbm5lY3QoKSB7XG4gICAgYXdhaXQgdGhpcy5jb25uZWN0aW9uPy5lbmQoKVxuICB9XG5cbiAgY29ubmVjdEFyZ3MoKSB7XG4gICAgY29uc3QgYXJncyA9IHRoaXMuZ2V0QXJncygpXG4gICAgY29uc3QgZm9yd2FyZCA9IFtcImRhdGFiYXNlXCIsIFwiaG9zdFwiLCBcInBhc3N3b3JkXCIsIFwicG9ydFwiXVxuXG4gICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSAqL1xuICAgIGNvbnN0IGNvbm5lY3RBcmdzID0ge31cblxuICAgIGZvciAoY29uc3QgZm9yd2FyZFZhbHVlIG9mIGZvcndhcmQpIHtcbiAgICAgIGlmIChmb3J3YXJkVmFsdWUgaW4gYXJncykgY29ubmVjdEFyZ3NbZm9yd2FyZFZhbHVlXSA9IGRpZ2coYXJncywgZm9yd2FyZFZhbHVlKVxuICAgIH1cblxuICAgIGlmIChcInVzZXJuYW1lXCIgaW4gYXJncykgY29ubmVjdEFyZ3NbXCJ1c2VyXCJdID0gYXJnc1tcInVzZXJuYW1lXCJdXG5cbiAgICByZXR1cm4gY29ubmVjdEFyZ3NcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKCkge1xuICAgIGF3YWl0IHRoaXMuY29ubmVjdGlvbj8uZW5kKClcbiAgICB0aGlzLmNvbm5lY3Rpb24gPSB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL3RhYmxlLWRhdGEvaW5kZXguanNcIikuZGVmYXVsdH0gdGFibGVEYXRhIC0gVGFibGUgZGF0YS5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nW10+fSAtIFJlc29sdmVzIHdpdGggU1FMIHN0YXRlbWVudHMuXG4gICAqL1xuICBhc3luYyBhbHRlclRhYmxlU1FMcyh0YWJsZURhdGEpIHtcbiAgICBjb25zdCBhbHRlckFyZ3MgPSB7dGFibGVEYXRhLCBkcml2ZXI6IHRoaXN9XG4gICAgY29uc3QgYWx0ZXJUYWJsZSA9IG5ldyBBbHRlclRhYmxlKGFsdGVyQXJncylcblxuICAgIHJldHVybiBhd2FpdCBhbHRlclRhYmxlLnRvU1FMcygpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGFiYXNlTmFtZSAtIERhdGFiYXNlIG5hbWUuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc10gLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbYXJncy5pZk5vdEV4aXN0c10gLSBXaGV0aGVyIGlmIG5vdCBleGlzdHMuXG4gICAqIEByZXR1cm5zIHtzdHJpbmdbXX0gLSBTUUwgc3RhdGVtZW50cy5cbiAgICovXG4gIGNyZWF0ZURhdGFiYXNlU3FsKGRhdGFiYXNlTmFtZSwgYXJncykge1xuICAgIGNvbnN0IGNyZWF0ZUFyZ3MgPSBPYmplY3QuYXNzaWduKHtkYXRhYmFzZU5hbWUsIGRyaXZlcjogdGhpc30sIGFyZ3MpXG4gICAgY29uc3QgY3JlYXRlRGF0YWJhc2UgPSBuZXcgQ3JlYXRlRGF0YWJhc2UoY3JlYXRlQXJncylcblxuICAgIHJldHVybiBjcmVhdGVEYXRhYmFzZS50b1NxbCgpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9iYXNlLmpzXCIpLkNyZWF0ZUluZGV4U3FsQXJnc30gaW5kZXhEYXRhIC0gSW5kZXggZGF0YS5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nW10+fSAtIFJlc29sdmVzIHdpdGggU1FMIHN0YXRlbWVudHMuXG4gICAqL1xuICBhc3luYyBjcmVhdGVJbmRleFNRTHMoaW5kZXhEYXRhKSB7XG4gICAgY29uc3QgY3JlYXRlQXJncyA9IE9iamVjdC5hc3NpZ24oe2RyaXZlcjogdGhpc30sIGluZGV4RGF0YSlcbiAgICBjb25zdCBjcmVhdGVJbmRleCA9IG5ldyBDcmVhdGVJbmRleChjcmVhdGVBcmdzKVxuXG4gICAgcmV0dXJuIGF3YWl0IGNyZWF0ZUluZGV4LnRvU1FMcygpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi90YWJsZS1kYXRhL2luZGV4LmpzXCIpLmRlZmF1bHR9IHRhYmxlRGF0YSAtIFRhYmxlIGRhdGEuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZ1tdPn0gLSBSZXNvbHZlcyB3aXRoIFNRTCBzdGF0ZW1lbnRzLlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlVGFibGVTcWwodGFibGVEYXRhKSB7XG4gICAgY29uc3QgY3JlYXRlQXJncyA9IHt0YWJsZURhdGEsIGRyaXZlcjogdGhpcywgaW5kZXhJbkNyZWF0ZVRhYmxlOiBmYWxzZX1cbiAgICBjb25zdCBjcmVhdGVUYWJsZSA9IG5ldyBDcmVhdGVUYWJsZShjcmVhdGVBcmdzKVxuXG4gICAgcmV0dXJuIGF3YWl0IGNyZWF0ZVRhYmxlLnRvU3FsKClcbiAgfVxuXG4gIGFzeW5jIGN1cnJlbnREYXRhYmFzZSgpIHtcbiAgICBjb25zdCByb3dzID0gYXdhaXQgdGhpcy5xdWVyeShcIlNFTEVDVCBDVVJSRU5UX0RBVEFCQVNFKCkgQVMgZGJfbmFtZVwiKVxuXG4gICAgcmV0dXJuIGRpZ2cocm93cywgMCwgXCJkYl9uYW1lXCIpXG4gIH1cblxuICBhc3luYyBkaXNhYmxlRm9yZWlnbktleXMoKSB7XG4gICAgYXdhaXQgdGhpcy5xdWVyeShcIlNFVCBzZXNzaW9uX3JlcGxpY2F0aW9uX3JvbGUgPSAncmVwbGljYSdcIilcbiAgfVxuXG4gIGFzeW5jIGVuYWJsZUZvcmVpZ25LZXlzKCkge1xuICAgIGF3YWl0IHRoaXMucXVlcnkoXCJTRVQgc2Vzc2lvbl9yZXBsaWNhdGlvbl9yb2xlID0gJ29yaWdpbidcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGFibGUgbmFtZS5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9iYXNlLmpzXCIpLkRyb3BUYWJsZVNxbEFyZ3NUeXBlfSBbYXJnc10gLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nW10+fSAtIFJlc29sdmVzIHdpdGggU1FMIHN0YXRlbWVudHMuXG4gICAqL1xuICBhc3luYyBkcm9wVGFibGVTUUxzKHRhYmxlTmFtZSwgYXJncyA9IHt9KSB7XG4gICAgY29uc3QgZHJvcEFyZ3MgPSBPYmplY3QuYXNzaWduKHt0YWJsZU5hbWUsIGRyaXZlcjogdGhpc30sIGFyZ3MpXG4gICAgY29uc3QgZHJvcFRhYmxlID0gbmV3IERyb3BUYWJsZShkcm9wQXJncylcblxuICAgIHJldHVybiBhd2FpdCBkcm9wVGFibGUudG9TUUxzKClcbiAgfVxuXG4gIGdldFR5cGUoKSB7IHJldHVybiBcInBnc3FsXCIgfVxuICBwcmltYXJ5S2V5VHlwZSgpIHsgcmV0dXJuIFwiYmlnaW50XCIgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3FsIC0gU1FMIHN0cmluZy5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi4vYmFzZS5qc1wiKS5RdWVyeVJlc3VsdFR5cGU+fSAtIFJlc29sdmVzIHdpdGggdGhlIHF1ZXJ5IGFjdHVhbC5cbiAgICovXG4gIGFzeW5jIF9xdWVyeUFjdHVhbChzcWwpIHtcbiAgICBsZXQgcmVzcG9uc2VcblxuICAgIGlmICghdGhpcy5jb25uZWN0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJOb3QgeWV0IGNvbm5lY3RlZFwiKVxuXG4gICAgdHJ5IHtcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb25uZWN0aW9uLnF1ZXJ5KHNxbClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBRdWVyeSBmYWlsZWQ6ICR7ZXJyb3IubWVzc2FnZX0gd2l0aCBTUUw6ICR7c3FsfWApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFF1ZXJ5IGZhaWxlZDogJHtlcnJvcn0gd2l0aCBTUUw6ICR7c3FsfWApXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3BvbnNlLnJvd3NcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL3F1ZXJ5L2luZGV4LmpzXCIpLmRlZmF1bHR9IHF1ZXJ5IC0gUXVlcnkgaW5zdGFuY2UuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gU1FMIHN0cmluZy5cbiAgICovXG4gIHF1ZXJ5VG9TcWwocXVlcnkpIHsgcmV0dXJuIG5ldyBRdWVyeVBhcnNlcih7cXVlcnl9KS50b1NxbCgpIH1cbiAgc2hvdWxkU2V0QXV0b0luY3JlbWVudFdoZW5QcmltYXJ5S2V5KCkgeyByZXR1cm4gdHJ1ZSB9XG4gIHN1cHBvcnRzRGVmYXVsdFByaW1hcnlLZXlVVUlEKCkgeyByZXR1cm4gdHJ1ZSB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7YW55fSB2YWx1ZSAtIFZhbHVlIHRvIHVzZS5cbiAgICogQHJldHVybnMge2FueX0gLSBUaGUgY29udmVydGVkIHZhbHVlLlxuICAgKi9cbiAgX2NvbnZlcnRWYWx1ZSh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPyBcInRydWVcIiA6IFwiZmFsc2VcIlxuICAgIH1cblxuICAgIHJldHVybiBzdXBlci5fY29udmVydFZhbHVlKHZhbHVlKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7YW55fSB2YWx1ZSAtIFZhbHVlIHRvIHVzZS5cbiAgICogQHJldHVybnMge2FueX0gLSBUaGUgZXNjYXBlLlxuICAgKi9cbiAgZXNjYXBlKHZhbHVlKSB7XG4gICAgaWYgKCF0aGlzLmNvbm5lY3Rpb24pIHRocm93IG5ldyBFcnJvcihcIkNhbid0IGVzY2FwZSBiZWZvcmUgY29ubmVjdGVkXCIpXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHZhbHVlXG5cbiAgICBjb25zdCBlc2NhcGVkVmFsdWVXaXRoUXVvdGVzID0gdGhpcy5jb25uZWN0aW9uLmVzY2FwZUxpdGVyYWwodGhpcy5fY29udmVydFZhbHVlKHZhbHVlKSlcblxuICAgIHJldHVybiBlc2NhcGVkVmFsdWVXaXRoUXVvdGVzLnNsaWNlKDEsIGVzY2FwZWRWYWx1ZVdpdGhRdW90ZXMubGVuZ3RoIC0gMSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2FueX0gdmFsdWUgLSBWYWx1ZSB0byB1c2UuXG4gICAqIEByZXR1cm5zIHtzdHJpbmcgfCBudW1iZXJ9IC0gVGhlIHF1b3RlZCB2YWx1ZS5cbiAgICovXG4gIHF1b3RlKHZhbHVlKSB7XG4gICAgaWYgKCF0aGlzLmNvbm5lY3Rpb24pIHRocm93IG5ldyBFcnJvcihcIkNhbid0IGVzY2FwZSBiZWZvcmUgY29ubmVjdGVkXCIpXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHZhbHVlXG5cbiAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLmVzY2FwZUxpdGVyYWwodGhpcy5fY29udmVydFZhbHVlKHZhbHVlKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2Jhc2UuanNcIikuRGVsZXRlU3FsQXJnc1R5cGV9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBTUUwgc3RyaW5nLlxuICAgKi9cbiAgZGVsZXRlU3FsKHt0YWJsZU5hbWUsIGNvbmRpdGlvbnN9KSB7XG4gICAgY29uc3QgZGVsZXRlSW5zdHJ1Y3Rpb24gPSBuZXcgRGVsZXRlKHtjb25kaXRpb25zLCBkcml2ZXI6IHRoaXMsIHRhYmxlTmFtZX0pXG5cbiAgICByZXR1cm4gZGVsZXRlSW5zdHJ1Y3Rpb24udG9TcWwoKVxuICB9XG5cbiAgLyoqXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2Jhc2UuanNcIikuSW5zZXJ0U3FsQXJnc1R5cGV9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBTUUwgc3RyaW5nLlxuICAgKi9cbiAgaW5zZXJ0U3FsKGFyZ3MpIHtcbiAgICBjb25zdCBpbnNlcnRBcmdzID0gT2JqZWN0LmFzc2lnbih7ZHJpdmVyOiB0aGlzfSwgYXJncylcbiAgICBjb25zdCBpbnNlcnQgPSBuZXcgSW5zZXJ0KGluc2VydEFyZ3MpXG5cbiAgICByZXR1cm4gaW5zZXJ0LnRvU3FsKClcbiAgfVxuXG4gIGFzeW5jIGdldFRhYmxlcygpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnF1ZXJ5KFwiU0VMRUNUICogRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIFdIRVJFIHRhYmxlX2NhdGFsb2cgPSBDVVJSRU5UX0RBVEFCQVNFKCkgQU5EIHRhYmxlX3NjaGVtYSA9ICdwdWJsaWMnXCIpXG4gICAgY29uc3QgdGFibGVzID0gW11cblxuICAgIGZvciAoY29uc3Qgcm93IG9mIHJlc3VsdCkge1xuICAgICAgY29uc3QgdGFibGUgPSBuZXcgVGFibGUodGhpcywgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSAqLyAocm93KSlcblxuICAgICAgdGFibGVzLnB1c2godGFibGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRhYmxlc1xuICB9XG5cbiAgYXN5bmMgbGFzdEluc2VydElEKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucXVlcnkoXCJTRUxFQ1QgTEFTVFZBTCgpIEFTIGxhc3RfaW5zZXJ0X2lkXCIpXG5cbiAgICByZXR1cm4gZGlnZyhyZXN1bHQsIDAsIFwibGFzdF9pbnNlcnRfaWRcIilcbiAgfVxuXG4gIG9wdGlvbnMoKSB7XG4gICAgaWYgKCF0aGlzLl9vcHRpb25zKSB0aGlzLl9vcHRpb25zID0gbmV3IE9wdGlvbnModGhpcylcblxuICAgIHJldHVybiB0aGlzLl9vcHRpb25zXG4gIH1cblxuICBhc3luYyBfc3RhcnRUcmFuc2FjdGlvbkFjdGlvbigpIHtcbiAgICBhd2FpdCB0aGlzLnF1ZXJ5KFwiU1RBUlQgVFJBTlNBQ1RJT05cIilcbiAgfVxuXG4gIC8qKlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9iYXNlLmpzXCIpLlVwZGF0ZVNxbEFyZ3NUeXBlfSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gU1FMIHN0cmluZy5cbiAgICovXG4gIHVwZGF0ZVNxbCh7Y29uZGl0aW9ucywgZGF0YSwgdGFibGVOYW1lfSkge1xuICAgIGNvbnN0IHVwZGF0ZSA9IG5ldyBVcGRhdGUoe2NvbmRpdGlvbnMsIGRhdGEsIGRyaXZlcjogdGhpcywgdGFibGVOYW1lfSlcblxuICAgIHJldHVybiB1cGRhdGUudG9TcWwoKVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZyB8IG51bGw+fSAtIFJlc29sdmVzIHdpdGggU1FMIHN0cmluZy5cbiAgICovXG4gIGFzeW5jIHN0cnVjdHVyZVNxbCgpIHtcbiAgICByZXR1cm4gYXdhaXQgbmV3IFN0cnVjdHVyZVNxbCh7ZHJpdmVyOiB0aGlzfSkudG9TcWwoKVxuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/pgsql/table.js"],"names":[],"mappings":"AAOA;IACE;;;OAGG;IACH,oBAHW,OAAO,YAAY,EAAE,OAAO,QAC5B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAMhC;IAFC,6BAAgB;IAIlB,gCAkCC;IAED,wCAkCC;CAmCF;sBAzHqB,kBAAkB;mBACrB,aAAa;uBAET,kBAAkB"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/pgsql/table.js"],"names":[],"mappings":"AAOA;IACE;;;OAGG;IACH,oBAHW,OAAO,YAAY,EAAE,OAAO,QAC5B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAMhC;IAFC,6BAAgB;IAIlB,gCAmCC;IAED,wCAkCC;CAmCF;sBA1HqB,kBAAkB;mBACrB,aAAa;uBAET,kBAAkB"}
@@ -17,7 +17,8 @@ export default class VelociousDatabaseDriversPgsqlTable extends BaseTable {
17
17
  const result = await this.driver.query(`
18
18
  SELECT
19
19
  columns.*,
20
- CASE WHEN key_column_usage.column_name IS NOT NULL THEN 1 ELSE 0 END AS is_primary_key
20
+ CASE WHEN key_column_usage.column_name IS NOT NULL THEN 1 ELSE 0 END AS is_primary_key,
21
+ col_description((columns.table_schema || '.' || columns.table_name)::regclass, columns.ordinal_position) AS column_comment
21
22
 
22
23
  FROM
23
24
  information_schema.columns AS columns
@@ -104,4 +105,4 @@ export default class VelociousDatabaseDriversPgsqlTable extends BaseTable {
104
105
  return this.data.table_name;
105
106
  }
106
107
  }
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9wZ3NxbC90YWJsZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUE7QUFDeEMsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBQ2hDLE9BQU8sWUFBWSxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sVUFBVSxNQUFNLGtCQUFrQixDQUFBO0FBRXpDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sa0NBQW1DLFNBQVEsU0FBUztJQUN2RTs7O09BR0c7SUFDSCxZQUFZLE1BQU0sRUFBRSxJQUFJO1FBQ3RCLEtBQUssRUFBRSxDQUFBO1FBQ1AsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7SUFDdEIsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQ0FzQlgsSUFBSSxDQUFDLE9BQU8sRUFBRTtLQUN6QyxDQUFDLENBQUE7UUFDRixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFFbEIsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFFckMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN0QixDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjO1FBQ2xCLE1BQU0sR0FBRyxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQkFvQlUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7S0FDM0QsQ0FBQTtRQUVELE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN4RCxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUE7UUFFdEIsS0FBSyxNQUFNLGFBQWEsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUMzQyxNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQTtZQUVoRCxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzlCLENBQUM7UUFFRCxPQUFPLFdBQVcsQ0FBQTtJQUNwQixDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVU7UUFDZCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7UUFFakMsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDOzs7Ozs7Ozs7Ozs7NkJBWXhCLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0tBQ3JELENBQUMsQ0FBQTtRQUVGLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQTtRQUVsQixLQUFLLE1BQU0sUUFBUSxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ25DLE1BQU0sWUFBWSxHQUFHLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUVyRCxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQzVCLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQTtJQUNoQixDQUFDO0lBRUQsMENBQTBDO0lBQzFDLE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFBO0lBQzdCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQmFzZVRhYmxlIGZyb20gXCIuLi9iYXNlLXRhYmxlLmpzXCJcbmltcG9ydCBDb2x1bW4gZnJvbSBcIi4vY29sdW1uLmpzXCJcbmltcG9ydCBDb2x1bW5zSW5kZXggZnJvbSBcIi4vY29sdW1ucy1pbmRleC5qc1wiXG5pbXBvcnQgRm9yZWlnbktleSBmcm9tIFwiLi9mb3JlaWduLWtleS5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlRHJpdmVyc1Bnc3FsVGFibGUgZXh0ZW5kcyBCYXNlVGFibGUge1xuICAvKipcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9iYXNlLmpzXCIpLmRlZmF1bHR9IGRyaXZlciAtIERhdGFiYXNlIGRyaXZlciBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSBkYXRhIC0gRGF0YSBwYXlsb2FkLlxuICAgKi9cbiAgY29uc3RydWN0b3IoZHJpdmVyLCBkYXRhKSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXMuZGF0YSA9IGRhdGFcbiAgICB0aGlzLmRyaXZlciA9IGRyaXZlclxuICB9XG5cbiAgYXN5bmMgZ2V0Q29sdW1ucygpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRyaXZlci5xdWVyeShgXG4gICAgICBTRUxFQ1RcbiAgICAgICAgY29sdW1ucy4qLFxuICAgICAgICBDQVNFIFdIRU4ga2V5X2NvbHVtbl91c2FnZS5jb2x1bW5fbmFtZSBJUyBOT1QgTlVMTCBUSEVOIDEgRUxTRSAwIEVORCBBUyBpc19wcmltYXJ5X2tleVxuXG4gICAgICBGUk9NXG4gICAgICAgIGluZm9ybWF0aW9uX3NjaGVtYS5jb2x1bW5zIEFTIGNvbHVtbnNcblxuICAgICAgTEVGVCBKT0lOIGluZm9ybWF0aW9uX3NjaGVtYS50YWJsZV9jb25zdHJhaW50cyBBUyB0YWJsZV9jb25zdHJhaW50cyBPTlxuICAgICAgICB0YWJsZV9jb25zdHJhaW50cy50YWJsZV9uYW1lID0gY29sdW1ucy50YWJsZV9uYW1lIEFORFxuICAgICAgICB0YWJsZV9jb25zdHJhaW50cy50YWJsZV9zY2hlbWEgPSBjb2x1bW5zLnRhYmxlX3NjaGVtYSBBTkRcbiAgICAgICAgdGFibGVfY29uc3RyYWludHMuY29uc3RyYWludF90eXBlID0gJ1BSSU1BUlkgS0VZJ1xuXG4gICAgICBMRUZUIEpPSU4gaW5mb3JtYXRpb25fc2NoZW1hLmtleV9jb2x1bW5fdXNhZ2UgQVMga2V5X2NvbHVtbl91c2FnZSBPTlxuICAgICAgICBrZXlfY29sdW1uX3VzYWdlLmNvbnN0cmFpbnRfbmFtZSA9IHRhYmxlX2NvbnN0cmFpbnRzLmNvbnN0cmFpbnRfbmFtZSBBTkRcbiAgICAgICAga2V5X2NvbHVtbl91c2FnZS50YWJsZV9zY2hlbWEgPSB0YWJsZV9jb25zdHJhaW50cy50YWJsZV9zY2hlbWEgQU5EXG4gICAgICAgIGtleV9jb2x1bW5fdXNhZ2UudGFibGVfbmFtZSA9IGNvbHVtbnMudGFibGVfbmFtZSBBTkRcbiAgICAgICAga2V5X2NvbHVtbl91c2FnZS5jb2x1bW5fbmFtZSA9IGNvbHVtbnMuY29sdW1uX25hbWVcblxuICAgICAgV0hFUkVcbiAgICAgICAgY29sdW1ucy50YWJsZV9jYXRhbG9nID0gQ1VSUkVOVF9EQVRBQkFTRSgpIEFORFxuICAgICAgICBjb2x1bW5zLnRhYmxlX3NjaGVtYSA9ICdwdWJsaWMnIEFORFxuICAgICAgICBjb2x1bW5zLnRhYmxlX25hbWUgPSAnJHt0aGlzLmdldE5hbWUoKX0nXG4gICAgYClcbiAgICBjb25zdCBjb2x1bW5zID0gW11cblxuICAgIGZvciAoY29uc3QgZGF0YSBvZiByZXN1bHQpIHtcbiAgICAgIGNvbnN0IGNvbHVtbiA9IG5ldyBDb2x1bW4odGhpcywgZGF0YSlcblxuICAgICAgY29sdW1ucy5wdXNoKGNvbHVtbilcbiAgICB9XG5cbiAgICByZXR1cm4gY29sdW1uc1xuICB9XG5cbiAgYXN5bmMgZ2V0Rm9yZWlnbktleXMoKSB7XG4gICAgY29uc3Qgc3FsID0gYFxuICAgICAgU0VMRUNUXG4gICAgICAgIHRjLmNvbnN0cmFpbnRfbmFtZSxcbiAgICAgICAgdGMudGFibGVfbmFtZSxcbiAgICAgICAga2N1LmNvbHVtbl9uYW1lLFxuICAgICAgICBjY3UudGFibGVfbmFtZSBBUyBmb3JlaWduX3RhYmxlX25hbWUsXG4gICAgICAgIGNjdS5jb2x1bW5fbmFtZSBBUyBmb3JlaWduX2NvbHVtbl9uYW1lXG5cbiAgICAgIEZST01cbiAgICAgICAgaW5mb3JtYXRpb25fc2NoZW1hLnRhYmxlX2NvbnN0cmFpbnRzIEFTIHRjXG5cbiAgICAgIEpPSU4gaW5mb3JtYXRpb25fc2NoZW1hLmtleV9jb2x1bW5fdXNhZ2UgQVMga2N1IE9OXG4gICAgICAgIHRjLmNvbnN0cmFpbnRfbmFtZSA9IGtjdS5jb25zdHJhaW50X25hbWVcblxuICAgICAgSk9JTiBpbmZvcm1hdGlvbl9zY2hlbWEuY29uc3RyYWludF9jb2x1bW5fdXNhZ2UgQVMgY2N1XG4gICAgICAgIE9OIGNjdS5jb25zdHJhaW50X25hbWUgPSB0Yy5jb25zdHJhaW50X25hbWVcblxuICAgICAgV0hFUkVcbiAgICAgICAgY29uc3RyYWludF90eXBlID0gJ0ZPUkVJR04gS0VZJyBBTkRcbiAgICAgICAgdGMudGFibGVfY2F0YWxvZyA9IENVUlJFTlRfREFUQUJBU0UoKSBBTkRcbiAgICAgICAgdGMudGFibGVfbmFtZSA9ICR7dGhpcy5nZXREcml2ZXIoKS5xdW90ZSh0aGlzLmdldE5hbWUoKSl9XG4gICAgYFxuXG4gICAgY29uc3QgZm9yZWlnbktleVJvd3MgPSBhd2FpdCB0aGlzLmdldERyaXZlcigpLnF1ZXJ5KHNxbClcbiAgICBjb25zdCBmb3JlaWduS2V5cyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IGZvcmVpZ25LZXlSb3cgb2YgZm9yZWlnbktleVJvd3MpIHtcbiAgICAgIGNvbnN0IGZvcmVpZ25LZXkgPSBuZXcgRm9yZWlnbktleShmb3JlaWduS2V5Um93KVxuXG4gICAgICBmb3JlaWduS2V5cy5wdXNoKGZvcmVpZ25LZXkpXG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcmVpZ25LZXlzXG4gIH1cblxuICBhc3luYyBnZXRJbmRleGVzKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmdldE9wdGlvbnMoKVxuXG4gICAgY29uc3QgaW5kZXhlc1Jvd3MgPSBhd2FpdCB0aGlzLmdldERyaXZlcigpLnF1ZXJ5KGBcbiAgICAgIFNFTEVDVFxuICAgICAgICBwZ19hdHRyaWJ1dGUuYXR0bmFtZSBBUyBjb2x1bW5fbmFtZSxcbiAgICAgICAgcGdfaW5kZXguaW5kZXhyZWxpZDo6cmVnY2xhc3MgYXMgaW5kZXhfbmFtZSxcbiAgICAgICAgcGdfY2xhc3MucmVsbmFtZXNwYWNlOjpyZWduYW1lc3BhY2UgYXMgc2NoZW1hX25hbWUsXG4gICAgICAgIHBnX2NsYXNzLnJlbG5hbWUgYXMgdGFibGVfbmFtZSxcbiAgICAgICAgcGdfaW5kZXguaW5kaXNwcmltYXJ5IGFzIGlzX3ByaW1hcnlfa2V5LFxuICAgICAgICBwZ19pbmRleC5pbmRpc3VuaXF1ZSBhcyBpc191bmlxdWVcbiAgICAgIEZST00gcGdfaW5kZXhcbiAgICAgIEpPSU4gcGdfY2xhc3MgT04gcGdfY2xhc3Mub2lkID0gcGdfaW5kZXguaW5kcmVsaWRcbiAgICAgIEpPSU4gcGdfYXR0cmlidXRlIE9OIHBnX2F0dHJpYnV0ZS5hdHRyZWxpZCA9IHBnX2NsYXNzLm9pZCBBTkQgcGdfYXR0cmlidXRlLmF0dG51bSA9IEFOWShwZ19pbmRleC5pbmRrZXkpXG4gICAgICBXSEVSRVxuICAgICAgICBwZ19jbGFzcy5yZWxuYW1lID0gJHtvcHRpb25zLnF1b3RlKHRoaXMuZ2V0TmFtZSgpKX1cbiAgICBgKVxuXG4gICAgY29uc3QgaW5kZXhlcyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IGluZGV4Um93IG9mIGluZGV4ZXNSb3dzKSB7XG4gICAgICBjb25zdCBjb2x1bW5zSW5kZXggPSBuZXcgQ29sdW1uc0luZGV4KHRoaXMsIGluZGV4Um93KVxuXG4gICAgICBpbmRleGVzLnB1c2goY29sdW1uc0luZGV4KVxuICAgIH1cblxuICAgIHJldHVybiBpbmRleGVzXG4gIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gLSBUaGUgdGFibGUgbmFtZS4gKi9cbiAgZ2V0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLnRhYmxlX25hbWVcbiAgfVxufVxuIl19
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9wZ3NxbC90YWJsZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUE7QUFDeEMsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBQ2hDLE9BQU8sWUFBWSxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sVUFBVSxNQUFNLGtCQUFrQixDQUFBO0FBRXpDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sa0NBQW1DLFNBQVEsU0FBUztJQUN2RTs7O09BR0c7SUFDSCxZQUFZLE1BQU0sRUFBRSxJQUFJO1FBQ3RCLEtBQUssRUFBRSxDQUFBO1FBQ1AsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7SUFDdEIsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0NBdUJYLElBQUksQ0FBQyxPQUFPLEVBQUU7S0FDekMsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFBO1FBRWxCLEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxFQUFFLENBQUM7WUFDMUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO1lBRXJDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDdEIsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYztRQUNsQixNQUFNLEdBQUcsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBb0JVLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0tBQzNELENBQUE7UUFFRCxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDeEQsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFBO1FBRXRCLEtBQUssTUFBTSxhQUFhLElBQUksY0FBYyxFQUFFLENBQUM7WUFDM0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUE7WUFFaEQsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUM5QixDQUFDO1FBRUQsT0FBTyxXQUFXLENBQUE7SUFDcEIsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBRWpDLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQzs7Ozs7Ozs7Ozs7OzZCQVl4QixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUNyRCxDQUFDLENBQUE7UUFFRixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFFbEIsS0FBSyxNQUFNLFFBQVEsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNuQyxNQUFNLFlBQVksR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUE7WUFFckQsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUM1QixDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQTtJQUM3QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEJhc2VUYWJsZSBmcm9tIFwiLi4vYmFzZS10YWJsZS5qc1wiXG5pbXBvcnQgQ29sdW1uIGZyb20gXCIuL2NvbHVtbi5qc1wiXG5pbXBvcnQgQ29sdW1uc0luZGV4IGZyb20gXCIuL2NvbHVtbnMtaW5kZXguanNcIlxuaW1wb3J0IEZvcmVpZ25LZXkgZnJvbSBcIi4vZm9yZWlnbi1rZXkuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZURyaXZlcnNQZ3NxbFRhYmxlIGV4dGVuZHMgQmFzZVRhYmxlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vYmFzZS5qc1wiKS5kZWZhdWx0fSBkcml2ZXIgLSBEYXRhYmFzZSBkcml2ZXIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn0gZGF0YSAtIERhdGEgcGF5bG9hZC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGRyaXZlciwgZGF0YSkge1xuICAgIHN1cGVyKClcbiAgICB0aGlzLmRhdGEgPSBkYXRhXG4gICAgdGhpcy5kcml2ZXIgPSBkcml2ZXJcbiAgfVxuXG4gIGFzeW5jIGdldENvbHVtbnMoKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5kcml2ZXIucXVlcnkoYFxuICAgICAgU0VMRUNUXG4gICAgICAgIGNvbHVtbnMuKixcbiAgICAgICAgQ0FTRSBXSEVOIGtleV9jb2x1bW5fdXNhZ2UuY29sdW1uX25hbWUgSVMgTk9UIE5VTEwgVEhFTiAxIEVMU0UgMCBFTkQgQVMgaXNfcHJpbWFyeV9rZXksXG4gICAgICAgIGNvbF9kZXNjcmlwdGlvbigoY29sdW1ucy50YWJsZV9zY2hlbWEgfHwgJy4nIHx8IGNvbHVtbnMudGFibGVfbmFtZSk6OnJlZ2NsYXNzLCBjb2x1bW5zLm9yZGluYWxfcG9zaXRpb24pIEFTIGNvbHVtbl9jb21tZW50XG5cbiAgICAgIEZST01cbiAgICAgICAgaW5mb3JtYXRpb25fc2NoZW1hLmNvbHVtbnMgQVMgY29sdW1uc1xuXG4gICAgICBMRUZUIEpPSU4gaW5mb3JtYXRpb25fc2NoZW1hLnRhYmxlX2NvbnN0cmFpbnRzIEFTIHRhYmxlX2NvbnN0cmFpbnRzIE9OXG4gICAgICAgIHRhYmxlX2NvbnN0cmFpbnRzLnRhYmxlX25hbWUgPSBjb2x1bW5zLnRhYmxlX25hbWUgQU5EXG4gICAgICAgIHRhYmxlX2NvbnN0cmFpbnRzLnRhYmxlX3NjaGVtYSA9IGNvbHVtbnMudGFibGVfc2NoZW1hIEFORFxuICAgICAgICB0YWJsZV9jb25zdHJhaW50cy5jb25zdHJhaW50X3R5cGUgPSAnUFJJTUFSWSBLRVknXG5cbiAgICAgIExFRlQgSk9JTiBpbmZvcm1hdGlvbl9zY2hlbWEua2V5X2NvbHVtbl91c2FnZSBBUyBrZXlfY29sdW1uX3VzYWdlIE9OXG4gICAgICAgIGtleV9jb2x1bW5fdXNhZ2UuY29uc3RyYWludF9uYW1lID0gdGFibGVfY29uc3RyYWludHMuY29uc3RyYWludF9uYW1lIEFORFxuICAgICAgICBrZXlfY29sdW1uX3VzYWdlLnRhYmxlX3NjaGVtYSA9IHRhYmxlX2NvbnN0cmFpbnRzLnRhYmxlX3NjaGVtYSBBTkRcbiAgICAgICAga2V5X2NvbHVtbl91c2FnZS50YWJsZV9uYW1lID0gY29sdW1ucy50YWJsZV9uYW1lIEFORFxuICAgICAgICBrZXlfY29sdW1uX3VzYWdlLmNvbHVtbl9uYW1lID0gY29sdW1ucy5jb2x1bW5fbmFtZVxuXG4gICAgICBXSEVSRVxuICAgICAgICBjb2x1bW5zLnRhYmxlX2NhdGFsb2cgPSBDVVJSRU5UX0RBVEFCQVNFKCkgQU5EXG4gICAgICAgIGNvbHVtbnMudGFibGVfc2NoZW1hID0gJ3B1YmxpYycgQU5EXG4gICAgICAgIGNvbHVtbnMudGFibGVfbmFtZSA9ICcke3RoaXMuZ2V0TmFtZSgpfSdcbiAgICBgKVxuICAgIGNvbnN0IGNvbHVtbnMgPSBbXVxuXG4gICAgZm9yIChjb25zdCBkYXRhIG9mIHJlc3VsdCkge1xuICAgICAgY29uc3QgY29sdW1uID0gbmV3IENvbHVtbih0aGlzLCBkYXRhKVxuXG4gICAgICBjb2x1bW5zLnB1c2goY29sdW1uKVxuICAgIH1cblxuICAgIHJldHVybiBjb2x1bW5zXG4gIH1cblxuICBhc3luYyBnZXRGb3JlaWduS2V5cygpIHtcbiAgICBjb25zdCBzcWwgPSBgXG4gICAgICBTRUxFQ1RcbiAgICAgICAgdGMuY29uc3RyYWludF9uYW1lLFxuICAgICAgICB0Yy50YWJsZV9uYW1lLFxuICAgICAgICBrY3UuY29sdW1uX25hbWUsXG4gICAgICAgIGNjdS50YWJsZV9uYW1lIEFTIGZvcmVpZ25fdGFibGVfbmFtZSxcbiAgICAgICAgY2N1LmNvbHVtbl9uYW1lIEFTIGZvcmVpZ25fY29sdW1uX25hbWVcblxuICAgICAgRlJPTVxuICAgICAgICBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVfY29uc3RyYWludHMgQVMgdGNcblxuICAgICAgSk9JTiBpbmZvcm1hdGlvbl9zY2hlbWEua2V5X2NvbHVtbl91c2FnZSBBUyBrY3UgT05cbiAgICAgICAgdGMuY29uc3RyYWludF9uYW1lID0ga2N1LmNvbnN0cmFpbnRfbmFtZVxuXG4gICAgICBKT0lOIGluZm9ybWF0aW9uX3NjaGVtYS5jb25zdHJhaW50X2NvbHVtbl91c2FnZSBBUyBjY3VcbiAgICAgICAgT04gY2N1LmNvbnN0cmFpbnRfbmFtZSA9IHRjLmNvbnN0cmFpbnRfbmFtZVxuXG4gICAgICBXSEVSRVxuICAgICAgICBjb25zdHJhaW50X3R5cGUgPSAnRk9SRUlHTiBLRVknIEFORFxuICAgICAgICB0Yy50YWJsZV9jYXRhbG9nID0gQ1VSUkVOVF9EQVRBQkFTRSgpIEFORFxuICAgICAgICB0Yy50YWJsZV9uYW1lID0gJHt0aGlzLmdldERyaXZlcigpLnF1b3RlKHRoaXMuZ2V0TmFtZSgpKX1cbiAgICBgXG5cbiAgICBjb25zdCBmb3JlaWduS2V5Um93cyA9IGF3YWl0IHRoaXMuZ2V0RHJpdmVyKCkucXVlcnkoc3FsKVxuICAgIGNvbnN0IGZvcmVpZ25LZXlzID0gW11cblxuICAgIGZvciAoY29uc3QgZm9yZWlnbktleVJvdyBvZiBmb3JlaWduS2V5Um93cykge1xuICAgICAgY29uc3QgZm9yZWlnbktleSA9IG5ldyBGb3JlaWduS2V5KGZvcmVpZ25LZXlSb3cpXG5cbiAgICAgIGZvcmVpZ25LZXlzLnB1c2goZm9yZWlnbktleSlcbiAgICB9XG5cbiAgICByZXR1cm4gZm9yZWlnbktleXNcbiAgfVxuXG4gIGFzeW5jIGdldEluZGV4ZXMoKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucygpXG5cbiAgICBjb25zdCBpbmRleGVzUm93cyA9IGF3YWl0IHRoaXMuZ2V0RHJpdmVyKCkucXVlcnkoYFxuICAgICAgU0VMRUNUXG4gICAgICAgIHBnX2F0dHJpYnV0ZS5hdHRuYW1lIEFTIGNvbHVtbl9uYW1lLFxuICAgICAgICBwZ19pbmRleC5pbmRleHJlbGlkOjpyZWdjbGFzcyBhcyBpbmRleF9uYW1lLFxuICAgICAgICBwZ19jbGFzcy5yZWxuYW1lc3BhY2U6OnJlZ25hbWVzcGFjZSBhcyBzY2hlbWFfbmFtZSxcbiAgICAgICAgcGdfY2xhc3MucmVsbmFtZSBhcyB0YWJsZV9uYW1lLFxuICAgICAgICBwZ19pbmRleC5pbmRpc3ByaW1hcnkgYXMgaXNfcHJpbWFyeV9rZXksXG4gICAgICAgIHBnX2luZGV4LmluZGlzdW5pcXVlIGFzIGlzX3VuaXF1ZVxuICAgICAgRlJPTSBwZ19pbmRleFxuICAgICAgSk9JTiBwZ19jbGFzcyBPTiBwZ19jbGFzcy5vaWQgPSBwZ19pbmRleC5pbmRyZWxpZFxuICAgICAgSk9JTiBwZ19hdHRyaWJ1dGUgT04gcGdfYXR0cmlidXRlLmF0dHJlbGlkID0gcGdfY2xhc3Mub2lkIEFORCBwZ19hdHRyaWJ1dGUuYXR0bnVtID0gQU5ZKHBnX2luZGV4LmluZGtleSlcbiAgICAgIFdIRVJFXG4gICAgICAgIHBnX2NsYXNzLnJlbG5hbWUgPSAke29wdGlvbnMucXVvdGUodGhpcy5nZXROYW1lKCkpfVxuICAgIGApXG5cbiAgICBjb25zdCBpbmRleGVzID0gW11cblxuICAgIGZvciAoY29uc3QgaW5kZXhSb3cgb2YgaW5kZXhlc1Jvd3MpIHtcbiAgICAgIGNvbnN0IGNvbHVtbnNJbmRleCA9IG5ldyBDb2x1bW5zSW5kZXgodGhpcywgaW5kZXhSb3cpXG5cbiAgICAgIGluZGV4ZXMucHVzaChjb2x1bW5zSW5kZXgpXG4gICAgfVxuXG4gICAgcmV0dXJuIGluZGV4ZXNcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSB0YWJsZSBuYW1lLiAqL1xuICBnZXROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEudGFibGVfbmFtZVxuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"alter-table.d.ts","sourceRoot":"","sources":["../../../../../../src/database/drivers/sqlite/sql/alter-table.js"],"names":[],"mappings":"AAQA;IAYI,eAA8B;CAoIjC;2BAtJ0B,oCAAoC;uBAE1C,uBAAuB"}
1
+ {"version":3,"file":"alter-table.d.ts","sourceRoot":"","sources":["../../../../../../src/database/drivers/sqlite/sql/alter-table.js"],"names":[],"mappings":"AAQA;IAYI,eAA8B;CA4IjC;2BA9J0B,oCAAoC;uBAE1C,uBAAuB"}
@@ -42,7 +42,10 @@ export default class VelociousDatabaseConnectionDriversSqliteSqlAlterTable exten
42
42
  tableData.setName(tempTableName);
43
43
  const newTableData = new TableData(tempTableName);
44
44
  for (const tableDataColumn of currentTableData.getColumns()) {
45
- const newTableDataColumn = tableData.getColumns().find((newTableDataColumn) => newTableDataColumn.getName() == tableDataColumn.getName());
45
+ let newTableDataColumn = tableData.getColumns().find((newTableDataColumn) => newTableDataColumn.getName() == tableDataColumn.getName());
46
+ if (newTableDataColumn && newTableDataColumn.isNewColumn()) {
47
+ newTableDataColumn = undefined;
48
+ }
46
49
  if (newTableDataColumn) {
47
50
  newTableDataColumn.setAutoIncrement(tableDataColumn.getAutoIncrement());
48
51
  newTableDataColumn.setDefault(tableDataColumn.getDefault());
@@ -54,9 +57,13 @@ export default class VelociousDatabaseConnectionDriversSqliteSqlAlterTable exten
54
57
  }
55
58
  newTableData.addColumn(newTableDataColumn || tableDataColumn);
56
59
  }
60
+ // SQLite rebuilds use existing columns plus new ones; avoid duplicating a column that already exists.
61
+ const existingColumnNames = new Set(currentTableData.getColumns().map((column) => column.getName()));
57
62
  for (const tableDataColumn of tableData.getColumns()) {
58
63
  if (!tableDataColumn.isNewColumn())
59
64
  continue;
65
+ if (existingColumnNames.has(tableDataColumn.getName()))
66
+ continue;
60
67
  newTableData.addColumn(tableDataColumn);
61
68
  }
62
69
  const foundForeignKeys = [];
@@ -120,4 +127,4 @@ export default class VelociousDatabaseConnectionDriversSqliteSqlAlterTable exten
120
127
  return sqls;
121
128
  }
122
129
  }
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWx0ZXItdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9zcWxpdGUvc3FsL2FsdGVyLXRhYmxlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGNBQWMsTUFBTSxvQ0FBb0MsQ0FBQTtBQUMvRCxPQUFPLGVBQWUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUNqRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sdUJBQXVCLENBQUE7QUFDNUMsT0FBTyxhQUFhLE1BQU0sc0NBQXNDLENBQUE7QUFDaEUsT0FBTyxTQUFTLE1BQU0sOEJBQThCLENBQUE7QUFFcEQsTUFBTSxDQUFDLE9BQU8sT0FBTyxxREFBc0QsU0FBUSxjQUFjO0lBQy9GOzs7O09BSUc7SUFDSCxZQUFZLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLFFBQVEsRUFBQztRQUMxQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFdkIsSUFBSSxDQUFDLENBQUMsU0FBUyxZQUFZLFNBQVMsQ0FBQztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQTtRQUV0RixLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQTtRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxNQUFNO1FBQ1YsTUFBTSxFQUFDLFNBQVMsRUFBQyxHQUFHLElBQUksQ0FBQTtRQUN4QixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFFeEUsSUFBSSxDQUFDLEtBQUs7WUFB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QUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxVQUFVLENBQUMsQ0FBQTtnQkFFeEcsT0FBTyxjQUFjLEVBQUUsVUFBVSxFQUFFLElBQUksY0FBYyxFQUFFLE9BQU8sRUFBRSxJQUFJLFVBQVUsQ0FBQTtZQUNoRixDQUFDLENBQUMsQ0FBQTtZQUVGLE1BQU0sZUFBZSxHQUFHO2dCQUN0QixPQUFPLEVBQUUsV0FBVztnQkFDcEIsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ3hCLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7Z0JBQ2hDLFNBQVM7Z0JBQ1QsTUFBTSxFQUFFLGdCQUFnQixDQUFDLFNBQVMsRUFBRTthQUNyQyxDQUFBO1lBQ0QsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtZQUUzRSxLQUFLLE1BQU0sY0FBYyxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1lBQzNCLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEFsdGVyVGFibGVCYXNlIGZyb20gXCIuLi8uLi8uLi9xdWVyeS9hbHRlci10YWJsZS1iYXNlLmpzXCJcbmltcG9ydCBDcmVhdGVJbmRleEJhc2UgZnJvbSBcIi4uLy4uLy4uL3F1ZXJ5L2NyZWF0ZS1pbmRleC1iYXNlLmpzXCJcbmltcG9ydCB7TG9nZ2VyfSBmcm9tIFwiLi4vLi4vLi4vLi4vbG9nZ2VyLmpzXCJcbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuaW1wb3J0IFRhYmxlRGF0YSBmcm9tIFwiLi4vLi4vLi4vdGFibGUtZGF0YS9pbmRleC5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlQ29ubmVjdGlvbkRyaXZlcnNTcWxpdGVTcWxBbHRlclRhYmxlIGV4dGVuZHMgQWx0ZXJUYWJsZUJhc2Uge1xuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi9iYXNlLmpzXCIpLmRlZmF1bHR9IGFyZ3MuZHJpdmVyIC0gRGF0YWJhc2UgZHJpdmVyIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uLy4uL3RhYmxlLWRhdGEvaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy50YWJsZURhdGEgLSBUYWJsZSBkYXRhLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe2RyaXZlciwgdGFibGVEYXRhLCAuLi5yZXN0QXJnc30pIHtcbiAgICByZXN0QXJnc0Vycm9yKHJlc3RBcmdzKVxuXG4gICAgaWYgKCEodGFibGVEYXRhIGluc3RhbmNlb2YgVGFibGVEYXRhKSkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB0YWJsZSBkYXRhIHdhcyBnaXZlblwiKVxuXG4gICAgc3VwZXIoe2RyaXZlciwgdGFibGVEYXRhfSlcbiAgICB0aGlzLmxvZ2dlciA9IG5ldyBMb2dnZXIodGhpcylcbiAgICB0aGlzLnRhYmxlRGF0YSA9IHRhYmxlRGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZ1tdPn0gLSBSZXNvbHZlcyB3aXRoIFNRTCBzdGF0ZW1lbnRzLlxuICAgKi9cbiAgYXN5bmMgdG9TUUxzKCkge1xuICAgIGNvbnN0IHt0YWJsZURhdGF9ID0gdGhpc1xuICAgIGNvbnN0IHRhYmxlID0gYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5nZXRUYWJsZUJ5TmFtZSh0YWJsZURhdGEuZ2V0TmFtZSgpKVxuXG4gICAgaWYgKCF0YWJsZSkgdGhyb3cgbmV3IEVycm9yKGBUYWJsZSAke3RhYmxlRGF0YS5nZXROYW1lKCl9IGRvZXMgbm90IGV4aXN0YClcblxuICAgIGNvbnN0IGN1cnJlbnRUYWJsZURhdGEgPSBhd2FpdCB0YWJsZS5nZXRUYWJsZURhdGEoKVxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmdldE9wdGlvbnMoKVxuICAgIGNvbnN0IHRhYmxlTmFtZSA9IHRhYmxlRGF0YS5nZXROYW1lKClcbiAgICBjb25zdCB0ZW1wVGFibGVOYW1lID0gYCR7dGFibGVEYXRhLmdldE5hbWUoKX1BbHRlclRhYmxlVGVtcGBcbiAgICBjb25zdCBuZXdDb2x1bW5OYW1lcyA9IGN1cnJlbnRUYWJsZURhdGEuZ2V0Q29sdW1ucygpXG4gICAgICAuZmlsdGVyKChjb2x1bW4pID0+ICFjb2x1bW4uaXNOZXdDb2x1bW4oKSlcbiAgICAgIC5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUYWJsZUNvbHVtbiA9IHRhYmxlRGF0YS5nZXRDb2x1bW5zKCkuZmluZCgodGFibGVDb2x1bW4pID0+IHRhYmxlQ29sdW1uLmdldE5hbWUoKSA9PSBjb2x1bW4uZ2V0TmFtZSgpKVxuXG4gICAgICAgIHJldHVybiBuZXdUYWJsZUNvbHVtbj8uZ2V0TmV3TmFtZSgpIHx8IG5ld1RhYmxlQ29sdW1uPy5nZXROYW1lKCkgfHwgY29sdW1uLmdldE5ld05hbWUoKSB8fCBjb2x1bW4uZ2V0TmFtZSgpXG4gICAgICB9KVxuICAgIGNvbnN0IG9sZENvbHVtbk5hbWVzID0gY3VycmVudFRhYmxlRGF0YS5nZXRDb2x1bW5zKCkuZmlsdGVyKChjb2x1bW4pID0+ICFjb2x1bW4uaXNOZXdDb2x1bW4oKSkubWFwKChjb2x1bW4pID0+IGNvbHVtbi5nZXROYW1lKCkpXG4gICAgY29uc3QgbmV3Q29sdW1uc1NRTCA9IG5ld0NvbHVtbk5hbWVzLm1hcCgobmFtZSkgPT4gb3B0aW9ucy5xdW90ZUNvbHVtbk5hbWUobmFtZSkpLmpvaW4oXCIsIFwiKVxuICAgIGNvbnN0IG9sZENvbHVtbnNTUUwgPSBvbGRDb2x1bW5OYW1lcy5tYXAoKG5hbWUpID0+IG9wdGlvbnMucXVvdGVDb2x1bW5OYW1lKG5hbWUpKS5qb2luKFwiLCBcIilcblxuICAgIHRhYmxlRGF0YS5zZXROYW1lKHRlbXBUYWJsZU5hbWUpXG5cbiAgICBjb25zdCBuZXdUYWJsZURhdGEgPSBuZXcgVGFibGVEYXRhKHRlbXBUYWJsZU5hbWUpXG5cbiAgICBmb3IgKGNvbnN0IHRhYmxlRGF0YUNvbHVtbiBvZiBjdXJyZW50VGFibGVEYXRhLmdldENvbHVtbnMoKSkge1xuICAgICAgY29uc3QgbmV3VGFibGVEYXRhQ29sdW1uID0gdGFibGVEYXRhLmdldENvbHVtbnMoKS5maW5kKChuZXdUYWJsZURhdGFDb2x1bW4pID0+IG5ld1RhYmxlRGF0YUNvbHVtbi5nZXROYW1lKCkgPT0gdGFibGVEYXRhQ29sdW1uLmdldE5hbWUoKSlcblxuICAgICAgaWYgKG5ld1RhYmxlRGF0YUNvbHVtbikge1xuICAgICAgICBuZXdUYWJsZURhdGFDb2x1bW4uc2V0QXV0b0luY3JlbWVudCh0YWJsZURhdGFDb2x1bW4uZ2V0QXV0b0luY3JlbWVudCgpKVxuICAgICAgICBuZXdUYWJsZURhdGFDb2x1bW4uc2V0RGVmYXVsdCh0YWJsZURhdGFDb2x1bW4uZ2V0RGVmYXVsdCgpKVxuICAgICAgICBuZXdUYWJsZURhdGFDb2x1bW4uc2V0SW5kZXgodGFibGVEYXRhQ29sdW1uLmdldEluZGV4KCkpXG4gICAgICAgIG5ld1RhYmxlRGF0YUNvbHVtbi5zZXRGb3JlaWduS2V5KHRhYmxlRGF0YUNvbHVtbi5nZXRGb3JlaWduS2V5KCkpXG4gICAgICAgIG5ld1RhYmxlRGF0YUNvbHVtbi5zZXRNYXhMZW5ndGgodGFibGVEYXRhQ29sdW1uLmdldE1heExlbmd0aCgpKVxuICAgICAgICBuZXdUYWJsZURhdGFDb2x1bW4uc2V0UHJpbWFyeUtleSh0YWJsZURhdGFDb2x1bW4uZ2V0UHJpbWFyeUtleSgpKVxuICAgICAgICBuZXdUYWJsZURhdGFDb2x1bW4uc2V0VHlwZSh0YWJsZURhdGFDb2x1bW4uZ2V0VHlwZSgpKVxuICAgICAgfVxuXG4gICAgICBuZXdUYWJsZURhdGEuYWRkQ29sdW1uKG5ld1RhYmxlRGF0YUNvbHVtbiB8fCB0YWJsZURhdGFDb2x1bW4pXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB0YWJsZURhdGFDb2x1bW4gb2YgdGFibGVEYXRhLmdldENvbHVtbnMoKSkge1xuICAgICAgaWYgKCF0YWJsZURhdGFDb2x1bW4uaXNOZXdDb2x1bW4oKSkgY29udGludWVcblxuICAgICAgbmV3VGFibGVEYXRhLmFkZENvbHVtbih0YWJsZURhdGFDb2x1bW4pXG4gICAgfVxuXG4gICAgY29uc3QgZm91bmRGb3JlaWduS2V5cyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IHRhYmxlRGF0YUZvcmVpZ25LZXkgb2YgY3VycmVudFRhYmxlRGF0YS5nZXRGb3JlaWduS2V5cygpKSB7XG4gICAgICBjb25zdCBuZXdUYWJsZURhdGFGb3JlaWduS2V5ID0gbmV3VGFibGVEYXRhLmdldEZvcmVpZ25LZXlzKCkuZmluZCgobmV3VGFibGVEYXRhRm9yZWlnbktleSkgPT4gbmV3VGFibGVEYXRhRm9yZWlnbktleS5nZXROYW1lKCkgPT0gdGFibGVEYXRhRm9yZWlnbktleS5nZXROYW1lKCkpXG5cbiAgICAgIGlmIChuZXdUYWJsZURhdGFGb3JlaWduS2V5KSBmb3VuZEZvcmVpZ25LZXlzLnB1c2gobmV3VGFibGVEYXRhRm9yZWlnbktleS5nZXROYW1lKCkpXG5cbiAgICAgIGNvbnN0IGFjdHVhbFRhYmxlRGF0YUZvcmVpZ25LZXkgPSBuZXdUYWJsZURhdGFGb3JlaWduS2V5IHx8IHRhYmxlRGF0YUZvcmVpZ25LZXlcblxuICAgICAgLy8gUmVnaXN0ZXIgZm9yZWlnbiBrZXkgb24gdGhlIHRhYmxlXG4gICAgICBuZXdUYWJsZURhdGEuYWRkRm9yZWlnbktleShhY3R1YWxUYWJsZURhdGFGb3JlaWduS2V5KVxuXG4gICAgICAvLyBSZWdpc3RlciBmb3JlaWduIGtleSBvbiB0aGUgY29sdW1uXG4gICAgICBjb25zdCB0YWJsZURhdGFDb2x1bW4gPSBuZXdUYWJsZURhdGEuZ2V0Q29sdW1ucygpLmZpbmQoKG5ld1RhYmxlRGF0YUNvbHVtbikgPT4gbmV3VGFibGVEYXRhQ29sdW1uLmdldE5hbWUoKSA9PSBhY3R1YWxUYWJsZURhdGFGb3JlaWduS2V5LmdldENvbHVtbk5hbWUoKSlcblxuICAgICAgaWYgKCF0YWJsZURhdGFDb2x1bW4pIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBjb2x1bW4gZm9yIGZvcmVpZ24ga2V5OiAke2FjdHVhbFRhYmxlRGF0YUZvcmVpZ25LZXkuZ2V0TmFtZSgpfWApXG5cbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnTG93TGV2ZWwoKCkgPT4gYFNldHRpbmcgZm9yZWlnbiBrZXkgb24gY29sdW1uICR7dGFibGVEYXRhQ29sdW1uLmdldE5hbWUoKX1gKVxuICAgICAgdGFibGVEYXRhQ29sdW1uLnNldEZvcmVpZ25LZXkoYWN0dWFsVGFibGVEYXRhRm9yZWlnbktleSlcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGZvcmVpZ25LZXkgb2YgdGFibGVEYXRhLmdldEZvcmVpZ25LZXlzKCkpIHtcbiAgICAgIGlmIChmb3VuZEZvcmVpZ25LZXlzLmluY2x1ZGVzKGZvcmVpZ25LZXkuZ2V0TmFtZSgpKSkgY29udGludWVcblxuICAgICAgLy8gUmVnaXN0ZXIgZm9yZWlnbiBrZXkgb24gdGhlIHRhYmxlXG4gICAgICBuZXdUYWJsZURhdGEuYWRkRm9yZWlnbktleShmb3JlaWduS2V5KVxuXG4gICAgICAvLyBSZWdpc3RlciBmb3JlaWduIGtleSBvbiB0aGUgY29sdW1uXG4gICAgICBjb25zdCB0YWJsZURhdGFDb2x1bW4gPSBuZXdUYWJsZURhdGEuZ2V0Q29sdW1ucygpLmZpbmQoKG5ld1RhYmxlRGF0YUNvbHVtbikgPT4gbmV3VGFibGVEYXRhQ29sdW1uLmdldE5hbWUoKSA9PSBmb3JlaWduS2V5LmdldENvbHVtbk5hbWUoKSlcblxuICAgICAgaWYgKCF0YWJsZURhdGFDb2x1bW4pIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBjb2x1bW4gZm9yIGZvcmVpZ24ga2V5OiAke2ZvcmVpZ25LZXkuZ2V0TmFtZSgpfWApXG5cbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnTG93TGV2ZWwoKCkgPT4gYFNldHRpbmcgZm9yZWlnbiBrZXkgb24gY29sdW1uICR7dGFibGVEYXRhQ29sdW1uLmdldE5hbWUoKX1gKVxuICAgICAgdGFibGVEYXRhQ29sdW1uLnNldEZvcmVpZ25LZXkoZm9yZWlnbktleSlcbiAgICB9XG5cbiAgICBjb25zdCBjcmVhdGVOZXdUYWJsZVNRTCA9IGF3YWl0IHRoaXMuZ2V0RHJpdmVyKCkuY3JlYXRlVGFibGVTcWwobmV3VGFibGVEYXRhKVxuICAgIGNvbnN0IGluc2VydFNRTCA9IGBJTlNFUlQgSU5UTyAke29wdGlvbnMucXVvdGVUYWJsZU5hbWUodGVtcFRhYmxlTmFtZSl9ICgke25ld0NvbHVtbnNTUUx9KSBTRUxFQ1QgJHtvbGRDb2x1bW5zU1FMfSBGUk9NICR7b3B0aW9ucy5xdW90ZVRhYmxlTmFtZSh0YWJsZU5hbWUpfWBcbiAgICBjb25zdCBkcm9wVGFibGVTUUxzID0gYERST1AgVEFCTEUgJHtvcHRpb25zLnF1b3RlVGFibGVOYW1lKHRhYmxlTmFtZSl9YFxuICAgIGNvbnN0IHJlbmFtZVRhYmxlU1FMID0gYEFMVEVSIFRBQkxFICR7b3B0aW9ucy5xdW90ZVRhYmxlTmFtZSh0ZW1wVGFibGVOYW1lKX0gUkVOQU1FIFRPICR7b3B0aW9ucy5xdW90ZVRhYmxlTmFtZSh0YWJsZU5hbWUpfWBcbiAgICBjb25zdCBzcWxzID0gW11cblxuICAgIGZvciAoY29uc3Qgc3FsIG9mIGNyZWF0ZU5ld1RhYmxlU1FMKSB7XG4gICAgICBzcWxzLnB1c2goc3FsKVxuICAgIH1cblxuICAgIHNxbHMucHVzaChpbnNlcnRTUUwpXG4gICAgc3Fscy5wdXNoKGRyb3BUYWJsZVNRTHMpXG4gICAgc3Fscy5wdXNoKHJlbmFtZVRhYmxlU1FMKVxuXG4gICAgZm9yIChjb25zdCB0YWJsZURhdGFJbmRleCBvZiBjdXJyZW50VGFibGVEYXRhLmdldEluZGV4ZXMoKSkge1xuICAgICAgY29uc3QgbmV3VGFibGVEYXRhSW5kZXggPSBuZXdUYWJsZURhdGEuZ2V0SW5kZXhlcygpLmZpbmQoKG5ld1RhYmxlRGF0YUluZGV4KSA9PiBuZXdUYWJsZURhdGFJbmRleC5nZXROYW1lKCkgPT0gdGFibGVEYXRhSW5kZXguZ2V0TmFtZSgpKVxuICAgICAgY29uc3QgYWN0dWFsVGFibGVJbmRleCA9IG5ld1RhYmxlRGF0YUluZGV4IHx8IHRhYmxlRGF0YUluZGV4XG5cbiAgICAgIG5ld1RhYmxlRGF0YS5hZGRJbmRleChhY3R1YWxUYWJsZUluZGV4KVxuXG4gICAgICBjb25zdCBjb2x1bW5OYW1lcyA9IGFjdHVhbFRhYmxlSW5kZXguZ2V0Q29sdW1ucygpLm1hcCgoY29sdW1uTmFtZSkgPT4ge1xuICAgICAgICBjb25zdCBuZXdUYWJsZUNvbHVtbiA9IHRhYmxlRGF0YS5nZXRDb2x1bW5zKCkuZmluZCgodGFibGVDb2x1bW4pID0+IHRhYmxlQ29sdW1uLmdldE5hbWUoKSA9PSBjb2x1bW5OYW1lKVxuXG4gICAgICAgIHJldHVybiBuZXdUYWJsZUNvbHVtbj8uZ2V0TmV3TmFtZSgpIHx8IG5ld1RhYmxlQ29sdW1uPy5nZXROYW1lKCkgfHwgY29sdW1uTmFtZVxuICAgICAgfSlcblxuICAgICAgY29uc3QgY3JlYXRlSW5kZXhBcmdzID0ge1xuICAgICAgICBjb2x1bW5zOiBjb2x1bW5OYW1lcyxcbiAgICAgICAgZHJpdmVyOiB0aGlzLmdldERyaXZlcigpLFxuICAgICAgICBuYW1lOiBhY3R1YWxUYWJsZUluZGV4LmdldE5hbWUoKSxcbiAgICAgICAgdGFibGVOYW1lLFxuICAgICAgICB1bmlxdWU6IGFjdHVhbFRhYmxlSW5kZXguZ2V0VW5pcXVlKClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNyZWF0ZUluZGV4U1FMcyA9IGF3YWl0IG5ldyBDcmVhdGVJbmRleEJhc2UoY3JlYXRlSW5kZXhBcmdzKS50b1NRTHMoKVxuXG4gICAgICBmb3IgKGNvbnN0IGNyZWF0ZUluZGV4U1FMIG9mIGNyZWF0ZUluZGV4U1FMcykge1xuICAgICAgICBzcWxzLnB1c2goY3JlYXRlSW5kZXhTUUwpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNxbHNcbiAgfVxufVxuIl19
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWx0ZXItdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9zcWxpdGUvc3FsL2FsdGVyLXRhYmxlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGNBQWMsTUFBTSxvQ0FBb0MsQ0FBQTtBQUMvRCxPQUFPLGVBQWUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUNqRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sdUJBQXVCLENBQUE7QUFDNUMsT0FBTyxhQUFhLE1BQU0sc0NBQXNDLENBQUE7QUFDaEUsT0FBTyxTQUFTLE1BQU0sOEJBQThCLENBQUE7QUFFcEQsTUFBTSxDQUFDLE9BQU8sT0FBTyxxREFBc0QsU0FBUSxjQUFjO0lBQy9GOzs7O09BSUc7SUFDSCxZQUFZLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLFFBQVEsRUFBQztRQUMxQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFdkIsSUFBSSxDQUFDLENBQUMsU0FBUyxZQUFZLFNBQVMsQ0FBQztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQTtRQUV0RixLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQTtRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxNQUFNO1FBQ1YsTUFBTSxFQUFDLFNBQVMsRUFBQyxHQUFHLElBQUksQ0FBQTtRQUN4QixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFFeEUsSUFBSSxDQUFDLEtBQUs7WUFB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cnQgQWx0ZXJUYWJsZUJhc2UgZnJvbSBcIi4uLy4uLy4uL3F1ZXJ5L2FsdGVyLXRhYmxlLWJhc2UuanNcIlxuaW1wb3J0IENyZWF0ZUluZGV4QmFzZSBmcm9tIFwiLi4vLi4vLi4vcXVlcnkvY3JlYXRlLWluZGV4LWJhc2UuanNcIlxuaW1wb3J0IHtMb2dnZXJ9IGZyb20gXCIuLi8uLi8uLi8uLi9sb2dnZXIuanNcIlxuaW1wb3J0IHJlc3RBcmdzRXJyb3IgZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3Jlc3QtYXJncy1lcnJvci5qc1wiXG5pbXBvcnQgVGFibGVEYXRhIGZyb20gXCIuLi8uLi8uLi90YWJsZS1kYXRhL2luZGV4LmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VDb25uZWN0aW9uRHJpdmVyc1NxbGl0ZVNxbEFsdGVyVGFibGUgZXh0ZW5kcyBBbHRlclRhYmxlQmFzZSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL2Jhc2UuanNcIikuZGVmYXVsdH0gYXJncy5kcml2ZXIgLSBEYXRhYmFzZSBkcml2ZXIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vLi4vdGFibGUtZGF0YS9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLnRhYmxlRGF0YSAtIFRhYmxlIGRhdGEuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7ZHJpdmVyLCB0YWJsZURhdGEsIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgICBpZiAoISh0YWJsZURhdGEgaW5zdGFuY2VvZiBUYWJsZURhdGEpKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHRhYmxlIGRhdGEgd2FzIGdpdmVuXCIpXG5cbiAgICBzdXBlcih7ZHJpdmVyLCB0YWJsZURhdGF9KVxuICAgIHRoaXMubG9nZ2VyID0gbmV3IExvZ2dlcih0aGlzKVxuICAgIHRoaXMudGFibGVEYXRhID0gdGFibGVEYXRhXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nW10+fSAtIFJlc29sdmVzIHdpdGggU1FMIHN0YXRlbWVudHMuXG4gICAqL1xuICBhc3luYyB0b1NRTHMoKSB7XG4gICAgY29uc3Qge3RhYmxlRGF0YX0gPSB0aGlzXG4gICAgY29uc3QgdGFibGUgPSBhd2FpdCB0aGlzLmdldERyaXZlcigpLmdldFRhYmxlQnlOYW1lKHRhYmxlRGF0YS5nZXROYW1lKCkpXG5cbiAgICBpZiAoIXRhYmxlKSB0aHJvdyBuZXcgRXJyb3IoYFRhYmxlICR7dGFibGVEYXRhLmdldE5hbWUoKX0gZG9lcyBub3QgZXhpc3RgKVxuXG4gICAgY29uc3QgY3VycmVudFRhYmxlRGF0YSA9IGF3YWl0IHRhYmxlLmdldFRhYmxlRGF0YSgpXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucygpXG4gICAgY29uc3QgdGFibGVOYW1lID0gdGFibGVEYXRhLmdldE5hbWUoKVxuICAgIGNvbnN0IHRlbXBUYWJsZU5hbWUgPSBgJHt0YWJsZURhdGEuZ2V0TmFtZSgpfUFsdGVyVGFibGVUZW1wYFxuICAgIGNvbnN0IG5ld0NvbHVtbk5hbWVzID0gY3VycmVudFRhYmxlRGF0YS5nZXRDb2x1bW5zKClcbiAgICAgIC5maWx0ZXIoKGNvbHVtbikgPT4gIWNvbHVtbi5pc05ld0NvbHVtbigpKVxuICAgICAgLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RhYmxlQ29sdW1uID0gdGFibGVEYXRhLmdldENvbHVtbnMoKS5maW5kKCh0YWJsZUNvbHVtbikgPT4gdGFibGVDb2x1bW4uZ2V0TmFtZSgpID09IGNvbHVtbi5nZXROYW1lKCkpXG5cbiAgICAgICAgcmV0dXJuIG5ld1RhYmxlQ29sdW1uPy5nZXROZXdOYW1lKCkgfHwgbmV3VGFibGVDb2x1bW4/LmdldE5hbWUoKSB8fCBjb2x1bW4uZ2V0TmV3TmFtZSgpIHx8IGNvbHVtbi5nZXROYW1lKClcbiAgICAgIH0pXG4gICAgY29uc3Qgb2xkQ29sdW1uTmFtZXMgPSBjdXJyZW50VGFibGVEYXRhLmdldENvbHVtbnMoKS5maWx0ZXIoKGNvbHVtbikgPT4gIWNvbHVtbi5pc05ld0NvbHVtbigpKS5tYXAoKGNvbHVtbikgPT4gY29sdW1uLmdldE5hbWUoKSlcbiAgICBjb25zdCBuZXdDb2x1bW5zU1FMID0gbmV3Q29sdW1uTmFtZXMubWFwKChuYW1lKSA9PiBvcHRpb25zLnF1b3RlQ29sdW1uTmFtZShuYW1lKSkuam9pbihcIiwgXCIpXG4gICAgY29uc3Qgb2xkQ29sdW1uc1NRTCA9IG9sZENvbHVtbk5hbWVzLm1hcCgobmFtZSkgPT4gb3B0aW9ucy5xdW90ZUNvbHVtbk5hbWUobmFtZSkpLmpvaW4oXCIsIFwiKVxuXG4gICAgdGFibGVEYXRhLnNldE5hbWUodGVtcFRhYmxlTmFtZSlcblxuICAgIGNvbnN0IG5ld1RhYmxlRGF0YSA9IG5ldyBUYWJsZURhdGEodGVtcFRhYmxlTmFtZSlcblxuICAgIGZvciAoY29uc3QgdGFibGVEYXRhQ29sdW1uIG9mIGN1cnJlbnRUYWJsZURhdGEuZ2V0Q29sdW1ucygpKSB7XG4gICAgICBsZXQgbmV3VGFibGVEYXRhQ29sdW1uID0gdGFibGVEYXRhLmdldENvbHVtbnMoKS5maW5kKChuZXdUYWJsZURhdGFDb2x1bW4pID0+IG5ld1RhYmxlRGF0YUNvbHVtbi5nZXROYW1lKCkgPT0gdGFibGVEYXRhQ29sdW1uLmdldE5hbWUoKSlcblxuICAgICAgaWYgKG5ld1RhYmxlRGF0YUNvbHVtbiAmJiBuZXdUYWJsZURhdGFDb2x1bW4uaXNOZXdDb2x1bW4oKSkge1xuICAgICAgICBuZXdUYWJsZURhdGFDb2x1bW4gPSB1bmRlZmluZWRcbiAgICAgIH1cblxuICAgICAgaWYgKG5ld1RhYmxlRGF0YUNvbHVtbikge1xuICAgICAgICBuZXdUYWJsZURhdGFDb2x1bW4uc2V0QXV0b0luY3JlbWVudCh0YWJsZURhdGFDb2x1bW4uZ2V0QXV0b0luY3JlbWVudCgpKVxuICAgICAgICBuZXdUYWJsZURhdGFDb2x1bW4uc2V0RGVmYXVsdCh0YWJsZURhdGFDb2x1bW4uZ2V0RGVmYXVsdCgpKVxuICAgICAgICBuZXdUYWJsZURhdGFDb2x1bW4uc2V0SW5kZXgodGFibGVEYXRhQ29sdW1uLmdldEluZGV4KCkpXG4gICAgICAgIG5ld1RhYmxlRGF0YUNvbHVtbi5zZXRGb3JlaWduS2V5KHRhYmxlRGF0YUNvbHVtbi5nZXRGb3JlaWduS2V5KCkpXG4gICAgICAgIG5ld1RhYmxlRGF0YUNvbHVtbi5zZXRNYXhMZW5ndGgodGFibGVEYXRhQ29sdW1uLmdldE1heExlbmd0aCgpKVxuICAgICAgICBuZXdUYWJsZURhdGFDb2x1bW4uc2V0UHJpbWFyeUtleSh0YWJsZURhdGFDb2x1bW4uZ2V0UHJpbWFyeUtleSgpKVxuICAgICAgICBuZXdUYWJsZURhdGFDb2x1bW4uc2V0VHlwZSh0YWJsZURhdGFDb2x1bW4uZ2V0VHlwZSgpKVxuICAgICAgfVxuXG4gICAgICBuZXdUYWJsZURhdGEuYWRkQ29sdW1uKG5ld1RhYmxlRGF0YUNvbHVtbiB8fCB0YWJsZURhdGFDb2x1bW4pXG4gICAgfVxuXG4gICAgLy8gU1FMaXRlIHJlYnVpbGRzIHVzZSBleGlzdGluZyBjb2x1bW5zIHBsdXMgbmV3IG9uZXM7IGF2b2lkIGR1cGxpY2F0aW5nIGEgY29sdW1uIHRoYXQgYWxyZWFkeSBleGlzdHMuXG4gICAgY29uc3QgZXhpc3RpbmdDb2x1bW5OYW1lcyA9IG5ldyBTZXQoY3VycmVudFRhYmxlRGF0YS5nZXRDb2x1bW5zKCkubWFwKChjb2x1bW4pID0+IGNvbHVtbi5nZXROYW1lKCkpKVxuXG4gICAgZm9yIChjb25zdCB0YWJsZURhdGFDb2x1bW4gb2YgdGFibGVEYXRhLmdldENvbHVtbnMoKSkge1xuICAgICAgaWYgKCF0YWJsZURhdGFDb2x1bW4uaXNOZXdDb2x1bW4oKSkgY29udGludWVcbiAgICAgIGlmIChleGlzdGluZ0NvbHVtbk5hbWVzLmhhcyh0YWJsZURhdGFDb2x1bW4uZ2V0TmFtZSgpKSkgY29udGludWVcblxuICAgICAgbmV3VGFibGVEYXRhLmFkZENvbHVtbih0YWJsZURhdGFDb2x1bW4pXG4gICAgfVxuXG4gICAgY29uc3QgZm91bmRGb3JlaWduS2V5cyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IHRhYmxlRGF0YUZvcmVpZ25LZXkgb2YgY3VycmVudFRhYmxlRGF0YS5nZXRGb3JlaWduS2V5cygpKSB7XG4gICAgICBjb25zdCBuZXdUYWJsZURhdGFGb3JlaWduS2V5ID0gbmV3VGFibGVEYXRhLmdldEZvcmVpZ25LZXlzKCkuZmluZCgobmV3VGFibGVEYXRhRm9yZWlnbktleSkgPT4gbmV3VGFibGVEYXRhRm9yZWlnbktleS5nZXROYW1lKCkgPT0gdGFibGVEYXRhRm9yZWlnbktleS5nZXROYW1lKCkpXG5cbiAgICAgIGlmIChuZXdUYWJsZURhdGFGb3JlaWduS2V5KSBmb3VuZEZvcmVpZ25LZXlzLnB1c2gobmV3VGFibGVEYXRhRm9yZWlnbktleS5nZXROYW1lKCkpXG5cbiAgICAgIGNvbnN0IGFjdHVhbFRhYmxlRGF0YUZvcmVpZ25LZXkgPSBuZXdUYWJsZURhdGFGb3JlaWduS2V5IHx8IHRhYmxlRGF0YUZvcmVpZ25LZXlcblxuICAgICAgLy8gUmVnaXN0ZXIgZm9yZWlnbiBrZXkgb24gdGhlIHRhYmxlXG4gICAgICBuZXdUYWJsZURhdGEuYWRkRm9yZWlnbktleShhY3R1YWxUYWJsZURhdGFGb3JlaWduS2V5KVxuXG4gICAgICAvLyBSZWdpc3RlciBmb3JlaWduIGtleSBvbiB0aGUgY29sdW1uXG4gICAgICBjb25zdCB0YWJsZURhdGFDb2x1bW4gPSBuZXdUYWJsZURhdGEuZ2V0Q29sdW1ucygpLmZpbmQoKG5ld1RhYmxlRGF0YUNvbHVtbikgPT4gbmV3VGFibGVEYXRhQ29sdW1uLmdldE5hbWUoKSA9PSBhY3R1YWxUYWJsZURhdGFGb3JlaWduS2V5LmdldENvbHVtbk5hbWUoKSlcblxuICAgICAgaWYgKCF0YWJsZURhdGFDb2x1bW4pIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBjb2x1bW4gZm9yIGZvcmVpZ24ga2V5OiAke2FjdHVhbFRhYmxlRGF0YUZvcmVpZ25LZXkuZ2V0TmFtZSgpfWApXG5cbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnTG93TGV2ZWwoKCkgPT4gYFNldHRpbmcgZm9yZWlnbiBrZXkgb24gY29sdW1uICR7dGFibGVEYXRhQ29sdW1uLmdldE5hbWUoKX1gKVxuICAgICAgdGFibGVEYXRhQ29sdW1uLnNldEZvcmVpZ25LZXkoYWN0dWFsVGFibGVEYXRhRm9yZWlnbktleSlcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGZvcmVpZ25LZXkgb2YgdGFibGVEYXRhLmdldEZvcmVpZ25LZXlzKCkpIHtcbiAgICAgIGlmIChmb3VuZEZvcmVpZ25LZXlzLmluY2x1ZGVzKGZvcmVpZ25LZXkuZ2V0TmFtZSgpKSkgY29udGludWVcblxuICAgICAgLy8gUmVnaXN0ZXIgZm9yZWlnbiBrZXkgb24gdGhlIHRhYmxlXG4gICAgICBuZXdUYWJsZURhdGEuYWRkRm9yZWlnbktleShmb3JlaWduS2V5KVxuXG4gICAgICAvLyBSZWdpc3RlciBmb3JlaWduIGtleSBvbiB0aGUgY29sdW1uXG4gICAgICBjb25zdCB0YWJsZURhdGFDb2x1bW4gPSBuZXdUYWJsZURhdGEuZ2V0Q29sdW1ucygpLmZpbmQoKG5ld1RhYmxlRGF0YUNvbHVtbikgPT4gbmV3VGFibGVEYXRhQ29sdW1uLmdldE5hbWUoKSA9PSBmb3JlaWduS2V5LmdldENvbHVtbk5hbWUoKSlcblxuICAgICAgaWYgKCF0YWJsZURhdGFDb2x1bW4pIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBjb2x1bW4gZm9yIGZvcmVpZ24ga2V5OiAke2ZvcmVpZ25LZXkuZ2V0TmFtZSgpfWApXG5cbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnTG93TGV2ZWwoKCkgPT4gYFNldHRpbmcgZm9yZWlnbiBrZXkgb24gY29sdW1uICR7dGFibGVEYXRhQ29sdW1uLmdldE5hbWUoKX1gKVxuICAgICAgdGFibGVEYXRhQ29sdW1uLnNldEZvcmVpZ25LZXkoZm9yZWlnbktleSlcbiAgICB9XG5cbiAgICBjb25zdCBjcmVhdGVOZXdUYWJsZVNRTCA9IGF3YWl0IHRoaXMuZ2V0RHJpdmVyKCkuY3JlYXRlVGFibGVTcWwobmV3VGFibGVEYXRhKVxuICAgIGNvbnN0IGluc2VydFNRTCA9IGBJTlNFUlQgSU5UTyAke29wdGlvbnMucXVvdGVUYWJsZU5hbWUodGVtcFRhYmxlTmFtZSl9ICgke25ld0NvbHVtbnNTUUx9KSBTRUxFQ1QgJHtvbGRDb2x1bW5zU1FMfSBGUk9NICR7b3B0aW9ucy5xdW90ZVRhYmxlTmFtZSh0YWJsZU5hbWUpfWBcbiAgICBjb25zdCBkcm9wVGFibGVTUUxzID0gYERST1AgVEFCTEUgJHtvcHRpb25zLnF1b3RlVGFibGVOYW1lKHRhYmxlTmFtZSl9YFxuICAgIGNvbnN0IHJlbmFtZVRhYmxlU1FMID0gYEFMVEVSIFRBQkxFICR7b3B0aW9ucy5xdW90ZVRhYmxlTmFtZSh0ZW1wVGFibGVOYW1lKX0gUkVOQU1FIFRPICR7b3B0aW9ucy5xdW90ZVRhYmxlTmFtZSh0YWJsZU5hbWUpfWBcbiAgICBjb25zdCBzcWxzID0gW11cblxuICAgIGZvciAoY29uc3Qgc3FsIG9mIGNyZWF0ZU5ld1RhYmxlU1FMKSB7XG4gICAgICBzcWxzLnB1c2goc3FsKVxuICAgIH1cblxuICAgIHNxbHMucHVzaChpbnNlcnRTUUwpXG4gICAgc3Fscy5wdXNoKGRyb3BUYWJsZVNRTHMpXG4gICAgc3Fscy5wdXNoKHJlbmFtZVRhYmxlU1FMKVxuXG4gICAgZm9yIChjb25zdCB0YWJsZURhdGFJbmRleCBvZiBjdXJyZW50VGFibGVEYXRhLmdldEluZGV4ZXMoKSkge1xuICAgICAgY29uc3QgbmV3VGFibGVEYXRhSW5kZXggPSBuZXdUYWJsZURhdGEuZ2V0SW5kZXhlcygpLmZpbmQoKG5ld1RhYmxlRGF0YUluZGV4KSA9PiBuZXdUYWJsZURhdGFJbmRleC5nZXROYW1lKCkgPT0gdGFibGVEYXRhSW5kZXguZ2V0TmFtZSgpKVxuICAgICAgY29uc3QgYWN0dWFsVGFibGVJbmRleCA9IG5ld1RhYmxlRGF0YUluZGV4IHx8IHRhYmxlRGF0YUluZGV4XG5cbiAgICAgIG5ld1RhYmxlRGF0YS5hZGRJbmRleChhY3R1YWxUYWJsZUluZGV4KVxuXG4gICAgICBjb25zdCBjb2x1bW5OYW1lcyA9IGFjdHVhbFRhYmxlSW5kZXguZ2V0Q29sdW1ucygpLm1hcCgoY29sdW1uTmFtZSkgPT4ge1xuICAgICAgICBjb25zdCBuZXdUYWJsZUNvbHVtbiA9IHRhYmxlRGF0YS5nZXRDb2x1bW5zKCkuZmluZCgodGFibGVDb2x1bW4pID0+IHRhYmxlQ29sdW1uLmdldE5hbWUoKSA9PSBjb2x1bW5OYW1lKVxuXG4gICAgICAgIHJldHVybiBuZXdUYWJsZUNvbHVtbj8uZ2V0TmV3TmFtZSgpIHx8IG5ld1RhYmxlQ29sdW1uPy5nZXROYW1lKCkgfHwgY29sdW1uTmFtZVxuICAgICAgfSlcblxuICAgICAgY29uc3QgY3JlYXRlSW5kZXhBcmdzID0ge1xuICAgICAgICBjb2x1bW5zOiBjb2x1bW5OYW1lcyxcbiAgICAgICAgZHJpdmVyOiB0aGlzLmdldERyaXZlcigpLFxuICAgICAgICBuYW1lOiBhY3R1YWxUYWJsZUluZGV4LmdldE5hbWUoKSxcbiAgICAgICAgdGFibGVOYW1lLFxuICAgICAgICB1bmlxdWU6IGFjdHVhbFRhYmxlSW5kZXguZ2V0VW5pcXVlKClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNyZWF0ZUluZGV4U1FMcyA9IGF3YWl0IG5ldyBDcmVhdGVJbmRleEJhc2UoY3JlYXRlSW5kZXhBcmdzKS50b1NRTHMoKVxuXG4gICAgICBmb3IgKGNvbnN0IGNyZWF0ZUluZGV4U1FMIG9mIGNyZWF0ZUluZGV4U1FMcykge1xuICAgICAgICBzcWxzLnB1c2goY3JlYXRlSW5kZXhTUUwpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNxbHNcbiAgfVxufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"alter-table-base.d.ts","sourceRoot":"","sources":["../../../../src/database/query/alter-table-base.js"],"names":[],"mappings":"AAMA;IACE;;;;OAIG;IACH,gDAHG;QAAmD,MAAM,EAAjD,OAAO,oBAAoB,EAAE,OAAO;QACpB,SAAS,EAAzB,SAAS;KACnB,EAQA;IADC,qBAA0B;CA2C7B;sBA3DqB,WAAW;sBAEX,wBAAwB"}
1
+ {"version":3,"file":"alter-table-base.d.ts","sourceRoot":"","sources":["../../../../src/database/query/alter-table-base.js"],"names":[],"mappings":"AAMA;IACE;;;;OAIG;IACH,gDAHG;QAAmD,MAAM,EAAjD,OAAO,oBAAoB,EAAE,OAAO;QACpB,SAAS,EAAzB,SAAS;KACnB,EAQA;IADC,qBAA0B;CAyD7B;sBAzEqB,WAAW;sBAEX,wBAAwB"}
@@ -30,13 +30,13 @@ export default class VelociousDatabaseQueryAlterTableBase extends QueryBase {
30
30
  sql += ", ";
31
31
  if (column.isNewColumn()) {
32
32
  sql += "ADD ";
33
- sql += column.getSQL({ driver: this.getDriver(), forAlterTable: true });
33
+ sql += column.getSQL({ driver: this.getDriver(), forAlterTable: false });
34
34
  }
35
35
  else if (column.getNewName()) {
36
36
  sql += `RENAME COLUMN ${options.quoteColumnName(column.getName())} TO ${options.quoteColumnName(column.getNewName())}`;
37
37
  }
38
38
  else if (column.getDropColumn()) {
39
- sql += `DROP COLUMN ${options.quoteColumnName}`;
39
+ sql += `DROP COLUMN ${options.quoteColumnName(column.getName())}`;
40
40
  }
41
41
  else {
42
42
  if (databaseType == "mssql" || databaseType == "pgsql") {
@@ -50,7 +50,17 @@ export default class VelociousDatabaseQueryAlterTableBase extends QueryBase {
50
50
  columnsCount++;
51
51
  }
52
52
  sqls.push(sql);
53
+ if (databaseType == "pgsql") {
54
+ for (const column of tableData.getColumns()) {
55
+ if (!column.isNewColumn() || column.getDropColumn())
56
+ continue;
57
+ const notes = column.getNotesForDatabase(databaseType);
58
+ if (!notes)
59
+ continue;
60
+ sqls.push(`COMMENT ON COLUMN ${options.quoteTableName(tableData.getName())}.${options.quoteColumnName(column.getActualName())} IS ${options.quote(notes)}`);
61
+ }
62
+ }
53
63
  return sqls;
54
64
  }
55
65
  }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWx0ZXItdGFibGUtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9xdWVyeS9hbHRlci10YWJsZS1iYXNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUE7QUFDakMsT0FBTyxhQUFhLE1BQU0sZ0NBQWdDLENBQUE7QUFDMUQsT0FBTyxTQUFTLE1BQU0sd0JBQXdCLENBQUE7QUFFOUMsTUFBTSxDQUFDLE9BQU8sT0FBTyxvQ0FBcUMsU0FBUSxTQUFTO0lBQ3pFOzs7O09BSUc7SUFDSCxZQUFZLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLFFBQVEsRUFBQztRQUMxQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFdkIsSUFBSSxDQUFDLENBQUMsU0FBUyxZQUFZLFNBQVMsQ0FBQztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQTtRQUV0RixLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUMsQ0FBQyxDQUFBO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUE7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE1BQU07UUFDVixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDL0MsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFBO1FBQ2YsTUFBTSxFQUFDLFNBQVMsRUFBQyxHQUFHLElBQUksQ0FBQTtRQUN4QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7UUFFakMsSUFBSSxHQUFHLEdBQUcsZUFBZSxPQUFPLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUE7UUFDdkUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFBO1FBRXBCLEtBQUssTUFBTSxNQUFNLElBQUksU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDNUMsSUFBSSxZQUFZLEdBQUcsQ0FBQztnQkFBRSxHQUFHLElBQUksSUFBSSxDQUFBO1lBRWpDLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQ3pCLEdBQUcsSUFBSSxNQUFNLENBQUE7Z0JBQ2IsR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFBO1lBQ3ZFLENBQUM7aUJBQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDL0IsR0FBRyxJQUFJLGlCQUFpQixPQUFPLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQTtZQUN4SCxDQUFDO2lCQUFNLElBQUksTUFBTSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7Z0JBQ2xDLEdBQUcsSUFBSSxlQUFlLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQTtZQUNqRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxZQUFZLElBQUksT0FBTyxJQUFJLFlBQVksSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDdkQsR0FBRyxJQUFJLGVBQWUsQ0FBQTtnQkFDeEIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLEdBQUcsSUFBSSxTQUFTLENBQUE7Z0JBQ2xCLENBQUM7Z0JBRUQsR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFBO1lBQ3ZFLENBQUM7WUFHRCxZQUFZLEVBQUUsQ0FBQTtRQUNoQixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUVkLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBRdWVyeUJhc2UgZnJvbSBcIi4vYmFzZS5qc1wiXG5pbXBvcnQgcmVzdEFyZ3NFcnJvciBmcm9tIFwiLi4vLi4vdXRpbHMvcmVzdC1hcmdzLWVycm9yLmpzXCJcbmltcG9ydCBUYWJsZURhdGEgZnJvbSBcIi4uL3RhYmxlLWRhdGEvaW5kZXguanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5QWx0ZXJUYWJsZUJhc2UgZXh0ZW5kcyBRdWVyeUJhc2Uge1xuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9kcml2ZXJzL2Jhc2UuanNcIikuZGVmYXVsdH0gYXJncy5kcml2ZXIgLSBEYXRhYmFzZSBkcml2ZXIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7VGFibGVEYXRhfSBhcmdzLnRhYmxlRGF0YSAtIFRhYmxlIGRhdGEuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7ZHJpdmVyLCB0YWJsZURhdGEsIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgICBpZiAoISh0YWJsZURhdGEgaW5zdGFuY2VvZiBUYWJsZURhdGEpKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHRhYmxlIGRhdGEgd2FzIGdpdmVuXCIpXG5cbiAgICBzdXBlcih7ZHJpdmVyfSlcbiAgICB0aGlzLnRhYmxlRGF0YSA9IHRhYmxlRGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZ1tdPn0gLSBSZXNvbHZlcyB3aXRoIFNRTCBzdGF0ZW1lbnRzLlxuICAgKi9cbiAgYXN5bmMgdG9TUUxzKCkge1xuICAgIGNvbnN0IGRhdGFiYXNlVHlwZSA9IHRoaXMuZ2V0RHJpdmVyKCkuZ2V0VHlwZSgpXG4gICAgY29uc3Qgc3FscyA9IFtdXG4gICAgY29uc3Qge3RhYmxlRGF0YX0gPSB0aGlzXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucygpXG5cbiAgICBsZXQgc3FsID0gYEFMVEVSIFRBQkxFICR7b3B0aW9ucy5xdW90ZVRhYmxlTmFtZSh0YWJsZURhdGEuZ2V0TmFtZSgpKX0gYFxuICAgIGxldCBjb2x1bW5zQ291bnQgPSAwXG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0YWJsZURhdGEuZ2V0Q29sdW1ucygpKSB7XG4gICAgICBpZiAoY29sdW1uc0NvdW50ID4gMCkgc3FsICs9IFwiLCBcIlxuXG4gICAgICBpZiAoY29sdW1uLmlzTmV3Q29sdW1uKCkpIHtcbiAgICAgICAgc3FsICs9IFwiQUREIFwiXG4gICAgICAgIHNxbCArPSBjb2x1bW4uZ2V0U1FMKHtkcml2ZXI6IHRoaXMuZ2V0RHJpdmVyKCksIGZvckFsdGVyVGFibGU6IHRydWV9KVxuICAgICAgfSBlbHNlIGlmIChjb2x1bW4uZ2V0TmV3TmFtZSgpKSB7XG4gICAgICAgIHNxbCArPSBgUkVOQU1FIENPTFVNTiAke29wdGlvbnMucXVvdGVDb2x1bW5OYW1lKGNvbHVtbi5nZXROYW1lKCkpfSBUTyAke29wdGlvbnMucXVvdGVDb2x1bW5OYW1lKGNvbHVtbi5nZXROZXdOYW1lKCkpfWBcbiAgICAgIH0gZWxzZSBpZiAoY29sdW1uLmdldERyb3BDb2x1bW4oKSkge1xuICAgICAgICBzcWwgKz0gYERST1AgQ09MVU1OICR7b3B0aW9ucy5xdW90ZUNvbHVtbk5hbWV9YFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGRhdGFiYXNlVHlwZSA9PSBcIm1zc3FsXCIgfHwgZGF0YWJhc2VUeXBlID09IFwicGdzcWxcIikge1xuICAgICAgICAgIHNxbCArPSBcIkFMVEVSIENPTFVNTiBcIlxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNxbCArPSBcIk1PRElGWSBcIlxuICAgICAgICB9XG5cbiAgICAgICAgc3FsICs9IGNvbHVtbi5nZXRTUUwoe2RyaXZlcjogdGhpcy5nZXREcml2ZXIoKSwgZm9yQWx0ZXJUYWJsZTogdHJ1ZX0pXG4gICAgICB9XG5cblxuICAgICAgY29sdW1uc0NvdW50KytcbiAgICB9XG5cbiAgICBzcWxzLnB1c2goc3FsKVxuXG4gICAgcmV0dXJuIHNxbHNcbiAgfVxufVxuIl19
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWx0ZXItdGFibGUtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9xdWVyeS9hbHRlci10YWJsZS1iYXNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUE7QUFDakMsT0FBTyxhQUFhLE1BQU0sZ0NBQWdDLENBQUE7QUFDMUQsT0FBTyxTQUFTLE1BQU0sd0JBQXdCLENBQUE7QUFFOUMsTUFBTSxDQUFDLE9BQU8sT0FBTyxvQ0FBcUMsU0FBUSxTQUFTO0lBQ3pFOzs7O09BSUc7SUFDSCxZQUFZLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLFFBQVEsRUFBQztRQUMxQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFdkIsSUFBSSxDQUFDLENBQUMsU0FBUyxZQUFZLFNBQVMsQ0FBQztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQTtRQUV0RixLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUMsQ0FBQyxDQUFBO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUE7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE1BQU07UUFDVixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDL0MsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFBO1FBQ2YsTUFBTSxFQUFDLFNBQVMsRUFBQyxHQUFHLElBQUksQ0FBQTtRQUN4QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7UUFFakMsSUFBSSxHQUFHLEdBQUcsZUFBZSxPQUFPLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUE7UUFDdkUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFBO1FBRXBCLEtBQUssTUFBTSxNQUFNLElBQUksU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDNUMsSUFBSSxZQUFZLEdBQUcsQ0FBQztnQkFBRSxHQUFHLElBQUksSUFBSSxDQUFBO1lBRWpDLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQ3pCLEdBQUcsSUFBSSxNQUFNLENBQUE7Z0JBQ2IsR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFBO1lBQ3hFLENBQUM7aUJBQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDL0IsR0FBRyxJQUFJLGlCQUFpQixPQUFPLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQTtZQUN4SCxDQUFDO2lCQUFNLElBQUksTUFBTSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7Z0JBQ2xDLEdBQUcsSUFBSSxlQUFlLE9BQU8sQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQTtZQUNuRSxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxZQUFZLElBQUksT0FBTyxJQUFJLFlBQVksSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDdkQsR0FBRyxJQUFJLGVBQWUsQ0FBQTtnQkFDeEIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLEdBQUcsSUFBSSxTQUFTLENBQUE7Z0JBQ2xCLENBQUM7Z0JBRUQsR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFBO1lBQ3ZFLENBQUM7WUFHRCxZQUFZLEVBQUUsQ0FBQTtRQUNoQixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUVkLElBQUksWUFBWSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzVCLEtBQUssTUFBTSxNQUFNLElBQUksU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksTUFBTSxDQUFDLGFBQWEsRUFBRTtvQkFBRSxTQUFRO2dCQUU3RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUE7Z0JBRXRELElBQUksQ0FBQyxLQUFLO29CQUFFLFNBQVE7Z0JBRXBCLElBQUksQ0FBQyxJQUFJLENBQ1AscUJBQXFCLE9BQU8sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQ2pKLENBQUE7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBRdWVyeUJhc2UgZnJvbSBcIi4vYmFzZS5qc1wiXG5pbXBvcnQgcmVzdEFyZ3NFcnJvciBmcm9tIFwiLi4vLi4vdXRpbHMvcmVzdC1hcmdzLWVycm9yLmpzXCJcbmltcG9ydCBUYWJsZURhdGEgZnJvbSBcIi4uL3RhYmxlLWRhdGEvaW5kZXguanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5QWx0ZXJUYWJsZUJhc2UgZXh0ZW5kcyBRdWVyeUJhc2Uge1xuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9kcml2ZXJzL2Jhc2UuanNcIikuZGVmYXVsdH0gYXJncy5kcml2ZXIgLSBEYXRhYmFzZSBkcml2ZXIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7VGFibGVEYXRhfSBhcmdzLnRhYmxlRGF0YSAtIFRhYmxlIGRhdGEuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7ZHJpdmVyLCB0YWJsZURhdGEsIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgICBpZiAoISh0YWJsZURhdGEgaW5zdGFuY2VvZiBUYWJsZURhdGEpKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHRhYmxlIGRhdGEgd2FzIGdpdmVuXCIpXG5cbiAgICBzdXBlcih7ZHJpdmVyfSlcbiAgICB0aGlzLnRhYmxlRGF0YSA9IHRhYmxlRGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZ1tdPn0gLSBSZXNvbHZlcyB3aXRoIFNRTCBzdGF0ZW1lbnRzLlxuICAgKi9cbiAgYXN5bmMgdG9TUUxzKCkge1xuICAgIGNvbnN0IGRhdGFiYXNlVHlwZSA9IHRoaXMuZ2V0RHJpdmVyKCkuZ2V0VHlwZSgpXG4gICAgY29uc3Qgc3FscyA9IFtdXG4gICAgY29uc3Qge3RhYmxlRGF0YX0gPSB0aGlzXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucygpXG5cbiAgICBsZXQgc3FsID0gYEFMVEVSIFRBQkxFICR7b3B0aW9ucy5xdW90ZVRhYmxlTmFtZSh0YWJsZURhdGEuZ2V0TmFtZSgpKX0gYFxuICAgIGxldCBjb2x1bW5zQ291bnQgPSAwXG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0YWJsZURhdGEuZ2V0Q29sdW1ucygpKSB7XG4gICAgICBpZiAoY29sdW1uc0NvdW50ID4gMCkgc3FsICs9IFwiLCBcIlxuXG4gICAgICBpZiAoY29sdW1uLmlzTmV3Q29sdW1uKCkpIHtcbiAgICAgICAgc3FsICs9IFwiQUREIFwiXG4gICAgICAgIHNxbCArPSBjb2x1bW4uZ2V0U1FMKHtkcml2ZXI6IHRoaXMuZ2V0RHJpdmVyKCksIGZvckFsdGVyVGFibGU6IGZhbHNlfSlcbiAgICAgIH0gZWxzZSBpZiAoY29sdW1uLmdldE5ld05hbWUoKSkge1xuICAgICAgICBzcWwgKz0gYFJFTkFNRSBDT0xVTU4gJHtvcHRpb25zLnF1b3RlQ29sdW1uTmFtZShjb2x1bW4uZ2V0TmFtZSgpKX0gVE8gJHtvcHRpb25zLnF1b3RlQ29sdW1uTmFtZShjb2x1bW4uZ2V0TmV3TmFtZSgpKX1gXG4gICAgICB9IGVsc2UgaWYgKGNvbHVtbi5nZXREcm9wQ29sdW1uKCkpIHtcbiAgICAgICAgc3FsICs9IGBEUk9QIENPTFVNTiAke29wdGlvbnMucXVvdGVDb2x1bW5OYW1lKGNvbHVtbi5nZXROYW1lKCkpfWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChkYXRhYmFzZVR5cGUgPT0gXCJtc3NxbFwiIHx8IGRhdGFiYXNlVHlwZSA9PSBcInBnc3FsXCIpIHtcbiAgICAgICAgICBzcWwgKz0gXCJBTFRFUiBDT0xVTU4gXCJcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzcWwgKz0gXCJNT0RJRlkgXCJcbiAgICAgICAgfVxuXG4gICAgICAgIHNxbCArPSBjb2x1bW4uZ2V0U1FMKHtkcml2ZXI6IHRoaXMuZ2V0RHJpdmVyKCksIGZvckFsdGVyVGFibGU6IHRydWV9KVxuICAgICAgfVxuXG5cbiAgICAgIGNvbHVtbnNDb3VudCsrXG4gICAgfVxuXG4gICAgc3Fscy5wdXNoKHNxbClcblxuICAgIGlmIChkYXRhYmFzZVR5cGUgPT0gXCJwZ3NxbFwiKSB7XG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0YWJsZURhdGEuZ2V0Q29sdW1ucygpKSB7XG4gICAgICAgIGlmICghY29sdW1uLmlzTmV3Q29sdW1uKCkgfHwgY29sdW1uLmdldERyb3BDb2x1bW4oKSkgY29udGludWVcblxuICAgICAgICBjb25zdCBub3RlcyA9IGNvbHVtbi5nZXROb3Rlc0ZvckRhdGFiYXNlKGRhdGFiYXNlVHlwZSlcblxuICAgICAgICBpZiAoIW5vdGVzKSBjb250aW51ZVxuXG4gICAgICAgIHNxbHMucHVzaChcbiAgICAgICAgICBgQ09NTUVOVCBPTiBDT0xVTU4gJHtvcHRpb25zLnF1b3RlVGFibGVOYW1lKHRhYmxlRGF0YS5nZXROYW1lKCkpfS4ke29wdGlvbnMucXVvdGVDb2x1bW5OYW1lKGNvbHVtbi5nZXRBY3R1YWxOYW1lKCkpfSBJUyAke29wdGlvbnMucXVvdGUobm90ZXMpfWBcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzcWxzXG4gIH1cbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"create-table-base.d.ts","sourceRoot":"","sources":["../../../../src/database/query/create-table-base.js"],"names":[],"mappings":"AAQA;IACE;;;;;;OAMG;IACH,oEALG;QAAmD,MAAM,EAAjD,OAAO,oBAAoB,EAAE,OAAO;QACrB,WAAW,GAA1B,OAAO;QACQ,kBAAkB,GAAjC,OAAO;QACS,SAAS,EAAzB,SAAS;KACnB,EAQA;IAHC,qBAA8B;IAC9B,4BAA4C;IAC5C,qBAA0B;IAG5B;;OAEG;IACH,SAFa,OAAO,CAAC,MAAM,EAAE,CAAC,CA6I7B;CACF;sBArKqB,WAAW;sBAEX,wBAAwB"}
1
+ {"version":3,"file":"create-table-base.d.ts","sourceRoot":"","sources":["../../../../src/database/query/create-table-base.js"],"names":[],"mappings":"AAQA;IACE;;;;;;OAMG;IACH,oEALG;QAAmD,MAAM,EAAjD,OAAO,oBAAoB,EAAE,OAAO;QACrB,WAAW,GAA1B,OAAO;QACQ,kBAAkB,GAAjC,OAAO;QACS,SAAS,EAAzB,SAAS;KACnB,EAQA;IAHC,qBAA8B;IAC9B,4BAA4C;IAC5C,qBAA0B;IAG5B;;OAEG;IACH,SAFa,OAAO,CAAC,MAAM,EAAE,CAAC,CAyJ7B;CACF;sBAjLqB,WAAW;sBAEX,wBAAwB"}
@@ -93,6 +93,14 @@ export default class VelociousDatabaseQueryCreateTableBase extends QueryBase {
93
93
  sql += " END";
94
94
  }
95
95
  sqls.push(sql);
96
+ if (databaseType == "pgsql") {
97
+ for (const column of tableData.getColumns()) {
98
+ const notes = column.getNotesForDatabase(databaseType);
99
+ if (!notes)
100
+ continue;
101
+ sqls.push(`COMMENT ON COLUMN ${options.quoteTableName(tableData.getName())}.${options.quoteColumnName(column.getActualName())} IS ${options.quote(notes)}`);
102
+ }
103
+ }
96
104
  if (!this.indexInCreateTable) {
97
105
  for (const index of tableData.getIndexes()) {
98
106
  const createIndexArgs = {
@@ -134,4 +142,4 @@ export default class VelociousDatabaseQueryCreateTableBase extends QueryBase {
134
142
  return sqls;
135
143
  }
136
144
  }
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXRhYmxlLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvcXVlcnkvY3JlYXRlLXRhYmxlLWJhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sZUFBZSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BELE9BQU8sU0FBUyxNQUFNLFdBQVcsQ0FBQTtBQUNqQyxPQUFPLGFBQWEsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUMxRCxPQUFPLFNBQVMsTUFBTSx3QkFBd0IsQ0FBQTtBQUM5QyxPQUFPLFdBQVcsTUFBTSwrQkFBK0IsQ0FBQTtBQUV2RCxNQUFNLENBQUMsT0FBTyxPQUFPLHFDQUFzQyxTQUFRLFNBQVM7SUFDMUU7Ozs7OztPQU1HO0lBQ0gsWUFBWSxFQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEdBQUcsSUFBSSxFQUFFLFNBQVMsRUFBQztRQUNyRSxJQUFJLENBQUMsQ0FBQyxTQUFTLFlBQVksU0FBUyxDQUFDO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFBO1FBRXRGLEtBQUssQ0FBQyxFQUFDLE1BQU0sRUFBQyxDQUFDLENBQUE7UUFDZixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTtRQUM5QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUE7UUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUE7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEtBQUs7UUFDVCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUE7UUFDM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFBO1FBQy9CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUNqQyxNQUFNLEVBQUMsU0FBUyxFQUFDLEdBQUcsSUFBSSxDQUFBO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQTtRQUNmLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFBO1FBQ2xFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQTtRQUVaLElBQUksWUFBWSxJQUFJLE9BQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUMzQyxHQUFHLElBQUksMkRBQTJELE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLDRCQUE0QixDQUFBO1FBQ2xJLENBQUM7UUFFRCxHQUFHLElBQUksY0FBYyxDQUFBO1FBRXJCLElBQUksWUFBWSxJQUFJLE9BQU8sSUFBSSxXQUFXO1lBQUUsR0FBRyxJQUFJLGdCQUFnQixDQUFBO1FBRW5FLEdBQUcsSUFBSSxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQTtRQUUxRCxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUE7UUFFbkIsS0FBSyxNQUFNLE1BQU0sSUFBSSxTQUFTLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUM1QyxXQUFXLEVBQUUsQ0FBQTtZQUViLElBQUksV0FBVyxHQUFHLENBQUM7Z0JBQUUsR0FBRyxJQUFJLElBQUksQ0FBQTtZQUVoQyxHQUFHLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQTtRQUN0RCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM1QixLQUFLLE1BQU0sS0FBSyxJQUFJLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUMzQyxHQUFHLElBQUksR0FBRyxDQUFBO2dCQUVWLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7b0JBQ3RCLEdBQUcsSUFBSSxTQUFTLENBQUE7Z0JBQ2xCLENBQUM7Z0JBRUQsR0FBRyxJQUFJLFFBQVEsQ0FBQTtnQkFFZixJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO29CQUNwQixHQUFHLElBQUksSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUE7Z0JBQ3RELENBQUM7Z0JBRUQsR0FBRyxJQUFJLElBQUksQ0FBQTtnQkFFWCxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFO29CQUNqRCxJQUFJLFdBQVcsR0FBRyxDQUFDO3dCQUFFLEdBQUcsSUFBSSxJQUFJLENBQUE7b0JBRWhDLElBQUksTUFBTSxZQUFZLFdBQVcsRUFBRSxDQUFDO3dCQUNsQyxHQUFHLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtvQkFDN0MsQ0FBQzt5QkFBTSxJQUFJLE9BQU8sTUFBTSxJQUFJLFFBQVEsRUFBRSxDQUFDO3dCQUNyQyxHQUFHLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtvQkFDbkMsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLE9BQU8sTUFBTSxFQUFFLENBQUMsQ0FBQTtvQkFDMUQsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQTtnQkFFRixHQUFHLElBQUksR0FBRyxDQUFBO1lBQ1osQ0FBQztZQUVELHlEQUF5RDtZQUN6RCxLQUFLLE1BQU0sTUFBTSxJQUFJLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUM1QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtvQkFBRSxTQUFRO2dCQUVoQyxJQUFJLFNBQVMsR0FBRyxXQUFXLENBQUE7Z0JBRTNCLElBQUksWUFBWSxJQUFJLFFBQVE7b0JBQUUsR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUE7Z0JBRTlELFNBQVMsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUE7Z0JBRTdCLEdBQUcsSUFBSSxHQUFHLENBQUE7Z0JBRVYsTUFBTSxFQUFDLE1BQU0sRUFBRSxHQUFHLGFBQWEsRUFBQyxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQTtnQkFFeEQsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFBO2dCQUU1QixJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNYLEdBQUcsSUFBSSxTQUFTLENBQUE7Z0JBQ2xCLENBQUM7Z0JBRUQsR0FBRyxJQUFJLFVBQVUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxPQUFPLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUE7WUFDckcsQ0FBQztRQUNILENBQUM7UUFFRCxHQUFHLElBQUksR0FBRyxDQUFBO1FBRVYsSUFBSSxZQUFZLElBQUksT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQzNDLEdBQUcsSUFBSSxNQUFNLENBQUE7UUFDZixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUVkLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM3QixLQUFLLE1BQU0sS0FBSyxJQUFJLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUMzQyxNQUFNLGVBQWUsR0FBRztvQkFDdEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUU7b0JBQzNCLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFO29CQUN4QixXQUFXLEVBQUUsSUFBSTtvQkFDakIsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUU7b0JBQ3JCLFNBQVMsRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFO29CQUM5QixNQUFNLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRTtpQkFDMUIsQ0FBQTtnQkFDRCxNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUksZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO2dCQUUzRSxLQUFLLE1BQU0sY0FBYyxJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO2dCQUMzQixDQUFDO1lBQ0gsQ0FBQztZQUVELHlEQUF5RDtZQUN6RCxLQUFLLE1BQU0sTUFBTSxJQUFJLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUM1QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtvQkFBRSxTQUFRO2dCQUVoQyxNQUFNLEVBQUMsTUFBTSxFQUFFLEdBQUcsYUFBYSxFQUFDLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFBO2dCQUV4RCxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUE7Z0JBRTVCLElBQUksU0FBUyxHQUFHLFdBQVcsQ0FBQTtnQkFFM0IsSUFBSSxZQUFZLElBQUksUUFBUTtvQkFBRSxTQUFTLElBQUksR0FBRyxTQUFTLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQTtnQkFFcEUsU0FBUyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtnQkFFN0IsTUFBTSxlQUFlLEdBQUc7b0JBQ3RCLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQ3hCLElBQUksRUFBRSxTQUFTO29CQUNmLFNBQVMsRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFO29CQUM5QixNQUFNO2lCQUNQLENBQUE7Z0JBQ0QsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtnQkFFM0UsS0FBSyxNQUFNLGNBQWMsSUFBSSxlQUFlLEVBQUUsQ0FBQztvQkFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtnQkFDM0IsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IENyZWF0ZUluZGV4QmFzZSBmcm9tIFwiLi9jcmVhdGUtaW5kZXgtYmFzZS5qc1wiXG5pbXBvcnQgUXVlcnlCYXNlIGZyb20gXCIuL2Jhc2UuanNcIlxuaW1wb3J0IHJlc3RBcmdzRXJyb3IgZnJvbSBcIi4uLy4uL3V0aWxzL3Jlc3QtYXJncy1lcnJvci5qc1wiXG5pbXBvcnQgVGFibGVEYXRhIGZyb20gXCIuLi90YWJsZS1kYXRhL2luZGV4LmpzXCJcbmltcG9ydCBUYWJsZUNvbHVtbiBmcm9tIFwiLi4vdGFibGUtZGF0YS90YWJsZS1jb2x1bW4uanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5Q3JlYXRlVGFibGVCYXNlIGV4dGVuZHMgUXVlcnlCYXNlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHR9IGFyZ3MuZHJpdmVyIC0gRGF0YWJhc2UgZHJpdmVyIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFthcmdzLmlmTm90RXhpc3RzXSAtIFdoZXRoZXIgaWYgbm90IGV4aXN0cy5cbiAgICogQHBhcmFtIHtib29sZWFufSBbYXJncy5pbmRleEluQ3JlYXRlVGFibGVdIC0gV2hldGhlciBpbmRleCBpbiBjcmVhdGUgdGFibGUuXG4gICAqIEBwYXJhbSB7VGFibGVEYXRhfSBhcmdzLnRhYmxlRGF0YSAtIFRhYmxlIGRhdGEuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7ZHJpdmVyLCBpZk5vdEV4aXN0cywgaW5kZXhJbkNyZWF0ZVRhYmxlID0gdHJ1ZSwgdGFibGVEYXRhfSkge1xuICAgIGlmICghKHRhYmxlRGF0YSBpbnN0YW5jZW9mIFRhYmxlRGF0YSkpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgdGFibGUgZGF0YSB3YXMgZ2l2ZW5cIilcblxuICAgIHN1cGVyKHtkcml2ZXJ9KVxuICAgIHRoaXMuaWZOb3RFeGlzdHMgPSBpZk5vdEV4aXN0c1xuICAgIHRoaXMuaW5kZXhJbkNyZWF0ZVRhYmxlID0gaW5kZXhJbkNyZWF0ZVRhYmxlXG4gICAgdGhpcy50YWJsZURhdGEgPSB0YWJsZURhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmdbXT59IC0gUmVzb2x2ZXMgd2l0aCBTUUwgc3RhdGVtZW50cy5cbiAgICovXG4gIGFzeW5jIHRvU3FsKCkge1xuICAgIGNvbnN0IGRhdGFiYXNlVHlwZSA9IHRoaXMuZ2V0RGF0YWJhc2VUeXBlKClcbiAgICBjb25zdCBkcml2ZXIgPSB0aGlzLmdldERyaXZlcigpXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucygpXG4gICAgY29uc3Qge3RhYmxlRGF0YX0gPSB0aGlzXG4gICAgY29uc3Qgc3FscyA9IFtdXG4gICAgY29uc3QgaWZOb3RFeGlzdHMgPSB0aGlzLmlmTm90RXhpc3RzIHx8IHRhYmxlRGF0YS5nZXRJZk5vdEV4aXN0cygpXG4gICAgbGV0IHNxbCA9IFwiXCJcblxuICAgIGlmIChkYXRhYmFzZVR5cGUgPT0gXCJtc3NxbFwiICYmIGlmTm90RXhpc3RzKSB7XG4gICAgICBzcWwgKz0gYElGIE5PVCBFWElTVFMoU0VMRUNUICogRlJPTSBbc3lzb2JqZWN0c10gV0hFUkUgW25hbWVdID0gJHtvcHRpb25zLnF1b3RlKHRhYmxlRGF0YS5nZXROYW1lKCkpfSBBTkQgW3h0eXBlXSA9ICdVJykgQkVHSU4gYFxuICAgIH1cblxuICAgIHNxbCArPSBcIkNSRUFURSBUQUJMRVwiXG5cbiAgICBpZiAoZGF0YWJhc2VUeXBlICE9IFwibXNzcWxcIiAmJiBpZk5vdEV4aXN0cykgc3FsICs9IFwiIElGIE5PVCBFWElTVFNcIlxuXG4gICAgc3FsICs9IGAgJHtvcHRpb25zLnF1b3RlVGFibGVOYW1lKHRhYmxlRGF0YS5nZXROYW1lKCkpfSAoYFxuXG4gICAgbGV0IGNvbHVtbkNvdW50ID0gMFxuXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGFibGVEYXRhLmdldENvbHVtbnMoKSkge1xuICAgICAgY29sdW1uQ291bnQrK1xuXG4gICAgICBpZiAoY29sdW1uQ291bnQgPiAxKSBzcWwgKz0gXCIsIFwiXG5cbiAgICAgIHNxbCArPSBjb2x1bW4uZ2V0U1FMKHtkcml2ZXIsIGZvckFsdGVyVGFibGU6IGZhbHNlfSlcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbmRleEluQ3JlYXRlVGFibGUpIHtcbiAgICAgIGZvciAoY29uc3QgaW5kZXggb2YgdGFibGVEYXRhLmdldEluZGV4ZXMoKSkge1xuICAgICAgICBzcWwgKz0gXCIsXCJcblxuICAgICAgICBpZiAoaW5kZXguZ2V0VW5pcXVlKCkpIHtcbiAgICAgICAgICBzcWwgKz0gXCIgVU5JUVVFXCJcbiAgICAgICAgfVxuXG4gICAgICAgIHNxbCArPSBcIiBJTkRFWFwiXG5cbiAgICAgICAgaWYgKGluZGV4LmdldE5hbWUoKSkge1xuICAgICAgICAgIHNxbCArPSBgICR7b3B0aW9ucy5xdW90ZUluZGV4TmFtZShpbmRleC5nZXROYW1lKCkpfWBcbiAgICAgICAgfVxuXG4gICAgICAgIHNxbCArPSBcIiAoXCJcblxuICAgICAgICBpbmRleC5nZXRDb2x1bW5zKCkuZm9yRWFjaCgoY29sdW1uLCBjb2x1bW5JbmRleCkgPT4ge1xuICAgICAgICAgIGlmIChjb2x1bW5JbmRleCA+IDApIHNxbCArPSBcIiwgXCJcblxuICAgICAgICAgIGlmIChjb2x1bW4gaW5zdGFuY2VvZiBUYWJsZUNvbHVtbikge1xuICAgICAgICAgICAgc3FsICs9IGRyaXZlci5xdW90ZUNvbHVtbihjb2x1bW4uZ2V0TmFtZSgpKVxuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbHVtbiA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBzcWwgKz0gZHJpdmVyLnF1b3RlQ29sdW1uKGNvbHVtbilcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGNvbHVtbiB0eXBlOiAke3R5cGVvZiBjb2x1bW59YClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgc3FsICs9IFwiKVwiXG4gICAgICB9XG5cbiAgICAgIC8vIENyZWF0ZSBpbmRleGVzIGZvciBhbGwgY29sdW1ucyB3aXRoIHRoZSBpbmRleCBhcmd1bWVudFxuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGFibGVEYXRhLmdldENvbHVtbnMoKSkge1xuICAgICAgICBpZiAoIWNvbHVtbi5nZXRJbmRleCgpKSBjb250aW51ZVxuXG4gICAgICAgIGxldCBpbmRleE5hbWUgPSBgaW5kZXhfb25fYFxuXG4gICAgICAgIGlmIChkYXRhYmFzZVR5cGUgPT0gXCJzcWxpdGVcIikgc3FsICs9IGAke3RhYmxlRGF0YS5nZXROYW1lKCl9X2BcblxuICAgICAgICBpbmRleE5hbWUgKz0gY29sdW1uLmdldE5hbWUoKVxuXG4gICAgICAgIHNxbCArPSBcIixcIlxuXG4gICAgICAgIGNvbnN0IHt1bmlxdWUsIC4uLnJlc3RJbmRleEFyZ3N9ID0gY29sdW1uLmdldEluZGV4QXJncygpXG5cbiAgICAgICAgcmVzdEFyZ3NFcnJvcihyZXN0SW5kZXhBcmdzKVxuXG4gICAgICAgIGlmICh1bmlxdWUpIHtcbiAgICAgICAgICBzcWwgKz0gXCIgVU5JUVVFXCJcbiAgICAgICAgfVxuXG4gICAgICAgIHNxbCArPSBgIElOREVYICR7b3B0aW9ucy5xdW90ZUluZGV4TmFtZShpbmRleE5hbWUpfSAoJHtvcHRpb25zLnF1b3RlQ29sdW1uTmFtZShjb2x1bW4uZ2V0TmFtZSgpKX0pYFxuICAgICAgfVxuICAgIH1cblxuICAgIHNxbCArPSBcIilcIlxuXG4gICAgaWYgKGRhdGFiYXNlVHlwZSA9PSBcIm1zc3FsXCIgJiYgaWZOb3RFeGlzdHMpIHtcbiAgICAgIHNxbCArPSBcIiBFTkRcIlxuICAgIH1cblxuICAgIHNxbHMucHVzaChzcWwpXG5cbiAgICBpZiAoIXRoaXMuaW5kZXhJbkNyZWF0ZVRhYmxlKSB7XG4gICAgICBmb3IgKGNvbnN0IGluZGV4IG9mIHRhYmxlRGF0YS5nZXRJbmRleGVzKCkpIHtcbiAgICAgICAgY29uc3QgY3JlYXRlSW5kZXhBcmdzID0ge1xuICAgICAgICAgIGNvbHVtbnM6IGluZGV4LmdldENvbHVtbnMoKSxcbiAgICAgICAgICBkcml2ZXI6IHRoaXMuZ2V0RHJpdmVyKCksXG4gICAgICAgICAgaWZOb3RFeGlzdHM6IHRydWUsXG4gICAgICAgICAgbmFtZTogaW5kZXguZ2V0TmFtZSgpLFxuICAgICAgICAgIHRhYmxlTmFtZTogdGFibGVEYXRhLmdldE5hbWUoKSxcbiAgICAgICAgICB1bmlxdWU6IGluZGV4LmdldFVuaXF1ZSgpXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3JlYXRlSW5kZXhTUUxzID0gYXdhaXQgbmV3IENyZWF0ZUluZGV4QmFzZShjcmVhdGVJbmRleEFyZ3MpLnRvU1FMcygpXG5cbiAgICAgICAgZm9yIChjb25zdCBjcmVhdGVJbmRleFNRTCBvZiBjcmVhdGVJbmRleFNRTHMpIHtcbiAgICAgICAgICBzcWxzLnB1c2goY3JlYXRlSW5kZXhTUUwpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ3JlYXRlIGluZGV4ZXMgZm9yIGFsbCBjb2x1bW5zIHdpdGggdGhlIGluZGV4IGFyZ3VtZW50XG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0YWJsZURhdGEuZ2V0Q29sdW1ucygpKSB7XG4gICAgICAgIGlmICghY29sdW1uLmdldEluZGV4KCkpIGNvbnRpbnVlXG5cbiAgICAgICAgY29uc3Qge3VuaXF1ZSwgLi4ucmVzdEluZGV4QXJnc30gPSBjb2x1bW4uZ2V0SW5kZXhBcmdzKClcblxuICAgICAgICByZXN0QXJnc0Vycm9yKHJlc3RJbmRleEFyZ3MpXG5cbiAgICAgICAgbGV0IGluZGV4TmFtZSA9IGBpbmRleF9vbl9gXG5cbiAgICAgICAgaWYgKGRhdGFiYXNlVHlwZSA9PSBcInNxbGl0ZVwiKSBpbmRleE5hbWUgKz0gYCR7dGFibGVEYXRhLmdldE5hbWUoKX1fYFxuXG4gICAgICAgIGluZGV4TmFtZSArPSBjb2x1bW4uZ2V0TmFtZSgpXG5cbiAgICAgICAgY29uc3QgY3JlYXRlSW5kZXhBcmdzID0ge1xuICAgICAgICAgIGNvbHVtbnM6IFtjb2x1bW4uZ2V0TmFtZSgpXSxcbiAgICAgICAgICBkcml2ZXI6IHRoaXMuZ2V0RHJpdmVyKCksXG4gICAgICAgICAgbmFtZTogaW5kZXhOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZTogdGFibGVEYXRhLmdldE5hbWUoKSxcbiAgICAgICAgICB1bmlxdWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjcmVhdGVJbmRleFNRTHMgPSBhd2FpdCBuZXcgQ3JlYXRlSW5kZXhCYXNlKGNyZWF0ZUluZGV4QXJncykudG9TUUxzKClcblxuICAgICAgICBmb3IgKGNvbnN0IGNyZWF0ZUluZGV4U1FMIG9mIGNyZWF0ZUluZGV4U1FMcykge1xuICAgICAgICAgIHNxbHMucHVzaChjcmVhdGVJbmRleFNRTClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzcWxzXG4gIH1cbn1cbiJdfQ==
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXRhYmxlLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvcXVlcnkvY3JlYXRlLXRhYmxlLWJhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sZUFBZSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BELE9BQU8sU0FBUyxNQUFNLFdBQVcsQ0FBQTtBQUNqQyxPQUFPLGFBQWEsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUMxRCxPQUFPLFNBQVMsTUFBTSx3QkFBd0IsQ0FBQTtBQUM5QyxPQUFPLFdBQVcsTUFBTSwrQkFBK0IsQ0FBQTtBQUV2RCxNQUFNLENBQUMsT0FBTyxPQUFPLHFDQUFzQyxTQUFRLFNBQVM7SUFDMUU7Ozs7OztPQU1HO0lBQ0gsWUFBWSxFQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEdBQUcsSUFBSSxFQUFFLFNBQVMsRUFBQztRQUNyRSxJQUFJLENBQUMsQ0FBQyxTQUFTLFlBQVksU0FBUyxDQUFDO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFBO1FBRXRGLEtBQUssQ0FBQyxFQUFDLE1BQU0sRUFBQyxDQUFDLENBQUE7UUFDZixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTtRQUM5QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUE7UUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUE7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEtBQUs7UUFDVCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUE7UUFDM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFBO1FBQy9CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUNqQyxNQUFNLEVBQUMsU0FBUyxFQUFDLEdBQUcsSUFBSSxDQUFBO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQTtRQUNmLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFBO1FBQ2xFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQTtRQUVaLElBQUksWUFBWSxJQUFJLE9BQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUMzQyxHQUFHLElBQUksMkRBQTJELE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLDRCQUE0QixDQUFBO1FBQ2xJLENBQUM7UUFFRCxHQUFHLElBQUksY0FBYyxDQUFBO1FBRXJCLElBQUksWUFBWSxJQUFJLE9BQU8sSUFBSSxXQUFXO1lBQUUsR0FBRyxJQUFJLGdCQUFnQixDQUFBO1FBRW5FLEdBQUcsSUFBSSxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQTtRQUUxRCxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUE7UUFFbkIsS0FBSyxNQUFNLE1BQU0sSUFBSSxTQUFTLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUM1QyxXQUFXLEVBQUUsQ0FBQTtZQUViLElBQUksV0FBVyxHQUFHLENBQUM7Z0JBQUUsR0FBRyxJQUFJLElBQUksQ0FBQTtZQUVoQyxHQUFHLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQTtRQUN0RCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM1QixLQUFLLE1BQU0sS0FBSyxJQUFJLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUMzQyxHQUFHLElBQUksR0FBRyxDQUFBO2dCQUVWLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7b0JBQ3RCLEdBQUcsSUFBSSxTQUFTLENBQUE7Z0JBQ2xCLENBQUM7Z0JBRUQsR0FBRyxJQUFJLFFBQVEsQ0FBQTtnQkFFZixJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO29CQUNwQixHQUFHLElBQUksSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUE7Z0JBQ3RELENBQUM7Z0JBRUQsR0FBRyxJQUFJLElBQUksQ0FBQTtnQkFFWCxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFO29CQUNqRCxJQUFJLFdBQVcsR0FBRyxDQUFDO3dCQUFFLEdBQUcsSUFBSSxJQUFJLENBQUE7b0JBRWhDLElBQUksTUFBTSxZQUFZLFdBQVcsRUFBRSxDQUFDO3dCQUNsQyxHQUFHLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtvQkFDN0MsQ0FBQzt5QkFBTSxJQUFJLE9BQU8sTUFBTSxJQUFJLFFBQVEsRUFBRSxDQUFDO3dCQUNyQyxHQUFHLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtvQkFDbkMsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLE9BQU8sTUFBTSxFQUFFLENBQUMsQ0FBQTtvQkFDMUQsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQTtnQkFFRixHQUFHLElBQUksR0FBRyxDQUFBO1lBQ1osQ0FBQztZQUVELHlEQUF5RDtZQUN6RCxLQUFLLE1BQU0sTUFBTSxJQUFJLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUM1QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtvQkFBRSxTQUFRO2dCQUVoQyxJQUFJLFNBQVMsR0FBRyxXQUFXLENBQUE7Z0JBRTNCLElBQUksWUFBWSxJQUFJLFFBQVE7b0JBQUUsR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUE7Z0JBRTlELFNBQVMsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUE7Z0JBRTdCLEdBQUcsSUFBSSxHQUFHLENBQUE7Z0JBRVYsTUFBTSxFQUFDLE1BQU0sRUFBRSxHQUFHLGFBQWEsRUFBQyxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQTtnQkFFeEQsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFBO2dCQUU1QixJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNYLEdBQUcsSUFBSSxTQUFTLENBQUE7Z0JBQ2xCLENBQUM7Z0JBRUQsR0FBRyxJQUFJLFVBQVUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxPQUFPLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUE7WUFDckcsQ0FBQztRQUNILENBQUM7UUFFRCxHQUFHLElBQUksR0FBRyxDQUFBO1FBRVYsSUFBSSxZQUFZLElBQUksT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQzNDLEdBQUcsSUFBSSxNQUFNLENBQUE7UUFDZixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUVkLElBQUksWUFBWSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzVCLEtBQUssTUFBTSxNQUFNLElBQUksU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQzVDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQTtnQkFFdEQsSUFBSSxDQUFDLEtBQUs7b0JBQUUsU0FBUTtnQkFFcEIsSUFBSSxDQUFDLElBQUksQ0FDUCxxQkFBcUIsT0FBTyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDakosQ0FBQTtZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzdCLEtBQUssTUFBTSxLQUFLLElBQUksU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQzNDLE1BQU0sZUFBZSxHQUFHO29CQUN0QixPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRTtvQkFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQ3hCLFdBQVcsRUFBRSxJQUFJO29CQUNqQixJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRTtvQkFDckIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUU7b0JBQzlCLE1BQU0sRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFO2lCQUMxQixDQUFBO2dCQUNELE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBSSxlQUFlLENBQUMsZUFBZSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUE7Z0JBRTNFLEtBQUssTUFBTSxjQUFjLElBQUksZUFBZSxFQUFFLENBQUM7b0JBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUE7Z0JBQzNCLENBQUM7WUFDSCxDQUFDO1lBRUQseURBQXlEO1lBQ3pELEtBQUssTUFBTSxNQUFNLElBQUksU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO29CQUFFLFNBQVE7Z0JBRWhDLE1BQU0sRUFBQyxNQUFNLEVBQUUsR0FBRyxhQUFhLEVBQUMsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUE7Z0JBRXhELGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQTtnQkFFNUIsSUFBSSxTQUFTLEdBQUcsV0FBVyxDQUFBO2dCQUUzQixJQUFJLFlBQVksSUFBSSxRQUFRO29CQUFFLFNBQVMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFBO2dCQUVwRSxTQUFTLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFBO2dCQUU3QixNQUFNLGVBQWUsR0FBRztvQkFDdEIsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUMzQixNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDeEIsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsU0FBUyxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUU7b0JBQzlCLE1BQU07aUJBQ1AsQ0FBQTtnQkFDRCxNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUksZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO2dCQUUzRSxLQUFLLE1BQU0sY0FBYyxJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO2dCQUMzQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQ3JlYXRlSW5kZXhCYXNlIGZyb20gXCIuL2NyZWF0ZS1pbmRleC1iYXNlLmpzXCJcbmltcG9ydCBRdWVyeUJhc2UgZnJvbSBcIi4vYmFzZS5qc1wiXG5pbXBvcnQgcmVzdEFyZ3NFcnJvciBmcm9tIFwiLi4vLi4vdXRpbHMvcmVzdC1hcmdzLWVycm9yLmpzXCJcbmltcG9ydCBUYWJsZURhdGEgZnJvbSBcIi4uL3RhYmxlLWRhdGEvaW5kZXguanNcIlxuaW1wb3J0IFRhYmxlQ29sdW1uIGZyb20gXCIuLi90YWJsZS1kYXRhL3RhYmxlLWNvbHVtbi5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlUXVlcnlDcmVhdGVUYWJsZUJhc2UgZXh0ZW5kcyBRdWVyeUJhc2Uge1xuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9kcml2ZXJzL2Jhc2UuanNcIikuZGVmYXVsdH0gYXJncy5kcml2ZXIgLSBEYXRhYmFzZSBkcml2ZXIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2FyZ3MuaWZOb3RFeGlzdHNdIC0gV2hldGhlciBpZiBub3QgZXhpc3RzLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFthcmdzLmluZGV4SW5DcmVhdGVUYWJsZV0gLSBXaGV0aGVyIGluZGV4IGluIGNyZWF0ZSB0YWJsZS5cbiAgICogQHBhcmFtIHtUYWJsZURhdGF9IGFyZ3MudGFibGVEYXRhIC0gVGFibGUgZGF0YS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtkcml2ZXIsIGlmTm90RXhpc3RzLCBpbmRleEluQ3JlYXRlVGFibGUgPSB0cnVlLCB0YWJsZURhdGF9KSB7XG4gICAgaWYgKCEodGFibGVEYXRhIGluc3RhbmNlb2YgVGFibGVEYXRhKSkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB0YWJsZSBkYXRhIHdhcyBnaXZlblwiKVxuXG4gICAgc3VwZXIoe2RyaXZlcn0pXG4gICAgdGhpcy5pZk5vdEV4aXN0cyA9IGlmTm90RXhpc3RzXG4gICAgdGhpcy5pbmRleEluQ3JlYXRlVGFibGUgPSBpbmRleEluQ3JlYXRlVGFibGVcbiAgICB0aGlzLnRhYmxlRGF0YSA9IHRhYmxlRGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZ1tdPn0gLSBSZXNvbHZlcyB3aXRoIFNRTCBzdGF0ZW1lbnRzLlxuICAgKi9cbiAgYXN5bmMgdG9TcWwoKSB7XG4gICAgY29uc3QgZGF0YWJhc2VUeXBlID0gdGhpcy5nZXREYXRhYmFzZVR5cGUoKVxuICAgIGNvbnN0IGRyaXZlciA9IHRoaXMuZ2V0RHJpdmVyKClcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5nZXRPcHRpb25zKClcbiAgICBjb25zdCB7dGFibGVEYXRhfSA9IHRoaXNcbiAgICBjb25zdCBzcWxzID0gW11cbiAgICBjb25zdCBpZk5vdEV4aXN0cyA9IHRoaXMuaWZOb3RFeGlzdHMgfHwgdGFibGVEYXRhLmdldElmTm90RXhpc3RzKClcbiAgICBsZXQgc3FsID0gXCJcIlxuXG4gICAgaWYgKGRhdGFiYXNlVHlwZSA9PSBcIm1zc3FsXCIgJiYgaWZOb3RFeGlzdHMpIHtcbiAgICAgIHNxbCArPSBgSUYgTk9UIEVYSVNUUyhTRUxFQ1QgKiBGUk9NIFtzeXNvYmplY3RzXSBXSEVSRSBbbmFtZV0gPSAke29wdGlvbnMucXVvdGUodGFibGVEYXRhLmdldE5hbWUoKSl9IEFORCBbeHR5cGVdID0gJ1UnKSBCRUdJTiBgXG4gICAgfVxuXG4gICAgc3FsICs9IFwiQ1JFQVRFIFRBQkxFXCJcblxuICAgIGlmIChkYXRhYmFzZVR5cGUgIT0gXCJtc3NxbFwiICYmIGlmTm90RXhpc3RzKSBzcWwgKz0gXCIgSUYgTk9UIEVYSVNUU1wiXG5cbiAgICBzcWwgKz0gYCAke29wdGlvbnMucXVvdGVUYWJsZU5hbWUodGFibGVEYXRhLmdldE5hbWUoKSl9IChgXG5cbiAgICBsZXQgY29sdW1uQ291bnQgPSAwXG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0YWJsZURhdGEuZ2V0Q29sdW1ucygpKSB7XG4gICAgICBjb2x1bW5Db3VudCsrXG5cbiAgICAgIGlmIChjb2x1bW5Db3VudCA+IDEpIHNxbCArPSBcIiwgXCJcblxuICAgICAgc3FsICs9IGNvbHVtbi5nZXRTUUwoe2RyaXZlciwgZm9yQWx0ZXJUYWJsZTogZmFsc2V9KVxuICAgIH1cblxuICAgIGlmICh0aGlzLmluZGV4SW5DcmVhdGVUYWJsZSkge1xuICAgICAgZm9yIChjb25zdCBpbmRleCBvZiB0YWJsZURhdGEuZ2V0SW5kZXhlcygpKSB7XG4gICAgICAgIHNxbCArPSBcIixcIlxuXG4gICAgICAgIGlmIChpbmRleC5nZXRVbmlxdWUoKSkge1xuICAgICAgICAgIHNxbCArPSBcIiBVTklRVUVcIlxuICAgICAgICB9XG5cbiAgICAgICAgc3FsICs9IFwiIElOREVYXCJcblxuICAgICAgICBpZiAoaW5kZXguZ2V0TmFtZSgpKSB7XG4gICAgICAgICAgc3FsICs9IGAgJHtvcHRpb25zLnF1b3RlSW5kZXhOYW1lKGluZGV4LmdldE5hbWUoKSl9YFxuICAgICAgICB9XG5cbiAgICAgICAgc3FsICs9IFwiIChcIlxuXG4gICAgICAgIGluZGV4LmdldENvbHVtbnMoKS5mb3JFYWNoKChjb2x1bW4sIGNvbHVtbkluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKGNvbHVtbkluZGV4ID4gMCkgc3FsICs9IFwiLCBcIlxuXG4gICAgICAgICAgaWYgKGNvbHVtbiBpbnN0YW5jZW9mIFRhYmxlQ29sdW1uKSB7XG4gICAgICAgICAgICBzcWwgKz0gZHJpdmVyLnF1b3RlQ29sdW1uKGNvbHVtbi5nZXROYW1lKCkpXG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgY29sdW1uID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHNxbCArPSBkcml2ZXIucXVvdGVDb2x1bW4oY29sdW1uKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gY29sdW1uIHR5cGU6ICR7dHlwZW9mIGNvbHVtbn1gKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICBzcWwgKz0gXCIpXCJcbiAgICAgIH1cblxuICAgICAgLy8gQ3JlYXRlIGluZGV4ZXMgZm9yIGFsbCBjb2x1bW5zIHdpdGggdGhlIGluZGV4IGFyZ3VtZW50XG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0YWJsZURhdGEuZ2V0Q29sdW1ucygpKSB7XG4gICAgICAgIGlmICghY29sdW1uLmdldEluZGV4KCkpIGNvbnRpbnVlXG5cbiAgICAgICAgbGV0IGluZGV4TmFtZSA9IGBpbmRleF9vbl9gXG5cbiAgICAgICAgaWYgKGRhdGFiYXNlVHlwZSA9PSBcInNxbGl0ZVwiKSBzcWwgKz0gYCR7dGFibGVEYXRhLmdldE5hbWUoKX1fYFxuXG4gICAgICAgIGluZGV4TmFtZSArPSBjb2x1bW4uZ2V0TmFtZSgpXG5cbiAgICAgICAgc3FsICs9IFwiLFwiXG5cbiAgICAgICAgY29uc3Qge3VuaXF1ZSwgLi4ucmVzdEluZGV4QXJnc30gPSBjb2x1bW4uZ2V0SW5kZXhBcmdzKClcblxuICAgICAgICByZXN0QXJnc0Vycm9yKHJlc3RJbmRleEFyZ3MpXG5cbiAgICAgICAgaWYgKHVuaXF1ZSkge1xuICAgICAgICAgIHNxbCArPSBcIiBVTklRVUVcIlxuICAgICAgICB9XG5cbiAgICAgICAgc3FsICs9IGAgSU5ERVggJHtvcHRpb25zLnF1b3RlSW5kZXhOYW1lKGluZGV4TmFtZSl9ICgke29wdGlvbnMucXVvdGVDb2x1bW5OYW1lKGNvbHVtbi5nZXROYW1lKCkpfSlgXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3FsICs9IFwiKVwiXG5cbiAgICBpZiAoZGF0YWJhc2VUeXBlID09IFwibXNzcWxcIiAmJiBpZk5vdEV4aXN0cykge1xuICAgICAgc3FsICs9IFwiIEVORFwiXG4gICAgfVxuXG4gICAgc3Fscy5wdXNoKHNxbClcblxuICAgIGlmIChkYXRhYmFzZVR5cGUgPT0gXCJwZ3NxbFwiKSB7XG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0YWJsZURhdGEuZ2V0Q29sdW1ucygpKSB7XG4gICAgICAgIGNvbnN0IG5vdGVzID0gY29sdW1uLmdldE5vdGVzRm9yRGF0YWJhc2UoZGF0YWJhc2VUeXBlKVxuXG4gICAgICAgIGlmICghbm90ZXMpIGNvbnRpbnVlXG5cbiAgICAgICAgc3Fscy5wdXNoKFxuICAgICAgICAgIGBDT01NRU5UIE9OIENPTFVNTiAke29wdGlvbnMucXVvdGVUYWJsZU5hbWUodGFibGVEYXRhLmdldE5hbWUoKSl9LiR7b3B0aW9ucy5xdW90ZUNvbHVtbk5hbWUoY29sdW1uLmdldEFjdHVhbE5hbWUoKSl9IElTICR7b3B0aW9ucy5xdW90ZShub3Rlcyl9YFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmluZGV4SW5DcmVhdGVUYWJsZSkge1xuICAgICAgZm9yIChjb25zdCBpbmRleCBvZiB0YWJsZURhdGEuZ2V0SW5kZXhlcygpKSB7XG4gICAgICAgIGNvbnN0IGNyZWF0ZUluZGV4QXJncyA9IHtcbiAgICAgICAgICBjb2x1bW5zOiBpbmRleC5nZXRDb2x1bW5zKCksXG4gICAgICAgICAgZHJpdmVyOiB0aGlzLmdldERyaXZlcigpLFxuICAgICAgICAgIGlmTm90RXhpc3RzOiB0cnVlLFxuICAgICAgICAgIG5hbWU6IGluZGV4LmdldE5hbWUoKSxcbiAgICAgICAgICB0YWJsZU5hbWU6IHRhYmxlRGF0YS5nZXROYW1lKCksXG4gICAgICAgICAgdW5pcXVlOiBpbmRleC5nZXRVbmlxdWUoKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNyZWF0ZUluZGV4U1FMcyA9IGF3YWl0IG5ldyBDcmVhdGVJbmRleEJhc2UoY3JlYXRlSW5kZXhBcmdzKS50b1NRTHMoKVxuXG4gICAgICAgIGZvciAoY29uc3QgY3JlYXRlSW5kZXhTUUwgb2YgY3JlYXRlSW5kZXhTUUxzKSB7XG4gICAgICAgICAgc3Fscy5wdXNoKGNyZWF0ZUluZGV4U1FMKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIENyZWF0ZSBpbmRleGVzIGZvciBhbGwgY29sdW1ucyB3aXRoIHRoZSBpbmRleCBhcmd1bWVudFxuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGFibGVEYXRhLmdldENvbHVtbnMoKSkge1xuICAgICAgICBpZiAoIWNvbHVtbi5nZXRJbmRleCgpKSBjb250aW51ZVxuXG4gICAgICAgIGNvbnN0IHt1bmlxdWUsIC4uLnJlc3RJbmRleEFyZ3N9ID0gY29sdW1uLmdldEluZGV4QXJncygpXG5cbiAgICAgICAgcmVzdEFyZ3NFcnJvcihyZXN0SW5kZXhBcmdzKVxuXG4gICAgICAgIGxldCBpbmRleE5hbWUgPSBgaW5kZXhfb25fYFxuXG4gICAgICAgIGlmIChkYXRhYmFzZVR5cGUgPT0gXCJzcWxpdGVcIikgaW5kZXhOYW1lICs9IGAke3RhYmxlRGF0YS5nZXROYW1lKCl9X2BcblxuICAgICAgICBpbmRleE5hbWUgKz0gY29sdW1uLmdldE5hbWUoKVxuXG4gICAgICAgIGNvbnN0IGNyZWF0ZUluZGV4QXJncyA9IHtcbiAgICAgICAgICBjb2x1bW5zOiBbY29sdW1uLmdldE5hbWUoKV0sXG4gICAgICAgICAgZHJpdmVyOiB0aGlzLmdldERyaXZlcigpLFxuICAgICAgICAgIG5hbWU6IGluZGV4TmFtZSxcbiAgICAgICAgICB0YWJsZU5hbWU6IHRhYmxlRGF0YS5nZXROYW1lKCksXG4gICAgICAgICAgdW5pcXVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3JlYXRlSW5kZXhTUUxzID0gYXdhaXQgbmV3IENyZWF0ZUluZGV4QmFzZShjcmVhdGVJbmRleEFyZ3MpLnRvU1FMcygpXG5cbiAgICAgICAgZm9yIChjb25zdCBjcmVhdGVJbmRleFNRTCBvZiBjcmVhdGVJbmRleFNRTHMpIHtcbiAgICAgICAgICBzcWxzLnB1c2goY3JlYXRlSW5kZXhTUUwpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3Fsc1xuICB9XG59XG4iXX0=
@@ -75,6 +75,11 @@ export default class VelociousDatabaseQueryModelClassQuery<MC extends typeof imp
75
75
  * @returns {Promise<any[]>} - Resolves with the pluck.
76
76
  */
77
77
  pluck(...columns: (string | string[])[]): Promise<any[]>;
78
+ /**
79
+ * @param {import("./index.js").WhereArgumentType} where - Where.
80
+ * @returns {this} This query instance
81
+ */
82
+ where(where: import("./index.js").WhereArgumentType): this;
78
83
  }
79
84
  export type ModelClassQueryArgsType<MC extends typeof import("../record/index.js").default> = import("./index.js").QueryArgsType & {
80
85
  modelClass: MC;
@@ -1 +1 @@
1
- {"version":3,"file":"model-class-query.d.ts","sourceRoot":"","sources":["../../../../src/database/query/model-class-query.js"],"names":[],"mappings":"AASA;;GAEG;AACH;;;GAGG;AAEH;;;GAGG;AACH,2DAX2D,EAAE,SAAhD,cAAe,oBAAoB,EAAE,OAAQ;IAYxD,+EAA+E;IAC/E,kBADY,uBAAuB,CAAC,EAAE,CAAC,EAWtC;IAFC,iBAAiB;IACjB,YADW,EAAE,CACe;IAG9B,oCAAoC;IACpC,SADc,IAAI,CAsBjB;IAED,6DAA6D;IAC7D,SADc,OAAO,CAAC,MAAM,CAAC,CAsC5B;IAED,wCAAwC;IACxC,iBADc,EAAE,CAKf;IAED,0DAA0D;IAC1D,cADc,OAAO,CAAC,IAAI,CAAC,CAO1B;IAED;;;OAGG;IACH,eAHW,MAAM,GAAC,MAAM,GACX,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAmBrC;IAED;;;OAGG;IACH,mBAHW;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAC,GAC9B,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAiB5C;IAED;;;;OAIG;IACH,2BAJW;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAC,aAChC,CAAS,IAAgB,EAAhB,YAAY,CAAC,EAAE,CAAC,KAAI,IAAI,GAC/B,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAUrC;IAED;;;OAGG;IACH,yBAHW;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAC,GAC9B,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAuBrC;IAED;;;;OAIG;IACH,+BAJW,MAAM,aACN,CAAS,IAAgB,EAAhB,YAAY,CAAC,EAAE,CAAC,KAAI,IAAI,GAC/B,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAerC;IAED,mFAAmF;IACnF,SADc,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAMlD;IAED,kFAAkF;IAClF,QADc,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAOlD;IAED;;;OAGG;IACH,cAHW,OAAO,YAAY,EAAE,mBAAmB,GACtC,IAAI,CAKhB;IAED;;;OAGG;IACH,WAFa,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAyB5C;IAED;;;;OAIG;IACH,kBAHW,CAAG,MAAM,GAAC,MAAM,EAAE,GAAA,GAChB,OAAO,CAAC,GAAG,EAAE,CAAC,CA+B1B;CACF;oCA1S0D,EAAE,SAAhD,cAAe,oBAAoB,EAAE,OAAQ,IAC7C,OAAO,YAAY,EAAE,aAAa,GAAG;IAAC,UAAU,EAAE,EAAE,CAAA;CAAC;0BARxC,YAAY"}
1
+ {"version":3,"file":"model-class-query.d.ts","sourceRoot":"","sources":["../../../../src/database/query/model-class-query.js"],"names":[],"mappings":"AAWA;;GAEG;AACH;;;GAGG;AAEH;;;GAGG;AACH,2DAX2D,EAAE,SAAhD,cAAe,oBAAoB,EAAE,OAAQ;IAYxD,+EAA+E;IAC/E,kBADY,uBAAuB,CAAC,EAAE,CAAC,EAWtC;IAFC,iBAAiB;IACjB,YADW,EAAE,CACe;IAG9B,oCAAoC;IACpC,SADc,IAAI,CAsBjB;IAED,6DAA6D;IAC7D,SADc,OAAO,CAAC,MAAM,CAAC,CAsC5B;IAED,wCAAwC;IACxC,iBADc,EAAE,CAKf;IAED,0DAA0D;IAC1D,cADc,OAAO,CAAC,IAAI,CAAC,CAO1B;IAED;;;OAGG;IACH,eAHW,MAAM,GAAC,MAAM,GACX,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAmBrC;IAED;;;OAGG;IACH,mBAHW;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAC,GAC9B,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAiB5C;IAED;;;;OAIG;IACH,2BAJW;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAC,aAChC,CAAS,IAAgB,EAAhB,YAAY,CAAC,EAAE,CAAC,KAAI,IAAI,GAC/B,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAUrC;IAED;;;OAGG;IACH,yBAHW;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAC,GAC9B,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAuBrC;IAED;;;;OAIG;IACH,+BAJW,MAAM,aACN,CAAS,IAAgB,EAAhB,YAAY,CAAC,EAAE,CAAC,KAAI,IAAI,GAC/B,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAerC;IAED,mFAAmF;IACnF,SADc,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAMlD;IAED,kFAAkF;IAClF,QADc,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAOlD;IAED;;;OAGG;IACH,cAHW,OAAO,YAAY,EAAE,mBAAmB,GACtC,IAAI,CAKhB;IAED;;;OAGG;IACH,WAFa,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAyB5C;IAED;;;;OAIG;IACH,kBAHW,CAAG,MAAM,GAAC,MAAM,EAAE,GAAA,GAChB,OAAO,CAAC,GAAG,EAAE,CAAC,CA+B1B;IAED;;;OAGG;IACH,aAHW,OAAO,YAAY,EAAE,iBAAiB,GACpC,IAAI,CAiChB;CACF;oCA/U0D,EAAE,SAAhD,cAAe,oBAAoB,EAAE,OAAQ,IAC7C,OAAO,YAAY,EAAE,aAAa,GAAG;IAAC,UAAU,EAAE,EAAE,CAAA;CAAC;0BATxC,YAAY"}