@decaf-ts/core 0.5.21 → 0.5.23

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 (88) hide show
  1. package/README.md +251 -603
  2. package/dist/core.cjs +433 -225
  3. package/dist/core.esm.cjs +434 -226
  4. package/lib/esm/identity/decorators.js +1 -1
  5. package/lib/esm/index.d.ts +1 -1
  6. package/lib/esm/index.js +3 -3
  7. package/lib/esm/model/types.d.ts +0 -9
  8. package/lib/esm/model/types.js +1 -1
  9. package/lib/esm/persistence/Adapter.d.ts +61 -51
  10. package/lib/esm/persistence/Adapter.js +120 -47
  11. package/lib/esm/persistence/Dispatch.d.ts +2 -13
  12. package/lib/esm/persistence/Dispatch.js +7 -15
  13. package/lib/esm/persistence/errors.d.ts +2 -2
  14. package/lib/esm/persistence/errors.js +4 -4
  15. package/lib/esm/persistence/types.d.ts +2 -0
  16. package/lib/esm/persistence/types.js +1 -1
  17. package/lib/esm/query/Condition.d.ts +8 -0
  18. package/lib/esm/query/Condition.js +9 -1
  19. package/lib/esm/query/Paginator.d.ts +2 -2
  20. package/lib/esm/query/Paginator.js +1 -1
  21. package/lib/esm/query/Statement.d.ts +4 -3
  22. package/lib/esm/query/Statement.js +4 -2
  23. package/lib/esm/query/errors.d.ts +3 -3
  24. package/lib/esm/query/errors.js +6 -6
  25. package/lib/esm/ram/RamAdapter.d.ts +8 -14
  26. package/lib/esm/ram/RamAdapter.js +44 -33
  27. package/lib/esm/ram/RamContext.d.ts +14 -6
  28. package/lib/esm/ram/RamContext.js +15 -7
  29. package/lib/esm/ram/constants.d.ts +1 -2
  30. package/lib/esm/ram/constants.js +2 -3
  31. package/lib/esm/ram/types.d.ts +3 -0
  32. package/lib/esm/ram/types.js +1 -1
  33. package/lib/esm/repository/Repository.d.ts +8 -7
  34. package/lib/esm/repository/Repository.js +8 -8
  35. package/lib/esm/repository/constants.d.ts +5 -4
  36. package/lib/esm/repository/constants.js +6 -5
  37. package/lib/esm/repository/decorators.js +2 -1
  38. package/lib/esm/repository/errors.d.ts +2 -2
  39. package/lib/esm/repository/errors.js +4 -4
  40. package/lib/esm/repository/injectables.d.ts +82 -11
  41. package/lib/esm/repository/injectables.js +137 -28
  42. package/lib/esm/repository/utils.d.ts +28 -6
  43. package/lib/esm/repository/utils.js +29 -7
  44. package/lib/esm/utils/errors.d.ts +5 -5
  45. package/lib/esm/utils/errors.js +9 -9
  46. package/lib/identity/decorators.cjs +1 -1
  47. package/lib/index.cjs +4 -4
  48. package/lib/index.d.ts +1 -1
  49. package/lib/model/types.cjs +1 -1
  50. package/lib/model/types.d.ts +0 -9
  51. package/lib/persistence/Adapter.cjs +119 -46
  52. package/lib/persistence/Adapter.d.ts +61 -51
  53. package/lib/persistence/Dispatch.cjs +6 -14
  54. package/lib/persistence/Dispatch.d.ts +2 -13
  55. package/lib/persistence/errors.cjs +3 -3
  56. package/lib/persistence/errors.d.ts +2 -2
  57. package/lib/persistence/types.cjs +1 -1
  58. package/lib/persistence/types.d.ts +2 -0
  59. package/lib/query/Condition.cjs +9 -1
  60. package/lib/query/Condition.d.ts +8 -0
  61. package/lib/query/Paginator.cjs +1 -1
  62. package/lib/query/Paginator.d.ts +2 -2
  63. package/lib/query/Statement.cjs +4 -2
  64. package/lib/query/Statement.d.ts +4 -3
  65. package/lib/query/errors.cjs +5 -5
  66. package/lib/query/errors.d.ts +3 -3
  67. package/lib/ram/RamAdapter.cjs +43 -32
  68. package/lib/ram/RamAdapter.d.ts +8 -14
  69. package/lib/ram/RamContext.cjs +15 -7
  70. package/lib/ram/RamContext.d.ts +14 -6
  71. package/lib/ram/constants.cjs +2 -3
  72. package/lib/ram/constants.d.ts +1 -2
  73. package/lib/ram/types.cjs +1 -1
  74. package/lib/ram/types.d.ts +3 -0
  75. package/lib/repository/Repository.cjs +8 -8
  76. package/lib/repository/Repository.d.ts +8 -7
  77. package/lib/repository/constants.cjs +6 -5
  78. package/lib/repository/constants.d.ts +5 -4
  79. package/lib/repository/decorators.cjs +2 -1
  80. package/lib/repository/errors.cjs +3 -3
  81. package/lib/repository/errors.d.ts +2 -2
  82. package/lib/repository/injectables.cjs +137 -28
  83. package/lib/repository/injectables.d.ts +82 -11
  84. package/lib/repository/utils.cjs +29 -7
  85. package/lib/repository/utils.d.ts +28 -6
  86. package/lib/utils/errors.cjs +8 -8
  87. package/lib/utils/errors.d.ts +5 -5
  88. package/package.json +1 -1
@@ -105,4 +105,4 @@ export function pk(opts = DefaultSequenceOptions) {
105
105
  })
106
106
  .apply();
