@xylabs/mongo 4.12.43 → 4.13.0
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/dist/browser/index.d.ts +60 -0
- package/dist/browser/index.mjs +2 -2
- package/dist/browser/index.mjs.map +1 -1
- package/dist/neutral/index.d.ts +60 -0
- package/dist/neutral/index.mjs +2 -2
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/node/index.d.ts +60 -0
- package/dist/node/index.mjs +2 -2
- package/dist/node/index.mjs.map +1 -1
- package/package.json +8 -8
- package/src/Base.ts +2 -2
- package/dist/types/Base.d.ts +0 -19
- package/dist/types/Base.d.ts.map +0 -1
- package/dist/types/Config.d.ts +0 -14
- package/dist/types/Config.d.ts.map +0 -1
- package/dist/types/Wrapper.d.ts +0 -11
- package/dist/types/Wrapper.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -4
- package/dist/types/index.d.ts.map +0 -1
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { BulkWriteOptions } from 'mongodb';
|
|
2
|
+
import type { Collection } from 'mongodb';
|
|
3
|
+
import type { DeleteResult } from 'mongodb';
|
|
4
|
+
import type { Document } from 'mongodb';
|
|
5
|
+
import type { Filter } from 'mongodb';
|
|
6
|
+
import type { FindCursor } from 'mongodb';
|
|
7
|
+
import { InsertManyResult } from 'mongodb';
|
|
8
|
+
import type { InsertOneOptions } from 'mongodb';
|
|
9
|
+
import { InsertOneResult } from 'mongodb';
|
|
10
|
+
import { MongoClient } from 'mongodb';
|
|
11
|
+
import type { OptionalUnlessRequiredId } from 'mongodb';
|
|
12
|
+
import type { ReplaceOptions } from 'mongodb';
|
|
13
|
+
import type { UpdateFilter } from 'mongodb';
|
|
14
|
+
import { UpdateResult } from 'mongodb';
|
|
15
|
+
import type { WithId } from 'mongodb';
|
|
16
|
+
|
|
17
|
+
export declare class BaseMongoSdk<T extends Document> {
|
|
18
|
+
config: BaseMongoSdkConfig;
|
|
19
|
+
constructor(config: BaseMongoSdkConfig);
|
|
20
|
+
get uri(): string;
|
|
21
|
+
deleteMany(filter: Filter<T>): Promise<DeleteResult>;
|
|
22
|
+
deleteOne(filter: Filter<T>): Promise<DeleteResult>;
|
|
23
|
+
find(filter: Filter<T>): Promise<FindCursor<WithId<T>>>;
|
|
24
|
+
findOne(filter: Filter<T>): Promise<WithId<T> | null>;
|
|
25
|
+
insertMany(items: OptionalUnlessRequiredId<T>[], options?: BulkWriteOptions): Promise<InsertManyResult<T>>;
|
|
26
|
+
insertOne(item: OptionalUnlessRequiredId<T>, options?: InsertOneOptions): Promise<InsertOneResult<T>>;
|
|
27
|
+
replaceOne(filter: Filter<T>, item: OptionalUnlessRequiredId<T>, options?: ReplaceOptions): Promise<UpdateResult<T>>;
|
|
28
|
+
updateOne(filter: Filter<T>, fields: UpdateFilter<T>): Promise<UpdateResult<T>>;
|
|
29
|
+
upsertOne(filter: Filter<T>, fields: UpdateFilter<T>): Promise<UpdateResult<T>>;
|
|
30
|
+
useCollection<R>(func: (collection: Collection<T>) => Promise<R> | R): Promise<R>;
|
|
31
|
+
useMongo<R>(func: (client: MongoClient) => Promise<R> | R): Promise<R>;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export declare type BaseMongoSdkConfig = BaseMongoSdkPublicConfig & BaseMongoSdkPrivateConfig;
|
|
35
|
+
|
|
36
|
+
export declare interface BaseMongoSdkPrivateConfig {
|
|
37
|
+
dbConnectionString?: string;
|
|
38
|
+
dbDomain?: string;
|
|
39
|
+
dbName?: string;
|
|
40
|
+
dbPassword?: string;
|
|
41
|
+
dbUserName?: string;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export declare interface BaseMongoSdkPublicConfig {
|
|
45
|
+
closeDelay?: number;
|
|
46
|
+
collection: string;
|
|
47
|
+
maxPoolSize?: number;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export declare class MongoClientWrapper {
|
|
51
|
+
static readonly clients: Map<string, MongoClientWrapper>;
|
|
52
|
+
private client;
|
|
53
|
+
constructor(uri: string, maxPoolSize?: number, closeDelay?: number);
|
|
54
|
+
static get(uri: string, poolSize?: number, closeDelay?: number): MongoClientWrapper;
|
|
55
|
+
connect(): Promise<MongoClient>;
|
|
56
|
+
disconnect(): Promise<number>;
|
|
57
|
+
initiateClose(): Promise<void>;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export { }
|
package/dist/browser/index.mjs
CHANGED
|
@@ -68,9 +68,9 @@ var BaseMongoSdk = class {
|
|
|
68
68
|
return await collection.insertOne(item, options);
|
|
69
69
|
});
|
|
70
70
|
}
|
|
71
|
-
async replaceOne(item, options) {
|
|
71
|
+
async replaceOne(filter, item, options) {
|
|
72
72
|
return await this.useCollection(async (collection) => {
|
|
73
|
-
return await collection.replaceOne(
|
|
73
|
+
return await collection.replaceOne(filter, item, options);
|
|
74
74
|
});
|
|
75
75
|
}
|
|
76
76
|
async updateOne(filter, fields) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Base.ts","../../src/Wrapper.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport type {\n BulkWriteOptions,\n Collection,\n DeleteResult,\n Document,\n Filter,\n FindCursor,\n InsertOneOptions,\n MongoClient,\n OptionalUnlessRequiredId,\n ReplaceOptions,\n UpdateFilter,\n WithId,\n} from 'mongodb'\n\nimport type { BaseMongoSdkConfig } from './Config.js'\nimport { MongoClientWrapper } from './Wrapper.js'\n\nexport class BaseMongoSdk<T extends Document> {\n config: BaseMongoSdkConfig\n\n constructor(config: BaseMongoSdkConfig) {\n this.config = config\n }\n\n get uri() {\n return (\n this.config.dbConnectionString\n // eslint-disable-next-line @stylistic/max-len\n ?? `mongodb+srv://${this.config.dbUserName}:${this.config.dbPassword}@${this.config.dbDomain}.mongodb.net/${this.config.dbName}?retryWrites=true&w=majority`\n )\n }\n\n async deleteMany(filter: Filter<T>) {\n return await this.useCollection<DeleteResult>(async (collection: Collection<T>) => {\n return await collection.deleteMany(filter)\n })\n }\n\n async deleteOne(filter: Filter<T>) {\n return await this.useCollection<DeleteResult>(async (collection: Collection<T>) => {\n return await collection.deleteOne(filter)\n })\n }\n\n async find(filter: Filter<T>) {\n return await this.useCollection<FindCursor<WithId<T>>>((collection: Collection<T>) => {\n return collection.find(filter)\n })\n }\n\n async findOne(filter: Filter<T>) {\n return await this.useCollection<WithId<T> | null>(async (collection: Collection<T>) => {\n return await collection.findOne(filter)\n })\n }\n\n async insertMany(items: OptionalUnlessRequiredId<T>[], options?: BulkWriteOptions) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.insertMany(items, options)\n })\n }\n\n async insertOne(item: OptionalUnlessRequiredId<T>, options?: InsertOneOptions) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.insertOne(item, options)\n })\n }\n\n async replaceOne(item: OptionalUnlessRequiredId<T>, options?: ReplaceOptions) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.replaceOne(
|
|
1
|
+
{"version":3,"sources":["../../src/Base.ts","../../src/Wrapper.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport type {\n BulkWriteOptions,\n Collection,\n DeleteResult,\n Document,\n Filter,\n FindCursor,\n InsertOneOptions,\n MongoClient,\n OptionalUnlessRequiredId,\n ReplaceOptions,\n UpdateFilter,\n WithId,\n} from 'mongodb'\n\nimport type { BaseMongoSdkConfig } from './Config.js'\nimport { MongoClientWrapper } from './Wrapper.js'\n\nexport class BaseMongoSdk<T extends Document> {\n config: BaseMongoSdkConfig\n\n constructor(config: BaseMongoSdkConfig) {\n this.config = config\n }\n\n get uri() {\n return (\n this.config.dbConnectionString\n // eslint-disable-next-line @stylistic/max-len\n ?? `mongodb+srv://${this.config.dbUserName}:${this.config.dbPassword}@${this.config.dbDomain}.mongodb.net/${this.config.dbName}?retryWrites=true&w=majority`\n )\n }\n\n async deleteMany(filter: Filter<T>) {\n return await this.useCollection<DeleteResult>(async (collection: Collection<T>) => {\n return await collection.deleteMany(filter)\n })\n }\n\n async deleteOne(filter: Filter<T>) {\n return await this.useCollection<DeleteResult>(async (collection: Collection<T>) => {\n return await collection.deleteOne(filter)\n })\n }\n\n async find(filter: Filter<T>) {\n return await this.useCollection<FindCursor<WithId<T>>>((collection: Collection<T>) => {\n return collection.find(filter)\n })\n }\n\n async findOne(filter: Filter<T>) {\n return await this.useCollection<WithId<T> | null>(async (collection: Collection<T>) => {\n return await collection.findOne(filter)\n })\n }\n\n async insertMany(items: OptionalUnlessRequiredId<T>[], options?: BulkWriteOptions) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.insertMany(items, options)\n })\n }\n\n async insertOne(item: OptionalUnlessRequiredId<T>, options?: InsertOneOptions) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.insertOne(item, options)\n })\n }\n\n async replaceOne(filter: Filter<T>, item: OptionalUnlessRequiredId<T>, options?: ReplaceOptions) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.replaceOne(filter, item, options)\n })\n }\n\n async updateOne(filter: Filter<T>, fields: UpdateFilter<T>) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.updateOne(filter, fields, { upsert: false })\n })\n }\n\n async upsertOne(filter: Filter<T>, fields: UpdateFilter<T>) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.updateOne(filter, fields, { upsert: true })\n })\n }\n\n async useCollection<R>(func: (collection: Collection<T>) => Promise<R> | R) {\n return await this.useMongo<R>(async (client: MongoClient) => {\n return await func(client.db(this.config.dbName).collection<T>(this.config.collection))\n })\n }\n\n async useMongo<R>(func: (client: MongoClient) => Promise<R> | R) {\n const wrapper = MongoClientWrapper.get(this.uri, this.config.maxPoolSize, this.config.closeDelay)\n const connection = await wrapper.connect()\n assertEx(connection, () => 'Connection failed')\n try {\n return await func(connection)\n } finally {\n await wrapper.disconnect()\n }\n }\n}\n","import type { MongoClientOptions } from 'mongodb'\nimport { MongoClient } from 'mongodb'\n\nexport class MongoClientWrapper {\n static readonly clients = new Map<string, MongoClientWrapper>()\n\n private client: MongoClient\n\n constructor(uri: string, maxPoolSize?: number, closeDelay?: number) {\n const options: MongoClientOptions = { maxPoolSize, maxIdleTimeMS: closeDelay }\n this.client = new MongoClient(uri, options)\n }\n\n static get(uri: string, poolSize?: number, closeDelay?: number) {\n let client = this.clients.get(uri)\n if (!client) {\n client = new MongoClientWrapper(uri, poolSize, closeDelay)\n this.clients.set(uri, client)\n }\n return client\n }\n\n async connect() {\n return await Promise.resolve(this.client)\n }\n\n async disconnect() {\n return await Promise.resolve(0)\n }\n\n async initiateClose() {\n await Promise.resolve()\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { BulkWriteOptions } from 'mongodb';
|
|
2
|
+
import type { Collection } from 'mongodb';
|
|
3
|
+
import type { DeleteResult } from 'mongodb';
|
|
4
|
+
import type { Document } from 'mongodb';
|
|
5
|
+
import type { Filter } from 'mongodb';
|
|
6
|
+
import type { FindCursor } from 'mongodb';
|
|
7
|
+
import { InsertManyResult } from 'mongodb';
|
|
8
|
+
import type { InsertOneOptions } from 'mongodb';
|
|
9
|
+
import { InsertOneResult } from 'mongodb';
|
|
10
|
+
import { MongoClient } from 'mongodb';
|
|
11
|
+
import type { OptionalUnlessRequiredId } from 'mongodb';
|
|
12
|
+
import type { ReplaceOptions } from 'mongodb';
|
|
13
|
+
import type { UpdateFilter } from 'mongodb';
|
|
14
|
+
import { UpdateResult } from 'mongodb';
|
|
15
|
+
import type { WithId } from 'mongodb';
|
|
16
|
+
|
|
17
|
+
export declare class BaseMongoSdk<T extends Document> {
|
|
18
|
+
config: BaseMongoSdkConfig;
|
|
19
|
+
constructor(config: BaseMongoSdkConfig);
|
|
20
|
+
get uri(): string;
|
|
21
|
+
deleteMany(filter: Filter<T>): Promise<DeleteResult>;
|
|
22
|
+
deleteOne(filter: Filter<T>): Promise<DeleteResult>;
|
|
23
|
+
find(filter: Filter<T>): Promise<FindCursor<WithId<T>>>;
|
|
24
|
+
findOne(filter: Filter<T>): Promise<WithId<T> | null>;
|
|
25
|
+
insertMany(items: OptionalUnlessRequiredId<T>[], options?: BulkWriteOptions): Promise<InsertManyResult<T>>;
|
|
26
|
+
insertOne(item: OptionalUnlessRequiredId<T>, options?: InsertOneOptions): Promise<InsertOneResult<T>>;
|
|
27
|
+
replaceOne(filter: Filter<T>, item: OptionalUnlessRequiredId<T>, options?: ReplaceOptions): Promise<UpdateResult<T>>;
|
|
28
|
+
updateOne(filter: Filter<T>, fields: UpdateFilter<T>): Promise<UpdateResult<T>>;
|
|
29
|
+
upsertOne(filter: Filter<T>, fields: UpdateFilter<T>): Promise<UpdateResult<T>>;
|
|
30
|
+
useCollection<R>(func: (collection: Collection<T>) => Promise<R> | R): Promise<R>;
|
|
31
|
+
useMongo<R>(func: (client: MongoClient) => Promise<R> | R): Promise<R>;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export declare type BaseMongoSdkConfig = BaseMongoSdkPublicConfig & BaseMongoSdkPrivateConfig;
|
|
35
|
+
|
|
36
|
+
export declare interface BaseMongoSdkPrivateConfig {
|
|
37
|
+
dbConnectionString?: string;
|
|
38
|
+
dbDomain?: string;
|
|
39
|
+
dbName?: string;
|
|
40
|
+
dbPassword?: string;
|
|
41
|
+
dbUserName?: string;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export declare interface BaseMongoSdkPublicConfig {
|
|
45
|
+
closeDelay?: number;
|
|
46
|
+
collection: string;
|
|
47
|
+
maxPoolSize?: number;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export declare class MongoClientWrapper {
|
|
51
|
+
static readonly clients: Map<string, MongoClientWrapper>;
|
|
52
|
+
private client;
|
|
53
|
+
constructor(uri: string, maxPoolSize?: number, closeDelay?: number);
|
|
54
|
+
static get(uri: string, poolSize?: number, closeDelay?: number): MongoClientWrapper;
|
|
55
|
+
connect(): Promise<MongoClient>;
|
|
56
|
+
disconnect(): Promise<number>;
|
|
57
|
+
initiateClose(): Promise<void>;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export { }
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -68,9 +68,9 @@ var BaseMongoSdk = class {
|
|
|
68
68
|
return await collection.insertOne(item, options);
|
|
69
69
|
});
|
|
70
70
|
}
|
|
71
|
-
async replaceOne(item, options) {
|
|
71
|
+
async replaceOne(filter, item, options) {
|
|
72
72
|
return await this.useCollection(async (collection) => {
|
|
73
|
-
return await collection.replaceOne(
|
|
73
|
+
return await collection.replaceOne(filter, item, options);
|
|
74
74
|
});
|
|
75
75
|
}
|
|
76
76
|
async updateOne(filter, fields) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Base.ts","../../src/Wrapper.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport type {\n BulkWriteOptions,\n Collection,\n DeleteResult,\n Document,\n Filter,\n FindCursor,\n InsertOneOptions,\n MongoClient,\n OptionalUnlessRequiredId,\n ReplaceOptions,\n UpdateFilter,\n WithId,\n} from 'mongodb'\n\nimport type { BaseMongoSdkConfig } from './Config.js'\nimport { MongoClientWrapper } from './Wrapper.js'\n\nexport class BaseMongoSdk<T extends Document> {\n config: BaseMongoSdkConfig\n\n constructor(config: BaseMongoSdkConfig) {\n this.config = config\n }\n\n get uri() {\n return (\n this.config.dbConnectionString\n // eslint-disable-next-line @stylistic/max-len\n ?? `mongodb+srv://${this.config.dbUserName}:${this.config.dbPassword}@${this.config.dbDomain}.mongodb.net/${this.config.dbName}?retryWrites=true&w=majority`\n )\n }\n\n async deleteMany(filter: Filter<T>) {\n return await this.useCollection<DeleteResult>(async (collection: Collection<T>) => {\n return await collection.deleteMany(filter)\n })\n }\n\n async deleteOne(filter: Filter<T>) {\n return await this.useCollection<DeleteResult>(async (collection: Collection<T>) => {\n return await collection.deleteOne(filter)\n })\n }\n\n async find(filter: Filter<T>) {\n return await this.useCollection<FindCursor<WithId<T>>>((collection: Collection<T>) => {\n return collection.find(filter)\n })\n }\n\n async findOne(filter: Filter<T>) {\n return await this.useCollection<WithId<T> | null>(async (collection: Collection<T>) => {\n return await collection.findOne(filter)\n })\n }\n\n async insertMany(items: OptionalUnlessRequiredId<T>[], options?: BulkWriteOptions) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.insertMany(items, options)\n })\n }\n\n async insertOne(item: OptionalUnlessRequiredId<T>, options?: InsertOneOptions) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.insertOne(item, options)\n })\n }\n\n async replaceOne(item: OptionalUnlessRequiredId<T>, options?: ReplaceOptions) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.replaceOne(
|
|
1
|
+
{"version":3,"sources":["../../src/Base.ts","../../src/Wrapper.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport type {\n BulkWriteOptions,\n Collection,\n DeleteResult,\n Document,\n Filter,\n FindCursor,\n InsertOneOptions,\n MongoClient,\n OptionalUnlessRequiredId,\n ReplaceOptions,\n UpdateFilter,\n WithId,\n} from 'mongodb'\n\nimport type { BaseMongoSdkConfig } from './Config.js'\nimport { MongoClientWrapper } from './Wrapper.js'\n\nexport class BaseMongoSdk<T extends Document> {\n config: BaseMongoSdkConfig\n\n constructor(config: BaseMongoSdkConfig) {\n this.config = config\n }\n\n get uri() {\n return (\n this.config.dbConnectionString\n // eslint-disable-next-line @stylistic/max-len\n ?? `mongodb+srv://${this.config.dbUserName}:${this.config.dbPassword}@${this.config.dbDomain}.mongodb.net/${this.config.dbName}?retryWrites=true&w=majority`\n )\n }\n\n async deleteMany(filter: Filter<T>) {\n return await this.useCollection<DeleteResult>(async (collection: Collection<T>) => {\n return await collection.deleteMany(filter)\n })\n }\n\n async deleteOne(filter: Filter<T>) {\n return await this.useCollection<DeleteResult>(async (collection: Collection<T>) => {\n return await collection.deleteOne(filter)\n })\n }\n\n async find(filter: Filter<T>) {\n return await this.useCollection<FindCursor<WithId<T>>>((collection: Collection<T>) => {\n return collection.find(filter)\n })\n }\n\n async findOne(filter: Filter<T>) {\n return await this.useCollection<WithId<T> | null>(async (collection: Collection<T>) => {\n return await collection.findOne(filter)\n })\n }\n\n async insertMany(items: OptionalUnlessRequiredId<T>[], options?: BulkWriteOptions) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.insertMany(items, options)\n })\n }\n\n async insertOne(item: OptionalUnlessRequiredId<T>, options?: InsertOneOptions) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.insertOne(item, options)\n })\n }\n\n async replaceOne(filter: Filter<T>, item: OptionalUnlessRequiredId<T>, options?: ReplaceOptions) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.replaceOne(filter, item, options)\n })\n }\n\n async updateOne(filter: Filter<T>, fields: UpdateFilter<T>) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.updateOne(filter, fields, { upsert: false })\n })\n }\n\n async upsertOne(filter: Filter<T>, fields: UpdateFilter<T>) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.updateOne(filter, fields, { upsert: true })\n })\n }\n\n async useCollection<R>(func: (collection: Collection<T>) => Promise<R> | R) {\n return await this.useMongo<R>(async (client: MongoClient) => {\n return await func(client.db(this.config.dbName).collection<T>(this.config.collection))\n })\n }\n\n async useMongo<R>(func: (client: MongoClient) => Promise<R> | R) {\n const wrapper = MongoClientWrapper.get(this.uri, this.config.maxPoolSize, this.config.closeDelay)\n const connection = await wrapper.connect()\n assertEx(connection, () => 'Connection failed')\n try {\n return await func(connection)\n } finally {\n await wrapper.disconnect()\n }\n }\n}\n","import type { MongoClientOptions } from 'mongodb'\nimport { MongoClient } from 'mongodb'\n\nexport class MongoClientWrapper {\n static readonly clients = new Map<string, MongoClientWrapper>()\n\n private client: MongoClient\n\n constructor(uri: string, maxPoolSize?: number, closeDelay?: number) {\n const options: MongoClientOptions = { maxPoolSize, maxIdleTimeMS: closeDelay }\n this.client = new MongoClient(uri, options)\n }\n\n static get(uri: string, poolSize?: number, closeDelay?: number) {\n let client = this.clients.get(uri)\n if (!client) {\n client = new MongoClientWrapper(uri, poolSize, closeDelay)\n this.clients.set(uri, client)\n }\n return client\n }\n\n async connect() {\n return await Promise.resolve(this.client)\n }\n\n async disconnect() {\n return await Promise.resolve(0)\n }\n\n async initiateClose() {\n await Promise.resolve()\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { BulkWriteOptions } from 'mongodb';
|
|
2
|
+
import type { Collection } from 'mongodb';
|
|
3
|
+
import type { DeleteResult } from 'mongodb';
|
|
4
|
+
import type { Document } from 'mongodb';
|
|
5
|
+
import type { Filter } from 'mongodb';
|
|
6
|
+
import type { FindCursor } from 'mongodb';
|
|
7
|
+
import { InsertManyResult } from 'mongodb';
|
|
8
|
+
import type { InsertOneOptions } from 'mongodb';
|
|
9
|
+
import { InsertOneResult } from 'mongodb';
|
|
10
|
+
import { MongoClient } from 'mongodb';
|
|
11
|
+
import type { OptionalUnlessRequiredId } from 'mongodb';
|
|
12
|
+
import type { ReplaceOptions } from 'mongodb';
|
|
13
|
+
import type { UpdateFilter } from 'mongodb';
|
|
14
|
+
import { UpdateResult } from 'mongodb';
|
|
15
|
+
import type { WithId } from 'mongodb';
|
|
16
|
+
|
|
17
|
+
export declare class BaseMongoSdk<T extends Document> {
|
|
18
|
+
config: BaseMongoSdkConfig;
|
|
19
|
+
constructor(config: BaseMongoSdkConfig);
|
|
20
|
+
get uri(): string;
|
|
21
|
+
deleteMany(filter: Filter<T>): Promise<DeleteResult>;
|
|
22
|
+
deleteOne(filter: Filter<T>): Promise<DeleteResult>;
|
|
23
|
+
find(filter: Filter<T>): Promise<FindCursor<WithId<T>>>;
|
|
24
|
+
findOne(filter: Filter<T>): Promise<WithId<T> | null>;
|
|
25
|
+
insertMany(items: OptionalUnlessRequiredId<T>[], options?: BulkWriteOptions): Promise<InsertManyResult<T>>;
|
|
26
|
+
insertOne(item: OptionalUnlessRequiredId<T>, options?: InsertOneOptions): Promise<InsertOneResult<T>>;
|
|
27
|
+
replaceOne(filter: Filter<T>, item: OptionalUnlessRequiredId<T>, options?: ReplaceOptions): Promise<UpdateResult<T>>;
|
|
28
|
+
updateOne(filter: Filter<T>, fields: UpdateFilter<T>): Promise<UpdateResult<T>>;
|
|
29
|
+
upsertOne(filter: Filter<T>, fields: UpdateFilter<T>): Promise<UpdateResult<T>>;
|
|
30
|
+
useCollection<R>(func: (collection: Collection<T>) => Promise<R> | R): Promise<R>;
|
|
31
|
+
useMongo<R>(func: (client: MongoClient) => Promise<R> | R): Promise<R>;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export declare type BaseMongoSdkConfig = BaseMongoSdkPublicConfig & BaseMongoSdkPrivateConfig;
|
|
35
|
+
|
|
36
|
+
export declare interface BaseMongoSdkPrivateConfig {
|
|
37
|
+
dbConnectionString?: string;
|
|
38
|
+
dbDomain?: string;
|
|
39
|
+
dbName?: string;
|
|
40
|
+
dbPassword?: string;
|
|
41
|
+
dbUserName?: string;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export declare interface BaseMongoSdkPublicConfig {
|
|
45
|
+
closeDelay?: number;
|
|
46
|
+
collection: string;
|
|
47
|
+
maxPoolSize?: number;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export declare class MongoClientWrapper {
|
|
51
|
+
static readonly clients: Map<string, MongoClientWrapper>;
|
|
52
|
+
private client;
|
|
53
|
+
constructor(uri: string, maxPoolSize?: number, closeDelay?: number);
|
|
54
|
+
static get(uri: string, poolSize?: number, closeDelay?: number): MongoClientWrapper;
|
|
55
|
+
connect(): Promise<MongoClient>;
|
|
56
|
+
disconnect(): Promise<number>;
|
|
57
|
+
initiateClose(): Promise<void>;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export { }
|
package/dist/node/index.mjs
CHANGED
|
@@ -68,9 +68,9 @@ var BaseMongoSdk = class {
|
|
|
68
68
|
return await collection.insertOne(item, options);
|
|
69
69
|
});
|
|
70
70
|
}
|
|
71
|
-
async replaceOne(item, options) {
|
|
71
|
+
async replaceOne(filter, item, options) {
|
|
72
72
|
return await this.useCollection(async (collection) => {
|
|
73
|
-
return await collection.replaceOne(
|
|
73
|
+
return await collection.replaceOne(filter, item, options);
|
|
74
74
|
});
|
|
75
75
|
}
|
|
76
76
|
async updateOne(filter, fields) {
|
package/dist/node/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Base.ts","../../src/Wrapper.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport type {\n BulkWriteOptions,\n Collection,\n DeleteResult,\n Document,\n Filter,\n FindCursor,\n InsertOneOptions,\n MongoClient,\n OptionalUnlessRequiredId,\n ReplaceOptions,\n UpdateFilter,\n WithId,\n} from 'mongodb'\n\nimport type { BaseMongoSdkConfig } from './Config.js'\nimport { MongoClientWrapper } from './Wrapper.js'\n\nexport class BaseMongoSdk<T extends Document> {\n config: BaseMongoSdkConfig\n\n constructor(config: BaseMongoSdkConfig) {\n this.config = config\n }\n\n get uri() {\n return (\n this.config.dbConnectionString\n // eslint-disable-next-line @stylistic/max-len\n ?? `mongodb+srv://${this.config.dbUserName}:${this.config.dbPassword}@${this.config.dbDomain}.mongodb.net/${this.config.dbName}?retryWrites=true&w=majority`\n )\n }\n\n async deleteMany(filter: Filter<T>) {\n return await this.useCollection<DeleteResult>(async (collection: Collection<T>) => {\n return await collection.deleteMany(filter)\n })\n }\n\n async deleteOne(filter: Filter<T>) {\n return await this.useCollection<DeleteResult>(async (collection: Collection<T>) => {\n return await collection.deleteOne(filter)\n })\n }\n\n async find(filter: Filter<T>) {\n return await this.useCollection<FindCursor<WithId<T>>>((collection: Collection<T>) => {\n return collection.find(filter)\n })\n }\n\n async findOne(filter: Filter<T>) {\n return await this.useCollection<WithId<T> | null>(async (collection: Collection<T>) => {\n return await collection.findOne(filter)\n })\n }\n\n async insertMany(items: OptionalUnlessRequiredId<T>[], options?: BulkWriteOptions) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.insertMany(items, options)\n })\n }\n\n async insertOne(item: OptionalUnlessRequiredId<T>, options?: InsertOneOptions) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.insertOne(item, options)\n })\n }\n\n async replaceOne(item: OptionalUnlessRequiredId<T>, options?: ReplaceOptions) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.replaceOne(
|
|
1
|
+
{"version":3,"sources":["../../src/Base.ts","../../src/Wrapper.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport type {\n BulkWriteOptions,\n Collection,\n DeleteResult,\n Document,\n Filter,\n FindCursor,\n InsertOneOptions,\n MongoClient,\n OptionalUnlessRequiredId,\n ReplaceOptions,\n UpdateFilter,\n WithId,\n} from 'mongodb'\n\nimport type { BaseMongoSdkConfig } from './Config.js'\nimport { MongoClientWrapper } from './Wrapper.js'\n\nexport class BaseMongoSdk<T extends Document> {\n config: BaseMongoSdkConfig\n\n constructor(config: BaseMongoSdkConfig) {\n this.config = config\n }\n\n get uri() {\n return (\n this.config.dbConnectionString\n // eslint-disable-next-line @stylistic/max-len\n ?? `mongodb+srv://${this.config.dbUserName}:${this.config.dbPassword}@${this.config.dbDomain}.mongodb.net/${this.config.dbName}?retryWrites=true&w=majority`\n )\n }\n\n async deleteMany(filter: Filter<T>) {\n return await this.useCollection<DeleteResult>(async (collection: Collection<T>) => {\n return await collection.deleteMany(filter)\n })\n }\n\n async deleteOne(filter: Filter<T>) {\n return await this.useCollection<DeleteResult>(async (collection: Collection<T>) => {\n return await collection.deleteOne(filter)\n })\n }\n\n async find(filter: Filter<T>) {\n return await this.useCollection<FindCursor<WithId<T>>>((collection: Collection<T>) => {\n return collection.find(filter)\n })\n }\n\n async findOne(filter: Filter<T>) {\n return await this.useCollection<WithId<T> | null>(async (collection: Collection<T>) => {\n return await collection.findOne(filter)\n })\n }\n\n async insertMany(items: OptionalUnlessRequiredId<T>[], options?: BulkWriteOptions) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.insertMany(items, options)\n })\n }\n\n async insertOne(item: OptionalUnlessRequiredId<T>, options?: InsertOneOptions) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.insertOne(item, options)\n })\n }\n\n async replaceOne(filter: Filter<T>, item: OptionalUnlessRequiredId<T>, options?: ReplaceOptions) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.replaceOne(filter, item, options)\n })\n }\n\n async updateOne(filter: Filter<T>, fields: UpdateFilter<T>) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.updateOne(filter, fields, { upsert: false })\n })\n }\n\n async upsertOne(filter: Filter<T>, fields: UpdateFilter<T>) {\n return await this.useCollection(async (collection: Collection<T>) => {\n return await collection.updateOne(filter, fields, { upsert: true })\n })\n }\n\n async useCollection<R>(func: (collection: Collection<T>) => Promise<R> | R) {\n return await this.useMongo<R>(async (client: MongoClient) => {\n return await func(client.db(this.config.dbName).collection<T>(this.config.collection))\n })\n }\n\n async useMongo<R>(func: (client: MongoClient) => Promise<R> | R) {\n const wrapper = MongoClientWrapper.get(this.uri, this.config.maxPoolSize, this.config.closeDelay)\n const connection = await wrapper.connect()\n assertEx(connection, () => 'Connection failed')\n try {\n return await func(connection)\n } finally {\n await wrapper.disconnect()\n }\n }\n}\n","import type { MongoClientOptions } from 'mongodb'\nimport { MongoClient } from 'mongodb'\n\nexport class MongoClientWrapper {\n static readonly clients = new Map<string, MongoClientWrapper>()\n\n private client: MongoClient\n\n constructor(uri: string, maxPoolSize?: number, closeDelay?: number) {\n const options: MongoClientOptions = { maxPoolSize, maxIdleTimeMS: closeDelay }\n this.client = new MongoClient(uri, options)\n }\n\n static get(uri: string, poolSize?: number, closeDelay?: number) {\n let client = this.clients.get(uri)\n if (!client) {\n client = new MongoClientWrapper(uri, poolSize, closeDelay)\n this.clients.set(uri, client)\n }\n return client\n }\n\n async connect() {\n return await Promise.resolve(this.client)\n }\n\n async disconnect() {\n return await Promise.resolve(0)\n }\n\n async initiateClose() {\n await Promise.resolve()\n }\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xylabs/mongo",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.13.0",
|
|
4
4
|
"description": "Base functionality used throughout XYO TypeScript/JavaScript libraries that access Mongo DB",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mongo",
|
|
@@ -25,27 +25,27 @@
|
|
|
25
25
|
"exports": {
|
|
26
26
|
".": {
|
|
27
27
|
"browser": {
|
|
28
|
-
"types": "./dist/
|
|
28
|
+
"types": "./dist/browser/index.d.ts",
|
|
29
29
|
"default": "./dist/browser/index.mjs"
|
|
30
30
|
},
|
|
31
31
|
"node": {
|
|
32
|
-
"types": "./dist/
|
|
32
|
+
"types": "./dist/node/index.d.ts",
|
|
33
33
|
"default": "./dist/node/index.mjs"
|
|
34
34
|
},
|
|
35
|
-
"types": "./dist/
|
|
35
|
+
"types": "./dist/node/index.d.ts",
|
|
36
36
|
"default": "./dist/node/index.mjs"
|
|
37
37
|
},
|
|
38
38
|
"./package.json": "./package.json"
|
|
39
39
|
},
|
|
40
40
|
"module": "dist/node/index.mjs",
|
|
41
|
-
"types": "dist/
|
|
41
|
+
"types": "dist/node/index.d.ts",
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@xylabs/assert": "^4.
|
|
43
|
+
"@xylabs/assert": "^4.13.0",
|
|
44
44
|
"mongodb": "~6.17.0"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@xylabs/ts-scripts-yarn3": "^
|
|
48
|
-
"@xylabs/tsconfig": "^
|
|
47
|
+
"@xylabs/ts-scripts-yarn3": "^7.0.0-rc.7",
|
|
48
|
+
"@xylabs/tsconfig": "^7.0.0-rc.7",
|
|
49
49
|
"typescript": "^5.8.3",
|
|
50
50
|
"vitest": "^3.2.4"
|
|
51
51
|
},
|
package/src/Base.ts
CHANGED
|
@@ -68,9 +68,9 @@ export class BaseMongoSdk<T extends Document> {
|
|
|
68
68
|
})
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
async replaceOne(item: OptionalUnlessRequiredId<T>, options?: ReplaceOptions) {
|
|
71
|
+
async replaceOne(filter: Filter<T>, item: OptionalUnlessRequiredId<T>, options?: ReplaceOptions) {
|
|
72
72
|
return await this.useCollection(async (collection: Collection<T>) => {
|
|
73
|
-
return await collection.replaceOne(
|
|
73
|
+
return await collection.replaceOne(filter, item, options)
|
|
74
74
|
})
|
|
75
75
|
}
|
|
76
76
|
|
package/dist/types/Base.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { BulkWriteOptions, Collection, DeleteResult, Document, Filter, FindCursor, InsertOneOptions, MongoClient, OptionalUnlessRequiredId, ReplaceOptions, UpdateFilter, WithId } from 'mongodb';
|
|
2
|
-
import type { BaseMongoSdkConfig } from './Config.js';
|
|
3
|
-
export declare class BaseMongoSdk<T extends Document> {
|
|
4
|
-
config: BaseMongoSdkConfig;
|
|
5
|
-
constructor(config: BaseMongoSdkConfig);
|
|
6
|
-
get uri(): string;
|
|
7
|
-
deleteMany(filter: Filter<T>): Promise<DeleteResult>;
|
|
8
|
-
deleteOne(filter: Filter<T>): Promise<DeleteResult>;
|
|
9
|
-
find(filter: Filter<T>): Promise<FindCursor<WithId<T>>>;
|
|
10
|
-
findOne(filter: Filter<T>): Promise<WithId<T> | null>;
|
|
11
|
-
insertMany(items: OptionalUnlessRequiredId<T>[], options?: BulkWriteOptions): Promise<import("mongodb").InsertManyResult<T>>;
|
|
12
|
-
insertOne(item: OptionalUnlessRequiredId<T>, options?: InsertOneOptions): Promise<import("mongodb").InsertOneResult<T>>;
|
|
13
|
-
replaceOne(item: OptionalUnlessRequiredId<T>, options?: ReplaceOptions): Promise<import("mongodb").UpdateResult<T>>;
|
|
14
|
-
updateOne(filter: Filter<T>, fields: UpdateFilter<T>): Promise<import("mongodb").UpdateResult<T>>;
|
|
15
|
-
upsertOne(filter: Filter<T>, fields: UpdateFilter<T>): Promise<import("mongodb").UpdateResult<T>>;
|
|
16
|
-
useCollection<R>(func: (collection: Collection<T>) => Promise<R> | R): Promise<R>;
|
|
17
|
-
useMongo<R>(func: (client: MongoClient) => Promise<R> | R): Promise<R>;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=Base.d.ts.map
|
package/dist/types/Base.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Base.d.ts","sourceRoot":"","sources":["../../src/Base.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,wBAAwB,EACxB,cAAc,EACd,YAAY,EACZ,MAAM,EACP,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAGrD,qBAAa,YAAY,CAAC,CAAC,SAAS,QAAQ;IAC1C,MAAM,EAAE,kBAAkB,CAAA;gBAEd,MAAM,EAAE,kBAAkB;IAItC,IAAI,GAAG,WAMN;IAEK,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAM5B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAM3B,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAMtB,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAMzB,UAAU,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,gBAAgB;IAM3E,SAAS,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,gBAAgB;IAMvE,UAAU,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc;IAMtE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAMpD,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAMpD,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAMpE,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;CAUhE"}
|
package/dist/types/Config.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export interface BaseMongoSdkPublicConfig {
|
|
2
|
-
closeDelay?: number;
|
|
3
|
-
collection: string;
|
|
4
|
-
maxPoolSize?: number;
|
|
5
|
-
}
|
|
6
|
-
export interface BaseMongoSdkPrivateConfig {
|
|
7
|
-
dbConnectionString?: string;
|
|
8
|
-
dbDomain?: string;
|
|
9
|
-
dbName?: string;
|
|
10
|
-
dbPassword?: string;
|
|
11
|
-
dbUserName?: string;
|
|
12
|
-
}
|
|
13
|
-
export type BaseMongoSdkConfig = BaseMongoSdkPublicConfig & BaseMongoSdkPrivateConfig;
|
|
14
|
-
//# sourceMappingURL=Config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,yBAAyB;IACxC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,MAAM,kBAAkB,GAAG,wBAAwB,GAAG,yBAAyB,CAAA"}
|
package/dist/types/Wrapper.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { MongoClient } from 'mongodb';
|
|
2
|
-
export declare class MongoClientWrapper {
|
|
3
|
-
static readonly clients: Map<string, MongoClientWrapper>;
|
|
4
|
-
private client;
|
|
5
|
-
constructor(uri: string, maxPoolSize?: number, closeDelay?: number);
|
|
6
|
-
static get(uri: string, poolSize?: number, closeDelay?: number): MongoClientWrapper;
|
|
7
|
-
connect(): Promise<MongoClient>;
|
|
8
|
-
disconnect(): Promise<number>;
|
|
9
|
-
initiateClose(): Promise<void>;
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=Wrapper.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Wrapper.d.ts","sourceRoot":"","sources":["../../src/Wrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAErC,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,QAAQ,CAAC,OAAO,kCAAwC;IAE/D,OAAO,CAAC,MAAM,CAAa;gBAEf,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAKlE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IASxD,OAAO;IAIP,UAAU;IAIV,aAAa;CAGpB"}
|
package/dist/types/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA"}
|