sonamu 0.7.3 → 0.7.5

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 (133) hide show
  1. package/dist/api/config.d.ts +1 -4
  2. package/dist/api/config.d.ts.map +1 -1
  3. package/dist/api/config.js +1 -1
  4. package/dist/api/sonamu.d.ts +2 -0
  5. package/dist/api/sonamu.d.ts.map +1 -1
  6. package/dist/api/sonamu.js +19 -47
  7. package/dist/bin/cli.js +6 -6
  8. package/dist/database/base-model.d.ts +1 -1
  9. package/dist/database/base-model.d.ts.map +1 -1
  10. package/dist/database/base-model.js +15 -4
  11. package/dist/database/code-generator.d.ts.map +1 -1
  12. package/dist/database/code-generator.js +3 -3
  13. package/dist/database/db.d.ts.map +1 -1
  14. package/dist/database/db.js +1 -1
  15. package/dist/database/puri-wrapper.d.ts +11 -11
  16. package/dist/database/puri-wrapper.d.ts.map +1 -1
  17. package/dist/database/puri-wrapper.js +7 -11
  18. package/dist/database/puri.d.ts +36 -17
  19. package/dist/database/puri.d.ts.map +1 -1
  20. package/dist/database/puri.js +54 -7
  21. package/dist/database/puri.types.d.ts +54 -17
  22. package/dist/database/puri.types.d.ts.map +1 -1
  23. package/dist/database/puri.types.js +2 -4
  24. package/dist/database/puri.types.test-d.js +129 -0
  25. package/dist/database/upsert-builder.d.ts +16 -10
  26. package/dist/database/upsert-builder.d.ts.map +1 -1
  27. package/dist/database/upsert-builder.js +10 -19
  28. package/dist/entity/entity-manager.d.ts +113 -22
  29. package/dist/entity/entity-manager.d.ts.map +1 -1
  30. package/dist/entity/entity-manager.js +1 -1
  31. package/dist/entity/entity.d.ts +34 -0
  32. package/dist/entity/entity.d.ts.map +1 -1
  33. package/dist/entity/entity.js +110 -37
  34. package/dist/index.d.ts +5 -0
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +8 -2
  37. package/dist/migration/code-generation.d.ts.map +1 -1
  38. package/dist/migration/code-generation.js +341 -149
  39. package/dist/migration/migration-set.d.ts.map +1 -1
  40. package/dist/migration/migration-set.js +21 -5
  41. package/dist/migration/migrator.d.ts.map +1 -1
  42. package/dist/migration/migrator.js +7 -1
  43. package/dist/migration/postgresql-schema-reader.d.ts +11 -1
  44. package/dist/migration/postgresql-schema-reader.d.ts.map +1 -1
  45. package/dist/migration/postgresql-schema-reader.js +111 -10
  46. package/dist/syncer/syncer.d.ts.map +1 -1
  47. package/dist/syncer/syncer.js +5 -4
  48. package/dist/template/implementations/generated.template.d.ts.map +1 -1
  49. package/dist/template/implementations/generated.template.js +12 -2
  50. package/dist/template/implementations/generated_sso.template.d.ts +3 -3
  51. package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
  52. package/dist/template/implementations/generated_sso.template.js +50 -2
  53. package/dist/template/implementations/model.template.js +6 -6
  54. package/dist/template/implementations/model_test.template.js +4 -4
  55. package/dist/template/implementations/view_enums_dropdown.template.js +2 -2
  56. package/dist/template/implementations/view_enums_select.template.js +2 -2
  57. package/dist/template/implementations/view_form.template.d.ts.map +1 -1
  58. package/dist/template/implementations/view_form.template.js +12 -9
  59. package/dist/template/implementations/view_id_async_select.template.js +4 -4
  60. package/dist/template/implementations/view_list.template.d.ts.map +1 -1
  61. package/dist/template/implementations/view_list.template.js +12 -9
  62. package/dist/template/implementations/view_search_input.template.js +2 -2
  63. package/dist/template/template.js +2 -2
  64. package/dist/template/zod-converter.d.ts.map +1 -1
  65. package/dist/template/zod-converter.js +17 -2
  66. package/dist/testing/fixture-manager.d.ts +2 -1
  67. package/dist/testing/fixture-manager.d.ts.map +1 -1
  68. package/dist/testing/fixture-manager.js +29 -29
  69. package/dist/types/types.d.ts +593 -68
  70. package/dist/types/types.d.ts.map +1 -1
  71. package/dist/types/types.js +113 -9
  72. package/dist/vector/chunking.d.ts +25 -0
  73. package/dist/vector/chunking.d.ts.map +1 -0
  74. package/dist/vector/chunking.js +97 -0
  75. package/dist/vector/config.d.ts +12 -0
  76. package/dist/vector/config.d.ts.map +1 -0
  77. package/dist/vector/config.js +83 -0
  78. package/dist/vector/embedding.d.ts +42 -0
  79. package/dist/vector/embedding.d.ts.map +1 -0
  80. package/dist/vector/embedding.js +147 -0
  81. package/dist/vector/types.d.ts +105 -0
  82. package/dist/vector/types.d.ts.map +1 -0
  83. package/dist/vector/types.js +5 -0
  84. package/dist/vector/vector-search.d.ts +47 -0
  85. package/dist/vector/vector-search.d.ts.map +1 -0
  86. package/dist/vector/vector-search.js +176 -0
  87. package/package.json +11 -11
  88. package/src/api/config.ts +0 -4
  89. package/src/api/sonamu.ts +21 -36
  90. package/src/bin/cli.ts +5 -5
  91. package/src/database/base-model.ts +20 -11
  92. package/src/database/code-generator.ts +6 -2
  93. package/src/database/db.ts +1 -0
  94. package/src/database/puri-wrapper.ts +22 -16
  95. package/src/database/puri.ts +150 -27
  96. package/src/database/puri.types.test-d.ts +457 -0
  97. package/src/database/puri.types.ts +231 -33
  98. package/src/database/upsert-builder.ts +43 -34
  99. package/src/entity/entity-manager.ts +2 -2
  100. package/src/entity/entity.ts +134 -44
  101. package/src/index.ts +6 -0
  102. package/src/migration/code-generation.ts +377 -174
  103. package/src/migration/migration-set.ts +22 -3
  104. package/src/migration/migrator.ts +6 -0
  105. package/src/migration/postgresql-schema-reader.ts +121 -21
  106. package/src/syncer/syncer.ts +4 -3
  107. package/src/template/implementations/generated.template.ts +51 -9
  108. package/src/template/implementations/generated_sso.template.ts +71 -2
  109. package/src/template/implementations/model.template.ts +5 -5
  110. package/src/template/implementations/model_test.template.ts +3 -3
  111. package/src/template/implementations/view_enums_dropdown.template.ts +1 -1
  112. package/src/template/implementations/view_enums_select.template.ts +1 -1
  113. package/src/template/implementations/view_form.template.ts +11 -8
  114. package/src/template/implementations/view_id_async_select.template.ts +3 -3
  115. package/src/template/implementations/view_list.template.ts +11 -8
  116. package/src/template/implementations/view_search_input.template.ts +1 -1
  117. package/src/template/template.ts +1 -1
  118. package/src/template/zod-converter.ts +20 -0
  119. package/src/testing/fixture-manager.ts +31 -30
  120. package/src/types/types.ts +226 -48
  121. package/src/vector/chunking.ts +115 -0
  122. package/src/vector/config.ts +68 -0
  123. package/src/vector/embedding.ts +193 -0
  124. package/src/vector/types.ts +122 -0
  125. package/src/vector/vector-search.ts +261 -0
  126. package/dist/template/implementations/view_enums_buttonset.template.d.ts +0 -17
  127. package/dist/template/implementations/view_enums_buttonset.template.d.ts.map +0 -1
  128. package/dist/template/implementations/view_enums_buttonset.template.js +0 -31
  129. package/dist/template/implementations/view_list_columns.template.d.ts +0 -17
  130. package/dist/template/implementations/view_list_columns.template.d.ts.map +0 -1
  131. package/dist/template/implementations/view_list_columns.template.js +0 -49
  132. package/src/template/implementations/view_enums_buttonset.template.ts +0 -34
  133. package/src/template/implementations/view_list_columns.template.ts +0 -53