107
107
  }
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZGVudGl0eS9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBR1YsWUFBWSxFQUNaLFFBQVEsR0FDVCxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFDTCxzQkFBc0IsR0FFdkIsMkNBQXNDO0FBQ3ZDLE9BQU8sRUFDTCxNQUFNLEVBQ04sYUFBYSxFQUNiLFFBQVEsRUFDUixRQUFRLEdBRVQsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQVEsVUFBVSxFQUFFLHNDQUFpQztBQUM1RCxPQUFPLEVBQUUsS0FBSyxFQUFFLGlDQUE0QjtBQUM1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsbUJBQWdCO0FBRy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsaUNBQXNCO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQ0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFVBQVUsQ0FROUIsT0FBbUIsRUFDbkIsSUFBTyxFQUNQLEdBQVksRUFDWixLQUFRO0lBRVIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hELE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxrQkFBa0IsR0FBRyxVQUN6QixNQUFTLEVBQ1QsV0FBbUIsRUFDbkIsS0FBK0I7UUFFL0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFO1lBQ3pDLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsWUFBWSxFQUFFLElBQUk7WUFDbEIsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFFRixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7UUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5RCxJQUFJLFFBQWtCLENBQUM7SUFDdkIsSUFBSSxDQUFDO1FBQ0gsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLGFBQWEsQ0FDckIsa0NBQWtDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQ3BELENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEdBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFNLFVBQVUsRUFBRSxDQUNoQixPQUdJLHNCQUFzQjtJQUUxQixJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFO1FBQ3JELFNBQVMsRUFDUCxJQUFJLENBQUMsSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxXQUFXO1lBQ2hELENBQUMsQ0FBQyxJQUFJO1lBQ04sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksc0JBQXNCLENBQUMsU0FBUztLQUN6RCxDQUFvQixDQUFDO0lBRXRCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLFNBQVMsS0FBSyxDQUFDLE9BQXdCO1FBQ3JDLE9BQU8sU0FBUyxLQUFLLENBQUMsR0FBUSxFQUFFLElBQVM7WUFDdkMsT0FBTyxLQUFLLENBQ1YsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDL0MsUUFBUSxFQUFFLEVBQ1YsUUFBUSxFQUFFLEVBQ1YsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsRUFDMUIsUUFBUSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFDN0IsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQzlCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7U0FDdkIsTUFBTSxDQUFDO1FBQ04sU0FBUyxFQUFFLEtBQUs7UUFDaEIsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDO0tBQ2IsQ0FBQztTQUNELEtBQUssRUFBRSxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERlY29yYXRpb24sXG4gIE1vZGVsLFxuICBwcm9wLFxuICBwcm9wTWV0YWRhdGEsXG4gIHJlcXVpcmVkLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQge1xuICBEZWZhdWx0U2VxdWVuY2VPcHRpb25zLFxuICBTZXF1ZW5jZU9wdGlvbnMsXG59IGZyb20gXCIuLi9pbnRlcmZhY2VzL1NlcXVlbmNlT3B0aW9uc1wiO1xuaW1wb3J0IHtcbiAgREJLZXlzLFxuICBJbnRlcm5hbEVycm9yLFxuICBvbkNyZWF0ZSxcbiAgcmVhZG9ubHksXG4gIFJlcG9zaXRvcnlGbGFncyxcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBSZXBvLCBSZXBvc2l0b3J5IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvUmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgaW5kZXggfSBmcm9tIFwiLi4vbW9kZWwvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgc2VxdWVuY2VOYW1lRm9yTW9kZWwgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgU2VxdWVuY2UgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2UvU2VxdWVuY2VcIjtcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IE9yZGVyRGlyZWN0aW9uIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IGFwcGx5IH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBwcmltYXJ5IGtleSBjcmVhdGlvblxuICogQHN1bW1hcnkgSGFuZGxlcyB0aGUgY3JlYXRpb24gb2YgcHJpbWFyeSBrZXkgdmFsdWVzIGZvciBtb2RlbHMgdXNpbmcgc2VxdWVuY2VzXG4gKiBAdGVtcGxhdGUgTSAtIFR5cGUgdGhhdCBleHRlbmRzIE1vZGVsXG4gKiBAdGVtcGxhdGUgUiAtIFR5cGUgdGhhdCBleHRlbmRzIFJlcG88TSwgRiwgQz5cbiAqIEB0ZW1wbGF0ZSBWIC0gVHlwZSB0aGF0IGV4dGVuZHMgU2VxdWVuY2VPcHRpb25zXG4gKiBAdGVtcGxhdGUgRiAtIFR5cGUgdGhhdCBleHRlbmRzIFJlcG9zaXRvcnlGbGFnc1xuICogQHRlbXBsYXRlIEMgLSBUeXBlIHRoYXQgZXh0ZW5kcyBDb250ZXh0PEY+XG4gKiBAcGFyYW0ge0NvbnRleHQ8Rj59IGNvbnRleHQgLSBUaGUgZXhlY3V0aW9uIGNvbnRleHRcbiAqIEBwYXJhbSB7Vn0gZGF0YSAtIFRoZSBzZXF1ZW5jZSBvcHRpb25zXG4gKiBAcGFyYW0ga2V5IC0gVGhlIHByb3BlcnR5IGtleSB0byBzZXQgYXMgcHJpbWFyeSBrZXlcbiAqIEBwYXJhbSB7TX0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2VcbiAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHByaW1hcnkga2V5IGlzIHNldFxuICogQGZ1bmN0aW9uIHBrT25DcmVhdGVcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eSBEZWNvcmF0b3JzXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IE1vZGVsXG4gKiAgIHBhcnRpY2lwYW50IHBrT25DcmVhdGVcbiAqICAgcGFydGljaXBhbnQgQWRhcHRlclxuICogICBwYXJ0aWNpcGFudCBTZXF1ZW5jZVxuICpcbiAqICAgTW9kZWwtPj5wa09uQ3JlYXRlOiBDYWxsIHdpdGggbW9kZWwgaW5zdGFuY2VcbiAqICAgTm90ZSBvdmVyIHBrT25DcmVhdGU6IENoZWNrIGlmIGtleSBhbHJlYWR5IGV4aXN0c1xuICogICBhbHQgS2V5IGV4aXN0cyBvciBubyB0eXBlIHNwZWNpZmllZFxuICogICAgIHBrT25DcmVhdGUtLT4+TW9kZWw6IFJldHVybiBlYXJseVxuICogICBlbHNlIEtleSBuZWVkcyB0byBiZSBjcmVhdGVkXG4gKiAgICAgcGtPbkNyZWF0ZS0+PnBrT25DcmVhdGU6IEdlbmVyYXRlIHNlcXVlbmNlIG5hbWUgaWYgbm90IHByb3ZpZGVkXG4gKiAgICAgcGtPbkNyZWF0ZS0+PkFkYXB0ZXI6IFJlcXVlc3QgU2VxdWVuY2UoZGF0YSlcbiAqICAgICBBZGFwdGVyLT4+U2VxdWVuY2U6IENyZWF0ZSBzZXF1ZW5jZVxuICogICAgIFNlcXVlbmNlLS0+PnBrT25DcmVhdGU6IFJldHVybiBzZXF1ZW5jZVxuICogICAgIHBrT25DcmVhdGUtPj5TZXF1ZW5jZTogQ2FsbCBuZXh0KClcbiAqICAgICBTZXF1ZW5jZS0tPj5wa09uQ3JlYXRlOiBSZXR1cm4gbmV4dCB2YWx1ZVxuICogICAgIHBrT25DcmVhdGUtPj5Nb2RlbDogU2V0IHByaW1hcnkga2V5IHZhbHVlXG4gKiAgIGVuZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGtPbkNyZWF0ZTxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBSIGV4dGVuZHMgUmVwbzxNLCBGLCBDPixcbiAgViBleHRlbmRzIFNlcXVlbmNlT3B0aW9ucyxcbiAgRiBleHRlbmRzIFJlcG9zaXRvcnlGbGFncyxcbiAgQyBleHRlbmRzIENvbnRleHQ8Rj4sXG4+KFxuICB0aGlzOiBSLFxuICBjb250ZXh0OiBDb250ZXh0PEY+LFxuICBkYXRhOiBWLFxuICBrZXk6IGtleW9mIE0sXG4gIG1vZGVsOiBNXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFkYXRhLnR5cGUgfHwgIWRhdGEuZ2VuZXJhdGVkIHx8IG1vZGVsW2tleV0pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzZXRQcmltYXJ5S2V5VmFsdWUgPSBmdW5jdGlvbiA8TSBleHRlbmRzIE1vZGVsPihcbiAgICB0YXJnZXQ6IE0sXG4gICAgcHJvcGVydHlLZXk6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50XG4gICkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIGlmICghZGF0YS5uYW1lKSBkYXRhLm5hbWUgPSBzZXF1ZW5jZU5hbWVGb3JNb2RlbChtb2RlbCwgXCJwa1wiKTtcbiAgbGV0IHNlcXVlbmNlOiBTZXF1ZW5jZTtcbiAgdHJ5IHtcbiAgICBzZXF1ZW5jZSA9IGF3YWl0IHRoaXMuYWRhcHRlci5TZXF1ZW5jZShkYXRhKTtcbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICBgRmFpbGVkIHRvIGluc3RhbnRpYXRlIFNlcXVlbmNlICR7ZGF0YS5uYW1lfTogJHtlfWBcbiAgICApO1xuICB9XG5cbiAgY29uc3QgbmV4dCA9IGF3YWl0IHNlcXVlbmNlLm5leHQoKTtcbiAgc2V0UHJpbWFyeUtleVZhbHVlKG1vZGVsLCBrZXkgYXMgc3RyaW5nLCBuZXh0KTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUHJpbWFyeSBLZXkgRGVjb3JhdG9yXG4gKiBAc3VtbWFyeSBNYXJrcyBhIHByb3BlcnR5IGFzIHRoZSBtb2RlbCdzIHByaW1hcnkga2V5IHdpdGggYXV0b21hdGljIHNlcXVlbmNlIGdlbmVyYXRpb25cbiAqIFRoaXMgZGVjb3JhdG9yIGNvbWJpbmVzIG11bHRpcGxlIGJlaGF2aW9yczogaXQgbWFya3MgdGhlIHByb3BlcnR5IGFzIHVuaXF1ZSwgcmVxdWlyZWQsXG4gKiBhbmQgZW5zdXJlcyB0aGUgaW5kZXggaXMgY3JlYXRlZCBwcm9wZXJseSBhY2NvcmRpbmcgdG8gdGhlIHByb3ZpZGVkIHNlcXVlbmNlIG9wdGlvbnMuXG4gKiBAcGFyYW0ge09taXQ8U2VxdWVuY2VPcHRpb25zLCBcImN5Y2xlXCIgfCBcInN0YXJ0V2l0aFwiIHwgXCJpbmNyZW1lbnRCeVwiPn0gb3B0cyAtIE9wdGlvbnMgZm9yIHRoZSBzZXF1ZW5jZSBnZW5lcmF0aW9uXG4gKiBAcmV0dXJuIHtQcm9wZXJ0eURlY29yYXRvcn0gQSBwcm9wZXJ0eSBkZWNvcmF0b3IgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBtb2RlbCBwcm9wZXJ0aWVzXG4gKiBAZnVuY3Rpb24gcGtcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eSBEZWNvcmF0b3JzXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgVXNlciBleHRlbmRzIEJhc2VNb2RlbCB7XG4gKiAgIEBwaygpXG4gKiAgIGlkITogc3RyaW5nO1xuICpcbiAqICAgQHJlcXVpcmVkKClcbiAqICAgdXNlcm5hbWUhOiBzdHJpbmc7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBrKFxuICBvcHRzOiBPbWl0PFxuICAgIFNlcXVlbmNlT3B0aW9ucyxcbiAgICBcImN5Y2xlXCIgfCBcInN0YXJ0V2l0aFwiIHwgXCJpbmNyZW1lbnRCeVwiXG4gID4gPSBEZWZhdWx0U2VxdWVuY2VPcHRpb25zXG4pIHtcbiAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe30sIERlZmF1bHRTZXF1ZW5jZU9wdGlvbnMsIG9wdHMsIHtcbiAgICBnZW5lcmF0ZWQ6XG4gICAgICBvcHRzLnR5cGUgJiYgdHlwZW9mIG9wdHMuZ2VuZXJhdGVkID09PSBcInVuZGVmaW5lZFwiXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IG9wdHMuZ2VuZXJhdGVkIHx8IERlZmF1bHRTZXF1ZW5jZU9wdGlvbnMuZ2VuZXJhdGVkLFxuICB9KSBhcyBTZXF1ZW5jZU9wdGlvbnM7XG5cbiAgY29uc3Qga2V5ID0gUmVwb3NpdG9yeS5rZXkoREJLZXlzLklEKTtcbiAgZnVuY3Rpb24gcGtEZWMob3B0aW9uczogU2VxdWVuY2VPcHRpb25zKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHBrRGVjKG9iajogYW55LCBhdHRyOiBhbnkpIHtcbiAgICAgIHJldHVybiBhcHBseShcbiAgICAgICAgaW5kZXgoW09yZGVyRGlyZWN0aW9uLkFTQywgT3JkZXJEaXJlY3Rpb24uRFNDXSksXG4gICAgICAgIHJlcXVpcmVkKCksXG4gICAgICAgIHJlYWRvbmx5KCksXG4gICAgICAgIHByb3BNZXRhZGF0YShrZXksIG9wdGlvbnMpLFxuICAgICAgICBvbkNyZWF0ZShwa09uQ3JlYXRlLCBvcHRpb25zKSxcbiAgICAgICAgcHJvcE1ldGFkYXRhKERCS2V5cy5JRCwgYXR0cilcbiAgICAgICkob2JqLCBhdHRyKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBEZWNvcmF0aW9uLmZvcihrZXkpXG4gICAgLmRlZmluZSh7XG4gICAgICBkZWNvcmF0b3I6IHBrRGVjLFxuICAgICAgYXJnczogW29wdHNdLFxuICAgIH0pXG4gICAgLmFwcGx5KCk7XG59XG4iXX0=
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZGVudGl0eS9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBRVYsWUFBWSxFQUNaLFFBQVEsR0FDVCxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFDTCxzQkFBc0IsR0FFdkIsMkNBQXNDO0FBQ3ZDLE9BQU8sRUFDTCxNQUFNLEVBQ04sYUFBYSxFQUNiLFFBQVEsRUFDUixRQUFRLEdBRVQsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQVEsVUFBVSxFQUFFLHNDQUFpQztBQUM1RCxPQUFPLEVBQUUsS0FBSyxFQUFFLGlDQUE0QjtBQUM1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsbUJBQWdCO0FBRy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsaUNBQXNCO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQ0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFVBQVUsQ0FROUIsT0FBbUIsRUFDbkIsSUFBTyxFQUNQLEdBQVksRUFDWixLQUFRO0lBRVIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hELE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxrQkFBa0IsR0FBRyxVQUN6QixNQUFTLEVBQ1QsV0FBbUIsRUFDbkIsS0FBK0I7UUFFL0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFO1lBQ3pDLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsWUFBWSxFQUFFLElBQUk7WUFDbEIsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFFRixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7UUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5RCxJQUFJLFFBQWtCLENBQUM7SUFDdkIsSUFBSSxDQUFDO1FBQ0gsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLGFBQWEsQ0FDckIsa0NBQWtDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQ3BELENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEdBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFNLFVBQVUsRUFBRSxDQUNoQixPQUdJLHNCQUFzQjtJQUUxQixJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFO1FBQ3JELFNBQVMsRUFDUCxJQUFJLENBQUMsSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxXQUFXO1lBQ2hELENBQUMsQ0FBQyxJQUFJO1lBQ04sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksc0JBQXNCLENBQUMsU0FBUztLQUN6RCxDQUFvQixDQUFDO0lBRXRCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLFNBQVMsS0FBSyxDQUFDLE9BQXdCO1FBQ3JDLE9BQU8sU0FBUyxLQUFLLENBQUMsR0FBUSxFQUFFLElBQVM7WUFDdkMsT0FBTyxLQUFLLENBQ1YsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDL0MsUUFBUSxFQUFFLEVBQ1YsUUFBUSxFQUFFLEVBQ1YsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsRUFDMUIsUUFBUSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFDN0IsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQzlCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7U0FDdkIsTUFBTSxDQUFDO1FBQ04sU0FBUyxFQUFFLEtBQUs7UUFDaEIsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDO0tBQ2IsQ0FBQztTQUNELEtBQUssRUFBRSxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERlY29yYXRpb24sXG4gIE1vZGVsLFxuICBwcm9wTWV0YWRhdGEsXG4gIHJlcXVpcmVkLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQge1xuICBEZWZhdWx0U2VxdWVuY2VPcHRpb25zLFxuICBTZXF1ZW5jZU9wdGlvbnMsXG59IGZyb20gXCIuLi9pbnRlcmZhY2VzL1NlcXVlbmNlT3B0aW9uc1wiO1xuaW1wb3J0IHtcbiAgREJLZXlzLFxuICBJbnRlcm5hbEVycm9yLFxuICBvbkNyZWF0ZSxcbiAgcmVhZG9ubHksXG4gIFJlcG9zaXRvcnlGbGFncyxcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBSZXBvLCBSZXBvc2l0b3J5IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvUmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgaW5kZXggfSBmcm9tIFwiLi4vbW9kZWwvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgc2VxdWVuY2VOYW1lRm9yTW9kZWwgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgU2VxdWVuY2UgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2UvU2VxdWVuY2VcIjtcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IE9yZGVyRGlyZWN0aW9uIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IGFwcGx5IH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBwcmltYXJ5IGtleSBjcmVhdGlvblxuICogQHN1bW1hcnkgSGFuZGxlcyB0aGUgY3JlYXRpb24gb2YgcHJpbWFyeSBrZXkgdmFsdWVzIGZvciBtb2RlbHMgdXNpbmcgc2VxdWVuY2VzXG4gKiBAdGVtcGxhdGUgTSAtIFR5cGUgdGhhdCBleHRlbmRzIE1vZGVsXG4gKiBAdGVtcGxhdGUgUiAtIFR5cGUgdGhhdCBleHRlbmRzIFJlcG88TSwgRiwgQz5cbiAqIEB0ZW1wbGF0ZSBWIC0gVHlwZSB0aGF0IGV4dGVuZHMgU2VxdWVuY2VPcHRpb25zXG4gKiBAdGVtcGxhdGUgRiAtIFR5cGUgdGhhdCBleHRlbmRzIFJlcG9zaXRvcnlGbGFnc1xuICogQHRlbXBsYXRlIEMgLSBUeXBlIHRoYXQgZXh0ZW5kcyBDb250ZXh0PEY+XG4gKiBAcGFyYW0ge0NvbnRleHQ8Rj59IGNvbnRleHQgLSBUaGUgZXhlY3V0aW9uIGNvbnRleHRcbiAqIEBwYXJhbSB7Vn0gZGF0YSAtIFRoZSBzZXF1ZW5jZSBvcHRpb25zXG4gKiBAcGFyYW0ga2V5IC0gVGhlIHByb3BlcnR5IGtleSB0byBzZXQgYXMgcHJpbWFyeSBrZXlcbiAqIEBwYXJhbSB7TX0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2VcbiAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHByaW1hcnkga2V5IGlzIHNldFxuICogQGZ1bmN0aW9uIHBrT25DcmVhdGVcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eSBEZWNvcmF0b3JzXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IE1vZGVsXG4gKiAgIHBhcnRpY2lwYW50IHBrT25DcmVhdGVcbiAqICAgcGFydGljaXBhbnQgQWRhcHRlclxuICogICBwYXJ0aWNpcGFudCBTZXF1ZW5jZVxuICpcbiAqICAgTW9kZWwtPj5wa09uQ3JlYXRlOiBDYWxsIHdpdGggbW9kZWwgaW5zdGFuY2VcbiAqICAgTm90ZSBvdmVyIHBrT25DcmVhdGU6IENoZWNrIGlmIGtleSBhbHJlYWR5IGV4aXN0c1xuICogICBhbHQgS2V5IGV4aXN0cyBvciBubyB0eXBlIHNwZWNpZmllZFxuICogICAgIHBrT25DcmVhdGUtLT4+TW9kZWw6IFJldHVybiBlYXJseVxuICogICBlbHNlIEtleSBuZWVkcyB0byBiZSBjcmVhdGVkXG4gKiAgICAgcGtPbkNyZWF0ZS0+PnBrT25DcmVhdGU6IEdlbmVyYXRlIHNlcXVlbmNlIG5hbWUgaWYgbm90IHByb3ZpZGVkXG4gKiAgICAgcGtPbkNyZWF0ZS0+PkFkYXB0ZXI6IFJlcXVlc3QgU2VxdWVuY2UoZGF0YSlcbiAqICAgICBBZGFwdGVyLT4+U2VxdWVuY2U6IENyZWF0ZSBzZXF1ZW5jZVxuICogICAgIFNlcXVlbmNlLS0+PnBrT25DcmVhdGU6IFJldHVybiBzZXF1ZW5jZVxuICogICAgIHBrT25DcmVhdGUtPj5TZXF1ZW5jZTogQ2FsbCBuZXh0KClcbiAqICAgICBTZXF1ZW5jZS0tPj5wa09uQ3JlYXRlOiBSZXR1cm4gbmV4dCB2YWx1ZVxuICogICAgIHBrT25DcmVhdGUtPj5Nb2RlbDogU2V0IHByaW1hcnkga2V5IHZhbHVlXG4gKiAgIGVuZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGtPbkNyZWF0ZTxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBSIGV4dGVuZHMgUmVwbzxNLCBGLCBDPixcbiAgViBleHRlbmRzIFNlcXVlbmNlT3B0aW9ucyxcbiAgRiBleHRlbmRzIFJlcG9zaXRvcnlGbGFncyxcbiAgQyBleHRlbmRzIENvbnRleHQ8Rj4sXG4+KFxuICB0aGlzOiBSLFxuICBjb250ZXh0OiBDb250ZXh0PEY+LFxuICBkYXRhOiBWLFxuICBrZXk6IGtleW9mIE0sXG4gIG1vZGVsOiBNXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFkYXRhLnR5cGUgfHwgIWRhdGEuZ2VuZXJhdGVkIHx8IG1vZGVsW2tleV0pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzZXRQcmltYXJ5S2V5VmFsdWUgPSBmdW5jdGlvbiA8TSBleHRlbmRzIE1vZGVsPihcbiAgICB0YXJnZXQ6IE0sXG4gICAgcHJvcGVydHlLZXk6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50XG4gICkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIGlmICghZGF0YS5uYW1lKSBkYXRhLm5hbWUgPSBzZXF1ZW5jZU5hbWVGb3JNb2RlbChtb2RlbCwgXCJwa1wiKTtcbiAgbGV0IHNlcXVlbmNlOiBTZXF1ZW5jZTtcbiAgdHJ5IHtcbiAgICBzZXF1ZW5jZSA9IGF3YWl0IHRoaXMuYWRhcHRlci5TZXF1ZW5jZShkYXRhKTtcbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICBgRmFpbGVkIHRvIGluc3RhbnRpYXRlIFNlcXVlbmNlICR7ZGF0YS5uYW1lfTogJHtlfWBcbiAgICApO1xuICB9XG5cbiAgY29uc3QgbmV4dCA9IGF3YWl0IHNlcXVlbmNlLm5leHQoKTtcbiAgc2V0UHJpbWFyeUtleVZhbHVlKG1vZGVsLCBrZXkgYXMgc3RyaW5nLCBuZXh0KTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUHJpbWFyeSBLZXkgRGVjb3JhdG9yXG4gKiBAc3VtbWFyeSBNYXJrcyBhIHByb3BlcnR5IGFzIHRoZSBtb2RlbCdzIHByaW1hcnkga2V5IHdpdGggYXV0b21hdGljIHNlcXVlbmNlIGdlbmVyYXRpb25cbiAqIFRoaXMgZGVjb3JhdG9yIGNvbWJpbmVzIG11bHRpcGxlIGJlaGF2aW9yczogaXQgbWFya3MgdGhlIHByb3BlcnR5IGFzIHVuaXF1ZSwgcmVxdWlyZWQsXG4gKiBhbmQgZW5zdXJlcyB0aGUgaW5kZXggaXMgY3JlYXRlZCBwcm9wZXJseSBhY2NvcmRpbmcgdG8gdGhlIHByb3ZpZGVkIHNlcXVlbmNlIG9wdGlvbnMuXG4gKiBAcGFyYW0ge09taXQ8U2VxdWVuY2VPcHRpb25zLCBcImN5Y2xlXCIgfCBcInN0YXJ0V2l0aFwiIHwgXCJpbmNyZW1lbnRCeVwiPn0gb3B0cyAtIE9wdGlvbnMgZm9yIHRoZSBzZXF1ZW5jZSBnZW5lcmF0aW9uXG4gKiBAcmV0dXJuIHtQcm9wZXJ0eURlY29yYXRvcn0gQSBwcm9wZXJ0eSBkZWNvcmF0b3IgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBtb2RlbCBwcm9wZXJ0aWVzXG4gKiBAZnVuY3Rpb24gcGtcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eSBEZWNvcmF0b3JzXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgVXNlciBleHRlbmRzIEJhc2VNb2RlbCB7XG4gKiAgIEBwaygpXG4gKiAgIGlkITogc3RyaW5nO1xuICpcbiAqICAgQHJlcXVpcmVkKClcbiAqICAgdXNlcm5hbWUhOiBzdHJpbmc7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBrKFxuICBvcHRzOiBPbWl0PFxuICAgIFNlcXVlbmNlT3B0aW9ucyxcbiAgICBcImN5Y2xlXCIgfCBcInN0YXJ0V2l0aFwiIHwgXCJpbmNyZW1lbnRCeVwiXG4gID4gPSBEZWZhdWx0U2VxdWVuY2VPcHRpb25zXG4pIHtcbiAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe30sIERlZmF1bHRTZXF1ZW5jZU9wdGlvbnMsIG9wdHMsIHtcbiAgICBnZW5lcmF0ZWQ6XG4gICAgICBvcHRzLnR5cGUgJiYgdHlwZW9mIG9wdHMuZ2VuZXJhdGVkID09PSBcInVuZGVmaW5lZFwiXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IG9wdHMuZ2VuZXJhdGVkIHx8IERlZmF1bHRTZXF1ZW5jZU9wdGlvbnMuZ2VuZXJhdGVkLFxuICB9KSBhcyBTZXF1ZW5jZU9wdGlvbnM7XG5cbiAgY29uc3Qga2V5ID0gUmVwb3NpdG9yeS5rZXkoREJLZXlzLklEKTtcbiAgZnVuY3Rpb24gcGtEZWMob3B0aW9uczogU2VxdWVuY2VPcHRpb25zKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHBrRGVjKG9iajogYW55LCBhdHRyOiBhbnkpIHtcbiAgICAgIHJldHVybiBhcHBseShcbiAgICAgICAgaW5kZXgoW09yZGVyRGlyZWN0aW9uLkFTQywgT3JkZXJEaXJlY3Rpb24uRFNDXSksXG4gICAgICAgIHJlcXVpcmVkKCksXG4gICAgICAgIHJlYWRvbmx5KCksXG4gICAgICAgIHByb3BNZXRhZGF0YShrZXksIG9wdGlvbnMpLFxuICAgICAgICBvbkNyZWF0ZShwa09uQ3JlYXRlLCBvcHRpb25zKSxcbiAgICAgICAgcHJvcE1ldGFkYXRhKERCS2V5cy5JRCwgYXR0cilcbiAgICAgICkob2JqLCBhdHRyKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBEZWNvcmF0aW9uLmZvcihrZXkpXG4gICAgLmRlZmluZSh7XG4gICAgICBkZWNvcmF0b3I6IHBrRGVjLFxuICAgICAgYXJnczogW29wdHNdLFxuICAgIH0pXG4gICAgLmFwcGx5KCk7XG59XG4iXX0=
@@ -18,4 +18,4 @@ export * from "./persistence";
18
18
  * @const VERSION
