insite-subscriptions-server 2.0.3 → 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.
- package/bun.lockb +0 -0
- package/dist/CollectionMapPublication.d.ts +1 -1
- package/dist/CollectionMapPublication.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +3 -3
- package/dist/ws/CollectionMapPublication.d.ts +5 -3
- package/dist/ws/CollectionMapPublication.d.ts.map +1 -1
- package/dist/ws/CollectionMapSubscriptionHandle.d.ts +1 -1
- package/dist/ws/CollectionMapSubscriptionHandle.d.ts.map +1 -1
- package/dist/ws/SubscriptionHandler.d.ts +19 -12
- package/dist/ws/SubscriptionHandler.d.ts.map +1 -1
- package/dist/ws/Subscriptions.d.ts +3 -3
- package/dist/ws/Subscriptions.d.ts.map +1 -1
- package/dist/ws/index.d.ts +0 -1
- package/dist/ws/index.d.ts.map +1 -1
- package/dist/ws/index.js +12 -1
- package/dist/ws/index.js.map +4 -4
- package/dist/ws/types.d.ts +3 -8
- package/dist/ws/types.d.ts.map +1 -1
- package/package.json +5 -4
package/bun.lockb
CHANGED
|
Binary file
|
|
@@ -11,7 +11,7 @@ type QueryProps<D extends Document> = {
|
|
|
11
11
|
triggers?: string[];
|
|
12
12
|
};
|
|
13
13
|
export declare class CollectionMapPublication<D extends Document = Document, SA extends SubscriptionArgs = SubscriptionArgs> extends Publication<SA> {
|
|
14
|
-
constructor(
|
|
14
|
+
constructor(collection: InSiteWatchedCollection<D>, name: string, queryProps?: ((...args: SA) => false | null | QueryProps<D> | void) | false | null | QueryProps<D>, transform?: (doc: PartialWithId<D>, args: SA) => void);
|
|
15
15
|
type: string;
|
|
16
16
|
collection: InSiteWatchedCollection<D>;
|
|
17
17
|
subscriptions: Set<CollectionMapSubscriptionHandle<D, SA>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollectionMapPublication.d.ts","sourceRoot":"","sources":["../src/CollectionMapPublication.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,oBAAoB,EACpB,QAAQ,EACR,MAAM,EACN,uBAAuB,EACvB,IAAI,EACJ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AA0C3E,eAAO,MAAM,4BAA4B,+BAAsC,CAAC;AAEhF,KAAK,UAAU,CAAC,CAAC,SAAS,QAAQ,IAAI;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAGF,qBAAa,wBAAwB,CACpC,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,EAAE,SAAS,gBAAgB,GAAG,gBAAgB,CAC7C,SAAQ,WAAW,CAAC,EAAE,CAAC;gBAEvB,
|
|
1
|
+
{"version":3,"file":"CollectionMapPublication.d.ts","sourceRoot":"","sources":["../src/CollectionMapPublication.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,oBAAoB,EACpB,QAAQ,EACR,MAAM,EACN,uBAAuB,EACvB,IAAI,EACJ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AA0C3E,eAAO,MAAM,4BAA4B,+BAAsC,CAAC;AAEhF,KAAK,UAAU,CAAC,CAAC,SAAS,QAAQ,IAAI;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAGF,qBAAa,wBAAwB,CACpC,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,EAAE,SAAS,gBAAgB,GAAG,gBAAgB,CAC7C,SAAQ,WAAW,CAAC,EAAE,CAAC;gBAEvB,UAAU,EAAE,uBAAuB,CAAC,CAAC,CAAC,EACtC,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,EAClG,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,IAAI;IAUtD,IAAI,SAAS;IAEb,UAAU,6BAAC;IACH,aAAa,EAAE,GAAG,CAAC,+BAA+B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACnE,UAAU,qBAfe,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,qCAexD;IACX,SAAS,SAfU,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,cAe5C;IAEV,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAKlC,cAAc,CAAC,IAAI,EAAE,EAAE;;;;;;;;IA4BjB,iBAAiB,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI;IAoDlG,OAAO,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI;IAI9C,WAAW,iBAAkB,kBAAkB,CAAC,EAAE,CAAC,UAUjD;IAEF,YAAY;IASZ,aAAa,iBAAkB,kBAAkB,CAAC,EAAE,CAAC,UAInD;CAEF"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import b from"sift";var u=globalThis.__insite_publications??=new Map,p=class{constructor(e,t){this.name=e,t&&Object.assign(this,t),u.set(e,this)}name;onSubscribe;onUnsubscribe;type="object";subscriptions=new Set;fetchSubscription(e,...t){return this.fetch?.(...e.args)}subscribe(e){this.subscriptions.add(e),this.onSubscribe?.(e)}changed(e){for(let t of this.subscriptions)t.changed(e)}unsubscribe(e){this.onUnsubscribe?.(e),this.subscriptions.delete(e)}static publications=u};var d=class{constructor(e,t,o,n,i){let s=u.get(e);s?(this.publication=s,this.args=t,this.handler=o,i||(this.publication.subscribe(this),n&&this.changed(null))):process.env.NODE_ENV==="development"&&console.error("Unknown publication",e)}publication;args;handler;async changed(e){this.handler(await this.publication.fetchSubscription(this,e),e)}cancel(){this.publication?.unsubscribe(this)}renew(){return this.publication?.unsubscribe(this),this.publication?.subscribe(this),this.changed(null)}};var c=class extends d{constructor(e,t,o,n){super(e,t,o,n,!0),this.publication&&(this.publication.subscribe(this),n&&this.changed(null))}ids=new Set;query=null;projection=null;isProjectionInclusive=!1;fields=null;sort=null;match;async changed(e){this.handler([await this.publication.fetchSubscription(this,e)])}updates=[];flushTimeout;flushUpdates=()=>{this.updates.length&&(this.handler(this.updates),this.updates=[])};collectionChangeListener=async e=>{!h.has(e)&&"documentKey"in e&&(this.ids.has(e.documentKey._id)?e.operationType!=="update"||!this.fields||e.updateDescription.updatedFields&&Object.keys(e.updateDescription.updatedFields).some(t=>this.fields.has(t)):"fullDocument"in e&&this.match(e.fullDocument))&&(clearTimeout(this.flushTimeout),this.updates.push(await this.publication.fetchSubscription(this,e)),this.flushTimeout=setTimeout(this.flushUpdates,1))}};function l(r,e,t=!0,o=!0){if(e)if(t){let n={};for(let i in e){let s=e[i];n[i]=typeof s=="object"?Array.isArray(r[i])?r[i].map(a=>l(a,s,!0,!1)):l(r[i],s,!0,!1):r[i]}return o&&e._id===0&&delete n._id,n}else{let n={...r};for(let i in e){let s=e[i];typeof s=="object"?n[i]=Array.isArray(r[i])?r[i].map(a=>l(a,s,!1,!1)):l(r[i],s,!1,!1):delete n[i]}return n}return r}var h=new WeakSet,m=class extends p{constructor(e,t,o,n){super(
|
|
1
|
+
import b from"sift";var u=globalThis.__insite_publications??=new Map,p=class{constructor(e,t){this.name=e,t&&Object.assign(this,t),u.set(e,this)}name;onSubscribe;onUnsubscribe;type="object";subscriptions=new Set;fetchSubscription(e,...t){return this.fetch?.(...e.args)}subscribe(e){this.subscriptions.add(e),this.onSubscribe?.(e)}changed(e){for(let t of this.subscriptions)t.changed(e)}unsubscribe(e){this.onUnsubscribe?.(e),this.subscriptions.delete(e)}static publications=u};var d=class{constructor(e,t,o,n,i){let s=u.get(e);s?(this.publication=s,this.args=t,this.handler=o,i||(this.publication.subscribe(this),n&&this.changed(null))):process.env.NODE_ENV==="development"&&console.error("Unknown publication",e)}publication;args;handler;async changed(e){this.handler(await this.publication.fetchSubscription(this,e),e)}cancel(){this.publication?.unsubscribe(this)}renew(){return this.publication?.unsubscribe(this),this.publication?.subscribe(this),this.changed(null)}};var c=class extends d{constructor(e,t,o,n){super(e,t,o,n,!0),this.publication&&(this.publication.subscribe(this),n&&this.changed(null))}ids=new Set;query=null;projection=null;isProjectionInclusive=!1;fields=null;sort=null;match;async changed(e){this.handler([await this.publication.fetchSubscription(this,e)])}updates=[];flushTimeout;flushUpdates=()=>{this.updates.length&&(this.handler(this.updates),this.updates=[])};collectionChangeListener=async e=>{!h.has(e)&&"documentKey"in e&&(this.ids.has(e.documentKey._id)?e.operationType!=="update"||!this.fields||e.updateDescription.updatedFields&&Object.keys(e.updateDescription.updatedFields).some(t=>this.fields.has(t)):"fullDocument"in e&&this.match(e.fullDocument))&&(clearTimeout(this.flushTimeout),this.updates.push(await this.publication.fetchSubscription(this,e)),this.flushTimeout=setTimeout(this.flushUpdates,1))}};function l(r,e,t=!0,o=!0){if(e)if(t){let n={};for(let i in e){let s=e[i];n[i]=typeof s=="object"?Array.isArray(r[i])?r[i].map(a=>l(a,s,!0,!1)):l(r[i],s,!0,!1):r[i]}return o&&e._id===0&&delete n._id,n}else{let n={...r};for(let i in e){let s=e[i];typeof s=="object"?n[i]=Array.isArray(r[i])?r[i].map(a=>l(a,s,!1,!1)):l(r[i],s,!1,!1):delete n[i]}return n}return r}var h=new WeakSet,m=class extends p{constructor(e,t,o,n){super(t),this.collection=e,this.queryProps=o,this.transform=n}type="map";collection;queryProps;transform;skip(e){h.add(e)}makeQueryProps(e){let{query:t=null,projection:o=null,sort:n=null,triggers:i}=(typeof this.queryProps=="function"?this.queryProps(...e):this.queryProps)||{},s=!1,a=null;if(o){for(let f in o)if(s=!!o[f],f!=="_id")break;s&&(a=new Set([...Object.keys(t??{}),...Object.keys(o),...i??[]]),a.delete("_id"),o._id!==0&&(o._id=1))}return{query:t,projection:o,isProjectionInclusive:s,fields:a,sort:n,args:e}}async fetchSubscription(e,t){if(e instanceof c&&e.query){if(t&&"documentKey"in t){let i=t.documentKey._id;if(t.operationType==="insert"||t.operationType!=="delete"&&e.match(t.fullDocument)){let s=l(t.fullDocument,e.projection,e.isProjectionInclusive);return this.transform?.(s,e.args),e.ids.has(i)?["u",s,"updateDescription"in t&&t.updateDescription.updatedFields&&Object.keys(t.updateDescription.updatedFields)]:(e.ids.add(i),["c",s])}return e.ids.delete(i),["d",i]}let o=this.collection.find(e.query);e.projection&&o.project(e.projection),e.sort&&o.sort(e.sort);let n=await o.toArray();if(e.ids)if(e.ids.clear(),this.transform)for(let i of n)e.ids.add(i._id),this.transform(i,e.args);else for(let i of n)e.ids.add(i._id);else if(this.transform)for(let i of n)this.transform(i,e.args);return["i",n,e.sort]}return null}changed(e){return Promise.all([...this.subscriptions].map(t=>t.changed(e)))}onSubscribe=e=>{e instanceof c&&(Object.assign(e,this.makeQueryProps(e.args)),e.query&&(e.match=b(e.query),this.collection.changeListeners.add(e.collectionChangeListener)))};flushInitial(){return Promise.all([...this.subscriptions].map(async e=>{let t=await this.fetchSubscription(e,null);e.handler([t]),e.updates=[]}))}onUnsubscribe=e=>{e instanceof c&&e.query&&this.collection.changeListeners.delete(e.collectionChangeListener)}};export{m as CollectionMapPublication,c as CollectionMapSubscriptionHandle,p as Publication,d as SubscriptionHandle,u as publications,h as skippedChangeStreamDocuments};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/CollectionMapPublication.ts", "../src/Publication.ts", "../src/SubscriptionHandle.ts", "../src/CollectionMapSubscriptionHandle.ts"],
|
|
4
|
-
"sourcesContent": ["import sift from \"sift\";\nimport type {\n\tChangeStreamDocument,\n\tDocument,\n\tFilter,\n\tInSiteWatchedCollection,\n\tSort\n} from \"insite-db\";\nimport { CollectionMapSubscriptionHandle } from \"./CollectionMapSubscriptionHandle\";\nimport { Publication } from \"./Publication\";\nimport { SubscriptionHandle } from \"./SubscriptionHandle\";\nimport type { PartialWithId, Projection, SubscriptionArgs } from \"./types\";\n\n\nfunction projectDocument<D extends Document>(document: D, projection: null, isInclusive?: boolean, isTop?: boolean): D;\nfunction projectDocument<D extends Document>(document: D, projection: Projection, isInclusive?: boolean, isTop?: boolean): Partial<D>;\nfunction projectDocument<D extends Document>(document: D, projection: null | Projection, isInclusive?: boolean, isTop?: boolean): D | Partial<D>;\nfunction projectDocument<D extends Document>(document: D, projection: null | Projection, isInclusive = true, isTop = true) {\n\tif (projection)\n\t\tif (isInclusive) {\n\t\t\tconst projected: Record<string, unknown> = {};\n\t\t\tfor (const key in projection) { // eslint-disable-line guard-for-in\n\t\t\t\tconst subprojection = projection[key];\n\t\t\t\tprojected[key] =\n\t\t\t\t\ttypeof subprojection == \"object\" ?\n\t\t\t\t\t\tArray.isArray(document[key]) ?\n\t\t\t\t\t\t\tdocument[key].map((item: Document) => projectDocument(item, subprojection, true, false)) :\n\t\t\t\t\t\t\tprojectDocument(document[key], subprojection, true, false) :\n\t\t\t\t\t\tdocument[key];\n\t\t\t}\n\t\t\tif (isTop && projection._id === 0)\n\t\t\t\tdelete projected._id;\n\t\t\t\n\t\t\treturn projected as Partial<D>;\n\t\t} else {\n\t\t\tconst projected = { ...document } as Record<string, unknown>;\n\t\t\tfor (const key in projection) { // eslint-disable-line guard-for-in\n\t\t\t\tconst subprojection = projection[key];\n\t\t\t\tif (typeof subprojection == \"object\")\n\t\t\t\t\tprojected[key] =\n\t\t\t\t\t\tArray.isArray(document[key]) ?\n\t\t\t\t\t\t\tdocument[key].map((item: Document) => projectDocument(item, subprojection, false, false)) :\n\t\t\t\t\t\t\tprojectDocument(document[key], subprojection, false, false);\n\t\t\t\telse\n\t\t\t\t\tdelete projected[key];\n\t\t\t}\n\t\t\t\n\t\t\treturn projected as Partial<D>;\n\t\t}\n\t\n\treturn document;\n}\n\nexport const skippedChangeStreamDocuments = new WeakSet<ChangeStreamDocument>();\n\ntype QueryProps<D extends Document> = {\n\tquery?: Filter<D>;\n\tprojection?: Projection;\n\tsort?: Sort;\n\ttriggers?: string[];\n};\n\n\nexport class CollectionMapPublication<\n\tD extends Document = Document,\n\tSA extends SubscriptionArgs = SubscriptionArgs\n> extends Publication<SA> {\n\tconstructor(\n\t\tname: string,\n\t\tcollection: InSiteWatchedCollection<D>,\n\t\tqueryProps?: ((...args: SA) => false | null | QueryProps<D> | void) | false | null | QueryProps<D>,\n\t\ttransform?: (doc: PartialWithId<D>, args: SA) => void\n\t) {\n\t\tsuper(name);\n\t\t\n\t\tthis.collection = collection;\n\t\tthis.queryProps = queryProps;\n\t\tthis.transform = transform;\n\t\t\n\t}\n\t\n\ttype = \"map\";\n\t\n\tcollection;\n\tdeclare subscriptions: Set<CollectionMapSubscriptionHandle<D, SA>>;\n\tqueryProps;\n\ttransform;\n\t\n\tskip(next: ChangeStreamDocument<D>) {\n\t\tskippedChangeStreamDocuments.add(next);\n\t\t\n\t}\n\t\n\tmakeQueryProps(args: SA) {\n\t\tconst {\n\t\t\tquery = null,\n\t\t\tprojection = null,\n\t\t\tsort = null,\n\t\t\ttriggers\n\t\t} = (typeof this.queryProps == \"function\" ? this.queryProps(...args) : this.queryProps) || {};\n\t\t\n\t\tlet isProjectionInclusive = false;\n\t\tlet fields = null;\n\t\tif (projection) {\n\t\t\t// eslint-disable-next-line guard-for-in\n\t\t\tfor (const key in projection) {\n\t\t\t\tisProjectionInclusive = !!projection[key];\n\t\t\t\tif (key !== \"_id\")\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (isProjectionInclusive) {\n\t\t\t\tfields = new Set([ ...Object.keys(query ?? {}), ...Object.keys(projection), ...triggers ?? [] ]);\n\t\t\t\tfields.delete(\"_id\");\n\t\t\t\tif (projection._id !== 0)\n\t\t\t\t\tprojection._id = 1;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn { query, projection, isProjectionInclusive, fields, sort, args };\n\t}\n\t\n\tasync fetchSubscription(subscription: SubscriptionHandle<SA>, next: ChangeStreamDocument<D> | null) {\n\t\tif (subscription instanceof CollectionMapSubscriptionHandle && subscription.query) {\n\t\t\tif (next && \"documentKey\" in next) {\n\t\t\t\tconst _id = next.documentKey._id as unknown as string;\n\t\t\t\t\n\t\t\t\tif (next.operationType === \"insert\" || (next.operationType !== \"delete\" && subscription.match!(next.fullDocument!))) {\n\t\t\t\t\tconst doc = projectDocument(next.fullDocument!, subscription.projection, subscription.isProjectionInclusive);\n\t\t\t\t\tthis.transform?.(doc as PartialWithId<D>, subscription.args);\n\t\t\t\t\tif (subscription.ids.has(_id))\n\t\t\t\t\t\treturn [ \"u\"/* update */, doc, \"updateDescription\" in next && next.updateDescription.updatedFields && Object.keys(next.updateDescription.updatedFields) ];\n\t\t\t\t\t\n\t\t\t\t\tsubscription.ids.add(_id);\n\t\t\t\t\t\n\t\t\t\t\treturn [ \"c\"/* create */, doc ];\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tsubscription.ids.delete(_id);\n\t\t\t\t\n\t\t\t\treturn [ \"d\"/* delete */, _id ];\n\t\t\t\t\n\t\t\t}\n\t\t\tconst cursor = this.collection.find(subscription.query);\n\t\t\t\n\t\t\tif (subscription.projection)\n\t\t\t\tcursor.project(subscription.projection);\n\t\t\t\n\t\t\tif (subscription.sort)\n\t\t\t\tcursor.sort(subscription.sort);\n\t\t\t\n\t\t\tconst array = await cursor.toArray() as unknown as PartialWithId<D>[];\n\t\t\t\n\t\t\tif (subscription.ids) {\n\t\t\t\tsubscription.ids.clear();\n\t\t\t\tif (this.transform)\n\t\t\t\t\tfor (const item of array) {\n\t\t\t\t\t\tsubscription.ids.add(item._id);\n\t\t\t\t\t\tthis.transform(item, subscription.args);\n\t\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tfor (const item of array)\n\t\t\t\t\t\tsubscription.ids.add(item._id);\n\t\t\t} else if (this.transform)\n\t\t\t\tfor (const item of array)\n\t\t\t\t\tthis.transform(item, subscription.args);\n\t\t\t\n\t\t\treturn [ \"i\"/* initial */, array, subscription.sort ];\n\t\t\t\n\t\t}\n\t\t\n\t\treturn null;\n\t}\n\t\n\tchanged(reason: ChangeStreamDocument<D> | null) {\n\t\treturn Promise.all([ ...this.subscriptions ].map(subscription => subscription.changed(reason)));\n\t}\n\t\n\tonSubscribe = (subscription: SubscriptionHandle<SA>) => {\n\t\tif (subscription instanceof CollectionMapSubscriptionHandle) {\n\t\t\tObject.assign(subscription, this.makeQueryProps(subscription.args));\n\t\t\t\n\t\t\tif (subscription.query) {\n\t\t\t\tsubscription.match = sift(subscription.query);\n\t\t\t\tthis.collection.changeListeners.add(subscription.collectionChangeListener);\n\t\t\t}\n\t\t}\n\t\t\n\t};\n\t\n\tflushInitial() {\n\t\treturn Promise.all([ ...this.subscriptions ].map(async subscription => {\n\t\t\tconst fetched = await this.fetchSubscription(subscription, null);\n\t\t\tsubscription.handler!([ fetched ]);\n\t\t\tsubscription.updates = [];\n\t\t\t\n\t\t}));\n\t}\n\t\n\tonUnsubscribe = (subscription: SubscriptionHandle<SA>) => {\n\t\tif (subscription instanceof CollectionMapSubscriptionHandle && subscription.query)\n\t\t\tthis.collection.changeListeners.delete(subscription.collectionChangeListener);\n\t\t\n\t};\n\t\n}\n", "import type { SubscriptionHandle } from \"./SubscriptionHandle\";\nimport type { PublicationProps, SubscriptionArgs } from \"./types\";\n\n\ndeclare global {\n\tvar __insite_publications: Map<string, Publication>;// eslint-disable-line no-var\n}\n\nexport const publications =\n\tglobalThis.__insite_publications ??=\n\t\tnew Map();\n\nexport class Publication<SA extends SubscriptionArgs = SubscriptionArgs> {\n\tconstructor(name: string, props?: PublicationProps<SA>) {\n\t\tthis.name = name;\n\t\t\n\t\tif (props)\n\t\t\tObject.assign(this, props);\n\t\t\n\t\tpublications.set(name, this as Publication);\n\t\t\n\t}\n\t\n\treadonly name;\n\tonSubscribe?: PublicationProps<SA>[\"onSubscribe\"];\n\tonUnsubscribe?: PublicationProps<SA>[\"onUnsubscribe\"];\n\t\n\ttype = \"object\";\n\t\n\tsubscriptions = new Set<SubscriptionHandle<SA>>();\n\t\n\tfetch?(...args: SA): unknown;\n\t\n\tfetchSubscription(subscription: SubscriptionHandle<SA>, ..._: unknown[]) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn this.fetch?.(...subscription.args);\n\t}\n\t\n\tsubscribe(subscription: SubscriptionHandle<SA>) {\n\t\tthis.subscriptions.add(subscription);\n\t\tthis.onSubscribe?.(subscription);\n\t\t\n\t}\n\t\n\tchanged(reason: unknown) {\n\t\tfor (const subscription of this.subscriptions)\n\t\t\tsubscription.changed(reason);\n\t\t\n\t}\n\t\n\tunsubscribe(subscription: SubscriptionHandle<SA>) {\n\t\tthis.onUnsubscribe?.(subscription);\n\t\tthis.subscriptions.delete(subscription);\n\t\t\n\t}\n\t\n\t\n\tstatic publications = publications;\n\t\n}\n", "import { Publication, publications } from \"./Publication\";\nimport type { SubscriptionArgs, SubscriptionHandler } from \"./types\";\n\n\nexport class SubscriptionHandle<SA extends SubscriptionArgs> {\n\tconstructor(\n\t\tpublicationName: string,\n\t\targs: SA,\n\t\thandler: SubscriptionHandler,\n\t\timmediately?: boolean,\n\t\tprevent?: boolean\n\t) {\n\t\t\n\t\tconst publication = publications.get(publicationName);\n\t\t\n\t\tif (publication) {\n\t\t\tthis.publication = publication as Publication<SA>;\n\t\t\tthis.args = args;\n\t\t\tthis.handler = handler;\n\t\t\t\n\t\t\tif (!prevent) {\n\t\t\t\tthis.publication.subscribe(this);\n\t\t\t\t\n\t\t\t\tif (immediately)\n\t\t\t\t\tthis.changed(null);\n\t\t\t}\n\t\t\t\n\t\t} else if (process.env.NODE_ENV === \"development\")\n\t\t\tconsole.error(\"Unknown publication\", publicationName);\n\t\t\n\t}\n\t\n\tpublication!: Publication<SA>;\n\targs!: SA;\n\thandler!: SubscriptionHandler;\n\t\n\tasync changed(reason: unknown) {\n\t\tthis.handler(await this.publication.fetchSubscription(this, reason), reason);\n\t\t\n\t}\n\t\n\tcancel() {\n\t\t\n\t\tthis.publication?.unsubscribe(this);\n\t\t\n\t}\n\t\n\trenew() {\n\t\t\n\t\tthis.publication?.unsubscribe(this);\n\t\t\n\t\tthis.publication?.subscribe(this);\n\t\t\n\t\treturn this.changed(null);\n\t}\n\t\n}\n", "import {\n\tChangeStreamDocument,\n\tDocument,\n\tFilter,\n\tSort\n} from \"insite-db\";\nimport { skippedChangeStreamDocuments } from \"./CollectionMapPublication\";\nimport { SubscriptionHandle } from \"./SubscriptionHandle\";\nimport type { Projection, SubscriptionArgs } from \"./types\";\n\n\nexport class CollectionMapSubscriptionHandle<\n\tD extends Document = Document,\n\tSA extends SubscriptionArgs = SubscriptionArgs\n> extends SubscriptionHandle<SA> {\n\tconstructor(\n\t\tpublicationName: string,\n\t\targs: SA,\n\t\thandler: (fetched: unknown) => void,\n\t\timmediately?: boolean\n\t) {\n\t\tsuper(publicationName, args, handler, immediately, true);\n\t\t\n\t\tif (this.publication) {\n\t\t\tthis.publication.subscribe(this);\n\t\t\t\n\t\t\tif (immediately)\n\t\t\t\tthis.changed(null);\n\t\t}\n\t\t\n\t}\n\t\n\tids = new Set<string>();\n\t\n\tquery: Filter<D> | null = null;\n\tprojection: null | Projection = null;\n\tisProjectionInclusive = false;\n\tfields: null | Set<string> = null;\n\tsort: null | Sort = null;\n\t\n\tmatch?: (doc: D) => boolean;\n\t\n\tasync changed(next: ChangeStreamDocument<D> | null) {\n\t\tthis.handler([ await this.publication.fetchSubscription(this, next) ]);\n\t\t\n\t}\n\t\n\tupdates: unknown[] = [];\n\tprivate flushTimeout?: NodeJS.Timeout;\n\t\n\tflushUpdates = () => {\n\t\t\n\t\tif (this.updates.length) {\n\t\t\tthis.handler(this.updates);\n\t\t\tthis.updates = [];\n\t\t}\n\t\t\n\t};\n\t\n\tcollectionChangeListener = async (next: ChangeStreamDocument<D>) => {\n\t\t\n\t\tif (\n\t\t\t!skippedChangeStreamDocuments.has(next) &&\n\t\t\t\"documentKey\" in next &&\n\t\t\t(this.ids.has(next.documentKey._id as unknown as string) ? (\n\t\t\t\tnext.operationType !== \"update\" ||\n\t\t\t\t!this.fields ||\n\t\t\t\t(\n\t\t\t\t\tnext.updateDescription.updatedFields &&\n\t\t\t\t\tObject.keys(next.updateDescription.updatedFields).some(field => this.fields!.has(field))\n\t\t\t\t)\n\t\t\t) : (\n\t\t\t\t\"fullDocument\" in next &&\n\t\t\t\tthis.match!(next.fullDocument!)\n\t\t\t))\n\t\t) {\n\t\t\tclearTimeout(this.flushTimeout);\n\t\t\t\n\t\t\tthis.updates.push(await this.publication.fetchSubscription(this, next));\n\t\t\t\n\t\t\tthis.flushTimeout = setTimeout(this.flushUpdates, 1);\n\t\t}\n\t\t\n\t};\n\t\n\t\n}\n"],
|
|
5
|
-
"mappings": "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
|
|
6
|
-
"names": ["sift", "publications", "Publication", "name", "props", "subscription", "_", "reason", "SubscriptionHandle", "publicationName", "args", "handler", "immediately", "prevent", "publication", "publications", "reason", "CollectionMapSubscriptionHandle", "SubscriptionHandle", "publicationName", "args", "handler", "immediately", "next", "skippedChangeStreamDocuments", "field", "projectDocument", "document", "projection", "isInclusive", "isTop", "projected", "key", "subprojection", "item", "skippedChangeStreamDocuments", "CollectionMapPublication", "Publication", "
|
|
4
|
+
"sourcesContent": ["import sift from \"sift\";\nimport type {\n\tChangeStreamDocument,\n\tDocument,\n\tFilter,\n\tInSiteWatchedCollection,\n\tSort\n} from \"insite-db\";\nimport { CollectionMapSubscriptionHandle } from \"./CollectionMapSubscriptionHandle\";\nimport { Publication } from \"./Publication\";\nimport { SubscriptionHandle } from \"./SubscriptionHandle\";\nimport type { PartialWithId, Projection, SubscriptionArgs } from \"./types\";\n\n\nfunction projectDocument<D extends Document>(document: D, projection: null, isInclusive?: boolean, isTop?: boolean): D;\nfunction projectDocument<D extends Document>(document: D, projection: Projection, isInclusive?: boolean, isTop?: boolean): Partial<D>;\nfunction projectDocument<D extends Document>(document: D, projection: null | Projection, isInclusive?: boolean, isTop?: boolean): D | Partial<D>;\nfunction projectDocument<D extends Document>(document: D, projection: null | Projection, isInclusive = true, isTop = true) {\n\tif (projection)\n\t\tif (isInclusive) {\n\t\t\tconst projected: Record<string, unknown> = {};\n\t\t\tfor (const key in projection) { // eslint-disable-line guard-for-in\n\t\t\t\tconst subprojection = projection[key];\n\t\t\t\tprojected[key] =\n\t\t\t\t\ttypeof subprojection == \"object\" ?\n\t\t\t\t\t\tArray.isArray(document[key]) ?\n\t\t\t\t\t\t\tdocument[key].map((item: Document) => projectDocument(item, subprojection, true, false)) :\n\t\t\t\t\t\t\tprojectDocument(document[key], subprojection, true, false) :\n\t\t\t\t\t\tdocument[key];\n\t\t\t}\n\t\t\tif (isTop && projection._id === 0)\n\t\t\t\tdelete projected._id;\n\t\t\t\n\t\t\treturn projected as Partial<D>;\n\t\t} else {\n\t\t\tconst projected = { ...document } as Record<string, unknown>;\n\t\t\tfor (const key in projection) { // eslint-disable-line guard-for-in\n\t\t\t\tconst subprojection = projection[key];\n\t\t\t\tif (typeof subprojection == \"object\")\n\t\t\t\t\tprojected[key] =\n\t\t\t\t\t\tArray.isArray(document[key]) ?\n\t\t\t\t\t\t\tdocument[key].map((item: Document) => projectDocument(item, subprojection, false, false)) :\n\t\t\t\t\t\t\tprojectDocument(document[key], subprojection, false, false);\n\t\t\t\telse\n\t\t\t\t\tdelete projected[key];\n\t\t\t}\n\t\t\t\n\t\t\treturn projected as Partial<D>;\n\t\t}\n\t\n\treturn document;\n}\n\nexport const skippedChangeStreamDocuments = new WeakSet<ChangeStreamDocument>();\n\ntype QueryProps<D extends Document> = {\n\tquery?: Filter<D>;\n\tprojection?: Projection;\n\tsort?: Sort;\n\ttriggers?: string[];\n};\n\n\nexport class CollectionMapPublication<\n\tD extends Document = Document,\n\tSA extends SubscriptionArgs = SubscriptionArgs\n> extends Publication<SA> {\n\tconstructor(\n\t\tcollection: InSiteWatchedCollection<D>,\n\t\tname: string,\n\t\tqueryProps?: ((...args: SA) => false | null | QueryProps<D> | void) | false | null | QueryProps<D>,\n\t\ttransform?: (doc: PartialWithId<D>, args: SA) => void\n\t) {\n\t\tsuper(name);\n\t\t\n\t\tthis.collection = collection;\n\t\tthis.queryProps = queryProps;\n\t\tthis.transform = transform;\n\t\t\n\t}\n\t\n\ttype = \"map\";\n\t\n\tcollection;\n\tdeclare subscriptions: Set<CollectionMapSubscriptionHandle<D, SA>>;\n\tqueryProps;\n\ttransform;\n\t\n\tskip(next: ChangeStreamDocument<D>) {\n\t\tskippedChangeStreamDocuments.add(next);\n\t\t\n\t}\n\t\n\tmakeQueryProps(args: SA) {\n\t\tconst {\n\t\t\tquery = null,\n\t\t\tprojection = null,\n\t\t\tsort = null,\n\t\t\ttriggers\n\t\t} = (typeof this.queryProps == \"function\" ? this.queryProps(...args) : this.queryProps) || {};\n\t\t\n\t\tlet isProjectionInclusive = false;\n\t\tlet fields = null;\n\t\tif (projection) {\n\t\t\t// eslint-disable-next-line guard-for-in\n\t\t\tfor (const key in projection) {\n\t\t\t\tisProjectionInclusive = !!projection[key];\n\t\t\t\tif (key !== \"_id\")\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (isProjectionInclusive) {\n\t\t\t\tfields = new Set([ ...Object.keys(query ?? {}), ...Object.keys(projection), ...triggers ?? [] ]);\n\t\t\t\tfields.delete(\"_id\");\n\t\t\t\tif (projection._id !== 0)\n\t\t\t\t\tprojection._id = 1;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn { query, projection, isProjectionInclusive, fields, sort, args };\n\t}\n\t\n\tasync fetchSubscription(subscription: SubscriptionHandle<SA>, next: ChangeStreamDocument<D> | null) {\n\t\tif (subscription instanceof CollectionMapSubscriptionHandle && subscription.query) {\n\t\t\tif (next && \"documentKey\" in next) {\n\t\t\t\tconst _id = next.documentKey._id as unknown as string;\n\t\t\t\t\n\t\t\t\tif (next.operationType === \"insert\" || (next.operationType !== \"delete\" && subscription.match!(next.fullDocument!))) {\n\t\t\t\t\tconst doc = projectDocument(next.fullDocument!, subscription.projection, subscription.isProjectionInclusive);\n\t\t\t\t\tthis.transform?.(doc as PartialWithId<D>, subscription.args);\n\t\t\t\t\tif (subscription.ids.has(_id))\n\t\t\t\t\t\treturn [ \"u\"/* update */, doc, \"updateDescription\" in next && next.updateDescription.updatedFields && Object.keys(next.updateDescription.updatedFields) ];\n\t\t\t\t\t\n\t\t\t\t\tsubscription.ids.add(_id);\n\t\t\t\t\t\n\t\t\t\t\treturn [ \"c\"/* create */, doc ];\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tsubscription.ids.delete(_id);\n\t\t\t\t\n\t\t\t\treturn [ \"d\"/* delete */, _id ];\n\t\t\t\t\n\t\t\t}\n\t\t\tconst cursor = this.collection.find(subscription.query);\n\t\t\t\n\t\t\tif (subscription.projection)\n\t\t\t\tcursor.project(subscription.projection);\n\t\t\t\n\t\t\tif (subscription.sort)\n\t\t\t\tcursor.sort(subscription.sort);\n\t\t\t\n\t\t\tconst array = await cursor.toArray() as unknown as PartialWithId<D>[];\n\t\t\t\n\t\t\tif (subscription.ids) {\n\t\t\t\tsubscription.ids.clear();\n\t\t\t\tif (this.transform)\n\t\t\t\t\tfor (const item of array) {\n\t\t\t\t\t\tsubscription.ids.add(item._id);\n\t\t\t\t\t\tthis.transform(item, subscription.args);\n\t\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tfor (const item of array)\n\t\t\t\t\t\tsubscription.ids.add(item._id);\n\t\t\t} else if (this.transform)\n\t\t\t\tfor (const item of array)\n\t\t\t\t\tthis.transform(item, subscription.args);\n\t\t\t\n\t\t\treturn [ \"i\"/* initial */, array, subscription.sort ];\n\t\t\t\n\t\t}\n\t\t\n\t\treturn null;\n\t}\n\t\n\tchanged(reason: ChangeStreamDocument<D> | null) {\n\t\treturn Promise.all([ ...this.subscriptions ].map(subscription => subscription.changed(reason)));\n\t}\n\t\n\tonSubscribe = (subscription: SubscriptionHandle<SA>) => {\n\t\tif (subscription instanceof CollectionMapSubscriptionHandle) {\n\t\t\tObject.assign(subscription, this.makeQueryProps(subscription.args));\n\t\t\t\n\t\t\tif (subscription.query) {\n\t\t\t\tsubscription.match = sift(subscription.query);\n\t\t\t\tthis.collection.changeListeners.add(subscription.collectionChangeListener);\n\t\t\t}\n\t\t}\n\t\t\n\t};\n\t\n\tflushInitial() {\n\t\treturn Promise.all([ ...this.subscriptions ].map(async subscription => {\n\t\t\tconst fetched = await this.fetchSubscription(subscription, null);\n\t\t\tsubscription.handler!([ fetched ]);\n\t\t\tsubscription.updates = [];\n\t\t\t\n\t\t}));\n\t}\n\t\n\tonUnsubscribe = (subscription: SubscriptionHandle<SA>) => {\n\t\tif (subscription instanceof CollectionMapSubscriptionHandle && subscription.query)\n\t\t\tthis.collection.changeListeners.delete(subscription.collectionChangeListener);\n\t\t\n\t};\n\t\n}\n", "import type { SubscriptionHandle } from \"./SubscriptionHandle\";\nimport type { PublicationProps, SubscriptionArgs } from \"./types\";\n\n\ndeclare global {\n\tvar __insite_publications: Map<string, Publication>;// eslint-disable-line no-var\n}\n\nexport const publications =\n\tglobalThis.__insite_publications ??=\n\t\tnew Map();\n\nexport class Publication<SA extends SubscriptionArgs = SubscriptionArgs> {\n\tconstructor(name: string, props?: PublicationProps<SA>) {\n\t\tthis.name = name;\n\t\t\n\t\tif (props)\n\t\t\tObject.assign(this, props);\n\t\t\n\t\tpublications.set(name, this as Publication);\n\t\t\n\t}\n\t\n\treadonly name;\n\tonSubscribe?: PublicationProps<SA>[\"onSubscribe\"];\n\tonUnsubscribe?: PublicationProps<SA>[\"onUnsubscribe\"];\n\t\n\ttype = \"object\";\n\t\n\tsubscriptions = new Set<SubscriptionHandle<SA>>();\n\t\n\tfetch?(...args: SA): unknown;\n\t\n\tfetchSubscription(subscription: SubscriptionHandle<SA>, ..._: unknown[]) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn this.fetch?.(...subscription.args);\n\t}\n\t\n\tsubscribe(subscription: SubscriptionHandle<SA>) {\n\t\tthis.subscriptions.add(subscription);\n\t\tthis.onSubscribe?.(subscription);\n\t\t\n\t}\n\t\n\tchanged(reason: unknown) {\n\t\tfor (const subscription of this.subscriptions)\n\t\t\tsubscription.changed(reason);\n\t\t\n\t}\n\t\n\tunsubscribe(subscription: SubscriptionHandle<SA>) {\n\t\tthis.onUnsubscribe?.(subscription);\n\t\tthis.subscriptions.delete(subscription);\n\t\t\n\t}\n\t\n\t\n\tstatic publications = publications;\n\t\n}\n", "import { Publication, publications } from \"./Publication\";\nimport type { SubscriptionArgs, SubscriptionHandler } from \"./types\";\n\n\nexport class SubscriptionHandle<SA extends SubscriptionArgs> {\n\tconstructor(\n\t\tpublicationName: string,\n\t\targs: SA,\n\t\thandler: SubscriptionHandler,\n\t\timmediately?: boolean,\n\t\tprevent?: boolean\n\t) {\n\t\t\n\t\tconst publication = publications.get(publicationName);\n\t\t\n\t\tif (publication) {\n\t\t\tthis.publication = publication as Publication<SA>;\n\t\t\tthis.args = args;\n\t\t\tthis.handler = handler;\n\t\t\t\n\t\t\tif (!prevent) {\n\t\t\t\tthis.publication.subscribe(this);\n\t\t\t\t\n\t\t\t\tif (immediately)\n\t\t\t\t\tthis.changed(null);\n\t\t\t}\n\t\t\t\n\t\t} else if (process.env.NODE_ENV === \"development\")\n\t\t\tconsole.error(\"Unknown publication\", publicationName);\n\t\t\n\t}\n\t\n\tpublication!: Publication<SA>;\n\targs!: SA;\n\thandler!: SubscriptionHandler;\n\t\n\tasync changed(reason: unknown) {\n\t\tthis.handler(await this.publication.fetchSubscription(this, reason), reason);\n\t\t\n\t}\n\t\n\tcancel() {\n\t\t\n\t\tthis.publication?.unsubscribe(this);\n\t\t\n\t}\n\t\n\trenew() {\n\t\t\n\t\tthis.publication?.unsubscribe(this);\n\t\t\n\t\tthis.publication?.subscribe(this);\n\t\t\n\t\treturn this.changed(null);\n\t}\n\t\n}\n", "import {\n\tChangeStreamDocument,\n\tDocument,\n\tFilter,\n\tSort\n} from \"insite-db\";\nimport { skippedChangeStreamDocuments } from \"./CollectionMapPublication\";\nimport { SubscriptionHandle } from \"./SubscriptionHandle\";\nimport type { Projection, SubscriptionArgs } from \"./types\";\n\n\nexport class CollectionMapSubscriptionHandle<\n\tD extends Document = Document,\n\tSA extends SubscriptionArgs = SubscriptionArgs\n> extends SubscriptionHandle<SA> {\n\tconstructor(\n\t\tpublicationName: string,\n\t\targs: SA,\n\t\thandler: (fetched: unknown) => void,\n\t\timmediately?: boolean\n\t) {\n\t\tsuper(publicationName, args, handler, immediately, true);\n\t\t\n\t\tif (this.publication) {\n\t\t\tthis.publication.subscribe(this);\n\t\t\t\n\t\t\tif (immediately)\n\t\t\t\tthis.changed(null);\n\t\t}\n\t\t\n\t}\n\t\n\tids = new Set<string>();\n\t\n\tquery: Filter<D> | null = null;\n\tprojection: null | Projection = null;\n\tisProjectionInclusive = false;\n\tfields: null | Set<string> = null;\n\tsort: null | Sort = null;\n\t\n\tmatch?: (doc: D) => boolean;\n\t\n\tasync changed(next: ChangeStreamDocument<D> | null) {\n\t\tthis.handler([ await this.publication.fetchSubscription(this, next) ]);\n\t\t\n\t}\n\t\n\tupdates: unknown[] = [];\n\tprivate flushTimeout?: NodeJS.Timeout;\n\t\n\tflushUpdates = () => {\n\t\t\n\t\tif (this.updates.length) {\n\t\t\tthis.handler(this.updates);\n\t\t\tthis.updates = [];\n\t\t}\n\t\t\n\t};\n\t\n\tcollectionChangeListener = async (next: ChangeStreamDocument<D>) => {\n\t\t\n\t\tif (\n\t\t\t!skippedChangeStreamDocuments.has(next) &&\n\t\t\t\"documentKey\" in next &&\n\t\t\t(this.ids.has(next.documentKey._id as unknown as string) ? (\n\t\t\t\tnext.operationType !== \"update\" ||\n\t\t\t\t!this.fields ||\n\t\t\t\t(\n\t\t\t\t\tnext.updateDescription.updatedFields &&\n\t\t\t\t\tObject.keys(next.updateDescription.updatedFields).some(field => this.fields!.has(field))\n\t\t\t\t)\n\t\t\t) : (\n\t\t\t\t\"fullDocument\" in next &&\n\t\t\t\tthis.match!(next.fullDocument!)\n\t\t\t))\n\t\t) {\n\t\t\tclearTimeout(this.flushTimeout);\n\t\t\t\n\t\t\tthis.updates.push(await this.publication.fetchSubscription(this, next));\n\t\t\t\n\t\t\tthis.flushTimeout = setTimeout(this.flushUpdates, 1);\n\t\t}\n\t\t\n\t};\n\t\n\t\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["sift", "publications", "Publication", "name", "props", "subscription", "_", "reason", "SubscriptionHandle", "publicationName", "args", "handler", "immediately", "prevent", "publication", "publications", "reason", "CollectionMapSubscriptionHandle", "SubscriptionHandle", "publicationName", "args", "handler", "immediately", "next", "skippedChangeStreamDocuments", "field", "projectDocument", "document", "projection", "isInclusive", "isTop", "projected", "key", "subprojection", "item", "skippedChangeStreamDocuments", "CollectionMapPublication", "Publication", "collection", "name", "queryProps", "transform", "next", "args", "query", "sort", "triggers", "isProjectionInclusive", "fields", "subscription", "CollectionMapSubscriptionHandle", "_id", "doc", "cursor", "array", "reason", "sift", "fetched"]
|
|
7
7
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import type { Document } from "insite-db";
|
|
1
|
+
import type { Document, InSiteWatchedCollection } from "insite-db";
|
|
2
2
|
import type { AbilitiesSchema } from "insite-users-server";
|
|
3
3
|
import { CollectionMapPublication as GenericCollectionMapPublication } from "../CollectionMapPublication";
|
|
4
4
|
import { SubscriptionArgs } from "./types";
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
type RestArgs<AS extends AbilitiesSchema = AbilitiesSchema, D extends Document = Document, RA extends unknown[] = unknown[], T extends abstract new (...args: any) => any = typeof GenericCollectionMapPublication<D, SubscriptionArgs<AS, RA>>> = T extends abstract new (first: any, ...rest: infer R) => any ? R : never;
|
|
6
|
+
export declare class CollectionMapPublication<AS extends AbilitiesSchema = AbilitiesSchema, D extends Document = Document, RA extends unknown[] = unknown[]> extends GenericCollectionMapPublication<D, SubscriptionArgs<AS, RA>> {
|
|
7
|
+
constructor(collection: InSiteWatchedCollection<D>, ...restArgs: RestArgs<AS, D, RA>);
|
|
7
8
|
}
|
|
9
|
+
export {};
|
|
8
10
|
//# sourceMappingURL=CollectionMapPublication.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollectionMapPublication.d.ts","sourceRoot":"","sources":["../../src/ws/CollectionMapPublication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"CollectionMapPublication.d.ts","sourceRoot":"","sources":["../../src/ws/CollectionMapPublication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,IAAI,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAC1G,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAM3C,KAAK,QAAQ,CACZ,EAAE,SAAS,eAAe,GAAG,eAAe,EAC5C,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,EAChC,CAAC,SAAS,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,GAAG,OAAO,+BAA+B,CAAC,CAAC,EAAE,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAC/G,CAAC,SAAS,QAAQ,MAAM,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;AAG7E,qBAAa,wBAAwB,CACpC,EAAE,SAAS,eAAe,GAAG,eAAe,EAC5C,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,CAC/B,SAAQ,+BAA+B,CAAC,CAAC,EAAE,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACzD,UAAU,EAAE,uBAAuB,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;CAGpF"}
|
|
@@ -2,7 +2,7 @@ import type { Document } from "insite-db";
|
|
|
2
2
|
import type { AbilitiesSchema } from "insite-users-server";
|
|
3
3
|
import { CollectionMapSubscriptionHandle as GenericCollectionMapSubscriptionHandle } from "../CollectionMapSubscriptionHandle";
|
|
4
4
|
import { SubscriptionArgs } from "./types";
|
|
5
|
-
export declare class CollectionMapSubscriptionHandle<
|
|
5
|
+
export declare class CollectionMapSubscriptionHandle<AS extends AbilitiesSchema = AbilitiesSchema, D extends Document = Document, RA extends unknown[] = unknown[]> extends GenericCollectionMapSubscriptionHandle<D, SubscriptionArgs<AS, RA>> {
|
|
6
6
|
constructor(...args: ConstructorParameters<typeof GenericCollectionMapSubscriptionHandle<D, SubscriptionArgs<AS, RA>>>);
|
|
7
7
|
}
|
|
8
8
|
//# sourceMappingURL=CollectionMapSubscriptionHandle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollectionMapSubscriptionHandle.d.ts","sourceRoot":"","sources":["../../src/ws/CollectionMapSubscriptionHandle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACN,+BAA+B,IAAI,sCAAsC,EACzE,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C,qBAAa,+BAA+B,CAC3C,
|
|
1
|
+
{"version":3,"file":"CollectionMapSubscriptionHandle.d.ts","sourceRoot":"","sources":["../../src/ws/CollectionMapSubscriptionHandle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACN,+BAA+B,IAAI,sCAAsC,EACzE,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C,qBAAa,+BAA+B,CAC3C,EAAE,SAAS,eAAe,GAAG,eAAe,EAC5C,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,CAC/B,SAAQ,sCAAsC,CAAC,CAAC,EAAE,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAEhE,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,sCAAsC,CAAC,CAAC,EAAE,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;CAGtH"}
|
|
@@ -1,16 +1,23 @@
|
|
|
1
|
-
import type { InSiteWebSocketServer
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
import type { InSiteWebSocketServer } from "insite-ws/server";
|
|
2
|
+
import { type Document } from "insite-db";
|
|
3
|
+
import type { AbilitiesSchema } from "insite-users-server";
|
|
4
|
+
import type { WSSCWithUser } from "insite-users-server-ws";
|
|
5
|
+
import { CollectionMapPublication } from "./CollectionMapPublication";
|
|
6
|
+
import { Publication } from "./Publication";
|
|
7
|
+
export type WithPublish<T, AS extends AbilitiesSchema> = {
|
|
8
|
+
publish(...args: ConstructorParameters<typeof Publication>): Publication<AS>;
|
|
9
|
+
} & T;
|
|
10
|
+
export type WithPublishCollection<T, AS extends AbilitiesSchema> = {
|
|
11
|
+
publish<D extends Document>(...args: ConstructorParameters<typeof CollectionMapPublication<AS, D>>): CollectionMapPublication<AS, D>;
|
|
12
|
+
} & WithPublish<T, AS>;
|
|
5
13
|
export declare class SubscriptionHandler<AS extends AbilitiesSchema> {
|
|
6
|
-
constructor(wss: InSiteWebSocketServer);
|
|
14
|
+
constructor(wss: InSiteWebSocketServer, withCollections?: boolean);
|
|
7
15
|
private wsSubscriptionMap;
|
|
8
|
-
renewSubscriptionsFor(webSockets:
|
|
9
|
-
handleClientConnect
|
|
10
|
-
handleClientSession
|
|
11
|
-
handleClientSubscribe
|
|
12
|
-
handleClientUnsubscribe
|
|
13
|
-
handleClientClose
|
|
16
|
+
renewSubscriptionsFor(webSockets: WSSCWithUser<AS>[]): void;
|
|
17
|
+
private handleClientConnect;
|
|
18
|
+
private handleClientSession;
|
|
19
|
+
private handleClientSubscribe;
|
|
20
|
+
private handleClientUnsubscribe;
|
|
21
|
+
private handleClientClose;
|
|
14
22
|
}
|
|
15
|
-
export {};
|
|
16
23
|
//# sourceMappingURL=SubscriptionHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubscriptionHandler.d.ts","sourceRoot":"","sources":["../../src/ws/SubscriptionHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"SubscriptionHandler.d.ts","sourceRoot":"","sources":["../../src/ws/SubscriptionHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAW5C,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,EAAE,SAAS,eAAe,IAAI;IACxD,OAAO,CAAC,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,WAAW,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;CAC7E,GAAG,CAAC,CAAC;AAEN,MAAM,MAAM,qBAAqB,CAAC,CAAC,EAAE,EAAE,SAAS,eAAe,IAAI;IAClE,OAAO,CAAC,CAAC,SAAS,QAAQ,EAAE,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,wBAAwB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,wBAAwB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;CACrI,GAAG,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAOvB,qBAAa,mBAAmB,CAAC,EAAE,SAAS,eAAe;gBAC9C,GAAG,EAAE,qBAAqB,EAAE,eAAe,CAAC,EAAE,OAAO;IAyBjE,OAAO,CAAC,iBAAiB,CAAsD;IAE/E,qBAAqB,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE;IAMpD,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,qBAAqB;IA4B7B,OAAO,CAAC,uBAAuB;IAK/B,OAAO,CAAC,iBAAiB;CAMzB"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { AbilitiesSchema } from "insite-users-server";
|
|
2
|
-
import { CollectionMapSubscriptionHandle } from "./CollectionMapSubscriptionHandle";
|
|
3
|
-
import { SubscriptionHandle } from "./SubscriptionHandle";
|
|
2
|
+
import type { CollectionMapSubscriptionHandle } from "./CollectionMapSubscriptionHandle";
|
|
3
|
+
import type { SubscriptionHandle } from "./SubscriptionHandle";
|
|
4
4
|
export declare class Subscriptions<AS extends AbilitiesSchema> extends Map<number | string, CollectionMapSubscriptionHandle<AS> | SubscriptionHandle<AS>> {
|
|
5
|
-
subscribe: (key: string | number, value: CollectionMapSubscriptionHandle<AS,
|
|
5
|
+
subscribe: (key: string | number, value: CollectionMapSubscriptionHandle<AS, import("bson").Document, unknown[]> | SubscriptionHandle<AS, unknown[]>) => this;
|
|
6
6
|
renew(): Promise<void[]>;
|
|
7
7
|
cancel(key: number | string): void;
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Subscriptions.d.ts","sourceRoot":"","sources":["../../src/ws/Subscriptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"Subscriptions.d.ts","sourceRoot":"","sources":["../../src/ws/Subscriptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACzF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D,qBAAa,aAAa,CAAC,EAAE,SAAS,eAAe,CAAE,SAAQ,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,+BAA+B,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAEhJ,SAAS,qJAAY;IAErB,KAAK;IAIL,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAM3B"}
|
package/dist/ws/index.d.ts
CHANGED
package/dist/ws/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ws/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ws/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC"}
|