@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,20 @@
1
+ import { ModelArg } from "@decaf-ts/decorator-validation";
2
+ import { BaseModel } from "@decaf-ts/core";
3
+ export declare class Sequence extends BaseModel {
4
+ /**
5
+ * @summary the Primary key for the DBSequence
6
+ * @prop name
7
+ *
8
+ * @see pk
9
+ */
10
+ id?: string;
11
+ /**
12
+ * @summary the current value for the DBSequence
13
+ * @prop current
14
+ *
15
+ * @see required
16
+ * @see index
17
+ */
18
+ current?: string | number;
19
+ constructor(seq?: ModelArg<Sequence>);
20
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./CouchDBSequence.cjs"), exports);
18
+
19
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQWtDIiwiZmlsZSI6Im1vZGVsL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vQ291Y2hEQlNlcXVlbmNlXCI7XG4iXX0=
@@ -0,0 +1 @@
1
+ export * from "./CouchDBSequence";
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CouchDBFromClause = void 0;
4
+ const core_1 = require("@decaf-ts/core");
5
+ const constants_1 = require("../constants.cjs");
6
+ const core_2 = require("@decaf-ts/core");
7
+ // noinspection JSAnnotator
8
+ class CouchDBFromClause extends core_1.FromClause {
9
+ constructor(clause) {
10
+ super(clause);
11
+ }
12
+ build(previous) {
13
+ const selectors = {};
14
+ selectors[constants_1.CouchDBKeys.TABLE] = {};
15
+ selectors[constants_1.CouchDBKeys.TABLE] =
16
+ typeof this.selector === "string"
17
+ ? this.selector
18
+ : core_2.Repository.table(this.selector);
19
+ previous.selector = selectors;
20
+ return previous;
21
+ }
22
+ }
23
+ exports.CouchDBFromClause = CouchDBFromClause;
24
+
25
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9Gcm9tQ2xhdXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUE0QztBQUc1Qyw0Q0FBMkM7QUFDM0MseUNBQTRDO0FBRTVDLDJCQUEyQjtBQUMzQixNQUFhLGlCQUFtQyxTQUFRLGlCQUd2RDtJQUNDLFlBQVksTUFBMkM7UUFDckQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBb0I7UUFDeEIsTUFBTSxTQUFTLEdBQVEsRUFBRSxDQUFDO1FBQzFCLFNBQVMsQ0FBQyx1QkFBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNsQyxTQUFTLENBQUMsdUJBQVcsQ0FBQyxLQUFLLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVE7Z0JBQy9CLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDZixDQUFDLENBQUMsaUJBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQTBCLENBQUMsQ0FBQztRQUN4RCxRQUFRLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztRQUM5QixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0Y7QUFsQkQsOENBa0JDIiwiZmlsZSI6InF1ZXJ5L0Zyb21DbGF1c2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGcm9tQ2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBNYW5nb1F1ZXJ5IH0gZnJvbSBcIm5hbm9cIjtcbmltcG9ydCB7IE1vZGVsQXJnLCBNb2RlbCwgQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBDb3VjaERCS2V5cyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcblxuLy8gbm9pbnNwZWN0aW9uIEpTQW5ub3RhdG9yXG5leHBvcnQgY2xhc3MgQ291Y2hEQkZyb21DbGF1c2U8TSBleHRlbmRzIE1vZGVsPiBleHRlbmRzIEZyb21DbGF1c2U8XG4gIE1hbmdvUXVlcnksXG4gIE1cbj4ge1xuICBjb25zdHJ1Y3RvcihjbGF1c2U6IE1vZGVsQXJnPEZyb21DbGF1c2U8TWFuZ29RdWVyeSwgTT4+KSB7XG4gICAgc3VwZXIoY2xhdXNlKTtcbiAgfVxuXG4gIGJ1aWxkKHByZXZpb3VzOiBNYW5nb1F1ZXJ5KTogTWFuZ29RdWVyeSB7XG4gICAgY29uc3Qgc2VsZWN0b3JzOiBhbnkgPSB7fTtcbiAgICBzZWxlY3RvcnNbQ291Y2hEQktleXMuVEFCTEVdID0ge307XG4gICAgc2VsZWN0b3JzW0NvdWNoREJLZXlzLlRBQkxFXSA9XG4gICAgICB0eXBlb2YgdGhpcy5zZWxlY3RvciA9PT0gXCJzdHJpbmdcIlxuICAgICAgICA/IHRoaXMuc2VsZWN0b3JcbiAgICAgICAgOiBSZXBvc2l0b3J5LnRhYmxlKHRoaXMuc2VsZWN0b3IgYXMgQ29uc3RydWN0b3I8TT4pO1xuICAgIHByZXZpb3VzLnNlbGVjdG9yID0gc2VsZWN0b3JzO1xuICAgIHJldHVybiBwcmV2aW91cztcbiAgfVxufVxuIl19
@@ -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,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CouchDBInsertClause = void 0;
4
+ const core_1 = require("@decaf-ts/core");
5
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
6
+ // noinspection JSAnnotator
7
+ class CouchDBInsertClause extends core_1.InsertClause {
8
+ constructor(clause) {
9
+ super(clause);
10
+ }
11
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
12
+ build(query) {
13
+ throw new db_decorators_1.InternalError("Not supported");
14
+ }
15
+ }
16
+ exports.CouchDBInsertClause = CouchDBInsertClause;
17
+
18
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9JbnNlcnRDbGF1c2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQThDO0FBRzlDLDJEQUF3RDtBQUV4RCwyQkFBMkI7QUFDM0IsTUFBYSxtQkFBcUMsU0FBUSxtQkFHekQ7SUFDQyxZQUFZLE1BQTZDO1FBQ3ZELEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsNkRBQTZEO0lBQzdELEtBQUssQ0FBQyxLQUFpQjtRQUNyQixNQUFNLElBQUksNkJBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUFaRCxrREFZQyIsImZpbGUiOiJxdWVyeS9JbnNlcnRDbGF1c2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnNlcnRDbGF1c2UgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IE1hbmdvUXVlcnkgfSBmcm9tIFwibmFub1wiO1xuaW1wb3J0IHsgTW9kZWxBcmcsIE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG4vLyBub2luc3BlY3Rpb24gSlNBbm5vdGF0b3JcbmV4cG9ydCBjbGFzcyBDb3VjaERCSW5zZXJ0Q2xhdXNlPE0gZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBJbnNlcnRDbGF1c2U8XG4gIE1hbmdvUXVlcnksXG4gIE1cbj4ge1xuICBjb25zdHJ1Y3RvcihjbGF1c2U6IE1vZGVsQXJnPEluc2VydENsYXVzZTxNYW5nb1F1ZXJ5LCBNPj4pIHtcbiAgICBzdXBlcihjbGF1c2UpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBidWlsZChxdWVyeTogTWFuZ29RdWVyeSk6IE1hbmdvUXVlcnkge1xuICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiTm90IHN1cHBvcnRlZFwiKTtcbiAgfVxufVxuIl19
@@ -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,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CouchDBPaginator = void 0;
4
+ const core_1 = require("@decaf-ts/core");
5
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
6
+ const utils_1 = require("../sequences/utils.cjs");
7
+ class CouchDBPaginator extends core_1.Paginator {
8
+ get total() {
9
+ throw new db_decorators_1.InternalError(`The total pages api is not available for couchdb`);
10
+ }
11
+ get count() {
12
+ throw new db_decorators_1.InternalError(`The record count api is not available for couchdb`);
13
+ }
14
+ constructor(statement, size, rawStatement) {
15
+ super(statement, size, rawStatement);
16
+ }
17
+ prepare(rawStatement) {
18
+ const query = Object.assign({}, rawStatement);
19
+ if (query.limit)
20
+ this.limit = query.limit;
21
+ query.limit = this.size;
22
+ return query;
23
+ }
24
+ async page(page = 1, ...args) {
25
+ const statement = Object.assign({}, this.statement);
26
+ const target = this.stat.getTarget();
27
+ // if (!this._recordCount || !this._totalPages) {
28
+ // // this._recordCount = await this.adapter
29
+ // // .Query()
30
+ // // .count()
31
+ // // .from(target)
32
+ // // .execute<number>();
33
+ // }
34
+ if (page !== 1) {
35
+ if (!this.bookMark)
36
+ throw new core_1.PagingError("No bookmark. Did you start in the first page?");
37
+ statement["bookmark"] = this.bookMark;
38
+ }
39
+ const rawResult = await this.adapter.raw(statement, false, ...args);
40
+ const { docs, bookmark, warning } = rawResult;
41
+ if (warning)
42
+ console.warn(warning);
43
+ const results = statement.fields && statement.fields.length
44
+ ? docs // has fields means its not full model
45
+ : docs.map((d) => {
46
+ //no fields means we need to revert to saving process
47
+ if (!target)
48
+ throw new core_1.PagingError("No statement target defined");
49
+ const pkDef = (0, db_decorators_1.findPrimaryKey)(new target());
50
+ const pk = pkDef.id;
51
+ const originalId = d._id.split(db_decorators_1.DefaultSeparator);
52
+ originalId.splice(0, 1); // remove the table name
53
+ return this.adapter.revert(d, target, pk, (0, utils_1.parseSequenceValue)(pkDef.props.type, originalId.join(db_decorators_1.DefaultSeparator)));
54
+ });
55
+ this.bookMark = bookmark;
56
+ this._currentPage = page;
57
+ return results;
58
+ }
59
+ }
60
+ exports.CouchDBPaginator = CouchDBPaginator;
61
+
62
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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TUFBTSxFQUNOLEVBQUUsRUFDRixJQUFBLDBCQUFrQixFQUNoQixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFDaEIsVUFBVSxDQUFDLElBQUksQ0FBQyxnQ0FBZ0IsQ0FBQyxDQUNsQyxDQUNGLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNULElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQWpGRCw0Q0FpRkMiLCJmaWxlIjoicXVlcnkvUGFnaW5hdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgUGFnaW5hdG9yLFxuICBQYWdpbmdFcnJvcixcbiAgU2VxdWVuY2VPcHRpb25zLFxuICBTdGF0ZW1lbnQsXG59IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgTWFuZ29RdWVyeSwgTWFuZ29SZXNwb25zZSB9IGZyb20gXCJuYW5vXCI7XG5pbXBvcnQge1xuICBEZWZhdWx0U2VwYXJhdG9yLFxuICBmaW5kUHJpbWFyeUtleSxcbiAgSW50ZXJuYWxFcnJvcixcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBwYXJzZVNlcXVlbmNlVmFsdWUgfSBmcm9tIFwiLi4vc2VxdWVuY2VzL3V0aWxzXCI7XG5cbmV4cG9ydCBjbGFzcyBDb3VjaERCUGFnaW5hdG9yPFY+IGV4dGVuZHMgUGFnaW5hdG9yPFYsIE1hbmdvUXVlcnk+IHtcbiAgcHJpdmF0ZSBib29rTWFyaz86IHN0cmluZztcblxuICBnZXQgdG90YWwoKTogbnVtYmVyIHtcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgVGhlIHRvdGFsIHBhZ2VzIGFwaSBpcyBub3QgYXZhaWxhYmxlIGZvciBjb3VjaGRiYCk7XG4gIH1cblxuICBnZXQgY291bnQoKTogbnVtYmVyIHtcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgIGBUaGUgcmVjb3JkIGNvdW50IGFwaSBpcyBub3QgYXZhaWxhYmxlIGZvciBjb3VjaGRiYFxuICAgICk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBzdGF0ZW1lbnQ6IFN0YXRlbWVudDxNYW5nb1F1ZXJ5PixcbiAgICBzaXplOiBudW1iZXIsXG4gICAgcmF3U3RhdGVtZW50OiBNYW5nb1F1ZXJ5XG4gICkge1xuICAgIHN1cGVyKHN0YXRlbWVudCwgc2l6ZSwgcmF3U3RhdGVtZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcmVwYXJlKHJhd1N0YXRlbWVudDogTWFuZ29RdWVyeSk6IE1hbmdvUXVlcnkge1xuICAgIGNvbnN0IHF1ZXJ5OiBNYW5nb1F1ZXJ5ID0gT2JqZWN0LmFzc2lnbih7fSwgcmF3U3RhdGVtZW50KTtcbiAgICBpZiAocXVlcnkubGltaXQpIHRoaXMubGltaXQgPSBxdWVyeS5saW1pdDtcblxuICAgIHF1ZXJ5LmxpbWl0ID0gdGhpcy5zaXplO1xuXG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG5cbiAgYXN5bmMgcGFnZShwYWdlOiBudW1iZXIgPSAxLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8VltdPiB7XG4gICAgY29uc3Qgc3RhdGVtZW50ID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zdGF0ZW1lbnQpO1xuICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuc3RhdC5nZXRUYXJnZXQoKTtcbiAgICAvLyBpZiAoIXRoaXMuX3JlY29yZENvdW50IHx8ICF0aGlzLl90b3RhbFBhZ2VzKSB7XG4gICAgLy8gICAvLyB0aGlzLl9yZWNvcmRDb3VudCA9IGF3YWl0IHRoaXMuYWRhcHRlclxuICAgIC8vICAgLy8gICAuUXVlcnkoKVxuICAgIC8vICAgLy8gICAuY291bnQoKVxuICAgIC8vICAgLy8gICAuZnJvbSh0YXJnZXQpXG4gICAgLy8gICAvLyAgIC5leGVjdXRlPG51bWJlcj4oKTtcbiAgICAvLyB9XG5cbiAgICBpZiAocGFnZSAhPT0gMSkge1xuICAgICAgaWYgKCF0aGlzLmJvb2tNYXJrKVxuICAgICAgICB0aHJvdyBuZXcgUGFnaW5nRXJyb3IoXCJObyBib29rbWFyay4gRGlkIHlvdSBzdGFydCBpbiB0aGUgZmlyc3QgcGFnZT9cIik7XG4gICAgICBzdGF0ZW1lbnRbXCJib29rbWFya1wiXSA9IHRoaXMuYm9va01hcms7XG4gICAgfVxuICAgIGNvbnN0IHJhd1Jlc3VsdDogTWFuZ29SZXNwb25zZTxhbnk+ID0gYXdhaXQgdGhpcy5hZGFwdGVyLnJhdyhcbiAgICAgIHN0YXRlbWVudCxcbiAgICAgIGZhbHNlLFxuICAgICAgLi4uYXJnc1xuICAgICk7XG5cbiAgICBjb25zdCB7IGRvY3MsIGJvb2ttYXJrLCB3YXJuaW5nIH0gPSByYXdSZXN1bHQ7XG4gICAgaWYgKHdhcm5pbmcpIGNvbnNvbGUud2Fybih3YXJuaW5nKTtcbiAgICBjb25zdCByZXN1bHRzID1cbiAgICAgIHN0YXRlbWVudC5maWVsZHMgJiYgc3RhdGVtZW50LmZpZWxkcy5sZW5ndGhcbiAgICAgICAgPyBkb2NzIC8vIGhhcyBmaWVsZHMgbWVhbnMgaXRzIG5vdCBmdWxsIG1vZGVsXG4gICAgICAgIDogZG9jcy5tYXAoKGQpID0+IHtcbiAgICAgICAgICAgIC8vbm8gZmllbGRzIG1lYW5zIHdlIG5lZWQgdG8gcmV2ZXJ0IHRvIHNhdmluZyBwcm9jZXNzXG4gICAgICAgICAgICBpZiAoIXRhcmdldCkgdGhyb3cgbmV3IFBhZ2luZ0Vycm9yKFwiTm8gc3RhdGVtZW50IHRhcmdldCBkZWZpbmVkXCIpO1xuICAgICAgICAgICAgY29uc3QgcGtEZWYgPSBmaW5kUHJpbWFyeUtleShuZXcgdGFyZ2V0KCkpIGFzIHtcbiAgICAgICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICAgICAgcHJvcHM6IFNlcXVlbmNlT3B0aW9ucztcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBwayA9IHBrRGVmLmlkO1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxJZCA9IGQuX2lkLnNwbGl0KERlZmF1bHRTZXBhcmF0b3IpO1xuICAgICAgICAgICAgb3JpZ2luYWxJZC5zcGxpY2UoMCwgMSk7IC8vIHJlbW92ZSB0aGUgdGFibGUgbmFtZVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5yZXZlcnQoXG4gICAgICAgICAgICAgIGQsXG4gICAgICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAgICAgcGssXG4gICAgICAgICAgICAgIHBhcnNlU2VxdWVuY2VWYWx1ZShcbiAgICAgICAgICAgICAgICBwa0RlZi5wcm9wcy50eXBlLFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSWQuam9pbihEZWZhdWx0U2VwYXJhdG9yKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuICAgIHRoaXMuYm9va01hcmsgPSBib29rbWFyaztcbiAgICB0aGlzLl9jdXJyZW50UGFnZSA9IHBhZ2U7XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cbn1cbiJdfQ==
@@ -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,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CouchDBSelectClause = void 0;
4
+ const core_1 = require("@decaf-ts/core");
5
+ class CouchDBSelectClause extends core_1.SelectClause {
6
+ constructor(clause) {
7
+ super(clause);
8
+ }
9
+ build(query) {
10
+ if (!this.selector || this.selector === core_1.Const.FULL_RECORD)
11
+ return query;
12
+ query.fields =
13
+ typeof this.selector === "string"
14
+ ? [this.selector]
15
+ : this.selector;
16
+ return query;
17
+ }
18
+ }
19
+ exports.CouchDBSelectClause = CouchDBSelectClause;
20
+
21
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9TZWxlY3RDbGF1c2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXFEO0FBSXJELE1BQWEsbUJBQXFDLFNBQVEsbUJBR3pEO0lBQ0MsWUFBWSxNQUE2QztRQUN2RCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFpQjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFlBQUssQ0FBQyxXQUFXO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDeEUsS0FBSyxDQUFDLE1BQU07WUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUTtnQkFDL0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQWtCLENBQUM7Z0JBQzNCLENBQUMsQ0FBRSxJQUFJLENBQUMsUUFBcUIsQ0FBQztRQUNsQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRjtBQWhCRCxrREFnQkMiLCJmaWxlIjoicXVlcnkvU2VsZWN0Q2xhdXNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3QsIFNlbGVjdENsYXVzZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgTWFuZ29RdWVyeSB9IGZyb20gXCJuYW5vXCI7XG5pbXBvcnQgeyBNb2RlbEFyZywgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5cbmV4cG9ydCBjbGFzcyBDb3VjaERCU2VsZWN0Q2xhdXNlPE0gZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBTZWxlY3RDbGF1c2U8XG4gIE1hbmdvUXVlcnksXG4gIE1cbj4ge1xuICBjb25zdHJ1Y3RvcihjbGF1c2U6IE1vZGVsQXJnPFNlbGVjdENsYXVzZTxNYW5nb1F1ZXJ5LCBNPj4pIHtcbiAgICBzdXBlcihjbGF1c2UpO1xuICB9XG5cbiAgYnVpbGQocXVlcnk6IE1hbmdvUXVlcnkpOiBNYW5nb1F1ZXJ5IHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0b3IgfHwgdGhpcy5zZWxlY3RvciA9PT0gQ29uc3QuRlVMTF9SRUNPUkQpIHJldHVybiBxdWVyeTtcbiAgICBxdWVyeS5maWVsZHMgPVxuICAgICAgdHlwZW9mIHRoaXMuc2VsZWN0b3IgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyBbdGhpcy5zZWxlY3RvciBhcyBzdHJpbmddXG4gICAgICAgIDogKHRoaXMuc2VsZWN0b3IgYXMgc3RyaW5nW10pO1xuICAgIHJldHVybiBxdWVyeTtcbiAgfVxufVxuIl19
@@ -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,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CouchDBStatement = void 0;
4
+ const core_1 = require("@decaf-ts/core");
5
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
6
+ const constants_1 = require("../constants.cjs");
7
+ const utils_1 = require("../sequences/utils.cjs");
8
+ const Paginator_1 = require("./Paginator.cjs");
9
+ class CouchDBStatement extends core_1.Statement {
10
+ constructor(adapter) {
11
+ super(adapter);
12
+ }
13
+ /**
14
+ * @inheritDoc
15
+ */
16
+ async execute() {
17
+ try {
18
+ const query = this.build();
19
+ if (!query.limit)
20
+ query.limit = Number.MAX_SAFE_INTEGER;
21
+ return this.raw(query);
22
+ }
23
+ catch (e) {
24
+ throw new db_decorators_1.InternalError(e);
25
+ }
26
+ }
27
+ async paginate(size) {
28
+ try {
29
+ const query = this.build();
30
+ return new Paginator_1.CouchDBPaginator(this, size, query);
31
+ }
32
+ catch (e) {
33
+ throw new db_decorators_1.InternalError(e);
34
+ }
35
+ }
36
+ processRecord(r, pkAttr, sequenceType) {
37
+ if (!r[constants_1.CouchDBKeys.ID])
38
+ throw new db_decorators_1.InternalError(`No CouchDB Id definition found. Should not be possible`);
39
+ const [, ...keyArgs] = r[constants_1.CouchDBKeys.ID].split("_");
40
+ const id = keyArgs.join("_");
41
+ return this.adapter.revert(r, this.target, pkAttr, (0, utils_1.parseSequenceValue)(sequenceType, id));
42
+ }
43
+ async raw(rawInput, ...args) {
44
+ const results = await this.adapter.raw(rawInput, true, ...args);
45
+ if (!this.fullRecord)
46
+ return results;
47
+ if (!this.target)
48
+ throw new db_decorators_1.InternalError("No target defined in statement. should never happen");
49
+ const pkDef = (0, db_decorators_1.findPrimaryKey)(new this.target());
50
+ const pkAttr = pkDef.id;
51
+ const type = pkDef.props.type;
52
+ if (Array.isArray(results))
53
+ return results.map((r) => this.processRecord(r, pkAttr, type));
54
+ return this.processRecord(results, pkAttr, type);
55
+ }
56
+ }
57
+ exports.CouchDBStatement = CouchDBStatement;
58
+
59
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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SUFBSSxDQUFDLENBQU0sQ0FBQztRQUN0RSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQU0sQ0FBQztJQUN4RCxDQUFDO0NBQ0Y7QUE5REQsNENBOERDIiwiZmlsZSI6InF1ZXJ5L1N0YXRlbWVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERvY3VtZW50U2NvcGUsIE1hbmdvUXVlcnkgfSBmcm9tIFwibmFub1wiO1xuaW1wb3J0IHsgQWRhcHRlciwgU3RhdGVtZW50IH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBmaW5kUHJpbWFyeUtleSwgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBDb3VjaERCS2V5cyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHBhcnNlU2VxdWVuY2VWYWx1ZSB9IGZyb20gXCIuLi9zZXF1ZW5jZXMvdXRpbHNcIjtcbmltcG9ydCB7IFBhZ2luYXRvciB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgQ291Y2hEQlBhZ2luYXRvciB9IGZyb20gXCIuL1BhZ2luYXRvclwiO1xuXG5leHBvcnQgY2xhc3MgQ291Y2hEQlN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudDxNYW5nb1F1ZXJ5PiB7XG4gIGNvbnN0cnVjdG9yKGFkYXB0ZXI6IEFkYXB0ZXI8RG9jdW1lbnRTY29wZTxhbnk+LCBNYW5nb1F1ZXJ5Pikge1xuICAgIHN1cGVyKGFkYXB0ZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBhc3luYyBleGVjdXRlPFk+KCk6IFByb21pc2U8WT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeTogTWFuZ29RdWVyeSA9IHRoaXMuYnVpbGQoKTtcbiAgICAgIGlmICghcXVlcnkubGltaXQpIHF1ZXJ5LmxpbWl0ID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG4gICAgICByZXR1cm4gdGhpcy5yYXcocXVlcnkpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcGFnaW5hdGU8Uj4oc2l6ZTogbnVtYmVyKTogUHJvbWlzZTxQYWdpbmF0b3I8UiwgTWFuZ29RdWVyeT4+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVlcnk6IE1hbmdvUXVlcnkgPSB0aGlzLmJ1aWxkKCk7XG4gICAgICByZXR1cm4gbmV3IENvdWNoREJQYWdpbmF0b3IodGhpcywgc2l6ZSwgcXVlcnkpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzUmVjb3JkKFxuICAgIHI6IGFueSxcbiAgICBwa0F0dHI6IHN0cmluZyxcbiAgICBzZXF1ZW5jZVR5cGU6IFwiTnVtYmVyXCIgfCBcIkJpZ0ludFwiIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIGlmICghcltDb3VjaERCS2V5cy5JRF0pXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgYE5vIENvdWNoREIgSWQgZGVmaW5pdGlvbiBmb3VuZC4gU2hvdWxkIG5vdCBiZSBwb3NzaWJsZWBcbiAgICAgICk7XG4gICAgY29uc3QgWywgLi4ua2V5QXJnc10gPSByW0NvdWNoREJLZXlzLklEXS5zcGxpdChcIl9cIik7XG5cbiAgICBjb25zdCBpZCA9IGtleUFyZ3Muam9pbihcIl9cIik7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5yZXZlcnQoXG4gICAgICByLFxuICAgICAgdGhpcy50YXJnZXQgYXMgQ29uc3RydWN0b3I8YW55PixcbiAgICAgIHBrQXR0cixcbiAgICAgIHBhcnNlU2VxdWVuY2VWYWx1ZShzZXF1ZW5jZVR5cGUsIGlkKVxuICAgICkgYXMgYW55O1xuICB9XG5cbiAgYXN5bmMgcmF3PFI+KHJhd0lucHV0OiBNYW5nb1F1ZXJ5LCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8Uj4ge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLmFkYXB0ZXIucmF3PFI+KHJhd0lucHV0LCB0cnVlLCAuLi5hcmdzKTtcbiAgICBpZiAoIXRoaXMuZnVsbFJlY29yZCkgcmV0dXJuIHJlc3VsdHM7XG4gICAgaWYgKCF0aGlzLnRhcmdldClcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBcIk5vIHRhcmdldCBkZWZpbmVkIGluIHN0YXRlbWVudC4gc2hvdWxkIG5ldmVyIGhhcHBlblwiXG4gICAgICApO1xuXG4gICAgY29uc3QgcGtEZWYgPSBmaW5kUHJpbWFyeUtleShuZXcgdGhpcy50YXJnZXQoKSBhcyBhbnkpO1xuICAgIGNvbnN0IHBrQXR0ciA9IHBrRGVmLmlkO1xuICAgIGNvbnN0IHR5cGUgPSBwa0RlZi5wcm9wcy50eXBlO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdHMpKVxuICAgICAgcmV0dXJuIHJlc3VsdHMubWFwKChyKSA9PiB0aGlzLnByb2Nlc3NSZWNvcmQociwgcGtBdHRyLCB0eXBlKSkgYXMgUjtcbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzUmVjb3JkKHJlc3VsdHMsIHBrQXR0ciwgdHlwZSkgYXMgUjtcbiAgfVxufVxuIl19
@@ -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,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CouchDBValuesClause = void 0;
4
+ const core_1 = require("@decaf-ts/core");
5
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
6
+ class CouchDBValuesClause extends core_1.ValuesClause {
7
+ constructor(clause) {
8
+ super(clause);
9
+ }
10
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
11
+ build(previous) {
12
+ throw new db_decorators_1.InternalError("Not implemented");
13
+ }
14
+ }
15
+ exports.CouchDBValuesClause = CouchDBValuesClause;
16
+
17
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9WYWx1ZXNDbGF1c2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQThDO0FBRzlDLDJEQUF3RDtBQUV4RCxNQUFhLG1CQUFxQyxTQUFRLG1CQUd6RDtJQUNDLFlBQVksTUFBNkM7UUFDdkQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCw2REFBNkQ7SUFDN0QsS0FBSyxDQUFDLFFBQW9CO1FBQ3hCLE1BQU0sSUFBSSw2QkFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGO0FBWkQsa0RBWUMiLCJmaWxlIjoicXVlcnkvVmFsdWVzQ2xhdXNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsdWVzQ2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBNYW5nb1F1ZXJ5IH0gZnJvbSBcIm5hbm9cIjtcbmltcG9ydCB7IE1vZGVsQXJnLCBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcblxuZXhwb3J0IGNsYXNzIENvdWNoREJWYWx1ZXNDbGF1c2U8TSBleHRlbmRzIE1vZGVsPiBleHRlbmRzIFZhbHVlc0NsYXVzZTxcbiAgTWFuZ29RdWVyeSxcbiAgTVxuPiB7XG4gIGNvbnN0cnVjdG9yKGNsYXVzZTogTW9kZWxBcmc8VmFsdWVzQ2xhdXNlPE1hbmdvUXVlcnksIE0+Pikge1xuICAgIHN1cGVyKGNsYXVzZSk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIGJ1aWxkKHByZXZpb3VzOiBNYW5nb1F1ZXJ5KTogTWFuZ29RdWVyeSB7XG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJOb3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbn1cbiJdfQ==
@@ -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,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CouchDBWhereClause = void 0;
4
+ const core_1 = require("@decaf-ts/core");
5
+ const constants_1 = require("./constants.cjs");
6
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
7
+ const constants_2 = require("../constants.cjs");
8
+ class CouchDBWhereClause extends core_1.WhereClause {
9
+ constructor(clause) {
10
+ super(clause);
11
+ }
12
+ build(query) {
13
+ const condition = this.adapter.parseCondition(core_1.Condition.and(this.condition, core_1.Condition.attribute(constants_2.CouchDBKeys.TABLE).eq(query.selector[constants_2.CouchDBKeys.TABLE]))).selector;
14
+ const selectorKeys = Object.keys(condition);
15
+ if (selectorKeys.length === 1 &&
16
+ Object.values(constants_1.CouchDBGroupOperator).indexOf(selectorKeys[0]) !== -1)
17
+ switch (selectorKeys[0]) {
18
+ case constants_1.CouchDBGroupOperator.AND:
19
+ condition[constants_1.CouchDBGroupOperator.AND] = [
20
+ ...Object.values(condition[constants_1.CouchDBGroupOperator.AND]).reduce((accum, val) => {
21
+ const keys = Object.keys(val);
22
+ if (keys.length !== 1)
23
+ throw new Error("Too many keys in query selector. should be one");
24
+ const k = keys[0];
25
+ if (k === constants_1.CouchDBGroupOperator.AND)
26
+ accum.push(...val[k]);
27
+ else
28
+ accum.push(val);
29
+ return accum;
30
+ }, []),
31
+ ];
32
+ query.selector = condition;
33
+ break;
34
+ case constants_1.CouchDBGroupOperator.OR: {
35
+ const s = {};
36
+ s[constants_1.CouchDBGroupOperator.AND] = [
37
+ condition,
38
+ ...Object.entries(query.selector).map(([key, val]) => {
39
+ const result = {};
40
+ result[key] = val;
41
+ return result;
42
+ }),
43
+ ];
44
+ query.selector = s;
45
+ break;
46
+ }
47
+ default:
48
+ throw new Error("This should be impossible");
49
+ }
50
+ else {
51
+ Object.entries(condition).forEach(([key, val]) => {
52
+ if (query.selector[key])
53
+ console.warn((0, decorator_validation_1.sf)("A {0} query param is about to be overridden: {1} by {2}", key, query.selector[key], val));
54
+ query.selector[key] = val;
55
+ });
56
+ }
57
+ return query;
58
+ }
59
+ }
60
+ exports.CouchDBWhereClause = CouchDBWhereClause;
61
+
62
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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QUNFLENBQUM7WUFDSixNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7Z0JBQy9DLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7b0JBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsSUFBQSx5QkFBRSxFQUNBLHlEQUF5RCxFQUN6RCxHQUFHLEVBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQXNCLEVBQ3hDLEdBQXdCLENBQ3pCLENBQ0YsQ0FBQztnQkFDSixLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztZQUM1QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRjtBQXpFRCxnREF5RUMiLCJmaWxlIjoicXVlcnkvV2hlcmVDbGF1c2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25kaXRpb24sIFdoZXJlQ2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBNYW5nb09wZXJhdG9yLCBNYW5nb1F1ZXJ5LCBNYW5nb1NlbGVjdG9yIH0gZnJvbSBcIm5hbm9cIjtcbmltcG9ydCB7IE1vZGVsQXJnIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgQ291Y2hEQkdyb3VwT3BlcmF0b3IgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHNmIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgQ291Y2hEQktleXMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjbGFzcyBDb3VjaERCV2hlcmVDbGF1c2UgZXh0ZW5kcyBXaGVyZUNsYXVzZTxNYW5nb1F1ZXJ5PiB7XG4gIGNvbnN0cnVjdG9yKGNsYXVzZTogTW9kZWxBcmc8V2hlcmVDbGF1c2U8TWFuZ29RdWVyeT4+KSB7XG4gICAgc3VwZXIoY2xhdXNlKTtcbiAgfVxuXG4gIGJ1aWxkKHF1ZXJ5OiBNYW5nb1F1ZXJ5KTogTWFuZ29RdWVyeSB7XG4gICAgY29uc3QgY29uZGl0aW9uOiBNYW5nb1NlbGVjdG9yID0gdGhpcy5hZGFwdGVyLnBhcnNlQ29uZGl0aW9uKFxuICAgICAgQ29uZGl0aW9uLmFuZChcbiAgICAgICAgdGhpcy5jb25kaXRpb24gYXMgQ29uZGl0aW9uLFxuICAgICAgICBDb25kaXRpb24uYXR0cmlidXRlKENvdWNoREJLZXlzLlRBQkxFKS5lcShcbiAgICAgICAgICBxdWVyeS5zZWxlY3RvcltDb3VjaERCS2V5cy5UQUJMRV1cbiAgICAgICAgKVxuICAgICAgKVxuICAgICkuc2VsZWN0b3I7XG5cbiAgICBjb25zdCBzZWxlY3RvcktleXMgPSBPYmplY3Qua2V5cyhjb25kaXRpb24pIGFzIE1hbmdvT3BlcmF0b3JbXTtcbiAgICBpZiAoXG4gICAgICBzZWxlY3RvcktleXMubGVuZ3RoID09PSAxICYmXG4gICAgICBPYmplY3QudmFsdWVzKENvdWNoREJHcm91cE9wZXJhdG9yKS5pbmRleE9mKHNlbGVjdG9yS2V5c1swXSkgIT09IC0xXG4gICAgKVxuICAgICAgc3dpdGNoIChzZWxlY3RvcktleXNbMF0pIHtcbiAgICAgICAgY2FzZSBDb3VjaERCR3JvdXBPcGVyYXRvci5BTkQ6XG4gICAgICAgICAgY29uZGl0aW9uW0NvdWNoREJHcm91cE9wZXJhdG9yLkFORF0gPSBbXG4gICAgICAgICAgICAuLi5PYmplY3QudmFsdWVzKFxuICAgICAgICAgICAgICBjb25kaXRpb25bQ291Y2hEQkdyb3VwT3BlcmF0b3IuQU5EXSBhcyBNYW5nb1NlbGVjdG9yXG4gICAgICAgICAgICApLnJlZHVjZSgoYWNjdW06IE1hbmdvU2VsZWN0b3JbXSwgdmFsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHZhbCk7XG4gICAgICAgICAgICAgIGlmIChrZXlzLmxlbmd0aCAhPT0gMSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICBcIlRvbyBtYW55IGtleXMgaW4gcXVlcnkgc2VsZWN0b3IuIHNob3VsZCBiZSBvbmVcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnN0IGsgPSBrZXlzWzBdO1xuICAgICAgICAgICAgICBpZiAoayA9PT0gQ291Y2hEQkdyb3VwT3BlcmF0b3IuQU5EKVxuICAgICAgICAgICAgICAgIGFjY3VtLnB1c2goLi4uKHZhbFtrXSBhcyBhbnlbXSkpO1xuICAgICAgICAgICAgICBlbHNlIGFjY3VtLnB1c2godmFsKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgICAgICAgfSwgW10pLFxuICAgICAgICAgIF07XG4gICAgICAgICAgcXVlcnkuc2VsZWN0b3IgPSBjb25kaXRpb247XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgQ291Y2hEQkdyb3VwT3BlcmF0b3IuT1I6IHtcbiAgICAgICAgICBjb25zdCBzOiBSZWNvcmQ8YW55LCBhbnk+ID0ge307XG4gICAgICAgICAgc1tDb3VjaERCR3JvdXBPcGVyYXRvci5BTkRdID0gW1xuICAgICAgICAgICAgY29uZGl0aW9uLFxuICAgICAgICAgICAgLi4uT2JqZWN0LmVudHJpZXMocXVlcnkuc2VsZWN0b3IpLm1hcCgoW2tleSwgdmFsXSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxhbnksIGFueT4gPSB7fTtcbiAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB2YWw7XG4gICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIHF1ZXJ5LnNlbGVjdG9yID0gcztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoaXMgc2hvdWxkIGJlIGltcG9zc2libGVcIik7XG4gICAgICB9XG4gICAgZWxzZSB7XG4gICAgICBPYmplY3QuZW50cmllcyhjb25kaXRpb24pLmZvckVhY2goKFtrZXksIHZhbF0pID0+IHtcbiAgICAgICAgaWYgKHF1ZXJ5LnNlbGVjdG9yW2tleV0pXG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgc2YoXG4gICAgICAgICAgICAgIFwiQSB7MH0gcXVlcnkgcGFyYW0gaXMgYWJvdXQgdG8gYmUgb3ZlcnJpZGRlbjogezF9IGJ5IHsyfVwiLFxuICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgIHF1ZXJ5LnNlbGVjdG9yW2tleV0gYXMgdW5rbm93biBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgIHZhbCBhcyB1bmtub3duIGFzIHN0cmluZ1xuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIHF1ZXJ5LnNlbGVjdG9yW2tleV0gPSB2YWw7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcXVlcnk7XG4gIH1cbn1cbiJdfQ==
@@ -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,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CouchDBConst = exports.CouchDBGroupOperator = exports.CouchDBOperator = void 0;
4
+ exports.CouchDBOperator = {
5
+ EQUAL: "$eq",
6
+ DIFFERENT: "$ne",
7
+ BIGGER: "$gt",
8
+ BIGGER_EQ: "$gte",
9
+ SMALLER: "$lt",
10
+ SMALLER_EQ: "$lte",
11
+ // BETWEEN = "BETWEEN",
12
+ NOT: "$not",
13
+ IN: "$in",
14
+ // IS = "IS",
15
+ REGEXP: "$regex",
16
+ };
17
+ exports.CouchDBGroupOperator = {
18
+ AND: "$and",
19
+ OR: "$or",
20
+ };
21
+ exports.CouchDBConst = {
22
+ NULL: "null",
23
+ };
24
+
25
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRWEsUUFBQSxlQUFlLEdBQWtDO0lBQzVELEtBQUssRUFBRSxLQUFLO0lBQ1osU0FBUyxFQUFFLEtBQUs7SUFDaEIsTUFBTSxFQUFFLEtBQUs7SUFDYixTQUFTLEVBQUUsTUFBTTtJQUNqQixPQUFPLEVBQUUsS0FBSztJQUNkLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLHVCQUF1QjtJQUN2QixHQUFHLEVBQUUsTUFBTTtJQUNYLEVBQUUsRUFBRSxLQUFLO0lBQ1QsYUFBYTtJQUNiLE1BQU0sRUFBRSxRQUFRO0NBQ2pCLENBQUM7QUFFVyxRQUFBLG9CQUFvQixHQUFrQztJQUNqRSxHQUFHLEVBQUUsTUFBTTtJQUNYLEVBQUUsRUFBRSxLQUFLO0NBQ1YsQ0FBQztBQUVXLFFBQUEsWUFBWSxHQUEyQjtJQUNsRCxJQUFJLEVBQUUsTUFBTTtDQUNiLENBQUMiLCJmaWxlIjoicXVlcnkvY29uc3RhbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWFuZ29PcGVyYXRvciB9IGZyb20gXCJuYW5vXCI7XG5cbmV4cG9ydCBjb25zdCBDb3VjaERCT3BlcmF0b3I6IFJlY29yZDxzdHJpbmcsIE1hbmdvT3BlcmF0b3I+ID0ge1xuICBFUVVBTDogXCIkZXFcIixcbiAgRElGRkVSRU5UOiBcIiRuZVwiLFxuICBCSUdHRVI6IFwiJGd0XCIsXG4gIEJJR0dFUl9FUTogXCIkZ3RlXCIsXG4gIFNNQUxMRVI6IFwiJGx0XCIsXG4gIFNNQUxMRVJfRVE6IFwiJGx0ZVwiLFxuICAvLyBCRVRXRUVOID0gXCJCRVRXRUVOXCIsXG4gIE5PVDogXCIkbm90XCIsXG4gIElOOiBcIiRpblwiLFxuICAvLyBJUyA9IFwiSVNcIixcbiAgUkVHRVhQOiBcIiRyZWdleFwiLFxufTtcblxuZXhwb3J0IGNvbnN0IENvdWNoREJHcm91cE9wZXJhdG9yOiBSZWNvcmQ8c3RyaW5nLCBNYW5nb09wZXJhdG9yPiA9IHtcbiAgQU5EOiBcIiRhbmRcIixcbiAgT1I6IFwiJG9yXCIsXG59O1xuXG5leHBvcnQgY29uc3QgQ291Y2hEQkNvbnN0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBOVUxMOiBcIm51bGxcIixcbn07XG4iXX0=
@@ -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,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Factory = void 0;
4
+ const core_1 = require("@decaf-ts/core");
5
+ const core_2 = require("@decaf-ts/core");
6
+ const core_3 = require("@decaf-ts/core");
7
+ const core_4 = require("@decaf-ts/core");
8
+ const core_5 = require("@decaf-ts/core");
9
+ const FromClause_1 = require("./FromClause.cjs");
10
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
11
+ const InsertClause_1 = require("./InsertClause.cjs");
12
+ const Statement_1 = require("./Statement.cjs");
13
+ const WhereClause_1 = require("./WhereClause.cjs");
14
+ const SelectClause_1 = require("./SelectClause.cjs");
15
+ const ValuesClause_1 = require("./ValuesClause.cjs");
16
+ const constants_1 = require("./constants.cjs");
17
+ class Factory extends core_1.ClauseFactory {
18
+ constructor(adapter) {
19
+ super(adapter);
20
+ }
21
+ from(statement, selector) {
22
+ return new FromClause_1.CouchDBFromClause({ statement: statement, selector: selector });
23
+ }
24
+ groupBy(statement, selector) {
25
+ return new (class extends core_5.GroupByClause {
26
+ constructor(clause) {
27
+ super(clause);
28
+ }
29
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
30
+ build(query) {
31
+ throw new db_decorators_1.InternalError("Not implemented");
32
+ }
33
+ })({
34
+ statement: statement,
35
+ selector: selector,
36
+ });
37
+ }
38
+ insert() {
39
+ return new InsertClause_1.CouchDBInsertClause({
40
+ statement: new Statement_1.CouchDBStatement(this.adapter),
41
+ });
42
+ }
43
+ limit(statement, selector) {
44
+ return new (class extends core_2.LimitClause {
45
+ constructor(clause) {
46
+ super(clause);
47
+ }
48
+ build(query) {
49
+ query.limit = this.selector;
50
+ return query;
51
+ }
52
+ })({
53
+ statement: statement,
54
+ selector: selector,
55
+ });
56
+ }
57
+ offset(statement, selector) {
58
+ return new (class extends core_3.OffsetClause {
59
+ constructor(clause) {
60
+ super(clause);
61
+ }
62
+ build(query) {
63
+ const skip = parseInt(this.selector);
64
+ if (isNaN(skip))
65
+ throw new core_1.QueryError("Failed to parse offset");
66
+ query.skip = skip;
67
+ return query;
68
+ }
69
+ })({
70
+ statement: statement,
71
+ selector: selector,
72
+ });
73
+ }
74
+ orderBy(statement, selector) {
75
+ return new (class extends core_4.OrderByClause {
76
+ constructor(clause) {
77
+ super(clause);
78
+ }
79
+ build(query) {
80
+ query.sort = query.sort || [];
81
+ query.selector = query.selector || {};
82
+ this.selector.forEach((s) => {
83
+ const [selector, value] = s;
84
+ const rec = {};
85
+ rec[selector] = value;
86
+ query.sort.push(rec);
87
+ if (!query.selector[selector]) {
88
+ query.selector[selector] = {};
89
+ query.selector[selector][constants_1.CouchDBOperator.BIGGER] = null;
90
+ }
91
+ // query.fields = query.fields || [];
92
+ // query.fields = [...new Set([...query.fields, selector]).keys()]
93
+ });
94
+ return query;
95
+ }
96
+ })({
97
+ statement: statement,
98
+ selector: selector,
99
+ });
100
+ }
101
+ select(selector) {
102
+ return new SelectClause_1.CouchDBSelectClause({
103
+ statement: new Statement_1.CouchDBStatement(this.adapter),
104
+ selector: selector,
105
+ });
106
+ }
107
+ values(statement, values) {
108
+ return new ValuesClause_1.CouchDBValuesClause({
109
+ statement: statement,
110
+ values: values,
111
+ });
112
+ }
113
+ where(statement, condition) {
114
+ return new WhereClause_1.CouchDBWhereClause({
115
+ statement: statement,
116
+ condition: condition,
117
+ });
118
+ }
119
+ }
120
+ exports.Factory = Factory;
121
+
122
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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O1lBQ2hDLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLE1BQU0sRUFBRSxNQUFNO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FDSCxTQUFnQyxFQUNoQyxTQUFvQjtRQUVwQixPQUFPLElBQUksZ0NBQWtCLENBQUM7WUFDNUIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsU0FBUyxFQUFFLFNBQVM7U0FDckIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBM0lELDBCQTJJQyIsImZpbGUiOiJxdWVyeS9mYWN0b3J5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2xhdXNlRmFjdG9yeSxcbiAgQ29uZGl0aW9uLFxuICBGcm9tQ2xhdXNlLFxuICBGcm9tU2VsZWN0b3IsXG4gIEdyb3VwQnlTZWxlY3RvcixcbiAgTGltaXRTZWxlY3RvcixcbiAgT2Zmc2V0U2VsZWN0b3IsXG4gIE9yZGVyQnlTZWxlY3RvcixcbiAgUXVlcnlFcnJvcixcbiAgU2VsZWN0U2VsZWN0b3IsXG4gIFN0YXRlbWVudCxcbn0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBEb2N1bWVudFNjb3BlLCBNYW5nb1F1ZXJ5LCBNYW5nb1NlbGVjdG9yIH0gZnJvbSBcIm5hbm9cIjtcbmltcG9ydCB7IExpbWl0Q2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBTZWxlY3RDbGF1c2UgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IFdoZXJlQ2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBPZmZzZXRDbGF1c2UgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IE9yZGVyQnlDbGF1c2UgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IEdyb3VwQnlDbGF1c2UgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IFZhbHVlc0NsYXVzZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgSW5zZXJ0Q2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBDb3VjaERCRnJvbUNsYXVzZSB9IGZyb20gXCIuL0Zyb21DbGF1c2VcIjtcbmltcG9ydCB7IE1vZGVsQXJnLCBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IENvdWNoREJJbnNlcnRDbGF1c2UgfSBmcm9tIFwiLi9JbnNlcnRDbGF1c2VcIjtcbmltcG9ydCB7IENvdWNoREJTdGF0ZW1lbnQgfSBmcm9tIFwiLi9TdGF0ZW1lbnRcIjtcbmltcG9ydCB7IENvdWNoREJXaGVyZUNsYXVzZSB9IGZyb20gXCIuL1doZXJlQ2xhdXNlXCI7XG5pbXBvcnQgeyBDb3VjaERCU2VsZWN0Q2xhdXNlIH0gZnJvbSBcIi4vU2VsZWN0Q2xhdXNlXCI7XG5pbXBvcnQgeyBDb3VjaERCVmFsdWVzQ2xhdXNlIH0gZnJvbSBcIi4vVmFsdWVzQ2xhdXNlXCI7XG5pbXBvcnQgeyBDb3VjaERCT3BlcmF0b3IgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IENvdWNoREJBZGFwdGVyIH0gZnJvbSBcIi4uL2FkYXB0ZXJcIjtcblxuZXhwb3J0IGNsYXNzIEZhY3RvcnkgZXh0ZW5kcyBDbGF1c2VGYWN0b3J5PERvY3VtZW50U2NvcGU8YW55PiwgTWFuZ29RdWVyeT4ge1xuICBjb25zdHJ1Y3RvcihhZGFwdGVyOiBDb3VjaERCQWRhcHRlcikge1xuICAgIHN1cGVyKGFkYXB0ZXIpO1xuICB9XG5cbiAgZnJvbTxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50PE1hbmdvUXVlcnk+LFxuICAgIHNlbGVjdG9yOiBGcm9tU2VsZWN0b3I8TT5cbiAgKTogRnJvbUNsYXVzZTxNYW5nb1F1ZXJ5LCBNPiB7XG4gICAgcmV0dXJuIG5ldyBDb3VjaERCRnJvbUNsYXVzZSh7IHN0YXRlbWVudDogc3RhdGVtZW50LCBzZWxlY3Rvcjogc2VsZWN0b3IgfSk7XG4gIH1cblxuICBncm91cEJ5KFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50PE1hbmdvUXVlcnk+LFxuICAgIHNlbGVjdG9yOiBHcm91cEJ5U2VsZWN0b3JcbiAgKTogR3JvdXBCeUNsYXVzZTxNYW5nb1F1ZXJ5PiB7XG4gICAgcmV0dXJuIG5ldyAoY2xhc3MgZXh0ZW5kcyBHcm91cEJ5Q2xhdXNlPE1hbmdvUXVlcnk+IHtcbiAgICAgIGNvbnN0cnVjdG9yKGNsYXVzZTogTW9kZWxBcmc8R3JvdXBCeUNsYXVzZTxNYW5nb1F1ZXJ5Pj4pIHtcbiAgICAgICAgc3VwZXIoY2xhdXNlKTtcbiAgICAgIH1cblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgYnVpbGQocXVlcnk6IE1hbmdvUXVlcnkpOiBNYW5nb1F1ZXJ5IHtcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJOb3QgaW1wbGVtZW50ZWRcIik7XG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgc3RhdGVtZW50OiBzdGF0ZW1lbnQsXG4gICAgICBzZWxlY3Rvcjogc2VsZWN0b3IsXG4gICAgfSk7XG4gIH1cblxuICBpbnNlcnQ8TSBleHRlbmRzIE1vZGVsPigpOiBJbnNlcnRDbGF1c2U8TWFuZ29RdWVyeSwgTT4ge1xuICAgIHJldHVybiBuZXcgQ291Y2hEQkluc2VydENsYXVzZSh7XG4gICAgICBzdGF0ZW1lbnQ6IG5ldyBDb3VjaERCU3RhdGVtZW50KHRoaXMuYWRhcHRlciBhcyBDb3VjaERCQWRhcHRlciksXG4gICAgfSk7XG4gIH1cblxuICBsaW1pdChcbiAgICBzdGF0ZW1lbnQ6IFN0YXRlbWVudDxNYW5nb1F1ZXJ5PixcbiAgICBzZWxlY3RvcjogTGltaXRTZWxlY3RvclxuICApOiBMaW1pdENsYXVzZTxNYW5nb1F1ZXJ5PiB7XG4gICAgcmV0dXJuIG5ldyAoY2xhc3MgZXh0ZW5kcyBMaW1pdENsYXVzZTxNYW5nb1F1ZXJ5PiB7XG4gICAgICBjb25zdHJ1Y3RvcihjbGF1c2U6IE1vZGVsQXJnPExpbWl0Q2xhdXNlPE1hbmdvUXVlcnk+Pikge1xuICAgICAgICBzdXBlcihjbGF1c2UpO1xuICAgICAgfVxuXG4gICAgICBidWlsZChxdWVyeTogTWFuZ29RdWVyeSk6IE1hbmdvUXVlcnkge1xuICAgICAgICBxdWVyeS5saW1pdCA9IHRoaXMuc2VsZWN0b3IgYXMgbnVtYmVyO1xuICAgICAgICByZXR1cm4gcXVlcnk7XG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgc3RhdGVtZW50OiBzdGF0ZW1lbnQsXG4gICAgICBzZWxlY3Rvcjogc2VsZWN0b3IsXG4gICAgfSk7XG4gIH1cblxuICBvZmZzZXQoXG4gICAgc3RhdGVtZW50OiBTdGF0ZW1lbnQ8TWFuZ29RdWVyeT4sXG4gICAgc2VsZWN0b3I6IE9mZnNldFNlbGVjdG9yXG4gICk6IE9mZnNldENsYXVzZTxNYW5nb1F1ZXJ5PiB7XG4gICAgcmV0dXJuIG5ldyAoY2xhc3MgZXh0ZW5kcyBPZmZzZXRDbGF1c2U8TWFuZ29RdWVyeT4ge1xuICAgICAgY29uc3RydWN0b3IoY2xhdXNlOiBNb2RlbEFyZzxPZmZzZXRDbGF1c2U8TWFuZ29RdWVyeT4+KSB7XG4gICAgICAgIHN1cGVyKGNsYXVzZSk7XG4gICAgICB9XG5cbiAgICAgIGJ1aWxkKHF1ZXJ5OiBNYW5nb1F1ZXJ5KTogTWFuZ29RdWVyeSB7XG4gICAgICAgIGNvbnN0IHNraXA6IG51bWJlciA9IHBhcnNlSW50KHRoaXMuc2VsZWN0b3IgYXMgdW5rbm93biBhcyBzdHJpbmcpO1xuICAgICAgICBpZiAoaXNOYU4oc2tpcCkpIHRocm93IG5ldyBRdWVyeUVycm9yKFwiRmFpbGVkIHRvIHBhcnNlIG9mZnNldFwiKTtcbiAgICAgICAgcXVlcnkuc2tpcCA9IHNraXA7XG4gICAgICAgIHJldHVybiBxdWVyeTtcbiAgICAgIH1cbiAgICB9KSh7XG4gICAgICBzdGF0ZW1lbnQ6IHN0YXRlbWVudCxcbiAgICAgIHNlbGVjdG9yOiBzZWxlY3RvcixcbiAgICB9KTtcbiAgfVxuXG4gIG9yZGVyQnkoXG4gICAgc3RhdGVtZW50OiBTdGF0ZW1lbnQ8TWFuZ29RdWVyeT4sXG4gICAgc2VsZWN0b3I6IE9yZGVyQnlTZWxlY3RvcltdXG4gICk6IE9yZGVyQnlDbGF1c2U8TWFuZ29RdWVyeT4ge1xuICAgIHJldHVybiBuZXcgKGNsYXNzIGV4dGVuZHMgT3JkZXJCeUNsYXVzZTxNYW5nb1F1ZXJ5PiB7XG4gICAgICBjb25zdHJ1Y3RvcihjbGF1c2U6IE1vZGVsQXJnPE9yZGVyQnlDbGF1c2U8TWFuZ29RdWVyeT4+KSB7XG4gICAgICAgIHN1cGVyKGNsYXVzZSk7XG4gICAgICB9XG5cbiAgICAgIGJ1aWxkKHF1ZXJ5OiBNYW5nb1F1ZXJ5KTogTWFuZ29RdWVyeSB7XG4gICAgICAgIHF1ZXJ5LnNvcnQgPSBxdWVyeS5zb3J0IHx8IFtdO1xuICAgICAgICBxdWVyeS5zZWxlY3RvciA9IHF1ZXJ5LnNlbGVjdG9yIHx8ICh7fSBhcyBNYW5nb1NlbGVjdG9yKTtcbiAgICAgICAgdGhpcy5zZWxlY3RvciEuZm9yRWFjaCgocykgPT4ge1xuICAgICAgICAgIGNvbnN0IFtzZWxlY3RvciwgdmFsdWVdID0gcztcbiAgICAgICAgICBjb25zdCByZWM6IGFueSA9IHt9O1xuICAgICAgICAgIHJlY1tzZWxlY3Rvcl0gPSB2YWx1ZTtcbiAgICAgICAgICAocXVlcnkuc29ydCBhcyBhbnlbXSkucHVzaChyZWMgYXMgYW55KTtcbiAgICAgICAgICBpZiAoIXF1ZXJ5LnNlbGVjdG9yW3NlbGVjdG9yXSkge1xuICAgICAgICAgICAgcXVlcnkuc2VsZWN0b3Jbc2VsZWN0b3JdID0ge30gYXMgTWFuZ29TZWxlY3RvcjtcbiAgICAgICAgICAgIChxdWVyeS5zZWxlY3RvcltzZWxlY3Rvcl0gYXMgTWFuZ29TZWxlY3RvcilbXG4gICAgICAgICAgICAgIENvdWNoREJPcGVyYXRvci5CSUdHRVJcbiAgICAgICAgICAgIF0gPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBxdWVyeS5maWVsZHMgPSBxdWVyeS5maWVsZHMgfHwgW107XG4gICAgICAgICAgLy8gcXVlcnkuZmllbGRzID0gWy4uLm5ldyBTZXQoWy4uLnF1ZXJ5LmZpZWxkcywgc2VsZWN0b3JdKS5rZXlzKCldXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcXVlcnk7XG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgc3RhdGVtZW50OiBzdGF0ZW1lbnQsXG4gICAgICBzZWxlY3Rvcjogc2VsZWN0b3IsXG4gICAgfSk7XG4gIH1cblxuICBzZWxlY3Q8TSBleHRlbmRzIE1vZGVsPihcbiAgICBzZWxlY3RvcjogU2VsZWN0U2VsZWN0b3IgfCB1bmRlZmluZWRcbiAgKTogU2VsZWN0Q2xhdXNlPE1hbmdvUXVlcnksIE0+IHtcbiAgICByZXR1cm4gbmV3IENvdWNoREJTZWxlY3RDbGF1c2Uoe1xuICAgICAgc3RhdGVtZW50OiBuZXcgQ291Y2hEQlN0YXRlbWVudCh0aGlzLmFkYXB0ZXIpLFxuICAgICAgc2VsZWN0b3I6IHNlbGVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgdmFsdWVzPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgc3RhdGVtZW50OiBTdGF0ZW1lbnQ8TWFuZ29RdWVyeT4sXG4gICAgdmFsdWVzOiBNW11cbiAgKTogVmFsdWVzQ2xhdXNlPE1hbmdvUXVlcnksIE0+IHtcbiAgICByZXR1cm4gbmV3IENvdWNoREJWYWx1ZXNDbGF1c2U8TT4oe1xuICAgICAgc3RhdGVtZW50OiBzdGF0ZW1lbnQsXG4gICAgICB2YWx1ZXM6IHZhbHVlcyxcbiAgICB9KTtcbiAgfVxuXG4gIHdoZXJlKFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50PE1hbmdvUXVlcnk+LFxuICAgIGNvbmRpdGlvbjogQ29uZGl0aW9uXG4gICk6IFdoZXJlQ2xhdXNlPE1hbmdvUXVlcnk+IHtcbiAgICByZXR1cm4gbmV3IENvdWNoREJXaGVyZUNsYXVzZSh7XG4gICAgICBzdGF0ZW1lbnQ6IHN0YXRlbWVudCxcbiAgICAgIGNvbmRpdGlvbjogY29uZGl0aW9uLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -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
+ }