@decaf-ts/for-couchdb 0.0.2

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 (111) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +297 -0
  3. package/dist/esm/for-couchdb.bundle.min.esm.js +2 -0
  4. package/dist/esm/for-couchdb.bundle.min.esm.js.LICENSE.txt +25 -0
  5. package/dist/for-couchdb.bundle.min.js +2 -0
  6. package/dist/for-couchdb.bundle.min.js.LICENSE.txt +25 -0
  7. package/lib/adapter.cjs +332 -0
  8. package/lib/adapter.d.ts +32 -0
  9. package/lib/constants.cjs +15 -0
  10. package/lib/constants.d.ts +10 -0
  11. package/lib/errors.cjs +12 -0
  12. package/lib/errors.d.ts +4 -0
  13. package/lib/esm/adapter.d.ts +32 -0
  14. package/lib/esm/adapter.js +328 -0
  15. package/lib/esm/constants.d.ts +10 -0
  16. package/lib/esm/constants.js +12 -0
  17. package/lib/esm/errors.d.ts +4 -0
  18. package/lib/esm/errors.js +8 -0
  19. package/lib/esm/index.d.ts +24 -0
  20. package/lib/esm/index.js +26 -0
  21. package/lib/esm/indexes/generator.d.ts +3 -0
  22. package/lib/esm/indexes/generator.js +72 -0
  23. package/lib/esm/indexes/index.d.ts +2 -0
  24. package/lib/esm/indexes/index.js +4 -0
  25. package/lib/esm/indexes/types.d.ts +11 -0
  26. package/lib/esm/indexes/types.js +3 -0
  27. package/lib/esm/interfaces/CouchDBRepository.d.ts +7 -0
  28. package/lib/esm/interfaces/CouchDBRepository.js +3 -0
  29. package/lib/esm/interfaces/index.d.ts +1 -0
  30. package/lib/esm/interfaces/index.js +3 -0
  31. package/lib/esm/model/CouchDBSequence.d.ts +20 -0
  32. package/lib/esm/model/CouchDBSequence.js +49 -0
  33. package/lib/esm/model/index.d.ts +1 -0
  34. package/lib/esm/model/index.js +3 -0
  35. package/lib/esm/query/FromClause.d.ts +7 -0
  36. package/lib/esm/query/FromClause.js +21 -0
  37. package/lib/esm/query/InsertClause.d.ts +7 -0
  38. package/lib/esm/query/InsertClause.js +14 -0
  39. package/lib/esm/query/Paginator.d.ts +10 -0
  40. package/lib/esm/query/Paginator.js +58 -0
  41. package/lib/esm/query/SelectClause.d.ts +7 -0
  42. package/lib/esm/query/SelectClause.js +17 -0
  43. package/lib/esm/query/Statement.d.ts +13 -0
  44. package/lib/esm/query/Statement.js +55 -0
  45. package/lib/esm/query/ValuesClause.d.ts +7 -0
  46. package/lib/esm/query/ValuesClause.js +13 -0
  47. package/lib/esm/query/WhereClause.d.ts +7 -0
  48. package/lib/esm/query/WhereClause.js +58 -0
  49. package/lib/esm/query/constants.d.ts +4 -0
  50. package/lib/esm/query/constants.js +22 -0
  51. package/lib/esm/query/factory.d.ts +24 -0
  52. package/lib/esm/query/factory.js +118 -0
  53. package/lib/esm/query/index.d.ts +1 -0
  54. package/lib/esm/query/index.js +3 -0
  55. package/lib/esm/query/translate.d.ts +3 -0
  56. package/lib/esm/query/translate.js +12 -0
  57. package/lib/esm/sequences/Sequence.d.ts +48 -0
  58. package/lib/esm/sequences/Sequence.js +127 -0
  59. package/lib/esm/sequences/index.d.ts +1 -0
  60. package/lib/esm/sequences/index.js +3 -0
  61. package/lib/esm/sequences/utils.d.ts +1 -0
  62. package/lib/esm/sequences/utils.js +17 -0
  63. package/lib/esm/utils.d.ts +7 -0
  64. package/lib/esm/utils.js +72 -0
  65. package/lib/index.cjs +43 -0
  66. package/lib/index.d.ts +24 -0
  67. package/lib/indexes/generator.cjs +75 -0
  68. package/lib/indexes/generator.d.ts +3 -0
  69. package/lib/indexes/index.cjs +20 -0
  70. package/lib/indexes/index.d.ts +2 -0
  71. package/lib/indexes/types.cjs +4 -0
  72. package/lib/indexes/types.d.ts +11 -0
  73. package/lib/interfaces/CouchDBRepository.cjs +4 -0
  74. package/lib/interfaces/CouchDBRepository.d.ts +7 -0
  75. package/lib/interfaces/index.cjs +19 -0
  76. package/lib/interfaces/index.d.ts +1 -0
  77. package/lib/model/CouchDBSequence.cjs +52 -0
  78. package/lib/model/CouchDBSequence.d.ts +20 -0
  79. package/lib/model/index.cjs +19 -0
  80. package/lib/model/index.d.ts +1 -0
  81. package/lib/query/FromClause.cjs +25 -0
  82. package/lib/query/FromClause.d.ts +7 -0
  83. package/lib/query/InsertClause.cjs +18 -0
  84. package/lib/query/InsertClause.d.ts +7 -0
  85. package/lib/query/Paginator.cjs +62 -0
  86. package/lib/query/Paginator.d.ts +10 -0
  87. package/lib/query/SelectClause.cjs +21 -0
  88. package/lib/query/SelectClause.d.ts +7 -0
  89. package/lib/query/Statement.cjs +59 -0
  90. package/lib/query/Statement.d.ts +13 -0
  91. package/lib/query/ValuesClause.cjs +17 -0
  92. package/lib/query/ValuesClause.d.ts +7 -0
  93. package/lib/query/WhereClause.cjs +62 -0
  94. package/lib/query/WhereClause.d.ts +7 -0
  95. package/lib/query/constants.cjs +25 -0
  96. package/lib/query/constants.d.ts +4 -0
  97. package/lib/query/factory.cjs +122 -0
  98. package/lib/query/factory.d.ts +24 -0
  99. package/lib/query/index.cjs +19 -0
  100. package/lib/query/index.d.ts +1 -0
  101. package/lib/query/translate.cjs +15 -0
  102. package/lib/query/translate.d.ts +3 -0
  103. package/lib/sequences/Sequence.cjs +131 -0
  104. package/lib/sequences/Sequence.d.ts +48 -0
  105. package/lib/sequences/index.cjs +19 -0
  106. package/lib/sequences/index.d.ts +1 -0
  107. package/lib/sequences/utils.cjs +20 -0
  108. package/lib/sequences/utils.d.ts +1 -0
  109. package/lib/utils.cjs +79 -0
  110. package/lib/utils.d.ts +7 -0
  111. package/package.json +124 -0
