insite-db 2.0.2 → 2.0.4

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.
@@ -4,11 +4,11 @@ export declare class InSiteCollections extends Map<string, InSiteCollection> {
4
4
  constructor(db: InSiteDB);
5
5
  db: InSiteDB;
6
6
  [key: string]: InSiteCollection | unknown;
7
- ensure<Doc extends Document>(name: string, options: {
7
+ ensure<Doc extends Document>(name: string, options: InSiteCollectionOptions & {
8
8
  watch: false;
9
- } & InSiteCollectionOptions): Promise<InSiteCollection<Doc>>;
10
- ensure<Doc extends Document>(name: string, options?: {
9
+ }): Promise<InSiteCollection<Doc>>;
10
+ ensure<Doc extends Document>(name: string, options?: InSiteCollectionOptions & {
11
11
  watch?: true;
12
- } & InSiteCollectionOptions): Promise<InSiteWatchedCollection<Doc>>;
12
+ }): Promise<InSiteWatchedCollection<Doc>>;
13
13
  }
14
14
  //# sourceMappingURL=Collections.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Collections.d.ts","sourceRoot":"","sources":["../src/Collections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsC,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,KAAK,EACX,gBAAgB,EAChB,uBAAuB,EACvB,QAAQ,EACR,uBAAuB,EACvB,MAAM,SAAS,CAAC;AAqBjB,qBAAa,iBAAkB,SAAQ,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC;gBACvD,EAAE,EAAE,QAAQ;IAOxB,EAAE,EAAE,QAAQ,CAAC;IAEb,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG,OAAO,CAAC;IAEpC,MAAM,CAAC,GAAG,SAAS,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,GAAG,uBAAuB,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC/H,MAAM,CAAC,GAAG,SAAS,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;CAyC7I"}
