@decaf-ts/core 0.5.27 → 0.5.29

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.
@@ -6,6 +6,7 @@ import { index } from "./../model/decorators.js";
6
6
  import { sequenceNameForModel } from "./utils.js";
7
7
  import { OrderDirection } from "./../repository/index.js";
8
8
  import { apply } from "@decaf-ts/reflection";
9
+ const defaultPkPriority = 60; // Default priority for primary key to run latter than other properties
9
10
  /**
10
11
  * @description Callback function for primary key creation
11
12
  * @summary Handles the creation of primary key values for models using sequences
@@ -93,16 +94,16 @@ export function pk(opts = DefaultSequenceOptions) {
93
94
  : opts.generated || DefaultSequenceOptions.generated,
94
95
  });
95
96
  const key = Repository.key(DBKeys.ID);
96
- function pkDec(options) {
97
+ function pkDec(options, groupsort) {
97
98
  return function pkDec(obj, attr) {
98
- return apply(index([OrderDirection.ASC, OrderDirection.DSC]), required(), readonly(), propMetadata(key, options), onCreate(pkOnCreate, options), propMetadata(DBKeys.ID, attr))(obj, attr);
99
+ return apply(index([OrderDirection.ASC, OrderDirection.DSC]), required(), readonly(), propMetadata(key, options), onCreate(pkOnCreate, options, groupsort), propMetadata(DBKeys.ID, attr))(obj, attr);
99
100
  };
100
101
  }
101
102
  return Decoration.for(key)
102
103
  .define({
103
104
  decorator: pkDec,
104
- args: [opts],
105
+ args: [opts, { priority: defaultPkPriority }],
105
106
  })
106
107
  .apply();
107
108
  }
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZGVudGl0eS9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBRVYsWUFBWSxFQUNaLFFBQVEsR0FDVCxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFDTCxzQkFBc0IsR0FFdkIsMkNBQXNDO0FBQ3ZDLE9BQU8sRUFDTCxNQUFNLEVBQ04sYUFBYSxFQUNiLFFBQVEsRUFDUixRQUFRLEdBRVQsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQVEsVUFBVSxFQUFFLHNDQUFpQztBQUM1RCxPQUFPLEVBQUUsS0FBSyxFQUFFLGlDQUE0QjtBQUM1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsbUJBQWdCO0FBRy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsaUNBQXNCO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQ0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFVBQVUsQ0FROUIsT0FBbUIsRUFDbkIsSUFBTyxFQUNQLEdBQVksRUFDWixLQUFRO0lBRVIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hELE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxrQkFBa0IsR0FBRyxVQUN6QixNQUFTLEVBQ1QsV0FBbUIsRUFDbkIsS0FBK0I7UUFFL0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFO1lBQ3pDLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsWUFBWSxFQUFFLElBQUk7WUFDbEIsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFFRixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7UUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5RCxJQUFJLFFBQWtCLENBQUM7SUFDdkIsSUFBSSxDQUFDO1FBQ0gsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLGFBQWEsQ0FDckIsa0NBQWtDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQ3BELENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEdBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFNLFVBQVUsRUFBRSxDQUNoQixPQUdJLHNCQUFzQjtJQUUxQixJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFO1FBQ3JELFNBQVMsRUFDUCxJQUFJLENBQUMsSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxXQUFXO1lBQ2hELENBQUMsQ0FBQyxJQUFJO1lBQ04sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksc0JBQXNCLENBQUMsU0FBUztLQUN6RCxDQUFvQixDQUFDO0lBRXRCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLFNBQVMsS0FBSyxDQUFDLE9BQXdCO1FBQ3JDLE9BQU8sU0FBUyxLQUFLLENBQUMsR0FBUSxFQUFFLElBQVM7WUFDdkMsT0FBTyxLQUFLLENBQ1YsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDL0MsUUFBUSxFQUFFLEVBQ1YsUUFBUSxFQUFFLEVBQ1YsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsRUFDMUIsUUFBUSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFDN0IsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQzlCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7U0FDdkIsTUFBTSxDQUFDO1FBQ04sU0FBUyxFQUFFLEtBQUs7UUFDaEIsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDO0tBQ2IsQ0FBQztTQUNELEtBQUssRUFBRSxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERlY29yYXRpb24sXG4gIE1vZGVsLFxuICBwcm9wTWV0YWRhdGEsXG4gIHJlcXVpcmVkLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQge1xuICBEZWZhdWx0U2VxdWVuY2VPcHRpb25zLFxuICBTZXF1ZW5jZU9wdGlvbnMsXG59IGZyb20gXCIuLi9pbnRlcmZhY2VzL1NlcXVlbmNlT3B0aW9uc1wiO1xuaW1wb3J0IHtcbiAgREJLZXlzLFxuICBJbnRlcm5hbEVycm9yLFxuICBvbkNyZWF0ZSxcbiAgcmVhZG9ubHksXG4gIFJlcG9zaXRvcnlGbGFncyxcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBSZXBvLCBSZXBvc2l0b3J5IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvUmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgaW5kZXggfSBmcm9tIFwiLi4vbW9kZWwvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgc2VxdWVuY2VOYW1lRm9yTW9kZWwgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgU2VxdWVuY2UgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2UvU2VxdWVuY2VcIjtcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IE9yZGVyRGlyZWN0aW9uIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IGFwcGx5IH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBwcmltYXJ5IGtleSBjcmVhdGlvblxuICogQHN1bW1hcnkgSGFuZGxlcyB0aGUgY3JlYXRpb24gb2YgcHJpbWFyeSBrZXkgdmFsdWVzIGZvciBtb2RlbHMgdXNpbmcgc2VxdWVuY2VzXG4gKiBAdGVtcGxhdGUgTSAtIFR5cGUgdGhhdCBleHRlbmRzIE1vZGVsXG4gKiBAdGVtcGxhdGUgUiAtIFR5cGUgdGhhdCBleHRlbmRzIFJlcG88TSwgRiwgQz5cbiAqIEB0ZW1wbGF0ZSBWIC0gVHlwZSB0aGF0IGV4dGVuZHMgU2VxdWVuY2VPcHRpb25zXG4gKiBAdGVtcGxhdGUgRiAtIFR5cGUgdGhhdCBleHRlbmRzIFJlcG9zaXRvcnlGbGFnc1xuICogQHRlbXBsYXRlIEMgLSBUeXBlIHRoYXQgZXh0ZW5kcyBDb250ZXh0PEY+XG4gKiBAcGFyYW0ge0NvbnRleHQ8Rj59IGNvbnRleHQgLSBUaGUgZXhlY3V0aW9uIGNvbnRleHRcbiAqIEBwYXJhbSB7Vn0gZGF0YSAtIFRoZSBzZXF1ZW5jZSBvcHRpb25zXG4gKiBAcGFyYW0ga2V5IC0gVGhlIHByb3BlcnR5IGtleSB0byBzZXQgYXMgcHJpbWFyeSBrZXlcbiAqIEBwYXJhbSB7TX0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2VcbiAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHByaW1hcnkga2V5IGlzIHNldFxuICogQGZ1bmN0aW9uIHBrT25DcmVhdGVcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eSBEZWNvcmF0b3JzXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IE1vZGVsXG4gKiAgIHBhcnRpY2lwYW50IHBrT25DcmVhdGVcbiAqICAgcGFydGljaXBhbnQgQWRhcHRlclxuICogICBwYXJ0aWNpcGFudCBTZXF1ZW5jZVxuICpcbiAqICAgTW9kZWwtPj5wa09uQ3JlYXRlOiBDYWxsIHdpdGggbW9kZWwgaW5zdGFuY2VcbiAqICAgTm90ZSBvdmVyIHBrT25DcmVhdGU6IENoZWNrIGlmIGtleSBhbHJlYWR5IGV4aXN0c1xuICogICBhbHQgS2V5IGV4aXN0cyBvciBubyB0eXBlIHNwZWNpZmllZFxuICogICAgIHBrT25DcmVhdGUtLT4+TW9kZWw6IFJldHVybiBlYXJseVxuICogICBlbHNlIEtleSBuZWVkcyB0byBiZSBjcmVhdGVkXG4gKiAgICAgcGtPbkNyZWF0ZS0+PnBrT25DcmVhdGU6IEdlbmVyYXRlIHNlcXVlbmNlIG5hbWUgaWYgbm90IHByb3ZpZGVkXG4gKiAgICAgcGtPbkNyZWF0ZS0+PkFkYXB0ZXI6IFJlcXVlc3QgU2VxdWVuY2UoZGF0YSlcbiAqICAgICBBZGFwdGVyLT4+U2VxdWVuY2U6IENyZWF0ZSBzZXF1ZW5jZVxuICogICAgIFNlcXVlbmNlLS0+PnBrT25DcmVhdGU6IFJldHVybiBzZXF1ZW5jZVxuICogICAgIHBrT25DcmVhdGUtPj5TZXF1ZW5jZTogQ2FsbCBuZXh0KClcbiAqICAgICBTZXF1ZW5jZS0tPj5wa09uQ3JlYXRlOiBSZXR1cm4gbmV4dCB2YWx1ZVxuICogICAgIHBrT25DcmVhdGUtPj5Nb2RlbDogU2V0IHByaW1hcnkga2V5IHZhbHVlXG4gKiAgIGVuZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGtPbkNyZWF0ZTxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBSIGV4dGVuZHMgUmVwbzxNLCBGLCBDPixcbiAgViBleHRlbmRzIFNlcXVlbmNlT3B0aW9ucyxcbiAgRiBleHRlbmRzIFJlcG9zaXRvcnlGbGFncyxcbiAgQyBleHRlbmRzIENvbnRleHQ8Rj4sXG4+KFxuICB0aGlzOiBSLFxuICBjb250ZXh0OiBDb250ZXh0PEY+LFxuICBkYXRhOiBWLFxuICBrZXk6IGtleW9mIE0sXG4gIG1vZGVsOiBNXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFkYXRhLnR5cGUgfHwgIWRhdGEuZ2VuZXJhdGVkIHx8IG1vZGVsW2tleV0pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzZXRQcmltYXJ5S2V5VmFsdWUgPSBmdW5jdGlvbiA8TSBleHRlbmRzIE1vZGVsPihcbiAgICB0YXJnZXQ6IE0sXG4gICAgcHJvcGVydHlLZXk6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50XG4gICkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIGlmICghZGF0YS5uYW1lKSBkYXRhLm5hbWUgPSBzZXF1ZW5jZU5hbWVGb3JNb2RlbChtb2RlbCwgXCJwa1wiKTtcbiAgbGV0IHNlcXVlbmNlOiBTZXF1ZW5jZTtcbiAgdHJ5IHtcbiAgICBzZXF1ZW5jZSA9IGF3YWl0IHRoaXMuYWRhcHRlci5TZXF1ZW5jZShkYXRhKTtcbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICBgRmFpbGVkIHRvIGluc3RhbnRpYXRlIFNlcXVlbmNlICR7ZGF0YS5uYW1lfTogJHtlfWBcbiAgICApO1xuICB9XG5cbiAgY29uc3QgbmV4dCA9IGF3YWl0IHNlcXVlbmNlLm5leHQoKTtcbiAgc2V0UHJpbWFyeUtleVZhbHVlKG1vZGVsLCBrZXkgYXMgc3RyaW5nLCBuZXh0KTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUHJpbWFyeSBLZXkgRGVjb3JhdG9yXG4gKiBAc3VtbWFyeSBNYXJrcyBhIHByb3BlcnR5IGFzIHRoZSBtb2RlbCdzIHByaW1hcnkga2V5IHdpdGggYXV0b21hdGljIHNlcXVlbmNlIGdlbmVyYXRpb25cbiAqIFRoaXMgZGVjb3JhdG9yIGNvbWJpbmVzIG11bHRpcGxlIGJlaGF2aW9yczogaXQgbWFya3MgdGhlIHByb3BlcnR5IGFzIHVuaXF1ZSwgcmVxdWlyZWQsXG4gKiBhbmQgZW5zdXJlcyB0aGUgaW5kZXggaXMgY3JlYXRlZCBwcm9wZXJseSBhY2NvcmRpbmcgdG8gdGhlIHByb3ZpZGVkIHNlcXVlbmNlIG9wdGlvbnMuXG4gKiBAcGFyYW0ge09taXQ8U2VxdWVuY2VPcHRpb25zLCBcImN5Y2xlXCIgfCBcInN0YXJ0V2l0aFwiIHwgXCJpbmNyZW1lbnRCeVwiPn0gb3B0cyAtIE9wdGlvbnMgZm9yIHRoZSBzZXF1ZW5jZSBnZW5lcmF0aW9uXG4gKiBAcmV0dXJuIHtQcm9wZXJ0eURlY29yYXRvcn0gQSBwcm9wZXJ0eSBkZWNvcmF0b3IgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBtb2RlbCBwcm9wZXJ0aWVzXG4gKiBAZnVuY3Rpb24gcGtcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eSBEZWNvcmF0b3JzXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgVXNlciBleHRlbmRzIEJhc2VNb2RlbCB7XG4gKiAgIEBwaygpXG4gKiAgIGlkITogc3RyaW5nO1xuICpcbiAqICAgQHJlcXVpcmVkKClcbiAqICAgdXNlcm5hbWUhOiBzdHJpbmc7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBrKFxuICBvcHRzOiBPbWl0PFxuICAgIFNlcXVlbmNlT3B0aW9ucyxcbiAgICBcImN5Y2xlXCIgfCBcInN0YXJ0V2l0aFwiIHwgXCJpbmNyZW1lbnRCeVwiXG4gID4gPSBEZWZhdWx0U2VxdWVuY2VPcHRpb25zXG4pIHtcbiAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe30sIERlZmF1bHRTZXF1ZW5jZU9wdGlvbnMsIG9wdHMsIHtcbiAgICBnZW5lcmF0ZWQ6XG4gICAgICBvcHRzLnR5cGUgJiYgdHlwZW9mIG9wdHMuZ2VuZXJhdGVkID09PSBcInVuZGVmaW5lZFwiXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IG9wdHMuZ2VuZXJhdGVkIHx8IERlZmF1bHRTZXF1ZW5jZU9wdGlvbnMuZ2VuZXJhdGVkLFxuICB9KSBhcyBTZXF1ZW5jZU9wdGlvbnM7XG5cbiAgY29uc3Qga2V5ID0gUmVwb3NpdG9yeS5rZXkoREJLZXlzLklEKTtcbiAgZnVuY3Rpb24gcGtEZWMob3B0aW9uczogU2VxdWVuY2VPcHRpb25zKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHBrRGVjKG9iajogYW55LCBhdHRyOiBhbnkpIHtcbiAgICAgIHJldHVybiBhcHBseShcbiAgICAgICAgaW5kZXgoW09yZGVyRGlyZWN0aW9uLkFTQywgT3JkZXJEaXJlY3Rpb24uRFNDXSksXG4gICAgICAgIHJlcXVpcmVkKCksXG4gICAgICAgIHJlYWRvbmx5KCksXG4gICAgICAgIHByb3BNZXRhZGF0YShrZXksIG9wdGlvbnMpLFxuICAgICAgICBvbkNyZWF0ZShwa09uQ3JlYXRlLCBvcHRpb25zKSxcbiAgICAgICAgcHJvcE1ldGFkYXRhKERCS2V5cy5JRCwgYXR0cilcbiAgICAgICkob2JqLCBhdHRyKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBEZWNvcmF0aW9uLmZvcihrZXkpXG4gICAgLmRlZmluZSh7XG4gICAgICBkZWNvcmF0b3I6IHBrRGVjLFxuICAgICAgYXJnczogW29wdHNdLFxuICAgIH0pXG4gICAgLmFwcGx5KCk7XG59XG4iXX0=
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZGVudGl0eS9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBRVYsWUFBWSxFQUNaLFFBQVEsR0FDVCxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFDTCxzQkFBc0IsR0FFdkIsMkNBQXNDO0FBQ3ZDLE9BQU8sRUFDTCxNQUFNLEVBRU4sYUFBYSxFQUNiLFFBQVEsRUFDUixRQUFRLEdBRVQsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQVEsVUFBVSxFQUFFLHNDQUFpQztBQUM1RCxPQUFPLEVBQUUsS0FBSyxFQUFFLGlDQUE0QjtBQUM1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsbUJBQWdCO0FBRy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsaUNBQXNCO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU3QyxNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQyxDQUFDLHVFQUF1RTtBQUVyRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQ0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFVBQVUsQ0FROUIsT0FBbUIsRUFDbkIsSUFBTyxFQUNQLEdBQVksRUFDWixLQUFRO0lBRVIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hELE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxrQkFBa0IsR0FBRyxVQUN6QixNQUFTLEVBQ1QsV0FBbUIsRUFDbkIsS0FBK0I7UUFFL0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFO1lBQ3pDLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsWUFBWSxFQUFFLElBQUk7WUFDbEIsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFFRixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7UUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5RCxJQUFJLFFBQWtCLENBQUM7SUFDdkIsSUFBSSxDQUFDO1FBQ0gsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLGFBQWEsQ0FDckIsa0NBQWtDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQ3BELENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEdBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFNLFVBQVUsRUFBRSxDQUNoQixPQUdJLHNCQUFzQjtJQUUxQixJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFO1FBQ3JELFNBQVMsRUFDUCxJQUFJLENBQUMsSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxXQUFXO1lBQ2hELENBQUMsQ0FBQyxJQUFJO1lBQ04sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksc0JBQXNCLENBQUMsU0FBUztLQUN6RCxDQUFvQixDQUFDO0lBRXRCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLFNBQVMsS0FBSyxDQUFDLE9BQXdCLEVBQUUsU0FBcUI7UUFDNUQsT0FBTyxTQUFTLEtBQUssQ0FBQyxHQUFRLEVBQUUsSUFBUztZQUN2QyxPQUFPLEtBQUssQ0FDVixLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUMvQyxRQUFRLEVBQUUsRUFDVixRQUFRLEVBQUUsRUFDVixZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxFQUMxQixRQUFRLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFDeEMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQzlCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7U0FDdkIsTUFBTSxDQUFDO1FBQ04sU0FBUyxFQUFFLEtBQUs7UUFDaEIsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLENBQUM7S0FDOUMsQ0FBQztTQUNELEtBQUssRUFBRSxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERlY29yYXRpb24sXG4gIE1vZGVsLFxuICBwcm9wTWV0YWRhdGEsXG4gIHJlcXVpcmVkLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQge1xuICBEZWZhdWx0U2VxdWVuY2VPcHRpb25zLFxuICBTZXF1ZW5jZU9wdGlvbnMsXG59IGZyb20gXCIuLi9pbnRlcmZhY2VzL1NlcXVlbmNlT3B0aW9uc1wiO1xuaW1wb3J0IHtcbiAgREJLZXlzLFxuICBHcm91cFNvcnQsXG4gIEludGVybmFsRXJyb3IsXG4gIG9uQ3JlYXRlLFxuICByZWFkb25seSxcbiAgUmVwb3NpdG9yeUZsYWdzLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IFJlcG8sIFJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9SZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBpbmRleCB9IGZyb20gXCIuLi9tb2RlbC9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBzZXF1ZW5jZU5hbWVGb3JNb2RlbCB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyBTZXF1ZW5jZSB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS9TZXF1ZW5jZVwiO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgT3JkZXJEaXJlY3Rpb24gfSBmcm9tIFwiLi4vcmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgYXBwbHkgfSBmcm9tIFwiQGRlY2FmLXRzL3JlZmxlY3Rpb25cIjtcblxuY29uc3QgZGVmYXVsdFBrUHJpb3JpdHkgPSA2MDsgLy8gRGVmYXVsdCBwcmlvcml0eSBmb3IgcHJpbWFyeSBrZXkgdG8gcnVuIGxhdHRlciB0aGFuIG90aGVyIHByb3BlcnRpZXNcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIHByaW1hcnkga2V5IGNyZWF0aW9uXG4gKiBAc3VtbWFyeSBIYW5kbGVzIHRoZSBjcmVhdGlvbiBvZiBwcmltYXJ5IGtleSB2YWx1ZXMgZm9yIG1vZGVscyB1c2luZyBzZXF1ZW5jZXNcbiAqIEB0ZW1wbGF0ZSBNIC0gVHlwZSB0aGF0IGV4dGVuZHMgTW9kZWxcbiAqIEB0ZW1wbGF0ZSBSIC0gVHlwZSB0aGF0IGV4dGVuZHMgUmVwbzxNLCBGLCBDPlxuICogQHRlbXBsYXRlIFYgLSBUeXBlIHRoYXQgZXh0ZW5kcyBTZXF1ZW5jZU9wdGlvbnNcbiAqIEB0ZW1wbGF0ZSBGIC0gVHlwZSB0aGF0IGV4dGVuZHMgUmVwb3NpdG9yeUZsYWdzXG4gKiBAdGVtcGxhdGUgQyAtIFR5cGUgdGhhdCBleHRlbmRzIENvbnRleHQ8Rj5cbiAqIEBwYXJhbSB7Q29udGV4dDxGPn0gY29udGV4dCAtIFRoZSBleGVjdXRpb24gY29udGV4dFxuICogQHBhcmFtIHtWfSBkYXRhIC0gVGhlIHNlcXVlbmNlIG9wdGlvbnNcbiAqIEBwYXJhbSBrZXkgLSBUaGUgcHJvcGVydHkga2V5IHRvIHNldCBhcyBwcmltYXJ5IGtleVxuICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCBpbnN0YW5jZVxuICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcHJpbWFyeSBrZXkgaXMgc2V0XG4gKiBAZnVuY3Rpb24gcGtPbkNyZWF0ZVxuICogQGNhdGVnb3J5IFByb3BlcnR5IERlY29yYXRvcnNcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgTW9kZWxcbiAqICAgcGFydGljaXBhbnQgcGtPbkNyZWF0ZVxuICogICBwYXJ0aWNpcGFudCBBZGFwdGVyXG4gKiAgIHBhcnRpY2lwYW50IFNlcXVlbmNlXG4gKlxuICogICBNb2RlbC0+PnBrT25DcmVhdGU6IENhbGwgd2l0aCBtb2RlbCBpbnN0YW5jZVxuICogICBOb3RlIG92ZXIgcGtPbkNyZWF0ZTogQ2hlY2sgaWYga2V5IGFscmVhZHkgZXhpc3RzXG4gKiAgIGFsdCBLZXkgZXhpc3RzIG9yIG5vIHR5cGUgc3BlY2lmaWVkXG4gKiAgICAgcGtPbkNyZWF0ZS0tPj5Nb2RlbDogUmV0dXJuIGVhcmx5XG4gKiAgIGVsc2UgS2V5IG5lZWRzIHRvIGJlIGNyZWF0ZWRcbiAqICAgICBwa09uQ3JlYXRlLT4+cGtPbkNyZWF0ZTogR2VuZXJhdGUgc2VxdWVuY2UgbmFtZSBpZiBub3QgcHJvdmlkZWRcbiAqICAgICBwa09uQ3JlYXRlLT4+QWRhcHRlcjogUmVxdWVzdCBTZXF1ZW5jZShkYXRhKVxuICogICAgIEFkYXB0ZXItPj5TZXF1ZW5jZTogQ3JlYXRlIHNlcXVlbmNlXG4gKiAgICAgU2VxdWVuY2UtLT4+cGtPbkNyZWF0ZTogUmV0dXJuIHNlcXVlbmNlXG4gKiAgICAgcGtPbkNyZWF0ZS0+PlNlcXVlbmNlOiBDYWxsIG5leHQoKVxuICogICAgIFNlcXVlbmNlLS0+PnBrT25DcmVhdGU6IFJldHVybiBuZXh0IHZhbHVlXG4gKiAgICAgcGtPbkNyZWF0ZS0+Pk1vZGVsOiBTZXQgcHJpbWFyeSBrZXkgdmFsdWVcbiAqICAgZW5kXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwa09uQ3JlYXRlPFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIgZXh0ZW5kcyBSZXBvPE0sIEYsIEM+LFxuICBWIGV4dGVuZHMgU2VxdWVuY2VPcHRpb25zLFxuICBGIGV4dGVuZHMgUmVwb3NpdG9yeUZsYWdzLFxuICBDIGV4dGVuZHMgQ29udGV4dDxGPixcbj4oXG4gIHRoaXM6IFIsXG4gIGNvbnRleHQ6IENvbnRleHQ8Rj4sXG4gIGRhdGE6IFYsXG4gIGtleToga2V5b2YgTSxcbiAgbW9kZWw6IE1cbik6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIWRhdGEudHlwZSB8fCAhZGF0YS5nZW5lcmF0ZWQgfHwgbW9kZWxba2V5XSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHNldFByaW1hcnlLZXlWYWx1ZSA9IGZ1bmN0aW9uIDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIHRhcmdldDogTSxcbiAgICBwcm9wZXJ0eUtleTogc3RyaW5nLFxuICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnRcbiAgKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgfSk7XG4gIH07XG5cbiAgaWYgKCFkYXRhLm5hbWUpIGRhdGEubmFtZSA9IHNlcXVlbmNlTmFtZUZvck1vZGVsKG1vZGVsLCBcInBrXCIpO1xuICBsZXQgc2VxdWVuY2U6IFNlcXVlbmNlO1xuICB0cnkge1xuICAgIHNlcXVlbmNlID0gYXdhaXQgdGhpcy5hZGFwdGVyLlNlcXVlbmNlKGRhdGEpO1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgIGBGYWlsZWQgdG8gaW5zdGFudGlhdGUgU2VxdWVuY2UgJHtkYXRhLm5hbWV9OiAke2V9YFxuICAgICk7XG4gIH1cblxuICBjb25zdCBuZXh0ID0gYXdhaXQgc2VxdWVuY2UubmV4dCgpO1xuICBzZXRQcmltYXJ5S2V5VmFsdWUobW9kZWwsIGtleSBhcyBzdHJpbmcsIG5leHQpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBQcmltYXJ5IEtleSBEZWNvcmF0b3JcbiAqIEBzdW1tYXJ5IE1hcmtzIGEgcHJvcGVydHkgYXMgdGhlIG1vZGVsJ3MgcHJpbWFyeSBrZXkgd2l0aCBhdXRvbWF0aWMgc2VxdWVuY2UgZ2VuZXJhdGlvblxuICogVGhpcyBkZWNvcmF0b3IgY29tYmluZXMgbXVsdGlwbGUgYmVoYXZpb3JzOiBpdCBtYXJrcyB0aGUgcHJvcGVydHkgYXMgdW5pcXVlLCByZXF1aXJlZCxcbiAqIGFuZCBlbnN1cmVzIHRoZSBpbmRleCBpcyBjcmVhdGVkIHByb3Blcmx5IGFjY29yZGluZyB0byB0aGUgcHJvdmlkZWQgc2VxdWVuY2Ugb3B0aW9ucy5cbiAqIEBwYXJhbSB7T21pdDxTZXF1ZW5jZU9wdGlvbnMsIFwiY3ljbGVcIiB8IFwic3RhcnRXaXRoXCIgfCBcImluY3JlbWVudEJ5XCI+fSBvcHRzIC0gT3B0aW9ucyBmb3IgdGhlIHNlcXVlbmNlIGdlbmVyYXRpb25cbiAqIEByZXR1cm4ge1Byb3BlcnR5RGVjb3JhdG9yfSBBIHByb3BlcnR5IGRlY29yYXRvciB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIG1vZGVsIHByb3BlcnRpZXNcbiAqIEBmdW5jdGlvbiBwa1xuICogQGNhdGVnb3J5IFByb3BlcnR5IERlY29yYXRvcnNcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBVc2VyIGV4dGVuZHMgQmFzZU1vZGVsIHtcbiAqICAgQHBrKClcbiAqICAgaWQhOiBzdHJpbmc7XG4gKlxuICogICBAcmVxdWlyZWQoKVxuICogICB1c2VybmFtZSE6IHN0cmluZztcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGsoXG4gIG9wdHM6IE9taXQ8XG4gICAgU2VxdWVuY2VPcHRpb25zLFxuICAgIFwiY3ljbGVcIiB8IFwic3RhcnRXaXRoXCIgfCBcImluY3JlbWVudEJ5XCJcbiAgPiA9IERlZmF1bHRTZXF1ZW5jZU9wdGlvbnNcbikge1xuICBvcHRzID0gT2JqZWN0LmFzc2lnbih7fSwgRGVmYXVsdFNlcXVlbmNlT3B0aW9ucywgb3B0cywge1xuICAgIGdlbmVyYXRlZDpcbiAgICAgIG9wdHMudHlwZSAmJiB0eXBlb2Ygb3B0cy5nZW5lcmF0ZWQgPT09IFwidW5kZWZpbmVkXCJcbiAgICAgICAgPyB0cnVlXG4gICAgICAgIDogb3B0cy5nZW5lcmF0ZWQgfHwgRGVmYXVsdFNlcXVlbmNlT3B0aW9ucy5nZW5lcmF0ZWQsXG4gIH0pIGFzIFNlcXVlbmNlT3B0aW9ucztcblxuICBjb25zdCBrZXkgPSBSZXBvc2l0b3J5LmtleShEQktleXMuSUQpO1xuICBmdW5jdGlvbiBwa0RlYyhvcHRpb25zOiBTZXF1ZW5jZU9wdGlvbnMsIGdyb3Vwc29ydD86IEdyb3VwU29ydCkge1xuICAgIHJldHVybiBmdW5jdGlvbiBwa0RlYyhvYmo6IGFueSwgYXR0cjogYW55KSB7XG4gICAgICByZXR1cm4gYXBwbHkoXG4gICAgICAgIGluZGV4KFtPcmRlckRpcmVjdGlvbi5BU0MsIE9yZGVyRGlyZWN0aW9uLkRTQ10pLFxuICAgICAgICByZXF1aXJlZCgpLFxuICAgICAgICByZWFkb25seSgpLFxuICAgICAgICBwcm9wTWV0YWRhdGEoa2V5LCBvcHRpb25zKSxcbiAgICAgICAgb25DcmVhdGUocGtPbkNyZWF0ZSwgb3B0aW9ucywgZ3JvdXBzb3J0KSxcbiAgICAgICAgcHJvcE1ldGFkYXRhKERCS2V5cy5JRCwgYXR0cilcbiAgICAgICkob2JqLCBhdHRyKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBEZWNvcmF0aW9uLmZvcihrZXkpXG4gICAgLmRlZmluZSh7XG4gICAgICBkZWNvcmF0b3I6IHBrRGVjLFxuICAgICAgYXJnczogW29wdHMsIHsgcHJpb3JpdHk6IGRlZmF1bHRQa1ByaW9yaXR5IH1dLFxuICAgIH0pXG4gICAgLmFwcGx5KCk7XG59XG4iXX0=
@@ -19,4 +19,4 @@ export * from "./persistence";
19
19
  * @const VERSION
20
20
  * @memberOf module:core
21
21
  */