@@ -54,18 +54,14 @@ export class PuriWrapper {
54
54
  ubRegister(tableName, row) {
55
55
  return this.upsertBuilder.register(tableName, row);
56
56
  }
57
- ubUpsert(tableName, chunkSize) {
58
- return this.upsertBuilder.upsert(this.knex, tableName, {
59
- chunkSize
60
- });
57
+ ubUpsert(tableName, options) {
58
+ return this.upsertBuilder.upsert(this.knex, tableName, options);
61
59
  }
62
- ubInsertOnly(tableName, chunkSize) {
63
- return this.upsertBuilder.insertOnly(this.knex, tableName, chunkSize);
60
+ ubInsertOnly(tableName, options) {
61
+ return this.upsertBuilder.insertOnly(this.knex, tableName, options);
64
62
  }
65
- ubUpsertOrInsert(tableName, mode, chunkSize) {
66
- return this.upsertBuilder.upsertOrInsert(this.knex, tableName, mode, {
67
- chunkSize
68
- });
63
+ ubUpsertOrInsert(tableName, mode, options) {
64
+ return this.upsertBuilder.upsertOrInsert(this.knex, tableName, mode, options);
69
65
  }
70
66
  ubUpdateBatch(tableName, options) {
71
67
  return this.upsertBuilder.updateBatch(this.knex, tableName, options);
@@ -110,4 +106,4 @@ export class PuriTransactionWrapper extends PuriWrapper {
110
106
  }
111
107
  }
112
108
 
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS9wdXJpLXdyYXBwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIGJpb21lLWlnbm9yZS1hbGwgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IFB1cmlXcmFwcGVy64qUIOuLpOyWke2VnCDtg4DsnoXsnYQg7IKs7Jqp7ZWY6rOgIOyeiOyKteuLiOuLpC4gKi9cblxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IHR5cGUgeyBLbmV4IH0gZnJvbSBcImtuZXhcIjtcbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VTY2hlbWFFeHRlbmQgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgREJQcmVzZXQgfSBmcm9tIFwiLi9kYlwiO1xuaW1wb3J0IHsgUHVyaSB9IGZyb20gXCIuL3B1cmlcIjtcbmltcG9ydCB0eXBlIHsgQ29sdW1uS2V5cywgT21pdE1ldGFkYXRhQ29sdW1ucywgUHVyaVRhYmxlIH0gZnJvbSBcIi4vcHVyaS50eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBVQlJlZiwgVXBzZXJ0QnVpbGRlciB9IGZyb20gXCIuL3Vwc2VydC1idWlsZGVyXCI7XG5cbnR5cGUgVGFibGVOYW1lPFRTY2hlbWEgZXh0ZW5kcyBEYXRhYmFzZVNjaGVtYUV4dGVuZD4gPSBFeHRyYWN0PGtleW9mIFRTY2hlbWEsIHN0cmluZz47XG5cbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uYWxPcHRpb25zID0ge1xuICBpc29sYXRpb24/OiBFeGNsdWRlPEtuZXguSXNvbGF0aW9uTGV2ZWxzLCBcInNuYXBzaG90XCI+OyAvLyBzbmFwc2hvdDogbXNzcWwgb25seVxuICBkYlByZXNldD86IERCUHJlc2V0O1xuICByZWFkT25seT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY2xhc3MgUHVyaVdyYXBwZXI8VFNjaGVtYSBleHRlbmRzIERhdGFiYXNlU2NoZW1hRXh0ZW5kID0gRGF0YWJhc2VTY2hlbWFFeHRlbmQ+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGtuZXg6IEtuZXgsXG4gICAgcHVibGljIHVwc2VydEJ1aWxkZXI6IFVwc2VydEJ1aWxkZXIsXG4gICkge31cblxuICByYXcoc3FsOiBzdHJpbmcpOiBLbmV4LlJhdyB7XG4gICAgcmV0dXJuIHRoaXMua25leC5yYXcoc3FsKTtcbiAgfVxuXG4gIC8vIO2FjOydtOu4lOuqheycvOuhnCDsi5zsnpFcbiAgZnJvbTxUVGFibGUgZXh0ZW5kcyBrZXlvZiBUU2NoZW1hPihcbiAgICB0YWJsZU5hbWU6IFRUYWJsZSxcbiAgKTogUHVyaTxcbiAgICBUU2NoZW1hLFxuICAgIFJlY29yZDxUVGFibGUsIFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PixcbiAgICBPbWl0TWV0YWRhdGFDb2x1bW5zPFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PlxuICA+O1xuICAvLyDthYzsnbTruJTrqoUgKyBBbGlhc+uhnCDsi5zsnpFcbiAgZnJvbTxUVGFibGUgZXh0ZW5kcyBrZXlvZiBUU2NoZW1hLCBUQWxpYXMgZXh0ZW5kcyBzdHJpbmc+KFxuICAgIHNwZWM6IHtcbiAgICAgIFtLIGluIFRBbGlhc106IFRUYWJsZTtcbiAgICB9LFxuICApOiBQdXJpPFxuICAgIFRTY2hlbWEsXG4gICAgUmVjb3JkPFRBbGlhcywgUHVyaVRhYmxlPFRTY2hlbWFbVFRhYmxlXT4+LFxuICAgIE9taXRNZXRhZGF0YUNvbHVtbnM8UHVyaVRhYmxlPFRTY2hlbWFbVFRhYmxlXT4+XG4gID47XG4gIC8vIOyEnOu4jOy/vOumrOuhnCDsi5zsnpFcbiAgZnJvbTxUQWxpYXMgZXh0ZW5kcyBzdHJpbmcsIFRTdWJSZXN1bHQ+KFxuICAgIHNwZWM6IHtcbiAgICAgIFtLIGluIFRBbGlhc106IFB1cmk8VFNjaGVtYSwgYW55LCBUU3ViUmVzdWx0PjtcbiAgICB9LFxuICApOiBQdXJpPFxuICAgIFRTY2hlbWEsXG4gICAgUmVjb3JkPFRBbGlhcywgUHVyaVRhYmxlPFRTdWJSZXN1bHQ+PixcbiAgICBPbWl0TWV0YWRhdGFDb2x1bW5zPFB1cmlUYWJsZTxUU3ViUmVzdWx0Pj5cbiAgPjtcbiAgZnJvbShzcGVjOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBuZXcgUHVyaSh0aGlzLmtuZXgsIHNwZWMpO1xuICB9XG5cbiAgLy8g7YWM7J2067iU66qF7Jy866GcIOyLnOyekVxuICB0YWJsZTxUVGFibGUgZXh0ZW5kcyBrZXlvZiBUU2NoZW1hPihcbiAgICB0YWJsZU5hbWU6IFRUYWJsZSxcbiAgKTogUHVyaTxcbiAgICBUU2NoZW1hLFxuICAgIFJlY29yZDxUVGFibGUsIFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PixcbiAgICBPbWl0TWV0YWRhdGFDb2x1bW5zPFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PlxuICA+O1xuICAvLyDthYzsnbTruJTrqoUgKyBBbGlhc+uhnCDsi5zsnpFcbiAgdGFibGU8VFRhYmxlIGV4dGVuZHMga2V5b2YgVFNjaGVtYSwgVEFsaWFzIGV4dGVuZHMgc3RyaW5nPihcbiAgICBzcGVjOiB7XG4gICAgICBbSyBpbiBUQWxpYXNdOiBUVGFibGU7XG4gICAgfSxcbiAgKTogUHVyaTxcbiAgICBUU2NoZW1hLFxuICAgIFJlY29yZDxUQWxpYXMsIFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PixcbiAgICBPbWl0TWV0YWRhdGFDb2x1bW5zPFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PlxuICA+O1xuICAvLyDshJzruIzsv7zrpqzroZwg7Iuc7J6RXG4gIHRhYmxlPFRBbGlhcyBleHRlbmRzIHN0cmluZywgVFN1YlJlc3VsdD4oXG4gICAgc3BlYzoge1xuICAgICAgW0sgaW4gVEFsaWFzXTogUHVyaTxUU2NoZW1hLCBhbnksIFRTdWJSZXN1bHQ+O1xuICAgIH0sXG4gICk6IFB1cmk8XG4gICAgVFNjaGVtYSxcbiAgICBSZWNvcmQ8VEFsaWFzLCBQdXJpVGFibGU8VFN1YlJlc3VsdD4+LFxuICAgIE9taXRNZXRhZGF0YUNvbHVtbnM8UHVyaVRhYmxlPFRTdWJSZXN1bHQ+PlxuICA+O1xuICB0YWJsZShzcGVjOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBuZXcgUHVyaSh0aGlzLmtuZXgsIHNwZWMpO1xuICB9XG5cbiAgYXN5bmMgdHJhbnNhY3Rpb248VD4oXG4gICAgY2FsbGJhY2s6ICh0cng6IFB1cmlUcmFuc2FjdGlvbldyYXBwZXIpID0+IFByb21pc2U8VD4sXG4gICAgb3B0aW9uczogVHJhbnNhY3Rpb25hbE9wdGlvbnMgPSB7fSxcbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QgeyBpc29sYXRpb24sIHJlYWRPbmx5LCBkYlByZXNldCA9IFwid1wiIH0gPSBvcHRpb25zO1xuXG4gICAgLy8gQHRyYW5zYWN0aW9uYWwg642w7L2U66CI7J207YSw7JmAIOuPmeydvO2VnCDroZzsp4E6IOydtOuvuCDtirjrnpzsnq3shZgg7Luo7YWN7Iqk7Yq46rCAIOyeiOuKlOyngCDtmZXsnbhcbiAgICBjb25zdCB7IERCIH0gPSBhd2FpdCBpbXBvcnQoXCIuL2RiXCIpO1xuICAgIGNvbnN0IGV4aXN0aW5nQ29udGV4dCA9IERCLnRyYW5zYWN0aW9uU3RvcmFnZS5nZXRTdG9yZSgpO1xuXG4gICAgLy8gQXN5bmNMb2NhbFN0b3JhZ2Ug7Luo7YWN7Iqk7Yq46rCAIOyXhuqxsOuCmCDtlbTri7kgcHJlc2V07J2YIO2KuOuenOyereyFmOydtCDsl4bsnLzrqbQg7IOI66GcIOyLnOyekVxuICAgIGNvbnN0IHN0YXJ0VHJhbnNhY3Rpb24gPSBhc3luYyAoXG4gICAgICBrbmV4OiBLbmV4IHwgS25leC5UcmFuc2FjdGlvbixcbiAgICAgIHVwc2VydEJ1aWxkZXI6IFVwc2VydEJ1aWxkZXIsXG4gICAgKSA9PiB7XG4gICAgICByZXR1cm4ga25leC50cmFuc2FjdGlvbihcbiAgICAgICAgYXN5bmMgKHRyeCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRyeFdyYXBwZXIgPSBuZXcgUHVyaVRyYW5zYWN0aW9uV3JhcHBlcih0cngsIHVwc2VydEJ1aWxkZXIpO1xuXG4gICAgICAgICAgLy8gVHJhbnNhY3Rpb25Db250ZXh07JeQIO2KuOuenOyereyFmCDsoIDsnqVcbiAgICAgICAgICBEQi5nZXRUcmFuc2FjdGlvbkNvbnRleHQoKS5zZXRUcmFuc2FjdGlvbihkYlByZXNldCwgdHJ4V3JhcHBlcik7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGNhbGxiYWNrKHRyeFdyYXBwZXIpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAvLyDtirjrnpzsnq3shZgg7KCc6rGwXG4gICAgICAgICAgICBEQi5nZXRUcmFuc2FjdGlvbkNvbnRleHQoKS5kZWxldGVUcmFuc2FjdGlvbihkYlByZXNldCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7IGlzb2xhdGlvbkxldmVsOiBpc29sYXRpb24sIHJlYWRPbmx5IH0sXG4gICAgICApO1xuICAgIH07XG5cbiAgICAvLyBBc3luY0xvY2FsU3RvcmFnZSDsu6jthY3siqTtirjqsIAg7JeG7Jy866m0IOyDiOuhnCDsg53shLFcbiAgICBpZiAoIWV4aXN0aW5nQ29udGV4dCkge1xuICAgICAgcmV0dXJuIERCLnJ1bldpdGhUcmFuc2FjdGlvbigoKSA9PiBzdGFydFRyYW5zYWN0aW9uKHRoaXMua25leCwgdGhpcy51cHNlcnRCdWlsZGVyKSk7XG4gICAgfVxuXG4gICAgLy8g7ZW064u5IHByZXNldOydmCDtirjrnpzsnq3shZjsnbQg7J2066+4IOyeiOycvOuptCBTQVZFUE9JTlTroZwg7KSR7LKpIO2KuOuenOyereyFmCDsg53shLFcbiAgICBjb25zdCBleGlzdGluZ1RyeCA9IGV4aXN0aW5nQ29udGV4dC5nZXRUcmFuc2FjdGlvbihkYlByZXNldCk7XG4gICAgaWYgKGV4aXN0aW5nVHJ4KSB7XG4gICAgICByZXR1cm4gc3RhcnRUcmFuc2FjdGlvbihleGlzdGluZ1RyeC50cngsIGV4aXN0aW5nVHJ4LnVwc2VydEJ1aWxkZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDsu6jthY3siqTtirjripQg7J6I7KeA66eMIOydtCBwcmVzZXTsnZgg7Yq4656c7J6t7IWY7J2AIOyXhuuKlCDqsr3smrAgKOqwmeydgCDsu6jthY3siqTtirgg64K07JeQ7IScIOyLpO2WiSlcbiAgICAgIHJldHVybiBzdGFydFRyYW5zYWN0aW9uKHRoaXMua25leCwgdGhpcy51cHNlcnRCdWlsZGVyKTtcbiAgICB9XG4gIH1cblxuICB1YlJlZ2lzdGVyPFRUYWJsZSBleHRlbmRzIFRhYmxlTmFtZTxUU2NoZW1hPj4oXG4gICAgdGFibGVOYW1lOiBUVGFibGUsXG4gICAgcm93OiBQYXJ0aWFsPHtcbiAgICAgIFtLIGluIENvbHVtbktleXM8VFNjaGVtYVtUVGFibGVdPl06IFRTY2hlbWFbVFRhYmxlXVtLXSB8IFVCUmVmO1xuICAgIH0+LFxuICApOiBVQlJlZiB7XG4gICAgcmV0dXJuIHRoaXMudXBzZXJ0QnVpbGRlci5yZWdpc3Rlcih0YWJsZU5hbWUsIHJvdyk7XG4gIH1cblxuICB1YlVwc2VydCh0YWJsZU5hbWU6IFRhYmxlTmFtZTxUU2NoZW1hPiwgY2h1bmtTaXplPzogbnVtYmVyKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLnVwc2VydEJ1aWxkZXIudXBzZXJ0KHRoaXMua25leCwgdGFibGVOYW1lLCB7IGNodW5rU2l6ZSB9KTtcbiAgfVxuXG4gIHViSW5zZXJ0T25seSh0YWJsZU5hbWU6IFRhYmxlTmFtZTxUU2NoZW1hPiwgY2h1bmtTaXplPzogbnVtYmVyKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLnVwc2VydEJ1aWxkZXIuaW5zZXJ0T25seSh0aGlzLmtuZXgsIHRhYmxlTmFtZSwgY2h1bmtTaXplKTtcbiAgfVxuXG4gIHViVXBzZXJ0T3JJbnNlcnQoXG4gICAgdGFibGVOYW1lOiBUYWJsZU5hbWU8VFNjaGVtYT4sXG4gICAgbW9kZTogXCJ1cHNlcnRcIiB8IFwiaW5zZXJ0XCIsXG4gICAgY2h1bmtTaXplPzogbnVtYmVyLFxuICApOiBQcm9taXNlPG51bWJlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMudXBzZXJ0QnVpbGRlci51cHNlcnRPckluc2VydCh0aGlzLmtuZXgsIHRhYmxlTmFtZSwgbW9kZSwgeyBjaHVua1NpemUgfSk7XG4gIH1cblxuICB1YlVwZGF0ZUJhdGNoKFxuICAgIHRhYmxlTmFtZTogVGFibGVOYW1lPFRTY2hlbWE+LFxuICAgIG9wdGlvbnM/OiB7IGNodW5rU2l6ZT86IG51bWJlcjsgd2hlcmU/OiBzdHJpbmcgfCBzdHJpbmdbXSB9LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy51cHNlcnRCdWlsZGVyLnVwZGF0ZUJhdGNoKHRoaXMua25leCwgdGFibGVOYW1lLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8vIO2KuOuenOyereyFmCDsl7DqsrAg7YWM7Iqk7Yq47JqpXG4gIGFzeW5jIGRlYnVnVHJhbnNhY3Rpb24oKSB7XG4gICAgY29uc3QgaW5mbyA9IGF3YWl0IHRoaXMuZ2V0VHJhbnNhY3Rpb25JbmZvKCk7XG4gICAgY29uc29sZS5sb2coYCR7Y2hhbGsuY3lhbihcIltQdXJpIFRyYW5zYWN0aW9uXVwiKX0gJHtjaGFsay5tYWdlbnRhKGluZm8pfWApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRUcmFuc2FjdGlvbkluZm8oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAvLyDsl7DqsrAgSUQg7KGw7ZqMXG4gICAgY29uc3QgW2Nvbm5lY3Rpb25JZFJvd3NdID0gYXdhaXQgdGhpcy5rbmV4LnJhdyhgU0VMRUNUIENPTk5FQ1RJT05fSUQoKSBhcyBjb25uZWN0aW9uX2lkYCk7XG4gICAgY29uc3QgY29ubmVjdGlvbklkID0gY29ubmVjdGlvbklkUm93c1swXS5jb25uZWN0aW9uX2lkO1xuXG4gICAgLy8g7Yq4656c7J6t7IWYIOygleuztCDsobDtmoxcbiAgICBjb25zdCBbdHJ4Um93c10gPSBhd2FpdCB0aGlzLmtuZXgucmF3KGBcbiAgICAgICAgU0VMRUNUIFNUQVRFLCBJU09MQVRJT05fTEVWRUwsIFRIUkVBRF9JRCwgRVZFTlRfSURcbiAgICAgICAgRlJPTSBwZXJmb3JtYW5jZV9zY2hlbWEuZXZlbnRzX3RyYW5zYWN0aW9uc19jdXJyZW50XG4gICAgICAgIFdIRVJFIFRIUkVBRF9JRCA9IFxuICAgICAgICAgIChTRUxFQ1QgVEhSRUFEX0lEXG4gICAgICAgICAgRlJPTSBwZXJmb3JtYW5jZV9zY2hlbWEudGhyZWFkcyBcbiAgICAgICAgICBXSEVSRSBQUk9DRVNTTElTVF9JRCA9IENPTk5FQ1RJT05fSUQoKSlcbiAgICAgIGApO1xuXG4gICAgaWYgKHRyeFJvd3MubGVuZ3RoID4gMCAmJiB0cnhSb3dzWzBdLlNUQVRFICE9PSBcIkNPTU1JVFRFRFwiKSB7XG4gICAgICBjb25zdCB0cnggPSB0cnhSb3dzWzBdO1xuICAgICAgcmV0dXJuIGBJbiBUcmFuc2FjdGlvbiwgQ29ubklEOiAke2Nvbm5lY3Rpb25JZH0sIFRocmVhZElEOiAke3RyeC5USFJFQURfSUR9LCBFdmVudElEOiAke3RyeC5FVkVOVF9JRH0sIElubm9EQiBUUlg6ICR7dHJ4LlNUQVRFfSgke3RyeC5JU09MQVRJT05fTEVWRUx9KWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgTm90IGluIFRyYW5zYWN0aW9uLCBDb25uSUQ6ICR7Y29ubmVjdGlvbklkfWA7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQdXJpVHJhbnNhY3Rpb25XcmFwcGVyIGV4dGVuZHMgUHVyaVdyYXBwZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdHJ4OiBLbmV4LlRyYW5zYWN0aW9uLFxuICAgIHB1YmxpYyB1cHNlcnRCdWlsZGVyOiBVcHNlcnRCdWlsZGVyLFxuICApIHtcbiAgICBzdXBlcih0cngsIHVwc2VydEJ1aWxkZXIpO1xuICB9XG5cbiAgYXN5bmMgcm9sbGJhY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy50cngucm9sbGJhY2soKTtcbiAgfVxuXG4gIGFzeW5jIGNvbW1pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnRyeC5jb21taXQoKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbImNoYWxrIiwiUHVyaSIsIlB1cmlXcmFwcGVyIiwia25leCIsInVwc2VydEJ1aWxkZXIiLCJyYXciLCJzcWwiLCJmcm9tIiwic3BlYyIsInRhYmxlIiwidHJhbnNhY3Rpb24iLCJjYWxsYmFjayIsIm9wdGlvbnMiLCJpc29sYXRpb24iLCJyZWFkT25seSIsImRiUHJlc2V0IiwiREIiLCJleGlzdGluZ0NvbnRleHQiLCJ0cmFuc2FjdGlvblN0b3JhZ2UiLCJnZXRTdG9yZSIsInN0YXJ0VHJhbnNhY3Rpb24iLCJ0cngiLCJ0cnhXcmFwcGVyIiwiUHVyaVRyYW5zYWN0aW9uV3JhcHBlciIsImdldFRyYW5zYWN0aW9uQ29udGV4dCIsInNldFRyYW5zYWN0aW9uIiwiZGVsZXRlVHJhbnNhY3Rpb24iLCJpc29sYXRpb25MZXZlbCIsInJ1bldpdGhUcmFuc2FjdGlvbiIsImV4aXN0aW5nVHJ4IiwiZ2V0VHJhbnNhY3Rpb24iLCJ1YlJlZ2lzdGVyIiwidGFibGVOYW1lIiwicm93IiwicmVnaXN0ZXIiLCJ1YlVwc2VydCIsImNodW5rU2l6ZSIsInVwc2VydCIsInViSW5zZXJ0T25seSIsImluc2VydE9ubHkiLCJ1YlVwc2VydE9ySW5zZXJ0IiwibW9kZSIsInVwc2VydE9ySW5zZXJ0IiwidWJVcGRhdGVCYXRjaCIsInVwZGF0ZUJhdGNoIiwiZGVidWdUcmFuc2FjdGlvbiIsImluZm8iLCJnZXRUcmFuc2FjdGlvbkluZm8iLCJjb25zb2xlIiwibG9nIiwiY3lhbiIsIm1hZ2VudGEiLCJjb25uZWN0aW9uSWRSb3dzIiwiY29ubmVjdGlvbklkIiwiY29ubmVjdGlvbl9pZCIsInRyeFJvd3MiLCJsZW5ndGgiLCJTVEFURSIsIlRIUkVBRF9JRCIsIkVWRU5UX0lEIiwiSVNPTEFUSU9OX0xFVkVMIiwicm9sbGJhY2siLCJjb21taXQiXSwibWFwcGluZ3MiOiJBQUFBLG9GQUFvRixHQUVwRixP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
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS9wdXJpLXdyYXBwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIGJpb21lLWlnbm9yZS1hbGwgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IFB1cmlXcmFwcGVy64qUIOuLpOyWke2VnCDtg4DsnoXsnYQg7IKs7Jqp7ZWY6rOgIOyeiOyKteuLiOuLpC4gKi9cblxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IHR5cGUgeyBLbmV4IH0gZnJvbSBcImtuZXhcIjtcbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VTY2hlbWFFeHRlbmQgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgREJQcmVzZXQgfSBmcm9tIFwiLi9kYlwiO1xuaW1wb3J0IHsgUHVyaSB9IGZyb20gXCIuL3B1cmlcIjtcbmltcG9ydCB0eXBlIHsgQ29sdW1uS2V5cywgT21pdEludGVybmFsVHlwZUtleXMsIFB1cmlUYWJsZSB9IGZyb20gXCIuL3B1cmkudHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgSW5zZXJ0T25seU9wdGlvbnMsIFVCUmVmLCBVcHNlcnRCdWlsZGVyLCBVcHNlcnRPcHRpb25zIH0gZnJvbSBcIi4vdXBzZXJ0LWJ1aWxkZXJcIjtcblxudHlwZSBUYWJsZU5hbWU8VFNjaGVtYSBleHRlbmRzIERhdGFiYXNlU2NoZW1hRXh0ZW5kPiA9IEV4dHJhY3Q8a2V5b2YgVFNjaGVtYSwgc3RyaW5nPjtcblxuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25hbE9wdGlvbnMgPSB7XG4gIGlzb2xhdGlvbj86IEV4Y2x1ZGU8S25leC5Jc29sYXRpb25MZXZlbHMsIFwic25hcHNob3RcIj47IC8vIHNuYXBzaG90OiBtc3NxbCBvbmx5XG4gIGRiUHJlc2V0PzogREJQcmVzZXQ7XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjbGFzcyBQdXJpV3JhcHBlcjxUU2NoZW1hIGV4dGVuZHMgRGF0YWJhc2VTY2hlbWFFeHRlbmQgPSBEYXRhYmFzZVNjaGVtYUV4dGVuZD4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMga25leDogS25leCxcbiAgICBwdWJsaWMgdXBzZXJ0QnVpbGRlcjogVXBzZXJ0QnVpbGRlcixcbiAgKSB7fVxuXG4gIHJhdyhzcWw6IHN0cmluZyk6IEtuZXguUmF3IHtcbiAgICByZXR1cm4gdGhpcy5rbmV4LnJhdyhzcWwpO1xuICB9XG5cbiAgLy8g7YWM7J2067iU66qF7Jy866GcIOyLnOyekVxuICBmcm9tPFRUYWJsZSBleHRlbmRzIGtleW9mIFRTY2hlbWE+KFxuICAgIHRhYmxlTmFtZTogVFRhYmxlLFxuICApOiBQdXJpPFxuICAgIFRTY2hlbWEsXG4gICAgUmVjb3JkPFRUYWJsZSwgUHVyaVRhYmxlPFRTY2hlbWFbVFRhYmxlXT4+LFxuICAgIE9taXRJbnRlcm5hbFR5cGVLZXlzPFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PlxuICA+O1xuICAvLyDthYzsnbTruJTrqoUgKyBBbGlhc+uhnCDsi5zsnpFcbiAgZnJvbTxUVGFibGUgZXh0ZW5kcyBrZXlvZiBUU2NoZW1hLCBUQWxpYXMgZXh0ZW5kcyBzdHJpbmc+KFxuICAgIHNwZWM6IHtcbiAgICAgIFtLIGluIFRBbGlhc106IFRUYWJsZTtcbiAgICB9LFxuICApOiBQdXJpPFxuICAgIFRTY2hlbWEsXG4gICAgUmVjb3JkPFRBbGlhcywgUHVyaVRhYmxlPFRTY2hlbWFbVFRhYmxlXT4+LFxuICAgIE9taXRJbnRlcm5hbFR5cGVLZXlzPFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PlxuICA+O1xuICAvLyDshJzruIzsv7zrpqzroZwg7Iuc7J6RXG4gIGZyb208VEFsaWFzIGV4dGVuZHMgc3RyaW5nLCBUU3ViUmVzdWx0PihcbiAgICBzcGVjOiB7XG4gICAgICBbSyBpbiBUQWxpYXNdOiBQdXJpPFRTY2hlbWEsIGFueSwgVFN1YlJlc3VsdD47XG4gICAgfSxcbiAgKTogUHVyaTxcbiAgICBUU2NoZW1hLFxuICAgIFJlY29yZDxUQWxpYXMsIFB1cmlUYWJsZTxUU3ViUmVzdWx0Pj4sXG4gICAgT21pdEludGVybmFsVHlwZUtleXM8UHVyaVRhYmxlPFRTdWJSZXN1bHQ+PlxuICA+O1xuICBmcm9tKHNwZWM6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIG5ldyBQdXJpKHRoaXMua25leCwgc3BlYyk7XG4gIH1cblxuICAvLyDthYzsnbTruJTrqoXsnLzroZwg7Iuc7J6RXG4gIHRhYmxlPFRUYWJsZSBleHRlbmRzIGtleW9mIFRTY2hlbWE+KFxuICAgIHRhYmxlTmFtZTogVFRhYmxlLFxuICApOiBQdXJpPFxuICAgIFRTY2hlbWEsXG4gICAgUmVjb3JkPFRUYWJsZSwgUHVyaVRhYmxlPFRTY2hlbWFbVFRhYmxlXT4+LFxuICAgIE9taXRJbnRlcm5hbFR5cGVLZXlzPFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PlxuICA+O1xuICAvLyDthYzsnbTruJTrqoUgKyBBbGlhc+uhnCDsi5zsnpFcbiAgdGFibGU8VFRhYmxlIGV4dGVuZHMga2V5b2YgVFNjaGVtYSwgVEFsaWFzIGV4dGVuZHMgc3RyaW5nPihcbiAgICBzcGVjOiB7XG4gICAgICBbSyBpbiBUQWxpYXNdOiBUVGFibGU7XG4gICAgfSxcbiAgKTogUHVyaTxcbiAgICBUU2NoZW1hLFxuICAgIFJlY29yZDxUQWxpYXMsIFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PixcbiAgICBPbWl0SW50ZXJuYWxUeXBlS2V5czxQdXJpVGFibGU8VFNjaGVtYVtUVGFibGVdPj5cbiAgPjtcbiAgLy8g7ISc67iM7L+866as66GcIOyLnOyekVxuICB0YWJsZTxUQWxpYXMgZXh0ZW5kcyBzdHJpbmcsIFRTdWJSZXN1bHQ+KFxuICAgIHNwZWM6IHtcbiAgICAgIFtLIGluIFRBbGlhc106IFB1cmk8VFNjaGVtYSwgYW55LCBUU3ViUmVzdWx0PjtcbiAgICB9LFxuICApOiBQdXJpPFxuICAgIFRTY2hlbWEsXG4gICAgUmVjb3JkPFRBbGlhcywgUHVyaVRhYmxlPFRTdWJSZXN1bHQ+PixcbiAgICBPbWl0SW50ZXJuYWxUeXBlS2V5czxQdXJpVGFibGU8VFN1YlJlc3VsdD4+XG4gID47XG4gIHRhYmxlKHNwZWM6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIG5ldyBQdXJpKHRoaXMua25leCwgc3BlYyk7XG4gIH1cblxuICBhc3luYyB0cmFuc2FjdGlvbjxUPihcbiAgICBjYWxsYmFjazogKHRyeDogUHVyaVRyYW5zYWN0aW9uV3JhcHBlcikgPT4gUHJvbWlzZTxUPixcbiAgICBvcHRpb25zOiBUcmFuc2FjdGlvbmFsT3B0aW9ucyA9IHt9LFxuICApOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCB7IGlzb2xhdGlvbiwgcmVhZE9ubHksIGRiUHJlc2V0ID0gXCJ3XCIgfSA9IG9wdGlvbnM7XG5cbiAgICAvLyBAdHJhbnNhY3Rpb25hbCDrjbDsvZTroIjsnbTthLDsmYAg64+Z7J287ZWcIOuhnOyngTog7J2066+4IO2KuOuenOyereyFmCDsu6jthY3siqTtirjqsIAg7J6I64qU7KeAIO2ZleyduFxuICAgIGNvbnN0IHsgREIgfSA9IGF3YWl0IGltcG9ydChcIi4vZGJcIik7XG4gICAgY29uc3QgZXhpc3RpbmdDb250ZXh0ID0gREIudHJhbnNhY3Rpb25TdG9yYWdlLmdldFN0b3JlKCk7XG5cbiAgICAvLyBBc3luY0xvY2FsU3RvcmFnZSDsu6jthY3siqTtirjqsIAg7JeG6rGw64KYIO2VtOuLuSBwcmVzZXTsnZgg7Yq4656c7J6t7IWY7J20IOyXhuycvOuptCDsg4jroZwg7Iuc7J6RXG4gICAgY29uc3Qgc3RhcnRUcmFuc2FjdGlvbiA9IGFzeW5jIChcbiAgICAgIGtuZXg6IEtuZXggfCBLbmV4LlRyYW5zYWN0aW9uLFxuICAgICAgdXBzZXJ0QnVpbGRlcjogVXBzZXJ0QnVpbGRlcixcbiAgICApID0+IHtcbiAgICAgIHJldHVybiBrbmV4LnRyYW5zYWN0aW9uKFxuICAgICAgICBhc3luYyAodHJ4KSA9PiB7XG4gICAgICAgICAgY29uc3QgdHJ4V3JhcHBlciA9IG5ldyBQdXJpVHJhbnNhY3Rpb25XcmFwcGVyKHRyeCwgdXBzZXJ0QnVpbGRlcik7XG5cbiAgICAgICAgICAvLyBUcmFuc2FjdGlvbkNvbnRleHTsl5Ag7Yq4656c7J6t7IWYIOyggOyepVxuICAgICAgICAgIERCLmdldFRyYW5zYWN0aW9uQ29udGV4dCgpLnNldFRyYW5zYWN0aW9uKGRiUHJlc2V0LCB0cnhXcmFwcGVyKTtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgY2FsbGJhY2sodHJ4V3JhcHBlcik7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIC8vIO2KuOuenOyereyFmCDsoJzqsbBcbiAgICAgICAgICAgIERCLmdldFRyYW5zYWN0aW9uQ29udGV4dCgpLmRlbGV0ZVRyYW5zYWN0aW9uKGRiUHJlc2V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHsgaXNvbGF0aW9uTGV2ZWw6IGlzb2xhdGlvbiwgcmVhZE9ubHkgfSxcbiAgICAgICk7XG4gICAgfTtcblxuICAgIC8vIEFzeW5jTG9jYWxTdG9yYWdlIOy7qO2FjeyKpO2KuOqwgCDsl4bsnLzrqbQg7IOI66GcIOyDneyEsVxuICAgIGlmICghZXhpc3RpbmdDb250ZXh0KSB7XG4gICAgICByZXR1cm4gREIucnVuV2l0aFRyYW5zYWN0aW9uKCgpID0+IHN0YXJ0VHJhbnNhY3Rpb24odGhpcy5rbmV4LCB0aGlzLnVwc2VydEJ1aWxkZXIpKTtcbiAgICB9XG5cbiAgICAvLyDtlbTri7kgcHJlc2V07J2YIO2KuOuenOyereyFmOydtCDsnbTrr7gg7J6I7Jy866m0IFNBVkVQT0lOVOuhnCDspJHssqkg7Yq4656c7J6t7IWYIOyDneyEsVxuICAgIGNvbnN0IGV4aXN0aW5nVHJ4ID0gZXhpc3RpbmdDb250ZXh0LmdldFRyYW5zYWN0aW9uKGRiUHJlc2V0KTtcbiAgICBpZiAoZXhpc3RpbmdUcngpIHtcbiAgICAgIHJldHVybiBzdGFydFRyYW5zYWN0aW9uKGV4aXN0aW5nVHJ4LnRyeCwgZXhpc3RpbmdUcngudXBzZXJ0QnVpbGRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIOy7qO2FjeyKpO2KuOuKlCDsnojsp4Drp4wg7J20IHByZXNldOydmCDtirjrnpzsnq3shZjsnYAg7JeG64qUIOqyveyasCAo6rCZ7J2AIOy7qO2FjeyKpO2KuCDrgrTsl5DshJwg7Iuk7ZaJKVxuICAgICAgcmV0dXJuIHN0YXJ0VHJhbnNhY3Rpb24odGhpcy5rbmV4LCB0aGlzLnVwc2VydEJ1aWxkZXIpO1xuICAgIH1cbiAgfVxuXG4gIHViUmVnaXN0ZXI8VFRhYmxlIGV4dGVuZHMgVGFibGVOYW1lPFRTY2hlbWE+PihcbiAgICB0YWJsZU5hbWU6IFRUYWJsZSxcbiAgICByb3c6IFBhcnRpYWw8e1xuICAgICAgW0sgaW4gQ29sdW1uS2V5czxUU2NoZW1hW1RUYWJsZV0+XTogVFNjaGVtYVtUVGFibGVdW0tdIHwgVUJSZWY7XG4gICAgfT4sXG4gICk6IFVCUmVmIHtcbiAgICByZXR1cm4gdGhpcy51cHNlcnRCdWlsZGVyLnJlZ2lzdGVyKHRhYmxlTmFtZSwgcm93KTtcbiAgfVxuXG4gIHViVXBzZXJ0PFRUYWJsZSBleHRlbmRzIFRhYmxlTmFtZTxUU2NoZW1hPiAmIGtleW9mIERhdGFiYXNlU2NoZW1hRXh0ZW5kPihcbiAgICB0YWJsZU5hbWU6IFRUYWJsZSxcbiAgICBvcHRpb25zPzogVXBzZXJ0T3B0aW9uczxUVGFibGU+LFxuICApOiBQcm9taXNlPG51bWJlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMudXBzZXJ0QnVpbGRlci51cHNlcnQodGhpcy5rbmV4LCB0YWJsZU5hbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgdWJJbnNlcnRPbmx5PFRUYWJsZSBleHRlbmRzIFRhYmxlTmFtZTxUU2NoZW1hPiAmIGtleW9mIERhdGFiYXNlU2NoZW1hRXh0ZW5kPihcbiAgICB0YWJsZU5hbWU6IFRUYWJsZSxcbiAgICBvcHRpb25zPzogSW5zZXJ0T25seU9wdGlvbnMsXG4gICk6IFByb21pc2U8bnVtYmVyW10+IHtcbiAgICByZXR1cm4gdGhpcy51cHNlcnRCdWlsZGVyLmluc2VydE9ubHkodGhpcy5rbmV4LCB0YWJsZU5hbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgdWJVcHNlcnRPckluc2VydDxUVGFibGUgZXh0ZW5kcyBUYWJsZU5hbWU8VFNjaGVtYT4gJiBrZXlvZiBEYXRhYmFzZVNjaGVtYUV4dGVuZD4oXG4gICAgdGFibGVOYW1lOiBUVGFibGUsXG4gICAgbW9kZTogXCJ1cHNlcnRcIiB8IFwiaW5zZXJ0XCIsXG4gICAgb3B0aW9ucz86IFVwc2VydE9wdGlvbnM8VFRhYmxlPixcbiAgKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLnVwc2VydEJ1aWxkZXIudXBzZXJ0T3JJbnNlcnQodGhpcy5rbmV4LCB0YWJsZU5hbWUsIG1vZGUsIG9wdGlvbnMpO1xuICB9XG5cbiAgdWJVcGRhdGVCYXRjaChcbiAgICB0YWJsZU5hbWU6IFRhYmxlTmFtZTxUU2NoZW1hPixcbiAgICBvcHRpb25zPzogeyBjaHVua1NpemU/OiBudW1iZXI7IHdoZXJlPzogc3RyaW5nIHwgc3RyaW5nW10gfSxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMudXBzZXJ0QnVpbGRlci51cGRhdGVCYXRjaCh0aGlzLmtuZXgsIHRhYmxlTmFtZSwgb3B0aW9ucyk7XG4gIH1cblxuICAvLyDtirjrnpzsnq3shZgg7Jew6rKwIO2FjOyKpO2KuOyaqVxuICBhc3luYyBkZWJ1Z1RyYW5zYWN0aW9uKCkge1xuICAgIGNvbnN0IGluZm8gPSBhd2FpdCB0aGlzLmdldFRyYW5zYWN0aW9uSW5mbygpO1xuICAgIGNvbnNvbGUubG9nKGAke2NoYWxrLmN5YW4oXCJbUHVyaSBUcmFuc2FjdGlvbl1cIil9ICR7Y2hhbGsubWFnZW50YShpbmZvKX1gKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0VHJhbnNhY3Rpb25JbmZvKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgLy8g7Jew6rKwIElEIOyhsO2ajFxuICAgIGNvbnN0IFtjb25uZWN0aW9uSWRSb3dzXSA9IGF3YWl0IHRoaXMua25leC5yYXcoYFNFTEVDVCBDT05ORUNUSU9OX0lEKCkgYXMgY29ubmVjdGlvbl9pZGApO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25JZCA9IGNvbm5lY3Rpb25JZFJvd3NbMF0uY29ubmVjdGlvbl9pZDtcblxuICAgIC8vIO2KuOuenOyereyFmCDsoJXrs7Qg7KGw7ZqMXG4gICAgY29uc3QgW3RyeFJvd3NdID0gYXdhaXQgdGhpcy5rbmV4LnJhdyhgXG4gICAgICAgIFNFTEVDVCBTVEFURSwgSVNPTEFUSU9OX0xFVkVMLCBUSFJFQURfSUQsIEVWRU5UX0lEXG4gICAgICAgIEZST00gcGVyZm9ybWFuY2Vfc2NoZW1hLmV2ZW50c190cmFuc2FjdGlvbnNfY3VycmVudFxuICAgICAgICBXSEVSRSBUSFJFQURfSUQgPSBcbiAgICAgICAgICAoU0VMRUNUIFRIUkVBRF9JRFxuICAgICAgICAgIEZST00gcGVyZm9ybWFuY2Vfc2NoZW1hLnRocmVhZHMgXG4gICAgICAgICAgV0hFUkUgUFJPQ0VTU0xJU1RfSUQgPSBDT05ORUNUSU9OX0lEKCkpXG4gICAgICBgKTtcblxuICAgIGlmICh0cnhSb3dzLmxlbmd0aCA+IDAgJiYgdHJ4Um93c1swXS5TVEFURSAhPT0gXCJDT01NSVRURURcIikge1xuICAgICAgY29uc3QgdHJ4ID0gdHJ4Um93c1swXTtcbiAgICAgIHJldHVybiBgSW4gVHJhbnNhY3Rpb24sIENvbm5JRDogJHtjb25uZWN0aW9uSWR9LCBUaHJlYWRJRDogJHt0cnguVEhSRUFEX0lEfSwgRXZlbnRJRDogJHt0cnguRVZFTlRfSUR9LCBJbm5vREIgVFJYOiAke3RyeC5TVEFURX0oJHt0cnguSVNPTEFUSU9OX0xFVkVMfSlgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYE5vdCBpbiBUcmFuc2FjdGlvbiwgQ29ubklEOiAke2Nvbm5lY3Rpb25JZH1gO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHVyaVRyYW5zYWN0aW9uV3JhcHBlciBleHRlbmRzIFB1cmlXcmFwcGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRyeDogS25leC5UcmFuc2FjdGlvbixcbiAgICBwdWJsaWMgdXBzZXJ0QnVpbGRlcjogVXBzZXJ0QnVpbGRlcixcbiAgKSB7XG4gICAgc3VwZXIodHJ4LCB1cHNlcnRCdWlsZGVyKTtcbiAgfVxuXG4gIGFzeW5jIHJvbGxiYWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMudHJ4LnJvbGxiYWNrKCk7XG4gIH1cblxuICBhc3luYyBjb21taXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy50cnguY29tbWl0KCk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJjaGFsayIsIlB1cmkiLCJQdXJpV3JhcHBlciIsImtuZXgiLCJ1cHNlcnRCdWlsZGVyIiwicmF3Iiwic3FsIiwiZnJvbSIsInNwZWMiLCJ0YWJsZSIsInRyYW5zYWN0aW9uIiwiY2FsbGJhY2siLCJvcHRpb25zIiwiaXNvbGF0aW9uIiwicmVhZE9ubHkiLCJkYlByZXNldCIsIkRCIiwiZXhpc3RpbmdDb250ZXh0IiwidHJhbnNhY3Rpb25TdG9yYWdlIiwiZ2V0U3RvcmUiLCJzdGFydFRyYW5zYWN0aW9uIiwidHJ4IiwidHJ4V3JhcHBlciIsIlB1cmlUcmFuc2FjdGlvbldyYXBwZXIiLCJnZXRUcmFuc2FjdGlvbkNvbnRleHQiLCJzZXRUcmFuc2FjdGlvbiIsImRlbGV0ZVRyYW5zYWN0aW9uIiwiaXNvbGF0aW9uTGV2ZWwiLCJydW5XaXRoVHJhbnNhY3Rpb24iLCJleGlzdGluZ1RyeCIsImdldFRyYW5zYWN0aW9uIiwidWJSZWdpc3RlciIsInRhYmxlTmFtZSIsInJvdyIsInJlZ2lzdGVyIiwidWJVcHNlcnQiLCJ1cHNlcnQiLCJ1Ykluc2VydE9ubHkiLCJpbnNlcnRPbmx5IiwidWJVcHNlcnRPckluc2VydCIsIm1vZGUiLCJ1cHNlcnRPckluc2VydCIsInViVXBkYXRlQmF0Y2giLCJ1cGRhdGVCYXRjaCIsImRlYnVnVHJhbnNhY3Rpb24iLCJpbmZvIiwiZ2V0VHJhbnNhY3Rpb25JbmZvIiwiY29uc29sZSIsImxvZyIsImN5YW4iLCJtYWdlbnRhIiwiY29ubmVjdGlvbklkUm93cyIsImNvbm5lY3Rpb25JZCIsImNvbm5lY3Rpb25faWQiLCJ0cnhSb3dzIiwibGVuZ3RoIiwiU1RBVEUiLCJUSFJFQURfSUQiLCJFVkVOVF9JRCIsIklTT0xBVElPTl9MRVZFTCIsInJvbGxiYWNrIiwiY29tbWl0Il0sIm1hcHBpbmdzIjoiQUFBQSxvRkFBb0YsR0FFcEYsT0FBT0EsV0FBVyxRQUFRO0FBSTFCLFNBQVNDLElBQUksUUFBUSxZQUFTO0FBWTlCLE9BQU8sTUFBTUM7OztJQUNYLFlBQ0UsQUFBT0MsSUFBVSxFQUNqQixBQUFPQyxhQUE0QixDQUNuQzthQUZPRCxPQUFBQTthQUNBQyxnQkFBQUE7SUFDTjtJQUVIQyxJQUFJQyxHQUFXLEVBQVk7UUFDekIsT0FBTyxJQUFJLENBQUNILElBQUksQ0FBQ0UsR0FBRyxDQUFDQztJQUN2QjtJQThCQUMsS0FBS0MsSUFBUyxFQUFPO1FBQ25CLE9BQU8sSUFBSVAsS0FBSyxJQUFJLENBQUNFLElBQUksRUFBRUs7SUFDN0I7SUE4QkFDLE1BQU1ELElBQVMsRUFBTztRQUNwQixPQUFPLElBQUlQLEtBQUssSUFBSSxDQUFDRSxJQUFJLEVBQUVLO0lBQzdCO0lBRUEsTUFBTUUsWUFDSkMsUUFBcUQsRUFDckRDLFVBQWdDLENBQUMsQ0FBQyxFQUN0QjtRQUNaLE1BQU0sRUFBRUMsU0FBUyxFQUFFQyxRQUFRLEVBQUVDLFdBQVcsR0FBRyxFQUFFLEdBQUdIO1FBRWhELHFEQUFxRDtRQUNyRCxNQUFNLEVBQUVJLEVBQUUsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDO1FBQzVCLE1BQU1DLGtCQUFrQkQsR0FBR0Usa0JBQWtCLENBQUNDLFFBQVE7UUFFdEQseURBQXlEO1FBQ3pELE1BQU1DLG1CQUFtQixPQUN2QmpCLE1BQ0FDO1lBRUEsT0FBT0QsS0FBS08sV0FBVyxDQUNyQixPQUFPVztnQkFDTCxNQUFNQyxh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
@@ -1,7 +1,7 @@
1
1
  /** biome-ignore-all lint/suspicious/noThenProperty: Puri는 thenable 인터페이스를 구현하고 있습니다. */
2
2
  /** biome-ignore-all lint/suspicious/noExplicitAny: Puri는 다양한 타입을 사용하고 있습니다. */
3
3
  import type { Knex } from "knex";
4
- import type { AvailableColumns, ColumnKeys, ComparisonOperator, Expand, ExtractColumnType, FulltextColumns, InsertData, InsertResult, OnConflictAction, ParseSelectObject, ResultAvailableColumns, SelectObject, SingleTableValue, SqlExpression, WhereCondition } from "./puri.types";
4
+ import type { AvailableColumns, ColumnKeys, ComparisonOperator, Expand, ExtractColumnType, FulltextColumns, InsertData, InsertResult, LeftJoinedMarker, LeftJoinMarkerFor, NumericColumns, OnConflictAction, ParseSelectObject, ResultAvailableColumns, SelectAllResult, SelectObject, SingleTableValue, SqlExpression, WhereCondition, WhereOperator } from "./puri.types";
5
5
  import type { ClearStatements } from "./puri-subset.types";
6
6
  export declare class Puri<TSchema, TTables extends Record<string, any>, TResult> {
7
7
  knex: Knex;
@@ -21,8 +21,14 @@ export declare class Puri<TSchema, TTables extends Record<string, any>, TResult>
21
21
  static rawBoolean(sql: string): SqlExpression<"boolean">;
22
22
  static rawDate(sql: string): SqlExpression<"date">;
23
23
  select<TSelect extends SelectObject<TTables>>(selectObj: TSelect): Puri<TSchema, TTables, ParseSelectObject<TTables, TSelect>>;
24
+ /**
25
+ * 중첩 객체를 flat 객체로 변환
26
+ * 예: { parent: { id: "parent.id", name: "parent.name" } }
27
+ * → { parent__id: "parent.id", parent__name: "parent.name" }
28
+ */
29
+ private flattenSelect;
24
30
  appendSelect<TSelect extends SelectObject<TTables>>(selectObj: TSelect): Puri<TSchema, TTables, TResult & ParseSelectObject<TTables, TSelect>>;
25
- selectAll(): this;
31
+ selectAll(): Puri<TSchema, TTables, SelectAllResult<TTables>>;
26
32
  clear(statement: ClearStatements): this;
27
33
  clearJoin(alias: string): this;
28
34
  join<TJoinAlias extends string, TSubResult>(tableSpec: {
@@ -44,25 +50,23 @@ export declare class Puri<TSchema, TTables extends Record<string, any>, TResult>
44
50
  join<TJoinTable extends keyof TSchema>(tableName: TJoinTable, callback: (j: JoinClauseGroup<TTables, Record<TJoinTable, TSchema[TJoinTable]>>) => void): Puri<TSchema, TTables & Record<TJoinTable, TSchema[TJoinTable]>, TResult>;
45
51
  leftJoin<TJoinAlias extends string, TSubResult>(tableSpec: {
46
52
  [K in TJoinAlias]: Puri<TSchema, any, TSubResult>;
47
- }, left: AvailableColumns<TTables>, right: `${TJoinAlias}.${ColumnKeys<TSubResult>}`): Puri<TSchema, TTables & Record<TJoinAlias, TSubResult>, // 서브쿼리의 TResult
48
- TResult>;
49
- leftJoin<TJoinTable extends keyof TSchema, TJoinAlias extends string>(tableSpec: {
53
+ }, left: AvailableColumns<TTables>, right: `${TJoinAlias}.${ColumnKeys<TSubResult>}`): Puri<TSchema, TTables & Record<TJoinAlias, TSubResult & LeftJoinedMarker>, TResult>;
54
+ leftJoin<TJoinTable extends keyof TSchema, TJoinAlias extends string, TLeft extends AvailableColumns<TTables>>(tableSpec: {
50
55
  [K in TJoinAlias]: TJoinTable;
51
- }, left: AvailableColumns<TTables>, right: `${TJoinAlias}.${ColumnKeys<TSchema[TJoinTable]>}`): Puri<TSchema, TTables & Record<TJoinAlias, TSchema[TJoinTable]>, // TTables 확장!
52
- TResult>;
53
- leftJoin<TJoinTable extends keyof TSchema>(tableName: TJoinTable, left: AvailableColumns<TTables>, right: `${TJoinTable & string}.${ColumnKeys<TSchema[TJoinTable]>}`): Puri<TSchema, TTables & Record<TJoinTable, TSchema[TJoinTable]>, // 테이블명이 키
54
- TResult>;
56
+ }, left: TLeft, right: `${TJoinAlias}.${ColumnKeys<TSchema[TJoinTable]>}`): Puri<TSchema, TTables & Record<TJoinAlias, TSchema[TJoinTable] & LeftJoinMarkerFor<TTables, TLeft>>, TResult>;
57
+ leftJoin<TJoinTable extends keyof TSchema, TLeft extends AvailableColumns<TTables>>(tableName: TJoinTable, left: TLeft, right: `${TJoinTable & string}.${ColumnKeys<TSchema[TJoinTable]>}`): Puri<TSchema, TTables & Record<TJoinTable, TSchema[TJoinTable] & LeftJoinMarkerFor<TTables, TLeft>>, TResult>;
55
58
  leftJoin<TJoinAlias extends string, TSubResult>(tableSpec: {
56
59
  [K in TJoinAlias]: Puri<TSchema, any, TSubResult>;
57
- }, callback: (j: JoinClauseGroup<TTables, Record<TJoinAlias, TSubResult>>) => void): Puri<TSchema, TTables & Record<TJoinAlias, TSubResult>, TResult>;
60
+ }, callback: (j: JoinClauseGroup<TTables, Record<TJoinAlias, TSubResult>>) => void): Puri<TSchema, TTables & Record<TJoinAlias, TSubResult & LeftJoinedMarker>, TResult>;
58
61
  leftJoin<TJoinTable extends keyof TSchema, TJoinAlias extends string>(tableSpec: {
59
62
  [K in TJoinAlias]: TJoinTable;
60
- }, callback: (j: JoinClauseGroup<TTables, Record<TJoinAlias, TSchema[TJoinTable]>>) => void): Puri<TSchema, TTables & Record<TJoinAlias, TSchema[TJoinTable]>, TResult>;
61
- leftJoin<TJoinTable extends keyof TSchema>(tableName: TJoinTable, callback: (j: JoinClauseGroup<TTables, Record<TJoinTable, TSchema[TJoinTable]>>) => void): Puri<TSchema, TTables & Record<TJoinTable, TSchema[TJoinTable]>, TResult>;
63
+ }, callback: (j: JoinClauseGroup<TTables, Record<TJoinAlias, TSchema[TJoinTable]>>) => void): Puri<TSchema, TTables & Record<TJoinAlias, TSchema[TJoinTable] & LeftJoinedMarker>, TResult>;
64
+ leftJoin<TJoinTable extends keyof TSchema>(tableName: TJoinTable, callback: (j: JoinClauseGroup<TTables, Record<TJoinTable, TSchema[TJoinTable]>>) => void): Puri<TSchema, TTables & Record<TJoinTable, TSchema[TJoinTable] & LeftJoinedMarker>, TResult>;
62
65
  __commonJoin(joinType: "join" | "leftJoin", tableNameOrSpec: any, ...args: any[]): this;
63
66
  where(conditions: WhereCondition<TTables>): this;
64
67
  where<TColumn extends AvailableColumns<TTables>>(column: TColumn, value: ExtractColumnType<TTables, TColumn & string>): this;
65
68
  where<TColumn extends AvailableColumns<TTables>>(column: TColumn, operator: ComparisonOperator | "like" | "not like", value: ExtractColumnType<TTables, TColumn & string>): this;
69
+ where<TColumn extends Knex.Raw>(column: TColumn, operator: ComparisonOperator | "like" | "not like", value: any): this;
66
70
  whereIn<TColumn extends AvailableColumns<TTables>>(column: TColumn, values: ExtractColumnType<TTables, TColumn & string>[]): Puri<TSchema, TTables, TResult>;
67
71
  whereNotIn<TColumn extends AvailableColumns<TTables>>(column: TColumn, values: ExtractColumnType<TTables, TColumn & string>[]): Puri<TSchema, TTables, TResult>;
68
72
  whereMatch<TColumn extends FulltextColumns<TTables>>(column: TColumn, value: string): this;
@@ -81,24 +85,25 @@ export declare class Puri<TSchema, TTables extends Record<string, any>, TResult>
81
85
  pluck<TColumn extends keyof TResult | ResultAvailableColumns<TTables, TResult>>(column: TColumn): ResolvedPuri<TColumn extends keyof TResult ? TResult[TColumn][] : ExtractColumnType<TTables, TColumn & string>[], never>;
82
86
  insert(data: InsertData<SingleTableValue<TTables>>): ResolvedPuri<InsertResult, SingleTableValue<TTables>>;
83
87
  update(data: WhereCondition<TTables>): ResolvedPuri<number, SingleTableValue<TTables>>;
84
- increment<TColumn extends AvailableColumns<TTables>>(column: TColumn, value: number): ResolvedPuri<number, SingleTableValue<TTables>>;
85
- decrement<TColumn extends AvailableColumns<TTables>>(column: TColumn, value: number): ResolvedPuri<number, SingleTableValue<TTables>>;
88
+ increment<TColumn extends NumericColumns<TTables>>(column: TColumn, value: number): ResolvedPuri<number, SingleTableValue<TTables>>;
89
+ decrement<TColumn extends NumericColumns<TTables>>(column: TColumn, value: number): ResolvedPuri<number, SingleTableValue<TTables>>;
86
90
  delete(): ResolvedPuri<number, SingleTableValue<TTables>>;
87
91
  toQuery(): string;
88
92
  debug(): this;
89
93
  clone(): Puri<TSchema, TTables, TResult>;
90
94
  formatSQL(unformatted: string): string;
91
- raw(): Knex.QueryBuilder;
95
+ raw(sql: string): Knex.Raw;
96
+ rawQuery(): Knex.QueryBuilder;
92
97
  }
