@decaf-ts/for-couchdb 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +21 -0
- package/README.md +297 -0
- package/dist/esm/for-couchdb.bundle.min.esm.js +2 -0
- package/dist/esm/for-couchdb.bundle.min.esm.js.LICENSE.txt +25 -0
- package/dist/for-couchdb.bundle.min.js +2 -0
- package/dist/for-couchdb.bundle.min.js.LICENSE.txt +25 -0
- package/lib/adapter.cjs +332 -0
- package/lib/adapter.d.ts +32 -0
- package/lib/constants.cjs +15 -0
- package/lib/constants.d.ts +10 -0
- package/lib/errors.cjs +12 -0
- package/lib/errors.d.ts +4 -0
- package/lib/esm/adapter.d.ts +32 -0
- package/lib/esm/adapter.js +328 -0
- package/lib/esm/constants.d.ts +10 -0
- package/lib/esm/constants.js +12 -0
- package/lib/esm/errors.d.ts +4 -0
- package/lib/esm/errors.js +8 -0
- package/lib/esm/index.d.ts +24 -0
- package/lib/esm/index.js +26 -0
- package/lib/esm/indexes/generator.d.ts +3 -0
- package/lib/esm/indexes/generator.js +72 -0
- package/lib/esm/indexes/index.d.ts +2 -0
- package/lib/esm/indexes/index.js +4 -0
- package/lib/esm/indexes/types.d.ts +11 -0
- package/lib/esm/indexes/types.js +3 -0
- package/lib/esm/interfaces/CouchDBRepository.d.ts +7 -0
- package/lib/esm/interfaces/CouchDBRepository.js +3 -0
- package/lib/esm/interfaces/index.d.ts +1 -0
- package/lib/esm/interfaces/index.js +3 -0
- package/lib/esm/model/CouchDBSequence.d.ts +20 -0
- package/lib/esm/model/CouchDBSequence.js +49 -0
- package/lib/esm/model/index.d.ts +1 -0
- package/lib/esm/model/index.js +3 -0
- package/lib/esm/query/FromClause.d.ts +7 -0
- package/lib/esm/query/FromClause.js +21 -0
- package/lib/esm/query/InsertClause.d.ts +7 -0
- package/lib/esm/query/InsertClause.js +14 -0
- package/lib/esm/query/Paginator.d.ts +10 -0
- package/lib/esm/query/Paginator.js +58 -0
- package/lib/esm/query/SelectClause.d.ts +7 -0
- package/lib/esm/query/SelectClause.js +17 -0
- package/lib/esm/query/Statement.d.ts +13 -0
- package/lib/esm/query/Statement.js +55 -0
- package/lib/esm/query/ValuesClause.d.ts +7 -0
- package/lib/esm/query/ValuesClause.js +13 -0
- package/lib/esm/query/WhereClause.d.ts +7 -0
- package/lib/esm/query/WhereClause.js +58 -0
- package/lib/esm/query/constants.d.ts +4 -0
- package/lib/esm/query/constants.js +22 -0
- package/lib/esm/query/factory.d.ts +24 -0
- package/lib/esm/query/factory.js +118 -0
- package/lib/esm/query/index.d.ts +1 -0
- package/lib/esm/query/index.js +3 -0
- package/lib/esm/query/translate.d.ts +3 -0
- package/lib/esm/query/translate.js +12 -0
- package/lib/esm/sequences/Sequence.d.ts +48 -0
- package/lib/esm/sequences/Sequence.js +127 -0
- package/lib/esm/sequences/index.d.ts +1 -0
- package/lib/esm/sequences/index.js +3 -0
- package/lib/esm/sequences/utils.d.ts +1 -0
- package/lib/esm/sequences/utils.js +17 -0
- package/lib/esm/utils.d.ts +7 -0
- package/lib/esm/utils.js +72 -0
- package/lib/index.cjs +43 -0
- package/lib/index.d.ts +24 -0
- package/lib/indexes/generator.cjs +75 -0
- package/lib/indexes/generator.d.ts +3 -0
- package/lib/indexes/index.cjs +20 -0
- package/lib/indexes/index.d.ts +2 -0
- package/lib/indexes/types.cjs +4 -0
- package/lib/indexes/types.d.ts +11 -0
- package/lib/interfaces/CouchDBRepository.cjs +4 -0
- package/lib/interfaces/CouchDBRepository.d.ts +7 -0
- package/lib/interfaces/index.cjs +19 -0
- package/lib/interfaces/index.d.ts +1 -0
- package/lib/model/CouchDBSequence.cjs +52 -0
- package/lib/model/CouchDBSequence.d.ts +20 -0
- package/lib/model/index.cjs +19 -0
- package/lib/model/index.d.ts +1 -0
- package/lib/query/FromClause.cjs +25 -0
- package/lib/query/FromClause.d.ts +7 -0
- package/lib/query/InsertClause.cjs +18 -0
- package/lib/query/InsertClause.d.ts +7 -0
- package/lib/query/Paginator.cjs +62 -0
- package/lib/query/Paginator.d.ts +10 -0
- package/lib/query/SelectClause.cjs +21 -0
- package/lib/query/SelectClause.d.ts +7 -0
- package/lib/query/Statement.cjs +59 -0
- package/lib/query/Statement.d.ts +13 -0
- package/lib/query/ValuesClause.cjs +17 -0
- package/lib/query/ValuesClause.d.ts +7 -0
- package/lib/query/WhereClause.cjs +62 -0
- package/lib/query/WhereClause.d.ts +7 -0
- package/lib/query/constants.cjs +25 -0
- package/lib/query/constants.d.ts +4 -0
- package/lib/query/factory.cjs +122 -0
- package/lib/query/factory.d.ts +24 -0
- package/lib/query/index.cjs +19 -0
- package/lib/query/index.d.ts +1 -0
- package/lib/query/translate.cjs +15 -0
- package/lib/query/translate.d.ts +3 -0
- package/lib/sequences/Sequence.cjs +131 -0
- package/lib/sequences/Sequence.d.ts +48 -0
- package/lib/sequences/index.cjs +19 -0
- package/lib/sequences/index.d.ts +1 -0
- package/lib/sequences/utils.cjs +20 -0
- package/lib/sequences/utils.d.ts +1 -0
- package/lib/utils.cjs +79 -0
- package/lib/utils.d.ts +7 -0
- package/package.json +124 -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,332 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CouchDBAdapter = void 0;
|
|
4
|
+
const core_1 = require("@decaf-ts/core");
|
|
5
|
+
const Nano = require("nano");
|
|
6
|
+
const constants_1 = require("./constants.cjs");
|
|
7
|
+
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
8
|
+
require("reflect-metadata");
|
|
9
|
+
const Statement_1 = require("./query/Statement.cjs");
|
|
10
|
+
const query_1 = require("./query/index.cjs");
|
|
11
|
+
const translate_1 = require("./query/translate.cjs");
|
|
12
|
+
const Sequence_1 = require("./sequences/Sequence.cjs");
|
|
13
|
+
const errors_1 = require("./errors.cjs");
|
|
14
|
+
const generator_1 = require("./indexes/generator.cjs");
|
|
15
|
+
class CouchDBAdapter extends core_1.Adapter {
|
|
16
|
+
constructor(scope, flavour) {
|
|
17
|
+
super(scope, flavour);
|
|
18
|
+
}
|
|
19
|
+
get Clauses() {
|
|
20
|
+
if (!this.factory)
|
|
21
|
+
this.factory = new query_1.Factory(this);
|
|
22
|
+
return this.factory;
|
|
23
|
+
}
|
|
24
|
+
Query() {
|
|
25
|
+
return super.Query();
|
|
26
|
+
}
|
|
27
|
+
get Statement() {
|
|
28
|
+
return new Statement_1.CouchDBStatement(this);
|
|
29
|
+
}
|
|
30
|
+
parseCondition(condition) {
|
|
31
|
+
function merge(op, obj1, obj2) {
|
|
32
|
+
const result = { selector: {} };
|
|
33
|
+
result.selector[op] = [obj1, obj2];
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
const { attr1, operator, comparison } = condition;
|
|
37
|
+
let op = {};
|
|
38
|
+
if ([core_1.GroupOperator.AND, core_1.GroupOperator.OR, core_1.Operator.NOT].indexOf(operator) === -1) {
|
|
39
|
+
op[attr1] = {};
|
|
40
|
+
op[attr1][(0, translate_1.translateOperators)(operator)] =
|
|
41
|
+
comparison;
|
|
42
|
+
}
|
|
43
|
+
else if (operator === core_1.Operator.NOT) {
|
|
44
|
+
op = this.parseCondition(attr1).selector;
|
|
45
|
+
op[(0, translate_1.translateOperators)(core_1.Operator.NOT)] = {};
|
|
46
|
+
op[(0, translate_1.translateOperators)(core_1.Operator.NOT)][attr1.attr1] = comparison;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
const op1 = this.parseCondition(attr1).selector;
|
|
50
|
+
const op2 = this.parseCondition(comparison).selector;
|
|
51
|
+
op = merge((0, translate_1.translateOperators)(operator), op1, op2).selector;
|
|
52
|
+
}
|
|
53
|
+
return { selector: op };
|
|
54
|
+
}
|
|
55
|
+
async Sequence(options) {
|
|
56
|
+
return new Sequence_1.CouchDBSequence(options);
|
|
57
|
+
}
|
|
58
|
+
async initialize() {
|
|
59
|
+
const managedModels = core_1.Adapter.models(this.flavour);
|
|
60
|
+
return this.index(...managedModels);
|
|
61
|
+
}
|
|
62
|
+
async index(...models) {
|
|
63
|
+
const indexes = (0, generator_1.generateIndexes)(models);
|
|
64
|
+
for (const index of indexes) {
|
|
65
|
+
const res = await this.native.createIndex(index);
|
|
66
|
+
const { result, id, name } = res;
|
|
67
|
+
if (result === "existing")
|
|
68
|
+
throw new db_decorators_1.ConflictError(`Index for table ${name} with id ${id}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async user() {
|
|
72
|
+
try {
|
|
73
|
+
const user = await this.native[constants_1.CouchDBKeys.NATIVE].session();
|
|
74
|
+
return user.userCtx.name;
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
throw this.parseError(e);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async raw(rawInput, process = true) {
|
|
81
|
+
try {
|
|
82
|
+
const response = await this.native.find(rawInput);
|
|
83
|
+
if (process)
|
|
84
|
+
return response.docs;
|
|
85
|
+
return response;
|
|
86
|
+
}
|
|
87
|
+
catch (e) {
|
|
88
|
+
throw this.parseError(e);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async create(tableName, id, model) {
|
|
92
|
+
const record = {};
|
|
93
|
+
record[constants_1.CouchDBKeys.TABLE] = tableName;
|
|
94
|
+
record[constants_1.CouchDBKeys.ID] = this.generateId(tableName, id);
|
|
95
|
+
Object.assign(record, model);
|
|
96
|
+
let response;
|
|
97
|
+
try {
|
|
98
|
+
response = await this.native.insert(record);
|
|
99
|
+
}
|
|
100
|
+
catch (e) {
|
|
101
|
+
throw this.parseError(e);
|
|
102
|
+
}
|
|
103
|
+
if (!response.ok)
|
|
104
|
+
throw new db_decorators_1.InternalError(`Failed to insert doc id: ${id} in table ${tableName}`);
|
|
105
|
+
Object.defineProperty(model, core_1.PersistenceKeys.METADATA, {
|
|
106
|
+
enumerable: false,
|
|
107
|
+
configurable: false,
|
|
108
|
+
writable: false,
|
|
109
|
+
value: response.rev,
|
|
110
|
+
});
|
|
111
|
+
return model;
|
|
112
|
+
}
|
|
113
|
+
async createAll(tableName, ids, models) {
|
|
114
|
+
if (ids.length !== models.length)
|
|
115
|
+
throw new db_decorators_1.InternalError("Ids and models must have the same length");
|
|
116
|
+
const records = ids.map((id, count) => {
|
|
117
|
+
const record = {};
|
|
118
|
+
record[constants_1.CouchDBKeys.TABLE] = tableName;
|
|
119
|
+
record[constants_1.CouchDBKeys.ID] = this.generateId(tableName, id);
|
|
120
|
+
Object.assign(record, models[count]);
|
|
121
|
+
return record;
|
|
122
|
+
});
|
|
123
|
+
let response;
|
|
124
|
+
try {
|
|
125
|
+
response = await this.native.bulk({ docs: records });
|
|
126
|
+
}
|
|
127
|
+
catch (e) {
|
|
128
|
+
throw this.parseError(e);
|
|
129
|
+
}
|
|
130
|
+
if (!response.every((r) => !r.error)) {
|
|
131
|
+
const errors = response.reduce((accum, el, i) => {
|
|
132
|
+
if (el.error)
|
|
133
|
+
accum.push(`el ${i}: ${el.error}${el.reason ? ` - ${el.reason}` : ""}`);
|
|
134
|
+
return accum;
|
|
135
|
+
}, []);
|
|
136
|
+
throw new db_decorators_1.InternalError(errors.join("\n"));
|
|
137
|
+
}
|
|
138
|
+
models.forEach((m, i) => {
|
|
139
|
+
core_1.Repository.setMetadata(m, response[i].rev);
|
|
140
|
+
return m;
|
|
141
|
+
});
|
|
142
|
+
return models;
|
|
143
|
+
}
|
|
144
|
+
async read(tableName, id) {
|
|
145
|
+
const _id = this.generateId(tableName, id);
|
|
146
|
+
let record;
|
|
147
|
+
try {
|
|
148
|
+
record = await this.native.get(_id);
|
|
149
|
+
}
|
|
150
|
+
catch (e) {
|
|
151
|
+
throw this.parseError(e);
|
|
152
|
+
}
|
|
153
|
+
Object.defineProperty(record, core_1.PersistenceKeys.METADATA, {
|
|
154
|
+
enumerable: false,
|
|
155
|
+
writable: false,
|
|
156
|
+
value: record._rev,
|
|
157
|
+
});
|
|
158
|
+
return record;
|
|
159
|
+
}
|
|
160
|
+
async update(tableName, id, model) {
|
|
161
|
+
const record = {};
|
|
162
|
+
record[constants_1.CouchDBKeys.TABLE] = tableName;
|
|
163
|
+
record[constants_1.CouchDBKeys.ID] = this.generateId(tableName, id);
|
|
164
|
+
const rev = model[core_1.PersistenceKeys.METADATA];
|
|
165
|
+
if (!rev)
|
|
166
|
+
throw new db_decorators_1.InternalError(`No revision number found for record with id ${id}`);
|
|
167
|
+
Object.assign(record, model);
|
|
168
|
+
record[constants_1.CouchDBKeys.REV] = rev;
|
|
169
|
+
let response;
|
|
170
|
+
try {
|
|
171
|
+
response = await this.native.insert(record);
|
|
172
|
+
}
|
|
173
|
+
catch (e) {
|
|
174
|
+
throw this.parseError(e);
|
|
175
|
+
}
|
|
176
|
+
if (!response.ok)
|
|
177
|
+
throw new db_decorators_1.InternalError(`Failed to update doc id: ${id} in table ${tableName}`);
|
|
178
|
+
Object.defineProperty(model, core_1.PersistenceKeys.METADATA, {
|
|
179
|
+
enumerable: false,
|
|
180
|
+
configurable: false,
|
|
181
|
+
writable: false,
|
|
182
|
+
value: response.rev,
|
|
183
|
+
});
|
|
184
|
+
return model;
|
|
185
|
+
}
|
|
186
|
+
async delete(tableName, id) {
|
|
187
|
+
const _id = this.generateId(tableName, id);
|
|
188
|
+
let record;
|
|
189
|
+
try {
|
|
190
|
+
record = await this.native.get(_id);
|
|
191
|
+
await this.native.destroy(_id, record._rev);
|
|
192
|
+
}
|
|
193
|
+
catch (e) {
|
|
194
|
+
throw this.parseError(e);
|
|
195
|
+
}
|
|
196
|
+
Object.defineProperty(record, core_1.PersistenceKeys.METADATA, {
|
|
197
|
+
enumerable: false,
|
|
198
|
+
configurable: false,
|
|
199
|
+
writable: false,
|
|
200
|
+
value: record._rev,
|
|
201
|
+
});
|
|
202
|
+
return record;
|
|
203
|
+
}
|
|
204
|
+
generateId(tableName, id) {
|
|
205
|
+
return [tableName, id].join(constants_1.CouchDBKeys.SEPARATOR);
|
|
206
|
+
}
|
|
207
|
+
parseError(err, reason) {
|
|
208
|
+
return CouchDBAdapter.parseError(err, reason);
|
|
209
|
+
}
|
|
210
|
+
isReserved(attr) {
|
|
211
|
+
return !!attr.match(constants_1.reservedAttributes);
|
|
212
|
+
}
|
|
213
|
+
static parseError(err, reason) {
|
|
214
|
+
if (err instanceof db_decorators_1.BaseError)
|
|
215
|
+
return err;
|
|
216
|
+
let code = "";
|
|
217
|
+
if (typeof err === "string") {
|
|
218
|
+
code = err;
|
|
219
|
+
if (code.match(/already exist|update conflict/g))
|
|
220
|
+
return new db_decorators_1.ConflictError(code);
|
|
221
|
+
if (code.match(/missing|deleted/g))
|
|
222
|
+
return new db_decorators_1.NotFoundError(code);
|
|
223
|
+
}
|
|
224
|
+
else if (err.code) {
|
|
225
|
+
code = err.code;
|
|
226
|
+
reason = reason || err.message;
|
|
227
|
+
}
|
|
228
|
+
else if (err.statusCode) {
|
|
229
|
+
code = err.statusCode;
|
|
230
|
+
reason = reason || err.message;
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
code = err.message;
|
|
234
|
+
}
|
|
235
|
+
switch (code.toString()) {
|
|
236
|
+
case "401":
|
|
237
|
+
case "412":
|
|
238
|
+
case "409":
|
|
239
|
+
return new db_decorators_1.ConflictError(reason);
|
|
240
|
+
case "404":
|
|
241
|
+
return new db_decorators_1.NotFoundError(reason);
|
|
242
|
+
case "400":
|
|
243
|
+
if (code.toString().match(/No\sindex\sexists/g))
|
|
244
|
+
return new errors_1.IndexError(err);
|
|
245
|
+
return new db_decorators_1.InternalError(err);
|
|
246
|
+
default:
|
|
247
|
+
if (code.toString().match(/ECONNREFUSED/g))
|
|
248
|
+
return new core_1.ConnectionError(err);
|
|
249
|
+
return new db_decorators_1.InternalError(err);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
static connect(user, pass, host = "localhost:5984", protocol = "http") {
|
|
253
|
+
return Nano(`${protocol}://${user}:${pass}@${host}`);
|
|
254
|
+
}
|
|
255
|
+
static async createDatabase(con, name) {
|
|
256
|
+
let result;
|
|
257
|
+
try {
|
|
258
|
+
result = await con.db.create(name);
|
|
259
|
+
}
|
|
260
|
+
catch (e) {
|
|
261
|
+
throw this.parseError(e);
|
|
262
|
+
}
|
|
263
|
+
const { ok, error, reason } = result;
|
|
264
|
+
if (!ok)
|
|
265
|
+
throw this.parseError(error, reason);
|
|
266
|
+
}
|
|
267
|
+
static async deleteDatabase(con, name) {
|
|
268
|
+
let result;
|
|
269
|
+
try {
|
|
270
|
+
result = await con.db.destroy(name);
|
|
271
|
+
}
|
|
272
|
+
catch (e) {
|
|
273
|
+
throw this.parseError(e);
|
|
274
|
+
}
|
|
275
|
+
const { ok } = result;
|
|
276
|
+
if (!ok)
|
|
277
|
+
throw new db_decorators_1.InternalError(`Failed to delete database with name ${name}`);
|
|
278
|
+
}
|
|
279
|
+
static async createUser(con, dbName, user, pass, roles = ["reader", "writer"]) {
|
|
280
|
+
const users = await con.db.use("_users");
|
|
281
|
+
const usr = {
|
|
282
|
+
_id: "org.couchdb.user:" + user,
|
|
283
|
+
name: user,
|
|
284
|
+
password: pass,
|
|
285
|
+
roles: roles,
|
|
286
|
+
type: "user",
|
|
287
|
+
};
|
|
288
|
+
try {
|
|
289
|
+
const created = await users.insert(usr);
|
|
290
|
+
const { ok } = created;
|
|
291
|
+
if (!ok)
|
|
292
|
+
throw new db_decorators_1.InternalError(`Failed to create user ${user}`);
|
|
293
|
+
const security = await con.request({
|
|
294
|
+
db: dbName,
|
|
295
|
+
method: "put",
|
|
296
|
+
path: "_security",
|
|
297
|
+
// headers: {
|
|
298
|
+
//
|
|
299
|
+
// },
|
|
300
|
+
body: {
|
|
301
|
+
admins: {
|
|
302
|
+
names: [user],
|
|
303
|
+
roles: [],
|
|
304
|
+
},
|
|
305
|
+
members: {
|
|
306
|
+
names: [user],
|
|
307
|
+
roles: roles,
|
|
308
|
+
},
|
|
309
|
+
},
|
|
310
|
+
});
|
|
311
|
+
if (!security.ok)
|
|
312
|
+
throw new db_decorators_1.InternalError(`Failed to authorize user ${user} to db ${dbName}`);
|
|
313
|
+
}
|
|
314
|
+
catch (e) {
|
|
315
|
+
throw this.parseError(e);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
static async deleteUser(con, dbName, user) {
|
|
319
|
+
const users = await con.db.use("_users");
|
|
320
|
+
const id = "org.couchdb.user:" + user;
|
|
321
|
+
try {
|
|
322
|
+
const usr = await users.get(id);
|
|
323
|
+
await users.destroy(id, usr._rev);
|
|
324
|
+
}
|
|
325
|
+
catch (e) {
|
|
326
|
+
throw this.parseError(e);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
exports.CouchDBAdapter = CouchDBAdapter;
|
|
331
|
+
|
|
332
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTlYRCx3Q0E4WEMiLCJmaWxlIjoiYWRhcHRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFkYXB0ZXIsXG4gIFNlcXVlbmNlLFxuICBTZXF1ZW5jZU9wdGlvbnMsXG4gIFBlcnNpc3RlbmNlS2V5cyxcbiAgT3BlcmF0b3IsXG4gIEdyb3VwT3BlcmF0b3IsXG4gIFN0YXRlbWVudCxcbiAgUXVlcnksXG4gIENsYXVzZUZhY3RvcnksXG4gIENvbmRpdGlvbixcbiAgQ29ubmVjdGlvbkVycm9yLFxuICBSZXBvc2l0b3J5LFxufSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7XG4gIE1hbmdvUXVlcnksXG4gIERvY3VtZW50U2NvcGUsXG4gIERvY3VtZW50SW5zZXJ0UmVzcG9uc2UsXG4gIERvY3VtZW50R2V0UmVzcG9uc2UsXG4gIFNlcnZlclNjb3BlLFxuICBEYXRhYmFzZUNyZWF0ZVJlc3BvbnNlLFxuICBNYXliZURvY3VtZW50LFxuICBNYW5nb1Jlc3BvbnNlLFxuICBNYW5nb1NlbGVjdG9yLFxuICBEb2N1bWVudEJ1bGtSZXNwb25zZSxcbiAgTWFuZ29PcGVyYXRvcixcbiAgRGF0YWJhc2VTZXNzaW9uUmVzcG9uc2UsXG4gIENyZWF0ZUluZGV4UmVxdWVzdCxcbn0gZnJvbSBcIm5hbm9cIjtcbmltcG9ydCAqIGFzIE5hbm8gZnJvbSBcIm5hbm9cIjtcbmltcG9ydCB7IENvdWNoREJLZXlzLCByZXNlcnZlZEF0dHJpYnV0ZXMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7XG4gIEJhc2VFcnJvcixcbiAgQ29uZmxpY3RFcnJvcixcbiAgSW50ZXJuYWxFcnJvcixcbiAgTm90Rm91bmRFcnJvcixcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgXCJyZWZsZWN0LW1ldGFkYXRhXCI7XG5pbXBvcnQgeyBDb3VjaERCU3RhdGVtZW50IH0gZnJvbSBcIi4vcXVlcnkvU3RhdGVtZW50XCI7XG5pbXBvcnQgeyBGYWN0b3J5IH0gZnJvbSBcIi4vcXVlcnlcIjtcbmltcG9ydCB7IHRyYW5zbGF0ZU9wZXJhdG9ycyB9IGZyb20gXCIuL3F1ZXJ5L3RyYW5zbGF0ZVwiO1xuaW1wb3J0IHsgQ291Y2hEQlNlcXVlbmNlIH0gZnJvbSBcIi4vc2VxdWVuY2VzL1NlcXVlbmNlXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciwgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBJbmRleEVycm9yIH0gZnJvbSBcIi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUluZGV4ZXMgfSBmcm9tIFwiLi9pbmRleGVzL2dlbmVyYXRvclwiO1xuXG5leHBvcnQgY2xhc3MgQ291Y2hEQkFkYXB0ZXIgZXh0ZW5kcyBBZGFwdGVyPERvY3VtZW50U2NvcGU8YW55PiwgTWFuZ29RdWVyeT4ge1xuICBwcml2YXRlIGZhY3Rvcnk/OiBGYWN0b3J5O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBEb2N1bWVudFNjb3BlPGFueT4sIGZsYXZvdXI6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBmbGF2b3VyKTtcbiAgfVxuXG4gIGdldCBDbGF1c2VzKCk6IENsYXVzZUZhY3Rvcnk8RG9jdW1lbnRTY29wZTxhbnk+LCBNYW5nb1F1ZXJ5PiB7XG4gICAgaWYgKCF0aGlzLmZhY3RvcnkpIHRoaXMuZmFjdG9yeSA9IG5ldyBGYWN0b3J5KHRoaXMpO1xuICAgIHJldHVybiB0aGlzLmZhY3Rvcnk7XG4gIH1cblxuICBRdWVyeTxNIGV4dGVuZHMgTW9kZWw+KCk6IFF1ZXJ5PE1hbmdvUXVlcnksIE0+IHtcbiAgICByZXR1cm4gc3VwZXIuUXVlcnkoKTtcbiAgfVxuXG4gIGdldCBTdGF0ZW1lbnQoKTogU3RhdGVtZW50PE1hbmdvUXVlcnk+IHtcbiAgICByZXR1cm4gbmV3IENvdWNoREJTdGF0ZW1lbnQodGhpcyk7XG4gIH1cblxuICBwYXJzZUNvbmRpdGlvbihjb25kaXRpb246IENvbmRpdGlvbik6IE1hbmdvUXVlcnkge1xuICAgIGZ1bmN0aW9uIG1lcmdlKFxuICAgICAgb3A6IE1hbmdvT3BlcmF0b3IsXG4gICAgICBvYmoxOiBNYW5nb1NlbGVjdG9yLFxuICAgICAgb2JqMjogTWFuZ29TZWxlY3RvclxuICAgICk6IE1hbmdvUXVlcnkge1xuICAgICAgY29uc3QgcmVzdWx0OiBNYW5nb1F1ZXJ5ID0geyBzZWxlY3Rvcjoge30gYXMgTWFuZ29TZWxlY3RvciB9O1xuICAgICAgcmVzdWx0LnNlbGVjdG9yW29wXSA9IFtvYmoxLCBvYmoyXTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgY29uc3QgeyBhdHRyMSwgb3BlcmF0b3IsIGNvbXBhcmlzb24gfSA9IGNvbmRpdGlvbiBhcyB1bmtub3duIGFzIHtcbiAgICAgIGF0dHIxOiBzdHJpbmcgfCBDb25kaXRpb247XG4gICAgICBvcGVyYXRvcjogT3BlcmF0b3IgfCBHcm91cE9wZXJhdG9yO1xuICAgICAgY29tcGFyaXNvbjogYW55O1xuICAgIH07XG5cbiAgICBsZXQgb3A6IE1hbmdvU2VsZWN0b3IgPSB7fSBhcyBNYW5nb1NlbGVjdG9yO1xuICAgIGlmIChcbiAgICAgIFtHcm91cE9wZXJhdG9yLkFORCwgR3JvdXBPcGVyYXRvci5PUiwgT3BlcmF0b3IuTk9UXS5pbmRleE9mKFxuICAgICAgICBvcGVyYXRvciBhcyBHcm91cE9wZXJhdG9yXG4gICAgICApID09PSAtMVxuICAgICkge1xuICAgICAgb3BbYXR0cjEgYXMgc3RyaW5nXSA9IHt9IGFzIE1hbmdvU2VsZWN0b3I7XG4gICAgICAob3BbYXR0cjEgYXMgc3RyaW5nXSBhcyBNYW5nb1NlbGVjdG9yKVt0cmFuc2xhdGVPcGVyYXRvcnMob3BlcmF0b3IpXSA9XG4gICAgICAgIGNvbXBhcmlzb247XG4gICAgfSBlbHNlIGlmIChvcGVyYXRvciA9PT0gT3BlcmF0b3IuTk9UKSB7XG4gICAgICBvcCA9IHRoaXMucGFyc2VDb25kaXRpb24oYXR0cjEgYXMgQ29uZGl0aW9uKS5zZWxlY3RvciBhcyBNYW5nb1NlbGVjdG9yO1xuICAgICAgb3BbdHJhbnNsYXRlT3BlcmF0b3JzKE9wZXJhdG9yLk5PVCldID0ge30gYXMgTWFuZ29TZWxlY3RvcjtcbiAgICAgIChvcFt0cmFuc2xhdGVPcGVyYXRvcnMoT3BlcmF0b3IuTk9UKV0gYXMgTWFuZ29TZWxlY3RvcilbXG4gICAgICAgIChhdHRyMSBhcyB1bmtub3duIGFzIHsgYXR0cjE6IHN0cmluZyB9KS5hdHRyMVxuICAgICAgXSA9IGNvbXBhcmlzb247XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG9wMTogYW55ID0gdGhpcy5wYXJzZUNvbmRpdGlvbihhdHRyMSBhcyBDb25kaXRpb24pLnNlbGVjdG9yO1xuICAgICAgY29uc3Qgb3AyOiBhbnkgPSB0aGlzLnBhcnNlQ29uZGl0aW9uKGNvbXBhcmlzb24gYXMgQ29uZGl0aW9uKS5zZWxlY3RvcjtcbiAgICAgIG9wID0gbWVyZ2UodHJhbnNsYXRlT3BlcmF0b3JzKG9wZXJhdG9yKSwgb3AxLCBvcDIpLnNlbGVjdG9yO1xuICAgIH1cblxuICAgIHJldHVybiB7IHNlbGVjdG9yOiBvcCB9O1xuICB9XG5cbiAgYXN5bmMgU2VxdWVuY2Uob3B0aW9uczogU2VxdWVuY2VPcHRpb25zKTogUHJvbWlzZTxTZXF1ZW5jZT4ge1xuICAgIHJldHVybiBuZXcgQ291Y2hEQlNlcXVlbmNlKG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgaW5pdGlhbGl6ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBtYW5hZ2VkTW9kZWxzID0gQWRhcHRlci5tb2RlbHModGhpcy5mbGF2b3VyKTtcbiAgICByZXR1cm4gdGhpcy5pbmRleCguLi5tYW5hZ2VkTW9kZWxzKTtcbiAgfVxuXG4gIGFzeW5jIGluZGV4PE0gZXh0ZW5kcyBNb2RlbD4oLi4ubW9kZWxzOiBDb25zdHJ1Y3RvcjxNPltdKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBpbmRleGVzOiBDcmVhdGVJbmRleFJlcXVlc3RbXSA9IGdlbmVyYXRlSW5kZXhlcyhtb2RlbHMpO1xuICAgIGZvciAoY29uc3QgaW5kZXggb2YgaW5kZXhlcykge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5uYXRpdmUuY3JlYXRlSW5kZXgoaW5kZXgpO1xuICAgICAgY29uc3QgeyByZXN1bHQsIGlkLCBuYW1lIH0gPSByZXM7XG4gICAgICBpZiAocmVzdWx0ID09PSBcImV4aXN0aW5nXCIpXG4gICAgICAgIHRocm93IG5ldyBDb25mbGljdEVycm9yKGBJbmRleCBmb3IgdGFibGUgJHtuYW1lfSB3aXRoIGlkICR7aWR9YCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdXNlcigpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXNlcjogRGF0YWJhc2VTZXNzaW9uUmVzcG9uc2UgPSBhd2FpdCAoXG4gICAgICAgICh0aGlzLm5hdGl2ZSBhcyBhbnkpW0NvdWNoREJLZXlzLk5BVElWRV0gYXMgU2VydmVyU2NvcGVcbiAgICAgICkuc2Vzc2lvbigpO1xuICAgICAgcmV0dXJuIHVzZXIudXNlckN0eC5uYW1lO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJhdzxWPihyYXdJbnB1dDogTWFuZ29RdWVyeSwgcHJvY2VzcyA9IHRydWUpOiBQcm9taXNlPFY+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2U6IE1hbmdvUmVzcG9uc2U8Vj4gPSBhd2FpdCB0aGlzLm5hdGl2ZS5maW5kKHJhd0lucHV0KTtcbiAgICAgIGlmIChwcm9jZXNzKSByZXR1cm4gcmVzcG9uc2UuZG9jcyBhcyBWO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlIGFzIFY7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY3JlYXRlKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgY29uc3QgcmVjb3JkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgcmVjb3JkW0NvdWNoREJLZXlzLlRBQkxFXSA9IHRhYmxlTmFtZTtcbiAgICByZWNvcmRbQ291Y2hEQktleXMuSURdID0gdGhpcy5nZW5lcmF0ZUlkKHRhYmxlTmFtZSwgaWQpO1xuICAgIE9iamVjdC5hc3NpZ24ocmVjb3JkLCBtb2RlbCk7XG4gICAgbGV0IHJlc3BvbnNlOiBEb2N1bWVudEluc2VydFJlc3BvbnNlO1xuICAgIHRyeSB7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMubmF0aXZlLmluc2VydChyZWNvcmQpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUpO1xuICAgIH1cblxuICAgIGlmICghcmVzcG9uc2Uub2spXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byBpbnNlcnQgZG9jIGlkOiAke2lkfSBpbiB0YWJsZSAke3RhYmxlTmFtZX1gXG4gICAgICApO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2RlbCwgUGVyc2lzdGVuY2VLZXlzLk1FVEFEQVRBLCB7XG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICB2YWx1ZTogcmVzcG9uc2UucmV2LFxuICAgIH0pO1xuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUFsbChcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZHM6IHN0cmluZ1tdIHwgbnVtYmVyW10sXG4gICAgbW9kZWxzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+W11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+W10+IHtcbiAgICBpZiAoaWRzLmxlbmd0aCAhPT0gbW9kZWxzLmxlbmd0aClcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiSWRzIGFuZCBtb2RlbHMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiKTtcblxuICAgIGNvbnN0IHJlY29yZHMgPSBpZHMubWFwKChpZCwgY291bnQpID0+IHtcbiAgICAgIGNvbnN0IHJlY29yZDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgcmVjb3JkW0NvdWNoREJLZXlzLlRBQkxFXSA9IHRhYmxlTmFtZTtcbiAgICAgIHJlY29yZFtDb3VjaERCS2V5cy5JRF0gPSB0aGlzLmdlbmVyYXRlSWQodGFibGVOYW1lLCBpZCk7XG4gICAgICBPYmplY3QuYXNzaWduKHJlY29yZCwgbW9kZWxzW2NvdW50XSk7XG4gICAgICByZXR1cm4gcmVjb3JkO1xuICAgIH0pO1xuICAgIGxldCByZXNwb25zZTogRG9jdW1lbnRCdWxrUmVzcG9uc2VbXTtcbiAgICB0cnkge1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLm5hdGl2ZS5idWxrKHsgZG9jczogcmVjb3JkcyB9KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlKTtcbiAgICB9XG4gICAgaWYgKCFyZXNwb25zZS5ldmVyeSgocikgPT4gIXIuZXJyb3IpKSB7XG4gICAgICBjb25zdCBlcnJvcnMgPSByZXNwb25zZS5yZWR1Y2UoKGFjY3VtOiBzdHJpbmdbXSwgZWwsIGkpID0+IHtcbiAgICAgICAgaWYgKGVsLmVycm9yKVxuICAgICAgICAgIGFjY3VtLnB1c2goXG4gICAgICAgICAgICBgZWwgJHtpfTogJHtlbC5lcnJvcn0ke2VsLnJlYXNvbiA/IGAgLSAke2VsLnJlYXNvbn1gIDogXCJcIn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgfSwgW10pO1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoZXJyb3JzLmpvaW4oXCJcXG5cIikpO1xuICAgIH1cblxuICAgIG1vZGVscy5mb3JFYWNoKChtLCBpKSA9PiB7XG4gICAgICBSZXBvc2l0b3J5LnNldE1ldGFkYXRhKG0gYXMgYW55LCByZXNwb25zZVtpXS5yZXYpO1xuICAgICAgcmV0dXJuIG07XG4gICAgfSk7XG4gICAgcmV0dXJuIG1vZGVscztcbiAgfVxuXG4gIGFzeW5jIHJlYWQoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlclxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICBjb25zdCBfaWQgPSB0aGlzLmdlbmVyYXRlSWQodGFibGVOYW1lLCBpZCk7XG4gICAgbGV0IHJlY29yZDogRG9jdW1lbnRHZXRSZXNwb25zZTtcbiAgICB0cnkge1xuICAgICAgcmVjb3JkID0gYXdhaXQgdGhpcy5uYXRpdmUuZ2V0KF9pZCk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZWNvcmQsIFBlcnNpc3RlbmNlS2V5cy5NRVRBREFUQSwge1xuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICB2YWx1ZTogcmVjb3JkLl9yZXYsXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlY29yZDtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZShcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIGNvbnN0IHJlY29yZDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgIHJlY29yZFtDb3VjaERCS2V5cy5UQUJMRV0gPSB0YWJsZU5hbWU7XG4gICAgcmVjb3JkW0NvdWNoREJLZXlzLklEXSA9IHRoaXMuZ2VuZXJhdGVJZCh0YWJsZU5hbWUsIGlkKTtcbiAgICBjb25zdCByZXYgPSBtb2RlbFtQZXJzaXN0ZW5jZUtleXMuTUVUQURBVEFdO1xuICAgIGlmICghcmV2KVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGBObyByZXZpc2lvbiBudW1iZXIgZm91bmQgZm9yIHJlY29yZCB3aXRoIGlkICR7aWR9YFxuICAgICAgKTtcbiAgICBPYmplY3QuYXNzaWduKHJlY29yZCwgbW9kZWwpO1xuICAgIHJlY29yZFtDb3VjaERCS2V5cy5SRVZdID0gcmV2O1xuICAgIGxldCByZXNwb25zZTogRG9jdW1lbnRJbnNlcnRSZXNwb25zZTtcbiAgICB0cnkge1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLm5hdGl2ZS5pbnNlcnQocmVjb3JkKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlKTtcbiAgICB9XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGBGYWlsZWQgdG8gdXBkYXRlIGRvYyBpZDogJHtpZH0gaW4gdGFibGUgJHt0YWJsZU5hbWV9YFxuICAgICAgKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kZWwsIFBlcnNpc3RlbmNlS2V5cy5NRVRBREFUQSwge1xuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgdmFsdWU6IHJlc3BvbnNlLnJldixcbiAgICB9KTtcbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuICBhc3luYyBkZWxldGUoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlclxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICBjb25zdCBfaWQgPSB0aGlzLmdlbmVyYXRlSWQodGFibGVOYW1lLCBpZCk7XG4gICAgbGV0IHJlY29yZDogRG9jdW1lbnRHZXRSZXNwb25zZTtcbiAgICB0cnkge1xuICAgICAgcmVjb3JkID0gYXdhaXQgdGhpcy5uYXRpdmUuZ2V0KF9pZCk7XG4gICAgICBhd2FpdCB0aGlzLm5hdGl2ZS5kZXN0cm95KF9pZCwgcmVjb3JkLl9yZXYpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVjb3JkLCBQZXJzaXN0ZW5jZUtleXMuTUVUQURBVEEsIHtcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIHZhbHVlOiByZWNvcmQuX3JldixcbiAgICB9KTtcbiAgICByZXR1cm4gcmVjb3JkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUlkKHRhYmxlTmFtZTogc3RyaW5nLCBpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgcmV0dXJuIFt0YWJsZU5hbWUsIGlkXS5qb2luKENvdWNoREJLZXlzLlNFUEFSQVRPUik7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VFcnJvcihlcnI6IEVycm9yIHwgc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBCYXNlRXJyb3Ige1xuICAgIHJldHVybiBDb3VjaERCQWRhcHRlci5wYXJzZUVycm9yKGVyciwgcmVhc29uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc1Jlc2VydmVkKGF0dHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIWF0dHIubWF0Y2gocmVzZXJ2ZWRBdHRyaWJ1dGVzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdGF0aWMgcGFyc2VFcnJvcihlcnI6IEVycm9yIHwgc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBCYXNlRXJyb3Ige1xuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBCYXNlRXJyb3IpIHJldHVybiBlcnIgYXMgYW55O1xuICAgIGxldCBjb2RlOiBzdHJpbmcgPSBcIlwiO1xuICAgIGlmICh0eXBlb2YgZXJyID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBjb2RlID0gZXJyO1xuICAgICAgaWYgKGNvZGUubWF0Y2goL2FscmVhZHkgZXhpc3R8dXBkYXRlIGNvbmZsaWN0L2cpKVxuICAgICAgICByZXR1cm4gbmV3IENvbmZsaWN0RXJyb3IoY29kZSk7XG4gICAgICBpZiAoY29kZS5tYXRjaCgvbWlzc2luZ3xkZWxldGVkL2cpKSByZXR1cm4gbmV3IE5vdEZvdW5kRXJyb3IoY29kZSk7XG4gICAgfSBlbHNlIGlmICgoZXJyIGFzIGFueSkuY29kZSkge1xuICAgICAgY29kZSA9IChlcnIgYXMgYW55KS5jb2RlO1xuICAgICAgcmVhc29uID0gcmVhc29uIHx8IGVyci5tZXNzYWdlO1xuICAgIH0gZWxzZSBpZiAoKGVyciBhcyBhbnkpLnN0YXR1c0NvZGUpIHtcbiAgICAgIGNvZGUgPSAoZXJyIGFzIGFueSkuc3RhdHVzQ29kZTtcbiAgICAgIHJlYXNvbiA9IHJlYXNvbiB8fCBlcnIubWVzc2FnZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29kZSA9IGVyci5tZXNzYWdlO1xuICAgIH1cblxuICAgIHN3aXRjaCAoY29kZS50b1N0cmluZygpKSB7XG4gICAgICBjYXNlIFwiNDAxXCI6XG4gICAgICBjYXNlIFwiNDEyXCI6XG4gICAgICBjYXNlIFwiNDA5XCI6XG4gICAgICAgIHJldHVybiBuZXcgQ29uZmxpY3RFcnJvcihyZWFzb24gYXMgc3RyaW5nKTtcbiAgICAgIGNhc2UgXCI0MDRcIjpcbiAgICAgICAgcmV0dXJuIG5ldyBOb3RGb3VuZEVycm9yKHJlYXNvbiBhcyBzdHJpbmcpO1xuICAgICAgY2FzZSBcIjQwMFwiOlxuICAgICAgICBpZiAoY29kZS50b1N0cmluZygpLm1hdGNoKC9Ob1xcc2luZGV4XFxzZXhpc3RzL2cpKVxuICAgICAgICAgIHJldHVybiBuZXcgSW5kZXhFcnJvcihlcnIpO1xuICAgICAgICByZXR1cm4gbmV3IEludGVybmFsRXJyb3IoZXJyKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChjb2RlLnRvU3RyaW5nKCkubWF0Y2goL0VDT05OUkVGVVNFRC9nKSlcbiAgICAgICAgICByZXR1cm4gbmV3IENvbm5lY3Rpb25FcnJvcihlcnIpO1xuICAgICAgICByZXR1cm4gbmV3IEludGVybmFsRXJyb3IoZXJyKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29ubmVjdChcbiAgICB1c2VyOiBzdHJpbmcsXG4gICAgcGFzczogc3RyaW5nLFxuICAgIGhvc3QgPSBcImxvY2FsaG9zdDo1OTg0XCIsXG4gICAgcHJvdG9jb2w6IFwiaHR0cFwiIHwgXCJodHRwc1wiID0gXCJodHRwXCJcbiAgKTogU2VydmVyU2NvcGUge1xuICAgIHJldHVybiBOYW5vKGAke3Byb3RvY29sfTovLyR7dXNlcn06JHtwYXNzfUAke2hvc3R9YCk7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgY3JlYXRlRGF0YWJhc2UoY29uOiBTZXJ2ZXJTY29wZSwgbmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IHJlc3VsdDogRGF0YWJhc2VDcmVhdGVSZXNwb25zZTtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgY29uLmRiLmNyZWF0ZShuYW1lKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlKTtcbiAgICB9XG4gICAgY29uc3QgeyBvaywgZXJyb3IsIHJlYXNvbiB9ID0gcmVzdWx0O1xuICAgIGlmICghb2spIHRocm93IHRoaXMucGFyc2VFcnJvcihlcnJvciBhcyBzdHJpbmcsIHJlYXNvbik7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZGVsZXRlRGF0YWJhc2UoY29uOiBTZXJ2ZXJTY29wZSwgbmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IHJlc3VsdDtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgY29uLmRiLmRlc3Ryb3kobmFtZSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICAgIGNvbnN0IHsgb2sgfSA9IHJlc3VsdDtcbiAgICBpZiAoIW9rKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEZhaWxlZCB0byBkZWxldGUgZGF0YWJhc2Ugd2l0aCBuYW1lICR7bmFtZX1gKTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBjcmVhdGVVc2VyKFxuICAgIGNvbjogU2VydmVyU2NvcGUsXG4gICAgZGJOYW1lOiBzdHJpbmcsXG4gICAgdXNlcjogc3RyaW5nLFxuICAgIHBhc3M6IHN0cmluZyxcbiAgICByb2xlczogc3RyaW5nW10gPSBbXCJyZWFkZXJcIiwgXCJ3cml0ZXJcIl1cbiAgKSB7XG4gICAgY29uc3QgdXNlcnMgPSBhd2FpdCBjb24uZGIudXNlKFwiX3VzZXJzXCIpO1xuICAgIGNvbnN0IHVzciA9IHtcbiAgICAgIF9pZDogXCJvcmcuY291Y2hkYi51c2VyOlwiICsgdXNlcixcbiAgICAgIG5hbWU6IHVzZXIsXG4gICAgICBwYXNzd29yZDogcGFzcyxcbiAgICAgIHJvbGVzOiByb2xlcyxcbiAgICAgIHR5cGU6IFwidXNlclwiLFxuICAgIH07XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNyZWF0ZWQ6IERvY3VtZW50SW5zZXJ0UmVzcG9uc2UgPSBhd2FpdCB1c2Vycy5pbnNlcnQoXG4gICAgICAgIHVzciBhcyBNYXliZURvY3VtZW50XG4gICAgICApO1xuICAgICAgY29uc3QgeyBvayB9ID0gY3JlYXRlZDtcbiAgICAgIGlmICghb2spIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBGYWlsZWQgdG8gY3JlYXRlIHVzZXIgJHt1c2VyfWApO1xuICAgICAgY29uc3Qgc2VjdXJpdHk6IGFueSA9IGF3YWl0IGNvbi5yZXF1ZXN0KHtcbiAgICAgICAgZGI6IGRiTmFtZSxcbiAgICAgICAgbWV0aG9kOiBcInB1dFwiLFxuICAgICAgICBwYXRoOiBcIl9zZWN1cml0eVwiLFxuICAgICAgICAvLyBoZWFkZXJzOiB7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIH0sXG4gICAgICAgIGJvZHk6IHtcbiAgICAgICAgICBhZG1pbnM6IHtcbiAgICAgICAgICAgIG5hbWVzOiBbdXNlcl0sXG4gICAgICAgICAgICByb2xlczogW10sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtZW1iZXJzOiB7XG4gICAgICAgICAgICBuYW1lczogW3VzZXJdLFxuICAgICAgICAgICAgcm9sZXM6IHJvbGVzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGlmICghc2VjdXJpdHkub2spXG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgIGBGYWlsZWQgdG8gYXV0aG9yaXplIHVzZXIgJHt1c2VyfSB0byBkYiAke2RiTmFtZX1gXG4gICAgICAgICk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGFzeW5jIGRlbGV0ZVVzZXIoY29uOiBTZXJ2ZXJTY29wZSwgZGJOYW1lOiBzdHJpbmcsIHVzZXI6IHN0cmluZykge1xuICAgIGNvbnN0IHVzZXJzID0gYXdhaXQgY29uLmRiLnVzZShcIl91c2Vyc1wiKTtcbiAgICBjb25zdCBpZCA9IFwib3JnLmNvdWNoZGIudXNlcjpcIiArIHVzZXI7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVzciA9IGF3YWl0IHVzZXJzLmdldChpZCk7XG4gICAgICBhd2FpdCB1c2Vycy5kZXN0cm95KGlkLCB1c3IuX3Jldik7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
package/lib/adapter.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Adapter, Sequence, SequenceOptions, Statement, Query, ClauseFactory, Condition } from "@decaf-ts/core";
|
|
2
|
+
import { MangoQuery, DocumentScope, ServerScope } from "nano";
|
|
3
|
+
import { BaseError } from "@decaf-ts/db-decorators";
|
|
4
|
+
import "reflect-metadata";
|
|
5
|
+
import { Constructor, Model } from "@decaf-ts/decorator-validation";
|
|
6
|
+
export declare class CouchDBAdapter extends Adapter<DocumentScope<any>, MangoQuery> {
|
|
7
|
+
private factory?;
|
|
8
|
+
constructor(scope: DocumentScope<any>, flavour: string);
|
|
9
|
+
get Clauses(): ClauseFactory<DocumentScope<any>, MangoQuery>;
|
|
10
|
+
Query<M extends Model>(): Query<MangoQuery, M>;
|
|
11
|
+
get Statement(): Statement<MangoQuery>;
|
|
12
|
+
parseCondition(condition: Condition): MangoQuery;
|
|
13
|
+
Sequence(options: SequenceOptions): Promise<Sequence>;
|
|
14
|
+
initialize(): Promise<void>;
|
|
15
|
+
index<M extends Model>(...models: Constructor<M>[]): Promise<any>;
|
|
16
|
+
user(): Promise<any>;
|
|
17
|
+
raw<V>(rawInput: MangoQuery, process?: boolean): Promise<V>;
|
|
18
|
+
create(tableName: string, id: string | number, model: Record<string, any>): Promise<Record<string, any>>;
|
|
19
|
+
createAll(tableName: string, ids: string[] | number[], models: Record<string, any>[]): Promise<Record<string, any>[]>;
|
|
20
|
+
read(tableName: string, id: string | number): Promise<Record<string, any>>;
|
|
21
|
+
update(tableName: string, id: string | number, model: Record<string, any>): Promise<Record<string, any>>;
|
|
22
|
+
delete(tableName: string, id: string | number): Promise<Record<string, any>>;
|
|
23
|
+
private generateId;
|
|
24
|
+
protected parseError(err: Error | string, reason?: string): BaseError;
|
|
25
|
+
protected isReserved(attr: string): boolean;
|
|
26
|
+
protected static parseError(err: Error | string, reason?: string): BaseError;
|
|
27
|
+
static connect(user: string, pass: string, host?: string, protocol?: "http" | "https"): ServerScope;
|
|
28
|
+
static createDatabase(con: ServerScope, name: string): Promise<void>;
|
|
29
|
+
static deleteDatabase(con: ServerScope, name: string): Promise<void>;
|
|
30
|
+
static createUser(con: ServerScope, dbName: string, user: string, pass: string, roles?: string[]): Promise<void>;
|
|
31
|
+
static deleteUser(con: ServerScope, dbName: string, user: string): Promise<void>;
|
|
32
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CouchDBKeys = exports.reservedAttributes = void 0;
|
|
4
|
+
exports.reservedAttributes = /^_.*$/g;
|
|
5
|
+
exports.CouchDBKeys = {
|
|
6
|
+
SEPARATOR: "_",
|
|
7
|
+
ID: "_id",
|
|
8
|
+
REV: "_rev",
|
|
9
|
+
TABLE: "??table",
|
|
10
|
+
DDOC: "ddoc",
|
|
11
|
+
NATIVE: "__native",
|
|
12
|
+
INDEX: "index",
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxrQkFBa0IsR0FBRyxRQUFRLENBQUM7QUFFOUIsUUFBQSxXQUFXLEdBQUc7SUFDekIsU0FBUyxFQUFFLEdBQUc7SUFDZCxFQUFFLEVBQUUsS0FBSztJQUNULEdBQUcsRUFBRSxNQUFNO0lBQ1gsS0FBSyxFQUFFLFNBQVM7SUFDaEIsSUFBSSxFQUFFLE1BQU07SUFDWixNQUFNLEVBQUUsVUFBVTtJQUNsQixLQUFLLEVBQUUsT0FBTztDQUNmLENBQUMiLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHJlc2VydmVkQXR0cmlidXRlcyA9IC9eXy4qJC9nO1xuXG5leHBvcnQgY29uc3QgQ291Y2hEQktleXMgPSB7XG4gIFNFUEFSQVRPUjogXCJfXCIsXG4gIElEOiBcIl9pZFwiLFxuICBSRVY6IFwiX3JldlwiLFxuICBUQUJMRTogXCI/P3RhYmxlXCIsXG4gIERET0M6IFwiZGRvY1wiLFxuICBOQVRJVkU6IFwiX19uYXRpdmVcIixcbiAgSU5ERVg6IFwiaW5kZXhcIixcbn07XG4iXX0=
|
package/lib/errors.cjs
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IndexError = void 0;
|
|
4
|
+
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
5
|
+
class IndexError extends db_decorators_1.BaseError {
|
|
6
|
+
constructor(msg) {
|
|
7
|
+
super(IndexError.name, msg);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.IndexError = IndexError;
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkRBQW9EO0FBRXBELE1BQWEsVUFBVyxTQUFRLHlCQUFTO0lBQ3ZDLFlBQVksR0FBbUI7UUFDN0IsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUNGO0FBSkQsZ0NBSUMiLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5cbmV4cG9ydCBjbGFzcyBJbmRleEVycm9yIGV4dGVuZHMgQmFzZUVycm9yIHtcbiAgY29uc3RydWN0b3IobXNnOiBzdHJpbmcgfCBFcnJvcikge1xuICAgIHN1cGVyKEluZGV4RXJyb3IubmFtZSwgbXNnKTtcbiAgfVxufVxuIl19
|
package/lib/errors.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Adapter, Sequence, SequenceOptions, Statement, Query, ClauseFactory, Condition } from "@decaf-ts/core";
|
|
2
|
+
import { MangoQuery, DocumentScope, ServerScope } from "nano";
|
|
3
|
+
import { BaseError } from "@decaf-ts/db-decorators";
|
|
4
|
+
import "reflect-metadata";
|
|
5
|
+
import { Constructor, Model } from "@decaf-ts/decorator-validation";
|
|
6
|
+
export declare class CouchDBAdapter extends Adapter<DocumentScope<any>, MangoQuery> {
|
|
7
|
+
private factory?;
|
|
8
|
+
constructor(scope: DocumentScope<any>, flavour: string);
|
|
9
|
+
get Clauses(): ClauseFactory<DocumentScope<any>, MangoQuery>;
|
|
10
|
+
Query<M extends Model>(): Query<MangoQuery, M>;
|
|
11
|
+
get Statement(): Statement<MangoQuery>;
|
|
12
|
+
parseCondition(condition: Condition): MangoQuery;
|
|
13
|
+
Sequence(options: SequenceOptions): Promise<Sequence>;
|
|
14
|
+
initialize(): Promise<void>;
|
|
15
|
+
index<M extends Model>(...models: Constructor<M>[]): Promise<any>;
|
|
16
|
+
user(): Promise<any>;
|
|
17
|
+
raw<V>(rawInput: MangoQuery, process?: boolean): Promise<V>;
|
|
18
|
+
create(tableName: string, id: string | number, model: Record<string, any>): Promise<Record<string, any>>;
|
|
19
|
+
createAll(tableName: string, ids: string[] | number[], models: Record<string, any>[]): Promise<Record<string, any>[]>;
|
|
20
|
+
read(tableName: string, id: string | number): Promise<Record<string, any>>;
|
|
21
|
+
update(tableName: string, id: string | number, model: Record<string, any>): Promise<Record<string, any>>;
|
|
22
|
+
delete(tableName: string, id: string | number): Promise<Record<string, any>>;
|
|
23
|
+
private generateId;
|
|
24
|
+
protected parseError(err: Error | string, reason?: string): BaseError;
|
|
25
|
+
protected isReserved(attr: string): boolean;
|
|
26
|
+
protected static parseError(err: Error | string, reason?: string): BaseError;
|
|
27
|
+
static connect(user: string, pass: string, host?: string, protocol?: "http" | "https"): ServerScope;
|
|
28
|
+
static createDatabase(con: ServerScope, name: string): Promise<void>;
|
|
29
|
+
static deleteDatabase(con: ServerScope, name: string): Promise<void>;
|
|
30
|
+
static createUser(con: ServerScope, dbName: string, user: string, pass: string, roles?: string[]): Promise<void>;
|
|
31
|
+
static deleteUser(con: ServerScope, dbName: string, user: string): Promise<void>;
|
|
32
|
+
}
|