velocious 1.0.567 → 1.0.568

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 (108) hide show
  1. package/README.md +29 -1
  2. package/build/database/drivers/base-table.js +4 -3
  3. package/build/database/drivers/base.js +28 -0
  4. package/build/database/drivers/index-metadata.js +28 -0
  5. package/build/database/drivers/mssql/column.js +2 -34
  6. package/build/database/drivers/mssql/columns-index.js +37 -0
  7. package/build/database/drivers/mssql/table.js +55 -11
  8. package/build/database/drivers/mysql/sql/alter-table.js +13 -0
  9. package/build/database/drivers/pgsql/column.js +2 -27
  10. package/build/database/drivers/pgsql/columns-index.js +37 -0
  11. package/build/database/drivers/pgsql/table.js +61 -10
  12. package/build/database/drivers/sqlite/sql/alter-table.js +18 -0
  13. package/build/database/migration/index.js +92 -3
  14. package/build/database/query/alter-table-base.js +20 -1
  15. package/build/database/record/attachments/normalize-input.js +38 -10
  16. package/build/database/record/attachments/storage-drivers/filesystem.js +33 -2
  17. package/build/database/record/attachments/storage-drivers/native.js +17 -2
  18. package/build/database/record/attachments/storage-drivers/s3.js +27 -7
  19. package/build/database/record/attachments/store.js +159 -43
  20. package/build/database/table-data/table-foreign-key.js +9 -1
  21. package/build/environment-handlers/base.js +1 -1
  22. package/build/environment-handlers/node/attachment-path-source.js +144 -0
  23. package/build/environment-handlers/node.js +28 -3
  24. package/build/src/database/drivers/base-table.d.ts.map +1 -1
  25. package/build/src/database/drivers/base-table.js +4 -3
  26. package/build/src/database/drivers/base.d.ts +7 -0
  27. package/build/src/database/drivers/base.d.ts.map +1 -1
  28. package/build/src/database/drivers/base.js +24 -1
  29. package/build/src/database/drivers/index-metadata.d.ts +41 -0
  30. package/build/src/database/drivers/index-metadata.d.ts.map +1 -0
  31. package/build/src/database/drivers/index-metadata.js +26 -0
  32. package/build/src/database/drivers/mssql/column.d.ts.map +1 -1
  33. package/build/src/database/drivers/mssql/column.js +3 -31
  34. package/build/src/database/drivers/mssql/columns-index.d.ts +41 -0
  35. package/build/src/database/drivers/mssql/columns-index.d.ts.map +1 -1
  36. package/build/src/database/drivers/mssql/columns-index.js +35 -1
  37. package/build/src/database/drivers/mssql/table.d.ts +42 -0
  38. package/build/src/database/drivers/mssql/table.d.ts.map +1 -1
  39. package/build/src/database/drivers/mssql/table.js +49 -12
  40. package/build/src/database/drivers/mysql/sql/alter-table.d.ts.map +1 -1
  41. package/build/src/database/drivers/mysql/sql/alter-table.js +12 -1
  42. package/build/src/database/drivers/pgsql/column.d.ts.map +1 -1
  43. package/build/src/database/drivers/pgsql/column.js +3 -24
  44. package/build/src/database/drivers/pgsql/columns-index.d.ts +41 -0
  45. package/build/src/database/drivers/pgsql/columns-index.d.ts.map +1 -1
  46. package/build/src/database/drivers/pgsql/columns-index.js +35 -1
  47. package/build/src/database/drivers/pgsql/table.d.ts +42 -0
  48. package/build/src/database/drivers/pgsql/table.d.ts.map +1 -1
  49. package/build/src/database/drivers/pgsql/table.js +54 -11
  50. package/build/src/database/drivers/sqlite/sql/alter-table.d.ts.map +1 -1
  51. package/build/src/database/drivers/sqlite/sql/alter-table.js +15 -1
  52. package/build/src/database/migration/index.d.ts +35 -1
  53. package/build/src/database/migration/index.d.ts.map +1 -1
  54. package/build/src/database/migration/index.js +78 -4
  55. package/build/src/database/query/alter-table-base.d.ts +6 -0
  56. package/build/src/database/query/alter-table-base.d.ts.map +1 -1
  57. package/build/src/database/query/alter-table-base.js +18 -2
  58. package/build/src/database/record/attachments/normalize-input.d.ts +33 -4
  59. package/build/src/database/record/attachments/normalize-input.d.ts.map +1 -1
  60. package/build/src/database/record/attachments/normalize-input.js +39 -11
  61. package/build/src/database/record/attachments/storage-drivers/filesystem.d.ts +2 -5
  62. package/build/src/database/record/attachments/storage-drivers/filesystem.d.ts.map +1 -1
  63. package/build/src/database/record/attachments/storage-drivers/filesystem.js +28 -3
  64. package/build/src/database/record/attachments/storage-drivers/native.d.ts +2 -6
  65. package/build/src/database/record/attachments/storage-drivers/native.d.ts.map +1 -1
  66. package/build/src/database/record/attachments/storage-drivers/native.js +14 -3
  67. package/build/src/database/record/attachments/storage-drivers/s3.d.ts +2 -6
  68. package/build/src/database/record/attachments/storage-drivers/s3.d.ts.map +1 -1
  69. package/build/src/database/record/attachments/storage-drivers/s3.js +29 -8
  70. package/build/src/database/record/attachments/store.d.ts +27 -0
  71. package/build/src/database/record/attachments/store.d.ts.map +1 -1
  72. package/build/src/database/record/attachments/store.js +144 -44
  73. package/build/src/database/table-data/table-foreign-key.d.ts +9 -1
  74. package/build/src/database/table-data/table-foreign-key.d.ts.map +1 -1
  75. package/build/src/database/table-data/table-foreign-key.js +9 -2
  76. package/build/src/environment-handlers/base.d.ts +2 -5
  77. package/build/src/environment-handlers/base.d.ts.map +1 -1
  78. package/build/src/environment-handlers/base.js +2 -2
  79. package/build/src/environment-handlers/node/attachment-path-source.d.ts +64 -0
  80. package/build/src/environment-handlers/node/attachment-path-source.d.ts.map +1 -0
  81. package/build/src/environment-handlers/node/attachment-path-source.js +116 -0
  82. package/build/src/environment-handlers/node.d.ts +12 -0
  83. package/build/src/environment-handlers/node.d.ts.map +1 -1
  84. package/build/src/environment-handlers/node.js +24 -4
  85. package/build/tsconfig.tsbuildinfo +1 -1
  86. package/package.json +1 -1
  87. package/src/database/drivers/base-table.js +4 -3
  88. package/src/database/drivers/base.js +28 -0
  89. package/src/database/drivers/index-metadata.js +28 -0
  90. package/src/database/drivers/mssql/column.js +2 -34
  91. package/src/database/drivers/mssql/columns-index.js +37 -0
  92. package/src/database/drivers/mssql/table.js +55 -11
  93. package/src/database/drivers/mysql/sql/alter-table.js +13 -0
  94. package/src/database/drivers/pgsql/column.js +2 -27
  95. package/src/database/drivers/pgsql/columns-index.js +37 -0
  96. package/src/database/drivers/pgsql/table.js +61 -10
  97. package/src/database/drivers/sqlite/sql/alter-table.js +18 -0
  98. package/src/database/migration/index.js +92 -3
  99. package/src/database/query/alter-table-base.js +20 -1
  100. package/src/database/record/attachments/normalize-input.js +38 -10
  101. package/src/database/record/attachments/storage-drivers/filesystem.js +33 -2
  102. package/src/database/record/attachments/storage-drivers/native.js +17 -2
  103. package/src/database/record/attachments/storage-drivers/s3.js +27 -7
  104. package/src/database/record/attachments/store.js +159 -43
  105. package/src/database/table-data/table-foreign-key.js +9 -1
  106. package/src/environment-handlers/base.js +1 -1
  107. package/src/environment-handlers/node/attachment-path-source.js +144 -0
  108. package/src/environment-handlers/node.js +28 -3
@@ -1,5 +1,39 @@
1
1
  // @ts-check
2
2
  import BaseColumnsIndex from "../base-columns-index.js";