93
98
  export declare class WhereGroup<TTables extends Record<string, any>> {
94
99
  private builder;
95
100
  constructor(builder: Knex.QueryBuilder);
96
101
  where(conditions: WhereCondition<TTables>): this;
97
102
  where<TColumn extends AvailableColumns<TTables>>(column: TColumn, value: ExtractColumnType<TTables, TColumn & string>): this;
98
- where<TColumn extends AvailableColumns<TTables>>(column: TColumn, operator: ComparisonOperator, value: ExtractColumnType<TTables, TColumn & string>): this;
103
+ where<TColumn extends AvailableColumns<TTables>>(column: TColumn, operator: WhereOperator, value: ExtractColumnType<TTables, TColumn & string>): this;
99
104
  orWhere(conditions: WhereCondition<TTables>): this;
100
105
  orWhere<TColumn extends AvailableColumns<TTables>>(column: TColumn, value: ExtractColumnType<TTables, TColumn & string>): this;
101
- orWhere<TColumn extends AvailableColumns<TTables>>(column: TColumn, operator: ComparisonOperator, value: ExtractColumnType<TTables, TColumn & string>): this;
106
+ orWhere<TColumn extends AvailableColumns<TTables>>(column: TColumn, operator: WhereOperator, value: ExtractColumnType<TTables, TColumn & string>): this;
102
107
  whereGroup(callback: (g: WhereGroup<TTables>) => void): this;
103
108
  orWhereGroup(callback: (g: WhereGroup<TTables>) => void): this;
104
109
  }