@@ -0,0 +1,49 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { model, required } from "@decaf-ts/decorator-validation";
11
+ import { BaseModel, pk, index, table, uses } from "@decaf-ts/core";
12
+ let Sequence = class Sequence extends BaseModel {
13
+ constructor(seq) {
14
+ super(seq);
15
+ /**
16
+ * @summary the Primary key for the DBSequence
17
+ * @prop name
18
+ *
19
+ * @see pk
20
+ */
21
+ this.id = undefined;
22
+ /**
23
+ * @summary the current value for the DBSequence
24
+ * @prop current
25
+ *
26
+ * @see required
27
+ * @see index
28
+ */
29
+ this.current = undefined;
30
+ }
31
+ };
32
+ __decorate([
33
+ pk(),
34
+ __metadata("design:type", String)
35
+ ], Sequence.prototype, "id", void 0);
36
+ __decorate([
37
+ required(),
38
+ index(),
39
+ __metadata("design:type", Object)
40
+ ], Sequence.prototype, "current", void 0);
41
+ Sequence = __decorate([
42
+ table("??sequence"),
43
+ uses("nano"),
44
+ model(),
45
+ __metadata("design:paramtypes", [Object])
46
+ ], Sequence);
47
+ export { Sequence };
48
+
49
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9Db3VjaERCU2VxdWVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLEtBQUssRUFBWSxRQUFRLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzVELElBQU0sUUFBUSxHQUFkLE1BQU0sUUFBUyxTQUFRLFNBQVM7SUFvQnJDLFlBQVksR0FBd0I7UUFDbEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBcEJiOzs7OztXQUtHO1FBRUgsT0FBRSxHQUFZLFNBQVMsQ0FBQztRQUN4Qjs7Ozs7O1dBTUc7UUFHSCxZQUFPLEdBQXFCLFNBQVMsQ0FBQztJQUl0QyxDQUFDO0NBQ0YsQ0FBQTtBQWZDO0lBREMsRUFBRSxFQUFFOztvQ0FDbUI7QUFVeEI7SUFGQyxRQUFRLEVBQUU7SUFDVixLQUFLLEVBQUU7O3lDQUM4QjtBQWxCM0IsUUFBUTtJQUhwQixLQUFLLENBQUMsWUFBWSxDQUFDO0lBQ25CLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDWixLQUFLLEVBQUU7O0dBQ0ssUUFBUSxDQXVCcEIiLCJmaWxlIjoibW9kZWwvQ291Y2hEQlNlcXVlbmNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW9kZWwsIE1vZGVsQXJnLCByZXF1aXJlZCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEJhc2VNb2RlbCwgcGssIGluZGV4LCB0YWJsZSwgdXNlcyB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuXG5AdGFibGUoXCI/P3NlcXVlbmNlXCIpXG5AdXNlcyhcIm5hbm9cIilcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgU2VxdWVuY2UgZXh0ZW5kcyBCYXNlTW9kZWwge1xuICAvKipcbiAgICogQHN1bW1hcnkgdGhlIFByaW1hcnkga2V5IGZvciB0aGUgREJTZXF1ZW5jZVxuICAgKiBAcHJvcCBuYW1lXG4gICAqXG4gICAqIEBzZWUgcGtcbiAgICovXG4gIEBwaygpXG4gIGlkPzogc3RyaW5nID0gdW5kZWZpbmVkO1xuICAvKipcbiAgICogQHN1bW1hcnkgdGhlIGN1cnJlbnQgdmFsdWUgZm9yIHRoZSBEQlNlcXVlbmNlXG4gICAqIEBwcm9wIGN1cnJlbnRcbiAgICpcbiAgICogQHNlZSByZXF1aXJlZFxuICAgKiBAc2VlIGluZGV4XG4gICAqL1xuICBAcmVxdWlyZWQoKVxuICBAaW5kZXgoKVxuICBjdXJyZW50Pzogc3RyaW5nIHwgbnVtYmVyID0gdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHNlcT86IE1vZGVsQXJnPFNlcXVlbmNlPikge1xuICAgIHN1cGVyKHNlcSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1 @@
1
+ export * from "./CouchDBSequence";
@@ -0,0 +1,3 @@
1
+ export * from "./CouchDBSequence";
2
+
3
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDIiwiZmlsZSI6Im1vZGVsL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vQ291Y2hEQlNlcXVlbmNlXCI7XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import { FromClause } from "@decaf-ts/core";
2
+ import { MangoQuery } from "nano";
3
+ import { ModelArg, Model } from "@decaf-ts/decorator-validation";
4
+ export declare class CouchDBFromClause<M extends Model> extends FromClause<MangoQuery, M> {
5
+ constructor(clause: ModelArg<FromClause<MangoQuery, M>>);
6
+ build(previous: MangoQuery): MangoQuery;
7
+ }
@@ -0,0 +1,21 @@
1
+ import { FromClause } from "@decaf-ts/core";
2
+ import { CouchDBKeys } from "../constants";
3
+ import { Repository } from "@decaf-ts/core";
4
+ // noinspection JSAnnotator
5
+ export class CouchDBFromClause extends FromClause {
6
+ constructor(clause) {
7
+ super(clause);
8
+ }
9
+ build(previous) {
10
+ const selectors = {};
11
+ selectors[CouchDBKeys.TABLE] = {};
12
+ selectors[CouchDBKeys.TABLE] =
13
+ typeof this.selector === "string"
14
+ ? this.selector
15
+ : Repository.table(this.selector);
16
+ previous.selector = selectors;
17
+ return previous;
18
+ }
19
+ }
20
+
21
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9Gcm9tQ2xhdXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1QywyQkFBMkI7QUFDM0IsTUFBTSxPQUFPLGlCQUFtQyxTQUFRLFVBR3ZEO0lBQ0MsWUFBWSxNQUEyQztRQUNyRCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFvQjtRQUN4QixNQUFNLFNBQVMsR0FBUSxFQUFFLENBQUM7UUFDMUIsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbEMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVE7Z0JBQy9CLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDZixDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBMEIsQ0FBQyxDQUFDO1FBQ3hELFFBQVEsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzlCLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsImZpbGUiOiJxdWVyeS9Gcm9tQ2xhdXNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRnJvbUNsYXVzZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgTWFuZ29RdWVyeSB9IGZyb20gXCJuYW5vXCI7XG5pbXBvcnQgeyBNb2RlbEFyZywgTW9kZWwsIENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgQ291Y2hEQktleXMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5cbi8vIG5vaW5zcGVjdGlvbiBKU0Fubm90YXRvclxuZXhwb3J0IGNsYXNzIENvdWNoREJGcm9tQ2xhdXNlPE0gZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBGcm9tQ2xhdXNlPFxuICBNYW5nb1F1ZXJ5LFxuICBNXG4+IHtcbiAgY29uc3RydWN0b3IoY2xhdXNlOiBNb2RlbEFyZzxGcm9tQ2xhdXNlPE1hbmdvUXVlcnksIE0+Pikge1xuICAgIHN1cGVyKGNsYXVzZSk7XG4gIH1cblxuICBidWlsZChwcmV2aW91czogTWFuZ29RdWVyeSk6IE1hbmdvUXVlcnkge1xuICAgIGNvbnN0IHNlbGVjdG9yczogYW55ID0ge307XG4gICAgc2VsZWN0b3JzW0NvdWNoREJLZXlzLlRBQkxFXSA9IHt9O1xuICAgIHNlbGVjdG9yc1tDb3VjaERCS2V5cy5UQUJMRV0gPVxuICAgICAgdHlwZW9mIHRoaXMuc2VsZWN0b3IgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyB0aGlzLnNlbGVjdG9yXG4gICAgICAgIDogUmVwb3NpdG9yeS50YWJsZSh0aGlzLnNlbGVjdG9yIGFzIENvbnN0cnVjdG9yPE0+KTtcbiAgICBwcmV2aW91cy5zZWxlY3RvciA9IHNlbGVjdG9ycztcbiAgICByZXR1cm4gcHJldmlvdXM7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ import { InsertClause } from "@decaf-ts/core";
2
+ import { MangoQuery } from "nano";
3
+ import { ModelArg, Model } from "@decaf-ts/decorator-validation";
4
+ export declare class CouchDBInsertClause<M extends Model> extends InsertClause<MangoQuery, M> {
5
+ constructor(clause: ModelArg<InsertClause<MangoQuery, M>>);
6
+ build(query: MangoQuery): MangoQuery;
7
+ }
@@ -0,0 +1,14 @@
1
+ import { InsertClause } from "@decaf-ts/core";
2
+ import { InternalError } from "@decaf-ts/db-decorators";
3
+ // noinspection JSAnnotator
4
+ export class CouchDBInsertClause extends InsertClause {
5
+ constructor(clause) {
6
+ super(clause);
7
+ }
8
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
9
+ build(query) {
10
+ throw new InternalError("Not supported");
11
+ }
12
+ }
13
+
14
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9JbnNlcnRDbGF1c2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCwyQkFBMkI7QUFDM0IsTUFBTSxPQUFPLG1CQUFxQyxTQUFRLFlBR3pEO0lBQ0MsWUFBWSxNQUE2QztRQUN2RCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELDZEQUE2RDtJQUM3RCxLQUFLLENBQUMsS0FBaUI7UUFDckIsTUFBTSxJQUFJLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0YiLCJmaWxlIjoicXVlcnkvSW5zZXJ0Q2xhdXNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5zZXJ0Q2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBNYW5nb1F1ZXJ5IH0gZnJvbSBcIm5hbm9cIjtcbmltcG9ydCB7IE1vZGVsQXJnLCBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcblxuLy8gbm9pbnNwZWN0aW9uIEpTQW5ub3RhdG9yXG5leHBvcnQgY2xhc3MgQ291Y2hEQkluc2VydENsYXVzZTxNIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgSW5zZXJ0Q2xhdXNlPFxuICBNYW5nb1F1ZXJ5LFxuICBNXG4+IHtcbiAgY29uc3RydWN0b3IoY2xhdXNlOiBNb2RlbEFyZzxJbnNlcnRDbGF1c2U8TWFuZ29RdWVyeSwgTT4+KSB7XG4gICAgc3VwZXIoY2xhdXNlKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgYnVpbGQocXVlcnk6IE1hbmdvUXVlcnkpOiBNYW5nb1F1ZXJ5IHtcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIk5vdCBzdXBwb3J0ZWRcIik7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,10 @@
1
+ import { Paginator, Statement } from "@decaf-ts/core";
2
+ import { MangoQuery } from "nano";
3
+ export declare class CouchDBPaginator<V> extends Paginator<V, MangoQuery> {
4
+ private bookMark?;
5
+ get total(): number;
6
+ get count(): number;
7
+ constructor(statement: Statement<MangoQuery>, size: number, rawStatement: MangoQuery);
8
+ protected prepare(rawStatement: MangoQuery): MangoQuery;
9
+ page(page?: number, ...args: any[]): Promise<V[]>;
10
+ }
@@ -0,0 +1,58 @@
1
+ import { Paginator, PagingError, } from "@decaf-ts/core";
2
+ import { DefaultSeparator, findPrimaryKey, InternalError, } from "@decaf-ts/db-decorators";
3
+ import { parseSequenceValue } from "../sequences/utils";
4
+ export class CouchDBPaginator extends Paginator {
5
+ get total() {
6
+ throw new InternalError(`The total pages api is not available for couchdb`);
7
+ }
8
+ get count() {
9
+ throw new InternalError(`The record count api is not available for couchdb`);
10
+ }
11
+ constructor(statement, size, rawStatement) {
12
+ super(statement, size, rawStatement);
13
+ }
14
+ prepare(rawStatement) {
15
+ const query = Object.assign({}, rawStatement);
16
+ if (query.limit)
17
+ this.limit = query.limit;
18
+ query.limit = this.size;
19
+ return query;
20
+ }
21
+ async page(page = 1, ...args) {
22
+ const statement = Object.assign({}, this.statement);
23
+ const target = this.stat.getTarget();
24
+ // if (!this._recordCount || !this._totalPages) {
25
+ // // this._recordCount = await this.adapter
26
+ // // .Query()
27
+ // // .count()
28
+ // // .from(target)
29
+ // // .execute<number>();
30
+ // }
31
+ if (page !== 1) {
32
+ if (!this.bookMark)
33
+ throw new PagingError("No bookmark. Did you start in the first page?");
34
+ statement["bookmark"] = this.bookMark;
35
+ }
36
+ const rawResult = await this.adapter.raw(statement, false, ...args);
37
+ const { docs, bookmark, warning } = rawResult;
38
+ if (warning)
39
+ console.warn(warning);
40
+ const results = statement.fields && statement.fields.length
41
+ ? docs // has fields means its not full model
42
+ : docs.map((d) => {
43
+ //no fields means we need to revert to saving process
44
+ if (!target)
45
+ throw new PagingError("No statement target defined");
46
+ const pkDef = findPrimaryKey(new target());
47
+ const pk = pkDef.id;
48
+ const originalId = d._id.split(DefaultSeparator);
49
+ originalId.splice(0, 1); // remove the table name
50
+ return this.adapter.revert(d, target, pk, parseSequenceValue(pkDef.props.type, originalId.join(DefaultSeparator)));
51
+ });
52
+ this.bookMark = bookmark;
53
+ this._currentPage = page;
54
+ return results;
55
+ }
56
+ }
57
+
58
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9QYWdpbmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxXQUFXLEdBR1osTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxhQUFhLEdBQ2QsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV4RCxNQUFNLE9BQU8sZ0JBQW9CLFNBQVEsU0FBd0I7SUFHL0QsSUFBSSxLQUFLO1FBQ1AsTUFBTSxJQUFJLGFBQWEsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxNQUFNLElBQUksYUFBYSxDQUNyQixtREFBbUQsQ0FDcEQsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUNFLFNBQWdDLEVBQ2hDLElBQVksRUFDWixZQUF3QjtRQUV4QixLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRVMsT0FBTyxDQUFDLFlBQXdCO1FBQ3hDLE1BQU0sS0FBSyxHQUFlLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzFELElBQUksS0FBSyxDQUFDLEtBQUs7WUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFFMUMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBRXhCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBZSxDQUFDLEVBQUUsR0FBRyxJQUFXO1FBQ3pDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JDLGlEQUFpRDtRQUNqRCw4Q0FBOEM7UUFDOUMsa0JBQWtCO1FBQ2xCLGtCQUFrQjtRQUNsQix1QkFBdUI7UUFDdkIsNkJBQTZCO1FBQzdCLElBQUk7UUFFSixJQUFJLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDaEIsTUFBTSxJQUFJLFdBQVcsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1lBQ3pFLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3hDLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBdUIsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FDMUQsU0FBUyxFQUNULEtBQUssRUFDTCxHQUFHLElBQUksQ0FDUixDQUFDO1FBRUYsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEdBQUcsU0FBUyxDQUFDO1FBQzlDLElBQUksT0FBTztZQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsTUFBTSxPQUFPLEdBQ1gsU0FBUyxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQ0FBc0M7WUFDN0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDYixxREFBcUQ7Z0JBQ3JELElBQUksQ0FBQyxNQUFNO29CQUFFLE1BQU0sSUFBSSxXQUFXLENBQUMsNkJBQTZCLENBQUMsQ0FBQztnQkFDbEUsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLElBQUksTUFBTSxFQUFFLENBR3hDLENBQUM7Z0JBQ0YsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDakQsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyx3QkFBd0I7Z0JBQ2pELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQ3hCLENBQUMsRUFDRCxNQUFNLEVBQ04sRUFBRSxFQUNGLGtCQUFrQixDQUNoQixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFDaEIsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUNsQyxDQUNGLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNULElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRiIsImZpbGUiOiJxdWVyeS9QYWdpbmF0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBQYWdpbmF0b3IsXG4gIFBhZ2luZ0Vycm9yLFxuICBTZXF1ZW5jZU9wdGlvbnMsXG4gIFN0YXRlbWVudCxcbn0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBNYW5nb1F1ZXJ5LCBNYW5nb1Jlc3BvbnNlIH0gZnJvbSBcIm5hbm9cIjtcbmltcG9ydCB7XG4gIERlZmF1bHRTZXBhcmF0b3IsXG4gIGZpbmRQcmltYXJ5S2V5LFxuICBJbnRlcm5hbEVycm9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IHBhcnNlU2VxdWVuY2VWYWx1ZSB9IGZyb20gXCIuLi9zZXF1ZW5jZXMvdXRpbHNcIjtcblxuZXhwb3J0IGNsYXNzIENvdWNoREJQYWdpbmF0b3I8Vj4gZXh0ZW5kcyBQYWdpbmF0b3I8ViwgTWFuZ29RdWVyeT4ge1xuICBwcml2YXRlIGJvb2tNYXJrPzogc3RyaW5nO1xuXG4gIGdldCB0b3RhbCgpOiBudW1iZXIge1xuICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBUaGUgdG90YWwgcGFnZXMgYXBpIGlzIG5vdCBhdmFpbGFibGUgZm9yIGNvdWNoZGJgKTtcbiAgfVxuXG4gIGdldCBjb3VudCgpOiBudW1iZXIge1xuICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgYFRoZSByZWNvcmQgY291bnQgYXBpIGlzIG5vdCBhdmFpbGFibGUgZm9yIGNvdWNoZGJgXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50PE1hbmdvUXVlcnk+LFxuICAgIHNpemU6IG51bWJlcixcbiAgICByYXdTdGF0ZW1lbnQ6IE1hbmdvUXVlcnlcbiAgKSB7XG4gICAgc3VwZXIoc3RhdGVtZW50LCBzaXplLCByYXdTdGF0ZW1lbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByZXBhcmUocmF3U3RhdGVtZW50OiBNYW5nb1F1ZXJ5KTogTWFuZ29RdWVyeSB7XG4gICAgY29uc3QgcXVlcnk6IE1hbmdvUXVlcnkgPSBPYmplY3QuYXNzaWduKHt9LCByYXdTdGF0ZW1lbnQpO1xuICAgIGlmIChxdWVyeS5saW1pdCkgdGhpcy5saW1pdCA9IHF1ZXJ5LmxpbWl0O1xuXG4gICAgcXVlcnkubGltaXQgPSB0aGlzLnNpemU7XG5cbiAgICByZXR1cm4gcXVlcnk7XG4gIH1cblxuICBhc3luYyBwYWdlKHBhZ2U6IG51bWJlciA9IDEsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxWW10+IHtcbiAgICBjb25zdCBzdGF0ZW1lbnQgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnN0YXRlbWVudCk7XG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5zdGF0LmdldFRhcmdldCgpO1xuICAgIC8vIGlmICghdGhpcy5fcmVjb3JkQ291bnQgfHwgIXRoaXMuX3RvdGFsUGFnZXMpIHtcbiAgICAvLyAgIC8vIHRoaXMuX3JlY29yZENvdW50ID0gYXdhaXQgdGhpcy5hZGFwdGVyXG4gICAgLy8gICAvLyAgIC5RdWVyeSgpXG4gICAgLy8gICAvLyAgIC5jb3VudCgpXG4gICAgLy8gICAvLyAgIC5mcm9tKHRhcmdldClcbiAgICAvLyAgIC8vICAgLmV4ZWN1dGU8bnVtYmVyPigpO1xuICAgIC8vIH1cblxuICAgIGlmIChwYWdlICE9PSAxKSB7XG4gICAgICBpZiAoIXRoaXMuYm9va01hcmspXG4gICAgICAgIHRocm93IG5ldyBQYWdpbmdFcnJvcihcIk5vIGJvb2ttYXJrLiBEaWQgeW91IHN0YXJ0IGluIHRoZSBmaXJzdCBwYWdlP1wiKTtcbiAgICAgIHN0YXRlbWVudFtcImJvb2ttYXJrXCJdID0gdGhpcy5ib29rTWFyaztcbiAgICB9XG4gICAgY29uc3QgcmF3UmVzdWx0OiBNYW5nb1Jlc3BvbnNlPGFueT4gPSBhd2FpdCB0aGlzLmFkYXB0ZXIucmF3KFxuICAgICAgc3RhdGVtZW50LFxuICAgICAgZmFsc2UsXG4gICAgICAuLi5hcmdzXG4gICAgKTtcblxuICAgIGNvbnN0IHsgZG9jcywgYm9va21hcmssIHdhcm5pbmcgfSA9IHJhd1Jlc3VsdDtcbiAgICBpZiAod2FybmluZykgY29uc29sZS53YXJuKHdhcm5pbmcpO1xuICAgIGNvbnN0IHJlc3VsdHMgPVxuICAgICAgc3RhdGVtZW50LmZpZWxkcyAmJiBzdGF0ZW1lbnQuZmllbGRzLmxlbmd0aFxuICAgICAgICA/IGRvY3MgLy8gaGFzIGZpZWxkcyBtZWFucyBpdHMgbm90IGZ1bGwgbW9kZWxcbiAgICAgICAgOiBkb2NzLm1hcCgoZCkgPT4ge1xuICAgICAgICAgICAgLy9ubyBmaWVsZHMgbWVhbnMgd2UgbmVlZCB0byByZXZlcnQgdG8gc2F2aW5nIHByb2Nlc3NcbiAgICAgICAgICAgIGlmICghdGFyZ2V0KSB0aHJvdyBuZXcgUGFnaW5nRXJyb3IoXCJObyBzdGF0ZW1lbnQgdGFyZ2V0IGRlZmluZWRcIik7XG4gICAgICAgICAgICBjb25zdCBwa0RlZiA9IGZpbmRQcmltYXJ5S2V5KG5ldyB0YXJnZXQoKSkgYXMge1xuICAgICAgICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICAgICAgICBwcm9wczogU2VxdWVuY2VPcHRpb25zO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHBrID0gcGtEZWYuaWQ7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbElkID0gZC5faWQuc3BsaXQoRGVmYXVsdFNlcGFyYXRvcik7XG4gICAgICAgICAgICBvcmlnaW5hbElkLnNwbGljZSgwLCAxKTsgLy8gcmVtb3ZlIHRoZSB0YWJsZSBuYW1lXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnJldmVydChcbiAgICAgICAgICAgICAgZCxcbiAgICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAgICBwayxcbiAgICAgICAgICAgICAgcGFyc2VTZXF1ZW5jZVZhbHVlKFxuICAgICAgICAgICAgICAgIHBrRGVmLnByb3BzLnR5cGUsXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxJZC5qb2luKERlZmF1bHRTZXBhcmF0b3IpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgdGhpcy5ib29rTWFyayA9IGJvb2ttYXJrO1xuICAgIHRoaXMuX2N1cnJlbnRQYWdlID0gcGFnZTtcbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxufVxuIl19
@@ -0,0 +1,7 @@
1
+ import { SelectClause } from "@decaf-ts/core";
2
+ import { MangoQuery } from "nano";
3
+ import { ModelArg, Model } from "@decaf-ts/decorator-validation";
4
+ export declare class CouchDBSelectClause<M extends Model> extends SelectClause<MangoQuery, M> {
5
+ constructor(clause: ModelArg<SelectClause<MangoQuery, M>>);
6
+ build(query: MangoQuery): MangoQuery;
7
+ }
@@ -0,0 +1,17 @@
1
+ import { Const, SelectClause } from "@decaf-ts/core";
2
+ export class CouchDBSelectClause extends SelectClause {
3
+ constructor(clause) {
4
+ super(clause);
5
+ }
6
+ build(query) {
7
+ if (!this.selector || this.selector === Const.FULL_RECORD)
8
+ return query;
9
+ query.fields =
10
+ typeof this.selector === "string"
11
+ ? [this.selector]
12
+ : this.selector;
13
+ return query;
14
+ }
15
+ }
16
+
17
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9TZWxlY3RDbGF1c2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlyRCxNQUFNLE9BQU8sbUJBQXFDLFNBQVEsWUFHekQ7SUFDQyxZQUFZLE1BQTZDO1FBQ3ZELEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQWlCO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLFdBQVc7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUN4RSxLQUFLLENBQUMsTUFBTTtZQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRO2dCQUMvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBa0IsQ0FBQztnQkFDM0IsQ0FBQyxDQUFFLElBQUksQ0FBQyxRQUFxQixDQUFDO1FBQ2xDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwiZmlsZSI6InF1ZXJ5L1NlbGVjdENsYXVzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0LCBTZWxlY3RDbGF1c2UgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IE1hbmdvUXVlcnkgfSBmcm9tIFwibmFub1wiO1xuaW1wb3J0IHsgTW9kZWxBcmcsIE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuXG5leHBvcnQgY2xhc3MgQ291Y2hEQlNlbGVjdENsYXVzZTxNIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgU2VsZWN0Q2xhdXNlPFxuICBNYW5nb1F1ZXJ5LFxuICBNXG4+IHtcbiAgY29uc3RydWN0b3IoY2xhdXNlOiBNb2RlbEFyZzxTZWxlY3RDbGF1c2U8TWFuZ29RdWVyeSwgTT4+KSB7XG4gICAgc3VwZXIoY2xhdXNlKTtcbiAgfVxuXG4gIGJ1aWxkKHF1ZXJ5OiBNYW5nb1F1ZXJ5KTogTWFuZ29RdWVyeSB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdG9yIHx8IHRoaXMuc2VsZWN0b3IgPT09IENvbnN0LkZVTExfUkVDT1JEKSByZXR1cm4gcXVlcnk7XG4gICAgcXVlcnkuZmllbGRzID1cbiAgICAgIHR5cGVvZiB0aGlzLnNlbGVjdG9yID09PSBcInN0cmluZ1wiXG4gICAgICAgID8gW3RoaXMuc2VsZWN0b3IgYXMgc3RyaW5nXVxuICAgICAgICA6ICh0aGlzLnNlbGVjdG9yIGFzIHN0cmluZ1tdKTtcbiAgICByZXR1cm4gcXVlcnk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import { DocumentScope, MangoQuery } from "nano";
2
+ import { Adapter, Statement } from "@decaf-ts/core";
3
+ import { Paginator } from "@decaf-ts/core";
4
+ export declare class CouchDBStatement extends Statement<MangoQuery> {
5
+ constructor(adapter: Adapter<DocumentScope<any>, MangoQuery>);
6
+ /**
7
+ * @inheritDoc
8
+ */
9
+ execute<Y>(): Promise<Y>;
10
+ paginate<R>(size: number): Promise<Paginator<R, MangoQuery>>;
11
+ private processRecord;
12
+ raw<R>(rawInput: MangoQuery, ...args: any[]): Promise<R>;
13
+ }
@@ -0,0 +1,55 @@
1
+ import { Statement } from "@decaf-ts/core";
2
+ import { findPrimaryKey, InternalError } from "@decaf-ts/db-decorators";
3
+ import { CouchDBKeys } from "../constants";
4
+ import { parseSequenceValue } from "../sequences/utils";
5
+ import { CouchDBPaginator } from "./Paginator";
6
+ export class CouchDBStatement extends Statement {
7
+ constructor(adapter) {
8
+ super(adapter);
9
+ }
10
+ /**
11
+ * @inheritDoc
12
+ */
13
+ async execute() {
14
+ try {
15
+ const query = this.build();
16
+ if (!query.limit)
17
+ query.limit = Number.MAX_SAFE_INTEGER;
18
+ return this.raw(query);
19
+ }
20
+ catch (e) {
21
+ throw new InternalError(e);
22
+ }
23
+ }
24
+ async paginate(size) {
25
+ try {
26
+ const query = this.build();
27
+ return new CouchDBPaginator(this, size, query);
28
+ }
29
+ catch (e) {
30
+ throw new InternalError(e);
31
+ }
32
+ }
33
+ processRecord(r, pkAttr, sequenceType) {
34
+ if (!r[CouchDBKeys.ID])
35
+ throw new InternalError(`No CouchDB Id definition found. Should not be possible`);
36
+ const [, ...keyArgs] = r[CouchDBKeys.ID].split("_");
37
+ const id = keyArgs.join("_");
38
+ return this.adapter.revert(r, this.target, pkAttr, parseSequenceValue(sequenceType, id));
39
+ }
40
+ async raw(rawInput, ...args) {
41
+ const results = await this.adapter.raw(rawInput, true, ...args);
42
+ if (!this.fullRecord)
43
+ return results;
44
+ if (!this.target)
45
+ throw new InternalError("No target defined in statement. should never happen");
46
+ const pkDef = findPrimaryKey(new this.target());
47
+ const pkAttr = pkDef.id;
48
+ const type = pkDef.props.type;
49
+ if (Array.isArray(results))
50
+ return results.map((r) => this.processRecord(r, pkAttr, type));
51
+ return this.processRecord(results, pkAttr, type);
52
+ }
53
+ }
54
+
55
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9TdGF0ZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFXLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFL0MsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFNBQXFCO0lBQ3pELFlBQVksT0FBZ0Q7UUFDMUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxPQUFPO1FBQ1gsSUFBSSxDQUFDO1lBQ0gsTUFBTSxLQUFLLEdBQWUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztnQkFBRSxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztZQUN4RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRLENBQUksSUFBWTtRQUM1QixJQUFJLENBQUM7WUFDSCxNQUFNLEtBQUssR0FBZSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVPLGFBQWEsQ0FDbkIsQ0FBTSxFQUNOLE1BQWMsRUFDZCxZQUE2QztRQUU3QyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLGFBQWEsQ0FDckIsd0RBQXdELENBQ3pELENBQUM7UUFDSixNQUFNLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXBELE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDeEIsQ0FBQyxFQUNELElBQUksQ0FBQyxNQUEwQixFQUMvQixNQUFNLEVBQ04sa0JBQWtCLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUM5QixDQUFDO0lBQ1gsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHLENBQUksUUFBb0IsRUFBRSxHQUFHLElBQVc7UUFDL0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBSSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTyxPQUFPLENBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQ2QsTUFBTSxJQUFJLGFBQWEsQ0FDckIscURBQXFELENBQ3RELENBQUM7UUFFSixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFTLENBQUMsQ0FBQztRQUN2RCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQzlCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDeEIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQU0sQ0FBQztRQUN0RSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQU0sQ0FBQztJQUN4RCxDQUFDO0NBQ0YiLCJmaWxlIjoicXVlcnkvU3RhdGVtZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG9jdW1lbnRTY29wZSwgTWFuZ29RdWVyeSB9IGZyb20gXCJuYW5vXCI7XG5pbXBvcnQgeyBBZGFwdGVyLCBTdGF0ZW1lbnQgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IGZpbmRQcmltYXJ5S2V5LCBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IENvdWNoREJLZXlzIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgcGFyc2VTZXF1ZW5jZVZhbHVlIH0gZnJvbSBcIi4uL3NlcXVlbmNlcy91dGlsc1wiO1xuaW1wb3J0IHsgUGFnaW5hdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBDb3VjaERCUGFnaW5hdG9yIH0gZnJvbSBcIi4vUGFnaW5hdG9yXCI7XG5cbmV4cG9ydCBjbGFzcyBDb3VjaERCU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50PE1hbmdvUXVlcnk+IHtcbiAgY29uc3RydWN0b3IoYWRhcHRlcjogQWRhcHRlcjxEb2N1bWVudFNjb3BlPGFueT4sIE1hbmdvUXVlcnk+KSB7XG4gICAgc3VwZXIoYWRhcHRlcik7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIGFzeW5jIGV4ZWN1dGU8WT4oKTogUHJvbWlzZTxZPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5OiBNYW5nb1F1ZXJ5ID0gdGhpcy5idWlsZCgpO1xuICAgICAgaWYgKCFxdWVyeS5saW1pdCkgcXVlcnkubGltaXQgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbiAgICAgIHJldHVybiB0aGlzLnJhdyhxdWVyeSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBwYWdpbmF0ZTxSPihzaXplOiBudW1iZXIpOiBQcm9taXNlPFBhZ2luYXRvcjxSLCBNYW5nb1F1ZXJ5Pj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeTogTWFuZ29RdWVyeSA9IHRoaXMuYnVpbGQoKTtcbiAgICAgIHJldHVybiBuZXcgQ291Y2hEQlBhZ2luYXRvcih0aGlzLCBzaXplLCBxdWVyeSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NSZWNvcmQoXG4gICAgcjogYW55LFxuICAgIHBrQXR0cjogc3RyaW5nLFxuICAgIHNlcXVlbmNlVHlwZTogXCJOdW1iZXJcIiB8IFwiQmlnSW50XCIgfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgaWYgKCFyW0NvdWNoREJLZXlzLklEXSlcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBgTm8gQ291Y2hEQiBJZCBkZWZpbml0aW9uIGZvdW5kLiBTaG91bGQgbm90IGJlIHBvc3NpYmxlYFxuICAgICAgKTtcbiAgICBjb25zdCBbLCAuLi5rZXlBcmdzXSA9IHJbQ291Y2hEQktleXMuSURdLnNwbGl0KFwiX1wiKTtcblxuICAgIGNvbnN0IGlkID0ga2V5QXJncy5qb2luKFwiX1wiKTtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnJldmVydChcbiAgICAgIHIsXG4gICAgICB0aGlzLnRhcmdldCBhcyBDb25zdHJ1Y3Rvcjxhbnk+LFxuICAgICAgcGtBdHRyLFxuICAgICAgcGFyc2VTZXF1ZW5jZVZhbHVlKHNlcXVlbmNlVHlwZSwgaWQpXG4gICAgKSBhcyBhbnk7XG4gIH1cblxuICBhc3luYyByYXc8Uj4ocmF3SW5wdXQ6IE1hbmdvUXVlcnksIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxSPiB7XG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuYWRhcHRlci5yYXc8Uj4ocmF3SW5wdXQsIHRydWUsIC4uLmFyZ3MpO1xuICAgIGlmICghdGhpcy5mdWxsUmVjb3JkKSByZXR1cm4gcmVzdWx0cztcbiAgICBpZiAoIXRoaXMudGFyZ2V0KVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIFwiTm8gdGFyZ2V0IGRlZmluZWQgaW4gc3RhdGVtZW50LiBzaG91bGQgbmV2ZXIgaGFwcGVuXCJcbiAgICAgICk7XG5cbiAgICBjb25zdCBwa0RlZiA9IGZpbmRQcmltYXJ5S2V5KG5ldyB0aGlzLnRhcmdldCgpIGFzIGFueSk7XG4gICAgY29uc3QgcGtBdHRyID0gcGtEZWYuaWQ7XG4gICAgY29uc3QgdHlwZSA9IHBrRGVmLnByb3BzLnR5cGU7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0cykpXG4gICAgICByZXR1cm4gcmVzdWx0cy5tYXAoKHIpID0+IHRoaXMucHJvY2Vzc1JlY29yZChyLCBwa0F0dHIsIHR5cGUpKSBhcyBSO1xuICAgIHJldHVybiB0aGlzLnByb2Nlc3NSZWNvcmQocmVzdWx0cywgcGtBdHRyLCB0eXBlKSBhcyBSO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import { ValuesClause } from "@decaf-ts/core";
2
+ import { MangoQuery } from "nano";
3
+ import { ModelArg, Model } from "@decaf-ts/decorator-validation";
4
+ export declare class CouchDBValuesClause<M extends Model> extends ValuesClause<MangoQuery, M> {
5
+ constructor(clause: ModelArg<ValuesClause<MangoQuery, M>>);
6
+ build(previous: MangoQuery): MangoQuery;
7
+ }
@@ -0,0 +1,13 @@
1
+ import { ValuesClause } from "@decaf-ts/core";
2
+ import { InternalError } from "@decaf-ts/db-decorators";
3
+ export class CouchDBValuesClause extends ValuesClause {
4
+ constructor(clause) {
5
+ super(clause);
6
+ }
7
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8
+ build(previous) {
9
+ throw new InternalError("Not implemented");
10
+ }
11
+ }
12
+
13
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9WYWx1ZXNDbGF1c2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCxNQUFNLE9BQU8sbUJBQXFDLFNBQVEsWUFHekQ7SUFDQyxZQUFZLE1BQTZDO1FBQ3ZELEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsNkRBQTZEO0lBQzdELEtBQUssQ0FBQyxRQUFvQjtRQUN4QixNQUFNLElBQUksYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGIiwiZmlsZSI6InF1ZXJ5L1ZhbHVlc0NsYXVzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbHVlc0NsYXVzZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgTWFuZ29RdWVyeSB9IGZyb20gXCJuYW5vXCI7XG5pbXBvcnQgeyBNb2RlbEFyZywgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5cbmV4cG9ydCBjbGFzcyBDb3VjaERCVmFsdWVzQ2xhdXNlPE0gZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBWYWx1ZXNDbGF1c2U8XG4gIE1hbmdvUXVlcnksXG4gIE1cbj4ge1xuICBjb25zdHJ1Y3RvcihjbGF1c2U6IE1vZGVsQXJnPFZhbHVlc0NsYXVzZTxNYW5nb1F1ZXJ5LCBNPj4pIHtcbiAgICBzdXBlcihjbGF1c2UpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBidWlsZChwcmV2aW91czogTWFuZ29RdWVyeSk6IE1hbmdvUXVlcnkge1xuICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiTm90IGltcGxlbWVudGVkXCIpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import { WhereClause } from "@decaf-ts/core";
2
+ import { MangoQuery } from "nano";
3
+ import { ModelArg } from "@decaf-ts/decorator-validation";
4
+ export declare class CouchDBWhereClause extends WhereClause<MangoQuery> {
5
+ constructor(clause: ModelArg<WhereClause<MangoQuery>>);
6
+ build(query: MangoQuery): MangoQuery;
7
+ }
@@ -0,0 +1,58 @@
1
+ import { Condition, WhereClause } from "@decaf-ts/core";
2
+ import { CouchDBGroupOperator } from "./constants";
3
+ import { sf } from "@decaf-ts/decorator-validation";
4
+ import { CouchDBKeys } from "../constants";
5
+ export class CouchDBWhereClause extends WhereClause {
6
+ constructor(clause) {
7
+ super(clause);
8
+ }
9
+ build(query) {
10
+ const condition = this.adapter.parseCondition(Condition.and(this.condition, Condition.attribute(CouchDBKeys.TABLE).eq(query.selector[CouchDBKeys.TABLE]))).selector;
11
+ const selectorKeys = Object.keys(condition);
12
+ if (selectorKeys.length === 1 &&
13
+ Object.values(CouchDBGroupOperator).indexOf(selectorKeys[0]) !== -1)
14
+ switch (selectorKeys[0]) {
15
+ case CouchDBGroupOperator.AND:
16
+ condition[CouchDBGroupOperator.AND] = [
17
+ ...Object.values(condition[CouchDBGroupOperator.AND]).reduce((accum, val) => {
18
+ const keys = Object.keys(val);
19
+ if (keys.length !== 1)
20
+ throw new Error("Too many keys in query selector. should be one");
21
+ const k = keys[0];
22
+ if (k === CouchDBGroupOperator.AND)
23
+ accum.push(...val[k]);
24
+ else
25
+ accum.push(val);
26
+ return accum;
27
+ }, []),
28
+ ];
29
+ query.selector = condition;
30
+ break;
31
+ case CouchDBGroupOperator.OR: {
32
+ const s = {};
33
+ s[CouchDBGroupOperator.AND] = [
34
+ condition,
35
+ ...Object.entries(query.selector).map(([key, val]) => {
36
+ const result = {};
37
+ result[key] = val;
38
+ return result;
39
+ }),
40
+ ];
41
+ query.selector = s;
42
+ break;
43
+ }
44
+ default:
45
+ throw new Error("This should be impossible");
46
+ }
47
+ else {
48
+ Object.entries(condition).forEach(([key, val]) => {
49
+ if (query.selector[key])
50
+ console.warn(sf("A {0} query param is about to be overridden: {1} by {2}", key, query.selector[key], val));
51
+ query.selector[key] = val;
52
+ });
53
+ }
54
+ return query;
55
+ }
56
+ }
57
+
58
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9XaGVyZUNsYXVzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUzQyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsV0FBdUI7SUFDN0QsWUFBWSxNQUF5QztRQUNuRCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFpQjtRQUNyQixNQUFNLFNBQVMsR0FBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQzFELFNBQVMsQ0FBQyxHQUFHLENBQ1gsSUFBSSxDQUFDLFNBQXNCLEVBQzNCLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FDdkMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQ2xDLENBQ0YsQ0FDRixDQUFDLFFBQVEsQ0FBQztRQUVYLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFvQixDQUFDO1FBQy9ELElBQ0UsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRW5FLFFBQVEsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLEtBQUssb0JBQW9CLENBQUMsR0FBRztvQkFDM0IsU0FBUyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxHQUFHO3dCQUNwQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQ2QsU0FBUyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBa0IsQ0FDckQsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFzQixFQUFFLEdBQVEsRUFBRSxFQUFFOzRCQUM1QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDOzRCQUM5QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQztnQ0FDbkIsTUFBTSxJQUFJLEtBQUssQ0FDYixnREFBZ0QsQ0FDakQsQ0FBQzs0QkFDSixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ2xCLElBQUksQ0FBQyxLQUFLLG9CQUFvQixDQUFDLEdBQUc7Z0NBQ2hDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBSSxHQUFHLENBQUMsQ0FBQyxDQUFXLENBQUMsQ0FBQzs7Z0NBQzlCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7NEJBQ3JCLE9BQU8sS0FBSyxDQUFDO3dCQUNmLENBQUMsRUFBRSxFQUFFLENBQUM7cUJBQ1AsQ0FBQztvQkFDRixLQUFLLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztvQkFDM0IsTUFBTTtnQkFDUixLQUFLLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzdCLE1BQU0sQ0FBQyxHQUFxQixFQUFFLENBQUM7b0JBQy9CLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsR0FBRzt3QkFDNUIsU0FBUzt3QkFDVCxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7NEJBQ25ELE1BQU0sTUFBTSxHQUFxQixFQUFFLENBQUM7NEJBQ3BDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7NEJBQ2xCLE9BQU8sTUFBTSxDQUFDO3dCQUNoQixDQUFDLENBQUM7cUJBQ0gsQ0FBQztvQkFDRixLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztvQkFDbkIsTUFBTTtnQkFDUixDQUFDO2dCQUNEO29CQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUNqRCxDQUFDO2FBQ0UsQ0FBQztZQUNKLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztvQkFDckIsT0FBTyxDQUFDLElBQUksQ0FDVixFQUFFLENBQ0EseURBQXlELEVBQ3pELEdBQUcsRUFDSCxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBc0IsRUFDeEMsR0FBd0IsQ0FDekIsQ0FDRixDQUFDO2dCQUNKLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwiZmlsZSI6InF1ZXJ5L1doZXJlQ2xhdXNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZGl0aW9uLCBXaGVyZUNsYXVzZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgTWFuZ29PcGVyYXRvciwgTWFuZ29RdWVyeSwgTWFuZ29TZWxlY3RvciB9IGZyb20gXCJuYW5vXCI7XG5pbXBvcnQgeyBNb2RlbEFyZyB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IENvdWNoREJHcm91cE9wZXJhdG9yIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBzZiB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IENvdWNoREJLZXlzIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY2xhc3MgQ291Y2hEQldoZXJlQ2xhdXNlIGV4dGVuZHMgV2hlcmVDbGF1c2U8TWFuZ29RdWVyeT4ge1xuICBjb25zdHJ1Y3RvcihjbGF1c2U6IE1vZGVsQXJnPFdoZXJlQ2xhdXNlPE1hbmdvUXVlcnk+Pikge1xuICAgIHN1cGVyKGNsYXVzZSk7XG4gIH1cblxuICBidWlsZChxdWVyeTogTWFuZ29RdWVyeSk6IE1hbmdvUXVlcnkge1xuICAgIGNvbnN0IGNvbmRpdGlvbjogTWFuZ29TZWxlY3RvciA9IHRoaXMuYWRhcHRlci5wYXJzZUNvbmRpdGlvbihcbiAgICAgIENvbmRpdGlvbi5hbmQoXG4gICAgICAgIHRoaXMuY29uZGl0aW9uIGFzIENvbmRpdGlvbixcbiAgICAgICAgQ29uZGl0aW9uLmF0dHJpYnV0ZShDb3VjaERCS2V5cy5UQUJMRSkuZXEoXG4gICAgICAgICAgcXVlcnkuc2VsZWN0b3JbQ291Y2hEQktleXMuVEFCTEVdXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLnNlbGVjdG9yO1xuXG4gICAgY29uc3Qgc2VsZWN0b3JLZXlzID0gT2JqZWN0LmtleXMoY29uZGl0aW9uKSBhcyBNYW5nb09wZXJhdG9yW107XG4gICAgaWYgKFxuICAgICAgc2VsZWN0b3JLZXlzLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgT2JqZWN0LnZhbHVlcyhDb3VjaERCR3JvdXBPcGVyYXRvcikuaW5kZXhPZihzZWxlY3RvcktleXNbMF0pICE9PSAtMVxuICAgIClcbiAgICAgIHN3aXRjaCAoc2VsZWN0b3JLZXlzWzBdKSB7XG4gICAgICAgIGNhc2UgQ291Y2hEQkdyb3VwT3BlcmF0b3IuQU5EOlxuICAgICAgICAgIGNvbmRpdGlvbltDb3VjaERCR3JvdXBPcGVyYXRvci5BTkRdID0gW1xuICAgICAgICAgICAgLi4uT2JqZWN0LnZhbHVlcyhcbiAgICAgICAgICAgICAgY29uZGl0aW9uW0NvdWNoREJHcm91cE9wZXJhdG9yLkFORF0gYXMgTWFuZ29TZWxlY3RvclxuICAgICAgICAgICAgKS5yZWR1Y2UoKGFjY3VtOiBNYW5nb1NlbGVjdG9yW10sIHZhbDogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh2YWwpO1xuICAgICAgICAgICAgICBpZiAoa2V5cy5sZW5ndGggIT09IDEpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgXCJUb28gbWFueSBrZXlzIGluIHF1ZXJ5IHNlbGVjdG9yLiBzaG91bGQgYmUgb25lXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBjb25zdCBrID0ga2V5c1swXTtcbiAgICAgICAgICAgICAgaWYgKGsgPT09IENvdWNoREJHcm91cE9wZXJhdG9yLkFORClcbiAgICAgICAgICAgICAgICBhY2N1bS5wdXNoKC4uLih2YWxba10gYXMgYW55W10pKTtcbiAgICAgICAgICAgICAgZWxzZSBhY2N1bS5wdXNoKHZhbCk7XG4gICAgICAgICAgICAgIHJldHVybiBhY2N1bTtcbiAgICAgICAgICAgIH0sIFtdKSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIHF1ZXJ5LnNlbGVjdG9yID0gY29uZGl0aW9uO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIENvdWNoREJHcm91cE9wZXJhdG9yLk9SOiB7XG4gICAgICAgICAgY29uc3QgczogUmVjb3JkPGFueSwgYW55PiA9IHt9O1xuICAgICAgICAgIHNbQ291Y2hEQkdyb3VwT3BlcmF0b3IuQU5EXSA9IFtcbiAgICAgICAgICAgIGNvbmRpdGlvbixcbiAgICAgICAgICAgIC4uLk9iamVjdC5lbnRyaWVzKHF1ZXJ5LnNlbGVjdG9yKS5tYXAoKFtrZXksIHZhbF0pID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8YW55LCBhbnk+ID0ge307XG4gICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsO1xuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXTtcbiAgICAgICAgICBxdWVyeS5zZWxlY3RvciA9IHM7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIHNob3VsZCBiZSBpbXBvc3NpYmxlXCIpO1xuICAgICAgfVxuICAgIGVsc2Uge1xuICAgICAgT2JqZWN0LmVudHJpZXMoY29uZGl0aW9uKS5mb3JFYWNoKChba2V5LCB2YWxdKSA9PiB7XG4gICAgICAgIGlmIChxdWVyeS5zZWxlY3RvcltrZXldKVxuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIHNmKFxuICAgICAgICAgICAgICBcIkEgezB9IHF1ZXJ5IHBhcmFtIGlzIGFib3V0IHRvIGJlIG92ZXJyaWRkZW46IHsxfSBieSB7Mn1cIixcbiAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICBxdWVyeS5zZWxlY3RvcltrZXldIGFzIHVua25vd24gYXMgc3RyaW5nLFxuICAgICAgICAgICAgICB2YWwgYXMgdW5rbm93biBhcyBzdHJpbmdcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICBxdWVyeS5zZWxlY3RvcltrZXldID0gdmFsO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ import { MangoOperator } from "nano";
2
+ export declare const CouchDBOperator: Record<string, MangoOperator>;
3
+ export declare const CouchDBGroupOperator: Record<string, MangoOperator>;
4
+ export declare const CouchDBConst: Record<string, string>;
@@ -0,0 +1,22 @@
1
+ export const CouchDBOperator = {
2
+ EQUAL: "$eq",
3
+ DIFFERENT: "$ne",
4
+ BIGGER: "$gt",
5
+ BIGGER_EQ: "$gte",
6
+ SMALLER: "$lt",
7
+ SMALLER_EQ: "$lte",
8
+ // BETWEEN = "BETWEEN",
9
+ NOT: "$not",
10
+ IN: "$in",
11
+ // IS = "IS",
12
+ REGEXP: "$regex",
13
+ };
14
+ export const CouchDBGroupOperator = {
15
+ AND: "$and",
16
+ OR: "$or",
17
+ };
18
+ export const CouchDBConst = {
19
+ NULL: "null",
20
+ };
21
+
22
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFrQztJQUM1RCxLQUFLLEVBQUUsS0FBSztJQUNaLFNBQVMsRUFBRSxLQUFLO0lBQ2hCLE1BQU0sRUFBRSxLQUFLO0lBQ2IsU0FBUyxFQUFFLE1BQU07SUFDakIsT0FBTyxFQUFFLEtBQUs7SUFDZCxVQUFVLEVBQUUsTUFBTTtJQUNsQix1QkFBdUI7SUFDdkIsR0FBRyxFQUFFLE1BQU07SUFDWCxFQUFFLEVBQUUsS0FBSztJQUNULGFBQWE7SUFDYixNQUFNLEVBQUUsUUFBUTtDQUNqQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQWtDO0lBQ2pFLEdBQUcsRUFBRSxNQUFNO0lBQ1gsRUFBRSxFQUFFLEtBQUs7Q0FDVixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUEyQjtJQUNsRCxJQUFJLEVBQUUsTUFBTTtDQUNiLENBQUMiLCJmaWxlIjoicXVlcnkvY29uc3RhbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWFuZ29PcGVyYXRvciB9IGZyb20gXCJuYW5vXCI7XG5cbmV4cG9ydCBjb25zdCBDb3VjaERCT3BlcmF0b3I6IFJlY29yZDxzdHJpbmcsIE1hbmdvT3BlcmF0b3I+ID0ge1xuICBFUVVBTDogXCIkZXFcIixcbiAgRElGRkVSRU5UOiBcIiRuZVwiLFxuICBCSUdHRVI6IFwiJGd0XCIsXG4gIEJJR0dFUl9FUTogXCIkZ3RlXCIsXG4gIFNNQUxMRVI6IFwiJGx0XCIsXG4gIFNNQUxMRVJfRVE6IFwiJGx0ZVwiLFxuICAvLyBCRVRXRUVOID0gXCJCRVRXRUVOXCIsXG4gIE5PVDogXCIkbm90XCIsXG4gIElOOiBcIiRpblwiLFxuICAvLyBJUyA9IFwiSVNcIixcbiAgUkVHRVhQOiBcIiRyZWdleFwiLFxufTtcblxuZXhwb3J0IGNvbnN0IENvdWNoREJHcm91cE9wZXJhdG9yOiBSZWNvcmQ8c3RyaW5nLCBNYW5nb09wZXJhdG9yPiA9IHtcbiAgQU5EOiBcIiRhbmRcIixcbiAgT1I6IFwiJG9yXCIsXG59O1xuXG5leHBvcnQgY29uc3QgQ291Y2hEQkNvbnN0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBOVUxMOiBcIm51bGxcIixcbn07XG4iXX0=
@@ -0,0 +1,24 @@
1
+ import { ClauseFactory, Condition, FromClause, FromSelector, GroupBySelector, LimitSelector, OffsetSelector, OrderBySelector, SelectSelector, Statement } from "@decaf-ts/core";
2
+ import { DocumentScope, MangoQuery } from "nano";
3
+ import { LimitClause } from "@decaf-ts/core";
4
+ import { SelectClause } from "@decaf-ts/core";
5
+ import { WhereClause } from "@decaf-ts/core";
6
+ import { OffsetClause } from "@decaf-ts/core";
7
+ import { OrderByClause } from "@decaf-ts/core";
8
+ import { GroupByClause } from "@decaf-ts/core";
9
+ import { ValuesClause } from "@decaf-ts/core";
10
+ import { InsertClause } from "@decaf-ts/core";
11
+ import { Model } from "@decaf-ts/decorator-validation";
12
+ import { CouchDBAdapter } from "../adapter";
13
+ export declare class Factory extends ClauseFactory<DocumentScope<any>, MangoQuery> {
14
+ constructor(adapter: CouchDBAdapter);
15
+ from<M extends Model>(statement: Statement<MangoQuery>, selector: FromSelector<M>): FromClause<MangoQuery, M>;
16
+ groupBy(statement: Statement<MangoQuery>, selector: GroupBySelector): GroupByClause<MangoQuery>;
17
+ insert<M extends Model>(): InsertClause<MangoQuery, M>;
18
+ limit(statement: Statement<MangoQuery>, selector: LimitSelector): LimitClause<MangoQuery>;
19
+ offset(statement: Statement<MangoQuery>, selector: OffsetSelector): OffsetClause<MangoQuery>;
20
+ orderBy(statement: Statement<MangoQuery>, selector: OrderBySelector[]): OrderByClause<MangoQuery>;
21
+ select<M extends Model>(selector: SelectSelector | undefined): SelectClause<MangoQuery, M>;
22
+ values<M extends Model>(statement: Statement<MangoQuery>, values: M[]): ValuesClause<MangoQuery, M>;
23
+ where(statement: Statement<MangoQuery>, condition: Condition): WhereClause<MangoQuery>;
24
+ }
@@ -0,0 +1,118 @@
1
+ import { ClauseFactory, QueryError, } from "@decaf-ts/core";
2
+ import { LimitClause } from "@decaf-ts/core";
3
+ import { OffsetClause } from "@decaf-ts/core";
4
+ import { OrderByClause } from "@decaf-ts/core";
5
+ import { GroupByClause } from "@decaf-ts/core";
6
+ import { CouchDBFromClause } from "./FromClause";
7
+ import { InternalError } from "@decaf-ts/db-decorators";
8
+ import { CouchDBInsertClause } from "./InsertClause";
9
+ import { CouchDBStatement } from "./Statement";
10
+ import { CouchDBWhereClause } from "./WhereClause";
11
+ import { CouchDBSelectClause } from "./SelectClause";
12
+ import { CouchDBValuesClause } from "./ValuesClause";
13
+ import { CouchDBOperator } from "./constants";
14
+ export class Factory extends ClauseFactory {
15
+ constructor(adapter) {
16
+ super(adapter);
17
+ }
18
+ from(statement, selector) {
19
+ return new CouchDBFromClause({ statement: statement, selector: selector });
20
+ }
21
+ groupBy(statement, selector) {
22
+ return new (class extends GroupByClause {
23
+ constructor(clause) {
24
+ super(clause);
25
+ }
26
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
27
+ build(query) {
28
+ throw new InternalError("Not implemented");
29
+ }
30
+ })({
31
+ statement: statement,
32
+ selector: selector,
33
+ });
34
+ }
35
+ insert() {
36
+ return new CouchDBInsertClause({
37
+ statement: new CouchDBStatement(this.adapter),
38
+ });
39
+ }
40
+ limit(statement, selector) {
41
+ return new (class extends LimitClause {
42
+ constructor(clause) {
43
+ super(clause);
44
+ }
45
+ build(query) {
46
+ query.limit = this.selector;
47
+ return query;
48
+ }
49
+ })({
50
+ statement: statement,
51
+ selector: selector,
52
+ });
53
+ }
54
+ offset(statement, selector) {
55
+ return new (class extends OffsetClause {
56
+ constructor(clause) {
57
+ super(clause);
58
+ }
59
+ build(query) {
60
+ const skip = parseInt(this.selector);
61
+ if (isNaN(skip))
62
+ throw new QueryError("Failed to parse offset");
63
+ query.skip = skip;
64
+ return query;
65
+ }
66
+ })({
67
+ statement: statement,
68
+ selector: selector,
69
+ });
70
+ }
71
+ orderBy(statement, selector) {
72
+ return new (class extends OrderByClause {
73
+ constructor(clause) {
74
+ super(clause);
75
+ }
76
+ build(query) {
77
+ query.sort = query.sort || [];
78
+ query.selector = query.selector || {};
79
+ this.selector.forEach((s) => {
80
+ const [selector, value] = s;
81
+ const rec = {};
82
+ rec[selector] = value;
83
+ query.sort.push(rec);
84
+ if (!query.selector[selector]) {
85
+ query.selector[selector] = {};
86
+ query.selector[selector][CouchDBOperator.BIGGER] = null;
87
+ }
88
+ // query.fields = query.fields || [];
89
+ // query.fields = [...new Set([...query.fields, selector]).keys()]
90
+ });
91
+ return query;
92
+ }
93
+ })({
94
+ statement: statement,
95
+ selector: selector,
96
+ });
97
+ }
98
+ select(selector) {
99
+ return new CouchDBSelectClause({
100
+ statement: new CouchDBStatement(this.adapter),
101
+ selector: selector,
102
+ });
103
+ }
104
+ values(statement, values) {
105
+ return new CouchDBValuesClause({
106
+ statement: statement,
107
+ values: values,
108
+ });
109
+ }
110
+ where(statement, condition) {
111
+ return new CouchDBWhereClause({
112
+ statement: statement,
113
+ condition: condition,
114
+ });
115
+ }
116
+ }
117
+
118
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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dkIsR0FBRyxJQUFJLENBQUM7b0JBQ1gsQ0FBQztvQkFDRCxxQ0FBcUM7b0JBQ3JDLGtFQUFrRTtnQkFDcEUsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1NBQ0YsQ0FBQyxDQUFDO1lBQ0QsU0FBUyxFQUFFLFNBQVM7WUFDcEIsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FDSixRQUFvQztRQUVwQyxPQUFPLElBQUksbUJBQW1CLENBQUM7WUFDN0IsU0FBUyxFQUFFLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM3QyxRQUFRLEVBQUUsUUFBUTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUNKLFNBQWdDLEVBQ2hDLE1BQVc7UUFFWCxPQUFPLElBQUksbUJBQW1CLENBQUk7WUFDaEMsU0FBUyxFQUFFLFNBQVM7WUFDcEIsTUFBTSxFQUFFLE1BQU07U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUNILFNBQWdDLEVBQ2hDLFNBQW9CO1FBRXBCLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQztZQUM1QixTQUFTLEVBQUUsU0FBUztZQUNwQixTQUFTLEVBQUUsU0FBUztTQUNyQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJmaWxlIjoicXVlcnkvZmFjdG9yeS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENsYXVzZUZhY3RvcnksXG4gIENvbmRpdGlvbixcbiAgRnJvbUNsYXVzZSxcbiAgRnJvbVNlbGVjdG9yLFxuICBHcm91cEJ5U2VsZWN0b3IsXG4gIExpbWl0U2VsZWN0b3IsXG4gIE9mZnNldFNlbGVjdG9yLFxuICBPcmRlckJ5U2VsZWN0b3IsXG4gIFF1ZXJ5RXJyb3IsXG4gIFNlbGVjdFNlbGVjdG9yLFxuICBTdGF0ZW1lbnQsXG59IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgRG9jdW1lbnRTY29wZSwgTWFuZ29RdWVyeSwgTWFuZ29TZWxlY3RvciB9IGZyb20gXCJuYW5vXCI7XG5pbXBvcnQgeyBMaW1pdENsYXVzZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgU2VsZWN0Q2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBXaGVyZUNsYXVzZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgT2Zmc2V0Q2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBPcmRlckJ5Q2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBHcm91cEJ5Q2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBWYWx1ZXNDbGF1c2UgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IEluc2VydENsYXVzZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgQ291Y2hEQkZyb21DbGF1c2UgfSBmcm9tIFwiLi9Gcm9tQ2xhdXNlXCI7XG5pbXBvcnQgeyBNb2RlbEFyZywgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBDb3VjaERCSW5zZXJ0Q2xhdXNlIH0gZnJvbSBcIi4vSW5zZXJ0Q2xhdXNlXCI7XG5pbXBvcnQgeyBDb3VjaERCU3RhdGVtZW50IH0gZnJvbSBcIi4vU3RhdGVtZW50XCI7XG5pbXBvcnQgeyBDb3VjaERCV2hlcmVDbGF1c2UgfSBmcm9tIFwiLi9XaGVyZUNsYXVzZVwiO1xuaW1wb3J0IHsgQ291Y2hEQlNlbGVjdENsYXVzZSB9IGZyb20gXCIuL1NlbGVjdENsYXVzZVwiO1xuaW1wb3J0IHsgQ291Y2hEQlZhbHVlc0NsYXVzZSB9IGZyb20gXCIuL1ZhbHVlc0NsYXVzZVwiO1xuaW1wb3J0IHsgQ291Y2hEQk9wZXJhdG9yIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBDb3VjaERCQWRhcHRlciB9IGZyb20gXCIuLi9hZGFwdGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBGYWN0b3J5IGV4dGVuZHMgQ2xhdXNlRmFjdG9yeTxEb2N1bWVudFNjb3BlPGFueT4sIE1hbmdvUXVlcnk+IHtcbiAgY29uc3RydWN0b3IoYWRhcHRlcjogQ291Y2hEQkFkYXB0ZXIpIHtcbiAgICBzdXBlcihhZGFwdGVyKTtcbiAgfVxuXG4gIGZyb208TSBleHRlbmRzIE1vZGVsPihcbiAgICBzdGF0ZW1lbnQ6IFN0YXRlbWVudDxNYW5nb1F1ZXJ5PixcbiAgICBzZWxlY3RvcjogRnJvbVNlbGVjdG9yPE0+XG4gICk6IEZyb21DbGF1c2U8TWFuZ29RdWVyeSwgTT4ge1xuICAgIHJldHVybiBuZXcgQ291Y2hEQkZyb21DbGF1c2UoeyBzdGF0ZW1lbnQ6IHN0YXRlbWVudCwgc2VsZWN0b3I6IHNlbGVjdG9yIH0pO1xuICB9XG5cbiAgZ3JvdXBCeShcbiAgICBzdGF0ZW1lbnQ6IFN0YXRlbWVudDxNYW5nb1F1ZXJ5PixcbiAgICBzZWxlY3RvcjogR3JvdXBCeVNlbGVjdG9yXG4gICk6IEdyb3VwQnlDbGF1c2U8TWFuZ29RdWVyeT4ge1xuICAgIHJldHVybiBuZXcgKGNsYXNzIGV4dGVuZHMgR3JvdXBCeUNsYXVzZTxNYW5nb1F1ZXJ5PiB7XG4gICAgICBjb25zdHJ1Y3RvcihjbGF1c2U6IE1vZGVsQXJnPEdyb3VwQnlDbGF1c2U8TWFuZ29RdWVyeT4+KSB7XG4gICAgICAgIHN1cGVyKGNsYXVzZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIGJ1aWxkKHF1ZXJ5OiBNYW5nb1F1ZXJ5KTogTWFuZ29RdWVyeSB7XG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiTm90IGltcGxlbWVudGVkXCIpO1xuICAgICAgfVxuICAgIH0pKHtcbiAgICAgIHN0YXRlbWVudDogc3RhdGVtZW50LFxuICAgICAgc2VsZWN0b3I6IHNlbGVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgaW5zZXJ0PE0gZXh0ZW5kcyBNb2RlbD4oKTogSW5zZXJ0Q2xhdXNlPE1hbmdvUXVlcnksIE0+IHtcbiAgICByZXR1cm4gbmV3IENvdWNoREJJbnNlcnRDbGF1c2Uoe1xuICAgICAgc3RhdGVtZW50OiBuZXcgQ291Y2hEQlN0YXRlbWVudCh0aGlzLmFkYXB0ZXIgYXMgQ291Y2hEQkFkYXB0ZXIpLFxuICAgIH0pO1xuICB9XG5cbiAgbGltaXQoXG4gICAgc3RhdGVtZW50OiBTdGF0ZW1lbnQ8TWFuZ29RdWVyeT4sXG4gICAgc2VsZWN0b3I6IExpbWl0U2VsZWN0b3JcbiAgKTogTGltaXRDbGF1c2U8TWFuZ29RdWVyeT4ge1xuICAgIHJldHVybiBuZXcgKGNsYXNzIGV4dGVuZHMgTGltaXRDbGF1c2U8TWFuZ29RdWVyeT4ge1xuICAgICAgY29uc3RydWN0b3IoY2xhdXNlOiBNb2RlbEFyZzxMaW1pdENsYXVzZTxNYW5nb1F1ZXJ5Pj4pIHtcbiAgICAgICAgc3VwZXIoY2xhdXNlKTtcbiAgICAgIH1cblxuICAgICAgYnVpbGQocXVlcnk6IE1hbmdvUXVlcnkpOiBNYW5nb1F1ZXJ5IHtcbiAgICAgICAgcXVlcnkubGltaXQgPSB0aGlzLnNlbGVjdG9yIGFzIG51bWJlcjtcbiAgICAgICAgcmV0dXJuIHF1ZXJ5O1xuICAgICAgfVxuICAgIH0pKHtcbiAgICAgIHN0YXRlbWVudDogc3RhdGVtZW50LFxuICAgICAgc2VsZWN0b3I6IHNlbGVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgb2Zmc2V0KFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50PE1hbmdvUXVlcnk+LFxuICAgIHNlbGVjdG9yOiBPZmZzZXRTZWxlY3RvclxuICApOiBPZmZzZXRDbGF1c2U8TWFuZ29RdWVyeT4ge1xuICAgIHJldHVybiBuZXcgKGNsYXNzIGV4dGVuZHMgT2Zmc2V0Q2xhdXNlPE1hbmdvUXVlcnk+IHtcbiAgICAgIGNvbnN0cnVjdG9yKGNsYXVzZTogTW9kZWxBcmc8T2Zmc2V0Q2xhdXNlPE1hbmdvUXVlcnk+Pikge1xuICAgICAgICBzdXBlcihjbGF1c2UpO1xuICAgICAgfVxuXG4gICAgICBidWlsZChxdWVyeTogTWFuZ29RdWVyeSk6IE1hbmdvUXVlcnkge1xuICAgICAgICBjb25zdCBza2lwOiBudW1iZXIgPSBwYXJzZUludCh0aGlzLnNlbGVjdG9yIGFzIHVua25vd24gYXMgc3RyaW5nKTtcbiAgICAgICAgaWYgKGlzTmFOKHNraXApKSB0aHJvdyBuZXcgUXVlcnlFcnJvcihcIkZhaWxlZCB0byBwYXJzZSBvZmZzZXRcIik7XG4gICAgICAgIHF1ZXJ5LnNraXAgPSBza2lwO1xuICAgICAgICByZXR1cm4gcXVlcnk7XG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgc3RhdGVtZW50OiBzdGF0ZW1lbnQsXG4gICAgICBzZWxlY3Rvcjogc2VsZWN0b3IsXG4gICAgfSk7XG4gIH1cblxuICBvcmRlckJ5KFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50PE1hbmdvUXVlcnk+LFxuICAgIHNlbGVjdG9yOiBPcmRlckJ5U2VsZWN0b3JbXVxuICApOiBPcmRlckJ5Q2xhdXNlPE1hbmdvUXVlcnk+IHtcbiAgICByZXR1cm4gbmV3IChjbGFzcyBleHRlbmRzIE9yZGVyQnlDbGF1c2U8TWFuZ29RdWVyeT4ge1xuICAgICAgY29uc3RydWN0b3IoY2xhdXNlOiBNb2RlbEFyZzxPcmRlckJ5Q2xhdXNlPE1hbmdvUXVlcnk+Pikge1xuICAgICAgICBzdXBlcihjbGF1c2UpO1xuICAgICAgfVxuXG4gICAgICBidWlsZChxdWVyeTogTWFuZ29RdWVyeSk6IE1hbmdvUXVlcnkge1xuICAgICAgICBxdWVyeS5zb3J0ID0gcXVlcnkuc29ydCB8fCBbXTtcbiAgICAgICAgcXVlcnkuc2VsZWN0b3IgPSBxdWVyeS5zZWxlY3RvciB8fCAoe30gYXMgTWFuZ29TZWxlY3Rvcik7XG4gICAgICAgIHRoaXMuc2VsZWN0b3IhLmZvckVhY2goKHMpID0+IHtcbiAgICAgICAgICBjb25zdCBbc2VsZWN0b3IsIHZhbHVlXSA9IHM7XG4gICAgICAgICAgY29uc3QgcmVjOiBhbnkgPSB7fTtcbiAgICAgICAgICByZWNbc2VsZWN0b3JdID0gdmFsdWU7XG4gICAgICAgICAgKHF1ZXJ5LnNvcnQgYXMgYW55W10pLnB1c2gocmVjIGFzIGFueSk7XG4gICAgICAgICAgaWYgKCFxdWVyeS5zZWxlY3RvcltzZWxlY3Rvcl0pIHtcbiAgICAgICAgICAgIHF1ZXJ5LnNlbGVjdG9yW3NlbGVjdG9yXSA9IHt9IGFzIE1hbmdvU2VsZWN0b3I7XG4gICAgICAgICAgICAocXVlcnkuc2VsZWN0b3Jbc2VsZWN0b3JdIGFzIE1hbmdvU2VsZWN0b3IpW1xuICAgICAgICAgICAgICBDb3VjaERCT3BlcmF0b3IuQklHR0VSXG4gICAgICAgICAgICBdID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gcXVlcnkuZmllbGRzID0gcXVlcnkuZmllbGRzIHx8IFtdO1xuICAgICAgICAgIC8vIHF1ZXJ5LmZpZWxkcyA9IFsuLi5uZXcgU2V0KFsuLi5xdWVyeS5maWVsZHMsIHNlbGVjdG9yXSkua2V5cygpXVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHF1ZXJ5O1xuICAgICAgfVxuICAgIH0pKHtcbiAgICAgIHN0YXRlbWVudDogc3RhdGVtZW50LFxuICAgICAgc2VsZWN0b3I6IHNlbGVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgc2VsZWN0PE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgc2VsZWN0b3I6IFNlbGVjdFNlbGVjdG9yIHwgdW5kZWZpbmVkXG4gICk6IFNlbGVjdENsYXVzZTxNYW5nb1F1ZXJ5LCBNPiB7XG4gICAgcmV0dXJuIG5ldyBDb3VjaERCU2VsZWN0Q2xhdXNlKHtcbiAgICAgIHN0YXRlbWVudDogbmV3IENvdWNoREJTdGF0ZW1lbnQodGhpcy5hZGFwdGVyKSxcbiAgICAgIHNlbGVjdG9yOiBzZWxlY3RvcixcbiAgICB9KTtcbiAgfVxuXG4gIHZhbHVlczxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50PE1hbmdvUXVlcnk+LFxuICAgIHZhbHVlczogTVtdXG4gICk6IFZhbHVlc0NsYXVzZTxNYW5nb1F1ZXJ5LCBNPiB7XG4gICAgcmV0dXJuIG5ldyBDb3VjaERCVmFsdWVzQ2xhdXNlPE0+KHtcbiAgICAgIHN0YXRlbWVudDogc3RhdGVtZW50LFxuICAgICAgdmFsdWVzOiB2YWx1ZXMsXG4gICAgfSk7XG4gIH1cblxuICB3aGVyZShcbiAgICBzdGF0ZW1lbnQ6IFN0YXRlbWVudDxNYW5nb1F1ZXJ5PixcbiAgICBjb25kaXRpb246IENvbmRpdGlvblxuICApOiBXaGVyZUNsYXVzZTxNYW5nb1F1ZXJ5PiB7XG4gICAgcmV0dXJuIG5ldyBDb3VjaERCV2hlcmVDbGF1c2Uoe1xuICAgICAgc3RhdGVtZW50OiBzdGF0ZW1lbnQsXG4gICAgICBjb25kaXRpb246IGNvbmRpdGlvbixcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1 @@
1
+ export * from "./factory";
@@ -0,0 +1,3 @@
1
+ export * from "./factory";
2
+
3
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFdBQVcsQ0FBQyIsImZpbGUiOiJxdWVyeS9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2ZhY3RvcnlcIjtcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import { GroupOperator, Operator } from "@decaf-ts/core";
2
+ import { MangoOperator } from "nano";
3
+ export declare function translateOperators(operator: GroupOperator | Operator): MangoOperator;