insite-subscriptions-server 2.0.7 → 2.0.8
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/ws/CollectionMapPublication.d.ts +1 -1
- 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/Publication.d.ts +1 -1
- package/dist/ws/Publication.d.ts.map +1 -1
- package/dist/ws/SubscriptionHandle.d.ts +1 -1
- package/dist/ws/SubscriptionHandle.d.ts.map +1 -1
- package/dist/ws/SubscriptionHandler.d.ts +1 -1
- package/dist/ws/SubscriptionHandler.d.ts.map +1 -1
- package/dist/ws/Subscriptions.d.ts +1 -1
- package/dist/ws/Subscriptions.d.ts.map +1 -1
- package/dist/ws/index.js +1 -1
- package/dist/ws/index.js.map +2 -2
- package/dist/ws/types.d.ts +1 -1
- package/dist/ws/types.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import type { AbilitiesSchema } from "insite-common";
|
|
1
2
|
import type { Document, InSiteWatchedCollection } from "insite-db";
|
|
2
|
-
import type { AbilitiesSchema } from "insite-users-server";
|
|
3
3
|
import { CollectionMapPublication as GenericCollectionMapPublication } from "../CollectionMapPublication";
|
|
4
4
|
import { SubscriptionArgs } from "./types";
|
|
5
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;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollectionMapPublication.d.ts","sourceRoot":"","sources":["../../src/ws/CollectionMapPublication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"CollectionMapPublication.d.ts","sourceRoot":"","sources":["../../src/ws/CollectionMapPublication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACnE,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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import type { AbilitiesSchema } from "insite-common";
|
|
1
2
|
import type { Document } from "insite-db";
|
|
2
|
-
import type { AbilitiesSchema } from "insite-users-server";
|
|
3
3
|
import { CollectionMapSubscriptionHandle as GenericCollectionMapSubscriptionHandle } from "../CollectionMapSubscriptionHandle";
|
|
4
4
|
import { SubscriptionArgs } from "./types";
|
|
5
5
|
export declare class CollectionMapSubscriptionHandle<AS extends AbilitiesSchema = AbilitiesSchema, D extends Document = Document, RA extends unknown[] = unknown[]> extends GenericCollectionMapSubscriptionHandle<D, SubscriptionArgs<AS, RA>> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollectionMapSubscriptionHandle.d.ts","sourceRoot":"","sources":["../../src/ws/CollectionMapSubscriptionHandle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"CollectionMapSubscriptionHandle.d.ts","sourceRoot":"","sources":["../../src/ws/CollectionMapSubscriptionHandle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,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"}
|
package/dist/ws/Publication.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AbilitiesSchema } from "insite-
|
|
1
|
+
import type { AbilitiesSchema } from "insite-common";
|
|
2
2
|
import { Publication as GenericPublication } from "../Publication";
|
|
3
3
|
import { SubscriptionArgs } from "./types";
|
|
4
4
|
export declare class Publication<AS extends AbilitiesSchema = AbilitiesSchema, RA extends unknown[] = unknown[]> extends GenericPublication<SubscriptionArgs<AS, RA>> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Publication.d.ts","sourceRoot":"","sources":["../../src/ws/Publication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Publication.d.ts","sourceRoot":"","sources":["../../src/ws/Publication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,WAAW,IAAI,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C,qBAAa,WAAW,CACvB,EAAE,SAAS,eAAe,GAAG,eAAe,EAC5C,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,CAC/B,SAAQ,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAEzC,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;CAG/F"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AbilitiesSchema } from "insite-
|
|
1
|
+
import type { AbilitiesSchema } from "insite-common";
|
|
2
2
|
import { SubscriptionHandle as GenericSubscriptionHandle } from "../SubscriptionHandle";
|
|
3
3
|
import { SubscriptionArgs } from "./types";
|
|
4
4
|
export declare class SubscriptionHandle<AS extends AbilitiesSchema = AbilitiesSchema, RA extends unknown[] = unknown[]> extends GenericSubscriptionHandle<SubscriptionArgs<AS, RA>> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubscriptionHandle.d.ts","sourceRoot":"","sources":["../../src/ws/SubscriptionHandle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"SubscriptionHandle.d.ts","sourceRoot":"","sources":["../../src/ws/SubscriptionHandle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,IAAI,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C,qBAAa,kBAAkB,CAC9B,EAAE,SAAS,eAAe,GAAG,eAAe,EAC5C,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,CAC/B,SAAQ,yBAAyB,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAEhD,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,yBAAyB,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;CAGtG"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { InSiteWebSocketServer } from "insite-ws/server";
|
|
2
|
+
import type { AbilitiesSchema } from "insite-common";
|
|
2
3
|
import { type Document } from "insite-db";
|
|
3
|
-
import type { AbilitiesSchema } from "insite-users-server";
|
|
4
4
|
import type { WSSCWithUser } from "insite-users-server-ws";
|
|
5
5
|
import { CollectionMapPublication } from "./CollectionMapPublication";
|
|
6
6
|
import { Publication } from "./Publication";
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AACtD,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,eAAgB,YAAY,CAAC,EAAE,CAAC,EAAE,UAIrD;IAEF,OAAO,CAAC,mBAAmB,CAC4B;IAEvD,OAAO,CAAC,mBAAmB,CACgB;IAE3C,OAAO,CAAC,qBAAqB,CA0B3B;IAEF,OAAO,CAAC,uBAAuB,CACc;IAE7C,OAAO,CAAC,iBAAiB,CAIvB;CAEF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AbilitiesSchema } from "insite-
|
|
1
|
+
import type { AbilitiesSchema } from "insite-common";
|
|
2
2
|
import type { CollectionMapSubscriptionHandle } from "./CollectionMapSubscriptionHandle";
|
|
3
3
|
import type { SubscriptionHandle } from "./SubscriptionHandle";
|
|
4
4
|
export declare class Subscriptions<AS extends AbilitiesSchema> extends Map<number | string, CollectionMapSubscriptionHandle<AS> | SubscriptionHandle<AS>> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Subscriptions.d.ts","sourceRoot":"","sources":["../../src/ws/Subscriptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Subscriptions.d.ts","sourceRoot":"","sources":["../../src/ws/Subscriptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,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.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import w from"sift";var l=globalThis.__insite_publications??=new Map,u=class{constructor(e,t){this.name=e,t&&Object.assign(this,t),l.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=l};var p=class{constructor(e,t,o,n,i){let r=l.get(e);r?(this.publication=r,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 a=class extends p{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=>{!y.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
|
|
1
|
+
import w from"sift";var l=globalThis.__insite_publications??=new Map,u=class{constructor(e,t){this.name=e,t&&Object.assign(this,t),l.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=l};var p=class{constructor(e,t,o,n,i){let r=l.get(e);r?(this.publication=r,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 a=class extends p{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=>{!y.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 S(s,e,t=!0,o=!0){if(e)if(t){let n={};for(let i in e){let r=e[i];n[i]=typeof r=="object"?Array.isArray(s[i])?s[i].map(c=>S(c,r,!0,!1)):S(s[i],r,!0,!1):s[i]}return o&&e._id===0&&delete n._id,n}else{let n={...s};for(let i in e){let r=e[i];typeof r=="object"?n[i]=Array.isArray(s[i])?s[i].map(c=>S(c,r,!1,!1)):S(s[i],r,!1,!1):delete n[i]}return n}return s}var y=new WeakSet,h=class extends u{constructor(e,t,o,n){super(t),this.collection=e,this.queryProps=o,this.transform=n}type="map";collection;queryProps;transform;skip(e){y.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)||{},r=!1,c=null;if(o){for(let m in o)if(r=!!o[m],m!=="_id")break;r&&(c=new Set([...Object.keys(t??{}),...Object.keys(o),...i??[]]),c.delete("_id"),o._id!==0&&(o._id=1))}return{query:t,projection:o,isProjectionInclusive:r,fields:c,sort:n,args:e}}async fetchSubscription(e,t){if(e instanceof a&&e.query){if(t&&"documentKey"in t){let i=t.documentKey._id;if(t.operationType==="insert"||t.operationType!=="delete"&&e.match(t.fullDocument)){let r=S(t.fullDocument,e.projection,e.isProjectionInclusive);return this.transform?.(r,e.args),e.ids.has(i)?["u",r,"updateDescription"in t&&t.updateDescription.updatedFields&&Object.keys(t.updateDescription.updatedFields)]:(e.ids.add(i),["c",r])}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 a&&(Object.assign(e,this.makeQueryProps(e.args)),e.query&&(e.match=w(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 a&&e.query&&this.collection.changeListeners.delete(e.collectionChangeListener)}};var d=class extends h{constructor(e,...t){super(e,...t)}};var f=class extends a{constructor(...e){super(...e)}};var b=class extends u{constructor(...e){super(...e)}};var A=class extends p{constructor(...e){super(...e)}};import{Collection as x}from"insite-db";var g=class extends Map{subscribe=this.set;renew(){return Promise.all([...this.values()].map(e=>e.renew()))}cancel(e){this.get(e)?.cancel(),this.delete(e)}};var k=["object","map"];function j(s){return s.type==="map"}function M(s){return s[0]instanceof x}var P=class{constructor(e,t){e.on("client-connect",this.handleClientConnect),e.on("client-session",this.handleClientSession),e.on("client-message:s-s",this.handleClientSubscribe),e.on("client-message:s-u",this.handleClientUnsubscribe),e.on("client-close",this.handleClientClose),e.on("should-renew-subscriptions",this.renewSubscriptionsFor),Object.assign(e,{publish:t?function(...n){return M(n)?new d(...n):new b(...n)}:function(...o){return new b(...o)}})}wsSubscriptionMap=new WeakMap;renewSubscriptionsFor=e=>{for(let t of e)this.wsSubscriptionMap.get(t)?.renew()};handleClientConnect=e=>this.wsSubscriptionMap.set(e,new g);handleClientSession=e=>this.wsSubscriptionMap.get(e)?.renew();handleClientSubscribe=(e,t,o,n,i,r)=>{if(k.includes(t)){let c=l.get(o);if(c?.type===t){let m=C=>e.sendMessage("s-c",n,C),D;j(c)?D=new f(o,[e,...i],m,r):D=new A(o,[e,...i],m,r),this.wsSubscriptionMap.get(e)?.subscribe(n,D)}}};handleClientUnsubscribe=(e,t)=>this.wsSubscriptionMap.get(e)?.cancel(t);handleClientClose=e=>{for(let t of this.wsSubscriptionMap.get(e)?.values()??[])t.cancel()}};export{d as CollectionMapPublication,f as CollectionMapSubscriptionHandle,b as Publication,A as SubscriptionHandle,P as SubscriptionHandler};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/ws/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", "../../src/ws/CollectionMapPublication.ts", "../../src/ws/CollectionMapSubscriptionHandle.ts", "../../src/ws/Publication.ts", "../../src/ws/SubscriptionHandle.ts", "../../src/ws/SubscriptionHandler.ts", "../../src/ws/Subscriptions.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\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", "import type { Document, InSiteWatchedCollection } from \"insite-db\";\nimport type { AbilitiesSchema } from \"insite-users-server\";\nimport { CollectionMapPublication as GenericCollectionMapPublication } from \"../CollectionMapPublication\";\nimport { SubscriptionArgs } from \"./types\";\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any, no-useless-constructor */\n\n\ntype RestArgs<\n\tAS extends AbilitiesSchema = AbilitiesSchema,\n\tD extends Document = Document,\n\tRA extends unknown[] = unknown[],\n\tT extends abstract new (...args: any) => any = typeof GenericCollectionMapPublication<D, SubscriptionArgs<AS, RA>>\n> = T extends abstract new (first: any, ...rest: infer R) => any ? R : never;\n\n\nexport class CollectionMapPublication<\n\tAS extends AbilitiesSchema = AbilitiesSchema,\n\tD extends Document = Document,\n\tRA extends unknown[] = unknown[]\n> extends GenericCollectionMapPublication<D, SubscriptionArgs<AS, RA>> {\n\tconstructor(collection: InSiteWatchedCollection<D>, ...restArgs: RestArgs<AS, D, RA>) {\n\t\tsuper(collection, ...restArgs);\n\t}\n}\n", "import type { Document } from \"insite-db\";\nimport type { AbilitiesSchema } from \"insite-users-server\";\nimport {\n\tCollectionMapSubscriptionHandle as GenericCollectionMapSubscriptionHandle\n} from \"../CollectionMapSubscriptionHandle\";\nimport { SubscriptionArgs } from \"./types\";\n\n\nexport class CollectionMapSubscriptionHandle<\n\tAS extends AbilitiesSchema = AbilitiesSchema,\n\tD extends Document = Document,\n\tRA extends unknown[] = unknown[]\n> extends GenericCollectionMapSubscriptionHandle<D, SubscriptionArgs<AS, RA>> {\n\t// eslint-disable-next-line no-useless-constructor\n\tconstructor(...args: ConstructorParameters<typeof GenericCollectionMapSubscriptionHandle<D, SubscriptionArgs<AS, RA>>>) {\n\t\tsuper(...args);\n\t}\n}\n", "import type { AbilitiesSchema } from \"insite-users-server\";\nimport { Publication as GenericPublication } from \"../Publication\";\nimport { SubscriptionArgs } from \"./types\";\n\n\nexport class Publication<\n\tAS extends AbilitiesSchema = AbilitiesSchema,\n\tRA extends unknown[] = unknown[]\n> extends GenericPublication<SubscriptionArgs<AS, RA>> {\n\t// eslint-disable-next-line no-useless-constructor\n\tconstructor(...args: ConstructorParameters<typeof GenericPublication<SubscriptionArgs<AS, RA>>>) {\n\t\tsuper(...args);\n\t}\n}\n", "import type { AbilitiesSchema } from \"insite-users-server\";\nimport { SubscriptionHandle as GenericSubscriptionHandle } from \"../SubscriptionHandle\";\nimport { SubscriptionArgs } from \"./types\";\n\n\nexport class SubscriptionHandle<\n\tAS extends AbilitiesSchema = AbilitiesSchema,\n\tRA extends unknown[] = unknown[]\n> extends GenericSubscriptionHandle<SubscriptionArgs<AS, RA>> {\n\t// eslint-disable-next-line no-useless-constructor\n\tconstructor(...args: ConstructorParameters<typeof GenericSubscriptionHandle<SubscriptionArgs<AS, RA>>>) {\n\t\tsuper(...args);\n\t}\n}\n", "import type { InSiteWebSocketServer } from \"insite-ws/server\";\nimport { Collection, type Document } from \"insite-db\";\nimport type { AbilitiesSchema } from \"insite-users-server\";\nimport type { WSSCWithUser } from \"insite-users-server-ws\";\nimport { publications } from \"../Publication\";\nimport { CollectionMapPublication } from \"./CollectionMapPublication\";\nimport { CollectionMapSubscriptionHandle } from \"./CollectionMapSubscriptionHandle\";\nimport { Publication } from \"./Publication\";\nimport { SubscriptionHandle } from \"./SubscriptionHandle\";\nimport { Subscriptions } from \"./Subscriptions\";\n\n\nconst types = [ \"object\", \"map\" ] as const;\n\nfunction isPublicationCollectionMap<AS extends AbilitiesSchema>(publication: CollectionMapPublication<AS> | Publication<AS>): publication is CollectionMapPublication<AS> {\n\treturn publication.type === \"map\";\n}\n\nexport type WithPublish<T, AS extends AbilitiesSchema> = {\n\tpublish(...args: ConstructorParameters<typeof Publication>): Publication<AS>;\n} & T;\n\nexport type WithPublishCollection<T, AS extends AbilitiesSchema> = {\n\tpublish<D extends Document>(...args: ConstructorParameters<typeof CollectionMapPublication<AS, D>>): CollectionMapPublication<AS, D>;\n} & WithPublish<T, AS>;\n\nfunction isCollectionMapPublicationArgs(args: ConstructorParameters<typeof CollectionMapPublication> | ConstructorParameters<typeof Publication>): args is ConstructorParameters<typeof CollectionMapPublication> {\n\treturn args[0] instanceof Collection;\n}\n\n\nexport class SubscriptionHandler<AS extends AbilitiesSchema> {\n\tconstructor(wss: InSiteWebSocketServer, withCollections?: boolean) {\n\t\t\n\t\twss.on(\"client-connect\", this.handleClientConnect);\n\t\twss.on(\"client-session\", this.handleClientSession);\n\t\twss.on(\"client-message:s-s\"/* subscription subscribe */, this.handleClientSubscribe);\n\t\twss.on(\"client-message:s-u\"/* subscription unsubscribe */, this.handleClientUnsubscribe);\n\t\twss.on(\"client-close\", this.handleClientClose);\n\t\t\n\t\twss.on(\"should-renew-subscriptions\", this.renewSubscriptionsFor);\n\t\t\n\t\tObject.assign(wss, {\n\t\t\tpublish: withCollections ?\n\t\t\t\tfunction publishWithCollections(...args: ConstructorParameters<typeof CollectionMapPublication> | ConstructorParameters<typeof Publication>) {\n\t\t\t\t\tif (isCollectionMapPublicationArgs(args))\n\t\t\t\t\t\treturn new CollectionMapPublication<AS>(...args);\n\t\t\t\t\t\n\t\t\t\t\treturn new Publication<AS>(...args);\n\t\t\t\t} :\n\t\t\t\tfunction (...args: ConstructorParameters<typeof Publication>) {\n\t\t\t\t\treturn new Publication<AS>(...args);\n\t\t\t\t}\n\t\t});\n\t\t\n\t}\n\t\n\tprivate wsSubscriptionMap = new WeakMap<WSSCWithUser<AS>, Subscriptions<AS>>();\n\t\n\trenewSubscriptionsFor = (webSockets: WSSCWithUser<AS>[]) => {\n\t\tfor (const wssc of webSockets)\n\t\t\tthis.wsSubscriptionMap.get(wssc)?.renew();\n\t\t\n\t};\n\t\n\tprivate handleClientConnect = (wssc: WSSCWithUser<AS>) =>\n\t\tthis.wsSubscriptionMap.set(wssc, new Subscriptions());\n\t\n\tprivate handleClientSession = (wssc: WSSCWithUser<AS>) =>\n\t\tthis.wsSubscriptionMap.get(wssc)?.renew();\n\t\n\tprivate handleClientSubscribe = (\n\t\twssc: WSSCWithUser<AS>,\n\t\tsubscriptionType: typeof types[number],\n\t\tpublicationName: string,\n\t\ti: number | string,\n\t\targs: unknown[],\n\t\timmediately?: boolean\n\t) => {\n\t\t\n\t\tif (types.includes(subscriptionType)) {\n\t\t\tconst publication = publications.get(publicationName) as CollectionMapPublication<AS> | Publication<AS> | undefined;\n\t\t\t\n\t\t\tif (publication?.type === subscriptionType) {\n\t\t\t\tconst handler = (data: unknown) => wssc.sendMessage(\"s-c\"/* subscription changed */, i, data);\n\t\t\t\t\n\t\t\t\tlet subscriptionHandle;\n\t\t\t\tif (isPublicationCollectionMap(publication)) {\n\t\t\t\t\ttype D = typeof publication extends CollectionMapPublication<AS, infer DD> ? DD : never;\n\t\t\t\t\tsubscriptionHandle = new CollectionMapSubscriptionHandle<AS, D>(publicationName, [ wssc, ...args ], handler, immediately);\n\t\t\t\t} else\n\t\t\t\t\tsubscriptionHandle = new SubscriptionHandle<AS>(publicationName, [ wssc, ...args ], handler, immediately);\n\t\t\t\t\n\t\t\t\tthis.wsSubscriptionMap.get(wssc)?.subscribe(i, subscriptionHandle);\n\t\t\t}\n\t\t}\n\t\t\n\t};\n\t\n\tprivate handleClientUnsubscribe = (wssc: WSSCWithUser<AS>, i: number | string) =>\n\t\tthis.wsSubscriptionMap.get(wssc)?.cancel(i);\n\t\n\tprivate handleClientClose = (wssc: WSSCWithUser<AS>) => {\n\t\tfor (const subscription of this.wsSubscriptionMap.get(wssc)?.values() ?? [])\n\t\t\tsubscription.cancel();\n\t\t\n\t};\n\t\n}\n", "import type { AbilitiesSchema } from \"insite-users-server\";\nimport type { CollectionMapSubscriptionHandle } from \"./CollectionMapSubscriptionHandle\";\nimport type { SubscriptionHandle } from \"./SubscriptionHandle\";\n\n\nexport class Subscriptions<AS extends AbilitiesSchema> extends Map<number | string, CollectionMapSubscriptionHandle<AS> | SubscriptionHandle<AS>> {\n\t\n\tsubscribe = this.set;\n\t\n\trenew() {\n\t\treturn Promise.all([ ...this.values() ].map(subscription => subscription.renew()));\n\t}\n\t\n\tcancel(key: number | string) {\n\t\tthis.get(key)?.cancel();\n\t\tthis.delete(key);\n\t\t\n\t}\n\t\n}\n"],
|
|
5
|
-
"mappings": "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
|
|
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", "import type { AbilitiesSchema } from \"insite-common\";\nimport type { Document, InSiteWatchedCollection } from \"insite-db\";\nimport { CollectionMapPublication as GenericCollectionMapPublication } from \"../CollectionMapPublication\";\nimport { SubscriptionArgs } from \"./types\";\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any, no-useless-constructor */\n\n\ntype RestArgs<\n\tAS extends AbilitiesSchema = AbilitiesSchema,\n\tD extends Document = Document,\n\tRA extends unknown[] = unknown[],\n\tT extends abstract new (...args: any) => any = typeof GenericCollectionMapPublication<D, SubscriptionArgs<AS, RA>>\n> = T extends abstract new (first: any, ...rest: infer R) => any ? R : never;\n\n\nexport class CollectionMapPublication<\n\tAS extends AbilitiesSchema = AbilitiesSchema,\n\tD extends Document = Document,\n\tRA extends unknown[] = unknown[]\n> extends GenericCollectionMapPublication<D, SubscriptionArgs<AS, RA>> {\n\tconstructor(collection: InSiteWatchedCollection<D>, ...restArgs: RestArgs<AS, D, RA>) {\n\t\tsuper(collection, ...restArgs);\n\t}\n}\n", "import type { AbilitiesSchema } from \"insite-common\";\nimport type { Document } from \"insite-db\";\nimport {\n\tCollectionMapSubscriptionHandle as GenericCollectionMapSubscriptionHandle\n} from \"../CollectionMapSubscriptionHandle\";\nimport { SubscriptionArgs } from \"./types\";\n\n\nexport class CollectionMapSubscriptionHandle<\n\tAS extends AbilitiesSchema = AbilitiesSchema,\n\tD extends Document = Document,\n\tRA extends unknown[] = unknown[]\n> extends GenericCollectionMapSubscriptionHandle<D, SubscriptionArgs<AS, RA>> {\n\t// eslint-disable-next-line no-useless-constructor\n\tconstructor(...args: ConstructorParameters<typeof GenericCollectionMapSubscriptionHandle<D, SubscriptionArgs<AS, RA>>>) {\n\t\tsuper(...args);\n\t}\n}\n", "import type { AbilitiesSchema } from \"insite-common\";\nimport { Publication as GenericPublication } from \"../Publication\";\nimport { SubscriptionArgs } from \"./types\";\n\n\nexport class Publication<\n\tAS extends AbilitiesSchema = AbilitiesSchema,\n\tRA extends unknown[] = unknown[]\n> extends GenericPublication<SubscriptionArgs<AS, RA>> {\n\t// eslint-disable-next-line no-useless-constructor\n\tconstructor(...args: ConstructorParameters<typeof GenericPublication<SubscriptionArgs<AS, RA>>>) {\n\t\tsuper(...args);\n\t}\n}\n", "import type { AbilitiesSchema } from \"insite-common\";\nimport { SubscriptionHandle as GenericSubscriptionHandle } from \"../SubscriptionHandle\";\nimport { SubscriptionArgs } from \"./types\";\n\n\nexport class SubscriptionHandle<\n\tAS extends AbilitiesSchema = AbilitiesSchema,\n\tRA extends unknown[] = unknown[]\n> extends GenericSubscriptionHandle<SubscriptionArgs<AS, RA>> {\n\t// eslint-disable-next-line no-useless-constructor\n\tconstructor(...args: ConstructorParameters<typeof GenericSubscriptionHandle<SubscriptionArgs<AS, RA>>>) {\n\t\tsuper(...args);\n\t}\n}\n", "import type { InSiteWebSocketServer } from \"insite-ws/server\";\nimport type { AbilitiesSchema } from \"insite-common\";\nimport { Collection, type Document } from \"insite-db\";\nimport type { WSSCWithUser } from \"insite-users-server-ws\";\nimport { publications } from \"../Publication\";\nimport { CollectionMapPublication } from \"./CollectionMapPublication\";\nimport { CollectionMapSubscriptionHandle } from \"./CollectionMapSubscriptionHandle\";\nimport { Publication } from \"./Publication\";\nimport { SubscriptionHandle } from \"./SubscriptionHandle\";\nimport { Subscriptions } from \"./Subscriptions\";\n\n\nconst types = [ \"object\", \"map\" ] as const;\n\nfunction isPublicationCollectionMap<AS extends AbilitiesSchema>(publication: CollectionMapPublication<AS> | Publication<AS>): publication is CollectionMapPublication<AS> {\n\treturn publication.type === \"map\";\n}\n\nexport type WithPublish<T, AS extends AbilitiesSchema> = {\n\tpublish(...args: ConstructorParameters<typeof Publication>): Publication<AS>;\n} & T;\n\nexport type WithPublishCollection<T, AS extends AbilitiesSchema> = {\n\tpublish<D extends Document>(...args: ConstructorParameters<typeof CollectionMapPublication<AS, D>>): CollectionMapPublication<AS, D>;\n} & WithPublish<T, AS>;\n\nfunction isCollectionMapPublicationArgs(args: ConstructorParameters<typeof CollectionMapPublication> | ConstructorParameters<typeof Publication>): args is ConstructorParameters<typeof CollectionMapPublication> {\n\treturn args[0] instanceof Collection;\n}\n\n\nexport class SubscriptionHandler<AS extends AbilitiesSchema> {\n\tconstructor(wss: InSiteWebSocketServer, withCollections?: boolean) {\n\t\t\n\t\twss.on(\"client-connect\", this.handleClientConnect);\n\t\twss.on(\"client-session\", this.handleClientSession);\n\t\twss.on(\"client-message:s-s\"/* subscription subscribe */, this.handleClientSubscribe);\n\t\twss.on(\"client-message:s-u\"/* subscription unsubscribe */, this.handleClientUnsubscribe);\n\t\twss.on(\"client-close\", this.handleClientClose);\n\t\t\n\t\twss.on(\"should-renew-subscriptions\", this.renewSubscriptionsFor);\n\t\t\n\t\tObject.assign(wss, {\n\t\t\tpublish: withCollections ?\n\t\t\t\tfunction publishWithCollections(...args: ConstructorParameters<typeof CollectionMapPublication> | ConstructorParameters<typeof Publication>) {\n\t\t\t\t\tif (isCollectionMapPublicationArgs(args))\n\t\t\t\t\t\treturn new CollectionMapPublication<AS>(...args);\n\t\t\t\t\t\n\t\t\t\t\treturn new Publication<AS>(...args);\n\t\t\t\t} :\n\t\t\t\tfunction (...args: ConstructorParameters<typeof Publication>) {\n\t\t\t\t\treturn new Publication<AS>(...args);\n\t\t\t\t}\n\t\t});\n\t\t\n\t}\n\t\n\tprivate wsSubscriptionMap = new WeakMap<WSSCWithUser<AS>, Subscriptions<AS>>();\n\t\n\trenewSubscriptionsFor = (webSockets: WSSCWithUser<AS>[]) => {\n\t\tfor (const wssc of webSockets)\n\t\t\tthis.wsSubscriptionMap.get(wssc)?.renew();\n\t\t\n\t};\n\t\n\tprivate handleClientConnect = (wssc: WSSCWithUser<AS>) =>\n\t\tthis.wsSubscriptionMap.set(wssc, new Subscriptions());\n\t\n\tprivate handleClientSession = (wssc: WSSCWithUser<AS>) =>\n\t\tthis.wsSubscriptionMap.get(wssc)?.renew();\n\t\n\tprivate handleClientSubscribe = (\n\t\twssc: WSSCWithUser<AS>,\n\t\tsubscriptionType: typeof types[number],\n\t\tpublicationName: string,\n\t\ti: number | string,\n\t\targs: unknown[],\n\t\timmediately?: boolean\n\t) => {\n\t\t\n\t\tif (types.includes(subscriptionType)) {\n\t\t\tconst publication = publications.get(publicationName) as CollectionMapPublication<AS> | Publication<AS> | undefined;\n\t\t\t\n\t\t\tif (publication?.type === subscriptionType) {\n\t\t\t\tconst handler = (data: unknown) => wssc.sendMessage(\"s-c\"/* subscription changed */, i, data);\n\t\t\t\t\n\t\t\t\tlet subscriptionHandle;\n\t\t\t\tif (isPublicationCollectionMap(publication)) {\n\t\t\t\t\ttype D = typeof publication extends CollectionMapPublication<AS, infer DD> ? DD : never;\n\t\t\t\t\tsubscriptionHandle = new CollectionMapSubscriptionHandle<AS, D>(publicationName, [ wssc, ...args ], handler, immediately);\n\t\t\t\t} else\n\t\t\t\t\tsubscriptionHandle = new SubscriptionHandle<AS>(publicationName, [ wssc, ...args ], handler, immediately);\n\t\t\t\t\n\t\t\t\tthis.wsSubscriptionMap.get(wssc)?.subscribe(i, subscriptionHandle);\n\t\t\t}\n\t\t}\n\t\t\n\t};\n\t\n\tprivate handleClientUnsubscribe = (wssc: WSSCWithUser<AS>, i: number | string) =>\n\t\tthis.wsSubscriptionMap.get(wssc)?.cancel(i);\n\t\n\tprivate handleClientClose = (wssc: WSSCWithUser<AS>) => {\n\t\tfor (const subscription of this.wsSubscriptionMap.get(wssc)?.values() ?? [])\n\t\t\tsubscription.cancel();\n\t\t\n\t};\n\t\n}\n", "import type { AbilitiesSchema } from \"insite-common\";\nimport type { CollectionMapSubscriptionHandle } from \"./CollectionMapSubscriptionHandle\";\nimport type { SubscriptionHandle } from \"./SubscriptionHandle\";\n\n\nexport class Subscriptions<AS extends AbilitiesSchema> extends Map<number | string, CollectionMapSubscriptionHandle<AS> | SubscriptionHandle<AS>> {\n\t\n\tsubscribe = this.set;\n\t\n\trenew() {\n\t\treturn Promise.all([ ...this.values() ].map(subscription => subscription.renew()));\n\t}\n\t\n\tcancel(key: number | string) {\n\t\tthis.get(key)?.cancel();\n\t\tthis.delete(key);\n\t\t\n\t}\n\t\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
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", "CollectionMapPublication", "collection", "restArgs", "CollectionMapSubscriptionHandle", "args", "Publication", "args", "SubscriptionHandle", "args", "Collection", "Subscriptions", "subscription", "key", "types", "isPublicationCollectionMap", "publication", "isCollectionMapPublicationArgs", "args", "Collection", "SubscriptionHandler", "wss", "withCollections", "CollectionMapPublication", "Publication", "webSockets", "wssc", "Subscriptions", "subscriptionType", "publicationName", "i", "immediately", "publications", "handler", "data", "subscriptionHandle", "CollectionMapSubscriptionHandle", "SubscriptionHandle", "subscription"]
|
|
7
7
|
}
|
package/dist/ws/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AbilitiesSchema } from "insite-
|
|
1
|
+
import type { AbilitiesSchema } from "insite-common";
|
|
2
2
|
import type { WSSCWithUser } from "insite-users-server-ws";
|
|
3
3
|
export type SubscriptionArgs<AS extends AbilitiesSchema = AbilitiesSchema, RA extends unknown[] = unknown[]> = [WSSCWithUser<AS>, ...RA];
|
|
4
4
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/ws/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ws/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ws/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,MAAM,MAAM,gBAAgB,CAC3B,EAAE,SAAS,eAAe,GAAG,eAAe,EAC5C,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,IAC7B,CAAE,YAAY,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "insite-subscriptions-server",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.8",
|
|
4
4
|
"description": "inSite subscriptions server side",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
".": "./dist/index.js",
|
|
10
10
|
"./ws": "./dist/ws/index.js"
|
|
11
11
|
},
|
|
12
|
-
"packageManager": "bun@1.1.
|
|
12
|
+
"packageManager": "bun@1.1.26",
|
|
13
13
|
"scripts": {
|
|
14
14
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
15
15
|
"build": "bun .conveyer.js",
|
|
@@ -29,14 +29,14 @@
|
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"sift": "^16.0.1",
|
|
31
31
|
"insite-db": "^2",
|
|
32
|
-
"insite-
|
|
32
|
+
"insite-common": "^2",
|
|
33
33
|
"insite-users-server-ws": "^2",
|
|
34
34
|
"insite-ws": "^2"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@nesvet/conveyer": "^2.2.4",
|
|
38
|
-
"@nesvet/eslint-config": "^2.0.
|
|
39
|
-
"@types/node": "^22.
|
|
38
|
+
"@nesvet/eslint-config": "^2.0.25",
|
|
39
|
+
"@types/node": "^22.5.1",
|
|
40
40
|
"@types/ws": "^8.5.12",
|
|
41
41
|
"typescript": "^5.5.4"
|
|
42
42
|
}
|