@@ -106,11 +111,25 @@ export declare class JoinClauseGroup<TLeft extends Record<string, any>, TRight e
106
111
  private callback;
107
112
  constructor(callback: Knex.JoinClause);
108
113
  on(left: AvailableColumns<TLeft>, right: AvailableColumns<TRight>): this;
114
+ on(left: AvailableColumns<TRight>, right: AvailableColumns<TLeft>): this;
115
+ on(left: AvailableColumns<TLeft>, right: ExtractColumnType<TLeft, AvailableColumns<TLeft> & string>): this;
116
+ on(left: AvailableColumns<TRight>, right: ExtractColumnType<TRight, AvailableColumns<TRight> & string>): this;
109
117
  on(left: AvailableColumns<TLeft>, operator: ComparisonOperator, right: AvailableColumns<TRight>): this;
118
+ on(left: AvailableColumns<TRight>, operator: ComparisonOperator, right: AvailableColumns<TLeft>): this;
119
+ on(left: AvailableColumns<TLeft>, operator: ComparisonOperator, right: ExtractColumnType<TLeft, AvailableColumns<TLeft> & string>): this;
120
+ on(left: AvailableColumns<TRight>, operator: ComparisonOperator, right: ExtractColumnType<TRight, AvailableColumns<TRight> & string>): this;
110
121
  on(callback: (nested: JoinClauseGroup<TLeft, TRight>) => void): this;
