@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.
- package/LICENSE.md +21 -0
- package/README.md +297 -0
- package/dist/esm/for-nano.bundle.min.esm.js +2 -0
- package/dist/esm/for-nano.bundle.min.esm.js.LICENSE.txt +25 -0
- package/dist/for-nano.bundle.min.js +2 -0
- package/dist/for-nano.bundle.min.js.LICENSE.txt +25 -0
- package/lib/adapter.cjs +106 -0
- package/lib/adapter.d.ts +13 -0
- package/lib/esm/adapter.d.ts +13 -0
- package/lib/esm/adapter.js +102 -0
- package/lib/esm/index.d.ts +13 -0
- package/lib/esm/index.js +15 -0
- package/lib/index.cjs +32 -0
- package/lib/index.d.ts +13 -0
- package/package.json +117 -0
|
@@ -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> */
|
package/lib/adapter.cjs
ADDED
|
@@ -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
|
package/lib/adapter.d.ts
ADDED
|
@@ -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";
|
package/lib/esm/index.js
ADDED
|
@@ -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
|
+
}
|