1
+ {"version":3,"file":"Collections.d.ts","sourceRoot":"","sources":["../src/Collections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsC,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,KAAK,EACX,gBAAgB,EAChB,uBAAuB,EACvB,QAAQ,EACR,uBAAuB,EACvB,MAAM,SAAS,CAAC;AAqBjB,qBAAa,iBAAkB,SAAQ,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC;gBACvD,EAAE,EAAE,QAAQ;IAOxB,EAAE,EAAE,QAAQ,CAAC;IAEb,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG,OAAO,CAAC;IAEpC,MAAM,CAAC,GAAG,SAAS,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,GAAG;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC/H,MAAM,CAAC,GAAG,SAAS,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG;QAAE,KAAK,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;CA4C7I"}
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- import{MongoClient as m}from"mongodb";function a(o){process.env.NODE_ENV==="development"&&console.log("Change stream change",this.parent.collectionName,o);for(let e of this.parent.changeListeners)e(o)}function l(o){console.error(`\u{1F33F}\u2757\uFE0F Mongo ${this.parent.collectionName} Change Stream:
2
- `,o.stack)}var i=class extends Map{constructor(e){super(),this.db=e}db;async ensure(e,n={}){let{db:r}=this,t=this.get(e);return t||((await r.listCollections({name:e},{nameOnly:!0}).toArray()).length?t=r.collection(e):(t=await r.createCollection(e,{...n.jsonSchema&&{validator:{$jsonSchema:n.jsonSchema}},...n.blockCompressor&&{storageEngine:{wiredTiger:{configString:`block_compressor=${n.blockCompressor}`}}}}),delete n.jsonSchema,delete n.blockCompressor),this.set(e,t),this[e]=t,n.watch!==!1&&(t.changeListeners=new Set,t.changeStream=t.watch(void 0,{fullDocument:n.fullDocument===!1?void 0:"updateLookup"}).on("change",a).on("error",l))),n.jsonSchema&&await r.command({collMod:e,...n.jsonSchema&&{validator:{$jsonSchema:n.jsonSchema}}}),t}};async function f({url:o,name:e,...n}){/localhost/.test(o)&&(o=o.replace(/localhost/,"127.0.0.1"));let r=new m(o,{maxPoolSize:100,...n});try{await r.connect(),console.info("\u{1F33F} Mongo Client connected to",o.replace(/(?<=\/\/)[^:]+?:[^@]+@/,"").replace(/[/?][^/]*$/,""))}catch(c){console.error("\u{1F33F}\u2757\uFE0F Mongo Client connection: ",c)}r.on("close",()=>console.error("\u{1F33F}\u2757\uFE0F Mongo DB socket closed")).on("error",c=>console.error("\u{1F33F}\u2757\uFE0F Mongo DB:",c)).on("parseError",c=>console.error("\u{1F33F}\u2757\uFE0F Mongo DB parse:",c)).on("reconnect",()=>console.info("\u{1F33F} Mongo DB reconnected")).on("timeout",()=>console.error("\u{1F33F}\u2757\uFE0F Mongo DB timeout"));let t=r.db(e),s=new i(t);return{client:r,db:t,collections:s}}import{Collection as h}from"mongodb";h.prototype.ensureIndexes=async function(o){try{for(let e of o)await this.createIndex(...e)}catch{}};import{ObjectId as S}from"mongodb";function x(){return new S().toString()}export*from"mongodb";export{f as connect,x as newObjectIdString};
1
+ import{MongoClient as m}from"mongodb";function a(n){process.env.NODE_ENV==="development"&&console.info("\u{1F38F} Change stream change",this.parent.collectionName,n);for(let e of this.parent.changeListeners)e(n)}function l(n){console.error(`\u{1F33F}\u2757\uFE0F Mongo ${this.parent.collectionName} Change Stream:
2
+ `,n.stack)}var i=class extends Map{constructor(e){super(),this.db=e}db;async ensure(e,o={}){let{db:r}=this,t=this.get(e);return t||((await r.listCollections({name:e},{nameOnly:!0}).toArray()).length?t=r.collection(e):(t=await r.createCollection(e,{...o.jsonSchema&&{validator:{$jsonSchema:o.jsonSchema}},...o.blockCompressor&&{storageEngine:{wiredTiger:{configString:`block_compressor=${o.blockCompressor}`}}}}),delete o.jsonSchema,delete o.blockCompressor),this.set(e,t),this[e]=t,o.watch!==!1&&(t.changeListeners=new Set,t.changeStream=t.watch(void 0,{fullDocument:o.fullDocument===!1?void 0:"updateLookup"}).on("change",a).on("error",l))),o.jsonSchema&&await r.command({collMod:e,...o.jsonSchema&&{validator:{$jsonSchema:o.jsonSchema}}}),o.indexes&&await t.ensureIndexes(o.indexes),t}};async function p({url:n,name:e,...o}){/localhost/.test(n)&&(n=n.replace(/localhost/,"127.0.0.1"));let r=new m(n,{maxPoolSize:100,...o});try{await r.connect(),console.info("\u{1F33F} Mongo Client connected to",n.replace(/(?<=\/\/)[^:]+?:[^@]+@/,"").replace(/[/?][^/]*$/,""))}catch(c){console.error("\u{1F33F}\u2757\uFE0F Mongo Client connection: ",c)}r.on("close",()=>console.error("\u{1F33F}\u2757\uFE0F Mongo DB socket closed")).on("error",c=>console.error("\u{1F33F}\u2757\uFE0F Mongo DB:",c)).on("parseError",c=>console.error("\u{1F33F}\u2757\uFE0F Mongo DB parse:",c)).on("reconnect",()=>console.info("\u{1F33F} Mongo DB reconnected")).on("timeout",()=>console.error("\u{1F33F}\u2757\uFE0F Mongo DB timeout"));let t=r.db(e),s=new i(t);return{client:r,db:t,collections:s}}import{Collection as h}from"mongodb";h.prototype.ensureIndexes=async function(n){try{for(let e of n)await this.createIndex(...e)}catch{}};import{ObjectId as S}from"mongodb";function D(){return new S().toString()}export*from"mongodb";export{p as connect,D as newObjectIdString};
3
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/connect.ts", "../src/Collections.ts", "../src/extensions/Collection.ts", "../src/utils.ts", "../src/index.ts"],
4
- "sourcesContent": ["import { MongoClient } from \"mongodb\";\nimport { InSiteCollections } from \"./Collections\";\nimport type { InSiteDB, Options } from \"./types\";\n\n\nexport async function connect({ url, name, ...mongoClientOptions }: Options) {\n\t\n\tif (/localhost/.test(url))\n\t\turl = url.replace(/localhost/, \"127.0.0.1\");\n\t\n\tconst client = new MongoClient(url, {\n\t\tmaxPoolSize: 100,\n\t\t...mongoClientOptions\n\t});\n\t\n\ttry {\n\t\tawait client.connect();\n\t\tconsole.info(\"\uD83C\uDF3F Mongo Client connected to\", url.replace(/(?<=\\/\\/)[^:]+?:[^@]+@/, \"\").replace(/[/?][^/]*$/, \"\"));\n\t} catch (error) {\n\t\tconsole.error(\"\uD83C\uDF3F\u2757\uFE0F Mongo Client connection: \", error);\n\t}\n\t\n\tclient\n\t\t.on(\"close\", () => console.error(\"\uD83C\uDF3F\u2757\uFE0F Mongo DB socket closed\"))\n\t\t.on(\"error\", error => console.error(\"\uD83C\uDF3F\u2757\uFE0F Mongo DB:\", error))\n\t\t.on(\"parseError\", error => console.error(\"\uD83C\uDF3F\u2757\uFE0F Mongo DB parse:\", error))\n\t\t.on(\"reconnect\", () => console.info(\"\uD83C\uDF3F Mongo DB reconnected\"))\n\t\t.on(\"timeout\", () => console.error(\"\uD83C\uDF3F\u2757\uFE0F Mongo DB timeout\"));\n\t\n\tconst db = client.db(name) as InSiteDB;\n\t\n\tconst collections = new InSiteCollections(db);\n\t\n\treturn {\n\t\tclient,\n\t\tdb,\n\t\tcollections\n\t};\n}\n", "import type { ChangeStream, ChangeStreamDocument, Document } from \"mongodb\";\nimport type {\n\tInSiteCollection,\n\tInSiteCollectionOptions,\n\tInSiteDB,\n\tInSiteWatchedCollection\n} from \"./types\";\n\n\n/** @this ChangeStream */\nfunction handleChangeStreamChange(this: ChangeStream, next: ChangeStreamDocument) {\n\t\n\tif (process.env.NODE_ENV === \"development\")\n\t\tconsole.log(\"Change stream change\", (this.parent as InSiteWatchedCollection).collectionName, next);\n\t\n\tfor (const listener of (this.parent as InSiteWatchedCollection).changeListeners!)\n\t\tlistener(next);\n\t\n}\n\n/** @this ChangeStream */\nfunction handleChangeStreamError(this: ChangeStream, error: Error) {\n\tconsole.error(`\uD83C\uDF3F\u2757\uFE0F Mongo ${(this.parent as InSiteWatchedCollection).collectionName} Change Stream:\\n`, error.stack);\n\t\n}\n\n\nexport class InSiteCollections extends Map<string, InSiteCollection> {\n\tconstructor(db: InSiteDB) {\n\t\tsuper();\n\t\t\n\t\tthis.db = db;\n\t\t\n\t}\n\t\n\tdb: InSiteDB;\n\t\n\t[key: string]: InSiteCollection | unknown;\n\t\n\tasync ensure<Doc extends Document>(name: string, options: { watch: false } & InSiteCollectionOptions): Promise<InSiteCollection<Doc>>;\n\tasync ensure<Doc extends Document>(name: string, options?: { watch?: true } & InSiteCollectionOptions): Promise<InSiteWatchedCollection<Doc>>;\n\tasync ensure(name: string, options: InSiteCollectionOptions = {}) {\n\t\t\n\t\tconst { db } = this;\n\t\t\n\t\tlet collection = this.get(name);\n\t\t\n\t\tif (!collection) {\n\t\t\tif ((await db.listCollections({ name }, { nameOnly: true }).toArray()).length)\n\t\t\t\tcollection = db.collection(name);\n\t\t\telse {\n\t\t\t\tcollection = await db.createCollection(name, {\n\t\t\t\t\t...options.jsonSchema && { validator: { $jsonSchema: options.jsonSchema } },\n\t\t\t\t\t...options.blockCompressor && { storageEngine: { wiredTiger: { configString: `block_compressor=${options.blockCompressor}` } } }\n\t\t\t\t});\n\t\t\t\tdelete options.jsonSchema;\n\t\t\t\tdelete options.blockCompressor;\n\t\t\t}\n\t\t\t\n\t\t\tthis.set(name, collection);\n\t\t\tthis[name] = collection;\n\t\t\t\n\t\t\tif (options.watch !== false) {\n\t\t\t\tcollection.changeListeners = new Set();\n\t\t\t\t\n\t\t\t\tcollection.changeStream =\n\t\t\t\t\tcollection.watch(undefined, { fullDocument: options.fullDocument === false ? undefined : \"updateLookup\" })\n\t\t\t\t\t\t.on(\"change\", handleChangeStreamChange)\n\t\t\t\t\t\t.on(\"error\", handleChangeStreamError);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (options.jsonSchema)\n\t\t\tawait db.command({\n\t\t\t\tcollMod: name,\n\t\t\t\t...options.jsonSchema && { validator: { $jsonSchema: options.jsonSchema } }\n\t\t\t});\n\t\t\n\t\treturn collection;\n\t}\n\t\n}\n", "import { type ChangeStreamDocument, Collection } from \"mongodb\";\nimport { InSiteCollectionIndexes } from \"../types\";\n\n\ndeclare module \"mongodb\" {\n\texport interface Collection<TSchema> { // eslint-disable-line no-shadow\n\t\tchangeListeners?: Set<(listener: ChangeStreamDocument<TSchema>) => void>;\n\t\tchangeStream?: ChangeStream<TSchema>;\n\t\tensureIndexes(indexesToEnsure: InSiteCollectionIndexes): Promise<void>;\n\t}\n}\n\n\nCollection.prototype.ensureIndexes = async function (indexesToEnsure) {\n\t\n\t// const existingIndexes = await this.indexes();\n\t\n\t// TODO:\n\t\n\ttry {\n\t\tfor (const indexToEnsure of indexesToEnsure)\n\t\t\tawait this.createIndex(...indexToEnsure);\n\t} catch {}\n\t\n};\n", "import { ObjectId } from \"mongodb\";\n\n\nexport function newObjectIdString() {\n\treturn (new ObjectId()).toString();\n}\n", "export type { InSiteCollections } from \"./Collections\";\nexport * from \"./connect\";\nexport * from \"./extensions\";\nexport * from \"./types\";\nexport * from \"./utils\";\nexport * from \"mongodb\";\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { MongoClient } from \"mongodb\";\nimport { InSiteCollections } from \"./Collections\";\nimport type { InSiteDB, Options } from \"./types\";\n\n\nexport async function connect({ url, name, ...mongoClientOptions }: Options) {\n\t\n\tif (/localhost/.test(url))\n\t\turl = url.replace(/localhost/, \"127.0.0.1\");\n\t\n\tconst client = new MongoClient(url, {\n\t\tmaxPoolSize: 100,\n\t\t...mongoClientOptions\n\t});\n\t\n\ttry {\n\t\tawait client.connect();\n\t\tconsole.info(\"\uD83C\uDF3F Mongo Client connected to\", url.replace(/(?<=\\/\\/)[^:]+?:[^@]+@/, \"\").replace(/[/?][^/]*$/, \"\"));\n\t} catch (error) {\n\t\tconsole.error(\"\uD83C\uDF3F\u2757\uFE0F Mongo Client connection: \", error);\n\t}\n\t\n\tclient\n\t\t.on(\"close\", () => console.error(\"\uD83C\uDF3F\u2757\uFE0F Mongo DB socket closed\"))\n\t\t.on(\"error\", error => console.error(\"\uD83C\uDF3F\u2757\uFE0F Mongo DB:\", error))\n\t\t.on(\"parseError\", error => console.error(\"\uD83C\uDF3F\u2757\uFE0F Mongo DB parse:\", error))\n\t\t.on(\"reconnect\", () => console.info(\"\uD83C\uDF3F Mongo DB reconnected\"))\n\t\t.on(\"timeout\", () => console.error(\"\uD83C\uDF3F\u2757\uFE0F Mongo DB timeout\"));\n\t\n\tconst db = client.db(name) as InSiteDB;\n\t\n\tconst collections = new InSiteCollections(db);\n\t\n\treturn {\n\t\tclient,\n\t\tdb,\n\t\tcollections\n\t};\n}\n", "import type { ChangeStream, ChangeStreamDocument, Document } from \"mongodb\";\nimport type {\n\tInSiteCollection,\n\tInSiteCollectionOptions,\n\tInSiteDB,\n\tInSiteWatchedCollection\n} from \"./types\";\n\n\n/** @this ChangeStream */\nfunction handleChangeStreamChange(this: ChangeStream, next: ChangeStreamDocument) {\n\t\n\tif (process.env.NODE_ENV === \"development\")\n\t\tconsole.info(\"\uD83C\uDF8F Change stream change\", (this.parent as InSiteWatchedCollection).collectionName, next);\n\t\n\tfor (const listener of (this.parent as InSiteWatchedCollection).changeListeners!)\n\t\tlistener(next);\n\t\n}\n\n/** @this ChangeStream */\nfunction handleChangeStreamError(this: ChangeStream, error: Error) {\n\tconsole.error(`\uD83C\uDF3F\u2757\uFE0F Mongo ${(this.parent as InSiteWatchedCollection).collectionName} Change Stream:\\n`, error.stack);\n\t\n}\n\n\nexport class InSiteCollections extends Map<string, InSiteCollection> {\n\tconstructor(db: InSiteDB) {\n\t\tsuper();\n\t\t\n\t\tthis.db = db;\n\t\t\n\t}\n\t\n\tdb: InSiteDB;\n\t\n\t[key: string]: InSiteCollection | unknown;\n\t\n\tasync ensure<Doc extends Document>(name: string, options: InSiteCollectionOptions & { watch: false }): Promise<InSiteCollection<Doc>>;\n\tasync ensure<Doc extends Document>(name: string, options?: InSiteCollectionOptions & { watch?: true }): Promise<InSiteWatchedCollection<Doc>>;\n\tasync ensure(name: string, options: InSiteCollectionOptions = {}) {\n\t\t\n\t\tconst { db } = this;\n\t\t\n\t\tlet collection = this.get(name);\n\t\t\n\t\tif (!collection) {\n\t\t\tif ((await db.listCollections({ name }, { nameOnly: true }).toArray()).length)\n\t\t\t\tcollection = db.collection(name);\n\t\t\telse {\n\t\t\t\tcollection = await db.createCollection(name, {\n\t\t\t\t\t...options.jsonSchema && { validator: { $jsonSchema: options.jsonSchema } },\n\t\t\t\t\t...options.blockCompressor && { storageEngine: { wiredTiger: { configString: `block_compressor=${options.blockCompressor}` } } }\n\t\t\t\t});\n\t\t\t\tdelete options.jsonSchema;\n\t\t\t\tdelete options.blockCompressor;\n\t\t\t}\n\t\t\t\n\t\t\tthis.set(name, collection);\n\t\t\tthis[name] = collection;\n\t\t\t\n\t\t\tif (options.watch !== false) {\n\t\t\t\tcollection.changeListeners = new Set();\n\t\t\t\t\n\t\t\t\tcollection.changeStream =\n\t\t\t\t\tcollection.watch(undefined, { fullDocument: options.fullDocument === false ? undefined : \"updateLookup\" })\n\t\t\t\t\t\t.on(\"change\", handleChangeStreamChange)\n\t\t\t\t\t\t.on(\"error\", handleChangeStreamError);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (options.jsonSchema)\n\t\t\tawait db.command({\n\t\t\t\tcollMod: name,\n\t\t\t\t...options.jsonSchema && { validator: { $jsonSchema: options.jsonSchema } }\n\t\t\t});\n\t\t\n\t\tif (options.indexes)\n\t\t\tawait collection.ensureIndexes(options.indexes);\n\t\t\n\t\treturn collection;\n\t}\n\t\n}\n", "import { type ChangeStreamDocument, Collection } from \"mongodb\";\nimport { InSiteCollectionIndexes } from \"../types\";\n\n\ndeclare module \"mongodb\" {\n\texport interface Collection<TSchema> { // eslint-disable-line no-shadow\n\t\tchangeListeners?: Set<(listener: ChangeStreamDocument<TSchema>) => void>;\n\t\tchangeStream?: ChangeStream<TSchema>;\n\t\tensureIndexes(indexesToEnsure: InSiteCollectionIndexes): Promise<void>;\n\t}\n}\n\n\nCollection.prototype.ensureIndexes = async function (indexesToEnsure) {\n\t\n\t// const existingIndexes = await this.indexes();\n\t\n\t// TODO:\n\t\n\ttry {\n\t\tfor (const indexToEnsure of indexesToEnsure)\n\t\t\tawait this.createIndex(...indexToEnsure);\n\t} catch {}\n\t\n};\n", "import { ObjectId } from \"mongodb\";\n\n\nexport function newObjectIdString() {\n\treturn (new ObjectId()).toString();\n}\n", "export type { InSiteCollections } from \"./Collections\";\nexport * from \"./connect\";\nexport * from \"./extensions\";\nexport * from \"./types\";\nexport * from \"./utils\";\nexport * from \"mongodb\";\n"],
5
+ "mappings": "AAAA,OAAS,eAAAA,MAAmB,UCU5B,SAASC,EAA6CC,EAA4B,CAE7E,QAAQ,IAAI,WAAa,eAC5B,QAAQ,KAAK,iCAA4B,KAAK,OAAmC,eAAgBA,CAAI,EAEtG,QAAWC,KAAa,KAAK,OAAmC,gBAC/DA,EAASD,CAAI,CAEf,CAGA,SAASE,EAA4CC,EAAc,CAClE,QAAQ,MAAM,+BAAe,KAAK,OAAmC,cAAc;AAAA,EAAqBA,EAAM,KAAK,CAEpH,CAGO,IAAMC,EAAN,cAAgC,GAA8B,CACpE,YAAYC,EAAc,CACzB,MAAM,EAEN,KAAK,GAAKA,CAEX,CAEA,GAMA,MAAM,OAAOC,EAAcC,EAAmC,CAAC,EAAG,CAEjE,GAAM,CAAE,GAAAF,CAAG,EAAI,KAEXG,EAAa,KAAK,IAAIF,CAAI,EAE9B,OAAKE,KACC,MAAMH,EAAG,gBAAgB,CAAE,KAAAC,CAAK,EAAG,CAAE,SAAU,EAAK,CAAC,EAAE,QAAQ,GAAG,OACtEE,EAAaH,EAAG,WAAWC,CAAI,GAE/BE,EAAa,MAAMH,EAAG,iBAAiBC,EAAM,CAC5C,GAAGC,EAAQ,YAAc,CAAE,UAAW,CAAE,YAAaA,EAAQ,UAAW,CAAE,EAC1E,GAAGA,EAAQ,iBAAmB,CAAE,cAAe,CAAE,WAAY,CAAE,aAAc,oBAAoBA,EAAQ,eAAe,EAAG,CAAE,CAAE,CAChI,CAAC,EACD,OAAOA,EAAQ,WACf,OAAOA,EAAQ,iBAGhB,KAAK,IAAID,EAAME,CAAU,EACzB,KAAKF,CAAI,EAAIE,EAETD,EAAQ,QAAU,KACrBC,EAAW,gBAAkB,IAAI,IAEjCA,EAAW,aACVA,EAAW,MAAM,OAAW,CAAE,aAAcD,EAAQ,eAAiB,GAAQ,OAAY,cAAe,CAAC,EACvG,GAAG,SAAUR,CAAwB,EACrC,GAAG,QAASG,CAAuB,IAIpCK,EAAQ,YACX,MAAMF,EAAG,QAAQ,CAChB,QAASC,EACT,GAAGC,EAAQ,YAAc,CAAE,UAAW,CAAE,YAAaA,EAAQ,UAAW,CAAE,CAC3E,CAAC,EAEEA,EAAQ,SACX,MAAMC,EAAW,cAAcD,EAAQ,OAAO,EAExCC,CACR,CAED,ED/EA,eAAsBC,EAAQ,CAAE,IAAAC,EAAK,KAAAC,EAAM,GAAGC,CAAmB,EAAY,CAExE,YAAY,KAAKF,CAAG,IACvBA,EAAMA,EAAI,QAAQ,YAAa,WAAW,GAE3C,IAAMG,EAAS,IAAIC,EAAYJ,EAAK,CACnC,YAAa,IACb,GAAGE,CACJ,CAAC,EAED,GAAI,CACH,MAAMC,EAAO,QAAQ,EACrB,QAAQ,KAAK,sCAAgCH,EAAI,QAAQ,yBAA0B,EAAE,EAAE,QAAQ,aAAc,EAAE,CAAC,CACjH,OAASK,EAAO,CACf,QAAQ,MAAM,kDAAkCA,CAAK,CACtD,CAEAF,EACE,GAAG,QAAS,IAAM,QAAQ,MAAM,8CAA6B,CAAC,EAC9D,GAAG,QAASE,GAAS,QAAQ,MAAM,kCAAkBA,CAAK,CAAC,EAC3D,GAAG,aAAcA,GAAS,QAAQ,MAAM,wCAAwBA,CAAK,CAAC,EACtE,GAAG,YAAa,IAAM,QAAQ,KAAK,gCAAyB,CAAC,EAC7D,GAAG,UAAW,IAAM,QAAQ,MAAM,wCAAuB,CAAC,EAE5D,IAAMC,EAAKH,EAAO,GAAGF,CAAI,EAEnBM,EAAc,IAAIC,EAAkBF,CAAE,EAE5C,MAAO,CACN,OAAAH,EACA,GAAAG,EACA,YAAAC,CACD,CACD,CEtCA,OAAoC,cAAAE,MAAkB,UAatDA,EAAW,UAAU,cAAgB,eAAgBC,EAAiB,CAMrE,GAAI,CACH,QAAWC,KAAiBD,EAC3B,MAAM,KAAK,YAAY,GAAGC,CAAa,CACzC,MAAQ,CAAC,CAEV,ECxBA,OAAS,YAAAC,MAAgB,UAGlB,SAASC,GAAoB,CACnC,OAAQ,IAAID,EAAS,EAAG,SAAS,CAClC,CCAA,WAAc",
6
6
  "names": ["MongoClient", "handleChangeStreamChange", "next", "listener", "handleChangeStreamError", "error", "InSiteCollections", "db", "name", "options", "collection", "connect", "url", "name", "mongoClientOptions", "client", "MongoClient", "error", "db", "collections", "InSiteCollections", "Collection", "indexesToEnsure", "indexToEnsure", "ObjectId", "newObjectIdString"]
7
7
  }