122
+ on(callback: (nested: JoinClauseGroup<TRight, TLeft>) => void): this;
111
123
  orOn(left: AvailableColumns<TLeft>, right: AvailableColumns<TRight>): this;
124
+ orOn(left: AvailableColumns<TRight>, right: AvailableColumns<TLeft>): this;
125
+ orOn(left: AvailableColumns<TLeft>, right: ExtractColumnType<TLeft, AvailableColumns<TLeft> & string>): this;
126
+ orOn(left: AvailableColumns<TRight>, right: ExtractColumnType<TRight, AvailableColumns<TRight> & string>): this;
112
127
  orOn(left: AvailableColumns<TLeft>, operator: ComparisonOperator, right: AvailableColumns<TRight>): this;
128
+ orOn(left: AvailableColumns<TRight>, operator: ComparisonOperator, right: AvailableColumns<TLeft>): this;
129
+ orOn(left: AvailableColumns<TLeft>, operator: ComparisonOperator, right: ExtractColumnType<TLeft, AvailableColumns<TLeft> & string>): this;
130
+ orOn(left: AvailableColumns<TRight>, operator: ComparisonOperator, right: ExtractColumnType<TRight, AvailableColumns<TRight> & string>): this;
113
131
  orOn(callback: (nested: JoinClauseGroup<TLeft, TRight>) => void): this;
132
+ orOn(callback: (nested: JoinClauseGroup<TRight, TLeft>) => void): this;
114
133
  }
115
134
  export declare class ResolvedPuri<TResolved, TReturning> {
116
135
  knexQuery: Knex.QueryBuilder;
@@ -1 +1 @@
1
- {"version":3,"file":"puri.d.ts","sourceRoot":"","sources":["../../src/database/puri.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"puri.d.ts","sourceRoot":"","sources":["../../src/database/puri.ts"],"names":[],"mappings":"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"}