3
+ import TableIndex from "../../table-data/table-index.js";
4
+ /**
5
+ * PgsqlColumnsIndexDataType type.
6
+ * @typedef {object} PgsqlColumnsIndexDataType
7
+ * @property {string[]} columnNames - Ordered index column names.
8
+ * @property {string} index_name - Index name.
9
+ * @property {boolean} is_primary_key - Whether the index is primary.
10
+ * @property {boolean} is_unique - Whether the index is unique.
11
+ * @property {string} table_name - Table name.
12
+ */
3
13
  export default class VelociousDatabaseDriversPgsqlColumn extends BaseColumnsIndex {
14
+ /**
15
+ * Runs constructor.
16
+ * @param {import("../base-table.js").default} table - Table.
17
+ * @param {PgsqlColumnsIndexDataType} data - Grouped index metadata.
18
+ */
19
+ constructor(table, data) {
20
+ super(table, data);
21
+ this.indexData = data;
22
+ }
23
+ /**
24
+ * Runs get column names.
25
+ * @returns {string[]} - Ordered index column names.
26
+ */
27
+ getColumnNames() { return this.indexData.columnNames; }
28
+ /**
29
+ * Runs get table data index.
30
+ * @returns {TableIndex} - Table-data index.
31
+ */
32
+ getTableDataIndex() {
33
+ return new TableIndex(this.getColumnNames(), {
34
+ name: this.getName(),
35
+ unique: this.isUnique()
36
+ });
37
+ }
4
38
  }
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy1pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9kcml2ZXJzL3Bnc3FsL2NvbHVtbnMtaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sZ0JBQWdCLE1BQU0sMEJBQTBCLENBQUE7QUFFdkQsTUFBTSxDQUFDLE9BQU8sT0FBTyxtQ0FBb0MsU0FBUSxnQkFBZ0I7Q0FDaEYiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEJhc2VDb2x1bW5zSW5kZXggZnJvbSBcIi4uL2Jhc2UtY29sdW1ucy1pbmRleC5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlRHJpdmVyc1Bnc3FsQ29sdW1uIGV4dGVuZHMgQmFzZUNvbHVtbnNJbmRleCB7XG59XG4iXX0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy1pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9kcml2ZXJzL3Bnc3FsL2NvbHVtbnMtaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sZ0JBQWdCLE1BQU0sMEJBQTBCLENBQUE7QUFDdkQsT0FBTyxVQUFVLE1BQU0saUNBQWlDLENBQUE7QUFFeEQ7Ozs7Ozs7O0dBUUc7QUFFSCxNQUFNLENBQUMsT0FBTyxPQUFPLG1DQUFvQyxTQUFRLGdCQUFnQjtJQUMvRTs7OztPQUlHO0lBQ0gsWUFBWSxLQUFLLEVBQUUsSUFBSTtRQUNyQixLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFBO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjLEtBQUssT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQSxDQUFDLENBQUM7SUFFdEQ7OztPQUdHO0lBQ0gsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUU7WUFDM0MsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDcEIsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7U0FDeEIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBCYXNlQ29sdW1uc0luZGV4IGZyb20gXCIuLi9iYXNlLWNvbHVtbnMtaW5kZXguanNcIlxuaW1wb3J0IFRhYmxlSW5kZXggZnJvbSBcIi4uLy4uL3RhYmxlLWRhdGEvdGFibGUtaW5kZXguanNcIlxuXG4vKipcbiAqIFBnc3FsQ29sdW1uc0luZGV4RGF0YVR5cGUgdHlwZS5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IFBnc3FsQ29sdW1uc0luZGV4RGF0YVR5cGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IGNvbHVtbk5hbWVzIC0gT3JkZXJlZCBpbmRleCBjb2x1bW4gbmFtZXMuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaW5kZXhfbmFtZSAtIEluZGV4IG5hbWUuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzX3ByaW1hcnlfa2V5IC0gV2hldGhlciB0aGUgaW5kZXggaXMgcHJpbWFyeS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaXNfdW5pcXVlIC0gV2hldGhlciB0aGUgaW5kZXggaXMgdW5pcXVlLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHRhYmxlX25hbWUgLSBUYWJsZSBuYW1lLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlRHJpdmVyc1Bnc3FsQ29sdW1uIGV4dGVuZHMgQmFzZUNvbHVtbnNJbmRleCB7XG4gIC8qKlxuICAgKiBSdW5zIGNvbnN0cnVjdG9yLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2Jhc2UtdGFibGUuanNcIikuZGVmYXVsdH0gdGFibGUgLSBUYWJsZS5cbiAgICogQHBhcmFtIHtQZ3NxbENvbHVtbnNJbmRleERhdGFUeXBlfSBkYXRhIC0gR3JvdXBlZCBpbmRleCBtZXRhZGF0YS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHRhYmxlLCBkYXRhKSB7XG4gICAgc3VwZXIodGFibGUsIGRhdGEpXG4gICAgdGhpcy5pbmRleERhdGEgPSBkYXRhXG4gIH1cblxuICAvKipcbiAgICogUnVucyBnZXQgY29sdW1uIG5hbWVzLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nW119IC0gT3JkZXJlZCBpbmRleCBjb2x1bW4gbmFtZXMuXG4gICAqL1xuICBnZXRDb2x1bW5OYW1lcygpIHsgcmV0dXJuIHRoaXMuaW5kZXhEYXRhLmNvbHVtbk5hbWVzIH1cblxuICAvKipcbiAgICogUnVucyBnZXQgdGFibGUgZGF0YSBpbmRleC5cbiAgICogQHJldHVybnMge1RhYmxlSW5kZXh9IC0gVGFibGUtZGF0YSBpbmRleC5cbiAgICovXG4gIGdldFRhYmxlRGF0YUluZGV4KCkge1xuICAgIHJldHVybiBuZXcgVGFibGVJbmRleCh0aGlzLmdldENvbHVtbk5hbWVzKCksIHtcbiAgICAgIG5hbWU6IHRoaXMuZ2V0TmFtZSgpLFxuICAgICAgdW5pcXVlOiB0aGlzLmlzVW5pcXVlKClcbiAgICB9KVxuICB9XG59XG4iXX0=
@@ -1,3 +1,18 @@
1
+ /**
2
+ * PgsqlGroupedIndexDataType type.
3
+ * @typedef {object} PgsqlGroupedIndexDataType
4
+ * @property {string[]} columnNames - Ordered index column names.
5
+ * @property {string} index_name - Index name.
6
+ * @property {boolean} is_primary_key - Whether the index is primary.
7
+ * @property {boolean} is_unique - Whether the index is unique.
8
+ * @property {string} table_name - Table name.
9
+ */
10
+ /**
11
+ * Groups ordered PostgreSQL index rows into one metadata value per index.
12
+ * @param {import("../index-metadata.js").IndexMetadataType[]} indexRows - Ordered index metadata rows.
13
+ * @returns {PgsqlGroupedIndexDataType[]} - Grouped index metadata.
14
+ */
15
+ export function groupPgsqlIndexRows(indexRows: import("../index-metadata.js").IndexMetadataType[]): PgsqlGroupedIndexDataType[];
1
16
  export default class VelociousDatabaseDriversPgsqlTable extends BaseTable {
2
17
  /**
3
18
  * Runs constructor.
@@ -9,8 +24,35 @@ export default class VelociousDatabaseDriversPgsqlTable extends BaseTable {
9
24
  driver: import("../base.js").default;
10
25
  getColumns(): Promise<Column[]>;
11
26
  getForeignKeys(): Promise<ForeignKey[]>;
27
+ getIndexes(): Promise<ColumnsIndex[]>;
12
28
  }
29
+ /**
30
+ * PgsqlGroupedIndexDataType type.
31
+ */
32
+ export type PgsqlGroupedIndexDataType = {
33
+ /**
34
+ * - Ordered index column names.
35
+ */
36
+ columnNames: string[];
37
+ /**
38
+ * - Index name.
39
+ */
40
+ index_name: string;
41
+ /**
42
+ * - Whether the index is primary.
43
+ */
44
+ is_primary_key: boolean;
45
+ /**
46
+ * - Whether the index is unique.
47
+ */
48
+ is_unique: boolean;
49
+ /**
50
+ * - Table name.
51
+ */
52
+ table_name: string;
53
+ };
13
54
  import BaseTable from "../base-table.js";
14
55
  import Column from "./column.js";
15
56
  import ForeignKey from "./foreign-key.js";
57
+ import ColumnsIndex from "./columns-index.js";
16
58
  //# sourceMappingURL=table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/pgsql/table.js"],"names":[],"mappings":"AAOA;IACE;;;;OAIG;IACH,oBAHW,OAAO,YAAY,EAAE,OAAO,QAC5B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAMhC;IAFC,6BAAgB;IAChB,qCAAoB;IAGtB,gCAqCC;IAED,wCAoCC;CAwCF;sBApIqB,kBAAkB;mBACrB,aAAa;uBAET,kBAAkB"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/pgsql/table.js"],"names":[],"mappings":"AAQA;;;;;;;;GAQG;AAEH;;;;GAIG;AACH,+CAHW,OAAO,sBAAsB,EAAE,iBAAiB,EAAE,GAChD,yBAAyB,EAAE,CA6BvC;AAED;IACE;;;;OAIG;IACH,oBAHW,OAAO,YAAY,EAAE,OAAO,QAC5B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAMhC;IAFC,6BAAgB;IAChB,qCAAoB;IAGtB,gCAqCC;IAED,wCAoCC;IAED,sCAmCC;CASF;;;;;;;;iBA9Ka,MAAM,EAAE;;;;gBACR,MAAM;;;;oBACN,OAAO;;;;eACP,OAAO;;;;gBACP,MAAM;;sBAbE,kBAAkB;mBACrB,aAAa;uBAET,kBAAkB;yBADhB,oBAAoB"}
@@ -3,6 +3,44 @@ import BaseTable from "../base-table.js";
3
3
  import Column from "./column.js";
4
4
  import ColumnsIndex from "./columns-index.js";
5
5
  import ForeignKey from "./foreign-key.js";
6
+ import { normalizeIndexMetadataRow } from "../index-metadata.js";
7
+ /**
8
+ * PgsqlGroupedIndexDataType type.
9
+ * @typedef {object} PgsqlGroupedIndexDataType
10
+ * @property {string[]} columnNames - Ordered index column names.
11
+ * @property {string} index_name - Index name.
12
+ * @property {boolean} is_primary_key - Whether the index is primary.
13
+ * @property {boolean} is_unique - Whether the index is unique.
14
+ * @property {string} table_name - Table name.
15
+ */
16
+ /**
17
+ * Groups ordered PostgreSQL index rows into one metadata value per index.
18
+ * @param {import("../index-metadata.js").IndexMetadataType[]} indexRows - Ordered index metadata rows.
19
+ * @returns {PgsqlGroupedIndexDataType[]} - Grouped index metadata.
20
+ */
21
+ export function groupPgsqlIndexRows(indexRows) {
22
+ /** @type {Map<string, PgsqlGroupedIndexDataType>} */
23
+ const indexDataByName = new Map();
24
+ /** @type {PgsqlGroupedIndexDataType[]} */
25
+ const groupedIndexData = [];
26
+ for (const indexRow of indexRows) {
27
+ const existingIndexData = indexDataByName.get(indexRow.index_name);
28
+ if (existingIndexData) {
29
+ existingIndexData.columnNames.push(indexRow.column_name);
30
+ continue;
31
+ }
32
+ const indexData = {
33
+ columnNames: [indexRow.column_name],
34
+ index_name: indexRow.index_name,
35
+ is_primary_key: indexRow.is_primary_key,
36
+ is_unique: indexRow.is_unique,
37
+ table_name: indexRow.table_name
38
+ };
39
+ indexDataByName.set(indexRow.index_name, indexData);
40
+ groupedIndexData.push(indexData);
41
+ }
42
+ return groupedIndexData;
43
+ }
6
44
  export default class VelociousDatabaseDriversPgsqlTable extends BaseTable {
7
45
  /**
8
46
  * Runs constructor.
@@ -87,21 +125,26 @@ export default class VelociousDatabaseDriversPgsqlTable extends BaseTable {
87
125
  const options = this.getOptions();
88
126
  const indexesRows = await this.getDriver().query(`
89
127
  SELECT
90
- pg_attribute.attname AS column_name,
91
- pg_index.indexrelid::regclass as index_name,
92
- pg_class.relnamespace::regnamespace as schema_name,
93
- pg_class.relname as table_name,
94
- pg_index.indisprimary as is_primary_key,
95
- pg_index.indisunique as is_unique
128
+ index_attribute.attname AS column_name,
129
+ pg_index.indexrelid::regclass AS index_name,
130
+ pg_class.relname AS table_name,
131
+ pg_index.indisprimary AS is_primary_key,
132
+ pg_index.indisunique AS is_unique
96
133
  FROM pg_index
97
134
  JOIN pg_class ON pg_class.oid = pg_index.indrelid
98
- JOIN pg_attribute ON pg_attribute.attrelid = pg_class.oid AND pg_attribute.attnum = ANY(pg_index.indkey)
135
+ JOIN LATERAL unnest(pg_index.indkey) WITH ORDINALITY AS index_columns(attribute_number, ordinal_position) ON true
136
+ JOIN pg_attribute AS index_attribute ON index_attribute.attrelid = pg_class.oid AND index_attribute.attnum = index_columns.attribute_number
99
137
  WHERE
100
- pg_class.relname = ${options.quote(this.getName())}
138
+ pg_class.relname = ${options.quote(this.getName())} AND
139
+ index_columns.ordinal_position <= pg_index.indnkeyatts
140
+ ORDER BY
141
+ pg_index.indexrelid,
142
+ index_columns.ordinal_position
101
143
  `);
102
144
  const indexes = [];
103
- for (const indexRow of indexesRows) {
104
- const columnsIndex = new ColumnsIndex(this, indexRow);
145
+ const indexRows = indexesRows.map((indexRow) => normalizeIndexMetadataRow(indexRow));
146
+ for (const indexData of groupPgsqlIndexRows(indexRows)) {
147
+ const columnsIndex = new ColumnsIndex(this, indexData);
105
148
  indexes.push(columnsIndex);
106
149
  }
107
150
  return indexes;
@@ -115,4 +158,4 @@ export default class VelociousDatabaseDriversPgsqlTable extends BaseTable {
115
158
  return this.data.table_name;
116
159
  }
117
160
  }
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9wZ3NxbC90YWJsZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUE7QUFDeEMsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBQ2hDLE9BQU8sWUFBWSxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sVUFBVSxNQUFNLGtCQUFrQixDQUFBO0FBRXpDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sa0NBQW1DLFNBQVEsU0FBUztJQUN2RTs7OztPQUlHO0lBQ0gsWUFBWSxNQUFNLEVBQUUsSUFBSTtRQUN0QixLQUFLLEVBQUUsQ0FBQTtRQUNQLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBQ3RCLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVTtRQUNkLE9BQU8sTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUM3RixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQ0F1QlgsSUFBSSxDQUFDLE9BQU8sRUFBRTtPQUN6QyxDQUFDLENBQUE7WUFDRixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUE7WUFFbEIsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO2dCQUVyQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ3RCLENBQUM7WUFFRCxPQUFPLE9BQU8sQ0FBQTtRQUNoQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYztRQUNsQixPQUFPLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxhQUFhLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDakcsTUFBTSxHQUFHLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCQW9CVSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztPQUMzRCxDQUFBO1lBRUQsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ3hELE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQTtZQUV0QixLQUFLLE1BQU0sYUFBYSxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUMzQyxNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQTtnQkFFaEQsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUM5QixDQUFDO1lBRUQsT0FBTyxXQUFXLENBQUE7UUFDcEIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVU7UUFDZCxPQUFPLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDN0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO1lBRWpDLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQzs7Ozs7Ozs7Ozs7OytCQVl4QixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztPQUNyRCxDQUFDLENBQUE7WUFFRixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUE7WUFFbEIsS0FBSyxNQUFNLFFBQVEsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFBO2dCQUVyRCxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO1lBQzVCLENBQUM7WUFFRCxPQUFPLE9BQU8sQ0FBQTtRQUNoQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQTtJQUM3QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEJhc2VUYWJsZSBmcm9tIFwiLi4vYmFzZS10YWJsZS5qc1wiXG5pbXBvcnQgQ29sdW1uIGZyb20gXCIuL2NvbHVtbi5qc1wiXG5pbXBvcnQgQ29sdW1uc0luZGV4IGZyb20gXCIuL2NvbHVtbnMtaW5kZXguanNcIlxuaW1wb3J0IEZvcmVpZ25LZXkgZnJvbSBcIi4vZm9yZWlnbi1rZXkuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZURyaXZlcnNQZ3NxbFRhYmxlIGV4dGVuZHMgQmFzZVRhYmxlIHtcbiAgLyoqXG4gICAqIFJ1bnMgY29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vYmFzZS5qc1wiKS5kZWZhdWx0fSBkcml2ZXIgLSBEYXRhYmFzZSBkcml2ZXIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn0gZGF0YSAtIERhdGEgcGF5bG9hZC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGRyaXZlciwgZGF0YSkge1xuICAgIHN1cGVyKClcbiAgICB0aGlzLmRhdGEgPSBkYXRhXG4gICAgdGhpcy5kcml2ZXIgPSBkcml2ZXJcbiAgfVxuXG4gIGFzeW5jIGdldENvbHVtbnMoKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0RHJpdmVyKCkuX2NhY2hlZFRhYmxlU2NoZW1hTWV0YWRhdGEodGhpcy5nZXROYW1lKCksIFwiY29sdW1uc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRyaXZlci5xdWVyeShgXG4gICAgICAgIFNFTEVDVFxuICAgICAgICAgIGNvbHVtbnMuKixcbiAgICAgICAgICBDQVNFIFdIRU4ga2V5X2NvbHVtbl91c2FnZS5jb2x1bW5fbmFtZSBJUyBOT1QgTlVMTCBUSEVOIDEgRUxTRSAwIEVORCBBUyBpc19wcmltYXJ5X2tleSxcbiAgICAgICAgICBjb2xfZGVzY3JpcHRpb24oKGNvbHVtbnMudGFibGVfc2NoZW1hIHx8ICcuJyB8fCBjb2x1bW5zLnRhYmxlX25hbWUpOjpyZWdjbGFzcywgY29sdW1ucy5vcmRpbmFsX3Bvc2l0aW9uKSBBUyBjb2x1bW5fY29tbWVudFxuXG4gICAgICAgIEZST01cbiAgICAgICAgICBpbmZvcm1hdGlvbl9zY2hlbWEuY29sdW1ucyBBUyBjb2x1bW5zXG5cbiAgICAgICAgTEVGVCBKT0lOIGluZm9ybWF0aW9uX3NjaGVtYS50YWJsZV9jb25zdHJhaW50cyBBUyB0YWJsZV9jb25zdHJhaW50cyBPTlxuICAgICAgICAgIHRhYmxlX2NvbnN0cmFpbnRzLnRhYmxlX25hbWUgPSBjb2x1bW5zLnRhYmxlX25hbWUgQU5EXG4gICAgICAgICAgdGFibGVfY29uc3RyYWludHMudGFibGVfc2NoZW1hID0gY29sdW1ucy50YWJsZV9zY2hlbWEgQU5EXG4gICAgICAgICAgdGFibGVfY29uc3RyYWludHMuY29uc3RyYWludF90eXBlID0gJ1BSSU1BUlkgS0VZJ1xuXG4gICAgICAgIExFRlQgSk9JTiBpbmZvcm1hdGlvbl9zY2hlbWEua2V5X2NvbHVtbl91c2FnZSBBUyBrZXlfY29sdW1uX3VzYWdlIE9OXG4gICAgICAgICAga2V5X2NvbHVtbl91c2FnZS5jb25zdHJhaW50X25hbWUgPSB0YWJsZV9jb25zdHJhaW50cy5jb25zdHJhaW50X25hbWUgQU5EXG4gICAgICAgICAga2V5X2NvbHVtbl91c2FnZS50YWJsZV9zY2hlbWEgPSB0YWJsZV9jb25zdHJhaW50cy50YWJsZV9zY2hlbWEgQU5EXG4gICAgICAgICAga2V5X2NvbHVtbl91c2FnZS50YWJsZV9uYW1lID0gY29sdW1ucy50YWJsZV9uYW1lIEFORFxuICAgICAgICAgIGtleV9jb2x1bW5fdXNhZ2UuY29sdW1uX25hbWUgPSBjb2x1bW5zLmNvbHVtbl9uYW1lXG5cbiAgICAgICAgV0hFUkVcbiAgICAgICAgICBjb2x1bW5zLnRhYmxlX2NhdGFsb2cgPSBDVVJSRU5UX0RBVEFCQVNFKCkgQU5EXG4gICAgICAgICAgY29sdW1ucy50YWJsZV9zY2hlbWEgPSAncHVibGljJyBBTkRcbiAgICAgICAgICBjb2x1bW5zLnRhYmxlX25hbWUgPSAnJHt0aGlzLmdldE5hbWUoKX0nXG4gICAgICBgKVxuICAgICAgY29uc3QgY29sdW1ucyA9IFtdXG5cbiAgICAgIGZvciAoY29uc3QgZGF0YSBvZiByZXN1bHQpIHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gbmV3IENvbHVtbih0aGlzLCBkYXRhKVxuXG4gICAgICAgIGNvbHVtbnMucHVzaChjb2x1bW4pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb2x1bW5zXG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIGdldEZvcmVpZ25LZXlzKCkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmdldERyaXZlcigpLl9jYWNoZWRUYWJsZVNjaGVtYU1ldGFkYXRhKHRoaXMuZ2V0TmFtZSgpLCBcImZvcmVpZ25LZXlzXCIsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHNxbCA9IGBcbiAgICAgICAgU0VMRUNUXG4gICAgICAgICAgdGMuY29uc3RyYWludF9uYW1lLFxuICAgICAgICAgIHRjLnRhYmxlX25hbWUsXG4gICAgICAgICAga2N1LmNvbHVtbl9uYW1lLFxuICAgICAgICAgIGNjdS50YWJsZV9uYW1lIEFTIGZvcmVpZ25fdGFibGVfbmFtZSxcbiAgICAgICAgICBjY3UuY29sdW1uX25hbWUgQVMgZm9yZWlnbl9jb2x1bW5fbmFtZVxuXG4gICAgICAgIEZST01cbiAgICAgICAgICBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVfY29uc3RyYWludHMgQVMgdGNcblxuICAgICAgICBKT0lOIGluZm9ybWF0aW9uX3NjaGVtYS5rZXlfY29sdW1uX3VzYWdlIEFTIGtjdSBPTlxuICAgICAgICAgIHRjLmNvbnN0cmFpbnRfbmFtZSA9IGtjdS5jb25zdHJhaW50X25hbWVcblxuICAgICAgICBKT0lOIGluZm9ybWF0aW9uX3NjaGVtYS5jb25zdHJhaW50X2NvbHVtbl91c2FnZSBBUyBjY3VcbiAgICAgICAgICBPTiBjY3UuY29uc3RyYWludF9uYW1lID0gdGMuY29uc3RyYWludF9uYW1lXG5cbiAgICAgICAgV0hFUkVcbiAgICAgICAgICBjb25zdHJhaW50X3R5cGUgPSAnRk9SRUlHTiBLRVknIEFORFxuICAgICAgICAgIHRjLnRhYmxlX2NhdGFsb2cgPSBDVVJSRU5UX0RBVEFCQVNFKCkgQU5EXG4gICAgICAgICAgdGMudGFibGVfbmFtZSA9ICR7dGhpcy5nZXREcml2ZXIoKS5xdW90ZSh0aGlzLmdldE5hbWUoKSl9XG4gICAgICBgXG5cbiAgICAgIGNvbnN0IGZvcmVpZ25LZXlSb3dzID0gYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5xdWVyeShzcWwpXG4gICAgICBjb25zdCBmb3JlaWduS2V5cyA9IFtdXG5cbiAgICAgIGZvciAoY29uc3QgZm9yZWlnbktleVJvdyBvZiBmb3JlaWduS2V5Um93cykge1xuICAgICAgICBjb25zdCBmb3JlaWduS2V5ID0gbmV3IEZvcmVpZ25LZXkoZm9yZWlnbktleVJvdylcblxuICAgICAgICBmb3JlaWduS2V5cy5wdXNoKGZvcmVpZ25LZXkpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmb3JlaWduS2V5c1xuICAgIH0pXG4gIH1cblxuICBhc3luYyBnZXRJbmRleGVzKCkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmdldERyaXZlcigpLl9jYWNoZWRUYWJsZVNjaGVtYU1ldGFkYXRhKHRoaXMuZ2V0TmFtZSgpLCBcImluZGV4ZXNcIiwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucygpXG5cbiAgICAgIGNvbnN0IGluZGV4ZXNSb3dzID0gYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5xdWVyeShgXG4gICAgICAgIFNFTEVDVFxuICAgICAgICAgIHBnX2F0dHJpYnV0ZS5hdHRuYW1lIEFTIGNvbHVtbl9uYW1lLFxuICAgICAgICAgIHBnX2luZGV4LmluZGV4cmVsaWQ6OnJlZ2NsYXNzIGFzIGluZGV4X25hbWUsXG4gICAgICAgICAgcGdfY2xhc3MucmVsbmFtZXNwYWNlOjpyZWduYW1lc3BhY2UgYXMgc2NoZW1hX25hbWUsXG4gICAgICAgICAgcGdfY2xhc3MucmVsbmFtZSBhcyB0YWJsZV9uYW1lLFxuICAgICAgICAgIHBnX2luZGV4LmluZGlzcHJpbWFyeSBhcyBpc19wcmltYXJ5X2tleSxcbiAgICAgICAgICBwZ19pbmRleC5pbmRpc3VuaXF1ZSBhcyBpc191bmlxdWVcbiAgICAgICAgRlJPTSBwZ19pbmRleFxuICAgICAgICBKT0lOIHBnX2NsYXNzIE9OIHBnX2NsYXNzLm9pZCA9IHBnX2luZGV4LmluZHJlbGlkXG4gICAgICAgIEpPSU4gcGdfYXR0cmlidXRlIE9OIHBnX2F0dHJpYnV0ZS5hdHRyZWxpZCA9IHBnX2NsYXNzLm9pZCBBTkQgcGdfYXR0cmlidXRlLmF0dG51bSA9IEFOWShwZ19pbmRleC5pbmRrZXkpXG4gICAgICAgIFdIRVJFXG4gICAgICAgICAgcGdfY2xhc3MucmVsbmFtZSA9ICR7b3B0aW9ucy5xdW90ZSh0aGlzLmdldE5hbWUoKSl9XG4gICAgICBgKVxuXG4gICAgICBjb25zdCBpbmRleGVzID0gW11cblxuICAgICAgZm9yIChjb25zdCBpbmRleFJvdyBvZiBpbmRleGVzUm93cykge1xuICAgICAgICBjb25zdCBjb2x1bW5zSW5kZXggPSBuZXcgQ29sdW1uc0luZGV4KHRoaXMsIGluZGV4Um93KVxuXG4gICAgICAgIGluZGV4ZXMucHVzaChjb2x1bW5zSW5kZXgpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbmRleGVzXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGdldCBuYW1lLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSB0YWJsZSBuYW1lLlxuICAgKi9cbiAgZ2V0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLnRhYmxlX25hbWVcbiAgfVxufVxuIl19
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9wZ3NxbC90YWJsZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUE7QUFDeEMsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBQ2hDLE9BQU8sWUFBWSxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sVUFBVSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRWhFOzs7Ozs7OztHQVFHO0FBRUg7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxTQUFTO0lBQzNDLHFEQUFxRDtJQUNyRCxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBQ2pDLDBDQUEwQztJQUMxQyxNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQTtJQUUzQixLQUFLLE1BQU0sUUFBUSxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0saUJBQWlCLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUE7UUFFbEUsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RCLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQ3hELFNBQVE7UUFDVixDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUc7WUFDaEIsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztZQUNuQyxVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVU7WUFDL0IsY0FBYyxFQUFFLFFBQVEsQ0FBQyxjQUFjO1lBQ3ZDLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztZQUM3QixVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVU7U0FDaEMsQ0FBQTtR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S0FBSyxNQUFNLFNBQVMsSUFBSSxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUN2RCxNQUFNLFlBQVksR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUE7Z0JBRXRELE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDNUIsQ0FBQztZQUVELE9BQU8sT0FBTyxDQUFBO1FBQ2hCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFBO0lBQzdCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQmFzZVRhYmxlIGZyb20gXCIuLi9iYXNlLXRhYmxlLmpzXCJcbmltcG9ydCBDb2x1bW4gZnJvbSBcIi4vY29sdW1uLmpzXCJcbmltcG9ydCBDb2x1bW5zSW5kZXggZnJvbSBcIi4vY29sdW1ucy1pbmRleC5qc1wiXG5pbXBvcnQgRm9yZWlnbktleSBmcm9tIFwiLi9mb3JlaWduLWtleS5qc1wiXG5pbXBvcnQgeyBub3JtYWxpemVJbmRleE1ldGFkYXRhUm93IH0gZnJvbSBcIi4uL2luZGV4LW1ldGFkYXRhLmpzXCJcblxuLyoqXG4gKiBQZ3NxbEdyb3VwZWRJbmRleERhdGFUeXBlIHR5cGUuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBQZ3NxbEdyb3VwZWRJbmRleERhdGFUeXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBjb2x1bW5OYW1lcyAtIE9yZGVyZWQgaW5kZXggY29sdW1uIG5hbWVzLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGluZGV4X25hbWUgLSBJbmRleCBuYW1lLlxuICogQHByb3BlcnR5IHtib29sZWFufSBpc19wcmltYXJ5X2tleSAtIFdoZXRoZXIgdGhlIGluZGV4IGlzIHByaW1hcnkuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzX3VuaXF1ZSAtIFdoZXRoZXIgdGhlIGluZGV4IGlzIHVuaXF1ZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0YWJsZV9uYW1lIC0gVGFibGUgbmFtZS5cbiAqL1xuXG4vKipcbiAqIEdyb3VwcyBvcmRlcmVkIFBvc3RncmVTUUwgaW5kZXggcm93cyBpbnRvIG9uZSBtZXRhZGF0YSB2YWx1ZSBwZXIgaW5kZXguXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL2luZGV4LW1ldGFkYXRhLmpzXCIpLkluZGV4TWV0YWRhdGFUeXBlW119IGluZGV4Um93cyAtIE9yZGVyZWQgaW5kZXggbWV0YWRhdGEgcm93cy5cbiAqIEByZXR1cm5zIHtQZ3NxbEdyb3VwZWRJbmRleERhdGFUeXBlW119IC0gR3JvdXBlZCBpbmRleCBtZXRhZGF0YS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdyb3VwUGdzcWxJbmRleFJvd3MoaW5kZXhSb3dzKSB7XG4gIC8qKiBAdHlwZSB7TWFwPHN0cmluZywgUGdzcWxHcm91cGVkSW5kZXhEYXRhVHlwZT59ICovXG4gIGNvbnN0IGluZGV4RGF0YUJ5TmFtZSA9IG5ldyBNYXAoKVxuICAvKiogQHR5cGUge1Bnc3FsR3JvdXBlZEluZGV4RGF0YVR5cGVbXX0gKi9cbiAgY29uc3QgZ3JvdXBlZEluZGV4RGF0YSA9IFtdXG5cbiAgZm9yIChjb25zdCBpbmRleFJvdyBvZiBpbmRleFJvd3MpIHtcbiAgICBjb25zdCBleGlzdGluZ0luZGV4RGF0YSA9IGluZGV4RGF0YUJ5TmFtZS5nZXQoaW5kZXhSb3cuaW5kZXhfbmFtZSlcblxuICAgIGlmIChleGlzdGluZ0luZGV4RGF0YSkge1xuICAgICAgZXhpc3RpbmdJbmRleERhdGEuY29sdW1uTmFtZXMucHVzaChpbmRleFJvdy5jb2x1bW5fbmFtZSlcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QgaW5kZXhEYXRhID0ge1xuICAgICAgY29sdW1uTmFtZXM6IFtpbmRleFJvdy5jb2x1bW5fbmFtZV0sXG4gICAgICBpbmRleF9uYW1lOiBpbmRleFJvdy5pbmRleF9uYW1lLFxuICAgICAgaXNfcHJpbWFyeV9rZXk6IGluZGV4Um93LmlzX3ByaW1hcnlfa2V5LFxuICAgICAgaXNfdW5pcXVlOiBpbmRleFJvdy5pc191bmlxdWUsXG4gICAgICB0YWJsZV9uYW1lOiBpbmRleFJvdy50YWJsZV9uYW1lXG4gICAgfVxuXG4gICAgaW5kZXhEYXRhQnlOYW1lLnNldChpbmRleFJvdy5pbmRleF9uYW1lLCBpbmRleERhdGEpXG4gICAgZ3JvdXBlZEluZGV4RGF0YS5wdXNoKGluZGV4RGF0YSlcbiAgfVxuXG4gIHJldHVybiBncm91cGVkSW5kZXhEYXRhXG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlRHJpdmVyc1Bnc3FsVGFibGUgZXh0ZW5kcyBCYXNlVGFibGUge1xuICAvKipcbiAgICogUnVucyBjb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9iYXNlLmpzXCIpLmRlZmF1bHR9IGRyaXZlciAtIERhdGFiYXNlIGRyaXZlciBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSBkYXRhIC0gRGF0YSBwYXlsb2FkLlxuICAgKi9cbiAgY29uc3RydWN0b3IoZHJpdmVyLCBkYXRhKSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXMuZGF0YSA9IGRhdGFcbiAgICB0aGlzLmRyaXZlciA9IGRyaXZlclxuICB9XG5cbiAgYXN5bmMgZ2V0Q29sdW1ucygpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5fY2FjaGVkVGFibGVTY2hlbWFNZXRhZGF0YSh0aGlzLmdldE5hbWUoKSwgXCJjb2x1bW5zXCIsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZHJpdmVyLnF1ZXJ5KGBcbiAgICAgICAgU0VMRUNUXG4gICAgICAgICAgY29sdW1ucy4qLFxuICAgICAgICAgIENBU0UgV0hFTiBrZXlfY29sdW1uX3VzYWdlLmNvbHVtbl9uYW1lIElTIE5PVCBOVUxMIFRIRU4gMSBFTFNFIDAgRU5EIEFTIGlzX3ByaW1hcnlfa2V5LFxuICAgICAgICAgIGNvbF9kZXNjcmlwdGlvbigoY29sdW1ucy50YWJsZV9zY2hlbWEgfHwgJy4nIHx8IGNvbHVtbnMudGFibGVfbmFtZSk6OnJlZ2NsYXNzLCBjb2x1bW5zLm9yZGluYWxfcG9zaXRpb24pIEFTIGNvbHVtbl9jb21tZW50XG5cbiAgICAgICAgRlJPTVxuICAgICAgICAgIGluZm9ybWF0aW9uX3NjaGVtYS5jb2x1bW5zIEFTIGNvbHVtbnNcblxuICAgICAgICBMRUZUIEpPSU4gaW5mb3JtYXRpb25fc2NoZW1hLnRhYmxlX2NvbnN0cmFpbnRzIEFTIHRhYmxlX2NvbnN0cmFpbnRzIE9OXG4gICAgICAgICAgdGFibGVfY29uc3RyYWludHMudGFibGVfbmFtZSA9IGNvbHVtbnMudGFibGVfbmFtZSBBTkRcbiAgICAgICAgICB0YWJsZV9jb25zdHJhaW50cy50YWJsZV9zY2hlbWEgPSBjb2x1bW5zLnRhYmxlX3NjaGVtYSBBTkRcbiAgICAgICAgICB0YWJsZV9jb25zdHJhaW50cy5jb25zdHJhaW50X3R5cGUgPSAnUFJJTUFSWSBLRVknXG5cbiAgICAgICAgTEVGVCBKT0lOIGluZm9ybWF0aW9uX3NjaGVtYS5rZXlfY29sdW1uX3VzYWdlIEFTIGtleV9jb2x1bW5fdXNhZ2UgT05cbiAgICAgICAgICBrZXlfY29sdW1uX3VzYWdlLmNvbnN0cmFpbnRfbmFtZSA9IHRhYmxlX2NvbnN0cmFpbnRzLmNvbnN0cmFpbnRfbmFtZSBBTkRcbiAgICAgICAgICBrZXlfY29sdW1uX3VzYWdlLnRhYmxlX3NjaGVtYSA9IHRhYmxlX2NvbnN0cmFpbnRzLnRhYmxlX3NjaGVtYSBBTkRcbiAgICAgICAgICBrZXlfY29sdW1uX3VzYWdlLnRhYmxlX25hbWUgPSBjb2x1bW5zLnRhYmxlX25hbWUgQU5EXG4gICAgICAgICAga2V5X2NvbHVtbl91c2FnZS5jb2x1bW5fbmFtZSA9IGNvbHVtbnMuY29sdW1uX25hbWVcblxuICAgICAgICBXSEVSRVxuICAgICAgICAgIGNvbHVtbnMudGFibGVfY2F0YWxvZyA9IENVUlJFTlRfREFUQUJBU0UoKSBBTkRcbiAgICAgICAgICBjb2x1bW5zLnRhYmxlX3NjaGVtYSA9ICdwdWJsaWMnIEFORFxuICAgICAgICAgIGNvbHVtbnMudGFibGVfbmFtZSA9ICcke3RoaXMuZ2V0TmFtZSgpfSdcbiAgICAgIGApXG4gICAgICBjb25zdCBjb2x1bW5zID0gW11cblxuICAgICAgZm9yIChjb25zdCBkYXRhIG9mIHJlc3VsdCkge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBuZXcgQ29sdW1uKHRoaXMsIGRhdGEpXG5cbiAgICAgICAgY29sdW1ucy5wdXNoKGNvbHVtbilcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbHVtbnNcbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgZ2V0Rm9yZWlnbktleXMoKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0RHJpdmVyKCkuX2NhY2hlZFRhYmxlU2NoZW1hTWV0YWRhdGEodGhpcy5nZXROYW1lKCksIFwiZm9yZWlnbktleXNcIiwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc3FsID0gYFxuICAgICAgICBTRUxFQ1RcbiAgICAgICAgICB0Yy5jb25zdHJhaW50X25hbWUsXG4gICAgICAgICAgdGMudGFibGVfbmFtZSxcbiAgICAgICAgICBrY3UuY29sdW1uX25hbWUsXG4gICAgICAgICAgY2N1LnRhYmxlX25hbWUgQVMgZm9yZWlnbl90YWJsZV9uYW1lLFxuICAgICAgICAgIGNjdS5jb2x1bW5fbmFtZSBBUyBmb3JlaWduX2NvbHVtbl9uYW1lXG5cbiAgICAgICAgRlJPTVxuICAgICAgICAgIGluZm9ybWF0aW9uX3NjaGVtYS50YWJsZV9jb25zdHJhaW50cyBBUyB0Y1xuXG4gICAgICAgIEpPSU4gaW5mb3JtYXRpb25fc2NoZW1hLmtleV9jb2x1bW5fdXNhZ2UgQVMga2N1IE9OXG4gICAgICAgICAgdGMuY29uc3RyYWludF9uYW1lID0ga2N1LmNvbnN0cmFpbnRfbmFtZVxuXG4gICAgICAgIEpPSU4gaW5mb3JtYXRpb25fc2NoZW1hLmNvbnN0cmFpbnRfY29sdW1uX3VzYWdlIEFTIGNjdVxuICAgICAgICAgIE9OIGNjdS5jb25zdHJhaW50X25hbWUgPSB0Yy5jb25zdHJhaW50X25hbWVcblxuICAgICAgICBXSEVSRVxuICAgICAgICAgIGNvbnN0cmFpbnRfdHlwZSA9ICdGT1JFSUdOIEtFWScgQU5EXG4gICAgICAgICAgdGMudGFibGVfY2F0YWxvZyA9IENVUlJFTlRfREFUQUJBU0UoKSBBTkRcbiAgICAgICAgICB0Yy50YWJsZV9uYW1lID0gJHt0aGlzLmdldERyaXZlcigpLnF1b3RlKHRoaXMuZ2V0TmFtZSgpKX1cbiAgICAgIGBcblxuICAgICAgY29uc3QgZm9yZWlnbktleVJvd3MgPSBhd2FpdCB0aGlzLmdldERyaXZlcigpLnF1ZXJ5KHNxbClcbiAgICAgIGNvbnN0IGZvcmVpZ25LZXlzID0gW11cblxuICAgICAgZm9yIChjb25zdCBmb3JlaWduS2V5Um93IG9mIGZvcmVpZ25LZXlSb3dzKSB7XG4gICAgICAgIGNvbnN0IGZvcmVpZ25LZXkgPSBuZXcgRm9yZWlnbktleShmb3JlaWduS2V5Um93KVxuXG4gICAgICAgIGZvcmVpZ25LZXlzLnB1c2goZm9yZWlnbktleSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZvcmVpZ25LZXlzXG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIGdldEluZGV4ZXMoKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0RHJpdmVyKCkuX2NhY2hlZFRhYmxlU2NoZW1hTWV0YWRhdGEodGhpcy5nZXROYW1lKCksIFwiaW5kZXhlc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5nZXRPcHRpb25zKClcblxuICAgICAgY29uc3QgaW5kZXhlc1Jvd3MgPSBhd2FpdCB0aGlzLmdldERyaXZlcigpLnF1ZXJ5KGBcbiAgICAgICAgU0VMRUNUXG4gICAgICAgICAgaW5kZXhfYXR0cmlidXRlLmF0dG5hbWUgQVMgY29sdW1uX25hbWUsXG4gICAgICAgICAgcGdfaW5kZXguaW5kZXhyZWxpZDo6cmVnY2xhc3MgQVMgaW5kZXhfbmFtZSxcbiAgICAgICAgICBwZ19jbGFzcy5yZWxuYW1lIEFTIHRhYmxlX25hbWUsXG4gICAgICAgICAgcGdfaW5kZXguaW5kaXNwcmltYXJ5IEFTIGlzX3ByaW1hcnlfa2V5LFxuICAgICAgICAgIHBnX2luZGV4LmluZGlzdW5pcXVlIEFTIGlzX3VuaXF1ZVxuICAgICAgICBGUk9NIHBnX2luZGV4XG4gICAgICAgIEpPSU4gcGdfY2xhc3MgT04gcGdfY2xhc3Mub2lkID0gcGdfaW5kZXguaW5kcmVsaWRcbiAgICAgICAgSk9JTiBMQVRFUkFMIHVubmVzdChwZ19pbmRleC5pbmRrZXkpIFdJVEggT1JESU5BTElUWSBBUyBpbmRleF9jb2x1bW5zKGF0dHJpYnV0ZV9udW1iZXIsIG9yZGluYWxfcG9zaXRpb24pIE9OIHRydWVcbiAgICAgICAgSk9JTiBwZ19hdHRyaWJ1dGUgQVMgaW5kZXhfYXR0cmlidXRlIE9OIGluZGV4X2F0dHJpYnV0ZS5hdHRyZWxpZCA9IHBnX2NsYXNzLm9pZCBBTkQgaW5kZXhfYXR0cmlidXRlLmF0dG51bSA9IGluZGV4X2NvbHVtbnMuYXR0cmlidXRlX251bWJlclxuICAgICAgICBXSEVSRVxuICAgICAgICAgIHBnX2NsYXNzLnJlbG5hbWUgPSAke29wdGlvbnMucXVvdGUodGhpcy5nZXROYW1lKCkpfSBBTkRcbiAgICAgICAgICBpbmRleF9jb2x1bW5zLm9yZGluYWxfcG9zaXRpb24gPD0gcGdfaW5kZXguaW5kbmtleWF0dHNcbiAgICAgICAgT1JERVIgQllcbiAgICAgICAgICBwZ19pbmRleC5pbmRleHJlbGlkLFxuICAgICAgICAgIGluZGV4X2NvbHVtbnMub3JkaW5hbF9wb3NpdGlvblxuICAgICAgYClcblxuICAgICAgY29uc3QgaW5kZXhlcyA9IFtdXG5cbiAgICAgIGNvbnN0IGluZGV4Um93cyA9IGluZGV4ZXNSb3dzLm1hcCgoaW5kZXhSb3cpID0+IG5vcm1hbGl6ZUluZGV4TWV0YWRhdGFSb3coaW5kZXhSb3cpKVxuXG4gICAgICBmb3IgKGNvbnN0IGluZGV4RGF0YSBvZiBncm91cFBnc3FsSW5kZXhSb3dzKGluZGV4Um93cykpIHtcbiAgICAgICAgY29uc3QgY29sdW1uc0luZGV4ID0gbmV3IENvbHVtbnNJbmRleCh0aGlzLCBpbmRleERhdGEpXG5cbiAgICAgICAgaW5kZXhlcy5wdXNoKGNvbHVtbnNJbmRleClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluZGV4ZXNcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZ2V0IG5hbWUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIHRhYmxlIG5hbWUuXG4gICAqL1xuICBnZXROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEudGFibGVfbmFtZVxuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"alter-table.d.ts","sourceRoot":"","sources":["../../../../../../src/database/drivers/sqlite/sql/alter-table.js"],"names":[],"mappings":"AAUA;IAaI,eAA8B;IA+ChC;;;;;;OAMG;IACH,qCAJW,SAAS,kBACT,SAAS,GACP;QAAC,eAAe,EAAE,SAAS,CAAC;QAAC,WAAW,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;KAAC,CAuF9E;IAED;;;;;;;OAOG;IACH,oCAJW,eAAe,iBACf,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACjB,eAAe,CAe3B;CACF;2BAxL0B,oCAAoC;mBAC5C,uBAAuB;sBAEpB,8BAA8B;4BACxB,0CAA0C"}
1
+ {"version":3,"file":"alter-table.d.ts","sourceRoot":"","sources":["../../../../../../src/database/drivers/sqlite/sql/alter-table.js"],"names":[],"mappings":"AAUA;IAaI,eAA8B;IA+ChC;;;;;;OAMG;IACH,qCAJW,SAAS,kBACT,SAAS,GACP;QAAC,eAAe,EAAE,SAAS,CAAC;QAAC,WAAW,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;KAAC,CAwG9E;IAED;;;;;;;OAOG;IACH,oCAJW,eAAe,iBACf,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACjB,eAAe,CAgB3B;CACF;2BA1M0B,oCAAoC;mBAC5C,uBAAuB;sBAEpB,8BAA8B;4BACxB,0CAA0C"}
@@ -120,21 +120,34 @@ export default class VelociousDatabaseConnectionDriversSqliteSqlAlterTable exten
120
120
  const seenForeignKeyNames = new Set();
121
121
  for (const currentForeignKey of currentTableData.getForeignKeys()) {
122
122
  const alterForeignKey = alterTableData.getForeignKeys().find((foreignKey) => foreignKey.getName() == currentForeignKey.getName());
123
+ if (alterForeignKey?.getDropForeignKey()) {
124
+ const targetColumnName = columnRenames.get(currentForeignKey.getColumnName()) || currentForeignKey.getColumnName();
125
+ const targetColumn = targetTableData.getColumns().find((column) => column.getActualName() == targetColumnName);
126
+ if (targetColumn)
127
+ targetColumn.setForeignKey(undefined);
128
+ continue;
129
+ }
123
130
  const finalForeignKey = this._renameForeignKeyColumn(alterForeignKey || currentForeignKey, columnRenames);
124
131
  seenForeignKeyNames.add(finalForeignKey.getName());
125
132
  targetTableData.addForeignKey(finalForeignKey);
126
133
  }
127
134
  for (const alterForeignKey of alterTableData.getForeignKeys()) {
135
+ if (alterForeignKey.getDropForeignKey())
136
+ continue;
128
137
  if (seenForeignKeyNames.has(alterForeignKey.getName()))
129
138
  continue;
130
139
  targetTableData.addForeignKey(this._renameForeignKeyColumn(alterForeignKey, columnRenames));
131
140
  }
141
+ const targetColumnNames = new Set(targetTableData.getColumns().map((column) => column.getActualName()));
132
142
  for (const currentIndex of currentTableData.getIndexes()) {
133
143
  const renamedColumns = currentIndex.getColumns().map((columnName) => {
134
144
  if (typeof columnName != "string")
135
145
  return columnName;
136
146
  return columnRenames.get(columnName) || columnName;
137
147
  });
148
+ const indexColumnNames = renamedColumns.map((column) => typeof column == "string" ? column : column.getName());
149
+ if (indexColumnNames.some((columnName) => !targetColumnNames.has(columnName)))
150
+ continue;
138
151
  targetTableData.addIndex(new TableIndex(renamedColumns, {
139
152
  name: currentIndex.getName(),
140
153
  unique: currentIndex.getUnique()
@@ -156,6 +169,7 @@ export default class VelociousDatabaseConnectionDriversSqliteSqlAlterTable exten
156
169
  return foreignKey;
157
170
  return new TableForeignKey({
158
171
  columnName: renamed,
172
+ dropForeignKey: foreignKey.getDropForeignKey(),
159
173
  isNewForeignKey: foreignKey.getIsNewForeignKey(),
160
174
  name: foreignKey.getName(),
161
175
  referencedColumnName: foreignKey.getReferencedColumnName(),
@@ -164,4 +178,4 @@ export default class VelociousDatabaseConnectionDriversSqliteSqlAlterTable exten
164
178
  });
165
179
  }
166
180
  }
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWx0ZXItdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9zcWxpdGUvc3FsL2FsdGVyLXRhYmxlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGNBQWMsTUFBTSxvQ0FBb0MsQ0FBQTtBQUMvRCxPQUFPLE1BQU0sTUFBTSx1QkFBdUIsQ0FBQTtBQUMxQyxPQUFPLGFBQWEsTUFBTSxzQ0FBc0MsQ0FBQTtBQUNoRSxPQUFPLFNBQVMsTUFBTSw4QkFBOEIsQ0FBQTtBQUNwRCxPQUFPLGVBQWUsTUFBTSwwQ0FBMEMsQ0FBQTtBQUN0RSxPQUFPLFVBQVUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUMzRCxPQUFPLGNBQWMsTUFBTSx1QkFBdUIsQ0FBQTtBQUVsRCxNQUFNLENBQUMsT0FBTyxPQUFPLHFEQUFzRCxTQUFRLGNBQWM7SUFDL0Y7Ozs7O09BS0c7SUFDSCxZQUFZLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLFFBQVEsRUFBQztRQUMxQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFdkIsSUFBSSxDQUFDLENBQUMsU0FBUyxZQUFZLFNBQVMsQ0FBQztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQTtRQUV0RixLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQTtRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsTUFBTTtRQUNWLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUMvQixNQUFNLEVBQUMsU0FBUyxFQUFFLGNBQWMsRUFBQyxHQUFHLElBQUksQ0FBQTtR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WUFBWSxFQUFFO1NBQ3JDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQWx0ZXJUYWJsZUJhc2UgZnJvbSBcIi4uLy4uLy4uL3F1ZXJ5L2FsdGVyLXRhYmxlLWJhc2UuanNcIlxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi4vLi4vLi4vLi4vbG9nZ2VyLmpzXCJcbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuaW1wb3J0IFRhYmxlRGF0YSBmcm9tIFwiLi4vLi4vLi4vdGFibGUtZGF0YS9pbmRleC5qc1wiXG5pbXBvcnQgVGFibGVGb3JlaWduS2V5IGZyb20gXCIuLi8uLi8uLi90YWJsZS1kYXRhL3RhYmxlLWZvcmVpZ24ta2V5LmpzXCJcbmltcG9ydCBUYWJsZUluZGV4IGZyb20gXCIuLi8uLi8uLi90YWJsZS1kYXRhL3RhYmxlLWluZGV4LmpzXCJcbmltcG9ydCBUYWJsZVJlYnVpbGRlciBmcm9tIFwiLi4vdGFibGUtcmVidWlsZGVyLmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VDb25uZWN0aW9uRHJpdmVyc1NxbGl0ZVNxbEFsdGVyVGFibGUgZXh0ZW5kcyBBbHRlclRhYmxlQmFzZSB7XG4gIC8qKlxuICAgKiBSdW5zIGNvbnN0cnVjdG9yLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL2Jhc2UuanNcIikuZGVmYXVsdH0gYXJncy5kcml2ZXIgLSBEYXRhYmFzZSBkcml2ZXIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vLi4vdGFibGUtZGF0YS9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLnRhYmxlRGF0YSAtIFRhYmxlIGRhdGEuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7ZHJpdmVyLCB0YWJsZURhdGEsIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgICBpZiAoISh0YWJsZURhdGEgaW5zdGFuY2VvZiBUYWJsZURhdGEpKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHRhYmxlIGRhdGEgd2FzIGdpdmVuXCIpXG5cbiAgICBzdXBlcih7ZHJpdmVyLCB0YWJsZURhdGF9KVxuICAgIHRoaXMubG9nZ2VyID0gbmV3IExvZ2dlcih0aGlzKVxuICAgIHRoaXMudGFibGVEYXRhID0gdGFibGVEYXRhXG4gIH1cblxuICAvKipcbiAgICogUnVucyB0byBzcWxzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmdbXT59IC0gUmVzb2x2ZXMgd2l0aCBTUUwgc3RhdGVtZW50cy5cbiAgICovXG4gIGFzeW5jIHRvU1FMcygpIHtcbiAgICBjb25zdCBkcml2ZXIgPSB0aGlzLmdldERyaXZlcigpXG4gICAgY29uc3Qge3RhYmxlRGF0YTogYWx0ZXJUYWJsZURhdGF9ID0gdGhpc1xuICAgIGNvbnN0IHRhYmxlTmFtZSA9IGFsdGVyVGFibGVEYXRhLmdldE5hbWUoKVxuICAgIGNvbnN0IHRhYmxlID0gYXdhaXQgZHJpdmVyLmdldFRhYmxlQnlOYW1lKHRhYmxlTmFtZSlcblxuICAgIGlmICghdGFibGUpIHRocm93IG5ldyBFcnJvcihgVGFibGUgJHt0YWJsZU5hbWV9IGRvZXMgbm90IGV4aXN0YClcblxuICAgIGNvbnN0IGN1cnJlbnRUYWJsZURhdGEgPSBhd2FpdCB0YWJsZS5nZXRUYWJsZURhdGEoKVxuICAgIGNvbnN0IHt0YXJnZXRUYWJsZURhdGEsIGNvbHVtblBhaXJzfSA9IHRoaXMuX2J1aWxkVGFyZ2V0U2NoZW1hKGN1cnJlbnRUYWJsZURhdGEsIGFsdGVyVGFibGVEYXRhKVxuXG4gICAgY29uc3QgcmVidWlsZGVyID0gbmV3IFRhYmxlUmVidWlsZGVyKHtcbiAgICAgIGNvbHVtblBhaXJzLFxuICAgICAgZHJpdmVyLFxuICAgICAgb3JpZ2luYWxUYWJsZU5hbWU6IHRhYmxlTmFtZSxcbiAgICAgIHRhcmdldFRhYmxlRGF0YVxuICAgIH0pXG5cbiAgICBjb25zdCByZWJ1aWxkU1FMcyA9IGF3YWl0IHJlYnVpbGRlci50b1NRTHMoKVxuICAgIGNvbnN0IHNxbHMgPSBbXVxuXG4gICAgLy8gUFJBR01BIGZvcmVpZ25fa2V5cyBjYW4gb25seSBiZSB0b2dnbGVkIG91dHNpZGUgYW4gYWN0aXZlIHRyYW5zYWN0aW9uOyB3aGVuIHRoZVxuICAgIC8vIGNhbGxlciBpcyBhbHJlYWR5IGluc2lkZSBvbmUgdGhlc2UgYmVjb21lIG5vLW9wcyAobWF0Y2hpbmcgcHJpb3IgYmVoYXZpb3IpLiBPdXRzaWRlXG4gICAgLy8gYSB0cmFuc2FjdGlvbiB0aGV5IHByb3RlY3QgdGhlIHJlYnVpbGQgZnJvbSBjcm9zcy10YWJsZSBGSyBlbmZvcmNlbWVudCBkdXJpbmcgdGhlXG4gICAgLy8gRFJPUC9SRU5BTUUgc3dhcC4gQ2FwdHVyZSB0aGUgcHJpb3Igc3RhdGUgc28gd2UgcmVzdG9yZSBpdCBpbnN0ZWFkIG9mIHVuY29uZGl0aW9uYWxseVxuICAgIC8vIGZvcmNpbmcgT04g4oCUIGNhbGxlcnMgdGhhdCBkZWxpYmVyYXRlbHkgZGlzYWJsZWQgRksgZW5mb3JjZW1lbnQgKGUuZy4gYnVsayBkYXRhIGZpeGVzKVxuICAgIC8vIHNob3VsZG4ndCBiZSBzaWxlbnRseSBmbGlwcGVkIGJhY2sgb24gYnkgYSBtaWdyYXRpb24uXG4gICAgY29uc3QgcHJpb3JTdGF0ZSA9IGF3YWl0IGRyaXZlci5xdWVyeShcIlBSQUdNQSBmb3JlaWduX2tleXNcIilcbiAgICBjb25zdCB3YXNFbmFibGVkID0gcHJpb3JTdGF0ZVswXT8uZm9yZWlnbl9rZXlzID09IDFcblxuICAgIHNxbHMucHVzaChcIlBSQUdNQSBmb3JlaWduX2tleXMgPSBPRkZcIilcblxuICAgIGZvciAoY29uc3Qgc3FsIG9mIHJlYnVpbGRTUUxzKSBzcWxzLnB1c2goc3FsKVxuXG4gICAgc3Fscy5wdXNoKGBQUkFHTUEgZm9yZWlnbl9rZXlzID0gJHt3YXNFbmFibGVkID8gXCJPTlwiIDogXCJPRkZcIn1gKVxuXG4gICAgcmV0dXJuIHNxbHNcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZXMgdGhlIGN1cnJlbnQgc2NoZW1hIHdpdGggdGhlIGFsdGVyIHJlcXVlc3QgdG8gcHJvZHVjZSB0aGUgZGVzaXJlZCBmaW5hbCBzY2hlbWFcbiAgICogYW5kIHRoZSBjb2x1bW4gY29weSBwbGFuLlxuICAgKiBAcGFyYW0ge1RhYmxlRGF0YX0gY3VycmVudFRhYmxlRGF0YSAtIEN1cnJlbnQgc2NoZW1hIGFzIGludHJvc3BlY3RlZCBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICogQHBhcmFtIHtUYWJsZURhdGF9IGFsdGVyVGFibGVEYXRhIC0gQWx0ZXIgcmVxdWVzdDogbmV3IGNvbHVtbnMgKGBpc05ld0NvbHVtbmApLCByZW5hbWVzIChgbmV3TmFtZWApLCBkcm9wcyAoYGRyb3BDb2x1bW5gKSwgbW9kaWZpZXMsIGFuZCBuZXcgZm9yZWlnbiBrZXlzLlxuICAgKiBAcmV0dXJucyB7e3RhcmdldFRhYmxlRGF0YTogVGFibGVEYXRhLCBjb2x1bW5QYWlyczogQXJyYXk8W3N0cmluZywgc3RyaW5nXT59fSAtIFRoZSBtZXJnZWQgdGFyZ2V0IHNjaGVtYSBhbmQgdGhlIFtvbGROYW1lLCBuZXdOYW1lXSBwYWlycyBmb3IgSU5TRVJULi4uU0VMRUNULlxuICAgKi9cbiAgX2J1aWxkVGFyZ2V0U2NoZW1hKGN1cnJlbnRUYWJsZURhdGEsIGFsdGVyVGFibGVEYXRhKSB7XG4gICAgY29uc3QgdGFyZ2V0VGFibGVEYXRhID0gbmV3IFRhYmxlRGF0YShjdXJyZW50VGFibGVEYXRhLmdldE5hbWUoKSlcbiAgICAvKipcbiAgICAgKiBDb2x1bW4gcGFpcnMuXG4gICAgICogQHR5cGUge0FycmF5PFtzdHJpbmcsIHN0cmluZ10+fSAqL1xuICAgIGNvbnN0IGNvbHVtblBhaXJzID0gW11cbiAgICBjb25zdCBhbHRlckNvbHVtbnMgPSBhbHRlclRhYmxlRGF0YS5nZXRDb2x1bW5zKClcbiAgICBjb25zdCBleGlzdGluZ05hbWVzID0gbmV3IFNldChjdXJyZW50VGFibGVEYXRhLmdldENvbHVtbnMoKS5tYXAoKGNvbHVtbikgPT4gY29sdW1uLmdldE5hbWUoKSkpXG4gICAgLyoqXG4gICAgICogQ29sdW1uIHJlbmFtZXMuXG4gICAgICogQHR5cGUge01hcDxzdHJpbmcsIHN0cmluZz59ICovXG4gICAgY29uc3QgY29sdW1uUmVuYW1lcyA9IG5ldyBNYXAoKVxuXG4gICAgZm9yIChjb25zdCBhbHRlckNvbHVtbiBvZiBhbHRlckNvbHVtbnMpIHtcbiAgICAgIGlmIChhbHRlckNvbHVtbi5pc05ld0NvbHVtbigpKSBjb250aW51ZVxuXG4gICAgICBjb25zdCBuZXdOYW1lID0gYWx0ZXJDb2x1bW4uZ2V0TmV3TmFtZSgpXG5cbiAgICAgIGlmIChuZXdOYW1lKSBjb2x1bW5SZW5hbWVzLnNldChhbHRlckNvbHVtbi5nZXROYW1lKCksIG5ld05hbWUpXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjdXJyZW50Q29sdW1uIG9mIGN1cnJlbnRUYWJsZURhdGEuZ2V0Q29sdW1ucygpKSB7XG4gICAgICBjb25zdCBhbHRlckNvbHVtbiA9IGFsdGVyQ29sdW1ucy5maW5kKChjb2x1bW4pID0+IGNvbHVtbi5nZXROYW1lKCkgPT0gY3VycmVudENvbHVtbi5nZXROYW1lKCkgJiYgIWNvbHVtbi5pc05ld0NvbHVtbigpKVxuXG4gICAgICBpZiAoYWx0ZXJDb2x1bW4/LmdldERyb3BDb2x1bW4oKSkgY29udGludWVcblxuICAgICAgbGV0IHRhcmdldENvbHVtblxuXG4gICAgICBpZiAoYWx0ZXJDb2x1bW4pIHtcbiAgICAgICAgLy8gVGhlIGFsdGVyIHJlcXVlc3Qgc3VwcGxpZXMgYSBwYXJ0aWFsIGNvbHVtbiBzcGVjIChlLmcuIGp1c3QgYSByZW5hbWUgb3IgYSB0eXBlIGNoYW5nZSk7XG4gICAgICAgIC8vIGluaGVyaXQgdW5zZXQgcHJvcGVydGllcyBmcm9tIHRoZSBjdXJyZW50IGNvbHVtbiBzbyB3ZSBkb24ndCBsb3NlIGV4aXN0aW5nIGRlZmluaXRpb25zLlxuICAgICAgICBhbHRlckNvbHVtbi5zZXRBdXRvSW5jcmVtZW50KGFsdGVyQ29sdW1uLmdldEF1dG9JbmNyZW1lbnQoKSB8fCBjdXJyZW50Q29sdW1uLmdldEF1dG9JbmNyZW1lbnQoKSlcbiAgICAgICAgaWYgKGFsdGVyQ29sdW1uLmdldERlZmF1bHQoKSA9PT0gdW5kZWZpbmVkKSBhbHRlckNvbHVtbi5zZXREZWZhdWx0KGN1cnJlbnRDb2x1bW4uZ2V0RGVmYXVsdCgpKVxuICAgICAgICBpZiAoIWFsdGVyQ29sdW1uLmdldEluZGV4KCkpIGFsdGVyQ29sdW1uLnNldEluZGV4KGN1cnJlbnRDb2x1bW4uZ2V0SW5kZXgoKSlcbiAgICAgICAgaWYgKCFhbHRlckNvbHVtbi5nZXRGb3JlaWduS2V5KCkpIGFsdGVyQ29sdW1uLnNldEZvcmVpZ25LZXkoY3VycmVudENvbHVtbi5nZXRGb3JlaWduS2V5KCkpXG4gICAgICAgIGlmIChhbHRlckNvbHVtbi5nZXRNYXhMZW5ndGgoKSA9PT0gdW5kZWZpbmVkKSBhbHRlckNvbHVtbi5zZXRNYXhMZW5ndGgoY3VycmVudENvbHVtbi5nZXRNYXhMZW5ndGgoKSlcbiAgICAgICAgYWx0ZXJDb2x1bW4uc2V0UHJpbWFyeUtleShhbHRlckNvbHVtbi5nZXRQcmltYXJ5S2V5KCkgfHwgY3VycmVudENvbHVtbi5nZXRQcmltYXJ5S2V5KCkpXG4gICAgICAgIGlmICghYWx0ZXJDb2x1bW4uZ2V0VHlwZSgpKSBhbHRlckNvbHVtbi5zZXRUeXBlKGN1cnJlbnRDb2x1bW4uZ2V0VHlwZSgpKVxuXG4gICAgICAgIHRhcmdldENvbHVtbiA9IGFsdGVyQ29sdW1uXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXRDb2x1bW4gPSBjdXJyZW50Q29sdW1uXG4gICAgICB9XG5cbiAgICAgIHRhcmdldFRhYmxlRGF0YS5hZGRDb2x1bW4odGFyZ2V0Q29sdW1uKVxuICAgICAgY29sdW1uUGFpcnMucHVzaChbY3VycmVudENvbHVtbi5nZXROYW1lKCksIHRhcmdldENvbHVtbi5nZXROZXdOYW1lKCkgfHwgdGFyZ2V0Q29sdW1uLmdldE5hbWUoKV0pXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBhbHRlckNvbHVtbiBvZiBhbHRlckNvbHVtbnMpIHtcbiAgICAgIGlmICghYWx0ZXJDb2x1bW4uaXNOZXdDb2x1bW4oKSkgY29udGludWVcbiAgICAgIGlmIChleGlzdGluZ05hbWVzLmhhcyhhbHRlckNvbHVtbi5nZXROYW1lKCkpKSBjb250aW51ZVxuXG4gICAgICB0YXJnZXRUYWJsZURhdGEuYWRkQ29sdW1uKGFsdGVyQ29sdW1uKVxuICAgIH1cblxuICAgIGNvbnN0IHNlZW5Gb3JlaWduS2V5TmFtZXMgPSBuZXcgU2V0KClcblxuICAgIGZvciAoY29uc3QgY3VycmVudEZvcmVpZ25LZXkgb2YgY3VycmVudFRhYmxlRGF0YS5nZXRGb3JlaWduS2V5cygpKSB7XG4gICAgICBjb25zdCBhbHRlckZvcmVpZ25LZXkgPSBhbHRlclRhYmxlRGF0YS5nZXRGb3JlaWduS2V5cygpLmZpbmQoKGZvcmVpZ25LZXkpID0+IGZvcmVpZ25LZXkuZ2V0TmFtZSgpID09IGN1cnJlbnRGb3JlaWduS2V5LmdldE5hbWUoKSlcbiAgICAgIGNvbnN0IGZpbmFsRm9yZWlnbktleSA9IHRoaXMuX3JlbmFtZUZvcmVpZ25LZXlDb2x1bW4oYWx0ZXJGb3JlaWduS2V5IHx8IGN1cnJlbnRGb3JlaWduS2V5LCBjb2x1bW5SZW5hbWVzKVxuXG4gICAgICBzZWVuRm9yZWlnbktleU5hbWVzLmFkZChmaW5hbEZvcmVpZ25LZXkuZ2V0TmFtZSgpKVxuICAgICAgdGFyZ2V0VGFibGVEYXRhLmFkZEZvcmVpZ25LZXkoZmluYWxGb3JlaWduS2V5KVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgYWx0ZXJGb3JlaWduS2V5IG9mIGFsdGVyVGFibGVEYXRhLmdldEZvcmVpZ25LZXlzKCkpIHtcbiAgICAgIGlmIChzZWVuRm9yZWlnbktleU5hbWVzLmhhcyhhbHRlckZvcmVpZ25LZXkuZ2V0TmFtZSgpKSkgY29udGludWVcblxuICAgICAgdGFyZ2V0VGFibGVEYXRhLmFkZEZvcmVpZ25LZXkodGhpcy5fcmVuYW1lRm9yZWlnbktleUNvbHVtbihhbHRlckZvcmVpZ25LZXksIGNvbHVtblJlbmFtZXMpKVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgY3VycmVudEluZGV4IG9mIGN1cnJlbnRUYWJsZURhdGEuZ2V0SW5kZXhlcygpKSB7XG4gICAgICBjb25zdCByZW5hbWVkQ29sdW1ucyA9IGN1cnJlbnRJbmRleC5nZXRDb2x1bW5zKCkubWFwKChjb2x1bW5OYW1lKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY29sdW1uTmFtZSAhPSBcInN0cmluZ1wiKSByZXR1cm4gY29sdW1uTmFtZVxuXG4gICAgICAgIHJldHVybiBjb2x1bW5SZW5hbWVzLmdldChjb2x1bW5OYW1lKSB8fCBjb2x1bW5OYW1lXG4gICAgICB9KVxuXG4gICAgICB0YXJnZXRUYWJsZURhdGEuYWRkSW5kZXgobmV3IFRhYmxlSW5kZXgocmVuYW1lZENvbHVtbnMsIHtcbiAgICAgICAgbmFtZTogY3VycmVudEluZGV4LmdldE5hbWUoKSxcbiAgICAgICAgdW5pcXVlOiBjdXJyZW50SW5kZXguZ2V0VW5pcXVlKClcbiAgICAgIH0pKVxuICAgIH1cblxuICAgIHJldHVybiB7dGFyZ2V0VGFibGVEYXRhLCBjb2x1bW5QYWlyc31cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBmb3JlaWduIGtleSB3aXRoIGl0cyBjb2x1bW4gbmFtZSB1cGRhdGVkIHdoZW4gdGhlIGNvbHVtbiB3YXMgcmVuYW1lZCBpbiB0aGVcbiAgICogYWx0ZXIgcmVxdWVzdC4gU1FMaXRlIHJlLWNyZWF0ZXMgdGhlIGNvbnN0cmFpbnQgaW5zaWRlIHRoZSByZWJ1aWx0IENSRUFURSBUQUJMRSwgc28gYVxuICAgKiBzdGFsZSBjb2x1bW4gbmFtZSB0aGVyZSB3b3VsZCByZWZlcmVuY2UgYSBjb2x1bW4gdGhhdCBubyBsb25nZXIgZXhpc3RzLlxuICAgKiBAcGFyYW0ge1RhYmxlRm9yZWlnbktleX0gZm9yZWlnbktleSAtIEZvcmVpZ24ga2V5IHRvIGV2YWx1YXRlLlxuICAgKiBAcGFyYW0ge01hcDxzdHJpbmcsIHN0cmluZz59IGNvbHVtblJlbmFtZXMgLSBNYXAgb2Ygb2xkIOKGkiBuZXcgY29sdW1uIG5hbWVzIGZyb20gdGhlIGFsdGVyIHJlcXVlc3QuXG4gICAqIEByZXR1cm5zIHtUYWJsZUZvcmVpZ25LZXl9IC0gVGhlIG9yaWdpbmFsIGZvcmVpZ24ga2V5LCBvciBhIGZyZXNoIGluc3RhbmNlIHdpdGggdGhlIHJlbmFtZWQgY29sdW1uLlxuICAgKi9cbiAgX3JlbmFtZUZvcmVpZ25LZXlDb2x1bW4oZm9yZWlnbktleSwgY29sdW1uUmVuYW1lcykge1xuICAgIGNvbnN0IHJlbmFtZWQgPSBjb2x1bW5SZW5hbWVzLmdldChmb3JlaWduS2V5LmdldENvbHVtbk5hbWUoKSlcblxuICAgIGlmICghcmVuYW1lZCkgcmV0dXJuIGZvcmVpZ25LZXlcblxuICAgIHJldHVybiBuZXcgVGFibGVGb3JlaWduS2V5KHtcbiAgICAgIGNvbHVtbk5hbWU6IHJlbmFtZWQsXG4gICAgICBpc05ld0ZvcmVpZ25LZXk6IGZvcmVpZ25LZXkuZ2V0SXNOZXdGb3JlaWduS2V5KCksXG4gICAgICBuYW1lOiBmb3JlaWduS2V5LmdldE5hbWUoKSxcbiAgICAgIHJlZmVyZW5jZWRDb2x1bW5OYW1lOiBmb3JlaWduS2V5LmdldFJlZmVyZW5jZWRDb2x1bW5OYW1lKCksXG4gICAgICByZWZlcmVuY2VkVGFibGVOYW1lOiBmb3JlaWduS2V5LmdldFJlZmVyZW5jZWRUYWJsZU5hbWUoKSxcbiAgICAgIHRhYmxlTmFtZTogZm9yZWlnbktleS5nZXRUYWJsZU5hbWUoKVxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWx0ZXItdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9zcWxpdGUvc3FsL2FsdGVyLXRhYmxlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGNBQWMsTUFBTSxvQ0FBb0MsQ0FBQTtBQUMvRCxPQUFPLE1BQU0sTUFBTSx1QkFBdUIsQ0FBQTtBQUMxQyxPQUFPLGFBQWEsTUFBTSxzQ0FBc0MsQ0FBQTtBQUNoRSxPQUFPLFNBQVMsTUFBTSw4QkFBOEIsQ0FBQTtBQUNwRCxPQUFPLGVBQWUsTUFBTSwwQ0FBMEMsQ0FBQTtBQUN0RSxPQUFPLFVBQVUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUMzRCxPQUFPLGNBQWMsTUFBTSx1QkFBdUIsQ0FBQTtBQUVsRCxNQUFNLENBQUMsT0FBTyxPQUFPLHFEQUFzRCxTQUFRLGNBQWM7SUFDL0Y7Ozs7O09BS0c7SUFDSCxZQUFZLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLFFBQVEsRUFBQztRQUMxQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFdkIsSUFBSSxDQUFDLENBQUMsU0FBUyxZQUFZLFNBQVMsQ0FBQztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQTtRQUV0RixLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQTtRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsTUFBTTtRQUNWLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUMvQixNQUFNLEVBQUMsU0FBUyxFQUFFLGNBQWMsRUFBQyxHQUFHLElBQUksQ0FBQTtRQUN4QyxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDMUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBRXBELElBQUksQ0FBQyxLQUFLO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLFNBQVMsaUJBQWlCLENBQUMsQ0FBQTtRQUVoRSxNQUFNLGdCQUFnQixHQUFHLE1BQU0sS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQ25ELE1BQU0sRUFBQyxlQUFlLEVBQUUsV0FBVyxFQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxDQUFBO1FBRWhHLE1BQU0sU0FBUyxHQUFHLElBQUksY0FBYyxDQUFDO1lBQ25DLFdBQVc7WUFDWCxNQUFNO1lBQ04saUJBQWlCLEVBQUUsU0FBUztZQUM1QixlQUFlO1NBQ2hCLENBQUMsQ0FBQTtRQUVGLE1BQU0sV0FBVyxHQUFHLE1BQU0sU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQzVDLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQTtRQUVmLGtGQUFrRjtRQUNsRixzRkFBc0Y7UUFDdEYsb0ZBQW9GO1FBQ3BGLHdGQUF3RjtRQUN4Rix3RkFBd0Y7UUFDeEYsd0RBQXdEO1FBQ3hELE1BQU0sVUFBVSxHQUFHLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1FBQzVELE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLElBQUksQ0FBQyxDQUFBO1FBRW5ELElBQUksQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQTtRQUV0QyxLQUFLLE1BQU0sR0FBRyxJQUFJLFdBQVc7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRTdDLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBRS9ELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGtCQUFrQixDQUFDLGdCQUFnQixFQUFFLGNBQWM7UUFDakQsTUFBTSxlQUFlLEdBQUcsSUFBSSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUNqRTs7NkNBRXFDO1FBQ3JDLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQTtRQUN0QixNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDaEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzlGOzt5Q0FFaUM7UUFDakMsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQTtRQUUvQixLQUFLLE1BQU0sV0FBVyxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ3ZDLElBQUksV0FBVyxDQUFDLFdBQVcsRUFBRTtnQkFBRSxTQUFRO1lBRXZDLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtZQUV4QyxJQUFJLE9BQU87Z0JBQUUsYUFBYSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDaEUsQ0FBQztRQUVELEtBQUssTUFBTSxhQUFhLElBQUksZ0JBQWdCLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUMxRCxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksYUFBYSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7WUFFdkgsSUFBSSxXQUFXLEVBQUUsYUFBYSxFQUFFO2dCQUFFLFNBQVE7WUFFMUMsSUFBSSxZQUFZLENBQUE7WUFFaEIsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEIsMEZBQTBGO2dCQUMxRiwwRkFBMEY7Z0JBQzFGLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFBO2dCQUNoRyxJQUFJLFdBQVcsQ0FBQyxVQUFVLEVBQUUsS0FBSyxTQUFTO29CQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUE7Z0JBQzlGLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFO29CQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7Z0JBQzNFLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFO29CQUFFLFdBQVcsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUE7Z0JBQzFGLElBQUksV0FBVyxDQUFDLFlBQVksRUFBRSxLQUFLLFNBQVM7b0JBQUUsV0FBVyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQTtnQkFDcEcsV0FBVyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLElBQUksYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUE7Z0JBQ3ZGLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFO29CQUFFLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7Z0JBRXhFLFlBQVksR0FBRyxXQUFXLENBQUE7WUFDNUIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFlBQVksR0FBRyxhQUFhLENBQUE7WUFDOUIsQ0FBQztZQUVELGVBQWUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDdkMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxZQUFZLENBQUMsVUFBVSxFQUFFLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNsRyxDQUFDO1FBRUQsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRTtnQkFBRSxTQUFRO1lBQ3hDLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQUUsU0FBUTtZQUV0RCxlQUFlLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ3hDLENBQUM7UUFFRCxNQUFNLG1CQUFtQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7UUFFckMsS0FBSyxNQUFNLGlCQUFpQixJQUFJLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7WUFDbEUsTUFBTSxlQUFlLEdBQUcsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7WUFFakksSUFBSSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO2dCQUN6QyxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtnQkFDbEgsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxJQUFJLGdCQUFnQixDQUFDLENBQUE7Z0JBRTlHLElBQUksWUFBWTtvQkFBRSxZQUFZLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFBO2dCQUV2RCxTQUFRO1lBQ1YsQ0FBQztZQUVELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLElBQUksaUJBQWlCLEVBQUUsYUFBYSxDQUFDLENBQUE7WUFFekcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1lBQ2xELGVBQWUsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUE7UUFDaEQsQ0FBQztRQUVELEtBQUssTUFBTSxlQUFlLElBQUksY0FBYyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7WUFDOUQsSUFBSSxlQUFlLENBQUMsaUJBQWlCLEVBQUU7Z0JBQUUsU0FBUTtZQUNqRCxJQUFJLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQUUsU0FBUTtZQUVoRSxlQUFlLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQTtRQUM3RixDQUFDO1FBRUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBRXZHLEtBQUssTUFBTSxZQUFZLElBQUksZ0JBQWdCLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUN6RCxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7Z0JBQ2xFLElBQUksT0FBTyxVQUFVLElBQUksUUFBUTtvQkFBRSxPQUFPLFVBQVUsQ0FBQTtnQkFFcEQsT0FBTyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQTtZQUNwRCxDQUFDLENBQUMsQ0FBQTtZQUVGLE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsT0FBTyxNQUFNLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1lBRTlHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFBRSxTQUFRO1lBRXZGLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxVQUFVLENBQUMsY0FBYyxFQUFFO2dCQUN0RCxJQUFJLEVBQUUsWUFBWSxDQUFDLE9BQU8sRUFBRTtnQkFDNUIsTUFBTSxFQUFFLFlBQVksQ0FBQyxTQUFTLEVBQUU7YUFDakMsQ0FBQyxDQUFDLENBQUE7UUFDTCxDQUFDO1FBRUQsT0FBTyxFQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUMsQ0FBQTtJQUN2QyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILHVCQUF1QixDQUFDLFVBQVUsRUFBRSxhQUFhO1FBQy9DLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUE7UUFFN0QsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLFVBQVUsQ0FBQTtRQUUvQixPQUFPLElBQUksZUFBZSxDQUFDO1lBQ3pCLFVBQVUsRUFBRSxPQUFPO1lBQ25CLGNBQWMsRUFBRSxVQUFVLENBQUMsaUJBQWlCLEVBQUU7WUFDOUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRTtZQUNoRCxJQUFJLEVBQUUsVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUMxQixvQkFBb0IsRUFBRSxVQUFVLENBQUMsdUJBQXVCLEVBQUU7WUFDMUQsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLHNCQUFzQixFQUFFO1lBQ3hELFNBQVMsRUFBRSxVQUFVLENBQUMsWUFBWSxFQUFFO1NBQ3JDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQWx0ZXJUYWJsZUJhc2UgZnJvbSBcIi4uLy4uLy4uL3F1ZXJ5L2FsdGVyLXRhYmxlLWJhc2UuanNcIlxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi4vLi4vLi4vLi4vbG9nZ2VyLmpzXCJcbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuaW1wb3J0IFRhYmxlRGF0YSBmcm9tIFwiLi4vLi4vLi4vdGFibGUtZGF0YS9pbmRleC5qc1wiXG5pbXBvcnQgVGFibGVGb3JlaWduS2V5IGZyb20gXCIuLi8uLi8uLi90YWJsZS1kYXRhL3RhYmxlLWZvcmVpZ24ta2V5LmpzXCJcbmltcG9ydCBUYWJsZUluZGV4IGZyb20gXCIuLi8uLi8uLi90YWJsZS1kYXRhL3RhYmxlLWluZGV4LmpzXCJcbmltcG9ydCBUYWJsZVJlYnVpbGRlciBmcm9tIFwiLi4vdGFibGUtcmVidWlsZGVyLmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VDb25uZWN0aW9uRHJpdmVyc1NxbGl0ZVNxbEFsdGVyVGFibGUgZXh0ZW5kcyBBbHRlclRhYmxlQmFzZSB7XG4gIC8qKlxuICAgKiBSdW5zIGNvbnN0cnVjdG9yLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL2Jhc2UuanNcIikuZGVmYXVsdH0gYXJncy5kcml2ZXIgLSBEYXRhYmFzZSBkcml2ZXIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vLi4vdGFibGUtZGF0YS9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLnRhYmxlRGF0YSAtIFRhYmxlIGRhdGEuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7ZHJpdmVyLCB0YWJsZURhdGEsIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgICBpZiAoISh0YWJsZURhdGEgaW5zdGFuY2VvZiBUYWJsZURhdGEpKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHRhYmxlIGRhdGEgd2FzIGdpdmVuXCIpXG5cbiAgICBzdXBlcih7ZHJpdmVyLCB0YWJsZURhdGF9KVxuICAgIHRoaXMubG9nZ2VyID0gbmV3IExvZ2dlcih0aGlzKVxuICAgIHRoaXMudGFibGVEYXRhID0gdGFibGVEYXRhXG4gIH1cblxuICAvKipcbiAgICogUnVucyB0byBzcWxzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmdbXT59IC0gUmVzb2x2ZXMgd2l0aCBTUUwgc3RhdGVtZW50cy5cbiAgICovXG4gIGFzeW5jIHRvU1FMcygpIHtcbiAgICBjb25zdCBkcml2ZXIgPSB0aGlzLmdldERyaXZlcigpXG4gICAgY29uc3Qge3RhYmxlRGF0YTogYWx0ZXJUYWJsZURhdGF9ID0gdGhpc1xuICAgIGNvbnN0IHRhYmxlTmFtZSA9IGFsdGVyVGFibGVEYXRhLmdldE5hbWUoKVxuICAgIGNvbnN0IHRhYmxlID0gYXdhaXQgZHJpdmVyLmdldFRhYmxlQnlOYW1lKHRhYmxlTmFtZSlcblxuICAgIGlmICghdGFibGUpIHRocm93IG5ldyBFcnJvcihgVGFibGUgJHt0YWJsZU5hbWV9IGRvZXMgbm90IGV4aXN0YClcblxuICAgIGNvbnN0IGN1cnJlbnRUYWJsZURhdGEgPSBhd2FpdCB0YWJsZS5nZXRUYWJsZURhdGEoKVxuICAgIGNvbnN0IHt0YXJnZXRUYWJsZURhdGEsIGNvbHVtblBhaXJzfSA9IHRoaXMuX2J1aWxkVGFyZ2V0U2NoZW1hKGN1cnJlbnRUYWJsZURhdGEsIGFsdGVyVGFibGVEYXRhKVxuXG4gICAgY29uc3QgcmVidWlsZGVyID0gbmV3IFRhYmxlUmVidWlsZGVyKHtcbiAgICAgIGNvbHVtblBhaXJzLFxuICAgICAgZHJpdmVyLFxuICAgICAgb3JpZ2luYWxUYWJsZU5hbWU6IHRhYmxlTmFtZSxcbiAgICAgIHRhcmdldFRhYmxlRGF0YVxuICAgIH0pXG5cbiAgICBjb25zdCByZWJ1aWxkU1FMcyA9IGF3YWl0IHJlYnVpbGRlci50b1NRTHMoKVxuICAgIGNvbnN0IHNxbHMgPSBbXVxuXG4gICAgLy8gUFJBR01BIGZvcmVpZ25fa2V5cyBjYW4gb25seSBiZSB0b2dnbGVkIG91dHNpZGUgYW4gYWN0aXZlIHRyYW5zYWN0aW9uOyB3aGVuIHRoZVxuICAgIC8vIGNhbGxlciBpcyBhbHJlYWR5IGluc2lkZSBvbmUgdGhlc2UgYmVjb21lIG5vLW9wcyAobWF0Y2hpbmcgcHJpb3IgYmVoYXZpb3IpLiBPdXRzaWRlXG4gICAgLy8gYSB0cmFuc2FjdGlvbiB0aGV5IHByb3RlY3QgdGhlIHJlYnVpbGQgZnJvbSBjcm9zcy10YWJsZSBGSyBlbmZvcmNlbWVudCBkdXJpbmcgdGhlXG4gICAgLy8gRFJPUC9SRU5BTUUgc3dhcC4gQ2FwdHVyZSB0aGUgcHJpb3Igc3RhdGUgc28gd2UgcmVzdG9yZSBpdCBpbnN0ZWFkIG9mIHVuY29uZGl0aW9uYWxseVxuICAgIC8vIGZvcmNpbmcgT04g4oCUIGNhbGxlcnMgdGhhdCBkZWxpYmVyYXRlbHkgZGlzYWJsZWQgRksgZW5mb3JjZW1lbnQgKGUuZy4gYnVsayBkYXRhIGZpeGVzKVxuICAgIC8vIHNob3VsZG4ndCBiZSBzaWxlbnRseSBmbGlwcGVkIGJhY2sgb24gYnkgYSBtaWdyYXRpb24uXG4gICAgY29uc3QgcHJpb3JTdGF0ZSA9IGF3YWl0IGRyaXZlci5xdWVyeShcIlBSQUdNQSBmb3JlaWduX2tleXNcIilcbiAgICBjb25zdCB3YXNFbmFibGVkID0gcHJpb3JTdGF0ZVswXT8uZm9yZWlnbl9rZXlzID09IDFcblxuICAgIHNxbHMucHVzaChcIlBSQUdNQSBmb3JlaWduX2tleXMgPSBPRkZcIilcblxuICAgIGZvciAoY29uc3Qgc3FsIG9mIHJlYnVpbGRTUUxzKSBzcWxzLnB1c2goc3FsKVxuXG4gICAgc3Fscy5wdXNoKGBQUkFHTUEgZm9yZWlnbl9rZXlzID0gJHt3YXNFbmFibGVkID8gXCJPTlwiIDogXCJPRkZcIn1gKVxuXG4gICAgcmV0dXJuIHNxbHNcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZXMgdGhlIGN1cnJlbnQgc2NoZW1hIHdpdGggdGhlIGFsdGVyIHJlcXVlc3QgdG8gcHJvZHVjZSB0aGUgZGVzaXJlZCBmaW5hbCBzY2hlbWFcbiAgICogYW5kIHRoZSBjb2x1bW4gY29weSBwbGFuLlxuICAgKiBAcGFyYW0ge1RhYmxlRGF0YX0gY3VycmVudFRhYmxlRGF0YSAtIEN1cnJlbnQgc2NoZW1hIGFzIGludHJvc3BlY3RlZCBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICogQHBhcmFtIHtUYWJsZURhdGF9IGFsdGVyVGFibGVEYXRhIC0gQWx0ZXIgcmVxdWVzdDogbmV3IGNvbHVtbnMgKGBpc05ld0NvbHVtbmApLCByZW5hbWVzIChgbmV3TmFtZWApLCBkcm9wcyAoYGRyb3BDb2x1bW5gKSwgbW9kaWZpZXMsIGFuZCBuZXcgZm9yZWlnbiBrZXlzLlxuICAgKiBAcmV0dXJucyB7e3RhcmdldFRhYmxlRGF0YTogVGFibGVEYXRhLCBjb2x1bW5QYWlyczogQXJyYXk8W3N0cmluZywgc3RyaW5nXT59fSAtIFRoZSBtZXJnZWQgdGFyZ2V0IHNjaGVtYSBhbmQgdGhlIFtvbGROYW1lLCBuZXdOYW1lXSBwYWlycyBmb3IgSU5TRVJULi4uU0VMRUNULlxuICAgKi9cbiAgX2J1aWxkVGFyZ2V0U2NoZW1hKGN1cnJlbnRUYWJsZURhdGEsIGFsdGVyVGFibGVEYXRhKSB7XG4gICAgY29uc3QgdGFyZ2V0VGFibGVEYXRhID0gbmV3IFRhYmxlRGF0YShjdXJyZW50VGFibGVEYXRhLmdldE5hbWUoKSlcbiAgICAvKipcbiAgICAgKiBDb2x1bW4gcGFpcnMuXG4gICAgICogQHR5cGUge0FycmF5PFtzdHJpbmcsIHN0cmluZ10+fSAqL1xuICAgIGNvbnN0IGNvbHVtblBhaXJzID0gW11cbiAgICBjb25zdCBhbHRlckNvbHVtbnMgPSBhbHRlclRhYmxlRGF0YS5nZXRDb2x1bW5zKClcbiAgICBjb25zdCBleGlzdGluZ05hbWVzID0gbmV3IFNldChjdXJyZW50VGFibGVEYXRhLmdldENvbHVtbnMoKS5tYXAoKGNvbHVtbikgPT4gY29sdW1uLmdldE5hbWUoKSkpXG4gICAgLyoqXG4gICAgICogQ29sdW1uIHJlbmFtZXMuXG4gICAgICogQHR5cGUge01hcDxzdHJpbmcsIHN0cmluZz59ICovXG4gICAgY29uc3QgY29sdW1uUmVuYW1lcyA9IG5ldyBNYXAoKVxuXG4gICAgZm9yIChjb25zdCBhbHRlckNvbHVtbiBvZiBhbHRlckNvbHVtbnMpIHtcbiAgICAgIGlmIChhbHRlckNvbHVtbi5pc05ld0NvbHVtbigpKSBjb250aW51ZVxuXG4gICAgICBjb25zdCBuZXdOYW1lID0gYWx0ZXJDb2x1bW4uZ2V0TmV3TmFtZSgpXG5cbiAgICAgIGlmIChuZXdOYW1lKSBjb2x1bW5SZW5hbWVzLnNldChhbHRlckNvbHVtbi5nZXROYW1lKCksIG5ld05hbWUpXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjdXJyZW50Q29sdW1uIG9mIGN1cnJlbnRUYWJsZURhdGEuZ2V0Q29sdW1ucygpKSB7XG4gICAgICBjb25zdCBhbHRlckNvbHVtbiA9IGFsdGVyQ29sdW1ucy5maW5kKChjb2x1bW4pID0+IGNvbHVtbi5nZXROYW1lKCkgPT0gY3VycmVudENvbHVtbi5nZXROYW1lKCkgJiYgIWNvbHVtbi5pc05ld0NvbHVtbigpKVxuXG4gICAgICBpZiAoYWx0ZXJDb2x1bW4/LmdldERyb3BDb2x1bW4oKSkgY29udGludWVcblxuICAgICAgbGV0IHRhcmdldENvbHVtblxuXG4gICAgICBpZiAoYWx0ZXJDb2x1bW4pIHtcbiAgICAgICAgLy8gVGhlIGFsdGVyIHJlcXVlc3Qgc3VwcGxpZXMgYSBwYXJ0aWFsIGNvbHVtbiBzcGVjIChlLmcuIGp1c3QgYSByZW5hbWUgb3IgYSB0eXBlIGNoYW5nZSk7XG4gICAgICAgIC8vIGluaGVyaXQgdW5zZXQgcHJvcGVydGllcyBmcm9tIHRoZSBjdXJyZW50IGNvbHVtbiBzbyB3ZSBkb24ndCBsb3NlIGV4aXN0aW5nIGRlZmluaXRpb25zLlxuICAgICAgICBhbHRlckNvbHVtbi5zZXRBdXRvSW5jcmVtZW50KGFsdGVyQ29sdW1uLmdldEF1dG9JbmNyZW1lbnQoKSB8fCBjdXJyZW50Q29sdW1uLmdldEF1dG9JbmNyZW1lbnQoKSlcbiAgICAgICAgaWYgKGFsdGVyQ29sdW1uLmdldERlZmF1bHQoKSA9PT0gdW5kZWZpbmVkKSBhbHRlckNvbHVtbi5zZXREZWZhdWx0KGN1cnJlbnRDb2x1bW4uZ2V0RGVmYXVsdCgpKVxuICAgICAgICBpZiAoIWFsdGVyQ29sdW1uLmdldEluZGV4KCkpIGFsdGVyQ29sdW1uLnNldEluZGV4KGN1cnJlbnRDb2x1bW4uZ2V0SW5kZXgoKSlcbiAgICAgICAgaWYgKCFhbHRlckNvbHVtbi5nZXRGb3JlaWduS2V5KCkpIGFsdGVyQ29sdW1uLnNldEZvcmVpZ25LZXkoY3VycmVudENvbHVtbi5nZXRGb3JlaWduS2V5KCkpXG4gICAgICAgIGlmIChhbHRlckNvbHVtbi5nZXRNYXhMZW5ndGgoKSA9PT0gdW5kZWZpbmVkKSBhbHRlckNvbHVtbi5zZXRNYXhMZW5ndGgoY3VycmVudENvbHVtbi5nZXRNYXhMZW5ndGgoKSlcbiAgICAgICAgYWx0ZXJDb2x1bW4uc2V0UHJpbWFyeUtleShhbHRlckNvbHVtbi5nZXRQcmltYXJ5S2V5KCkgfHwgY3VycmVudENvbHVtbi5nZXRQcmltYXJ5S2V5KCkpXG4gICAgICAgIGlmICghYWx0ZXJDb2x1bW4uZ2V0VHlwZSgpKSBhbHRlckNvbHVtbi5zZXRUeXBlKGN1cnJlbnRDb2x1bW4uZ2V0VHlwZSgpKVxuXG4gICAgICAgIHRhcmdldENvbHVtbiA9IGFsdGVyQ29sdW1uXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXRDb2x1bW4gPSBjdXJyZW50Q29sdW1uXG4gICAgICB9XG5cbiAgICAgIHRhcmdldFRhYmxlRGF0YS5hZGRDb2x1bW4odGFyZ2V0Q29sdW1uKVxuICAgICAgY29sdW1uUGFpcnMucHVzaChbY3VycmVudENvbHVtbi5nZXROYW1lKCksIHRhcmdldENvbHVtbi5nZXROZXdOYW1lKCkgfHwgdGFyZ2V0Q29sdW1uLmdldE5hbWUoKV0pXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBhbHRlckNvbHVtbiBvZiBhbHRlckNvbHVtbnMpIHtcbiAgICAgIGlmICghYWx0ZXJDb2x1bW4uaXNOZXdDb2x1bW4oKSkgY29udGludWVcbiAgICAgIGlmIChleGlzdGluZ05hbWVzLmhhcyhhbHRlckNvbHVtbi5nZXROYW1lKCkpKSBjb250aW51ZVxuXG4gICAgICB0YXJnZXRUYWJsZURhdGEuYWRkQ29sdW1uKGFsdGVyQ29sdW1uKVxuICAgIH1cblxuICAgIGNvbnN0IHNlZW5Gb3JlaWduS2V5TmFtZXMgPSBuZXcgU2V0KClcblxuICAgIGZvciAoY29uc3QgY3VycmVudEZvcmVpZ25LZXkgb2YgY3VycmVudFRhYmxlRGF0YS5nZXRGb3JlaWduS2V5cygpKSB7XG4gICAgICBjb25zdCBhbHRlckZvcmVpZ25LZXkgPSBhbHRlclRhYmxlRGF0YS5nZXRGb3JlaWduS2V5cygpLmZpbmQoKGZvcmVpZ25LZXkpID0+IGZvcmVpZ25LZXkuZ2V0TmFtZSgpID09IGN1cnJlbnRGb3JlaWduS2V5LmdldE5hbWUoKSlcblxuICAgICAgaWYgKGFsdGVyRm9yZWlnbktleT8uZ2V0RHJvcEZvcmVpZ25LZXkoKSkge1xuICAgICAgICBjb25zdCB0YXJnZXRDb2x1bW5OYW1lID0gY29sdW1uUmVuYW1lcy5nZXQoY3VycmVudEZvcmVpZ25LZXkuZ2V0Q29sdW1uTmFtZSgpKSB8fCBjdXJyZW50Rm9yZWlnbktleS5nZXRDb2x1bW5OYW1lKClcbiAgICAgICAgY29uc3QgdGFyZ2V0Q29sdW1uID0gdGFyZ2V0VGFibGVEYXRhLmdldENvbHVtbnMoKS5maW5kKChjb2x1bW4pID0+IGNvbHVtbi5nZXRBY3R1YWxOYW1lKCkgPT0gdGFyZ2V0Q29sdW1uTmFtZSlcblxuICAgICAgICBpZiAodGFyZ2V0Q29sdW1uKSB0YXJnZXRDb2x1bW4uc2V0Rm9yZWlnbktleSh1bmRlZmluZWQpXG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmluYWxGb3JlaWduS2V5ID0gdGhpcy5fcmVuYW1lRm9yZWlnbktleUNvbHVtbihhbHRlckZvcmVpZ25LZXkgfHwgY3VycmVudEZvcmVpZ25LZXksIGNvbHVtblJlbmFtZXMpXG5cbiAgICAgIHNlZW5Gb3JlaWduS2V5TmFtZXMuYWRkKGZpbmFsRm9yZWlnbktleS5nZXROYW1lKCkpXG4gICAgICB0YXJnZXRUYWJsZURhdGEuYWRkRm9yZWlnbktleShmaW5hbEZvcmVpZ25LZXkpXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBhbHRlckZvcmVpZ25LZXkgb2YgYWx0ZXJUYWJsZURhdGEuZ2V0Rm9yZWlnbktleXMoKSkge1xuICAgICAgaWYgKGFsdGVyRm9yZWlnbktleS5nZXREcm9wRm9yZWlnbktleSgpKSBjb250aW51ZVxuICAgICAgaWYgKHNlZW5Gb3JlaWduS2V5TmFtZXMuaGFzKGFsdGVyRm9yZWlnbktleS5nZXROYW1lKCkpKSBjb250aW51ZVxuXG4gICAgICB0YXJnZXRUYWJsZURhdGEuYWRkRm9yZWlnbktleSh0aGlzLl9yZW5hbWVGb3JlaWduS2V5Q29sdW1uKGFsdGVyRm9yZWlnbktleSwgY29sdW1uUmVuYW1lcykpXG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0Q29sdW1uTmFtZXMgPSBuZXcgU2V0KHRhcmdldFRhYmxlRGF0YS5nZXRDb2x1bW5zKCkubWFwKChjb2x1bW4pID0+IGNvbHVtbi5nZXRBY3R1YWxOYW1lKCkpKVxuXG4gICAgZm9yIChjb25zdCBjdXJyZW50SW5kZXggb2YgY3VycmVudFRhYmxlRGF0YS5nZXRJbmRleGVzKCkpIHtcbiAgICAgIGNvbnN0IHJlbmFtZWRDb2x1bW5zID0gY3VycmVudEluZGV4LmdldENvbHVtbnMoKS5tYXAoKGNvbHVtbk5hbWUpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb2x1bW5OYW1lICE9IFwic3RyaW5nXCIpIHJldHVybiBjb2x1bW5OYW1lXG5cbiAgICAgICAgcmV0dXJuIGNvbHVtblJlbmFtZXMuZ2V0KGNvbHVtbk5hbWUpIHx8IGNvbHVtbk5hbWVcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IGluZGV4Q29sdW1uTmFtZXMgPSByZW5hbWVkQ29sdW1ucy5tYXAoKGNvbHVtbikgPT4gdHlwZW9mIGNvbHVtbiA9PSBcInN0cmluZ1wiID8gY29sdW1uIDogY29sdW1uLmdldE5hbWUoKSlcblxuICAgICAgaWYgKGluZGV4Q29sdW1uTmFtZXMuc29tZSgoY29sdW1uTmFtZSkgPT4gIXRhcmdldENvbHVtbk5hbWVzLmhhcyhjb2x1bW5OYW1lKSkpIGNvbnRpbnVlXG5cbiAgICAgIHRhcmdldFRhYmxlRGF0YS5hZGRJbmRleChuZXcgVGFibGVJbmRleChyZW5hbWVkQ29sdW1ucywge1xuICAgICAgICBuYW1lOiBjdXJyZW50SW5kZXguZ2V0TmFtZSgpLFxuICAgICAgICB1bmlxdWU6IGN1cnJlbnRJbmRleC5nZXRVbmlxdWUoKVxuICAgICAgfSkpXG4gICAgfVxuXG4gICAgcmV0dXJuIHt0YXJnZXRUYWJsZURhdGEsIGNvbHVtblBhaXJzfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGZvcmVpZ24ga2V5IHdpdGggaXRzIGNvbHVtbiBuYW1lIHVwZGF0ZWQgd2hlbiB0aGUgY29sdW1uIHdhcyByZW5hbWVkIGluIHRoZVxuICAgKiBhbHRlciByZXF1ZXN0LiBTUUxpdGUgcmUtY3JlYXRlcyB0aGUgY29uc3RyYWludCBpbnNpZGUgdGhlIHJlYnVpbHQgQ1JFQVRFIFRBQkxFLCBzbyBhXG4gICAqIHN0YWxlIGNvbHVtbiBuYW1lIHRoZXJlIHdvdWxkIHJlZmVyZW5jZSBhIGNvbHVtbiB0aGF0IG5vIGxvbmdlciBleGlzdHMuXG4gICAqIEBwYXJhbSB7VGFibGVGb3JlaWduS2V5fSBmb3JlaWduS2V5IC0gRm9yZWlnbiBrZXkgdG8gZXZhbHVhdGUuXG4gICAqIEBwYXJhbSB7TWFwPHN0cmluZywgc3RyaW5nPn0gY29sdW1uUmVuYW1lcyAtIE1hcCBvZiBvbGQg4oaSIG5ldyBjb2x1bW4gbmFtZXMgZnJvbSB0aGUgYWx0ZXIgcmVxdWVzdC5cbiAgICogQHJldHVybnMge1RhYmxlRm9yZWlnbktleX0gLSBUaGUgb3JpZ2luYWwgZm9yZWlnbiBrZXksIG9yIGEgZnJlc2ggaW5zdGFuY2Ugd2l0aCB0aGUgcmVuYW1lZCBjb2x1bW4uXG4gICAqL1xuICBfcmVuYW1lRm9yZWlnbktleUNvbHVtbihmb3JlaWduS2V5LCBjb2x1bW5SZW5hbWVzKSB7XG4gICAgY29uc3QgcmVuYW1lZCA9IGNvbHVtblJlbmFtZXMuZ2V0KGZvcmVpZ25LZXkuZ2V0Q29sdW1uTmFtZSgpKVxuXG4gICAgaWYgKCFyZW5hbWVkKSByZXR1cm4gZm9yZWlnbktleVxuXG4gICAgcmV0dXJuIG5ldyBUYWJsZUZvcmVpZ25LZXkoe1xuICAgICAgY29sdW1uTmFtZTogcmVuYW1lZCxcbiAgICAgIGRyb3BGb3JlaWduS2V5OiBmb3JlaWduS2V5LmdldERyb3BGb3JlaWduS2V5KCksXG4gICAgICBpc05ld0ZvcmVpZ25LZXk6IGZvcmVpZ25LZXkuZ2V0SXNOZXdGb3JlaWduS2V5KCksXG4gICAgICBuYW1lOiBmb3JlaWduS2V5LmdldE5hbWUoKSxcbiAgICAgIHJlZmVyZW5jZWRDb2x1bW5OYW1lOiBmb3JlaWduS2V5LmdldFJlZmVyZW5jZWRDb2x1bW5OYW1lKCksXG4gICAgICByZWZlcmVuY2VkVGFibGVOYW1lOiBmb3JlaWduS2V5LmdldFJlZmVyZW5jZWRUYWJsZU5hbWUoKSxcbiAgICAgIHRhYmxlTmFtZTogZm9yZWlnbktleS5nZXRUYWJsZU5hbWUoKVxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
@@ -153,6 +153,24 @@ export default class VelociousDatabaseMigration {
153
153
  */
154
154
  referencedTableName?: string | undefined;
155
155
  }): Promise<void>;