package/dist/types.d.ts CHANGED
@@ -9,6 +9,7 @@ export type InSiteCollectionSchema = JSONSchema4;
9
9
  export type InSiteCollectionOptions = {
10
10
  fullDocument?: boolean;
11
11
  jsonSchema?: InSiteCollectionSchema;
12
+ indexes?: InSiteCollectionIndexes;
12
13
  blockCompressor?: "none" | "snappy" | "zlib" | "zstd";
13
14
  watch?: boolean;
14
15
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EACX,UAAU,EACV,oBAAoB,EACpB,EAAE,EACF,QAAQ,EACR,kBAAkB,EAClB,kBAAkB,EAClB,MAAM,SAAS,CAAC;AAGjB,MAAM,MAAM,OAAO,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACb,GAAG,kBAAkB,CAAC;AAEvB,MAAM,MAAM,QAAQ,GAAG,EAAE,CAAC;AAE1B,MAAM,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAEjD,MAAM,MAAM,uBAAuB,GAAG;IACrC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACtD,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,CAAE,kBAAkB,EAAE,oBAAoB,CAAC,CAAE,EAAE,CAAC;AAEtF,MAAM,MAAM,gBAAgB,CAAC,GAAG,SAAS,QAAQ,GAAG,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AAEhF,MAAM,MAAM,uBAAuB,CAAC,GAAG,SAAS,QAAQ,GAAG,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EACX,UAAU,EACV,oBAAoB,EACpB,EAAE,EACF,QAAQ,EACR,kBAAkB,EAClB,kBAAkB,EAClB,MAAM,SAAS,CAAC;AAGjB,MAAM,MAAM,OAAO,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACb,GAAG,kBAAkB,CAAC;AAEvB,MAAM,MAAM,QAAQ,GAAG,EAAE,CAAC;AAE1B,MAAM,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAEjD,MAAM,MAAM,uBAAuB,GAAG;IACrC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACtD,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,CAAE,kBAAkB,EAAE,oBAAoB,CAAC,CAAE,EAAE,CAAC;AAEtF,MAAM,MAAM,gBAAgB,CAAC,GAAG,SAAS,QAAQ,GAAG,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AAEhF,MAAM,MAAM,uBAAuB,CAAC,GAAG,SAAS,QAAQ,GAAG,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "insite-db",
3
- "version": "2.0.2",
3
+ "version": "2.0.4",
4
4
  "description": "MongoDB for inSite",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.js",
8
- "packageManager": "bun@1.1.22",
8
+ "packageManager": "bun@1.2.2",
9
9
  "scripts": {
10
10
  "test": "echo \"Error: no test specified\" && exit 1",
11
11
  "build": "bun .conveyer.js",
@@ -23,13 +23,13 @@
23
23
  "author": "Eugene Nesvetaev <dev@nesvet.dev> (https://nesvet.dev/)",
24
24
  "license": "MIT",
25
25
  "dependencies": {
26
- "mongodb": "^6.8.0"
26
+ "mongodb": "^6.13.0"
27
27
  },
28
28
  "devDependencies": {
29
- "@nesvet/conveyer": "^2.2.4",
30
- "@nesvet/eslint-config": "^2.0.24",
29
+ "@nesvet/conveyer": "^2.2.5",
30
+ "@nesvet/eslint-config": "^2.0.34",
31
31
  "@types/json-schema": "^7.0.15",
32
- "@types/node": "^22.1.0",
33
- "typescript": "^5.5.4"
32
+ "@types/node": "^22.13.1",
33
+ "typescript": "^5.7.3"
34
34
  }
35
35
  }
package/bun.lockb DELETED
Binary file