19
19
  * @memberOf module:core
20
20
  */
21
- export declare const VERSION = "0.5.21";
21
+ export declare const VERSION = "0.5.23";
package/lib/esm/index.js CHANGED
@@ -5,7 +5,7 @@
5
5
  * model definitions, repository patterns, persistence layer, query building, and utility functions.
6
6
  * It exports functionality from various submodules and sets up the injectable registry for repository decorators.
7
7
  */
8
- import { InjectablesRegistry } from "./repository/index.js";
8
+ import { InjectablesRegistry } from "./repository/injectables.js";
9
9
  import { Injectables } from "@decaf-ts/injectable-decorators";
10
10
  // overrides the previous Injectables registry to enable the @repository decorator
11
11
  Injectables.setRegistry(new InjectablesRegistry());
@@ -23,5 +23,5 @@ export * from "./persistence/index.js";
23
23
  * @const VERSION
24
24
  * @memberOf module:core
25
25
  */
26
- export const VERSION = "0.5.21";
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLDhCQUFxQjtBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsa0ZBQWtGO0FBQ2xGLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7QUFFbkQsb0NBQTJCO0FBQzNCLHNDQUE2QjtBQUM3QixpQ0FBd0I7QUFDeEIsaUNBQXdCO0FBQ3hCLHNDQUE2QjtBQUM3QixpQ0FBd0I7QUFDeEIseUJBQXlCO0FBQ3pCLHVDQUE4QjtBQUU5Qjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgY29yZVxuICogQGRlc2NyaXB0aW9uIENvcmUgbW9kdWxlIGZvciB0aGUgRGVjYWYgVHlwZVNjcmlwdCBmcmFtZXdvcmtcbiAqIEBzdW1tYXJ5IFRoaXMgbW9kdWxlIHByb3ZpZGVzIHRoZSBmb3VuZGF0aW9uYWwgY29tcG9uZW50cyBvZiB0aGUgRGVjYWYgZnJhbWV3b3JrLCBpbmNsdWRpbmcgaWRlbnRpdHkgbWFuYWdlbWVudCwgXG4gKiBtb2RlbCBkZWZpbml0aW9ucywgcmVwb3NpdG9yeSBwYXR0ZXJucywgcGVyc2lzdGVuY2UgbGF5ZXIsIHF1ZXJ5IGJ1aWxkaW5nLCBhbmQgdXRpbGl0eSBmdW5jdGlvbnMuXG4gKiBJdCBleHBvcnRzIGZ1bmN0aW9uYWxpdHkgZnJvbSB2YXJpb3VzIHN1Ym1vZHVsZXMgYW5kIHNldHMgdXAgdGhlIGluamVjdGFibGUgcmVnaXN0cnkgZm9yIHJlcG9zaXRvcnkgZGVjb3JhdG9ycy5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlc1JlZ2lzdHJ5IH0gZnJvbSBcIi4vcmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgSW5qZWN0YWJsZXMgfSBmcm9tIFwiQGRlY2FmLXRzL2luamVjdGFibGUtZGVjb3JhdG9yc1wiO1xuXG4vLyBvdmVycmlkZXMgdGhlIHByZXZpb3VzIEluamVjdGFibGVzIHJlZ2lzdHJ5IHRvIGVuYWJsZSB0aGUgQHJlcG9zaXRvcnkgZGVjb3JhdG9yXG5JbmplY3RhYmxlcy5zZXRSZWdpc3RyeShuZXcgSW5qZWN0YWJsZXNSZWdpc3RyeSgpKTtcblxuZXhwb3J0ICogZnJvbSBcIi4vaWRlbnRpdHlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ludGVyZmFjZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21vZGVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9xdWVyeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVwb3NpdG9yeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHNcIjtcbi8vbGVmdCB0byBsYXN0IG9uIHB1cnBvc2VcbmV4cG9ydCAqIGZyb20gXCIuL3BlcnNpc3RlbmNlXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFN0b3JlcyB0aGUgY3VycmVudCBwYWNrYWdlIHZlcnNpb25cbiAqIEBzdW1tYXJ5IEEgY29uc3RhbnQgcmVwcmVzZW50aW5nIHRoZSB2ZXJzaW9uIG9mIHRoZSBjb3JlIHBhY2thZ2VcbiAqIEBjb25zdCBWRVJTSU9OXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIiMjVkVSU0lPTiMjXCI7XG4iXX0=
26
+ export const VERSION = "0.5.23";
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9DQUFpQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsa0ZBQWtGO0FBQ2xGLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7QUFFbkQsb0NBQTJCO0FBQzNCLHNDQUE2QjtBQUM3QixpQ0FBd0I7QUFDeEIsaUNBQXdCO0FBQ3hCLHNDQUE2QjtBQUM3QixpQ0FBd0I7QUFDeEIseUJBQXlCO0FBQ3pCLHVDQUE4QjtBQUU5Qjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgY29yZVxuICogQGRlc2NyaXB0aW9uIENvcmUgbW9kdWxlIGZvciB0aGUgRGVjYWYgVHlwZVNjcmlwdCBmcmFtZXdvcmtcbiAqIEBzdW1tYXJ5IFRoaXMgbW9kdWxlIHByb3ZpZGVzIHRoZSBmb3VuZGF0aW9uYWwgY29tcG9uZW50cyBvZiB0aGUgRGVjYWYgZnJhbWV3b3JrLCBpbmNsdWRpbmcgaWRlbnRpdHkgbWFuYWdlbWVudCxcbiAqIG1vZGVsIGRlZmluaXRpb25zLCByZXBvc2l0b3J5IHBhdHRlcm5zLCBwZXJzaXN0ZW5jZSBsYXllciwgcXVlcnkgYnVpbGRpbmcsIGFuZCB1dGlsaXR5IGZ1bmN0aW9ucy5cbiAqIEl0IGV4cG9ydHMgZnVuY3Rpb25hbGl0eSBmcm9tIHZhcmlvdXMgc3VibW9kdWxlcyBhbmQgc2V0cyB1cCB0aGUgaW5qZWN0YWJsZSByZWdpc3RyeSBmb3IgcmVwb3NpdG9yeSBkZWNvcmF0b3JzLlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGVzUmVnaXN0cnkgfSBmcm9tIFwiLi9yZXBvc2l0b3J5L2luamVjdGFibGVzXCI7XG5pbXBvcnQgeyBJbmplY3RhYmxlcyB9IGZyb20gXCJAZGVjYWYtdHMvaW5qZWN0YWJsZS1kZWNvcmF0b3JzXCI7XG5cbi8vIG92ZXJyaWRlcyB0aGUgcHJldmlvdXMgSW5qZWN0YWJsZXMgcmVnaXN0cnkgdG8gZW5hYmxlIHRoZSBAcmVwb3NpdG9yeSBkZWNvcmF0b3JcbkluamVjdGFibGVzLnNldFJlZ2lzdHJ5KG5ldyBJbmplY3RhYmxlc1JlZ2lzdHJ5KCkpO1xuXG5leHBvcnQgKiBmcm9tIFwiLi9pZGVudGl0eVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3F1ZXJ5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZXBvc2l0b3J5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsc1wiO1xuLy9sZWZ0IHRvIGxhc3Qgb24gcHVycG9zZVxuZXhwb3J0ICogZnJvbSBcIi4vcGVyc2lzdGVuY2VcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gU3RvcmVzIHRoZSBjdXJyZW50IHBhY2thZ2UgdmVyc2lvblxuICogQHN1bW1hcnkgQSBjb25zdGFudCByZXByZXNlbnRpbmcgdGhlIHZlcnNpb24gb2YgdGhlIGNvcmUgcGFja2FnZVxuICogQGNvbnN0IFZFUlNJT05cbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiIyNWRVJTSU9OIyNcIjtcbiJdfQ==
@@ -47,15 +47,6 @@ export type JoinTableMultipleColumnsOptions = {
47
47
  */
48
48
  inverseJoinColumns?: JoinColumnOptions[];
49
49
  };