156
+ /**
157
+ * RemoveForeignKeyArgsType type.
158
+ * @typedef {object} RemoveForeignKeyArgsType
159
+ * @property {string} [columnName] - Override the derived foreign-key column name.
160
+ */
161
+ /**
162
+ * Runs remove foreign key.
163
+ * @param {string} tableName - Table the foreign key lives on.
164
+ * @param {string} referenceName - Singular reference name used to derive the FK column.
165
+ * @param {RemoveForeignKeyArgsType} [args] - Optional overrides.
166
+ * @returns {Promise<void>} - Resolves when complete.
167
+ */
168
+ removeForeignKey(tableName: string, referenceName: string, args?: {
169
+ /**
170
+ * - Override the derived foreign-key column name.
171
+ */
172
+ columnName?: string | undefined;
173
+ }): Promise<void>;
156
174
  /**
157
175
  * Runs add reference.
158
176
  * @param {string} tableName - Table name.
@@ -170,13 +188,29 @@ export default class VelociousDatabaseMigration {
170
188
  type?: string | undefined;
171
189
  unique?: boolean | undefined;
172
190
  }): Promise<void>;
191
+ /**
192
+ * RemoveReferenceArgsType type.
193
+ * @typedef {object} RemoveReferenceArgsType
194
+ * @property {string} [columnName] - Override the derived reference column name.
195
+ * @property {string} [indexName] - Explicit generated index name to remove.
196
+ */
173
197
  /**
174
198
  * Runs remove reference.
175
199
  * @param {string} tableName - Table name.
176
200
  * @param {string} referenceName - Reference name.
201
+ * @param {RemoveReferenceArgsType} [args] - Optional overrides.
177
202
  * @returns {Promise<void>} - Resolves when complete.
178
203
  */
179
- removeReference(tableName: string, referenceName: string): Promise<void>;
204
+ removeReference(tableName: string, referenceName: string, args?: {
205
+ /**
206
+ * - Override the derived reference column name.
207
+ */
208
+ columnName?: string | undefined;
209
+ /**
210
+ * - Explicit generated index name to remove.
211
+ */
212
+ indexName?: string | undefined;
213
+ }): Promise<void>;
180
214
  /**
181
215
  * Runs change column null.
182
216
  * @param {string} tableName - Table name.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/database/migration/index.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/database/migration/index.js"],"names":[],"mappings":"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"}