@decaf-ts/for-nano 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,25 @@
1
+ /*!
2
+ * The buffer module from node.js, for the browser.
3
+ *
4
+ * @author Feross Aboukhadijeh <https://feross.org>
5
+ * @license MIT
6
+ */
7
+
8
+ /*! *****************************************************************************
9
+ Copyright (C) Microsoft. All rights reserved.
10
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
11
+ this file except in compliance with the License. You may obtain a copy of the
12
+ License at http://www.apache.org/licenses/LICENSE-2.0
13
+
14
+ THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
16
+ WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
17
+ MERCHANTABLITY OR NON-INFRINGEMENT.
18
+
19
+ See the Apache Version 2.0 License for specific language governing permissions
20
+ and limitations under the License.
21
+ ***************************************************************************** */
22
+
23
+ /*! https://mths.be/punycode v1.4.1 by @mathias */
24
+
25
+ /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NanoAdapter = void 0;
4
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
5
+ require("reflect-metadata");
6
+ const for_couchdb_1 = require("@decaf-ts/for-couchdb");
7
+ const Nano = require("nano");
8
+ const core_1 = require("@decaf-ts/core");
9
+ class NanoAdapter extends for_couchdb_1.CouchDBAdapter {
10
+ constructor(scope, flavour) {
11
+ super(scope, flavour);
12
+ }
13
+ async user() {
14
+ try {
15
+ const user = await this.native.server.session();
16
+ return new core_1.User({
17
+ id: user.userCtx.name,
18
+ roles: user.userCtx.roles,
19
+ affiliations: user.userCtx.affiliations,
20
+ });
21
+ }
22
+ catch (e) {
23
+ throw this.parseError(e);
24
+ }
25
+ }
26
+ static connect(user, pass, host = "localhost:5984", protocol = "http") {
27
+ return Nano(`${protocol}://${user}:${pass}@${host}`);
28
+ }
29
+ static async createDatabase(con, name) {
30
+ let result;
31
+ try {
32
+ result = await con.db.create(name);
33
+ }
34
+ catch (e) {
35
+ throw for_couchdb_1.CouchDBAdapter.parseError(e);
36
+ }
37
+ const { ok, error, reason } = result;
38
+ if (!ok)
39
+ throw for_couchdb_1.CouchDBAdapter.parseError(error, reason);
40
+ }
41
+ static async deleteDatabase(con, name) {
42
+ let result;
43
+ try {
44
+ result = await con.db.destroy(name);
45
+ }
46
+ catch (e) {
47
+ throw for_couchdb_1.CouchDBAdapter.parseError(e);
48
+ }
49
+ const { ok } = result;
50
+ if (!ok)
51
+ throw new db_decorators_1.InternalError(`Failed to delete database with name ${name}`);
52
+ }
53
+ static async createUser(con, dbName, user, pass, roles = ["reader", "writer"]) {
54
+ const users = con.db.use("_users");
55
+ const usr = {
56
+ _id: "org.couchdb.user:" + user,
57
+ name: user,
58
+ password: pass,
59
+ roles: roles,
60
+ type: "user",
61
+ };
62
+ try {
63
+ const created = await users.insert(usr);
64
+ const { ok } = created;
65
+ if (!ok)
66
+ throw new db_decorators_1.InternalError(`Failed to create user ${user}`);
67
+ const security = await con.request({
68
+ db: dbName,
69
+ method: "put",
70
+ path: "_security",
71
+ // headers: {
72
+ //
73
+ // },
74
+ body: {
75
+ admins: {
76
+ names: [user],
77
+ roles: [],
78
+ },
79
+ members: {
80
+ names: [user],
81
+ roles: roles,
82
+ },
83
+ },
84
+ });
85
+ if (!security.ok)
86
+ throw new db_decorators_1.InternalError(`Failed to authorize user ${user} to db ${dbName}`);
87
+ }
88
+ catch (e) {
89
+ throw for_couchdb_1.CouchDBAdapter.parseError(e);
90
+ }
91
+ }
92
+ static async deleteUser(con, dbName, user) {
93
+ const users = con.db.use("_users");
94
+ const id = "org.couchdb.user:" + user;
95
+ try {
96
+ const usr = await users.get(id);
97
+ await users.destroy(id, usr._rev);
98
+ }
99
+ catch (e) {
100
+ throw for_couchdb_1.CouchDBAdapter.parseError(e);
101
+ }
102
+ }
103
+ }
104
+ exports.NanoAdapter = NanoAdapter;
105
+
106
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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QVEsQ0FBQyxDQUFDO1FBQ25DLE1BQU0sRUFBRSxHQUFHLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUN0QyxJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEMsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSw0QkFBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBNUdELGtDQTRHQyIsImZpbGUiOiJhZGFwdGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IFwicmVmbGVjdC1tZXRhZGF0YVwiO1xuaW1wb3J0IHtcbiAgQ291Y2hEQkFkYXB0ZXIsXG4gIERhdGFiYXNlU2Vzc2lvblJlc3BvbnNlLFxuICBEb2N1bWVudEluc2VydFJlc3BvbnNlLFxuICBNYXliZURvY3VtZW50LFxufSBmcm9tIFwiQGRlY2FmLXRzL2Zvci1jb3VjaGRiXCI7XG5pbXBvcnQgKiBhcyBOYW5vIGZyb20gXCJuYW5vXCI7XG5pbXBvcnQgeyBEb2N1bWVudFNjb3BlLCBTZXJ2ZXJTY29wZSB9IGZyb20gXCJuYW5vXCI7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5cbmV4cG9ydCBjbGFzcyBOYW5vQWRhcHRlciBleHRlbmRzIENvdWNoREJBZGFwdGVyIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IERvY3VtZW50U2NvcGU8YW55PiwgZmxhdm91cjogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGZsYXZvdXIpO1xuICB9XG5cbiAgYXN5bmMgdXNlcigpOiBQcm9taXNlPFVzZXI+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXNlcjogRGF0YWJhc2VTZXNzaW9uUmVzcG9uc2UgPSBhd2FpdCB0aGlzLm5hdGl2ZS5zZXJ2ZXIuc2Vzc2lvbigpO1xuICAgICAgcmV0dXJuIG5ldyBVc2VyKHtcbiAgICAgICAgaWQ6IHVzZXIudXNlckN0eC5uYW1lLFxuICAgICAgICByb2xlczogdXNlci51c2VyQ3R4LnJvbGVzLFxuICAgICAgICBhZmZpbGlhdGlvbnM6IHVzZXIudXNlckN0eC5hZmZpbGlhdGlvbnMsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29ubmVjdChcbiAgICB1c2VyOiBzdHJpbmcsXG4gICAgcGFzczogc3RyaW5nLFxuICAgIGhvc3QgPSBcImxvY2FsaG9zdDo1OTg0XCIsXG4gICAgcHJvdG9jb2w6IFwiaHR0cFwiIHwgXCJodHRwc1wiID0gXCJodHRwXCJcbiAgKTogU2VydmVyU2NvcGUge1xuICAgIHJldHVybiBOYW5vKGAke3Byb3RvY29sfTovLyR7dXNlcn06JHtwYXNzfUAke2hvc3R9YCk7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgY3JlYXRlRGF0YWJhc2UoY29uOiBTZXJ2ZXJTY29wZSwgbmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IHJlc3VsdDogYW55O1xuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCBjb24uZGIuY3JlYXRlKG5hbWUpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgQ291Y2hEQkFkYXB0ZXIucGFyc2VFcnJvcihlKTtcbiAgICB9XG4gICAgY29uc3QgeyBvaywgZXJyb3IsIHJlYXNvbiB9ID0gcmVzdWx0O1xuICAgIGlmICghb2spIHRocm93IENvdWNoREJBZGFwdGVyLnBhcnNlRXJyb3IoZXJyb3IgYXMgc3RyaW5nLCByZWFzb24pO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGRlbGV0ZURhdGFiYXNlKGNvbjogU2VydmVyU2NvcGUsIG5hbWU6IHN0cmluZykge1xuICAgIGxldCByZXN1bHQ7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGF3YWl0IGNvbi5kYi5kZXN0cm95KG5hbWUpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgQ291Y2hEQkFkYXB0ZXIucGFyc2VFcnJvcihlKTtcbiAgICB9XG4gICAgY29uc3QgeyBvayB9ID0gcmVzdWx0O1xuICAgIGlmICghb2spXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgRmFpbGVkIHRvIGRlbGV0ZSBkYXRhYmFzZSB3aXRoIG5hbWUgJHtuYW1lfWApO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGNyZWF0ZVVzZXIoXG4gICAgY29uOiBTZXJ2ZXJTY29wZSxcbiAgICBkYk5hbWU6IHN0cmluZyxcbiAgICB1c2VyOiBzdHJpbmcsXG4gICAgcGFzczogc3RyaW5nLFxuICAgIHJvbGVzOiBzdHJpbmdbXSA9IFtcInJlYWRlclwiLCBcIndyaXRlclwiXVxuICApIHtcbiAgICBjb25zdCB1c2VycyA9IGNvbi5kYi51c2UoXCJfdXNlcnNcIik7XG4gICAgY29uc3QgdXNyID0ge1xuICAgICAgX2lkOiBcIm9yZy5jb3VjaGRiLnVzZXI6XCIgKyB1c2VyLFxuICAgICAgbmFtZTogdXNlcixcbiAgICAgIHBhc3N3b3JkOiBwYXNzLFxuICAgICAgcm9sZXM6IHJvbGVzLFxuICAgICAgdHlwZTogXCJ1c2VyXCIsXG4gICAgfTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY3JlYXRlZDogRG9jdW1lbnRJbnNlcnRSZXNwb25zZSA9IGF3YWl0IHVzZXJzLmluc2VydChcbiAgICAgICAgdXNyIGFzIE1heWJlRG9jdW1lbnRcbiAgICAgICk7XG4gICAgICBjb25zdCB7IG9rIH0gPSBjcmVhdGVkO1xuICAgICAgaWYgKCFvaykgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgdXNlciAke3VzZXJ9YCk7XG4gICAgICBjb25zdCBzZWN1cml0eTogYW55ID0gYXdhaXQgY29uLnJlcXVlc3Qoe1xuICAgICAgICBkYjogZGJOYW1lLFxuICAgICAgICBtZXRob2Q6IFwicHV0XCIsXG4gICAgICAgIHBhdGg6IFwiX3NlY3VyaXR5XCIsXG4gICAgICAgIC8vIGhlYWRlcnM6IHtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gfSxcbiAgICAgICAgYm9keToge1xuICAgICAgICAgIGFkbWluczoge1xuICAgICAgICAgICAgbmFtZXM6IFt1c2VyXSxcbiAgICAgICAgICAgIHJvbGVzOiBbXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1lbWJlcnM6IHtcbiAgICAgICAgICAgIG5hbWVzOiBbdXNlcl0sXG4gICAgICAgICAgICByb2xlczogcm9sZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgaWYgKCFzZWN1cml0eS5vaylcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgYEZhaWxlZCB0byBhdXRob3JpemUgdXNlciAke3VzZXJ9IHRvIGRiICR7ZGJOYW1lfWBcbiAgICAgICAgKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IENvdWNoREJBZGFwdGVyLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGFzeW5jIGRlbGV0ZVVzZXIoY29uOiBTZXJ2ZXJTY29wZSwgZGJOYW1lOiBzdHJpbmcsIHVzZXI6IHN0cmluZykge1xuICAgIGNvbnN0IHVzZXJzID0gY29uLmRiLnVzZShcIl91c2Vyc1wiKTtcbiAgICBjb25zdCBpZCA9IFwib3JnLmNvdWNoZGIudXNlcjpcIiArIHVzZXI7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVzciA9IGF3YWl0IHVzZXJzLmdldChpZCk7XG4gICAgICBhd2FpdCB1c2Vycy5kZXN0cm95KGlkLCB1c3IuX3Jldik7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBDb3VjaERCQWRhcHRlci5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,13 @@
1
+ import "reflect-metadata";
2
+ import { CouchDBAdapter } from "@decaf-ts/for-couchdb";
3
+ import { DocumentScope, ServerScope } from "nano";
4
+ import { User } from "@decaf-ts/core";
5
+ export declare class NanoAdapter extends CouchDBAdapter {
6
+ constructor(scope: DocumentScope<any>, flavour: string);
7
+ user(): Promise<User>;
8
+ static connect(user: string, pass: string, host?: string, protocol?: "http" | "https"): ServerScope;
9
+ static createDatabase(con: ServerScope, name: string): Promise<void>;
10
+ static deleteDatabase(con: ServerScope, name: string): Promise<void>;
11
+ static createUser(con: ServerScope, dbName: string, user: string, pass: string, roles?: string[]): Promise<void>;
12
+ static deleteUser(con: ServerScope, dbName: string, user: string): Promise<void>;
13
+ }
@@ -0,0 +1,13 @@
1
+ import "reflect-metadata";
2
+ import { CouchDBAdapter } from "@decaf-ts/for-couchdb";
3
+ import { DocumentScope, ServerScope } from "nano";
4
+ import { User } from "@decaf-ts/core";
5
+ export declare class NanoAdapter extends CouchDBAdapter {
6
+ constructor(scope: DocumentScope<any>, flavour: string);
7
+ user(): Promise<User>;
8
+ static connect(user: string, pass: string, host?: string, protocol?: "http" | "https"): ServerScope;
9
+ static createDatabase(con: ServerScope, name: string): Promise<void>;
10
+ static deleteDatabase(con: ServerScope, name: string): Promise<void>;
11
+ static createUser(con: ServerScope, dbName: string, user: string, pass: string, roles?: string[]): Promise<void>;
12
+ static deleteUser(con: ServerScope, dbName: string, user: string): Promise<void>;
13
+ }
@@ -0,0 +1,102 @@
1
+ import { InternalError } from "@decaf-ts/db-decorators";
2
+ import "reflect-metadata";
3
+ import { CouchDBAdapter, } from "@decaf-ts/for-couchdb";
4
+ import * as Nano from "nano";
5
+ import { User } from "@decaf-ts/core";
6
+ export class NanoAdapter extends CouchDBAdapter {
7
+ constructor(scope, flavour) {
8
+ super(scope, flavour);
9
+ }
10
+ async user() {
11
+ try {
12
+ const user = await this.native.server.session();
13
+ return new User({
14
+ id: user.userCtx.name,
15
+ roles: user.userCtx.roles,
16
+ affiliations: user.userCtx.affiliations,
17
+ });
18
+ }
19
+ catch (e) {
20
+ throw this.parseError(e);
21
+ }
22
+ }
23
+ static connect(user, pass, host = "localhost:5984", protocol = "http") {
24
+ return Nano(`${protocol}://${user}:${pass}@${host}`);
25
+ }
26
+ static async createDatabase(con, name) {
27
+ let result;
28
+ try {
29
+ result = await con.db.create(name);
30
+ }
31
+ catch (e) {
32
+ throw CouchDBAdapter.parseError(e);
33
+ }
34
+ const { ok, error, reason } = result;
35
+ if (!ok)
36
+ throw CouchDBAdapter.parseError(error, reason);
37
+ }
38
+ static async deleteDatabase(con, name) {
39
+ let result;
40
+ try {
41
+ result = await con.db.destroy(name);
42
+ }
43
+ catch (e) {
44
+ throw CouchDBAdapter.parseError(e);
45
+ }
46
+ const { ok } = result;
47
+ if (!ok)
48
+ throw new InternalError(`Failed to delete database with name ${name}`);
49
+ }
50
+ static async createUser(con, dbName, user, pass, roles = ["reader", "writer"]) {
51
+ const users = con.db.use("_users");
52
+ const usr = {
53
+ _id: "org.couchdb.user:" + user,
54
+ name: user,
55
+ password: pass,
56
+ roles: roles,
57
+ type: "user",
58
+ };
59
+ try {
60
+ const created = await users.insert(usr);
61
+ const { ok } = created;
62
+ if (!ok)
63
+ throw new InternalError(`Failed to create user ${user}`);
64
+ const security = await con.request({
65
+ db: dbName,
66
+ method: "put",
67
+ path: "_security",
68
+ // headers: {
69
+ //
70
+ // },
71
+ body: {
72
+ admins: {
73
+ names: [user],
74
+ roles: [],
75
+ },
76
+ members: {
77
+ names: [user],
78
+ roles: roles,
79
+ },
80
+ },
81
+ });
82
+ if (!security.ok)
83
+ throw new InternalError(`Failed to authorize user ${user} to db ${dbName}`);
84
+ }
85
+ catch (e) {
86
+ throw CouchDBAdapter.parseError(e);
87
+ }
88
+ }
89
+ static async deleteUser(con, dbName, user) {
90
+ const users = con.db.use("_users");
91
+ const id = "org.couchdb.user:" + user;
92
+ try {
93
+ const usr = await users.get(id);
94
+ await users.destroy(id, usr._rev);
95
+ }
96
+ catch (e) {
97
+ throw CouchDBAdapter.parseError(e);
98
+ }
99
+ }
100
+ }
101
+
102
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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QUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFnQixFQUFFLE1BQWMsRUFBRSxJQUFZO1FBQ3BFLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLE1BQU0sRUFBRSxHQUFHLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUN0QyxJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEMsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJmaWxlIjoiYWRhcHRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCBcInJlZmxlY3QtbWV0YWRhdGFcIjtcbmltcG9ydCB7XG4gIENvdWNoREJBZGFwdGVyLFxuICBEYXRhYmFzZVNlc3Npb25SZXNwb25zZSxcbiAgRG9jdW1lbnRJbnNlcnRSZXNwb25zZSxcbiAgTWF5YmVEb2N1bWVudCxcbn0gZnJvbSBcIkBkZWNhZi10cy9mb3ItY291Y2hkYlwiO1xuaW1wb3J0ICogYXMgTmFubyBmcm9tIFwibmFub1wiO1xuaW1wb3J0IHsgRG9jdW1lbnRTY29wZSwgU2VydmVyU2NvcGUgfSBmcm9tIFwibmFub1wiO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuXG5leHBvcnQgY2xhc3MgTmFub0FkYXB0ZXIgZXh0ZW5kcyBDb3VjaERCQWRhcHRlciB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBEb2N1bWVudFNjb3BlPGFueT4sIGZsYXZvdXI6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBmbGF2b3VyKTtcbiAgfVxuXG4gIGFzeW5jIHVzZXIoKTogUHJvbWlzZTxVc2VyPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVzZXI6IERhdGFiYXNlU2Vzc2lvblJlc3BvbnNlID0gYXdhaXQgdGhpcy5uYXRpdmUuc2VydmVyLnNlc3Npb24oKTtcbiAgICAgIHJldHVybiBuZXcgVXNlcih7XG4gICAgICAgIGlkOiB1c2VyLnVzZXJDdHgubmFtZSxcbiAgICAgICAgcm9sZXM6IHVzZXIudXNlckN0eC5yb2xlcyxcbiAgICAgICAgYWZmaWxpYXRpb25zOiB1c2VyLnVzZXJDdHguYWZmaWxpYXRpb25zLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNvbm5lY3QoXG4gICAgdXNlcjogc3RyaW5nLFxuICAgIHBhc3M6IHN0cmluZyxcbiAgICBob3N0ID0gXCJsb2NhbGhvc3Q6NTk4NFwiLFxuICAgIHByb3RvY29sOiBcImh0dHBcIiB8IFwiaHR0cHNcIiA9IFwiaHR0cFwiXG4gICk6IFNlcnZlclNjb3BlIHtcbiAgICByZXR1cm4gTmFubyhgJHtwcm90b2NvbH06Ly8ke3VzZXJ9OiR7cGFzc31AJHtob3N0fWApO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGNyZWF0ZURhdGFiYXNlKGNvbjogU2VydmVyU2NvcGUsIG5hbWU6IHN0cmluZykge1xuICAgIGxldCByZXN1bHQ6IGFueTtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgY29uLmRiLmNyZWF0ZShuYW1lKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IENvdWNoREJBZGFwdGVyLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICAgIGNvbnN0IHsgb2ssIGVycm9yLCByZWFzb24gfSA9IHJlc3VsdDtcbiAgICBpZiAoIW9rKSB0aHJvdyBDb3VjaERCQWRhcHRlci5wYXJzZUVycm9yKGVycm9yIGFzIHN0cmluZywgcmVhc29uKTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBkZWxldGVEYXRhYmFzZShjb246IFNlcnZlclNjb3BlLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCBjb24uZGIuZGVzdHJveShuYW1lKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IENvdWNoREJBZGFwdGVyLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICAgIGNvbnN0IHsgb2sgfSA9IHJlc3VsdDtcbiAgICBpZiAoIW9rKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEZhaWxlZCB0byBkZWxldGUgZGF0YWJhc2Ugd2l0aCBuYW1lICR7bmFtZX1gKTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBjcmVhdGVVc2VyKFxuICAgIGNvbjogU2VydmVyU2NvcGUsXG4gICAgZGJOYW1lOiBzdHJpbmcsXG4gICAgdXNlcjogc3RyaW5nLFxuICAgIHBhc3M6IHN0cmluZyxcbiAgICByb2xlczogc3RyaW5nW10gPSBbXCJyZWFkZXJcIiwgXCJ3cml0ZXJcIl1cbiAgKSB7XG4gICAgY29uc3QgdXNlcnMgPSBjb24uZGIudXNlKFwiX3VzZXJzXCIpO1xuICAgIGNvbnN0IHVzciA9IHtcbiAgICAgIF9pZDogXCJvcmcuY291Y2hkYi51c2VyOlwiICsgdXNlcixcbiAgICAgIG5hbWU6IHVzZXIsXG4gICAgICBwYXNzd29yZDogcGFzcyxcbiAgICAgIHJvbGVzOiByb2xlcyxcbiAgICAgIHR5cGU6IFwidXNlclwiLFxuICAgIH07XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNyZWF0ZWQ6IERvY3VtZW50SW5zZXJ0UmVzcG9uc2UgPSBhd2FpdCB1c2Vycy5pbnNlcnQoXG4gICAgICAgIHVzciBhcyBNYXliZURvY3VtZW50XG4gICAgICApO1xuICAgICAgY29uc3QgeyBvayB9ID0gY3JlYXRlZDtcbiAgICAgIGlmICghb2spIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBGYWlsZWQgdG8gY3JlYXRlIHVzZXIgJHt1c2VyfWApO1xuICAgICAgY29uc3Qgc2VjdXJpdHk6IGFueSA9IGF3YWl0IGNvbi5yZXF1ZXN0KHtcbiAgICAgICAgZGI6IGRiTmFtZSxcbiAgICAgICAgbWV0aG9kOiBcInB1dFwiLFxuICAgICAgICBwYXRoOiBcIl9zZWN1cml0eVwiLFxuICAgICAgICAvLyBoZWFkZXJzOiB7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIH0sXG4gICAgICAgIGJvZHk6IHtcbiAgICAgICAgICBhZG1pbnM6IHtcbiAgICAgICAgICAgIG5hbWVzOiBbdXNlcl0sXG4gICAgICAgICAgICByb2xlczogW10sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtZW1iZXJzOiB7XG4gICAgICAgICAgICBuYW1lczogW3VzZXJdLFxuICAgICAgICAgICAgcm9sZXM6IHJvbGVzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGlmICghc2VjdXJpdHkub2spXG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgIGBGYWlsZWQgdG8gYXV0aG9yaXplIHVzZXIgJHt1c2VyfSB0byBkYiAke2RiTmFtZX1gXG4gICAgICAgICk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBDb3VjaERCQWRhcHRlci5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBkZWxldGVVc2VyKGNvbjogU2VydmVyU2NvcGUsIGRiTmFtZTogc3RyaW5nLCB1c2VyOiBzdHJpbmcpIHtcbiAgICBjb25zdCB1c2VycyA9IGNvbi5kYi51c2UoXCJfdXNlcnNcIik7XG4gICAgY29uc3QgaWQgPSBcIm9yZy5jb3VjaGRiLnVzZXI6XCIgKyB1c2VyO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB1c3IgPSBhd2FpdCB1c2Vycy5nZXQoaWQpO1xuICAgICAgYXdhaXQgdXNlcnMuZGVzdHJveShpZCwgdXNyLl9yZXYpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgQ291Y2hEQkFkYXB0ZXIucGFyc2VFcnJvcihlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ export * from "./adapter";
2
+ /**
3
+ * @summary Module summary
4
+ * @description Module description
5
+ * @module for-nano
6
+ */
7
+ /**
8
+ * @summary stores the current package version
9
+ * @description this is how you should document a constant
10
+ * @const VERSION
11
+ * @memberOf module:ts-workspace
12
+ */
13
+ export declare const VERSION = "0.0.1";
@@ -0,0 +1,15 @@
1
+ export * from "./adapter";
2
+ /**
3
+ * @summary Module summary
4
+ * @description Module description
5
+ * @module for-nano
6
+ */
7
+ /**
8
+ * @summary stores the current package version
9
+ * @description this is how you should document a constant
10
+ * @const VERSION
11
+ * @memberOf module:ts-workspace
12
+ */
13
+ export const VERSION = "0.0.1";
14
+
15
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFdBQVcsQ0FBQztBQUUxQjs7OztHQUlHO0FBRUg7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vYWRhcHRlclwiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IE1vZHVsZSBzdW1tYXJ5XG4gKiBAZGVzY3JpcHRpb24gTW9kdWxlIGRlc2NyaXB0aW9uXG4gKiBAbW9kdWxlIGZvci1uYW5vXG4gKi9cblxuLyoqXG4gKiBAc3VtbWFyeSBzdG9yZXMgdGhlIGN1cnJlbnQgcGFja2FnZSB2ZXJzaW9uXG4gKiBAZGVzY3JpcHRpb24gdGhpcyBpcyBob3cgeW91IHNob3VsZCBkb2N1bWVudCBhIGNvbnN0YW50XG4gKiBAY29uc3QgVkVSU0lPTlxuICogQG1lbWJlck9mIG1vZHVsZTp0cy13b3Jrc3BhY2VcbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIjAuMC4xXCI7XG4iXX0=
package/lib/index.cjs ADDED
@@ -0,0 +1,32 @@
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
+ /**
20
+ * @summary Module summary
21
+ * @description Module description
22
+ * @module for-nano
23
+ */
24
+ /**
25
+ * @summary stores the current package version
26
+ * @description this is how you should document a constant
27
+ * @const VERSION
28
+ * @memberOf module:ts-workspace
29
+ */
30
+ exports.VERSION = "0.0.1";
31
+
32
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRDQUEwQjtBQUUxQjs7OztHQUlHO0FBRUg7Ozs7O0dBS0c7QUFDVSxRQUFBLE9BQU8sR0FBRyxPQUFPLENBQUMiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9hZGFwdGVyXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgTW9kdWxlIHN1bW1hcnlcbiAqIEBkZXNjcmlwdGlvbiBNb2R1bGUgZGVzY3JpcHRpb25cbiAqIEBtb2R1bGUgZm9yLW5hbm9cbiAqL1xuXG4vKipcbiAqIEBzdW1tYXJ5IHN0b3JlcyB0aGUgY3VycmVudCBwYWNrYWdlIHZlcnNpb25cbiAqIEBkZXNjcmlwdGlvbiB0aGlzIGlzIGhvdyB5b3Ugc2hvdWxkIGRvY3VtZW50IGEgY29uc3RhbnRcbiAqIEBjb25zdCBWRVJTSU9OXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnRzLXdvcmtzcGFjZVxuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiMC4wLjFcIjtcbiJdfQ==
package/lib/index.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ export * from "./adapter";
2
+ /**
3
+ * @summary Module summary
4
+ * @description Module description
5
+ * @module for-nano
6
+ */
7
+ /**
8
+ * @summary stores the current package version
9
+ * @description this is how you should document a constant
10
+ * @const VERSION
11
+ * @memberOf module:ts-workspace
12
+ */
13
+ export declare const VERSION = "0.0.1";
package/package.json ADDED
@@ -0,0 +1,117 @@
1
+ {
2
+ "name": "@decaf-ts/for-nano",
3
+ "version": "0.0.2",
4
+ "description": "decaf-ts persistence adapter for CouchDB via nano",
5
+ "type": "module",
6
+ "exports": {
7
+ "require": "./lib/index.cjs",
8
+ "import": "./lib/esm/index.js"
9
+ },
10
+ "types": "lib/index.d.ts",
11
+ "scripts": {
12
+ "do-install": "TOKEN=$(cat .token) npm install",
13
+ "update-dependencies": "rimraf node_modules/@decaf-ts package-lock.json && npm run do-install",
14
+ "flash-forward": "npx npm-check-updates -u && npm run do-install",
15
+ "reset": "rm -rf * && git checkout . && git pull && npm run do-install",
16
+ "build": "rimraf ./lib && rimraf ./dist && gulp dev",
17
+ "build:prod": "rimraf ./lib && rimraf ./dist && gulp prod",
18
+ "test": "jest --coverage --testPathPattern=\"/tests/unit\" --passWithNoTests --detectOpenHandles",
19
+ "test:integration": "jest --coverage --testPathPattern=\"/tests/(integration)\" --passWithNoTests --detectOpenHandles --globalSetup=./tests/integration/setup.ts --globalTeardown=./tests/integration/teardown.ts",
20
+ "test:all": "jest --coverage --testPathPattern=\"/tests/(unit|integration)\" --passWithNoTests",
21
+ "lint": "eslint .",
22
+ "lint-fix": "eslint --fix ./src/*",
23
+ "test:circular": "dpdm -T --no-warning --no-tree ./src/index.ts",
24
+ "prepare-release": "npm run lint-fix && npm run build:prod && npm run coverage && npm run docs",
25
+ "release": "./bin/tag-release.sh",
26
+ "clean-publish": "npx clean-publish",
27
+ "coverage": "npm run test:all && cd workdocs && jest-coverage-badges",
28
+ "drawings": "for FILE in workdocs/drawings/*.drawio; do echo \"converting $FILE to image...\" && docker run --rm -v $(pwd):/data rlespinasse/drawio-export --format png $FILE; done && cp -rf workdocs/drawings/export/* workdocs/resources/",
29
+ "uml": "cd workdocs/uml && for FILE in ./*.puml; do docker run --rm -v $(pwd):/work -w /work miy4/plantuml -DPLANTUML_LIMIT_SIZE=8192 -tpng $FILE; done && cd ../.. && cp -fr workdocs/uml/*.png workdocs/resources/",
30
+ "docs": "npx rimraf ./docs && mkdir docs && npm run do-install -- better-docs taffydb && gulp docs; npm remove better-docs taffydb"
31
+ },
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "git+https://github.com/decaf-ts/for-couchdb.git"
35
+ },
36
+ "engines": {
37
+ "node": ">=20.0.0",
38
+ "npm": ">=10.0.0"
39
+ },
40
+ "files": [
41
+ "lib",
42
+ "dist"
43
+ ],
44
+ "keywords": [
45
+ "plantuml",
46
+ "mermaid",
47
+ "uml",
48
+ "drawio",
49
+ "mddocs",
50
+ "md",
51
+ "jsdoc",
52
+ "doc",
53
+ "docs",
54
+ "documentation",
55
+ "ci/cd",
56
+ "ci",
57
+ "cd",
58
+ "template",
59
+ "typescript",
60
+ "ts"
61
+ ],
62
+ "author": "Tiago Venceslau",
63
+ "license": "MIT",
64
+ "bugs": {
65
+ "url": "https://github.com/decaf-ts/for-couchdb/issues"
66
+ },
67
+ "homepage": "https://github.com/decaf-ts/for-couchdb#readme",
68
+ "devDependencies": {
69
+ "@eslint/js": "^9.13.0",
70
+ "@types/jest": "^29.5.14",
71
+ "@typescript-eslint/eslint-plugin": "^8.12.2",
72
+ "clean-publish": "^5.1.0",
73
+ "dpdm": "^3.14.0",
74
+ "eslint": "^9.13.0",
75
+ "eslint-config-prettier": "^9.1.0",
76
+ "eslint-plugin-prettier": "^5.2.1",
77
+ "globals": "^15.11.0",
78
+ "gulp": "^5.0.0",
79
+ "gulp-if": "^3.0.0",
80
+ "gulp-rename": "^2.0.0",
81
+ "gulp-replace": "^1.1.4",
82
+ "gulp-run-command": "^0.0.10",
83
+ "gulp-sourcemaps": "^2.6.5",
84
+ "gulp-typescript": "^6.0.0-alpha.1",
85
+ "gulp-uglify": "^3.0.2",
86
+ "https-browserify": "^1.0.0",
87
+ "jest": "^29.7.0",
88
+ "jest-coverage-badges": "^1.0.0",
89
+ "jest-junit": "^16.0.0",
90
+ "jsdoc": "^4.0.4",
91
+ "jsdoc-mermaid": "^1.0.0",
92
+ "markdown-include": "^0.4.3",
93
+ "merge-stream": "^2.0.0",
94
+ "nodemon": "^3.1.7",
95
+ "npm-check-updates": "^17.1.9",
96
+ "prettier": "^3.3.3",
97
+ "rimraf": "^6.0.1",
98
+ "stream-http": "^3.2.0",
99
+ "ts-jest": "^29.2.5",
100
+ "ts-loader": "^9.5.1",
101
+ "ts-node": "^10.9.2",
102
+ "typescript": "^5.6.3",
103
+ "typescript-eslint": "^8.12.2",
104
+ "url": "^0.11.4",
105
+ "vinyl-named": "^1.1.0",
106
+ "webpack-stream": "^7.0.0"
107
+ },
108
+ "peerDependencies": {
109
+ "@decaf-ts/core": "latest",
110
+ "@decaf-ts/db-decorators": "latest",
111
+ "@decaf-ts/decorator-validation": "latest",
112
+ "@decaf-ts/for-couchdb": "latest",
113
+ "@decaf-ts/injectable-decorators": "latest",
114
+ "@decaf-ts/reflection": "latest",
115
+ "nano": "^10.1.4"
116
+ }
117
+ }