50
- /**
51
- * @description Metadata for model relationships
52
- * @summary Type definition for storing metadata about relationships between models
53
- * @property {string} class - The name of the related model class
54
- * @property {CascadeMetadata} cascade - Configuration for cascade operations (create, update, delete)
55
- * @property {boolean} populate - Whether to automatically populate the relationship when retrieving the model
56
- * @typedef {Object} RelationsMetadata
57
- * @memberOf module:model
58
- */
59
50
  export type RelationsMetadata = {
60
51
  class: string | (() => Constructor<any>);
61
52
  cascade: CascadeMetadata;
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWwvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhc2NhZGVNZXRhZGF0YSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcblxuLyoqXG4gKiBEZXNjcmliZXMgam9pbiBjb2x1bW4gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgSm9pbkNvbHVtbk9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBjb2x1bW4uXG4gICAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgY29sdW1uIGluIHRoZSBlbnRpdHkgdG8gd2hpY2ggdGhpcyBjb2x1bW4gaXMgcmVmZXJlbmNlZC5cbiAgICovXG4gIHJlZmVyZW5jZWRDb2x1bW5OYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludC5cbiAgICovXG4gIGZvcmVpZ25LZXlDb25zdHJhaW50TmFtZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEpvaW5UYWJsZU9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSB0YWJsZSB0aGF0IHdpbGwgYmUgY3JlYXRlZCB0byBzdG9yZSB2YWx1ZXMgb2YgdGhlIGJvdGggdGFibGVzIChqb2luIHRhYmxlKS5cbiAgICogQnkgZGVmYXVsdCBpcyBhdXRvIGdlbmVyYXRlZC5cbiAgICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGaXJzdCBjb2x1bW4gb2YgdGhlIGpvaW4gdGFibGUuXG4gICAqL1xuICBqb2luQ29sdW1uPzogSm9pbkNvbHVtbk9wdGlvbnM7XG4gIC8qKlxuICAgKiBTZWNvbmQgKGludmVyc2UpIGNvbHVtbiBvZiB0aGUgam9pbiB0YWJsZS5cbiAgICovXG4gIGludmVyc2VKb2luQ29sdW1uPzogSm9pbkNvbHVtbk9wdGlvbnM7XG59O1xuXG5leHBvcnQgdHlwZSBKb2luVGFibGVNdWx0aXBsZUNvbHVtbnNPcHRpb25zID0ge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgdGFibGUgdGhhdCB3aWxsIGJlIGNyZWF0ZWQgdG8gc3RvcmUgdmFsdWVzIG9mIHRoZSBib3RoIHRhYmxlcyAoam9pbiB0YWJsZSkuXG4gICAqIEJ5IGRlZmF1bHQgaXMgYXV0byBnZW5lcmF0ZWQuXG4gICAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogRmlyc3QgY29sdW1uIG9mIHRoZSBqb2luIHRhYmxlLlxuICAgKi9cbiAgam9pbkNvbHVtbnM/OiBKb2luQ29sdW1uT3B0aW9uc1tdO1xuICAvKipcbiAgICogU2Vjb25kIChpbnZlcnNlKSBjb2x1bW4gb2YgdGhlIGpvaW4gdGFibGUuXG4gICAqL1xuICBpbnZlcnNlSm9pbkNvbHVtbnM/OiBKb2luQ29sdW1uT3B0aW9uc1tdO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWV0YWRhdGEgZm9yIG1vZGVsIHJlbGF0aW9uc2hpcHNcbiAqIEBzdW1tYXJ5IFR5cGUgZGVmaW5pdGlvbiBmb3Igc3RvcmluZyBtZXRhZGF0YSBhYm91dCByZWxhdGlvbnNoaXBzIGJldHdlZW4gbW9kZWxzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY2xhc3MgLSBUaGUgbmFtZSBvZiB0aGUgcmVsYXRlZCBtb2RlbCBjbGFzc1xuICogQHByb3BlcnR5IHtDYXNjYWRlTWV0YWRhdGF9IGNhc2NhZGUgLSBDb25maWd1cmF0aW9uIGZvciBjYXNjYWRlIG9wZXJhdGlvbnMgKGNyZWF0ZSwgdXBkYXRlLCBkZWxldGUpXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHBvcHVsYXRlIC0gV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IHBvcHVsYXRlIHRoZSByZWxhdGlvbnNoaXAgd2hlbiByZXRyaWV2aW5nIHRoZSBtb2RlbFxuICogQHR5cGVkZWYge09iamVjdH0gUmVsYXRpb25zTWV0YWRhdGFcbiAqIEBtZW1iZXJPZiBtb2R1bGU6bW9kZWxcbiAqL1xuZXhwb3J0IHR5cGUgUmVsYXRpb25zTWV0YWRhdGEgPSB7XG4gIGNsYXNzOiBzdHJpbmcgfCAoKCkgPT4gQ29uc3RydWN0b3I8YW55Pik7XG4gIGNhc2NhZGU6IENhc2NhZGVNZXRhZGF0YTtcbiAgcG9wdWxhdGU6IGJvb2xlYW47XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGpvaW5UYWJsZT86IEpvaW5UYWJsZU9wdGlvbnM7XG59O1xuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWwvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhc2NhZGVNZXRhZGF0YSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcblxuLyoqXG4gKiBEZXNjcmliZXMgam9pbiBjb2x1bW4gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgSm9pbkNvbHVtbk9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBjb2x1bW4uXG4gICAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgY29sdW1uIGluIHRoZSBlbnRpdHkgdG8gd2hpY2ggdGhpcyBjb2x1bW4gaXMgcmVmZXJlbmNlZC5cbiAgICovXG4gIHJlZmVyZW5jZWRDb2x1bW5OYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludC5cbiAgICovXG4gIGZvcmVpZ25LZXlDb25zdHJhaW50TmFtZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEpvaW5UYWJsZU9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSB0YWJsZSB0aGF0IHdpbGwgYmUgY3JlYXRlZCB0byBzdG9yZSB2YWx1ZXMgb2YgdGhlIGJvdGggdGFibGVzIChqb2luIHRhYmxlKS5cbiAgICogQnkgZGVmYXVsdCBpcyBhdXRvIGdlbmVyYXRlZC5cbiAgICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGaXJzdCBjb2x1bW4gb2YgdGhlIGpvaW4gdGFibGUuXG4gICAqL1xuICBqb2luQ29sdW1uPzogSm9pbkNvbHVtbk9wdGlvbnM7XG4gIC8qKlxuICAgKiBTZWNvbmQgKGludmVyc2UpIGNvbHVtbiBvZiB0aGUgam9pbiB0YWJsZS5cbiAgICovXG4gIGludmVyc2VKb2luQ29sdW1uPzogSm9pbkNvbHVtbk9wdGlvbnM7XG59O1xuXG5leHBvcnQgdHlwZSBKb2luVGFibGVNdWx0aXBsZUNvbHVtbnNPcHRpb25zID0ge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgdGFibGUgdGhhdCB3aWxsIGJlIGNyZWF0ZWQgdG8gc3RvcmUgdmFsdWVzIG9mIHRoZSBib3RoIHRhYmxlcyAoam9pbiB0YWJsZSkuXG4gICAqIEJ5IGRlZmF1bHQgaXMgYXV0byBnZW5lcmF0ZWQuXG4gICAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogRmlyc3QgY29sdW1uIG9mIHRoZSBqb2luIHRhYmxlLlxuICAgKi9cbiAgam9pbkNvbHVtbnM/OiBKb2luQ29sdW1uT3B0aW9uc1tdO1xuICAvKipcbiAgICogU2Vjb25kIChpbnZlcnNlKSBjb2x1bW4gb2YgdGhlIGpvaW4gdGFibGUuXG4gICAqL1xuICBpbnZlcnNlSm9pbkNvbHVtbnM/OiBKb2luQ29sdW1uT3B0aW9uc1tdO1xufTtcblxuZXhwb3J0IHR5cGUgUmVsYXRpb25zTWV0YWRhdGEgPSB7XG4gIGNsYXNzOiBzdHJpbmcgfCAoKCkgPT4gQ29uc3RydWN0b3I8YW55Pik7XG4gIGNhc2NhZGU6IENhc2NhZGVNZXRhZGF0YTtcbiAgcG9wdWxhdGU6IGJvb2xlYW47XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGpvaW5UYWJsZT86IEpvaW5UYWJsZU9wdGlvbnM7XG59O1xuIl19
@@ -8,29 +8,29 @@ import { Repository } from "../repository/Repository";
8
8
  import { Sequence } from "./Sequence";
9
9
  import { ErrorParser } from "../interfaces";
10
10
  import { Statement } from "../query/Statement";
11
- import { Logger } from "@decaf-ts/logging";
12
11
  import { Dispatch } from "./Dispatch";
13
12
  import { type EventIds, type ObserverFilter } from "./types";
14
13
  import { ObserverHandler } from "./ObserverHandler";
14
+ import { LoggedClass } from "@decaf-ts/logging";
15
15
  /**
16
- * @description Abstract base class for database adapters
16
+ * @description Abstract Facade class for persistence adapters
17
17
  * @summary Provides the foundation for all database adapters in the persistence layer. This class
18
18
  * implements several interfaces to provide a consistent API for database operations, observer
19
19
  * pattern support, and error handling. It manages adapter registration, CRUD operations, and
20
20
  * observer notifications.
21
- * @template Y - The underlying database driver type
22
- * @template Q - The query object type used by the adapter
23
- * @template F - The repository flags type
24
- * @template C - The context type
25
- * @param {Y} _native - The underlying database driver instance
21
+ * @template CONFIG - The underlying persistence driver config
22
+ * @template QUERY - The query object type used by the adapter
23
+ * @template FLAGS - The repository flags type
24
+ * @template CONTEXT - The context type
25
+ * @param {CONFIG} _config - The underlying persistence driver config
26
26
  * @param {string} flavour - The identifier for this adapter type
27
27
  * @param {string} [_alias] - Optional alternative name for this adapter
28
28
  * @class Adapter
29
29
  * @example
30
30
  * ```typescript
31
31
  * // Implementing a concrete adapter
32
- * class PostgresAdapter extends Adapter<pg.Client, pg.Query, PostgresFlags, PostgresContext> {
33
- * constructor(client: pg.Client) {
32
+ * class PostgresAdapter extends Adapter<pg.PoolConfig, pg.Query, PostgresFlags, PostgresContext> {
33
+ * constructor(client: pg.PoolConfig) {
34
34
  * super(client, 'postgres');
35
35
  * }
36
36
  *
@@ -104,27 +104,22 @@ import { ObserverHandler } from "./ObserverHandler";
104
104
  * Adapter --|> Observer
105
105
  * Adapter --|> ErrorParser
106
106
  */
107
- export declare abstract class Adapter<Y, Q, F extends RepositoryFlags, C extends Context<F>> implements RawExecutor<Q>, Contextual<F, C>, Observable, Observer, ErrorParser {
108
- private readonly _native;
107
+ export declare abstract class Adapter<CONF, CONN, QUERY, FLAGS extends RepositoryFlags = RepositoryFlags, CONTEXT extends Context<FLAGS> = Context<FLAGS>> extends LoggedClass implements RawExecutor<QUERY>, Contextual<FLAGS, CONTEXT>, Observable, Observer, ErrorParser {
108
+ private readonly _config;
109
109
  readonly flavour: string;
110
110
  private readonly _alias?;
111
111
  private static _currentFlavour;
112
112
  private static _cache;
113
- private logger;
114
- protected dispatch?: Dispatch<Y>;
113
+ protected dispatch?: Dispatch<CONF>;
115
114
  protected readonly observerHandler?: ObserverHandler;
115
+ protected _client?: CONN;
116
116
  /**
117
- * @description Logger accessor
118
- * @summary Gets or initializes the logger for this adapter instance
119
- * @return {Logger} The logger instance
117
+ * @description Gets the native persistence config
118
+ * @summary Provides access to the underlying persistence driver config
119
+ * @template CONF
120
+ * @return {CONF} The native persistence driver config
120
121
  */
121
- protected get log(): Logger;
122
- /**
123
- * @description Gets the native database driver
124
- * @summary Provides access to the underlying database driver instance
125
- * @return {Y} The native database driver
126
- */
127
- get native(): Y;
122
+ get config(): CONF;
128
123
  /**
129
124
  * @description Gets the adapter's alias or flavor name
130
125
  * @summary Returns the alias if set, otherwise returns the flavor name
@@ -135,27 +130,35 @@ export declare abstract class Adapter<Y, Q, F extends RepositoryFlags, C extends
135
130
  * @description Gets the repository constructor for this adapter
136
131
  * @summary Returns the constructor for creating repositories that work with this adapter
137
132
  * @template M - The model type
138
- * @return {Constructor<Repository<M, Q, Adapter<Y, Q, F, C>, F, C>>} The repository constructor
133
+ * @return {Constructor<Repository<M, QUERY, Adapter<CONF, CONN, QUERY, FLAGS, CONTEXT>, FLAGS, CONTEXT>>} The repository constructor
134
+ */
135
+ repository<M extends Model<boolean>>(): Constructor<Repository<M, QUERY, Adapter<CONF, CONN, QUERY, FLAGS, CONTEXT>, FLAGS, CONTEXT>>;
136
+ protected shutdownProxies(k?: string): Promise<void>;
137
+ /**
138
+ * @description Shuts down the adapter
139
+ * @summary Performs any necessary cleanup tasks, such as closing connections
140
+ * When overriding this method, ensure to call the base method first
141
+ * @return {Promise<void>} A promise that resolves when shutdown is complete
139
142
  */
140
- repository<M extends Model<true | false>>(): Constructor<Repository<M, Q, Adapter<Y, Q, F, C>, F, C>>;
143
+ shutdown(): Promise<void>;
141
144
  /**
142
145
  * @description Creates a new adapter instance
143
146
  * @summary Initializes the adapter with the native driver and registers it in the adapter cache
144
147
  */
145
- protected constructor(_native: Y, flavour: string, _alias?: string | undefined);
148
+ protected constructor(_config: CONF, flavour: string, _alias?: string | undefined);
146
149
  /**
147
150
  * @description Creates a new statement builder for a model
148
151
  * @summary Returns a statement builder that can be used to construct queries for a specific model
149
152
  * @template M - The model type
150
153
  * @return {Statement} A statement builder for the model
151
154
  */
152
- abstract Statement<M extends Model>(): Statement<Q, M, any>;
155
+ abstract Statement<M extends Model>(): Statement<QUERY, M, any>;
153
156
  /**
154
157
  * @description Creates a new dispatch instance
155
158
  * @summary Factory method that creates a dispatch instance for this adapter
156
159
  * @return {Dispatch<Y>} A new dispatch instance
157
160
  */
158
- protected Dispatch(): Dispatch<Y>;
161
+ protected Dispatch(): Dispatch<CONF>;
159
162
  /**
160
163
  * @description Creates a new observer handler
161
164
  * @summary Factory method that creates an observer handler for this adapter
@@ -182,7 +185,7 @@ export declare abstract class Adapter<Y, Q, F extends RepositoryFlags, C extends
182
185
  * @param {...any[]} args - Initialization arguments
183
186
  * @return {Promise<void>} A promise that resolves when initialization is complete
184
187
  */
185
- abstract initialize(...args: any[]): Promise<void>;
188
+ initialize(...args: any[]): Promise<void>;
186
189
  /**
187
190
  * @description Creates a sequence generator
188
191
  * @summary Factory method that creates a sequence generator for generating sequential values
@@ -201,17 +204,17 @@ export declare abstract class Adapter<Y, Q, F extends RepositoryFlags, C extends
201
204
  * @param {...any[]} args - Additional arguments
202
205
  * @return {Promise<F>} The complete set of flags
203
206
  */
204
- protected flags<M extends Model>(operation: OperationKeys, model: Constructor<M>, flags: Partial<F>, ...args: any[]): Promise<F>;
207
+ protected flags<M extends Model>(operation: OperationKeys, model: Constructor<M>, flags: Partial<FLAGS>, ...args: any[]): Promise<FLAGS>;
205
208
  /**
206
209
  * @description The context constructor for this adapter
207
210
  * @summary Reference to the context class constructor used by this adapter
208
211
  */
209
212
  protected Context: {
210
- new (): Context<F>;
213
+ new (): Context<FLAGS>;
211
214
  factory: import("@decaf-ts/db-decorators").ContextFactory<any>;
212
- childFrom<F_1 extends RepositoryFlags, C_1 extends Context<F_1>>(context: C_1, overrides?: Partial<F_1>): C_1;
213
- from<M extends Model, F_1 extends RepositoryFlags, C_1 extends Context<F_1>>(operation: OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE, overrides: Partial<F_1>, model: Constructor<M>, ...args: any[]): Promise<C_1>;
214
- args<M extends Model<any>, C_1 extends Context<F_1>, F_1 extends RepositoryFlags>(operation: OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE, model: Constructor<M>, args: any[], contextual?: Contextual<F_1>, overrides?: Partial<F_1>): Promise<import("@decaf-ts/db-decorators").ContextArgs<F_1, C_1>>;
215
+ childFrom<F extends RepositoryFlags, C extends Context<F>>(context: C, overrides?: Partial<F>): C;
216
+ from<M extends Model, F extends RepositoryFlags, C extends Context<F>>(operation: OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE, overrides: Partial<F>, model: Constructor<M>, ...args: any[]): Promise<C>;
217
+ args<M extends Model<any>, C extends Context<F>, F extends RepositoryFlags>(operation: OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE, model: Constructor<M>, args: any[], contextual?: Contextual<F>, overrides?: Partial<F>): Promise<import("@decaf-ts/db-decorators").ContextArgs<F, C>>;
215
218
  };
216
219
  /**
217
220
  * @description Creates a context for a database operation
@@ -224,7 +227,7 @@ export declare abstract class Adapter<Y, Q, F extends RepositoryFlags, C extends
224
227
  * @param {...any[]} args - Additional arguments
225
228
  * @return {Promise<C>} A promise that resolves to the context object
226
229
  */
227
- context<M extends Model>(operation: OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE, overrides: Partial<F>, model: Constructor<M>, ...args: any[]): Promise<C>;
230
+ context<M extends Model>(operation: OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE, overrides: Partial<FLAGS>, model: Constructor<M>, ...args: any[]): Promise<CONTEXT>;
228
231
  /**
229
232
  * @description Prepares a model for persistence
230
233
  * @summary Converts a model instance into a format suitable for database storage,
@@ -337,7 +340,7 @@ export declare abstract class Adapter<Y, Q, F extends RepositoryFlags, C extends
337
340
  * @param {...any[]} args - Additional arguments specific to the adapter implementation
338
341
  * @return {Promise<R>} A promise that resolves to the query result
339
342
  */
340
- abstract raw<R>(rawInput: Q, ...args: any[]): Promise<R>;
343
+ abstract raw<R>(rawInput: QUERY, ...args: any[]): Promise<R>;
341
344
  /**
342
345
  * @description Registers an observer for database events
343
346
  * @summary Adds an observer to be notified about database changes. The observer can optionally
@@ -399,14 +402,15 @@ export declare abstract class Adapter<Y, Q, F extends RepositoryFlags, C extends
399
402
  /**
400
403
  * @description Gets an adapter by flavor
401
404
  * @summary Retrieves a registered adapter by its flavor name
402
- * @template Y - The database driver type
403
- * @template Q - The query type
404
- * @template C - The context type
405
- * @template F - The repository flags type
405
+ * @template CONF - The database driver config
406
+ * @template CONN - The database driver instance
407
+ * @template QUERY - The query type
408
+ * @template CCONTEXT - The context type
409
+ * @template FLAGS - The repository flags type
406
410
  * @param {string} flavour - The flavor name of the adapter to retrieve
407
- * @return {Adapter<Y, Q, F, C> | undefined} The adapter instance or undefined if not found
411
+ * @return {Adapter<CONF, CONN, QUERY, CONTEXT, FLAGS> | undefined} The adapter instance or undefined if not found
408
412
  */
409
- static get<Y, Q, C extends Context<F>, F extends RepositoryFlags>(flavour?: any): Adapter<Y, Q, F, C> | undefined;
413
+ static get<CONF, CONN, QUERY, CONTEXT extends Context<FLAGS>, FLAGS extends RepositoryFlags>(flavour?: any): Adapter<CONF, CONN, QUERY, FLAGS, CONTEXT> | undefined;
410
414
  /**
411
415
  * @description Sets the current default adapter
412
416
  * @summary Changes which adapter is used as the default for operations
@@ -430,13 +434,19 @@ export declare abstract class Adapter<Y, Q, F extends RepositoryFlags, C extends
430
434
  */
431
435
  static models<M extends Model>(flavour: string): ModelConstructor<any>[];
432
436
  static decoration(): void;
433
- /**
434
- * @description Creates a child Adapter with specific congigurations
435
- * @summary Returns a new Adapter instance with specific congigurations
436
- * @param {string | Function} config - The method name or function to create a logger for
437
- * @param {Partial<LoggingConfig>} config - Optional configuration to override settings
438
- * @param {...any} args - Additional arguments to pass to the logger factory
439
- * @return {Logger} A new logger instance for the specified method
440
- */
441
- for(...args: any[]): Adapter<Y, Q, F, C>;
437
+ protected proxies?: Record<string, typeof this>;
438
+ /**
439
+ * @description Returns the client instance for the adapter
440
+ * @summary This method should be overridden by subclasses to return the client instance for the adapter.
441
+ * @template CON - The type of the client instance
442
+ * @return {CON} The client instance for the adapter
443
+ * @abstract
444
+ * @function getClient
445
+ * @memberOf module:core
446
+ * @instance
447
+ * @protected
448
+ */
449
+ protected abstract getClient(): CONN;
450
+ get client(): CONN;
451
+ for(config: Partial<CONF>, ...args: any[]): typeof this;
442
452
  }