22
- export declare const VERSION = "0.5.27";
22
+ export declare const VERSION = "0.5.29";
package/lib/esm/index.js CHANGED
@@ -25,5 +25,5 @@ export * from "./persistence/index.js";
25
25
  * @const VERSION
26
26
  * @memberOf module:core
27
27
  */
28
- export const VERSION = "0.5.27";
28
+ export const VERSION = "0.5.29";
29
29
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9DQUFpQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsa0ZBQWtGO0FBQ2xGLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7QUFFbkQsNEJBQTRCO0FBQzVCLHNDQUE2QjtBQUU3QixvQ0FBMkI7QUFDM0Isc0NBQTZCO0FBQzdCLGlDQUF3QjtBQUN4QixpQ0FBd0I7QUFDeEIsaUNBQXdCO0FBQ3hCLG9DQUFpQztBQUNqQyx5QkFBeUI7QUFDekIsdUNBQThCO0FBRTlCOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBjb3JlXG4gKiBAZGVzY3JpcHRpb24gQ29yZSBtb2R1bGUgZm9yIHRoZSBEZWNhZiBUeXBlU2NyaXB0IGZyYW1ld29ya1xuICogQHN1bW1hcnkgVGhpcyBtb2R1bGUgcHJvdmlkZXMgdGhlIGZvdW5kYXRpb25hbCBjb21wb25lbnRzIG9mIHRoZSBEZWNhZiBmcmFtZXdvcmssIGluY2x1ZGluZyBpZGVudGl0eSBtYW5hZ2VtZW50LFxuICogbW9kZWwgZGVmaW5pdGlvbnMsIHJlcG9zaXRvcnkgcGF0dGVybnMsIHBlcnNpc3RlbmNlIGxheWVyLCBxdWVyeSBidWlsZGluZywgYW5kIHV0aWxpdHkgZnVuY3Rpb25zLlxuICogSXQgZXhwb3J0cyBmdW5jdGlvbmFsaXR5IGZyb20gdmFyaW91cyBzdWJtb2R1bGVzIGFuZCBzZXRzIHVwIHRoZSBpbmplY3RhYmxlIHJlZ2lzdHJ5IGZvciByZXBvc2l0b3J5IGRlY29yYXRvcnMuXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZXNSZWdpc3RyeSB9IGZyb20gXCIuL3JlcG9zaXRvcnkvaW5qZWN0YWJsZXNcIjtcbmltcG9ydCB7IEluamVjdGFibGVzIH0gZnJvbSBcIkBkZWNhZi10cy9pbmplY3RhYmxlLWRlY29yYXRvcnNcIjtcblxuLy8gb3ZlcnJpZGVzIHRoZSBwcmV2aW91cyBJbmplY3RhYmxlcyByZWdpc3RyeSB0byBlbmFibGUgdGhlIEByZXBvc2l0b3J5IGRlY29yYXRvclxuSW5qZWN0YWJsZXMuc2V0UmVnaXN0cnkobmV3IEluamVjdGFibGVzUmVnaXN0cnkoKSk7XG5cbi8vIGltcG9ydGVkIGZpcnN0IG9uIHB1cnBvc2VcbmV4cG9ydCAqIGZyb20gXCIuL3JlcG9zaXRvcnlcIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vaWRlbnRpdHlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ludGVyZmFjZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21vZGVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9xdWVyeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JhbS9SYW1BZGFwdGVyXCI7XG4vL2xlZnQgdG8gbGFzdCBvbiBwdXJwb3NlXG5leHBvcnQgKiBmcm9tIFwiLi9wZXJzaXN0ZW5jZVwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBTdG9yZXMgdGhlIGN1cnJlbnQgcGFja2FnZSB2ZXJzaW9uXG4gKiBAc3VtbWFyeSBBIGNvbnN0YW50IHJlcHJlc2VudGluZyB0aGUgdmVyc2lvbiBvZiB0aGUgY29yZSBwYWNrYWdlXG4gKiBAY29uc3QgVkVSU0lPTlxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIjI1ZFUlNJT04jI1wiO1xuIl19
@@ -0,0 +1,155 @@
1
+ import { QueryAssist } from "./types";
2
+ /**
3
+ * @description
4
+ * Utility class to build query objects from repository method names.
5
+ *
6
+ * @summary
7
+ * The `MethodQueryBuilder` class parses method names that follow a specific naming convention
8
+ * (e.g., `findByNameAndAgeOrderByCountryAsc`) and converts them into structured query objects
9
+ * (`QueryAssist`). It extracts clauses such as `select`, `where`, `groupBy`, `orderBy`, `limit`,
10
+ * and `offset`, ensuring that developers can declare repository queries using expressive method names.
11
+ *
12
+ * @param methodName {string} - The repository method name to parse and convert into a query.
13
+ * @param values {any[]} - The values corresponding to method parameters used for query conditions.
14
+ *
15
+ * @return {QueryAssist} A structured query object describing the parsed action, select, where,
16
+ * groupBy, orderBy, limit, and offset clauses.
17
+ *
18
+ * @class
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * const query = MethodQueryBuilder.build(
23
+ * "findByNameAndAgeOrderByCountryAsc",
24
+ * "John",
25
+ * 25,
26
+ * [["country", "ASC"]]
27
+ * );
28
+ *
29
+ * console.log(query);
30
+ * // {
31
+ * // action: "find",
32
+ * // select: undefined,
33
+ * // where: { ... },
34
+ * // groupBy: undefined,
35
+ * // orderBy: [["country", "ASC"]],
36
+ * // limit: undefined,
37
+ * // offset: undefined
38
+ * // }
39
+ * ```
40
+ *
41
+ * @mermaid
42
+ * sequenceDiagram
43
+ * participant Repo as Repository Method
44
+ * participant MQB as MethodQueryBuilder
45
+ * participant Query as QueryAssist
46
+ *
47
+ * Repo->>MQB: build(methodName, ...values)
48
+ * MQB->>MQB: extractCore(methodName)
49
+ * MQB->>MQB: extractSelect(methodName)
50
+ * MQB->>MQB: extractGroupBy(methodName)
51
+ * MQB->>MQB: buildWhere(core, values)
52
+ * MQB->>MQB: extractOrderLimitOffset(core, values)
53
+ * MQB->>Query: return structured QueryAssist object
54
+ */
55
+ export declare class MethodQueryBuilder {
56
+ /**
57
+ * @description
58
+ * Builds a `QueryAssist` object by parsing a repository method name and values.
59
+ *
60
+ * @summary
61
+ * The method validates the method name, extracts clauses (core, select, groupBy, where,
62
+ * orderBy, limit, and offset), and assembles them into a structured query object
63
+ * that can be executed against a data source.
64
+ *
65
+ * @param methodName {string} - The repository method name that encodes query information.
66
+ * @param values {any[]} - The values corresponding to conditions and extra clauses.
67
+ *
68
+ * @return {QueryAssist} A structured query object representing the parsed query.
69
+ */
70
+ static build(methodName: string, ...values: any[]): QueryAssist;
71
+ /**
72
+ * @description
73
+ * Extracts the core part of the method name after `findBy` and before any special clauses.
74
+ *
75
+ * @summary
76
+ * Removes prefixes and detects delimiters (`Then`, `OrderBy`, `GroupBy`, `Limit`, `Offset`)
77
+ * to isolate the main conditional part of the query.
78
+ *
79
+ * @param methodName {string} - The method name to parse.
80
+ *
81
+ * @return {string} The extracted core string used for building conditions.
82
+ */
83
+ private static extractCore;
84
+ /**
85
+ * @description
86
+ * Extracts the select clause from a method name.
87
+ *
88
+ * @summary
89
+ * Detects the `Select` keyword in the method name, isolates the fields following it,
90
+ * and returns them as an array of lowercase-first strings.
91
+ *
92
+ * @param methodName {string} - The method name to parse.
93
+ *
94
+ * @return {string[] | undefined} An array of selected fields or `undefined` if no select clause exists.
95
+ */
96
+ private static extractSelect;
97
+ /**
98
+ * @description
99
+ * Extracts the group by clause from a method name.
100
+ *
101
+ * @summary
102
+ * Detects the `GroupBy` keyword in the method name, isolates the fields following it,
103
+ * and returns them as an array of lowercase-first strings.
104
+ *
105
+ * @param methodName {string} - The method name to parse.
106
+ *
107
+ * @return {string[] | undefined} An array of group by fields or `undefined` if no group by clause exists.
108
+ */
109
+ private static extractGroupBy;
110
+ /**
111
+ * @description
112
+ * Builds the `where` condition object based on the parsed core string and parameter values.
113
+ *
114
+ * @summary
115
+ * Splits the core string by logical operators (`And`, `Or`), parses each token into a field
116
+ * and operator, and combines them into a `Condition` object using the provided values.
117
+ *
118
+ * @param core {string} - The extracted core string from the method name.
119
+ * @param values {any[]} - The values corresponding to the conditions.
120
+ *
121
+ * @return {Condition<any>} A structured condition object representing the query's where clause.
122
+ */
123
+ private static buildWhere;
124
+ /**
125
+ * @description
126
+ * Parses a field name and operator from a string token.
127
+ *
128
+ * @summary
129
+ * Identifies the operator suffix (if present) and returns a descriptor containing the field
130
+ * name in lowercase-first format along with the operator.
131
+ *
132
+ * @param str {string} - The token string to parse.
133
+ *
134
+ * @return {FilterDescriptor} An object containing the field name and operator.
135
+ */
136
+ private static parseFieldAndOperator;
137
+ /**
138
+ * @description
139
+ * Extracts `orderBy`, `limit`, and `offset` clauses from method arguments.
140
+ *
141
+ * @summary
142
+ * Determines the number of condition arguments, then checks the remaining arguments
143
+ * to resolve sorting, limiting, and pagination.
144
+ *
145
+ * @param core {string} - The extracted core string from the method name.
146
+ * @param values {any[]} - The values corresponding to method arguments, including conditions and extras.
147
+ *
148
+ * @return {{
149
+ * orderBy?: OrderBySelector<any>[];
150
+ * limit?: number;
151
+ * offset?: number;
152
+ * }} An object containing orderBy, limit, and offset values if present.
153
+ */
154
+ private static extractOrderLimitOffset;
155
+ }
@@ -0,0 +1,272 @@
1
+ import { QueryClause } from "./types.js";
2
+ import { OperatorsMap } from "./utils.js";
3
+ const lowerFirst = (str) => str.charAt(0).toLowerCase() + str.slice(1);
4
+ /**
5
+ * @description
6
+ * Utility class to build query objects from repository method names.
7
+ *
8
+ * @summary
9
+ * The `MethodQueryBuilder` class parses method names that follow a specific naming convention
10
+ * (e.g., `findByNameAndAgeOrderByCountryAsc`) and converts them into structured query objects
11
+ * (`QueryAssist`). It extracts clauses such as `select`, `where`, `groupBy`, `orderBy`, `limit`,
12
+ * and `offset`, ensuring that developers can declare repository queries using expressive method names.
13
+ *
14
+ * @param methodName {string} - The repository method name to parse and convert into a query.
15
+ * @param values {any[]} - The values corresponding to method parameters used for query conditions.
16
+ *
17
+ * @return {QueryAssist} A structured query object describing the parsed action, select, where,
18
+ * groupBy, orderBy, limit, and offset clauses.
19
+ *
20
+ * @class
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * const query = MethodQueryBuilder.build(
25
+ * "findByNameAndAgeOrderByCountryAsc",
26
+ * "John",
27
+ * 25,
28
+ * [["country", "ASC"]]
29
+ * );
30
+ *
31
+ * console.log(query);
32
+ * // {
33
+ * // action: "find",
34
+ * // select: undefined,
35
+ * // where: { ... },
36
+ * // groupBy: undefined,
37
+ * // orderBy: [["country", "ASC"]],
38
+ * // limit: undefined,
39
+ * // offset: undefined
40
+ * // }
41
+ * ```
42
+ *
43
+ * @mermaid
44
+ * sequenceDiagram
45
+ * participant Repo as Repository Method
46
+ * participant MQB as MethodQueryBuilder
47
+ * participant Query as QueryAssist
48
+ *
49
+ * Repo->>MQB: build(methodName, ...values)
50
+ * MQB->>MQB: extractCore(methodName)
51
+ * MQB->>MQB: extractSelect(methodName)
52
+ * MQB->>MQB: extractGroupBy(methodName)
53
+ * MQB->>MQB: buildWhere(core, values)
54
+ * MQB->>MQB: extractOrderLimitOffset(core, values)
55
+ * MQB->>Query: return structured QueryAssist object
56
+ */
57
+ export class MethodQueryBuilder {
58
+ /**
59
+ * @description
60
+ * Builds a `QueryAssist` object by parsing a repository method name and values.
61
+ *
62
+ * @summary
63
+ * The method validates the method name, extracts clauses (core, select, groupBy, where,
64
+ * orderBy, limit, and offset), and assembles them into a structured query object
65
+ * that can be executed against a data source.
66
+ *
67
+ * @param methodName {string} - The repository method name that encodes query information.
68
+ * @param values {any[]} - The values corresponding to conditions and extra clauses.
69
+ *
70
+ * @return {QueryAssist} A structured query object representing the parsed query.
71
+ */
72
+ static build(methodName, ...values) {
73
+ if (!methodName.startsWith(QueryClause.FIND_BY)) {
74
+ throw new Error(`Unsupported method ${methodName}`);
75
+ }
76
+ const core = this.extractCore(methodName);
77
+ const select = this.extractSelect(methodName);
78
+ const groupBy = this.extractGroupBy(methodName);
79
+ // const orderBy = this.extractOrderBy(methodName);
80
+ const where = this.buildWhere(core, values);
81
+ const { orderBy, limit, offset } = this.extractOrderLimitOffset(core, values);
82
+ return {
83
+ action: "find",
84
+ select: select,
85
+ where,
86
+ groupBy,
87
+ orderBy,
88
+ limit,
89
+ offset,
90
+ };
91
+ }
92
+ /**
93
+ * @description
94
+ * Extracts the core part of the method name after `findBy` and before any special clauses.
95
+ *
96
+ * @summary
97
+ * Removes prefixes and detects delimiters (`Then`, `OrderBy`, `GroupBy`, `Limit`, `Offset`)
98
+ * to isolate the main conditional part of the query.
99
+ *
100
+ * @param methodName {string} - The method name to parse.
101
+ *
102
+ * @return {string} The extracted core string used for building conditions.
103
+ */
104
+ static extractCore(methodName) {
105
+ const afterFindBy = methodName.substring(QueryClause.FIND_BY.length);
106
+ const regex = /(Then[A-Z]|OrderBy|GroupBy|Limit|Offset)/;
107
+ const match = afterFindBy.match(regex);
108
+ return match ? afterFindBy.substring(0, match.index) : afterFindBy;
109
+ }
110
+ /**
111
+ * @description
112
+ * Extracts the select clause from a method name.
113
+ *
114
+ * @summary
115
+ * Detects the `Select` keyword in the method name, isolates the fields following it,
116
+ * and returns them as an array of lowercase-first strings.
117
+ *
118
+ * @param methodName {string} - The method name to parse.
119
+ *
120
+ * @return {string[] | undefined} An array of selected fields or `undefined` if no select clause exists.
121
+ */
122
+ static extractSelect(methodName) {
123
+ const selectIndex = methodName.indexOf(QueryClause.SELECT);
124
+ if (selectIndex === -1)
125
+ return undefined;
126
+ const afterSelect = methodName.substring(selectIndex + QueryClause.SELECT.length);
127
+ // Search for next Then, GroupBy, OrderBy...
128
+ const match = afterSelect.match(/(Then[A-Z]|OrderBy|GroupBy|Limit|Offset)/);
129
+ const selectPart = match
130
+ ? afterSelect.substring(0, match.index)
131
+ : afterSelect;
132
+ return selectPart.split(QueryClause.AND).map(lowerFirst).filter(Boolean);
133
+ }
134
+ /**
135
+ * @description
136
+ * Extracts the group by clause from a method name.
137
+ *
138
+ * @summary
139
+ * Detects the `GroupBy` keyword in the method name, isolates the fields following it,
140
+ * and returns them as an array of lowercase-first strings.
141
+ *
142
+ * @param methodName {string} - The method name to parse.
143
+ *
144
+ * @return {string[] | undefined} An array of group by fields or `undefined` if no group by clause exists.
145
+ */
146
+ static extractGroupBy(methodName) {
147
+ const groupByIndex = methodName.indexOf(QueryClause.GROUP_BY);
148
+ if (groupByIndex === -1)
149
+ return undefined;
150
+ const after = methodName.substring(groupByIndex + QueryClause.GROUP_BY.length);
151
+ const groupByPart = after.split(QueryClause.ORDER_BY)[0];
152
+ return groupByPart
153
+ .split(QueryClause.THEN_BY)
154
+ .map(lowerFirst)
155
+ .filter(Boolean);
156
+ }
157
+ // private static extractOrderBy(
158
+ // methodName: string
159
+ // ): OrderBySelector<any>[] | undefined {
160
+ // const orderByIndex = methodName.indexOf(QueryClause.ORDER_BY);
161
+ // if (orderByIndex === -1) return undefined;
162
+ //
163
+ // const after = methodName.substring(
164
+ // orderByIndex + QueryClause.ORDER_BY.length
165
+ // );
166
+ // const orderParts = after.split("ThenBy");
167
+ //
168
+ // return orderParts.map((part) => {
169
+ // const match = part.match(/(.*?)(Asc|Desc|Dsc)$/);
170
+ // if (!match) throw new Error(`Invalid OrderBy part: ${part}`);
171
+ // const [, field, dir] = match;
172
+ // return [
173
+ // lowerFirst(field),
174
+ // dir.toLowerCase() === "dsc"
175
+ // ? OrderDirection.DSC
176
+ // : (dir.toLowerCase() as OrderDirection),
177
+ // ];
178
+ // });
179
+ // }
180
+ /**
181
+ * @description
182
+ * Builds the `where` condition object based on the parsed core string and parameter values.
183
+ *
184
+ * @summary
185
+ * Splits the core string by logical operators (`And`, `Or`), parses each token into a field
186
+ * and operator, and combines them into a `Condition` object using the provided values.
187
+ *
188
+ * @param core {string} - The extracted core string from the method name.
189
+ * @param values {any[]} - The values corresponding to the conditions.
190
+ *
191
+ * @return {Condition<any>} A structured condition object representing the query's where clause.
192
+ */
193
+ static buildWhere(core, values) {
194
+ const parts = core.split(/OrderBy|GroupBy/)[0] || "";
195
+ const conditions = parts.split(/And|Or/);
196
+ const operators = core.match(/And|Or/g) || [];
197
+ let where;
198
+ conditions.forEach((token, idx) => {
199
+ const { field, operator } = this.parseFieldAndOperator(token);
200
+ const parser = operator ? OperatorsMap[operator] : OperatorsMap.Equals;
201
+ if (!parser)
202
+ throw new Error(`Unsupported operator ${operator}`);
203
+ const conditionValue = values[idx];
204
+ if (typeof conditionValue === "undefined") {
205
+ throw new Error(`Invalid value for field ${field}`);
206
+ }
207
+ const condition = parser(field, conditionValue);
208
+ where =
209
+ idx === 0
210
+ ? condition
211
+ : operators[idx - 1] === QueryClause.AND
212
+ ? where.and(condition)
213
+ : where.or(condition);
214
+ });
215
+ if (!where)
216
+ throw new Error("No conditions found in method name");
217
+ return where;
218
+ }
219
+ /**
220
+ * @description
221
+ * Parses a field name and operator from a string token.
222
+ *
223
+ * @summary
224
+ * Identifies the operator suffix (if present) and returns a descriptor containing the field
225
+ * name in lowercase-first format along with the operator.
226
+ *
227
+ * @param str {string} - The token string to parse.
228
+ *
229
+ * @return {FilterDescriptor} An object containing the field name and operator.
230
+ */
231
+ static parseFieldAndOperator(str) {
232
+ for (const operator of Object.keys(OperatorsMap)) {
233
+ if (str.endsWith(operator)) {
234
+ const field = str.slice(0, -operator.length);
235
+ return { field: lowerFirst(field), operator };
236
+ }
237
+ }
238
+ return { field: lowerFirst(str) };
239
+ }
240
+ /**
241
+ * @description
242
+ * Extracts `orderBy`, `limit`, and `offset` clauses from method arguments.
243
+ *
244
+ * @summary
245
+ * Determines the number of condition arguments, then checks the remaining arguments
246
+ * to resolve sorting, limiting, and pagination.
247
+ *
248
+ * @param core {string} - The extracted core string from the method name.
249
+ * @param values {any[]} - The values corresponding to method arguments, including conditions and extras.
250
+ *
251
+ * @return {{
252
+ * orderBy?: OrderBySelector<any>[];
253
+ * limit?: number;
254
+ * offset?: number;
255
+ * }} An object containing orderBy, limit, and offset values if present.
256
+ */
257
+ static extractOrderLimitOffset(core, values) {
258
+ const conditionCount = core.split(/And|Or/).length;
259
+ const extraArgs = values.slice(conditionCount);
260
+ let orderBy;
261
+ let limit;
262
+ let offset;
263
+ if (extraArgs.length >= 1 && Array.isArray(extraArgs[0]))
264
+ orderBy = extraArgs[0];
265
+ if (extraArgs.length >= 2 && typeof extraArgs[1] === "number")
266
+ limit = extraArgs[1];
267
+ if (extraArgs.length >= 3 && typeof extraArgs[2] === "number")
268
+ offset = extraArgs[2];
269
+ return { orderBy, limit, offset };
270
+ }
271
+ }
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0aG9kUXVlcnlCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3F1ZXJ5L01ldGhvZFF1ZXJ5QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWlDLFdBQVcsRUFBRSxtQkFBZ0I7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxtQkFBZ0I7QUFFdkMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFXLEVBQVUsRUFBRSxDQUN6QyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFN0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvREc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQWtCLEVBQUUsR0FBRyxNQUFhO1FBQy9DLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELG1EQUFtRDtRQUNuRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1QyxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFB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QUM7UUFFL0IsSUFBSSxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RCxPQUFPLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBMkIsQ0FBQztRQUVuRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVE7WUFDM0QsS0FBSyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2QixJQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVE7WUFDM0QsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV4QixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25kaXRpb24sIE9yZGVyQnlTZWxlY3RvciB9IGZyb20gXCIuLi9xdWVyeVwiO1xuaW1wb3J0IHsgRmlsdGVyRGVzY3JpcHRvciwgUXVlcnlBc3Npc3QsIFF1ZXJ5Q2xhdXNlIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IE9wZXJhdG9yc01hcCB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IGxvd2VyRmlyc3QgPSAoc3RyOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgc3RyLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgc3RyLnNsaWNlKDEpO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogVXRpbGl0eSBjbGFzcyB0byBidWlsZCBxdWVyeSBvYmplY3RzIGZyb20gcmVwb3NpdG9yeSBtZXRob2QgbmFtZXMuXG4gKlxuICogQHN1bW1hcnlcbiAqIFRoZSBgTWV0aG9kUXVlcnlCdWlsZGVyYCBjbGFzcyBwYXJzZXMgbWV0aG9kIG5hbWVzIHRoYXQgZm9sbG93IGEgc3BlY2lmaWMgbmFtaW5nIGNvbnZlbnRpb25cbiAqIChlLmcuLCBgZmluZEJ5TmFtZUFuZEFnZU9yZGVyQnlDb3VudHJ5QXNjYCkgYW5kIGNvbnZlcnRzIHRoZW0gaW50byBzdHJ1Y3R1cmVkIHF1ZXJ5IG9iamVjdHNcbiAqIChgUXVlcnlBc3Npc3RgKS4gSXQgZXh0cmFjdHMgY2xhdXNlcyBzdWNoIGFzIGBzZWxlY3RgLCBgd2hlcmVgLCBgZ3JvdXBCeWAsIGBvcmRlckJ5YCwgYGxpbWl0YCxcbiAqIGFuZCBgb2Zmc2V0YCwgZW5zdXJpbmcgdGhhdCBkZXZlbG9wZXJzIGNhbiBkZWNsYXJlIHJlcG9zaXRvcnkgcXVlcmllcyB1c2luZyBleHByZXNzaXZlIG1ldGhvZCBuYW1lcy5cbiAqXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSB7c3RyaW5nfSAtIFRoZSByZXBvc2l0b3J5IG1ldGhvZCBuYW1lIHRvIHBhcnNlIGFuZCBjb252ZXJ0IGludG8gYSBxdWVyeS5cbiAqIEBwYXJhbSB2YWx1ZXMge2FueVtdfSAtIFRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBtZXRob2QgcGFyYW1ldGVycyB1c2VkIGZvciBxdWVyeSBjb25kaXRpb25zLlxuICpcbiAqIEByZXR1cm4ge1F1ZXJ5QXNzaXN0fSBBIHN0cnVjdHVyZWQgcXVlcnkgb2JqZWN0IGRlc2NyaWJpbmcgdGhlIHBhcnNlZCBhY3Rpb24sIHNlbGVjdCwgd2hlcmUsXG4gKiBncm91cEJ5LCBvcmRlckJ5LCBsaW1pdCwgYW5kIG9mZnNldCBjbGF1c2VzLlxuICpcbiAqIEBjbGFzc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY29uc3QgcXVlcnkgPSBNZXRob2RRdWVyeUJ1aWxkZXIuYnVpbGQoXG4gKiAgIFwiZmluZEJ5TmFtZUFuZEFnZU9yZGVyQnlDb3VudHJ5QXNjXCIsXG4gKiAgIFwiSm9oblwiLFxuICogICAyNSxcbiAqICAgW1tcImNvdW50cnlcIiwgXCJBU0NcIl1dXG4gKiApO1xuICpcbiAqIGNvbnNvbGUubG9nKHF1ZXJ5KTtcbiAqIC8vIHtcbiAqIC8vICAgYWN0aW9uOiBcImZpbmRcIixcbiAqIC8vICAgc2VsZWN0OiB1bmRlZmluZWQsXG4gKiAvLyAgIHdoZXJlOiB7IC4uLiB9LFxuICogLy8gICBncm91cEJ5OiB1bmRlZmluZWQsXG4gKiAvLyAgIG9yZGVyQnk6IFtbXCJjb3VudHJ5XCIsIFwiQVNDXCJdXSxcbiAqIC8vICAgbGltaXQ6IHVuZGVmaW5lZCxcbiAqIC8vICAgb2Zmc2V0OiB1bmRlZmluZWRcbiAqIC8vIH1cbiAqIGBgYFxuICpcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgUmVwbyBhcyBSZXBvc2l0b3J5IE1ldGhvZFxuICogICBwYXJ0aWNpcGFudCBNUUIgYXMgTWV0aG9kUXVlcnlCdWlsZGVyXG4gKiAgIHBhcnRpY2lwYW50IFF1ZXJ5IGFzIFF1ZXJ5QXNzaXN0XG4gKlxuICogICBSZXBvLT4+TVFCOiBidWlsZChtZXRob2ROYW1lLCAuLi52YWx1ZXMpXG4gKiAgIE1RQi0+Pk1RQjogZXh0cmFjdENvcmUobWV0aG9kTmFtZSlcbiAqICAgTVFCLT4+TVFCOiBleHRyYWN0U2VsZWN0KG1ldGhvZE5hbWUpXG4gKiAgIE1RQi0+Pk1RQjogZXh0cmFjdEdyb3VwQnkobWV0aG9kTmFtZSlcbiAqICAgTVFCLT4+TVFCOiBidWlsZFdoZXJlKGNvcmUsIHZhbHVlcylcbiAqICAgTVFCLT4+TVFCOiBleHRyYWN0T3JkZXJMaW1pdE9mZnNldChjb3JlLCB2YWx1ZXMpXG4gKiAgIE1RQi0+PlF1ZXJ5OiByZXR1cm4gc3RydWN0dXJlZCBRdWVyeUFzc2lzdCBvYmplY3RcbiAqL1xuZXhwb3J0IGNsYXNzIE1ldGhvZFF1ZXJ5QnVpbGRlciB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQnVpbGRzIGEgYFF1ZXJ5QXNzaXN0YCBvYmplY3QgYnkgcGFyc2luZyBhIHJlcG9zaXRvcnkgbWV0aG9kIG5hbWUgYW5kIHZhbHVlcy5cbiAgICpcbiAgICogQHN1bW1hcnlcbiAgICogVGhlIG1ldGhvZCB2YWxpZGF0ZXMgdGhlIG1ldGhvZCBuYW1lLCBleHRyYWN0cyBjbGF1c2VzIChjb3JlLCBzZWxlY3QsIGdyb3VwQnksIHdoZXJlLFxuICAgKiBvcmRlckJ5LCBsaW1pdCwgYW5kIG9mZnNldCksIGFuZCBhc3NlbWJsZXMgdGhlbSBpbnRvIGEgc3RydWN0dXJlZCBxdWVyeSBvYmplY3RcbiAgICogdGhhdCBjYW4gYmUgZXhlY3V0ZWQgYWdhaW5zdCBhIGRhdGEgc291cmNlLlxuICAgKlxuICAgKiBAcGFyYW0gbWV0aG9kTmFtZSB7c3RyaW5nfSAtIFRoZSByZXBvc2l0b3J5IG1ldGhvZCBuYW1lIHRoYXQgZW5jb2RlcyBxdWVyeSBpbmZvcm1hdGlvbi5cbiAgICogQHBhcmFtIHZhbHVlcyB7YW55W119IC0gVGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGNvbmRpdGlvbnMgYW5kIGV4dHJhIGNsYXVzZXMuXG4gICAqXG4gICAqIEByZXR1cm4ge1F1ZXJ5QXNzaXN0fSBBIHN0cnVjdHVyZWQgcXVlcnkgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcGFyc2VkIHF1ZXJ5LlxuICAgKi9cbiAgc3RhdGljIGJ1aWxkKG1ldGhvZE5hbWU6IHN0cmluZywgLi4udmFsdWVzOiBhbnlbXSk6IFF1ZXJ5QXNzaXN0IHtcbiAgICBpZiAoIW1ldGhvZE5hbWUuc3RhcnRzV2l0aChRdWVyeUNsYXVzZS5GSU5EX0JZKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBtZXRob2QgJHttZXRob2ROYW1lfWApO1xuICAgIH1cblxuICAgIGNvbnN0IGNvcmUgPSB0aGlzLmV4dHJhY3RDb3JlKG1ldGhvZE5hbWUpO1xuICAgIGNvbnN0IHNlbGVjdCA9IHRoaXMuZXh0cmFjdFNlbGVjdChtZXRob2ROYW1lKTtcbiAgICBjb25zdCBncm91cEJ5ID0gdGhpcy5leHRyYWN0R3JvdXBCeShtZXRob2ROYW1lKTtcbiAgICAvLyBjb25zdCBvcmRlckJ5ID0gdGhpcy5leHRyYWN0T3JkZXJCeShtZXRob2ROYW1lKTtcbiAgICBjb25zdCB3aGVyZSA9IHRoaXMuYnVpbGRXaGVyZShjb3JlLCB2YWx1ZXMpO1xuICAgIGNvbnN0IHsgb3JkZXJCeSwgbGltaXQsIG9mZnNldCB9ID0gdGhpcy5leHRyYWN0T3JkZXJMaW1pdE9mZnNldChcbiAgICAgIGNvcmUsXG4gICAgICB2YWx1ZXNcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogXCJmaW5kXCIsXG4gICAgICBzZWxlY3Q6IHNlbGVjdCxcbiAgICAgIHdoZXJlLFxuICAgICAgZ3JvdXBCeSxcbiAgICAgIG9yZGVyQnksXG4gICAgICBsaW1pdCxcbiAgICAgIG9mZnNldCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFeHRyYWN0cyB0aGUgY29yZSBwYXJ0IG9mIHRoZSBtZXRob2QgbmFtZSBhZnRlciBgZmluZEJ5YCBhbmQgYmVmb3JlIGFueSBzcGVjaWFsIGNsYXVzZXMuXG4gICAqXG4gICAqIEBzdW1tYXJ5XG4gICAqIFJlbW92ZXMgcHJlZml4ZXMgYW5kIGRldGVjdHMgZGVsaW1pdGVycyAoYFRoZW5gLCBgT3JkZXJCeWAsIGBHcm91cEJ5YCwgYExpbWl0YCwgYE9mZnNldGApXG4gICAqIHRvIGlzb2xhdGUgdGhlIG1haW4gY29uZGl0aW9uYWwgcGFydCBvZiB0aGUgcXVlcnkuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRob2ROYW1lIHtzdHJpbmd9IC0gVGhlIG1ldGhvZCBuYW1lIHRvIHBhcnNlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBleHRyYWN0ZWQgY29yZSBzdHJpbmcgdXNlZCBmb3IgYnVpbGRpbmcgY29uZGl0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGV4dHJhY3RDb3JlKG1ldGhvZE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgYWZ0ZXJGaW5kQnkgPSBtZXRob2ROYW1lLnN1YnN0cmluZyhRdWVyeUNsYXVzZS5GSU5EX0JZLmxlbmd0aCk7XG4gICAgY29uc3QgcmVnZXggPSAvKFRoZW5bQS1aXXxPcmRlckJ5fEdyb3VwQnl8TGltaXR8T2Zmc2V0KS87XG4gICAgY29uc3QgbWF0Y2ggPSBhZnRlckZpbmRCeS5tYXRjaChyZWdleCk7XG4gICAgcmV0dXJuIG1hdGNoID8gYWZ0ZXJGaW5kQnkuc3Vic3RyaW5nKDAsIG1hdGNoLmluZGV4KSA6IGFmdGVyRmluZEJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFeHRyYWN0cyB0aGUgc2VsZWN0IGNsYXVzZSBmcm9tIGEgbWV0aG9kIG5hbWUuXG4gICAqXG4gICAqIEBzdW1tYXJ5XG4gICAqIERldGVjdHMgdGhlIGBTZWxlY3RgIGtleXdvcmQgaW4gdGhlIG1ldGhvZCBuYW1lLCBpc29sYXRlcyB0aGUgZmllbGRzIGZvbGxvd2luZyBpdCxcbiAgICogYW5kIHJldHVybnMgdGhlbSBhcyBhbiBhcnJheSBvZiBsb3dlcmNhc2UtZmlyc3Qgc3RyaW5ncy5cbiAgICpcbiAgICogQHBhcmFtIG1ldGhvZE5hbWUge3N0cmluZ30gLSBUaGUgbWV0aG9kIG5hbWUgdG8gcGFyc2UuXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdIHwgdW5kZWZpbmVkfSBBbiBhcnJheSBvZiBzZWxlY3RlZCBmaWVsZHMgb3IgYHVuZGVmaW5lZGAgaWYgbm8gc2VsZWN0IGNsYXVzZSBleGlzdHMuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBleHRyYWN0U2VsZWN0KG1ldGhvZE5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzZWxlY3RJbmRleCA9IG1ldGhvZE5hbWUuaW5kZXhPZihRdWVyeUNsYXVzZS5TRUxFQ1QpO1xuICAgIGlmIChzZWxlY3RJbmRleCA9PT0gLTEpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBhZnRlclNlbGVjdCA9IG1ldGhvZE5hbWUuc3Vic3RyaW5nKFxuICAgICAgc2VsZWN0SW5kZXggKyBRdWVyeUNsYXVzZS5TRUxFQ1QubGVuZ3RoXG4gICAgKTtcblxuICAgIC8vIFNlYXJjaCBmb3IgbmV4dCBUaGVuLCBHcm91cEJ5LCBPcmRlckJ5Li4uXG4gICAgY29uc3QgbWF0Y2ggPSBhZnRlclNlbGVjdC5tYXRjaCgvKFRoZW5bQS1aXXxPcmRlckJ5fEdyb3VwQnl8TGltaXR8T2Zmc2V0KS8pO1xuXG4gICAgY29uc3Qgc2VsZWN0UGFydCA9IG1hdGNoXG4gICAgICA/IGFmdGVyU2VsZWN0LnN1YnN0cmluZygwLCBtYXRjaC5pbmRleClcbiAgICAgIDogYWZ0ZXJTZWxlY3Q7XG5cbiAgICByZXR1cm4gc2VsZWN0UGFydC5zcGxpdChRdWVyeUNsYXVzZS5BTkQpLm1hcChsb3dlckZpcnN0KS5maWx0ZXIoQm9vbGVhbik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEV4dHJhY3RzIHRoZSBncm91cCBieSBjbGF1c2UgZnJvbSBhIG1ldGhvZCBuYW1lLlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBEZXRlY3RzIHRoZSBgR3JvdXBCeWAga2V5d29yZCBpbiB0aGUgbWV0aG9kIG5hbWUsIGlzb2xhdGVzIHRoZSBmaWVsZHMgZm9sbG93aW5nIGl0LFxuICAgKiBhbmQgcmV0dXJucyB0aGVtIGFzIGFuIGFycmF5IG9mIGxvd2VyY2FzZS1maXJzdCBzdHJpbmdzLlxuICAgKlxuICAgKiBAcGFyYW0gbWV0aG9kTmFtZSB7c3RyaW5nfSAtIFRoZSBtZXRob2QgbmFtZSB0byBwYXJzZS5cbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nW10gfCB1bmRlZmluZWR9IEFuIGFycmF5IG9mIGdyb3VwIGJ5IGZpZWxkcyBvciBgdW5kZWZpbmVkYCBpZiBubyBncm91cCBieSBjbGF1c2UgZXhpc3RzLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZXh0cmFjdEdyb3VwQnkobWV0aG9kTmFtZTogc3RyaW5nKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGdyb3VwQnlJbmRleCA9IG1ldGhvZE5hbWUuaW5kZXhPZihRdWVyeUNsYXVzZS5HUk9VUF9CWSk7XG4gICAgaWYgKGdyb3VwQnlJbmRleCA9PT0gLTEpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBhZnRlciA9IG1ldGhvZE5hbWUuc3Vic3RyaW5nKFxuICAgICAgZ3JvdXBCeUluZGV4ICsgUXVlcnlDbGF1c2UuR1JPVVBfQlkubGVuZ3RoXG4gICAgKTtcbiAgICBjb25zdCBncm91cEJ5UGFydCA9IGFmdGVyLnNwbGl0KFF1ZXJ5Q2xhdXNlLk9SREVSX0JZKVswXTtcbiAgICByZXR1cm4gZ3JvdXBCeVBhcnRcbiAgICAgIC5zcGxpdChRdWVyeUNsYXVzZS5USEVOX0JZKVxuICAgICAgLm1hcChsb3dlckZpcnN0KVxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgfVxuXG4gIC8vIHByaXZhdGUgc3RhdGljIGV4dHJhY3RPcmRlckJ5KFxuICAvLyAgIG1ldGhvZE5hbWU6IHN0cmluZ1xuICAvLyApOiBPcmRlckJ5U2VsZWN0b3I8YW55PltdIHwgdW5kZWZpbmVkIHtcbiAgLy8gICBjb25zdCBvcmRlckJ5SW5kZXggPSBtZXRob2ROYW1lLmluZGV4T2YoUXVlcnlDbGF1c2UuT1JERVJfQlkpO1xuICAvLyAgIGlmIChvcmRlckJ5SW5kZXggPT09IC0xKSByZXR1cm4gdW5kZWZpbmVkO1xuICAvL1xuICAvLyAgIGNvbnN0IGFmdGVyID0gbWV0aG9kTmFtZS5zdWJzdHJpbmcoXG4gIC8vICAgICBvcmRlckJ5SW5kZXggKyBRdWVyeUNsYXVzZS5PUkRFUl9CWS5sZW5ndGhcbiAgLy8gICApO1xuICAvLyAgIGNvbnN0IG9yZGVyUGFydHMgPSBhZnRlci5zcGxpdChcIlRoZW5CeVwiKTtcbiAgLy9cbiAgLy8gICByZXR1cm4gb3JkZXJQYXJ0cy5tYXAoKHBhcnQpID0+IHtcbiAgLy8gICAgIGNvbnN0IG1hdGNoID0gcGFydC5tYXRjaCgvKC4qPykoQXNjfERlc2N8RHNjKSQvKTtcbiAgLy8gICAgIGlmICghbWF0Y2gpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBPcmRlckJ5IHBhcnQ6ICR7cGFydH1gKTtcbiAgLy8gICAgIGNvbnN0IFssIGZpZWxkLCBkaXJdID0gbWF0Y2g7XG4gIC8vICAgICByZXR1cm4gW1xuICAvLyAgICAgICBsb3dlckZpcnN0KGZpZWxkKSxcbiAgLy8gICAgICAgZGlyLnRvTG93ZXJDYXNlKCkgPT09IFwiZHNjXCJcbiAgLy8gICAgICAgICA/IE9yZGVyRGlyZWN0aW9uLkRTQ1xuICAvLyAgICAgICAgIDogKGRpci50b0xvd2VyQ2FzZSgpIGFzIE9yZGVyRGlyZWN0aW9uKSxcbiAgLy8gICAgIF07XG4gIC8vICAgfSk7XG4gIC8vIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEJ1aWxkcyB0aGUgYHdoZXJlYCBjb25kaXRpb24gb2JqZWN0IGJhc2VkIG9uIHRoZSBwYXJzZWQgY29yZSBzdHJpbmcgYW5kIHBhcmFtZXRlciB2YWx1ZXMuXG4gICAqXG4gICAqIEBzdW1tYXJ5XG4gICAqIFNwbGl0cyB0aGUgY29yZSBzdHJpbmcgYnkgbG9naWNhbCBvcGVyYXRvcnMgKGBBbmRgLCBgT3JgKSwgcGFyc2VzIGVhY2ggdG9rZW4gaW50byBhIGZpZWxkXG4gICAqIGFuZCBvcGVyYXRvciwgYW5kIGNvbWJpbmVzIHRoZW0gaW50byBhIGBDb25kaXRpb25gIG9iamVjdCB1c2luZyB0aGUgcHJvdmlkZWQgdmFsdWVzLlxuICAgKlxuICAgKiBAcGFyYW0gY29yZSB7c3RyaW5nfSAtIFRoZSBleHRyYWN0ZWQgY29yZSBzdHJpbmcgZnJvbSB0aGUgbWV0aG9kIG5hbWUuXG4gICAqIEBwYXJhbSB2YWx1ZXMge2FueVtdfSAtIFRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgY29uZGl0aW9ucy5cbiAgICpcbiAgICogQHJldHVybiB7Q29uZGl0aW9uPGFueT59IEEgc3RydWN0dXJlZCBjb25kaXRpb24gb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcXVlcnkncyB3aGVyZSBjbGF1c2UuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBidWlsZFdoZXJlKGNvcmU6IHN0cmluZywgdmFsdWVzOiBhbnlbXSk6IENvbmRpdGlvbjxhbnk+IHtcbiAgICBjb25zdCBwYXJ0cyA9IGNvcmUuc3BsaXQoL09yZGVyQnl8R3JvdXBCeS8pWzBdIHx8IFwiXCI7XG4gICAgY29uc3QgY29uZGl0aW9ucyA9IHBhcnRzLnNwbGl0KC9BbmR8T3IvKTtcblxuICAgIGNvbnN0IG9wZXJhdG9ycyA9IGNvcmUubWF0Y2goL0FuZHxPci9nKSB8fCBbXTtcblxuICAgIGxldCB3aGVyZTogQ29uZGl0aW9uPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBjb25kaXRpb25zLmZvckVhY2goKHRva2VuLCBpZHgpID0+IHtcbiAgICAgIGNvbnN0IHsgZmllbGQsIG9wZXJhdG9yIH0gPSB0aGlzLnBhcnNlRmllbGRBbmRPcGVyYXRvcih0b2tlbik7XG4gICAgICBjb25zdCBwYXJzZXIgPSBvcGVyYXRvciA/IE9wZXJhdG9yc01hcFtvcGVyYXRvcl0gOiBPcGVyYXRvcnNNYXAuRXF1YWxzO1xuICAgICAgaWYgKCFwYXJzZXIpIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgb3BlcmF0b3IgJHtvcGVyYXRvcn1gKTtcblxuICAgICAgY29uc3QgY29uZGl0aW9uVmFsdWUgPSB2YWx1ZXNbaWR4XTtcbiAgICAgIGlmICh0eXBlb2YgY29uZGl0aW9uVmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHZhbHVlIGZvciBmaWVsZCAke2ZpZWxkfWApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb25kaXRpb24gPSBwYXJzZXIoZmllbGQsIGNvbmRpdGlvblZhbHVlKTtcbiAgICAgIHdoZXJlID1cbiAgICAgICAgaWR4ID09PSAwXG4gICAgICAgICAgPyBjb25kaXRpb25cbiAgICAgICAgICA6IG9wZXJhdG9yc1tpZHggLSAxXSA9PT0gUXVlcnlDbGF1c2UuQU5EXG4gICAgICAgICAgICA/IHdoZXJlIS5hbmQoY29uZGl0aW9uKVxuICAgICAgICAgICAgOiB3aGVyZSEub3IoY29uZGl0aW9uKTtcbiAgICB9KTtcblxuICAgIGlmICghd2hlcmUpIHRocm93IG5ldyBFcnJvcihcIk5vIGNvbmRpdGlvbnMgZm91bmQgaW4gbWV0aG9kIG5hbWVcIik7XG4gICAgcmV0dXJuIHdoZXJlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBQYXJzZXMgYSBmaWVsZCBuYW1lIGFuZCBvcGVyYXRvciBmcm9tIGEgc3RyaW5nIHRva2VuLlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBJZGVudGlmaWVzIHRoZSBvcGVyYXRvciBzdWZmaXggKGlmIHByZXNlbnQpIGFuZCByZXR1cm5zIGEgZGVzY3JpcHRvciBjb250YWluaW5nIHRoZSBmaWVsZFxuICAgKiBuYW1lIGluIGxvd2VyY2FzZS1maXJzdCBmb3JtYXQgYWxvbmcgd2l0aCB0aGUgb3BlcmF0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBzdHIge3N0cmluZ30gLSBUaGUgdG9rZW4gc3RyaW5nIHRvIHBhcnNlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtGaWx0ZXJEZXNjcmlwdG9yfSBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgZmllbGQgbmFtZSBhbmQgb3BlcmF0b3IuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBwYXJzZUZpZWxkQW5kT3BlcmF0b3Ioc3RyOiBzdHJpbmcpOiBGaWx0ZXJEZXNjcmlwdG9yIHtcbiAgICBmb3IgKGNvbnN0IG9wZXJhdG9yIG9mIE9iamVjdC5rZXlzKE9wZXJhdG9yc01hcCkpIHtcbiAgICAgIGlmIChzdHIuZW5kc1dpdGgob3BlcmF0b3IpKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gc3RyLnNsaWNlKDAsIC1vcGVyYXRvci5sZW5ndGgpO1xuICAgICAgICByZXR1cm4geyBmaWVsZDogbG93ZXJGaXJzdChmaWVsZCksIG9wZXJhdG9yIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGZpZWxkOiBsb3dlckZpcnN0KHN0cikgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRXh0cmFjdHMgYG9yZGVyQnlgLCBgbGltaXRgLCBhbmQgYG9mZnNldGAgY2xhdXNlcyBmcm9tIG1ldGhvZCBhcmd1bWVudHMuXG4gICAqXG4gICAqIEBzdW1tYXJ5XG4gICAqIERldGVybWluZXMgdGhlIG51bWJlciBvZiBjb25kaXRpb24gYXJndW1lbnRzLCB0aGVuIGNoZWNrcyB0aGUgcmVtYWluaW5nIGFyZ3VtZW50c1xuICAgKiB0byByZXNvbHZlIHNvcnRpbmcsIGxpbWl0aW5nLCBhbmQgcGFnaW5hdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGNvcmUge3N0cmluZ30gLSBUaGUgZXh0cmFjdGVkIGNvcmUgc3RyaW5nIGZyb20gdGhlIG1ldGhvZCBuYW1lLlxuICAgKiBAcGFyYW0gdmFsdWVzIHthbnlbXX0gLSBUaGUgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gbWV0aG9kIGFyZ3VtZW50cywgaW5jbHVkaW5nIGNvbmRpdGlvbnMgYW5kIGV4dHJhcy5cbiAgICpcbiAgICogQHJldHVybiB7e1xuICAgKiAgIG9yZGVyQnk/OiBPcmRlckJ5U2VsZWN0b3I8YW55PltdO1xuICAgKiAgIGxpbWl0PzogbnVtYmVyO1xuICAgKiAgIG9mZnNldD86IG51bWJlcjtcbiAgICogfX0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgb3JkZXJCeSwgbGltaXQsIGFuZCBvZmZzZXQgdmFsdWVzIGlmIHByZXNlbnQuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBleHRyYWN0T3JkZXJMaW1pdE9mZnNldChcbiAgICBjb3JlOiBzdHJpbmcsXG4gICAgdmFsdWVzOiBhbnlbXVxuICApOiB7IG9yZGVyQnk/OiBPcmRlckJ5U2VsZWN0b3I8YW55PltdOyBsaW1pdD86IG51bWJlcjsgb2Zmc2V0PzogbnVtYmVyIH0ge1xuICAgIGNvbnN0IGNvbmRpdGlvbkNvdW50ID0gY29yZS5zcGxpdCgvQW5kfE9yLykubGVuZ3RoO1xuICAgIGNvbnN0IGV4dHJhQXJncyA9IHZhbHVlcy5zbGljZShjb25kaXRpb25Db3VudCk7XG5cbiAgICBsZXQgb3JkZXJCeTogT3JkZXJCeVNlbGVjdG9yPGFueT5bXSB8IHVuZGVmaW5lZDtcbiAgICBsZXQgbGltaXQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBsZXQgb2Zmc2V0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZXh0cmFBcmdzLmxlbmd0aCA+PSAxICYmIEFycmF5LmlzQXJyYXkoZXh0cmFBcmdzWzBdKSlcbiAgICAgIG9yZGVyQnkgPSBleHRyYUFyZ3NbMF0gYXMgT3JkZXJCeVNlbGVjdG9yPGFueT5bXTtcblxuICAgIGlmIChleHRyYUFyZ3MubGVuZ3RoID49IDIgJiYgdHlwZW9mIGV4dHJhQXJnc1sxXSA9PT0gXCJudW1iZXJcIilcbiAgICAgIGxpbWl0ID0gZXh0cmFBcmdzWzFdO1xuXG4gICAgaWYgKGV4dHJhQXJncy5sZW5ndGggPj0gMyAmJiB0eXBlb2YgZXh0cmFBcmdzWzJdID09PSBcIm51bWJlclwiKVxuICAgICAgb2Zmc2V0ID0gZXh0cmFBcmdzWzJdO1xuXG4gICAgcmV0dXJuIHsgb3JkZXJCeSwgbGltaXQsIG9mZnNldCB9O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ import { QueryOptions } from "./types";
2
+ export declare function query(options?: QueryOptions): (target: object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<any>) => TypedPropertyDescriptor<any> | void;
@@ -0,0 +1,45 @@
1
+ import { MethodQueryBuilder } from "./MethodQueryBuilder.js";
2
+ import { QueryError } from "./errors.js";
3
+ export function query(options = {}) {
4
+ return (target, propertyKey, descriptor) => {
5
+ // const originalMethod = descriptor.value;
6
+ const methodName = propertyKey.toString();
7
+ descriptor.value = function (...args) {
8
+ const { select, where, groupBy, orderBy, limit, offset } = MethodQueryBuilder.build(methodName, ...args);
9
+ let stmt = this.select(select);
10
+ if (where)
11
+ stmt = stmt.where(where);
12
+ // if (orderBy) stmt = stmt.orderBy(orderBy[0]);
13
+ if (groupBy) {
14
+ // group by not implemented yet
15
+ /* stmt = stmt.groupBy(groupBy); */
16
+ }
17
+ // allow limit and offset by default
18
+ const { allowLimit, allowOffset, allowOrderBy, throws } = {
19
+ allowLimit: true,
20
+ allowOrderBy: true,
21
+ allowOffset: true,
22
+ throws: true,
23
+ ...options,
24
+ };
25
+ const params = [
26
+ // keep the order to ensure the expected behavior
27
+ { key: "orderBy", value: (orderBy || [])[0], allowed: allowOrderBy }, // orderBy only supports one sentence
28
+ { key: "limit", value: limit, allowed: allowLimit },
29
+ { key: "offset", value: offset, allowed: allowOffset },
30
+ ];
31
+ for (const param of params) {
32
+ if (param.value !== undefined) {
33
+ if (!param.allowed && throws) {
34
+ throw new QueryError(`${param.key[0].toUpperCase() + param.key.slice(1)} is not allowed for this query`);
35
+ }
36
+ else if (param.allowed) {
37
+ stmt = stmt[param.key](param.value);
38
+ }
39
+ }
40
+ }
41
+ return stmt.execute();
42
+ };
43
+ };
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9xdWVyeS9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQ0FBNkI7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxvQkFBaUI7QUFFdEMsTUFBTSxVQUFVLEtBQUssQ0FBQyxVQUF3QixFQUFFO0lBQzlDLE9BQU8sQ0FDTCxNQUFjLEVBQ2QsV0FBNEIsRUFDNUIsVUFBd0MsRUFDSCxFQUFFO1FBQ3ZDLDJDQUEyQztRQUMzQyxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUMsVUFBVSxDQUFDLEtBQUssR0FBRyxVQUFVLEdBQUcsSUFBVztZQUN6QyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FDdEQsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBRWhELElBQUksSUFBSSxHQUFJLElBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFRLENBQUM7WUFDL0MsSUFBSSxLQUFLO2dCQUFFLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BDLGdEQUFnRDtZQUNoRCxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLCtCQUErQjtnQkFDL0IsbUNBQW1DO1lBQ3JDLENBQUM7WUFFRCxvQ0FBb0M7WUFDcEMsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHO2dCQUN4RCxVQUFVLEVBQUUsSUFBSTtnQkFDaEIsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixNQUFNLEVBQUUsSUFBSTtnQkFDWixHQUFHLE9BQU87YUFDSyxDQUFDO1lBRWxCLE1BQU0sTUFBTSxHQUFHO2dCQUNiLGlEQUFpRDtnQkFDakQsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUscUNBQXFDO2dCQUMzRyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFO2dCQUNuRCxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFO2FBQ3ZELENBQUM7WUFFRixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUMzQixJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLE1BQU0sRUFBRSxDQUFDO3dCQUM3QixNQUFNLElBQUksVUFBVSxDQUNsQixHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUNuRixDQUFDO29CQUNKLENBQUM7eUJBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQ3pCLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDdEMsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRdWVyeU9wdGlvbnMgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgTWV0aG9kUXVlcnlCdWlsZGVyIH0gZnJvbSBcIi4vTWV0aG9kUXVlcnlCdWlsZGVyXCI7XG5pbXBvcnQgeyBRdWVyeUVycm9yIH0gZnJvbSBcIi4vZXJyb3JzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeShvcHRpb25zOiBRdWVyeU9wdGlvbnMgPSB7fSkge1xuICByZXR1cm4gKFxuICAgIHRhcmdldDogb2JqZWN0LFxuICAgIHByb3BlcnR5S2V5OiBzdHJpbmcgfCBzeW1ib2wsXG4gICAgZGVzY3JpcHRvcjogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8YW55PlxuICApOiBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxhbnk+IHwgdm9pZCA9PiB7XG4gICAgLy8gY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleS50b1N0cmluZygpO1xuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcbiAgICAgIGNvbnN0IHsgc2VsZWN0LCB3aGVyZSwgZ3JvdXBCeSwgb3JkZXJCeSwgbGltaXQsIG9mZnNldCB9ID1cbiAgICAgICAgTWV0aG9kUXVlcnlCdWlsZGVyLmJ1aWxkKG1ldGhvZE5hbWUsIC4uLmFyZ3MpO1xuXG4gICAgICBsZXQgc3RtdCA9ICh0aGlzIGFzIGFueSkuc2VsZWN0KHNlbGVjdCkgYXMgYW55O1xuICAgICAgaWYgKHdoZXJlKSBzdG10ID0gc3RtdC53aGVyZSh3aGVyZSk7XG4gICAgICAvLyBpZiAob3JkZXJCeSkgc3RtdCA9IHN0bXQub3JkZXJCeShvcmRlckJ5WzBdKTtcbiAgICAgIGlmIChncm91cEJ5KSB7XG4gICAgICAgIC8vIGdyb3VwIGJ5IG5vdCBpbXBsZW1lbnRlZCB5ZXRcbiAgICAgICAgLyogc3RtdCA9IHN0bXQuZ3JvdXBCeShncm91cEJ5KTsgKi9cbiAgICAgIH1cblxuICAgICAgLy8gYWxsb3cgbGltaXQgYW5kIG9mZnNldCBieSBkZWZhdWx0XG4gICAgICBjb25zdCB7IGFsbG93TGltaXQsIGFsbG93T2Zmc2V0LCBhbGxvd09yZGVyQnksIHRocm93cyB9ID0ge1xuICAgICAgICBhbGxvd0xpbWl0OiB0cnVlLFxuICAgICAgICBhbGxvd09yZGVyQnk6IHRydWUsXG4gICAgICAgIGFsbG93T2Zmc2V0OiB0cnVlLFxuICAgICAgICB0aHJvd3M6IHRydWUsXG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICB9IGFzIFF1ZXJ5T3B0aW9ucztcblxuICAgICAgY29uc3QgcGFyYW1zID0gW1xuICAgICAgICAvLyBrZWVwIHRoZSBvcmRlciB0byBlbnN1cmUgdGhlIGV4cGVjdGVkIGJlaGF2aW9yXG4gICAgICAgIHsga2V5OiBcIm9yZGVyQnlcIiwgdmFsdWU6IChvcmRlckJ5IHx8IFtdKVswXSwgYWxsb3dlZDogYWxsb3dPcmRlckJ5IH0sIC8vIG9yZGVyQnkgb25seSBzdXBwb3J0cyBvbmUgc2VudGVuY2VcbiAgICAgICAgeyBrZXk6IFwibGltaXRcIiwgdmFsdWU6IGxpbWl0LCBhbGxvd2VkOiBhbGxvd0xpbWl0IH0sXG4gICAgICAgIHsga2V5OiBcIm9mZnNldFwiLCB2YWx1ZTogb2Zmc2V0LCBhbGxvd2VkOiBhbGxvd09mZnNldCB9LFxuICAgICAgXTtcblxuICAgICAgZm9yIChjb25zdCBwYXJhbSBvZiBwYXJhbXMpIHtcbiAgICAgICAgaWYgKHBhcmFtLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAoIXBhcmFtLmFsbG93ZWQgJiYgdGhyb3dzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihcbiAgICAgICAgICAgICAgYCR7cGFyYW0ua2V5WzBdLnRvVXBwZXJDYXNlKCkgKyBwYXJhbS5rZXkuc2xpY2UoMSl9IGlzIG5vdCBhbGxvd2VkIGZvciB0aGlzIHF1ZXJ5YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtLmFsbG93ZWQpIHtcbiAgICAgICAgICAgIHN0bXQgPSBzdG10W3BhcmFtLmtleV0ocGFyYW0udmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3RtdC5leGVjdXRlKCk7XG4gICAgfTtcbiAgfTtcbn1cbiJdfQ==
@@ -5,3 +5,7 @@ export * from "./options";
5
5
  export * from "./Paginator";
6
6
  export * from "./selectors";
7
7
  export * from "./Statement";
8
+ export * from "./decorators";
9
+ export * from "./MethodQueryBuilder";
10
+ export * from "./types";
11
+ export * from "./utils";
@@ -5,4 +5,8 @@ export * from "./options.js";
5
5
  export * from "./Paginator.js";
6
6
  export * from "./selectors.js";
7
7
  export * from "./Statement.js";
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcXVlcnkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQTRCO0FBQzVCLCtCQUE0QjtBQUM1Qiw0QkFBeUI7QUFDekIsNkJBQTBCO0FBQzFCLCtCQUE0QjtBQUM1QiwrQkFBNEI7QUFDNUIsK0JBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vQ29uZGl0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Vycm9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vb3B0aW9uc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vUGFnaW5hdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zZWxlY3RvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1N0YXRlbWVudFwiO1xuIl19
8
+ export * from "./decorators.js";
9
+ export * from "./MethodQueryBuilder.js";
10
+ export * from "./types.js";
11
+ export * from "./utils.js";
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcXVlcnkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQTRCO0FBQzVCLCtCQUE0QjtBQUM1Qiw0QkFBeUI7QUFDekIsNkJBQTBCO0FBQzFCLCtCQUE0QjtBQUM1QiwrQkFBNEI7QUFDNUIsK0JBQTRCO0FBQzVCLGdDQUE2QjtBQUM3Qix3Q0FBcUM7QUFDckMsMkJBQXdCO0FBQ3hCLDJCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL0NvbmRpdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lcnJvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL29wdGlvbnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1BhZ2luYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2VsZWN0b3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9TdGF0ZW1lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlY29yYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL01ldGhvZFF1ZXJ5QnVpbGRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzXCI7XG4iXX0=