@xyo-network/xl1-driver-mongodb 4.0.5 → 4.0.7
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.
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import type { CreatableParams } from '@ariestools/sdk';
|
|
2
|
+
import { AbstractCreatable } from '@ariestools/sdk';
|
|
1
3
|
import type { BaseMongoSdk } from '@xylabs/mongo';
|
|
2
|
-
import type { CreatableParams } from '@xylabs/sdk';
|
|
3
|
-
import { AbstractCreatable } from '@xylabs/sdk';
|
|
4
4
|
import type { AsyncIterableMap } from '@xyo-network/xl1-protocol-lib';
|
|
5
5
|
import type { Document } from 'mongodb';
|
|
6
6
|
export interface MongoMapParams<TData extends Document = Document> extends CreatableParams {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MongoMap.d.ts","sourceRoot":"","sources":["../../src/MongoMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"MongoMap.d.ts","sourceRoot":"","sources":["../../src/MongoMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EACL,iBAAiB,EAClB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEjD,OAAO,KAAK,EAAE,gBAAgB,EAAW,MAAM,+BAA+B,CAAA;AAC9E,OAAO,KAAK,EACV,QAAQ,EACT,MAAM,SAAS,CAAA;AAEhB,MAAM,WAAW,cAAc,CAAC,KAAK,SAAS,QAAQ,GAAG,QAAQ,CAAE,SAAQ,eAAe;IACxF,QAAQ,CAAC,EAAE;QACT,OAAO,EAAE,OAAO,CAAA;QAChB,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;IACD,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;CACzB;AAOD,qBACa,QAAQ,CAAC,CAAC,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC,SAAS,QAAQ,GAAG,QAAQ,CACxE,SAAQ,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC,CAC3C,YAAW,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC;IACjC,OAAO,CAAC,SAAS,CAA2B;IAE5C,IAAI,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAEzB;IAED;;;OAGG;IACH,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAsCzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAYlC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAuB/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAU5B,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ7C"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/MongoMap.ts"],
|
|
4
|
-
"sourcesContent": ["import type {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;
|
|
4
|
+
"sourcesContent": ["import type { CreatableParams } from '@ariestools/sdk'\nimport {\n AbstractCreatable, assertEx, creatable, isNull,\n} from '@ariestools/sdk'\nimport type { BaseMongoSdk } from '@xylabs/mongo'\nimport { LruCacheMap } from '@xyo-network/xl1-driver-memory'\nimport type { AsyncIterableMap, MapType } from '@xyo-network/xl1-protocol-lib'\nimport type {\n Document, Filter, OptionalUnlessRequiredId, WithId,\n} from 'mongodb'\n\nexport interface MongoMapParams<TData extends Document = Document> extends CreatableParams {\n getCache?: {\n enabled: boolean\n maxEntries?: number\n }\n sdk: BaseMongoSdk<TData>\n}\n\nconst stripMongoId = <V extends Document>(doc: WithId<V>): V => {\n const { _id, ...rest } = doc\n return rest as unknown as V\n}\n\n@creatable()\nexport class MongoMap<K extends {} = string, V extends Document = Document>\n extends AbstractCreatable<MongoMapParams<V>>\n implements AsyncIterableMap<K, V> {\n private _getCache: MapType<K, V> | undefined\n\n get sdk(): BaseMongoSdk<V> {\n return assertEx(this.params.sdk, () => 'No sdk specified')\n }\n\n /**\n * Enable `for await...of` iteration over all entries in the map.\n * Streams through the Mongo cursor so no driver-level limit is applied.\n */\n [Symbol.asyncIterator](): AsyncIterator<[K, V]> {\n // Create cursor lazily so async iterator construction remains synchronous.\n // `find()` must be called exactly once; calling it in `next()` risks recreating cursors.\n // Using a closure ensures refactors cannot accidentally duplicate cursor creation.\n const cursorPromise = this.sdk.find({})\n\n // Holds the resolved Mongo cursor; shared across all iterations.\n // Declared outside `next()` to avoid accidental recreation during refactors.\n let cursor: Awaited<typeof cursorPromise> | undefined\n\n // Lazily resolve the cursor on first iteration; keeps `next()` simple.\n const loadCursor = async () => {\n cursor ??= await cursorPromise\n }\n\n return {\n next: async (): Promise<IteratorResult<[K, V]>> => {\n // Ensure cursor is initialized once before iteration.\n await loadCursor()\n if (!cursor) return { value: undefined, done: true }\n\n // Pull next document from the cursor; Mongo driver returns null when exhausted.\n const doc = await cursor.next()\n if (!doc) return { value: undefined, done: true }\n\n // Convert MongoDB document into key/value tuple.\n const key = doc._id as unknown as K\n const value = stripMongoId(doc)\n\n // Cache the value if caching is enabled.\n if (this._getCache) await this._getCache.set(key, value)\n\n // Yield the entry to the async iterator consumer.\n return { value: [key, value], done: false }\n },\n }\n }\n\n async clear(): Promise<void> {\n await this._getCache?.clear()\n await this.sdk.deleteMany({})\n }\n\n async delete(id: K): Promise<boolean> {\n await this._getCache?.delete(id)\n\n const filter = { _id: id } as Filter<V>\n const result = await this.sdk.deleteOne(filter)\n return result.deletedCount > 0\n }\n\n async get(id: K): Promise<V | undefined> {\n if (this._getCache) {\n const getCacheResult = this._getCache.get(id)\n if (getCacheResult) {\n return getCacheResult\n }\n }\n const filter = { _id: id } as Filter<V>\n const doc = await this.sdk.findOne(filter)\n return isNull(doc) ? undefined : stripMongoId(doc)\n }\n\n async getMany(ids: K[]): Promise<V[]> {\n const cache = this._getCache\n const idSet = new Set(ids)\n const results: V[] = []\n if (cache) {\n const getCacheResult = ids.map(id => ([id, cache.get(id)])).filter(([, item]) => item !== undefined) as [K, V][]\n for (const [id] of getCacheResult) {\n idSet.delete(id)\n }\n results.push(...getCacheResult.map(([, item]) => item))\n }\n const filter = { _id: { $in: [...idSet] } } as Filter<V>\n const cursor = await this.sdk.find(filter)\n const items = await cursor.toArray()\n for (const item of items) {\n const id = item._id\n const stripped = stripMongoId(item)\n if (cache) await cache.set(id as unknown as K, stripped)\n results.push(stripped)\n }\n return results\n }\n\n async has(id: K): Promise<boolean> {\n if (this._getCache) {\n const getCacheResult = await this._getCache.has(id)\n if (getCacheResult) return getCacheResult\n }\n const filter = { _id: id } as Filter<V>\n const exists = await this.sdk.findOne(filter)\n return isNull(exists) ? false : true\n }\n\n async set(id: K, data: V): Promise<void> {\n const filter = { _id: id } as Filter<V>\n const value = { ...data, _id: id } as OptionalUnlessRequiredId<V>\n await this.sdk.replaceOne(filter, value, { upsert: true })\n await this._getCache?.set(id, data)\n }\n\n async setMany(entries: [K, V][]): Promise<void> {\n // TODO: Optimize with bulkWrite\n for (const [key, value] of entries) {\n await this.set(key, value)\n }\n }\n\n override async startHandler(): Promise<void> {\n await super.startHandler()\n // TODO: Ensure index\n if (this.params.getCache?.enabled === true) {\n const maxEntries = this.params.getCache?.maxEntries ?? 5000\n this._getCache = new LruCacheMap<K, V>({ max: maxEntries })\n }\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;AACA;AAAA,EACE;AAAA,EAAmB;AAAA,EAAU;AAAA,EAAW;AAAA,OACnC;AAEP,SAAS,mBAAmB;AAc5B,IAAM,eAAe,CAAqB,QAAsB;AAC9D,QAAM,EAAE,KAAK,GAAG,KAAK,IAAI;AACzB,SAAO;AACT;AAGO,IAAM,WAAN,cACG,kBAC0B;AAAA,EAC1B;AAAA,EAER,IAAI,MAAuB;AACzB,WAAO,SAAS,KAAK,OAAO,KAAK,MAAM,kBAAkB;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,CAAC,OAAO,aAAa,IAA2B;AAI9C,UAAM,gBAAgB,KAAK,IAAI,KAAK,CAAC,CAAC;AAItC,QAAI;AAGJ,UAAM,aAAa,YAAY;AAC7B,iBAAW,MAAM;AAAA,IACnB;AAEA,WAAO;AAAA,MACL,MAAM,YAA6C;AAEjD,cAAM,WAAW;AACjB,YAAI,CAAC,OAAQ,QAAO,EAAE,OAAO,QAAW,MAAM,KAAK;AAGnD,cAAM,MAAM,MAAM,OAAO,KAAK;AAC9B,YAAI,CAAC,IAAK,QAAO,EAAE,OAAO,QAAW,MAAM,KAAK;AAGhD,cAAM,MAAM,IAAI;AAChB,cAAM,QAAQ,aAAa,GAAG;AAG9B,YAAI,KAAK,UAAW,OAAM,KAAK,UAAU,IAAI,KAAK,KAAK;AAGvD,eAAO,EAAE,OAAO,CAAC,KAAK,KAAK,GAAG,MAAM,MAAM;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,QAAuB;AAC3B,UAAM,KAAK,WAAW,MAAM;AAC5B,UAAM,KAAK,IAAI,WAAW,CAAC,CAAC;AAAA,EAC9B;AAAA,EAEA,MAAM,OAAO,IAAyB;AACpC,UAAM,KAAK,WAAW,OAAO,EAAE;AAE/B,UAAM,SAAS,EAAE,KAAK,GAAG;AACzB,UAAM,SAAS,MAAM,KAAK,IAAI,UAAU,MAAM;AAC9C,WAAO,OAAO,eAAe;AAAA,EAC/B;AAAA,EAEA,MAAM,IAAI,IAA+B;AACvC,QAAI,KAAK,WAAW;AAClB,YAAM,iBAAiB,KAAK,UAAU,IAAI,EAAE;AAC5C,UAAI,gBAAgB;AAClB,eAAO;AAAA,MACT;AAAA,IACF;AACA,UAAM,SAAS,EAAE,KAAK,GAAG;AACzB,UAAM,MAAM,MAAM,KAAK,IAAI,QAAQ,MAAM;AACzC,WAAO,OAAO,GAAG,IAAI,SAAY,aAAa,GAAG;AAAA,EACnD;AAAA,EAEA,MAAM,QAAQ,KAAwB;AACpC,UAAM,QAAQ,KAAK;AACnB,UAAM,QAAQ,IAAI,IAAI,GAAG;AACzB,UAAM,UAAe,CAAC;AACtB,QAAI,OAAO;AACT,YAAM,iBAAiB,IAAI,IAAI,QAAO,CAAC,IAAI,MAAM,IAAI,EAAE,CAAC,CAAE,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,MAAM,SAAS,MAAS;AACnG,iBAAW,CAAC,EAAE,KAAK,gBAAgB;AACjC,cAAM,OAAO,EAAE;AAAA,MACjB;AACA,cAAQ,KAAK,GAAG,eAAe,IAAI,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI,CAAC;AAAA,IACxD;AACA,UAAM,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,KAAK,EAAE,EAAE;AAC1C,UAAM,SAAS,MAAM,KAAK,IAAI,KAAK,MAAM;AACzC,UAAM,QAAQ,MAAM,OAAO,QAAQ;AACnC,eAAW,QAAQ,OAAO;AACxB,YAAM,KAAK,KAAK;AAChB,YAAM,WAAW,aAAa,IAAI;AAClC,UAAI,MAAO,OAAM,MAAM,IAAI,IAAoB,QAAQ;AACvD,cAAQ,KAAK,QAAQ;AAAA,IACvB;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,IAAI,IAAyB;AACjC,QAAI,KAAK,WAAW;AAClB,YAAM,iBAAiB,MAAM,KAAK,UAAU,IAAI,EAAE;AAClD,UAAI,eAAgB,QAAO;AAAA,IAC7B;AACA,UAAM,SAAS,EAAE,KAAK,GAAG;AACzB,UAAM,SAAS,MAAM,KAAK,IAAI,QAAQ,MAAM;AAC5C,WAAO,OAAO,MAAM,IAAI,QAAQ;AAAA,EAClC;AAAA,EAEA,MAAM,IAAI,IAAO,MAAwB;AACvC,UAAM,SAAS,EAAE,KAAK,GAAG;AACzB,UAAM,QAAQ,EAAE,GAAG,MAAM,KAAK,GAAG;AACjC,UAAM,KAAK,IAAI,WAAW,QAAQ,OAAO,EAAE,QAAQ,KAAK,CAAC;AACzD,UAAM,KAAK,WAAW,IAAI,IAAI,IAAI;AAAA,EACpC;AAAA,EAEA,MAAM,QAAQ,SAAkC;AAE9C,eAAW,CAAC,KAAK,KAAK,KAAK,SAAS;AAClC,YAAM,KAAK,IAAI,KAAK,KAAK;AAAA,IAC3B;AAAA,EACF;AAAA,EAEA,MAAe,eAA8B;AAC3C,UAAM,MAAM,aAAa;AAEzB,QAAI,KAAK,OAAO,UAAU,YAAY,MAAM;AAC1C,YAAM,aAAa,KAAK,OAAO,UAAU,cAAc;AACvD,WAAK,YAAY,IAAI,YAAkB,EAAE,KAAK,WAAW,CAAC;AAAA,IAC5D;AAAA,EACF;AACF;AAnIa,WAAN;AAAA,EADN,UAAU;AAAA,GACE;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@xyo-network/xl1-driver-mongodb",
|
|
4
|
-
"version": "4.0.
|
|
4
|
+
"version": "4.0.7",
|
|
5
5
|
"description": "XYO Layer One SDK Protocol MongoDB Driver",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -35,22 +35,24 @@
|
|
|
35
35
|
"README.md"
|
|
36
36
|
],
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@xyo-network/xl1-driver-memory": "~4.0.
|
|
39
|
-
"@xyo-network/xl1-protocol-lib": "~4.0.
|
|
38
|
+
"@xyo-network/xl1-driver-memory": "~4.0.7",
|
|
39
|
+
"@xyo-network/xl1-protocol-lib": "~4.0.7"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
+
"@ariestools/sdk": "^7.0.3",
|
|
42
43
|
"@bitauth/libauth": "~3.0.0",
|
|
43
44
|
"@noble/post-quantum": "~0.6.1",
|
|
45
|
+
"tslib": "^2.8.1",
|
|
44
46
|
"@opentelemetry/api": "^1.9.1",
|
|
45
47
|
"@opentelemetry/sdk-trace-base": "^2.8.0",
|
|
46
48
|
"@scure/base": "~2.2.0",
|
|
47
49
|
"@scure/bip39": "~2.2.0",
|
|
48
|
-
"@xylabs/geo": "^7.0.
|
|
49
|
-
"@xylabs/mongo": "^7.0.
|
|
50
|
-
"@xylabs/sdk": "^7.0
|
|
51
|
-
"@xylabs/threads": "^7.0.
|
|
52
|
-
"@xylabs/toolchain": "~8.5.
|
|
53
|
-
"@xylabs/tsconfig": "~8.5.
|
|
50
|
+
"@xylabs/geo": "^7.0.3",
|
|
51
|
+
"@xylabs/mongo": "^7.0.3",
|
|
52
|
+
"@xylabs/sdk": "^7.0",
|
|
53
|
+
"@xylabs/threads": "^7.0.3",
|
|
54
|
+
"@xylabs/toolchain": "~8.5.11",
|
|
55
|
+
"@xylabs/tsconfig": "~8.5.11",
|
|
54
56
|
"@xyo-network/sdk-js": "~7.0.4",
|
|
55
57
|
"@xyo-network/sdk-protocol": "~7.0.5",
|
|
56
58
|
"ajv": "^8.20.0",
|
|
@@ -67,6 +69,7 @@
|
|
|
67
69
|
"zod": "~4.4.3"
|
|
68
70
|
},
|
|
69
71
|
"peerDependencies": {
|
|
72
|
+
"@ariestools/sdk": "^7.0",
|
|
70
73
|
"@bitauth/libauth": "~3.0",
|
|
71
74
|
"@noble/post-quantum": "~0.6.1",
|
|
72
75
|
"@opentelemetry/api": "^1.9",
|