@goatlab/fluent-pouchdb 0.7.10 → 0.7.12

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,604 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PouchDBConnector = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const fluent_1 = require("@goatlab/fluent");
6
+ const js_utils_1 = require("@goatlab/js-utils");
7
+ const pouchdb_1 = tslib_1.__importDefault(require("pouchdb"));
8
+ pouchdb_1.default.plugin(require('pouchdb-find'));
9
+ pouchdb_1.default.plugin(require('pouchdb-adapter-memory'));
10
+ pouchdb_1.default.plugin(require('pouchdb-json'));
11
+ let db = [];
12
+ // Base class for connectors
13
+ class BaseConnector {
14
+ outputKeys = [];
15
+ modelRelations = [];
16
+ isMongoDB = false;
17
+ relationQuery;
18
+ async findFirst(query) {
19
+ const data = await this.findMany({ ...query, limit: 1 });
20
+ return data[0] || null;
21
+ }
22
+ async requireById(id, q) {
23
+ const found = await this.findByIds([id], {
24
+ select: q?.select,
25
+ include: q?.include,
26
+ limit: 1
27
+ });
28
+ if (!found[0]) {
29
+ throw new Error(`Object ${id} not found`);
30
+ }
31
+ return found[0];
32
+ }
33
+ async requireFirst(query) {
34
+ const found = await this.findFirst(query);
35
+ if (!found) {
36
+ throw new Error('Object not found');
37
+ }
38
+ return found;
39
+ }
40
+ async findByIds(ids, q) {
41
+ return this.findMany({
42
+ where: { id: { in: ids } },
43
+ select: q?.select,
44
+ include: q?.include,
45
+ limit: q?.limit
46
+ });
47
+ }
48
+ setRelatedQuery(query) {
49
+ this.relationQuery = query;
50
+ }
51
+ }
52
+ class PouchDBConnector extends BaseConnector {
53
+ dataSource;
54
+ inputSchema;
55
+ outputSchema;
56
+ entity;
57
+ constructor({ entity, dataSource, inputSchema, outputSchema }) {
58
+ super();
59
+ this.dataSource = dataSource;
60
+ this.inputSchema = inputSchema;
61
+ this.outputSchema =
62
+ outputSchema || inputSchema;
63
+ this.entity = entity;
64
+ const relationShipBuilder = fluent_1.modelGeneratorDataSource.getRepository(entity);
65
+ const { relations } = (0, fluent_1.getRelationsFromModelGenerator)(relationShipBuilder);
66
+ this.modelRelations = Object.values(relations || {});
67
+ this.outputKeys = (0, fluent_1.getOutputKeys)(relationShipBuilder) || [];
68
+ }
69
+ /**
70
+ *
71
+ * @param data
72
+ */
73
+ async insert(data) {
74
+ // Validate Input
75
+ const validatedData = this.inputSchema.parse(data);
76
+ // Add created date if needed
77
+ const dataToInsert = { ...validatedData };
78
+ if (this.outputKeys.includes('created') && !dataToInsert.created) {
79
+ dataToInsert.created = new Date();
80
+ }
81
+ let response;
82
+ if (dataToInsert.id) {
83
+ // If id is provided, use put with explicit _id
84
+ const docData = { ...dataToInsert };
85
+ docData._id = docData.id;
86
+ delete docData.id;
87
+ response = await this.dataSource.put(docData);
88
+ }
89
+ else {
90
+ // If no id, use post to auto-generate
91
+ response = await this.dataSource.post(dataToInsert);
92
+ }
93
+ let datum = await this.dataSource.get(response.id);
94
+ datum['id'] = datum['_id'];
95
+ // Handle date fields
96
+ if (datum['created'] && typeof datum['created'] === 'string') {
97
+ datum['created'] = new Date(datum['created']);
98
+ }
99
+ if (datum['updated'] && typeof datum['updated'] === 'string') {
100
+ datum['updated'] = new Date(datum['updated']);
101
+ }
102
+ // Validate Output
103
+ return this.outputSchema.parse(js_utils_1.Objects.clearEmpties(js_utils_1.Objects.deleteNulls(datum)));
104
+ }
105
+ /**
106
+ *
107
+ * @param data
108
+ */
109
+ async insertMany(data) {
110
+ const validatedData = this.inputSchema.array().parse(data);
111
+ // Add created date if needed
112
+ const dataToInsert = validatedData.map((item) => {
113
+ const doc = { ...item };
114
+ if (this.outputKeys.includes('created') && !doc.created) {
115
+ doc.created = new Date();
116
+ }
117
+ return doc;
118
+ });
119
+ const inserted = await this.dataSource.bulkDocs(dataToInsert);
120
+ const insertedOK = inserted.map((i) => {
121
+ if (i.id) {
122
+ return i;
123
+ }
124
+ }).filter(Boolean);
125
+ const elements = await this.dataSource.bulkGet({
126
+ docs: insertedOK
127
+ });
128
+ const res = elements.results.map(r => {
129
+ if (r.id && r.docs?.[0] && r.docs[0]['ok']) {
130
+ const doc = { ...r.docs[0]['ok'], id: r.id };
131
+ // Handle date fields
132
+ if (doc['created'] && typeof doc['created'] === 'string') {
133
+ doc['created'] = new Date(doc['created']);
134
+ }
135
+ if (doc['updated'] && typeof doc['updated'] === 'string') {
136
+ doc['updated'] = new Date(doc['updated']);
137
+ }
138
+ return js_utils_1.Objects.clearEmpties(js_utils_1.Objects.deleteNulls(doc));
139
+ }
140
+ }).filter(Boolean);
141
+ return this.outputSchema.array().parse(res);
142
+ }
143
+ /**
144
+ * PATCH operation
145
+ * @param data
146
+ */
147
+ async updateById(id, data) {
148
+ // Get existing document
149
+ const existing = await this.dataSource.get(id);
150
+ const existingRev = existing._rev;
151
+ existing['id'] = existing['_id'];
152
+ if ('_id' in existing)
153
+ delete existing['_id'];
154
+ if ('_rev' in existing)
155
+ delete existing['_rev'];
156
+ // Merge with new data
157
+ const merged = {
158
+ ...existing,
159
+ ...data
160
+ };
161
+ if (this.outputKeys.includes('updated')) {
162
+ merged['updated'] = new Date();
163
+ }
164
+ // Convert date strings to Date objects for existing data
165
+ if (merged['created'] && typeof merged['created'] === 'string') {
166
+ merged['created'] = new Date(merged['created']);
167
+ }
168
+ if (merged['updated'] && typeof merged['updated'] === 'string') {
169
+ merged['updated'] = new Date(merged['updated']);
170
+ }
171
+ // Validate merged data with partial schema
172
+ const validatedData = this.inputSchema.partial().parse(merged);
173
+ const updateResults = await this.dataSource.put({
174
+ ...validatedData,
175
+ _id: id,
176
+ _rev: existingRev
177
+ }, { force: true });
178
+ if (!updateResults.ok) {
179
+ throw new Error('Could not update');
180
+ }
181
+ const dbResult = await this.dataSource.get(id);
182
+ dbResult['id'] = dbResult['_id'];
183
+ // Convert date strings to Date objects
184
+ if (dbResult['created'] && typeof dbResult['created'] === 'string') {
185
+ dbResult['created'] = new Date(dbResult['created']);
186
+ }
187
+ if (dbResult['updated'] && typeof dbResult['updated'] === 'string') {
188
+ dbResult['updated'] = new Date(dbResult['updated']);
189
+ }
190
+ // Validate Output
191
+ return this.outputSchema?.parse(js_utils_1.Objects.clearEmpties(js_utils_1.Objects.deleteNulls(dbResult)));
192
+ }
193
+ /**
194
+ *
195
+ * PUT operation. All fields not included in the data
196
+ * param will be set to null
197
+ *
198
+ * @param id
199
+ * @param data
200
+ */
201
+ async replaceById(id, data) {
202
+ const existing = await this.dataSource.get(id);
203
+ const existingId = existing._id;
204
+ const existingRev = existing._rev;
205
+ const existingCreated = existing.created;
206
+ // For replace, we start with only the provided data
207
+ const newData = {
208
+ ...data
209
+ };
210
+ // Preserve system fields
211
+ if (existingCreated) {
212
+ newData.created = existingCreated;
213
+ }
214
+ if (this.outputKeys.includes('updated')) {
215
+ newData['updated'] = new Date();
216
+ }
217
+ // Don't validate against full schema since replace allows partial data
218
+ const validatedData = newData;
219
+ const updateResults = await this.dataSource.put({
220
+ ...validatedData,
221
+ _id: existingId,
222
+ _rev: existingRev
223
+ }, { force: true });
224
+ if (!updateResults.ok) {
225
+ throw new Error('Could not Replace');
226
+ }
227
+ const val = await this.dataSource.get(existingId);
228
+ val['id'] = val['_id'].toString();
229
+ // Convert date strings to Date objects
230
+ if (val['created'] && typeof val['created'] === 'string') {
231
+ val['created'] = new Date(val['created']);
232
+ }
233
+ if (val['updated'] && typeof val['updated'] === 'string') {
234
+ val['updated'] = new Date(val['updated']);
235
+ }
236
+ // For replace, use partial schema since not all fields may be present
237
+ return this.outputSchema.partial().parse(js_utils_1.Objects.clearEmpties(js_utils_1.Objects.deleteNulls(val)));
238
+ }
239
+ // TODO: apply types to the DB?
240
+ /**
241
+ *
242
+ * Returns the PouchDB Database, you can use it
243
+ * form more complex queries
244
+ *
245
+ * @param query
246
+ */
247
+ raw() {
248
+ return this.dataSource;
249
+ }
250
+ async findMany(query) {
251
+ const pouchQuery = this.getPouchDBWhere(query?.where);
252
+ // Note: PouchDB requires indexes for sorting, so we'll sort in memory instead
253
+ const needsSort = query?.orderBy && query.orderBy.length > 0;
254
+ // If we need to sort, we can't use PouchDB's limit/skip because they apply before sorting
255
+ // So we'll fetch all results and apply limit/offset after sorting
256
+ if (!needsSort) {
257
+ // Add limit and skip only if we don't need to sort
258
+ if (query?.limit) {
259
+ pouchQuery.limit = query.limit;
260
+ }
261
+ if (query?.offset) {
262
+ pouchQuery.skip = query.offset;
263
+ }
264
+ }
265
+ const response = await this.dataSource.find(pouchQuery);
266
+ const found = response.docs;
267
+ // Process documents
268
+ let processed = found.map(d => {
269
+ const doc = { ...d };
270
+ doc['id'] = doc['_id'];
271
+ if ('_id' in doc)
272
+ delete doc['_id'];
273
+ if ('_rev' in doc)
274
+ delete doc['_rev'];
275
+ // Handle date fields
276
+ if (doc['created'] && typeof doc['created'] === 'string') {
277
+ doc['created'] = new Date(doc['created']);
278
+ }
279
+ if (doc['updated'] && typeof doc['updated'] === 'string') {
280
+ doc['updated'] = new Date(doc['updated']);
281
+ }
282
+ return js_utils_1.Objects.clearEmpties(js_utils_1.Objects.deleteNulls(doc));
283
+ });
284
+ // Apply in-memory sorting if needed
285
+ if (needsSort && query?.orderBy) {
286
+ processed = processed.sort((a, b) => {
287
+ for (const order of query.orderBy) {
288
+ const entries = Object.entries(order);
289
+ if (!entries[0])
290
+ continue;
291
+ const [field, direction] = entries[0];
292
+ const aVal = a[field];
293
+ const bVal = b[field];
294
+ if (aVal === bVal)
295
+ continue;
296
+ const result = aVal < bVal ? -1 : 1;
297
+ return direction === 'asc' ? result : -result;
298
+ }
299
+ return 0;
300
+ });
301
+ // Apply offset and limit after sorting
302
+ if (query?.offset) {
303
+ processed = processed.slice(query.offset);
304
+ }
305
+ if (query?.limit) {
306
+ processed = processed.slice(0, query.limit);
307
+ }
308
+ }
309
+ if (query?.paginated) {
310
+ const paginationInfo = {
311
+ total: 0,
312
+ perPage: query.paginated.perPage,
313
+ currentPage: query.paginated.page,
314
+ nextPage: query.paginated.page + 1,
315
+ firstPage: 1,
316
+ lastPage: Math.ceil(0 / query.paginated.perPage),
317
+ prevPage: query.paginated.page === 1 ? null : query.paginated.page - 1,
318
+ from: (query.paginated.page - 1) * query.paginated.perPage + 1,
319
+ to: query.paginated.perPage * query.paginated.page,
320
+ data: processed
321
+ };
322
+ return paginationInfo;
323
+ }
324
+ if (query?.select) {
325
+ // Apply field selection
326
+ const selectedFields = Object.keys(query.select).filter(key => query.select[key]);
327
+ const selected = processed.map(doc => {
328
+ const selectedDoc = { id: doc.id };
329
+ selectedFields.forEach(field => {
330
+ if (field in doc) {
331
+ selectedDoc[field] = doc[field];
332
+ }
333
+ });
334
+ return selectedDoc;
335
+ });
336
+ return selected;
337
+ }
338
+ // Validate Output against schema
339
+ // Use partial validation since documents may have been created with replaceById
340
+ return this.outputSchema?.partial().array().parse(processed);
341
+ }
342
+ getPouchDBWhere(where) {
343
+ /*
344
+
345
+ if (this.relationQuery && this.relationQuery.data) {
346
+ const ids = this.relationQuery.data.map(
347
+ d => Ids.objectID(d.id) as unknown as ObjectID
348
+ )
349
+
350
+ andFilters.push([
351
+ this.relationQuery.relation.inverseSidePropertyPath,
352
+ 'in',
353
+ ids
354
+ ])
355
+ }
356
+
357
+ if (!andFilters || andFilters.length === 0) {
358
+ return filters
359
+ }
360
+ */
361
+ if (!where || Object.keys(where).length === 0) {
362
+ return {
363
+ selector: {}
364
+ };
365
+ }
366
+ const Filters = {
367
+ where: { $or: [{ $and: [] }] }
368
+ };
369
+ const orConditions = (0, fluent_1.extractConditions)(where['OR']);
370
+ const andConditions = (0, fluent_1.extractConditions)(where['AND']);
371
+ const copy = js_utils_1.Objects.clone(where);
372
+ if (!!copy['AND']) {
373
+ delete copy['AND'];
374
+ }
375
+ if (!!copy['OR']) {
376
+ delete copy['OR'];
377
+ }
378
+ const rootLevelConditions = (0, fluent_1.extractConditions)([copy]);
379
+ for (const condition of andConditions) {
380
+ let { element, operator, value } = condition;
381
+ if (element === 'id') {
382
+ element = '_id';
383
+ /*
384
+ value = (Array.isArray(value)
385
+ ? value.map(v => Ids.objectID(v) as unknown as ObjectID)
386
+ : (Ids.objectID(value) as unknown as ObjectID) as unknown as PrimitivesArray | Primitives)
387
+ */
388
+ }
389
+ switch (operator) {
390
+ case fluent_1.LogicOperator.equals:
391
+ Filters.where.$or[0].$and.push({ [element]: { $eq: value } });
392
+ break;
393
+ case fluent_1.LogicOperator.isNot:
394
+ Filters.where.$or[0].$and.push({ [element]: { $neq: value } });
395
+ break;
396
+ case fluent_1.LogicOperator.greaterThan:
397
+ Filters.where.$or[0].$and.push({ [element]: { $gt: value } });
398
+ break;
399
+ case fluent_1.LogicOperator.greaterOrEqualThan:
400
+ Filters.where.$or[0].$and.push({ [element]: { $gte: value } });
401
+ break;
402
+ case fluent_1.LogicOperator.lessThan:
403
+ Filters.where.$or[0].$and.push({ [element]: { $lt: value } });
404
+ break;
405
+ case fluent_1.LogicOperator.lessOrEqualThan:
406
+ Filters.where.$or[0].$and.push({ [element]: { $lte: value } });
407
+ break;
408
+ case fluent_1.LogicOperator.in:
409
+ Filters.where.$or[0].$and.push({ [element]: { $in: value } });
410
+ break;
411
+ case fluent_1.LogicOperator.notIn:
412
+ Filters.where.$or[0].$and.push({
413
+ [element]: { $not: { $in: value } }
414
+ });
415
+ break;
416
+ case fluent_1.LogicOperator.exists:
417
+ Filters.where.$or[0].$and.push({ [element]: { $exists: true } });
418
+ break;
419
+ case fluent_1.LogicOperator.notExists:
420
+ Filters.where.$or[0].$and.push({ [element]: { $exists: false } });
421
+ break;
422
+ case fluent_1.LogicOperator.regexp:
423
+ Filters.where.$or[0].$and.push({ [element]: { $regex: value } });
424
+ break;
425
+ }
426
+ }
427
+ for (const condition of rootLevelConditions) {
428
+ let { element, operator, value } = condition;
429
+ if (element === 'id') {
430
+ element = '_id';
431
+ /*
432
+ value = (Array.isArray(value)
433
+ ? value.map(v => Ids.objectID(v) as unknown as ObjectID)
434
+ : (Ids.objectID(value) as unknown as ObjectID) as unknown as PrimitivesArray | Primitives)
435
+ */
436
+ }
437
+ switch (operator) {
438
+ case fluent_1.LogicOperator.equals:
439
+ Filters.where.$or[0].$and.push({ [element]: { $eq: value } });
440
+ break;
441
+ case fluent_1.LogicOperator.isNot:
442
+ Filters.where.$or[0].$and.push({ [element]: { $neq: value } });
443
+ break;
444
+ case fluent_1.LogicOperator.greaterThan:
445
+ Filters.where.$or[0].$and.push({ [element]: { $gt: value } });
446
+ break;
447
+ case fluent_1.LogicOperator.greaterOrEqualThan:
448
+ Filters.where.$or[0].$and.push({ [element]: { $gte: value } });
449
+ break;
450
+ case fluent_1.LogicOperator.lessThan:
451
+ Filters.where.$or[0].$and.push({ [element]: { $lt: value } });
452
+ break;
453
+ case fluent_1.LogicOperator.lessOrEqualThan:
454
+ Filters.where.$or[0].$and.push({ [element]: { $lte: value } });
455
+ break;
456
+ case fluent_1.LogicOperator.in:
457
+ Filters.where.$or[0].$and.push({ [element]: { $in: value } });
458
+ break;
459
+ case fluent_1.LogicOperator.notIn:
460
+ Filters.where.$or[0].$and.push({
461
+ [element]: { $not: { $in: value } }
462
+ });
463
+ break;
464
+ case fluent_1.LogicOperator.exists:
465
+ Filters.where.$or[0].$and.push({ [element]: { $exists: true } });
466
+ break;
467
+ case fluent_1.LogicOperator.notExists:
468
+ Filters.where.$or[0].$and.push({ [element]: { $exists: false } });
469
+ break;
470
+ case fluent_1.LogicOperator.regexp:
471
+ Filters.where.$or[0].$and.push({ [element]: { $regex: value } });
472
+ break;
473
+ }
474
+ }
475
+ for (const condition of orConditions) {
476
+ let { element, operator, value } = condition;
477
+ switch (operator) {
478
+ case fluent_1.LogicOperator.equals:
479
+ Filters.where.$or.push({ [element]: { $eq: value } });
480
+ break;
481
+ case fluent_1.LogicOperator.isNot:
482
+ Filters.where.$or.push({ [element]: { $neq: value } });
483
+ break;
484
+ case fluent_1.LogicOperator.greaterThan:
485
+ Filters.where.$or.push({ [element]: { $gt: value } });
486
+ break;
487
+ case fluent_1.LogicOperator.greaterOrEqualThan:
488
+ Filters.where.$or.push({ [element]: { $gte: value } });
489
+ break;
490
+ case fluent_1.LogicOperator.lessThan:
491
+ Filters.where.$or.push({ [element]: { $lt: value } });
492
+ break;
493
+ case fluent_1.LogicOperator.lessOrEqualThan:
494
+ Filters.where.$or.push({ [element]: { $lte: value } });
495
+ break;
496
+ case fluent_1.LogicOperator.in:
497
+ Filters.where.$or.push({ [element]: { $in: value } });
498
+ break;
499
+ case fluent_1.LogicOperator.notIn:
500
+ Filters.where.$or.push({
501
+ [element]: { $not: { $in: value } }
502
+ });
503
+ break;
504
+ case fluent_1.LogicOperator.exists:
505
+ Filters.where.$or.push({ [element]: { $exists: true } });
506
+ break;
507
+ case fluent_1.LogicOperator.notExists:
508
+ Filters.where.$or.push({ [element]: { $exists: false } });
509
+ break;
510
+ case fluent_1.LogicOperator.regexp:
511
+ Filters.where.$or.push({ [element]: { $regex: value } });
512
+ break;
513
+ }
514
+ }
515
+ return js_utils_1.Objects.clearEmpties({ selector: Filters.where });
516
+ }
517
+ /**
518
+ *
519
+ * @param id
520
+ */
521
+ async deleteById(id) {
522
+ try {
523
+ const doc = await this.dataSource.get(id);
524
+ await this.dataSource.remove(doc);
525
+ return id;
526
+ }
527
+ catch (error) {
528
+ if (error.status === 404) {
529
+ throw new Error(`The element with id ${id} was not found`);
530
+ }
531
+ throw error;
532
+ }
533
+ }
534
+ loadFirst(query) {
535
+ // Create a clone of the original class
536
+ // to avoid polluting attributes (relatedQuery)
537
+ const detachedClass = Object.assign(Object.create(Object.getPrototypeOf(this)), this);
538
+ detachedClass.setRelatedQuery({
539
+ entity: this.entity,
540
+ repository: this,
541
+ query
542
+ });
543
+ return detachedClass;
544
+ }
545
+ loadById(id) {
546
+ // Create a new instance to avoid polluting the original one
547
+ const newInstance = this.clone();
548
+ newInstance.setRelatedQuery({
549
+ entity: this.entity,
550
+ repository: this,
551
+ query: {
552
+ where: {
553
+ id
554
+ }
555
+ }
556
+ });
557
+ return newInstance;
558
+ }
559
+ clone() {
560
+ return new this.constructor();
561
+ }
562
+ async findById(id, q) {
563
+ const results = await this.findByIds([id], q);
564
+ return results[0] || null;
565
+ }
566
+ async findByIds(ids, q) {
567
+ // Call parent implementation
568
+ const results = await super.findByIds(ids, q);
569
+ // Sort results to match the order of input IDs
570
+ const orderedResults = [];
571
+ for (const id of ids) {
572
+ const found = results.find(r => r.id === id);
573
+ if (found) {
574
+ orderedResults.push(found);
575
+ }
576
+ }
577
+ return orderedResults;
578
+ }
579
+ async pluck(path, query) {
580
+ const allDocs = await this.findMany(query);
581
+ // If path is a string, pluck that field
582
+ if (typeof path === 'string') {
583
+ return allDocs.map(doc => doc[path]).filter(val => val !== undefined);
584
+ }
585
+ // Otherwise return empty array
586
+ return [];
587
+ }
588
+ async clear() {
589
+ try {
590
+ // Get all documents first
591
+ const allDocs = await this.dataSource.allDocs();
592
+ // Delete all documents
593
+ const deletePromises = allDocs.rows.map(row => this.dataSource.remove(row.id, row.value.rev));
594
+ await Promise.all(deletePromises);
595
+ return true;
596
+ }
597
+ catch (error) {
598
+ console.error('Error clearing database:', error);
599
+ return false;
600
+ }
601
+ }
602
+ }
603
+ exports.PouchDBConnector = PouchDBConnector;
604
+ //# sourceMappingURL=PouchDBConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PouchDBConnector.js","sourceRoot":"","sources":["../src/PouchDBConnector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { PouchDBConnector } from './PouchDBConnector';
2
+ import PouchDB from 'pouchdb';
3
+ export { PouchDBConnector, PouchDB };
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PouchDB = exports.PouchDBConnector = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const PouchDBConnector_1 = require("./PouchDBConnector");
6
+ Object.defineProperty(exports, "PouchDBConnector", { enumerable: true, get: function () { return PouchDBConnector_1.PouchDBConnector; } });
7
+ const pouchdb_1 = tslib_1.__importDefault(require("pouchdb"));
8
+ exports.PouchDB = pouchdb_1.default;
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,yDAAqD;AAG5C,iGAHA,mCAAgB,OAGA;AAFzB,8DAA6B;AAEF,kBAFpB,iBAAO,CAEoB"}