@decaf-ts/for-pouch 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.
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PouchAdapter = void 0;
4
+ require("reflect-metadata");
5
+ const for_couchdb_1 = require("@decaf-ts/for-couchdb");
6
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
7
+ const core_1 = require("@decaf-ts/core");
8
+ class PouchAdapter extends for_couchdb_1.CouchDBAdapter {
9
+ constructor(scope, flavour = "pouch") {
10
+ super(scope, flavour);
11
+ }
12
+ async user() {
13
+ const url = this.native.server.name;
14
+ if (url) {
15
+ const regexp = /https?:\/\/(.+?):.+?@/g;
16
+ const m = regexp.exec(url);
17
+ if (m) {
18
+ return new core_1.User({
19
+ id: m[1],
20
+ });
21
+ }
22
+ }
23
+ throw new db_decorators_1.InternalError("Not implemented");
24
+ }
25
+ async readAll(tableName, ids) {
26
+ const results = await this.native.fetch({ keys: ids.map((id) => this.generateId(tableName, id)) }, {});
27
+ return results.rows.map((r) => {
28
+ if (r instanceof Error)
29
+ throw r;
30
+ const res = Object.assign({}, r);
31
+ Object.defineProperty(res, core_1.PersistenceKeys.METADATA, {
32
+ enumerable: false,
33
+ writable: false,
34
+ value: r[for_couchdb_1.CouchDBKeys.REV],
35
+ });
36
+ return res;
37
+ });
38
+ }
39
+ async deleteAll(tableName, ids) {
40
+ const results = await this.native.fetch({ keys: ids.map((id) => this.generateId(tableName, id)) }, {});
41
+ const deletion = await this.native.bulk({
42
+ docs: results.rows.map((r) => {
43
+ r[for_couchdb_1.CouchDBKeys.DELETED] = true;
44
+ return r;
45
+ }),
46
+ });
47
+ deletion.forEach((d) => {
48
+ if (d.error)
49
+ console.error(d.error);
50
+ });
51
+ return results.rows.map((r) => {
52
+ if (r instanceof Error)
53
+ throw r;
54
+ const res = Object.assign({}, r);
55
+ Object.defineProperty(res, core_1.PersistenceKeys.METADATA, {
56
+ enumerable: false,
57
+ writable: false,
58
+ value: r[for_couchdb_1.CouchDBKeys.REV],
59
+ });
60
+ return res;
61
+ });
62
+ }
63
+ parseError(err, reason) {
64
+ return PouchAdapter.parseError(err, reason);
65
+ }
66
+ static parseError(err, reason) {
67
+ // return super.parseError(err, reason);
68
+ if (err instanceof db_decorators_1.BaseError)
69
+ return err;
70
+ let code = "";
71
+ if (typeof err === "string") {
72
+ code = err;
73
+ if (code.match(/already exist|update conflict/g))
74
+ return new db_decorators_1.ConflictError(code);
75
+ if (code.match(/missing|deleted/g))
76
+ return new db_decorators_1.NotFoundError(code);
77
+ }
78
+ else if (err.status) {
79
+ code = err.status;
80
+ reason = reason || err.message;
81
+ }
82
+ else {
83
+ code = err.message;
84
+ }
85
+ switch (code.toString()) {
86
+ case "401":
87
+ case "412":
88
+ case "409":
89
+ return new db_decorators_1.ConflictError(reason);
90
+ case "404":
91
+ return new db_decorators_1.NotFoundError(reason);
92
+ case "400":
93
+ if (code.toString().match(/No\sindex\sexists/g))
94
+ return new for_couchdb_1.IndexError(err);
95
+ return new db_decorators_1.InternalError(err);
96
+ default:
97
+ if (code.toString().match(/ECONNREFUSED/g))
98
+ return new core_1.ConnectionError(err);
99
+ return new db_decorators_1.InternalError(err);
100
+ }
101
+ }
102
+ }
103
+ exports.PouchAdapter = PouchAdapter;
104
+
105
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDL0IsSUFBSSxHQUFJLEdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDM0IsTUFBTSxHQUFHLE1BQU0sSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQ2pDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDckIsQ0FBQztRQUVELFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDeEIsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssS0FBSztnQkFDUixPQUFPLElBQUksNkJBQWEsQ0FBQyxNQUFnQixDQUFDLENBQUM7WUFDN0MsS0FBSyxLQUFLO2dCQUNSLE9BQU8sSUFBSSw2QkFBYSxDQUFDLE1BQWdCLENBQUMsQ0FBQztZQUM3QyxLQUFLLEtBQUs7Z0JBQ1IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDO29CQUM3QyxPQUFPLElBQUksd0JBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDN0IsT0FBTyxJQUFJLDZCQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEM7Z0JBQ0UsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztvQkFDeEMsT0FBTyxJQUFJLHNCQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2xDLE9BQU8sSUFBSSw2QkFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUF6R0Qsb0NBeUdDIiwiZmlsZSI6ImFkYXB0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCJyZWZsZWN0LW1ldGFkYXRhXCI7XG5pbXBvcnQge1xuICBDb3VjaERCQWRhcHRlcixcbiAgQ291Y2hEQktleXMsXG4gIERvY3VtZW50QnVsa1Jlc3BvbnNlLFxuICBEb2N1bWVudFNjb3BlLFxuICBJbmRleEVycm9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2Zvci1jb3VjaGRiXCI7XG5pbXBvcnQge1xuICBCYXNlRXJyb3IsXG4gIENvbmZsaWN0RXJyb3IsXG4gIEludGVybmFsRXJyb3IsXG4gIE5vdEZvdW5kRXJyb3IsXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQ29ubmVjdGlvbkVycm9yLCBQZXJzaXN0ZW5jZUtleXMsIFVzZXIgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcblxuZXhwb3J0IGNsYXNzIFBvdWNoQWRhcHRlciBleHRlbmRzIENvdWNoREJBZGFwdGVyIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IERvY3VtZW50U2NvcGU8YW55PiwgZmxhdm91cjogc3RyaW5nID0gXCJwb3VjaFwiKSB7XG4gICAgc3VwZXIoc2NvcGUsIGZsYXZvdXIpO1xuICB9XG5cbiAgYXN5bmMgdXNlcigpOiBQcm9taXNlPFVzZXI+IHtcbiAgICBjb25zdCB1cmwgPSAodGhpcy5uYXRpdmUuc2VydmVyIGFzIHVua25vd24gYXMgeyBuYW1lOiBzdHJpbmcgfSkubmFtZTtcbiAgICBpZiAodXJsKSB7XG4gICAgICBjb25zdCByZWdleHAgPSAvaHR0cHM/OlxcL1xcLyguKz8pOi4rP0AvZztcbiAgICAgIGNvbnN0IG0gPSByZWdleHAuZXhlYyh1cmwpO1xuICAgICAgaWYgKG0pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBVc2VyKHtcbiAgICAgICAgICBpZDogbVsxXSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiTm90IGltcGxlbWVudGVkXCIpO1xuICB9XG5cbiAgYXN5bmMgcmVhZEFsbChcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZHM6IChzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQpW11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+W10+IHtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5uYXRpdmUuZmV0Y2goXG4gICAgICB7IGtleXM6IGlkcy5tYXAoKGlkKSA9PiB0aGlzLmdlbmVyYXRlSWQodGFibGVOYW1lLCBpZCBhcyBhbnkpKSB9LFxuICAgICAge31cbiAgICApO1xuICAgIHJldHVybiByZXN1bHRzLnJvd3MubWFwKChyKSA9PiB7XG4gICAgICBpZiAociBpbnN0YW5jZW9mIEVycm9yKSB0aHJvdyByO1xuICAgICAgY29uc3QgcmVzID0gT2JqZWN0LmFzc2lnbih7fSwgcik7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzLCBQZXJzaXN0ZW5jZUtleXMuTUVUQURBVEEsIHtcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IChyIGFzIGFueSlbQ291Y2hEQktleXMuUkVWXSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUFsbChcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZHM6IChzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQpW11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+W10+IHtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5uYXRpdmUuZmV0Y2goXG4gICAgICB7IGtleXM6IGlkcy5tYXAoKGlkKSA9PiB0aGlzLmdlbmVyYXRlSWQodGFibGVOYW1lLCBpZCBhcyBhbnkpKSB9LFxuICAgICAge31cbiAgICApO1xuICAgIGNvbnN0IGRlbGV0aW9uOiBEb2N1bWVudEJ1bGtSZXNwb25zZVtdID0gYXdhaXQgdGhpcy5uYXRpdmUuYnVsayh7XG4gICAgICBkb2NzOiByZXN1bHRzLnJvd3MubWFwKChyKSA9PiB7XG4gICAgICAgIChyIGFzIGFueSlbQ291Y2hEQktleXMuREVMRVRFRF0gPSB0cnVlO1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH0pLFxuICAgIH0pO1xuICAgIGRlbGV0aW9uLmZvckVhY2goKGQ6IERvY3VtZW50QnVsa1Jlc3BvbnNlKSA9PiB7XG4gICAgICBpZiAoZC5lcnJvcikgY29uc29sZS5lcnJvcihkLmVycm9yKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0cy5yb3dzLm1hcCgocikgPT4ge1xuICAgICAgaWYgKHIgaW5zdGFuY2VvZiBFcnJvcikgdGhyb3cgcjtcbiAgICAgIGNvbnN0IHJlcyA9IE9iamVjdC5hc3NpZ24oe30sIHIpO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlcywgUGVyc2lzdGVuY2VLZXlzLk1FVEFEQVRBLCB7XG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgIHZhbHVlOiAociBhcyBhbnkpW0NvdWNoREJLZXlzLlJFVl0sXG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSk7XG4gIH1cblxuICBwYXJzZUVycm9yKGVycjogRXJyb3IgfCBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IEJhc2VFcnJvciB7XG4gICAgcmV0dXJuIFBvdWNoQWRhcHRlci5wYXJzZUVycm9yKGVyciwgcmVhc29uKTtcbiAgfVxuXG4gIHN0YXRpYyBwYXJzZUVycm9yKGVycjogRXJyb3IgfCBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IEJhc2VFcnJvciB7XG4gICAgLy8gcmV0dXJuIHN1cGVyLnBhcnNlRXJyb3IoZXJyLCByZWFzb24pO1xuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBCYXNlRXJyb3IpIHJldHVybiBlcnIgYXMgYW55O1xuICAgIGxldCBjb2RlOiBzdHJpbmcgPSBcIlwiO1xuICAgIGlmICh0eXBlb2YgZXJyID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBjb2RlID0gZXJyO1xuICAgICAgaWYgKGNvZGUubWF0Y2goL2FscmVhZHkgZXhpc3R8dXBkYXRlIGNvbmZsaWN0L2cpKVxuICAgICAgICByZXR1cm4gbmV3IENvbmZsaWN0RXJyb3IoY29kZSk7XG4gICAgICBpZiAoY29kZS5tYXRjaCgvbWlzc2luZ3xkZWxldGVkL2cpKSByZXR1cm4gbmV3IE5vdEZvdW5kRXJyb3IoY29kZSk7XG4gICAgfSBlbHNlIGlmICgoZXJyIGFzIGFueSkuc3RhdHVzKSB7XG4gICAgICBjb2RlID0gKGVyciBhcyBhbnkpLnN0YXR1cztcbiAgICAgIHJlYXNvbiA9IHJlYXNvbiB8fCBlcnIubWVzc2FnZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29kZSA9IGVyci5tZXNzYWdlO1xuICAgIH1cblxuICAgIHN3aXRjaCAoY29kZS50b1N0cmluZygpKSB7XG4gICAgICBjYXNlIFwiNDAxXCI6XG4gICAgICBjYXNlIFwiNDEyXCI6XG4gICAgICBjYXNlIFwiNDA5XCI6XG4gICAgICAgIHJldHVybiBuZXcgQ29uZmxpY3RFcnJvcihyZWFzb24gYXMgc3RyaW5nKTtcbiAgICAgIGNhc2UgXCI0MDRcIjpcbiAgICAgICAgcmV0dXJuIG5ldyBOb3RGb3VuZEVycm9yKHJlYXNvbiBhcyBzdHJpbmcpO1xuICAgICAgY2FzZSBcIjQwMFwiOlxuICAgICAgICBpZiAoY29kZS50b1N0cmluZygpLm1hdGNoKC9Ob1xcc2luZGV4XFxzZXhpc3RzL2cpKVxuICAgICAgICAgIHJldHVybiBuZXcgSW5kZXhFcnJvcihlcnIpO1xuICAgICAgICByZXR1cm4gbmV3IEludGVybmFsRXJyb3IoZXJyKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChjb2RlLnRvU3RyaW5nKCkubWF0Y2goL0VDT05OUkVGVVNFRC9nKSlcbiAgICAgICAgICByZXR1cm4gbmV3IENvbm5lY3Rpb25FcnJvcihlcnIpO1xuICAgICAgICByZXR1cm4gbmV3IEludGVybmFsRXJyb3IoZXJyKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,12 @@
1
+ import "reflect-metadata";
2
+ import { CouchDBAdapter, DocumentScope } from "@decaf-ts/for-couchdb";
3
+ import { BaseError } from "@decaf-ts/db-decorators";
4
+ import { User } from "@decaf-ts/core";
5
+ export declare class PouchAdapter extends CouchDBAdapter {
6
+ constructor(scope: DocumentScope<any>, flavour?: string);
7
+ user(): Promise<User>;
8
+ readAll(tableName: string, ids: (string | number | bigint)[]): Promise<Record<string, any>[]>;
9
+ deleteAll(tableName: string, ids: (string | number | bigint)[]): Promise<Record<string, any>[]>;
10
+ parseError(err: Error | string, reason?: string): BaseError;
11
+ static parseError(err: Error | string, reason?: string): BaseError;
12
+ }
@@ -0,0 +1,7 @@
1
+ import { Model } from "@decaf-ts/decorator-validation";
2
+ import { MangoQuery } from "@decaf-ts/for-couchdb";
3
+ import { PouchAdapter } from "./adapter";
4
+ import { Repository } from "@decaf-ts/core";
5
+ export interface PouchRepository<M extends Model> extends Repository<M, MangoQuery> {
6
+ adapter: PouchAdapter;
7
+ }
@@ -0,0 +1,3 @@
1
+ export {};
2
+
3
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9Qb3VjaFJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJQb3VjaFJlcG9zaXRvcnkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IE1hbmdvUXVlcnkgfSBmcm9tIFwiQGRlY2FmLXRzL2Zvci1jb3VjaGRiXCI7XG5pbXBvcnQgeyBQb3VjaEFkYXB0ZXIgfSBmcm9tIFwiLi9hZGFwdGVyXCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG91Y2hSZXBvc2l0b3J5PE0gZXh0ZW5kcyBNb2RlbD5cbiAgZXh0ZW5kcyBSZXBvc2l0b3J5PE0sIE1hbmdvUXVlcnk+IHtcbiAgYWRhcHRlcjogUG91Y2hBZGFwdGVyO1xufVxuIl19
@@ -0,0 +1,12 @@
1
+ import "reflect-metadata";
2
+ import { CouchDBAdapter, DocumentScope } from "@decaf-ts/for-couchdb";
3
+ import { BaseError } from "@decaf-ts/db-decorators";
4
+ import { User } from "@decaf-ts/core";
5
+ export declare class PouchAdapter extends CouchDBAdapter {
6
+ constructor(scope: DocumentScope<any>, flavour?: string);
7
+ user(): Promise<User>;
8
+ readAll(tableName: string, ids: (string | number | bigint)[]): Promise<Record<string, any>[]>;
9
+ deleteAll(tableName: string, ids: (string | number | bigint)[]): Promise<Record<string, any>[]>;
10
+ parseError(err: Error | string, reason?: string): BaseError;
11
+ static parseError(err: Error | string, reason?: string): BaseError;
12
+ }
@@ -0,0 +1,101 @@
1
+ import "reflect-metadata";
2
+ import { CouchDBAdapter, CouchDBKeys, IndexError, } from "@decaf-ts/for-couchdb";
3
+ import { BaseError, ConflictError, InternalError, NotFoundError, } from "@decaf-ts/db-decorators";
4
+ import { ConnectionError, PersistenceKeys, User } from "@decaf-ts/core";
5
+ export class PouchAdapter extends CouchDBAdapter {
6
+ constructor(scope, flavour = "pouch") {
7
+ super(scope, flavour);
8
+ }
9
+ async user() {
10
+ const url = this.native.server.name;
11
+ if (url) {
12
+ const regexp = /https?:\/\/(.+?):.+?@/g;
13
+ const m = regexp.exec(url);
14
+ if (m) {
15
+ return new User({
16
+ id: m[1],
17
+ });
18
+ }
19
+ }
20
+ throw new InternalError("Not implemented");
21
+ }
22
+ async readAll(tableName, ids) {
23
+ const results = await this.native.fetch({ keys: ids.map((id) => this.generateId(tableName, id)) }, {});
24
+ return results.rows.map((r) => {
25
+ if (r instanceof Error)
26
+ throw r;
27
+ const res = Object.assign({}, r);
28
+ Object.defineProperty(res, PersistenceKeys.METADATA, {
29
+ enumerable: false,
30
+ writable: false,
31
+ value: r[CouchDBKeys.REV],
32
+ });
33
+ return res;
34
+ });
35
+ }
36
+ async deleteAll(tableName, ids) {
37
+ const results = await this.native.fetch({ keys: ids.map((id) => this.generateId(tableName, id)) }, {});
38
+ const deletion = await this.native.bulk({
39
+ docs: results.rows.map((r) => {
40
+ r[CouchDBKeys.DELETED] = true;
41
+ return r;
42
+ }),
43
+ });
44
+ deletion.forEach((d) => {
45
+ if (d.error)
46
+ console.error(d.error);
47
+ });
48
+ return results.rows.map((r) => {
49
+ if (r instanceof Error)
50
+ throw r;
51
+ const res = Object.assign({}, r);
52
+ Object.defineProperty(res, PersistenceKeys.METADATA, {
53
+ enumerable: false,
54
+ writable: false,
55
+ value: r[CouchDBKeys.REV],
56
+ });
57
+ return res;
58
+ });
59
+ }
60
+ parseError(err, reason) {
61
+ return PouchAdapter.parseError(err, reason);
62
+ }
63
+ static parseError(err, reason) {
64
+ // return super.parseError(err, reason);
65
+ if (err instanceof BaseError)
66
+ return err;
67
+ let code = "";
68
+ if (typeof err === "string") {
69
+ code = err;
70
+ if (code.match(/already exist|update conflict/g))
71
+ return new ConflictError(code);
72
+ if (code.match(/missing|deleted/g))
73
+ return new NotFoundError(code);
74
+ }
75
+ else if (err.status) {
76
+ code = err.status;
77
+ reason = reason || err.message;
78
+ }
79
+ else {
80
+ code = err.message;
81
+ }
82
+ switch (code.toString()) {
83
+ case "401":
84
+ case "412":
85
+ case "409":
86
+ return new ConflictError(reason);
87
+ case "404":
88
+ return new NotFoundError(reason);
89
+ case "400":
90
+ if (code.toString().match(/No\sindex\sexists/g))
91
+ return new IndexError(err);
92
+ return new InternalError(err);
93
+ default:
94
+ if (code.toString().match(/ECONNREFUSED/g))
95
+ return new ConnectionError(err);
96
+ return new InternalError(err);
97
+ }
98
+ }
99
+ }
100
+
101
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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ImltcG9ydCBcInJlZmxlY3QtbWV0YWRhdGFcIjtcbmltcG9ydCB7XG4gIENvdWNoREJBZGFwdGVyLFxuICBDb3VjaERCS2V5cyxcbiAgRG9jdW1lbnRCdWxrUmVzcG9uc2UsXG4gIERvY3VtZW50U2NvcGUsXG4gIEluZGV4RXJyb3IsXG59IGZyb20gXCJAZGVjYWYtdHMvZm9yLWNvdWNoZGJcIjtcbmltcG9ydCB7XG4gIEJhc2VFcnJvcixcbiAgQ29uZmxpY3RFcnJvcixcbiAgSW50ZXJuYWxFcnJvcixcbiAgTm90Rm91bmRFcnJvcixcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBDb25uZWN0aW9uRXJyb3IsIFBlcnNpc3RlbmNlS2V5cywgVXNlciB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuXG5leHBvcnQgY2xhc3MgUG91Y2hBZGFwdGVyIGV4dGVuZHMgQ291Y2hEQkFkYXB0ZXIge1xuICBjb25zdHJ1Y3RvcihzY29wZTogRG9jdW1lbnRTY29wZTxhbnk+LCBmbGF2b3VyOiBzdHJpbmcgPSBcInBvdWNoXCIpIHtcbiAgICBzdXBlcihzY29wZSwgZmxhdm91cik7XG4gIH1cblxuICBhc3luYyB1c2VyKCk6IFByb21pc2U8VXNlcj4ge1xuICAgIGNvbnN0IHVybCA9ICh0aGlzLm5hdGl2ZS5zZXJ2ZXIgYXMgdW5rbm93biBhcyB7IG5hbWU6IHN0cmluZyB9KS5uYW1lO1xuICAgIGlmICh1cmwpIHtcbiAgICAgIGNvbnN0IHJlZ2V4cCA9IC9odHRwcz86XFwvXFwvKC4rPyk6Lis/QC9nO1xuICAgICAgY29uc3QgbSA9IHJlZ2V4cC5leGVjKHVybCk7XG4gICAgICBpZiAobSkge1xuICAgICAgICByZXR1cm4gbmV3IFVzZXIoe1xuICAgICAgICAgIGlkOiBtWzFdLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJOb3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cblxuICBhc3luYyByZWFkQWxsKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkczogKHN0cmluZyB8IG51bWJlciB8IGJpZ2ludClbXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT5bXT4ge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLm5hdGl2ZS5mZXRjaChcbiAgICAgIHsga2V5czogaWRzLm1hcCgoaWQpID0+IHRoaXMuZ2VuZXJhdGVJZCh0YWJsZU5hbWUsIGlkIGFzIGFueSkpIH0sXG4gICAgICB7fVxuICAgICk7XG4gICAgcmV0dXJuIHJlc3VsdHMucm93cy5tYXAoKHIpID0+IHtcbiAgICAgIGlmIChyIGluc3RhbmNlb2YgRXJyb3IpIHRocm93IHI7XG4gICAgICBjb25zdCByZXMgPSBPYmplY3QuYXNzaWduKHt9LCByKTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXMsIFBlcnNpc3RlbmNlS2V5cy5NRVRBREFUQSwge1xuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICB2YWx1ZTogKHIgYXMgYW55KVtDb3VjaERCS2V5cy5SRVZdLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlQWxsKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkczogKHN0cmluZyB8IG51bWJlciB8IGJpZ2ludClbXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT5bXT4ge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLm5hdGl2ZS5mZXRjaChcbiAgICAgIHsga2V5czogaWRzLm1hcCgoaWQpID0+IHRoaXMuZ2VuZXJhdGVJZCh0YWJsZU5hbWUsIGlkIGFzIGFueSkpIH0sXG4gICAgICB7fVxuICAgICk7XG4gICAgY29uc3QgZGVsZXRpb246IERvY3VtZW50QnVsa1Jlc3BvbnNlW10gPSBhd2FpdCB0aGlzLm5hdGl2ZS5idWxrKHtcbiAgICAgIGRvY3M6IHJlc3VsdHMucm93cy5tYXAoKHIpID0+IHtcbiAgICAgICAgKHIgYXMgYW55KVtDb3VjaERCS2V5cy5ERUxFVEVEXSA9IHRydWU7XG4gICAgICAgIHJldHVybiByO1xuICAgICAgfSksXG4gICAgfSk7XG4gICAgZGVsZXRpb24uZm9yRWFjaCgoZDogRG9jdW1lbnRCdWxrUmVzcG9uc2UpID0+IHtcbiAgICAgIGlmIChkLmVycm9yKSBjb25zb2xlLmVycm9yKGQuZXJyb3IpO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHRzLnJvd3MubWFwKChyKSA9PiB7XG4gICAgICBpZiAociBpbnN0YW5jZW9mIEVycm9yKSB0aHJvdyByO1xuICAgICAgY29uc3QgcmVzID0gT2JqZWN0LmFzc2lnbih7fSwgcik7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzLCBQZXJzaXN0ZW5jZUtleXMuTUVUQURBVEEsIHtcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IChyIGFzIGFueSlbQ291Y2hEQktleXMuUkVWXSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9KTtcbiAgfVxuXG4gIHBhcnNlRXJyb3IoZXJyOiBFcnJvciB8IHN0cmluZywgcmVhc29uPzogc3RyaW5nKTogQmFzZUVycm9yIHtcbiAgICByZXR1cm4gUG91Y2hBZGFwdGVyLnBhcnNlRXJyb3IoZXJyLCByZWFzb24pO1xuICB9XG5cbiAgc3RhdGljIHBhcnNlRXJyb3IoZXJyOiBFcnJvciB8IHN0cmluZywgcmVhc29uPzogc3RyaW5nKTogQmFzZUVycm9yIHtcbiAgICAvLyByZXR1cm4gc3VwZXIucGFyc2VFcnJvcihlcnIsIHJlYXNvbik7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIEJhc2VFcnJvcikgcmV0dXJuIGVyciBhcyBhbnk7XG4gICAgbGV0IGNvZGU6IHN0cmluZyA9IFwiXCI7XG4gICAgaWYgKHR5cGVvZiBlcnIgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvZGUgPSBlcnI7XG4gICAgICBpZiAoY29kZS5tYXRjaCgvYWxyZWFkeSBleGlzdHx1cGRhdGUgY29uZmxpY3QvZykpXG4gICAgICAgIHJldHVybiBuZXcgQ29uZmxpY3RFcnJvcihjb2RlKTtcbiAgICAgIGlmIChjb2RlLm1hdGNoKC9taXNzaW5nfGRlbGV0ZWQvZykpIHJldHVybiBuZXcgTm90Rm91bmRFcnJvcihjb2RlKTtcbiAgICB9IGVsc2UgaWYgKChlcnIgYXMgYW55KS5zdGF0dXMpIHtcbiAgICAgIGNvZGUgPSAoZXJyIGFzIGFueSkuc3RhdHVzO1xuICAgICAgcmVhc29uID0gcmVhc29uIHx8IGVyci5tZXNzYWdlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2RlID0gZXJyLm1lc3NhZ2U7XG4gICAgfVxuXG4gICAgc3dpdGNoIChjb2RlLnRvU3RyaW5nKCkpIHtcbiAgICAgIGNhc2UgXCI0MDFcIjpcbiAgICAgIGNhc2UgXCI0MTJcIjpcbiAgICAgIGNhc2UgXCI0MDlcIjpcbiAgICAgICAgcmV0dXJuIG5ldyBDb25mbGljdEVycm9yKHJlYXNvbiBhcyBzdHJpbmcpO1xuICAgICAgY2FzZSBcIjQwNFwiOlxuICAgICAgICByZXR1cm4gbmV3IE5vdEZvdW5kRXJyb3IocmVhc29uIGFzIHN0cmluZyk7XG4gICAgICBjYXNlIFwiNDAwXCI6XG4gICAgICAgIGlmIChjb2RlLnRvU3RyaW5nKCkubWF0Y2goL05vXFxzaW5kZXhcXHNleGlzdHMvZykpXG4gICAgICAgICAgcmV0dXJuIG5ldyBJbmRleEVycm9yKGVycik7XG4gICAgICAgIHJldHVybiBuZXcgSW50ZXJuYWxFcnJvcihlcnIpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGNvZGUudG9TdHJpbmcoKS5tYXRjaCgvRUNPTk5SRUZVU0VEL2cpKVxuICAgICAgICAgIHJldHVybiBuZXcgQ29ubmVjdGlvbkVycm9yKGVycik7XG4gICAgICAgIHJldHVybiBuZXcgSW50ZXJuYWxFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,15 @@
1
+ export * from "./adapter";
2
+ export * from "./PouchRepository";
3
+ export * from "./utils";
4
+ /**
5
+ * @summary Module summary
6
+ * @description Module description
7
+ * @module for-nano
8
+ */
9
+ /**
10
+ * @summary stores the current package version
11
+ * @description this is how you should document a constant
12
+ * @const VERSION
13
+ * @memberOf module:ts-workspace
14
+ */
15
+ export declare const VERSION = "0.0.1";
@@ -0,0 +1,17 @@
1
+ export * from "./adapter";
2
+ export * from "./PouchRepository";
3
+ export * from "./utils";
4
+ /**
5
+ * @summary Module summary
6
+ * @description Module description
7
+ * @module for-nano
8
+ */
9
+ /**
10
+ * @summary stores the current package version
11
+ * @description this is how you should document a constant
12
+ * @const VERSION
13
+ * @memberOf module:ts-workspace
14
+ */
15
+ export const VERSION = "0.0.1";
16
+
17
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsU0FBUyxDQUFDO0FBRXhCOzs7O0dBSUc7QUFFSDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9hZGFwdGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Qb3VjaFJlcG9zaXRvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgTW9kdWxlIHN1bW1hcnlcbiAqIEBkZXNjcmlwdGlvbiBNb2R1bGUgZGVzY3JpcHRpb25cbiAqIEBtb2R1bGUgZm9yLW5hbm9cbiAqL1xuXG4vKipcbiAqIEBzdW1tYXJ5IHN0b3JlcyB0aGUgY3VycmVudCBwYWNrYWdlIHZlcnNpb25cbiAqIEBkZXNjcmlwdGlvbiB0aGlzIGlzIGhvdyB5b3Ugc2hvdWxkIGRvY3VtZW50IGEgY29uc3RhbnRcbiAqIEBjb25zdCBWRVJTSU9OXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnRzLXdvcmtzcGFjZVxuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiMC4wLjFcIjtcbiJdfQ==
@@ -0,0 +1,21 @@
1
+ import Database = PouchDB.Database;
2
+ import { BulkFetchDocsWrapper, BulkModifyDocsWrapper, CreateIndexRequest, CreateIndexResponse, DatabaseAuthResponse, DatabaseSessionResponse, DocumentDestroyResponse, DocumentGetParams, DocumentInsertResponse, DocumentScope, MangoQuery, MangoResponse, ServerScope, DocumentFetchResponse } from "@decaf-ts/for-couchdb";
3
+ export declare function toServerScope(pouch: typeof PouchDB): {
4
+ pouch: typeof PouchDB;
5
+ use<D>(db: string): DocumentScope<D>;
6
+ auth(username: string, userpass: string): Promise<DatabaseAuthResponse>;
7
+ session(): Promise<DatabaseSessionResponse>;
8
+ };
9
+ export declare function toDocumentScope(database: Database): {
10
+ db: Database;
11
+ fetch(docnames: BulkFetchDocsWrapper): Promise<DocumentFetchResponse<any>>;
12
+ auth(username: string, userpass: string): Promise<DatabaseAuthResponse>;
13
+ session(): Promise<DatabaseSessionResponse>;
14
+ insert(document: any): Promise<DocumentInsertResponse>;
15
+ get(docname: string, params?: DocumentGetParams | undefined): Promise<any>;
16
+ destroy(docname: string, rev: string): Promise<DocumentDestroyResponse>;
17
+ bulk(docs: BulkModifyDocsWrapper): Promise<DocumentInsertResponse[]>;
18
+ createIndex(indexDef: CreateIndexRequest): Promise<CreateIndexResponse>;
19
+ find(query: MangoQuery): Promise<MangoResponse<any>>;
20
+ readonly server: ServerScope;
21
+ };
@@ -0,0 +1,92 @@
1
+ import { InternalError } from "@decaf-ts/db-decorators";
2
+ export function toServerScope(pouch) {
3
+ return new (class {
4
+ constructor(pouch) {
5
+ this.pouch = pouch;
6
+ }
7
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8
+ use(db) {
9
+ throw new Error("Method not implemented.");
10
+ }
11
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
12
+ auth(username, userpass) {
13
+ throw new Error("Method not implemented.");
14
+ }
15
+ session() {
16
+ throw new Error("Method not implemented.");
17
+ }
18
+ })(pouch);
19
+ }
20
+ export function toDocumentScope(database) {
21
+ return new (class {
22
+ constructor(db) {
23
+ this.db = db;
24
+ }
25
+ async fetch(docnames) {
26
+ const result = await this.db.bulkGet({
27
+ docs: docnames.keys.map((k) => ({ id: k })),
28
+ });
29
+ return {
30
+ offset: 0,
31
+ rows: result.results.reduce((accum, r) => {
32
+ const docs = r.docs.map((d) => {
33
+ if (d["error"])
34
+ throw new InternalError(d["error"]);
35
+ return d["ok"];
36
+ });
37
+ accum.push(...docs);
38
+ return accum;
39
+ }, []),
40
+ total_rows: 0,
41
+ };
42
+ }
43
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
44
+ auth(username, userpass) {
45
+ throw new Error("Method not implemented.");
46
+ }
47
+ session() {
48
+ throw new Error("Method not implemented.");
49
+ }
50
+ async insert(document) {
51
+ return this.db.put(document);
52
+ }
53
+ get(docname, params) {
54
+ return new Promise((resolve, reject) => {
55
+ this.db.get(docname, params || {}, (err, result) => {
56
+ if (err)
57
+ return reject(err);
58
+ resolve(result);
59
+ });
60
+ });
61
+ }
62
+ destroy(docname, rev) {
63
+ return this.db.remove({ _id: docname, _rev: rev });
64
+ }
65
+ async bulk(docs) {
66
+ const results = await this.db.bulkDocs(docs.docs);
67
+ return results.map((r) => {
68
+ if (r instanceof Error)
69
+ return { ok: false };
70
+ return Object.assign({
71
+ ok: true,
72
+ }, r);
73
+ });
74
+ }
75
+ async createIndex(indexDef) {
76
+ const result = await this.db.createIndex(indexDef);
77
+ return {
78
+ result: result.result,
79
+ id: indexDef.ddoc,
80
+ name: indexDef.name,
81
+ };
82
+ }
83
+ find(query) {
84
+ return this.db.find(query);
85
+ }
86
+ get server() {
87
+ return this.db;
88
+ }
89
+ })(database);
90
+ }
91
+
92
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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NEIsQ0FBQztRQUMzQyxDQUFDO0tBQ0YsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2YsQ0FBQyIsImZpbGUiOiJ1dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEYXRhYmFzZSA9IFBvdWNoREIuRGF0YWJhc2U7XG5pbXBvcnQge1xuICBCdWxrRmV0Y2hEb2NzV3JhcHBlcixcbiAgQnVsa01vZGlmeURvY3NXcmFwcGVyLFxuICBDcmVhdGVJbmRleFJlcXVlc3QsXG4gIENyZWF0ZUluZGV4UmVzcG9uc2UsXG4gIERhdGFiYXNlQXV0aFJlc3BvbnNlLFxuICBEYXRhYmFzZVNlc3Npb25SZXNwb25zZSxcbiAgRG9jdW1lbnREZXN0cm95UmVzcG9uc2UsXG4gIERvY3VtZW50R2V0UGFyYW1zLFxuICBEb2N1bWVudEluc2VydFJlc3BvbnNlLFxuICBEb2N1bWVudFNjb3BlLFxuICBNYW5nb1F1ZXJ5LFxuICBNYW5nb1Jlc3BvbnNlLFxuICBTZXJ2ZXJTY29wZSxcbiAgRG9jdW1lbnRGZXRjaFJlc3BvbnNlLFxufSBmcm9tIFwiQGRlY2FmLXRzL2Zvci1jb3VjaGRiXCI7XG5pbXBvcnQgRmluZFJlcXVlc3QgPSBQb3VjaERCLkZpbmQuRmluZFJlcXVlc3Q7XG5pbXBvcnQgQnVsa0dldFJlc3BvbnNlID0gUG91Y2hEQi5Db3JlLkJ1bGtHZXRSZXNwb25zZTtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvU2VydmVyU2NvcGUocG91Y2g6IHR5cGVvZiBQb3VjaERCKSB7XG4gIHJldHVybiBuZXcgKGNsYXNzIGltcGxlbWVudHMgU2VydmVyU2NvcGUge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBwb3VjaDogdHlwZW9mIFBvdWNoREIpIHt9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgdXNlPEQ+KGRiOiBzdHJpbmcpOiBEb2N1bWVudFNjb3BlPEQ+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBhdXRoKHVzZXJuYW1lOiBzdHJpbmcsIHVzZXJwYXNzOiBzdHJpbmcpOiBQcm9taXNlPERhdGFiYXNlQXV0aFJlc3BvbnNlPiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBzZXNzaW9uKCk6IFByb21pc2U8RGF0YWJhc2VTZXNzaW9uUmVzcG9uc2U+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cbiAgfSkocG91Y2gpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9Eb2N1bWVudFNjb3BlKGRhdGFiYXNlOiBEYXRhYmFzZSkge1xuICByZXR1cm4gbmV3IChjbGFzcyBpbXBsZW1lbnRzIERvY3VtZW50U2NvcGU8YW55PiB7XG4gICAgY29uc3RydWN0b3IocHVibGljIGRiOiBEYXRhYmFzZSkge31cblxuICAgIGFzeW5jIGZldGNoKFxuICAgICAgZG9jbmFtZXM6IEJ1bGtGZXRjaERvY3NXcmFwcGVyXG4gICAgKTogUHJvbWlzZTxEb2N1bWVudEZldGNoUmVzcG9uc2U8YW55Pj4ge1xuICAgICAgY29uc3QgcmVzdWx0OiBCdWxrR2V0UmVzcG9uc2U8YW55PiA9IGF3YWl0IHRoaXMuZGIuYnVsa0dldCh7XG4gICAgICAgIGRvY3M6IGRvY25hbWVzLmtleXMubWFwKChrOiBzdHJpbmcpID0+ICh7IGlkOiBrIH0pKSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICByb3dzOiByZXN1bHQucmVzdWx0cy5yZWR1Y2UoKGFjY3VtOiBhbnlbXSwgcikgPT4ge1xuICAgICAgICAgIGNvbnN0IGRvY3M6IGFueVtdID0gci5kb2NzLm1hcCgoZCkgPT4ge1xuICAgICAgICAgICAgaWYgKChkIGFzIGFueSlbXCJlcnJvclwiXSlcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoKGQgYXMgYW55KVtcImVycm9yXCJdKTtcbiAgICAgICAgICAgIHJldHVybiAoZCBhcyBhbnkpW1wib2tcIl0gYXMgYW55O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGFjY3VtLnB1c2goLi4uZG9jcyk7XG4gICAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgICB9LCBbXSksXG4gICAgICAgIHRvdGFsX3Jvd3M6IDAsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBhdXRoKHVzZXJuYW1lOiBzdHJpbmcsIHVzZXJwYXNzOiBzdHJpbmcpOiBQcm9taXNlPERhdGFiYXNlQXV0aFJlc3BvbnNlPiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG4gICAgc2Vzc2lvbigpOiBQcm9taXNlPERhdGFiYXNlU2Vzc2lvblJlc3BvbnNlPiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG4gICAgYXN5bmMgaW5zZXJ0KGRvY3VtZW50OiBhbnkpOiBQcm9taXNlPERvY3VtZW50SW5zZXJ0UmVzcG9uc2U+IHtcbiAgICAgIHJldHVybiB0aGlzLmRiLnB1dChkb2N1bWVudCk7XG4gICAgfVxuICAgIGdldChkb2NuYW1lOiBzdHJpbmcsIHBhcmFtcz86IERvY3VtZW50R2V0UGFyYW1zIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgdGhpcy5kYi5nZXQoZG9jbmFtZSwgcGFyYW1zIHx8IHt9LCAoZXJyLCByZXN1bHQpID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBkZXN0cm95KGRvY25hbWU6IHN0cmluZywgcmV2OiBzdHJpbmcpOiBQcm9taXNlPERvY3VtZW50RGVzdHJveVJlc3BvbnNlPiB7XG4gICAgICByZXR1cm4gdGhpcy5kYi5yZW1vdmUoeyBfaWQ6IGRvY25hbWUsIF9yZXY6IHJldiB9KTtcbiAgICB9XG4gICAgYXN5bmMgYnVsayhkb2NzOiBCdWxrTW9kaWZ5RG9jc1dyYXBwZXIpOiBQcm9taXNlPERvY3VtZW50SW5zZXJ0UmVzcG9uc2VbXT4ge1xuICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuZGIuYnVsa0RvY3MoZG9jcy5kb2NzKTtcbiAgICAgIHJldHVybiByZXN1bHRzLm1hcCgocikgPT4ge1xuICAgICAgICBpZiAociBpbnN0YW5jZW9mIEVycm9yKSByZXR1cm4geyBvazogZmFsc2UgfTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAge1xuICAgICAgICAgICAgb2s6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByXG4gICAgICAgICk7XG4gICAgICB9KSBhcyBEb2N1bWVudEluc2VydFJlc3BvbnNlW107XG4gICAgfVxuICAgIGFzeW5jIGNyZWF0ZUluZGV4KFxuICAgICAgaW5kZXhEZWY6IENyZWF0ZUluZGV4UmVxdWVzdFxuICAgICk6IFByb21pc2U8Q3JlYXRlSW5kZXhSZXNwb25zZT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5kYi5jcmVhdGVJbmRleChpbmRleERlZiBhcyBhbnkpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVzdWx0OiByZXN1bHQucmVzdWx0LFxuICAgICAgICBpZDogaW5kZXhEZWYuZGRvYyBhcyBzdHJpbmcsXG4gICAgICAgIG5hbWU6IGluZGV4RGVmLm5hbWUgYXMgc3RyaW5nLFxuICAgICAgfTtcbiAgICB9XG4gICAgZmluZChxdWVyeTogTWFuZ29RdWVyeSk6IFByb21pc2U8TWFuZ29SZXNwb25zZTxhbnk+PiB7XG4gICAgICByZXR1cm4gdGhpcy5kYi5maW5kKHF1ZXJ5IGFzIHVua25vd24gYXMgRmluZFJlcXVlc3Q8YW55Pik7XG4gICAgfVxuICAgIGdldCBzZXJ2ZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYiBhcyB1bmtub3duIGFzIFNlcnZlclNjb3BlO1xuICAgIH1cbiAgfSkoZGF0YWJhc2UpO1xufVxuIl19
package/lib/index.cjs ADDED
@@ -0,0 +1,34 @@
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
+ exports.VERSION = void 0;
18
+ __exportStar(require("./adapter.cjs"), exports);
19
+ __exportStar(require("./PouchRepository.cjs"), exports);
20
+ __exportStar(require("./utils.cjs"), exports);
21
+ /**
22
+ * @summary Module summary
23
+ * @description Module description
24
+ * @module for-nano
25
+ */
26
+ /**
27
+ * @summary stores the current package version
28
+ * @description this is how you should document a constant
29
+ * @const VERSION
30
+ * @memberOf module:ts-workspace
31
+ */
32
+ exports.VERSION = "0.0.1";
33
+
34
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRDQUEwQjtBQUMxQixvREFBa0M7QUFDbEMsMENBQXdCO0FBRXhCOzs7O0dBSUc7QUFFSDs7Ozs7R0FLRztBQUNVLFFBQUEsT0FBTyxHQUFHLE9BQU8sQ0FBQyIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2FkYXB0ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1BvdWNoUmVwb3NpdG9yeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHNcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBNb2R1bGUgc3VtbWFyeVxuICogQGRlc2NyaXB0aW9uIE1vZHVsZSBkZXNjcmlwdGlvblxuICogQG1vZHVsZSBmb3ItbmFub1xuICovXG5cbi8qKlxuICogQHN1bW1hcnkgc3RvcmVzIHRoZSBjdXJyZW50IHBhY2thZ2UgdmVyc2lvblxuICogQGRlc2NyaXB0aW9uIHRoaXMgaXMgaG93IHlvdSBzaG91bGQgZG9jdW1lbnQgYSBjb25zdGFudFxuICogQGNvbnN0IFZFUlNJT05cbiAqIEBtZW1iZXJPZiBtb2R1bGU6dHMtd29ya3NwYWNlXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIwLjAuMVwiO1xuIl19
package/lib/index.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ export * from "./adapter";
2
+ export * from "./PouchRepository";
3
+ export * from "./utils";
4
+ /**
5
+ * @summary Module summary
6
+ * @description Module description
7
+ * @module for-nano
8
+ */
9
+ /**
10
+ * @summary stores the current package version
11
+ * @description this is how you should document a constant
12
+ * @const VERSION
13
+ * @memberOf module:ts-workspace
14
+ */
15
+ export declare const VERSION = "0.0.1";
package/lib/utils.cjs ADDED
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toServerScope = toServerScope;
4
+ exports.toDocumentScope = toDocumentScope;
5
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
6
+ function toServerScope(pouch) {
7
+ return new (class {
8
+ constructor(pouch) {
9
+ this.pouch = pouch;
10
+ }
11
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
12
+ use(db) {
13
+ throw new Error("Method not implemented.");
14
+ }
15
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
16
+ auth(username, userpass) {
17
+ throw new Error("Method not implemented.");
18
+ }
19
+ session() {
20
+ throw new Error("Method not implemented.");
21
+ }
22
+ })(pouch);
23
+ }
24
+ function toDocumentScope(database) {
25
+ return new (class {
26
+ constructor(db) {
27
+ this.db = db;
28
+ }
29
+ async fetch(docnames) {
30
+ const result = await this.db.bulkGet({
31
+ docs: docnames.keys.map((k) => ({ id: k })),
32
+ });
33
+ return {
34
+ offset: 0,
35
+ rows: result.results.reduce((accum, r) => {
36
+ const docs = r.docs.map((d) => {
37
+ if (d["error"])
38
+ throw new db_decorators_1.InternalError(d["error"]);
39
+ return d["ok"];
40
+ });
41
+ accum.push(...docs);
42
+ return accum;
43
+ }, []),
44
+ total_rows: 0,
45
+ };
46
+ }
47
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
48
+ auth(username, userpass) {
49
+ throw new Error("Method not implemented.");
50
+ }
51
+ session() {
52
+ throw new Error("Method not implemented.");
53
+ }
54
+ async insert(document) {
55
+ return this.db.put(document);
56
+ }
57
+ get(docname, params) {
58
+ return new Promise((resolve, reject) => {
59
+ this.db.get(docname, params || {}, (err, result) => {
60
+ if (err)
61
+ return reject(err);
62
+ resolve(result);
63
+ });
64
+ });
65
+ }
66
+ destroy(docname, rev) {
67
+ return this.db.remove({ _id: docname, _rev: rev });
68
+ }
69
+ async bulk(docs) {
70
+ const results = await this.db.bulkDocs(docs.docs);
71
+ return results.map((r) => {
72
+ if (r instanceof Error)
73
+ return { ok: false };
74
+ return Object.assign({
75
+ ok: true,
76
+ }, r);
77
+ });
78
+ }
79
+ async createIndex(indexDef) {
80
+ const result = await this.db.createIndex(indexDef);
81
+ return {
82
+ result: result.result,
83
+ id: indexDef.ddoc,
84
+ name: indexDef.name,
85
+ };
86
+ }
87
+ find(query) {
88
+ return this.db.find(query);
89
+ }
90
+ get server() {
91
+ return this.db;
92
+ }
93
+ })(database);
94
+ }
95
+
96
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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QzNDLENBQUM7S0FDRixDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDZixDQUFDIiwiZmlsZSI6InV0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERhdGFiYXNlID0gUG91Y2hEQi5EYXRhYmFzZTtcbmltcG9ydCB7XG4gIEJ1bGtGZXRjaERvY3NXcmFwcGVyLFxuICBCdWxrTW9kaWZ5RG9jc1dyYXBwZXIsXG4gIENyZWF0ZUluZGV4UmVxdWVzdCxcbiAgQ3JlYXRlSW5kZXhSZXNwb25zZSxcbiAgRGF0YWJhc2VBdXRoUmVzcG9uc2UsXG4gIERhdGFiYXNlU2Vzc2lvblJlc3BvbnNlLFxuICBEb2N1bWVudERlc3Ryb3lSZXNwb25zZSxcbiAgRG9jdW1lbnRHZXRQYXJhbXMsXG4gIERvY3VtZW50SW5zZXJ0UmVzcG9uc2UsXG4gIERvY3VtZW50U2NvcGUsXG4gIE1hbmdvUXVlcnksXG4gIE1hbmdvUmVzcG9uc2UsXG4gIFNlcnZlclNjb3BlLFxuICBEb2N1bWVudEZldGNoUmVzcG9uc2UsXG59IGZyb20gXCJAZGVjYWYtdHMvZm9yLWNvdWNoZGJcIjtcbmltcG9ydCBGaW5kUmVxdWVzdCA9IFBvdWNoREIuRmluZC5GaW5kUmVxdWVzdDtcbmltcG9ydCBCdWxrR2V0UmVzcG9uc2UgPSBQb3VjaERCLkNvcmUuQnVsa0dldFJlc3BvbnNlO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gdG9TZXJ2ZXJTY29wZShwb3VjaDogdHlwZW9mIFBvdWNoREIpIHtcbiAgcmV0dXJuIG5ldyAoY2xhc3MgaW1wbGVtZW50cyBTZXJ2ZXJTY29wZSB7XG4gICAgY29uc3RydWN0b3IocHVibGljIHBvdWNoOiB0eXBlb2YgUG91Y2hEQikge31cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICB1c2U8RD4oZGI6IHN0cmluZyk6IERvY3VtZW50U2NvcGU8RD4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIGF1dGgodXNlcm5hbWU6IHN0cmluZywgdXNlcnBhc3M6IHN0cmluZyk6IFByb21pc2U8RGF0YWJhc2VBdXRoUmVzcG9uc2U+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHNlc3Npb24oKTogUHJvbWlzZTxEYXRhYmFzZVNlc3Npb25SZXNwb25zZT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuICB9KShwb3VjaCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0RvY3VtZW50U2NvcGUoZGF0YWJhc2U6IERhdGFiYXNlKSB7XG4gIHJldHVybiBuZXcgKGNsYXNzIGltcGxlbWVudHMgRG9jdW1lbnRTY29wZTxhbnk+IHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZGI6IERhdGFiYXNlKSB7fVxuXG4gICAgYXN5bmMgZmV0Y2goXG4gICAgICBkb2NuYW1lczogQnVsa0ZldGNoRG9jc1dyYXBwZXJcbiAgICApOiBQcm9taXNlPERvY3VtZW50RmV0Y2hSZXNwb25zZTxhbnk+PiB7XG4gICAgICBjb25zdCByZXN1bHQ6IEJ1bGtHZXRSZXNwb25zZTxhbnk+ID0gYXdhaXQgdGhpcy5kYi5idWxrR2V0KHtcbiAgICAgICAgZG9jczogZG9jbmFtZXMua2V5cy5tYXAoKGs6IHN0cmluZykgPT4gKHsgaWQ6IGsgfSkpLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgIHJvd3M6IHJlc3VsdC5yZXN1bHRzLnJlZHVjZSgoYWNjdW06IGFueVtdLCByKSA9PiB7XG4gICAgICAgICAgY29uc3QgZG9jczogYW55W10gPSByLmRvY3MubWFwKChkKSA9PiB7XG4gICAgICAgICAgICBpZiAoKGQgYXMgYW55KVtcImVycm9yXCJdKVxuICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigoZCBhcyBhbnkpW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgcmV0dXJuIChkIGFzIGFueSlbXCJva1wiXSBhcyBhbnk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYWNjdW0ucHVzaCguLi5kb2NzKTtcbiAgICAgICAgICByZXR1cm4gYWNjdW07XG4gICAgICAgIH0sIFtdKSxcbiAgICAgICAgdG90YWxfcm93czogMCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIGF1dGgodXNlcm5hbWU6IHN0cmluZywgdXNlcnBhc3M6IHN0cmluZyk6IFByb21pc2U8RGF0YWJhc2VBdXRoUmVzcG9uc2U+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cbiAgICBzZXNzaW9uKCk6IFByb21pc2U8RGF0YWJhc2VTZXNzaW9uUmVzcG9uc2U+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cbiAgICBhc3luYyBpbnNlcnQoZG9jdW1lbnQ6IGFueSk6IFByb21pc2U8RG9jdW1lbnRJbnNlcnRSZXNwb25zZT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZGIucHV0KGRvY3VtZW50KTtcbiAgICB9XG4gICAgZ2V0KGRvY25hbWU6IHN0cmluZywgcGFyYW1zPzogRG9jdW1lbnRHZXRQYXJhbXMgfCB1bmRlZmluZWQpOiBQcm9taXNlPGFueT4ge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICB0aGlzLmRiLmdldChkb2NuYW1lLCBwYXJhbXMgfHwge30sIChlcnIsIHJlc3VsdCkgPT4ge1xuICAgICAgICAgIGlmIChlcnIpIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGRlc3Ryb3koZG9jbmFtZTogc3RyaW5nLCByZXY6IHN0cmluZyk6IFByb21pc2U8RG9jdW1lbnREZXN0cm95UmVzcG9uc2U+IHtcbiAgICAgIHJldHVybiB0aGlzLmRiLnJlbW92ZSh7IF9pZDogZG9jbmFtZSwgX3JldjogcmV2IH0pO1xuICAgIH1cbiAgICBhc3luYyBidWxrKGRvY3M6IEJ1bGtNb2RpZnlEb2NzV3JhcHBlcik6IFByb21pc2U8RG9jdW1lbnRJbnNlcnRSZXNwb25zZVtdPiB7XG4gICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5kYi5idWxrRG9jcyhkb2NzLmRvY3MpO1xuICAgICAgcmV0dXJuIHJlc3VsdHMubWFwKChyKSA9PiB7XG4gICAgICAgIGlmIChyIGluc3RhbmNlb2YgRXJyb3IpIHJldHVybiB7IG9rOiBmYWxzZSB9O1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvazogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJcbiAgICAgICAgKTtcbiAgICAgIH0pIGFzIERvY3VtZW50SW5zZXJ0UmVzcG9uc2VbXTtcbiAgICB9XG4gICAgYXN5bmMgY3JlYXRlSW5kZXgoXG4gICAgICBpbmRleERlZjogQ3JlYXRlSW5kZXhSZXF1ZXN0XG4gICAgKTogUHJvbWlzZTxDcmVhdGVJbmRleFJlc3BvbnNlPiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRiLmNyZWF0ZUluZGV4KGluZGV4RGVmIGFzIGFueSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXN1bHQ6IHJlc3VsdC5yZXN1bHQsXG4gICAgICAgIGlkOiBpbmRleERlZi5kZG9jIGFzIHN0cmluZyxcbiAgICAgICAgbmFtZTogaW5kZXhEZWYubmFtZSBhcyBzdHJpbmcsXG4gICAgICB9O1xuICAgIH1cbiAgICBmaW5kKHF1ZXJ5OiBNYW5nb1F1ZXJ5KTogUHJvbWlzZTxNYW5nb1Jlc3BvbnNlPGFueT4+IHtcbiAgICAgIHJldHVybiB0aGlzLmRiLmZpbmQocXVlcnkgYXMgdW5rbm93biBhcyBGaW5kUmVxdWVzdDxhbnk+KTtcbiAgICB9XG4gICAgZ2V0IHNlcnZlcigpIHtcbiAgICAgIHJldHVybiB0aGlzLmRiIGFzIHVua25vd24gYXMgU2VydmVyU2NvcGU7XG4gICAgfVxuICB9KShkYXRhYmFzZSk7XG59XG4iXX0=
package/lib/utils.d.ts ADDED
@@ -0,0 +1,21 @@
1
+ import Database = PouchDB.Database;
2
+ import { BulkFetchDocsWrapper, BulkModifyDocsWrapper, CreateIndexRequest, CreateIndexResponse, DatabaseAuthResponse, DatabaseSessionResponse, DocumentDestroyResponse, DocumentGetParams, DocumentInsertResponse, DocumentScope, MangoQuery, MangoResponse, ServerScope, DocumentFetchResponse } from "@decaf-ts/for-couchdb";
3
+ export declare function toServerScope(pouch: typeof PouchDB): {
4
+ pouch: typeof PouchDB;
5
+ use<D>(db: string): DocumentScope<D>;
6
+ auth(username: string, userpass: string): Promise<DatabaseAuthResponse>;
7
+ session(): Promise<DatabaseSessionResponse>;
8
+ };
9
+ export declare function toDocumentScope(database: Database): {
10
+ db: Database;
11
+ fetch(docnames: BulkFetchDocsWrapper): Promise<DocumentFetchResponse<any>>;
12
+ auth(username: string, userpass: string): Promise<DatabaseAuthResponse>;
13
+ session(): Promise<DatabaseSessionResponse>;
14
+ insert(document: any): Promise<DocumentInsertResponse>;
15
+ get(docname: string, params?: DocumentGetParams | undefined): Promise<any>;
16
+ destroy(docname: string, rev: string): Promise<DocumentDestroyResponse>;
17
+ bulk(docs: BulkModifyDocsWrapper): Promise<DocumentInsertResponse[]>;
18
+ createIndex(indexDef: CreateIndexRequest): Promise<CreateIndexResponse>;
19
+ find(query: MangoQuery): Promise<MangoResponse<any>>;
20
+ readonly server: ServerScope;
21
+ };