prostgles-client 4.0.7 → 4.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.
@@ -14,11 +14,16 @@ export type SyncOneOptions = Partial<SyncedTableOptions> & {
14
14
  /**
15
15
  * Creates a local synchronized table
16
16
  */
17
- export type Sync<T = POJO> = (basicFilter: Partial<T>, options: SyncOptions, onChange: (data: (SyncDataItem<Required<T>>)[], delta?: Partial<T>[]) => any, onError?: (error: any) => void) => Promise<MultiSyncHandles<T>>;
17
+ type OnChange<T> = (data: (SyncDataItem<Required<T>>)[], delta?: Partial<T>[]) => any;
18
+ export type Sync<T extends AnyObject, OnChangeFunc extends OnChange<T> = (data: (SyncDataItem<Required<T>>)[], delta?: Partial<T>[]) => any, Upsert extends ((newData: T[]) => any) = ((newData: T[]) => any)> = (basicFilter: Partial<T>, options: SyncOptions, onChange: OnChangeFunc, onError?: (error: any) => void) => Promise<{
19
+ $unsync: () => void;
20
+ $upsert: Upsert;
21
+ getItems: () => T[];
22
+ }>;
18
23
  /**
19
24
  * Creates a local synchronized record
20
25
  */
21
- export type SyncOne<T = POJO> = (basicFilter: Partial<T>, options: SyncOneOptions, onChange: (data: (SyncDataItem<Required<T>>), delta?: Partial<T>) => any, onError?: (error: any) => void) => Promise<SingleSyncHandles<T>>;
26
+ export type SyncOne<T extends AnyObject = AnyObject> = (basicFilter: Partial<T>, options: SyncOneOptions, onChange: (data: (SyncDataItem<Required<T>>), delta?: Partial<T>) => any, onError?: (error: any) => void) => Promise<SingleSyncHandles<T>>;
22
27
  export type SyncBatchRequest = {
23
28
  from_synced?: string | number;
24
29
  to_synced?: string | number;
@@ -36,8 +41,8 @@ export type ItemUpdated = ItemUpdate & {
36
41
  status: "inserted" | "updated" | "deleted" | "unchanged";
37
42
  from_server: boolean;
38
43
  };
39
- export type CloneSync<T, Full extends boolean> = (onChange: SingleChangeListener<T>, onError?: (error: any) => void) => SingleSyncHandles<T, Full>;
40
- export type CloneMultiSync<T> = (onChange: MultiChangeListener, onError?: (error: any) => void) => MultiSyncHandles<T>;
44
+ export type CloneSync<T extends AnyObject, Full extends boolean> = (onChange: SingleChangeListener<T>, onError?: (error: any) => void) => SingleSyncHandles<T, Full>;
45
+ export type CloneMultiSync<T extends AnyObject> = (onChange: MultiChangeListener<T>, onError?: (error: any) => void) => MultiSyncHandles<T>;
41
46
  type $UpdateOpts = {
42
47
  deepMerge: boolean;
43
48
  };
@@ -47,7 +52,7 @@ type DeepPartial<T> = T extends Array<any> ? T : T extends object ? {
47
52
  /**
48
53
  * CRUD handles added if initialised with handlesOnData = true
49
54
  */
50
- export type SingleSyncHandles<T = POJO, Full extends boolean = false> = {
55
+ export type SingleSyncHandles<T extends AnyObject = AnyObject, Full extends boolean = false> = {
51
56
  $get: () => T;
52
57
  $find: (idObj: Partial<T>) => (T | undefined);
53
58
  $unsync: () => any;
@@ -58,20 +63,20 @@ export type SingleSyncHandles<T = POJO, Full extends boolean = false> = {
58
63
  $cloneSync: CloneSync<T, Full>;
59
64
  $cloneMultiSync: CloneMultiSync<T>;
60
65
  };
61
- export type SyncDataItem<T = POJO, Full extends boolean = false> = T & (Full extends true ? SingleSyncHandles<T, true> : Partial<SingleSyncHandles<T>>);
62
- export type MultiSyncHandles<T = POJO> = {
66
+ export type SyncDataItem<T extends AnyObject = AnyObject, Full extends boolean = false> = T & (Full extends true ? SingleSyncHandles<T, true> : Partial<SingleSyncHandles<T>>);
67
+ export type MultiSyncHandles<T extends AnyObject> = {
63
68
  $unsync: () => void;
64
69
  $upsert: (newData: T[]) => any;
65
70
  getItems: () => AnyObject[];
66
71
  };
67
- export type SubscriptionSingle<T = POJO, Full extends boolean = false> = {
72
+ export type SubscriptionSingle<T extends AnyObject = AnyObject, Full extends boolean = false> = {
68
73
  _onChange: SingleChangeListener<T, Full>;
69
74
  notify: (data: T, delta?: DeepPartial<T>) => T;
70
75
  idObj: Partial<T>;
71
76
  handlesOnData?: boolean;
72
77
  handles?: SingleSyncHandles<T, Full>;
73
78
  };
74
- export type SubscriptionMulti<T = POJO> = {
79
+ export type SubscriptionMulti<T extends AnyObject = AnyObject> = {
75
80
  _onChange: MultiChangeListener<T>;
76
81
  notify: (data: T[], delta: DeepPartial<T>[]) => T[];
77
82
  idObj?: Partial<T>;
@@ -83,8 +88,8 @@ declare const STORAGE_TYPES: {
83
88
  readonly localStorage: "localStorage";
84
89
  readonly object: "object";
85
90
  };
86
- export type MultiChangeListener<T = POJO> = (items: SyncDataItem<T>[], delta: DeepPartial<T>[]) => any;
87
- export type SingleChangeListener<T = POJO, Full extends boolean = false> = (item: SyncDataItem<T, Full>, delta?: DeepPartial<T>) => any;
91
+ export type MultiChangeListener<T extends AnyObject = AnyObject> = (items: SyncDataItem<T>[], delta: DeepPartial<T>[]) => any;
92
+ export type SingleChangeListener<T extends AnyObject = AnyObject, Full extends boolean = false> = (item: SyncDataItem<T, Full>, delta?: DeepPartial<T>) => any;
88
93
  export type SyncedTableOptions = {
89
94
  name: string;
90
95
  filter?: POJO;
@@ -1 +1 @@
1
- {"version":3,"file":"SyncedTable.d.ts","sourceRoot":"","sources":["../lib/SyncedTable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SyncedTable.d.ts","sourceRoot":"","sources":["../lib/SyncedTable.ts"],"names":[],"mappings":"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"}
@@ -872,3 +872,12 @@ function quickClone(obj) {
872
872
  return obj;
873
873
  }
874
874
  exports.quickClone = quickClone;
875
+ /**
876
+ * Type tests
877
+ */
878
+ (async () => {
879
+ const s = 1;
880
+ const sh = s({ a: 1 }, {}, (d) => { d; });
881
+ const syncTyped = 1;
882
+ // const sUntyped: Sync<AnyObject, any> = syncTyped;
883
+ });
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var i in n)("object"==typeof exports?exports:e)[i]=n[i]}}(this||window,(()=>(()=>{var e={133:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.quickClone=t.SyncedTable=t.debug=void 0;const i=n(792),s="DEBUG_SYNCEDTABLE",r="undefined"!=typeof window;t.debug=function(...e){r&&window[s]&&window[s](...e)};const o={array:"array",localStorage:"localStorage",object:"object"};class a{set multiSubscriptions(e){(0,t.debug)(e,this._multiSubscriptions),this._multiSubscriptions=e.slice(0)}get multiSubscriptions(){return this._multiSubscriptions}set singleSubscriptions(e){(0,t.debug)(e,this._singleSubscriptions),this._singleSubscriptions=e.slice(0)}get singleSubscriptions(){return this._singleSubscriptions}constructor({name:e,filter:n,onChange:s,onReady:a,db:d,skipFirstTrigger:u=!1,select:h="*",storageType:p="object",patchText:m=!1,patchJSON:f=!1,onError:g}){if(this.throttle=100,this.batch_size=50,this.skipFirstTrigger=!1,this.columns=[],this._multiSubscriptions=[],this._singleSubscriptions=[],this.items=[],this.itemsObj={},this.isSynced=!1,this.updatePatches=async e=>{var t,n;let s=e.map((e=>e.current)),r=[],o=[];if(this.columns&&this.columns.length&&(null===(t=this.tableHandler)||void 0===t?void 0:t.updateBatch)&&(this.patchText||this.patchJSON)){const t=this.columns.filter((e=>"text"===e.data_type));if(this.patchText&&t.length){s=[];const n=[this.synced_field,...this.id_fields];await Promise.all(e.slice(0).map((async(e,a)=>{const{current:l,initial:c}={...e};let d;c&&(t.map((e=>{!n.includes(e.name)&&e.name in l&&(null!=d||(d={...l}),d[e.name]=(0,i.getTextPatch)(c[e.name],l[e.name]))})),d&&this.wal&&(o.push(d),r.push([this.wal.getIdObj(d),this.wal.getDeltaObj(d)]))),d||s.push(l)})))}}if(r.length)try{await(null===(n=this.tableHandler)||void 0===n?void 0:n.updateBatch(r))}catch(e){console.log("failed to patch update",e),s=s.concat(o)}return s.filter((e=>e))},this._notifySubscribers=(e=[])=>{if(!this.isSynced)return;let t=[],n=[],i=[];if(e.map((({idObj:e,newItem:s,delta:r})=>{this.singleSubscriptions.filter((t=>this.matchesIdObj(t.idObj,e))).map((async e=>{try{await e.notify(s,r)}catch(e){console.error("SyncedTable failed to notify: ",e)}})),this.matchesFilter(s)&&(t.push(s),n.push(r),i.push(e))})),this.onChange||this.multiSubscriptions.length){let e=[],i=[];if(this.getItems().map((s=>{e.push({...s});const r=t.findIndex((e=>this.matchesIdObj(s,e)));i.push(n[r])})),this.onChange)try{this.onChange(e,i)}catch(e){console.error("SyncedTable failed to notify onChange: ",e)}this.multiSubscriptions.map((async t=>{try{await t.notify(e,i)}catch(e){console.error("SyncedTable failed to notify: ",e)}}))}},this.unsubscribe=e=>(this.singleSubscriptions=this.singleSubscriptions.filter((t=>t._onChange!==e)),this.multiSubscriptions=this.multiSubscriptions.filter((t=>t._onChange!==e)),(0,t.debug)("unsubscribe",this),"ok"),this.unsync=()=>{this.dbSync&&this.dbSync.unsync&&this.dbSync.unsync()},this.destroy=()=>{this.unsync(),this.multiSubscriptions=[],this.singleSubscriptions=[],this.itemsObj={},this.items=[],this.onChange=void 0},this.delete=async(e,t=!1)=>{var n;const i=this.getIdObj(e);return this.setItem(i,void 0,!0,!0),!t&&(null===(n=this.tableHandler)||void 0===n?void 0:n.delete)&&await this.tableHandler.delete(i),this._notifySubscribers(),!0},this.checkItemCols=e=>{if(this.columns&&this.columns.length){const t=Object.keys({...e}).filter((e=>!this.columns.find((t=>t.name===e))));if(t.length)throw"Unexpected columns in sync item update: "+t.join(", ")}},this.upsert=async(e,t=!1)=>{var n,s;if(!(e&&e.length||t))throw"No data provided for upsert";let r,o=[],a=[];await Promise.all(e.map((async(e,n)=>{var s;let c={...e.idObj},d={...e.delta};Object.keys(d).map((e=>{void 0===d[e]&&(d[e]=null)})),t||this.checkItemCols({...e.delta,...e.idObj});let u=this.getItem(c),h=u.index,p=u.data;!t&&!(0,i.isEmpty)(d)||(0,i.isEmpty)(p)||(d=this.getDelta(p||{},d)),t||(d[this.synced_field]=Date.now());let m={...p,...d,...c};p&&!t&&(null===(s=e.opts)||void 0===s?void 0:s.deepMerge)&&(m=l({...p,...c},{...d})),r=p?p[this.synced_field]<m[this.synced_field]?"updated":"unchanged":"inserted",this.setItem(m,h);let f={idObj:c,delta:d,oldItem:p,newItem:m,status:r,from_server:t};return t||a.push({initial:p,current:{...m}}),f.delta&&!(0,i.isEmpty)(f.delta)&&o.push(f),!0}))).catch((e=>{console.error("SyncedTable failed upsert: ",e)})),null===(n=this.notifyWal)||void 0===n||n.addData(o.map((e=>({initial:e.oldItem,current:e.newItem})))),!t&&a.length&&(null===(s=this.wal)||void 0===s||s.addData(a))},this.setItems=e=>{const t=c(e);if(this.storageType===o.localStorage){if(!r)throw"Cannot access window object. Choose another storage method (array OR object)";window.localStorage.setItem(this.name,JSON.stringify(t))}else this.storageType===o.array?this.items=t:this.itemsObj=t.reduce(((e,t)=>({...e,[this.getIdStr(t)]:{...t}})),{})},this.getItems=()=>{let e=[];if(this.storageType===o.localStorage){if(!r)throw"Cannot access window object. Choose another storage method (array OR object)";let t=window.localStorage.getItem(this.name);if(t)try{e=JSON.parse(t)}catch(e){console.error(e)}}else e=this.storageType===o.array?this.items.map((e=>({...e}))):Object.values({...this.itemsObj});if(!this.id_fields||!this.synced_field)throw"id_fields AND/OR synced_field missing";{const t=[this.synced_field,...this.id_fields.sort()];e=e.filter((e=>!this.filter||!(0,i.getKeys)(this.filter).find((t=>e[t]!==this.filter[t])))).sort(((e,n)=>t.map((t=>e[t]<n[t]?-1:e[t]>n[t]?1:0)).find((e=>e))))}return c(e)},this.getBatch=({from_synced:e,to_synced:t,offset:n,limit:i}={offset:0,limit:void 0})=>{let s=this.getItems().map((e=>({...e}))).filter((n=>(!Number.isFinite(e)||+n[this.synced_field]>=+e)&&(!Number.isFinite(t)||+n[this.synced_field]<=+t)));return(n||i)&&(s=s.splice(null!=n?n:0,i||s.length)),s},this.name=e,this.filter=n,this.select=h,this.onChange=s,!o[p])throw"Invalid storage type. Expecting one of: "+Object.keys(o).join(", ");if(r||p!==o.localStorage||(console.warn("Could not set storageType to localStorage: window object missing\nStorage changed to object"),p="object"),this.storageType=p,this.patchText=m,this.patchJSON=f,!d)throw"db missing";this.db=d;const{id_fields:y,synced_field:b,throttle:O=100,batch_size:S=50}=d[this.name]._syncInfo;if(!y||!b)throw"id_fields/synced_field missing";this.id_fields=y,this.synced_field=b,this.batch_size=S,this.throttle=O,this.skipFirstTrigger=u,this.multiSubscriptions=[],this.singleSubscriptions=[],this.onError=g||function(e){console.error("Sync internal error: ",e)};const _={id_fields:y,synced_field:b,throttle:O};d[this.name]._sync(n,{select:h},{onSyncRequest:e=>{let t={c_lr:void 0,c_fr:void 0,c_count:0},n=this.getBatch(e);return n.length&&(t={c_fr:this.getRowSyncObj(n[0]),c_lr:this.getRowSyncObj(n[n.length-1]),c_count:n.length}),t},onPullRequest:async e=>this.getBatch(e),onUpdates:async e=>{var t;if("err"in e&&e.err)null===(t=this.onError)||void 0===t||t.call(this,e.err);else if("isSynced"in e&&e.isSynced&&!this.isSynced){this.isSynced=e.isSynced;let t=this.getItems().map((e=>({...e})));this.setItems([]);const n=t.map((e=>({idObj:this.getIdObj(e),delta:{...e}})));await this.upsert(n,!0)}else if("data"in e){let t=e.data.map((e=>({idObj:this.getIdObj(e),delta:e})));await this.upsert(t,!0)}else console.error("Unexpected onUpdates");return!0}}).then((e=>{function t(){return"Data may be lost. Are you sure?"}this.dbSync=e,this.wal=new i.WAL({..._,batch_size:S,onSendStart:()=>{r&&(window.onbeforeunload=t)},onSend:async(e,t)=>(await this.updatePatches(t)).length?this.dbSync.syncData(e):[],onSendEnd:()=>{r&&(window.onbeforeunload=null)}}),this.notifyWal=new i.WAL({..._,batch_size:1/0,throttle:5,onSend:async(e,t)=>{this._notifySubscribers(t.map((e=>{var t;return{delta:this.getDelta(null!==(t=e.initial)&&void 0!==t?t:{},e.current),idObj:this.getIdObj(e.current),newItem:e.current}})))}}),a()})),d[this.name].getColumns&&d[this.name].getColumns().then((e=>{this.columns=e})),this.onChange&&!this.skipFirstTrigger&&setTimeout(this.onChange,0),(0,t.debug)(this)}static create(e){return new Promise(((t,n)=>{try{const n=new a({...e,onReady:()=>{setTimeout((()=>{t(n)}),0)}})}catch(e){n(e)}}))}sync(e,t=!0){const n={$unsync:()=>this.unsubscribe(e),getItems:()=>this.getItems(),$upsert:e=>{if(e){const t=e=>({idObj:this.getIdObj(e),delta:e});Array.isArray(e)?this.upsert(e.map((e=>t(e)))):this.upsert([t(e)])}}},i={_onChange:e,handlesOnData:t,handles:n,notify:(n,i)=>{let s=[...n],r=[...i];return t&&(s=s.map(((n,i)=>{const s=(n,i)=>({...n,...this.makeSingleSyncHandles(i,e),$get:()=>s(this.getItem(i).data,i),$find:e=>s(this.getItem(e).data,e),$update:(e,t)=>this.upsert([{idObj:i,delta:e,opts:t}]).then((e=>!0)),$delete:async()=>this.delete(i),$cloneMultiSync:e=>this.sync(e,t)}),r=this.getIdObj(n);return s(n,r)}))),e(s,r)}};return this.multiSubscriptions.push(i),this.skipFirstTrigger||setTimeout((()=>{let e=this.getItems();i.notify(e,e)}),0),Object.freeze({...n})}makeSingleSyncHandles(e,n){if(!e||!n)throw"syncOne(idObj, onChange) -> MISSING idObj or onChange";const i={$get:()=>this.getItem(e).data,$find:e=>this.getItem(e).data,$unsync:()=>this.unsubscribe(n),$delete:()=>this.delete(e),$update:(n,i)=>{this.singleSubscriptions.length||this.multiSubscriptions.length||(console.warn("No sync listeners"),(0,t.debug)("nosync",this._singleSubscriptions,this._multiSubscriptions)),this.upsert([{idObj:e,delta:n,opts:i}])},$cloneSync:t=>this.syncOne(e,t),$cloneMultiSync:e=>this.sync(e,!0)};return i}syncOne(e,t,n=!0){const i=this.makeSingleSyncHandles(e,t),s={_onChange:t,idObj:e,handlesOnData:n,handles:i,notify:(e,s)=>{let r={...e};return n&&(r.$get=i.$get,r.$find=i.$find,r.$update=i.$update,r.$delete=i.$delete,r.$unsync=i.$unsync,r.$cloneSync=i.$cloneSync),t(r,s)}};return this.singleSubscriptions.push(s),setTimeout((()=>{let e=i.$get();e&&s.notify(e,e)}),0),Object.freeze({...i})}getIdStr(e){return this.id_fields.sort().map((t=>`${e[t]||""}`)).join(".")}getIdObj(e){let t={};return this.id_fields.sort().map((n=>{t[n]=e[n]})),t}getRowSyncObj(e){let t={};return[this.synced_field,...this.id_fields].sort().map((n=>{t[n]=e[n]})),t}matchesFilter(e){return Boolean(e&&(!this.filter||(0,i.isEmpty)(this.filter)||!Object.keys(this.filter).find((t=>this.filter[t]!==e[t]))))}matchesIdObj(e,t){return Boolean(e&&t&&!this.id_fields.sort().find((n=>e[n]!==t[n])))}getDelta(e,t){return(0,i.isEmpty)(e)?{...t}:Object.keys({...e,...t}).filter((e=>!this.id_fields.includes(e))).reduce(((n,i)=>{let s={};if(i in t&&t[i]!==e[i]){let n={[i]:t[i]};t[i]&&e[i]&&"object"==typeof e[i]?JSON.stringify(t[i])!==JSON.stringify(e[i])&&(s=n):s=n}return{...n,...s}}),{})}deleteAll(){this.getItems().map((e=>this.delete(e)))}get tableHandler(){const e=this.db[this.name];if((null==e?void 0:e.update)&&e.updateBatch)return e}getItem(e){let t;return this.storageType===o.localStorage?t=this.getItems().find((t=>this.matchesIdObj(t,e))):this.storageType===o.array?t=this.items.find((t=>this.matchesIdObj(t,e))):(this.itemsObj=this.itemsObj||{},t={...this.itemsObj}[this.getIdStr(e)]),{data:c(t),index:-1}}setItem(e,t,n=!1,i=!1){const s=c(e);if(this.storageType===o.localStorage){let e=this.getItems();i?e=e.filter((e=>!this.matchesIdObj(e,s))):void 0!==t&&e[t]?e[t]=n?{...s}:{...e[t],...s}:e.push(s),r&&window.localStorage.setItem(this.name,JSON.stringify(e))}else if(this.storageType===o.array)i?this.items=this.items.filter((e=>!this.matchesIdObj(e,s))):void 0===t||this.items[t]?void 0!==t&&(this.items[t]=n?{...s}:{...this.items[t],...s}):this.items.push(s);else if(this.itemsObj=this.itemsObj||{},i)delete this.itemsObj[this.getIdStr(s)];else{let e=this.itemsObj[this.getIdStr(s)]||{};this.itemsObj[this.getIdStr(s)]=n?{...s}:{...e,...s}}}}function l(e,t){const n=e?c(e):e,s=t?c(t):t;let r=Object.assign({},n);return(0,i.isObject)(n)&&(0,i.isObject)(s)&&Object.keys(s).forEach((e=>{(0,i.isObject)(s[e])?e in n?r[e]=l(n[e],s[e]):Object.assign(r,{[e]:s[e]}):Object.assign(r,{[e]:s[e]})})),r}function c(e){if(r&&"structuredClone"in window&&"function"==typeof window.structuredClone)return window.structuredClone(e);if(Array.isArray(e))return e.slice(0).map((e=>c(e)));if((0,i.isObject)(e)){let t={};return(0,i.getKeys)(e).map((n=>{t[n]=c(e[n])})),t}return e}t.SyncedTable=a,t.default=l,t.quickClone=c},274:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.prostgles=t.asName=t.debug=void 0;const i=n(792);Object.defineProperty(t,"asName",{enumerable:!0,get:function(){return i.asName}});const s="DEBUG_SYNCEDTABLE",r="undefined"!=typeof window;t.debug=function(...e){r&&window[s]&&window[s](...e)},t.prostgles=function(e,n){const{socket:s,onReady:a,onDisconnect:l,onReconnect:c,onSchemaChange:d=!0,onReload:u}=e;if((0,t.debug)("prostgles",{initOpts:e}),d){let e;"function"==typeof d&&(e=d),s.removeAllListeners(i.CHANNELS.SCHEMA_CHANGED),e&&s.on(i.CHANNELS.SCHEMA_CHANGED,e)}const h=i.CHANNELS._preffix;let p,m={},f={},g={},y={},b=!1;function O(e,n,i){return(0,t.debug)("_unsubscribe",{channelName:e,handler:i}),new Promise(((t,r)=>{m[e]?(m[e].handlers=m[e].handlers.filter((e=>e!==i)),m[e].handlers.length||(s.emit(n,{},((e,t)=>{e&&console.error(e)})),s.removeListener(e,m[e].onCall),delete m[e]),t(!0)):t(!0)}))}function S({tableName:e,command:t,param1:n,param2:i},r){return new Promise(((o,a)=>{s.emit(h,{tableName:e,command:t,param1:n,param2:i},((e,t)=>{if(e)console.error(e),a(e);else if(t){const{id_fields:e,synced_field:n,channelName:i}=t;s.emit(i,{onSyncRequest:r({})},(e=>{console.log(e)})),o({id_fields:e,synced_field:n,channelName:i})}}))}))}function _({tableName:e,command:t,param1:n,param2:i}){return new Promise(((r,o)=>{s.emit(h,{tableName:e,command:t,param1:n,param2:i},((e,t)=>{e?(console.error(e),o(e)):t&&r(t)}))}))}const v=new o((async function({tableName:e,command:n,param1:i,param2:r},o){const{onPullRequest:a,onSyncRequest:l,onUpdates:c}=o;function d(e){return Object.freeze({unsync:function(){!function(e,n){(0,t.debug)("_unsync",{channelName:e,triggers:n}),new Promise(((t,i)=>{g[e]&&(g[e].triggers=g[e].triggers.filter((e=>e.onPullRequest!==n.onPullRequest&&e.onSyncRequest!==n.onSyncRequest&&e.onUpdates!==n.onUpdates)),g[e].triggers.length||(s.emit(e+"unsync",{},((e,n)=>{e?i(e):t(n)})),s.removeListener(e,g[e].onCall),delete g[e]))}))}(e,o)},syncData:function(t,n,i){s.emit(e,{onSyncRequest:{...l({}),...{data:t}||{},...{deleted:n}||{}}},i?e=>{i(e)}:null)}})}const u=Object.keys(g).find((t=>{let s=g[t];return s&&s.tableName===e&&s.command===n&&JSON.stringify(s.param1||{})===JSON.stringify(i||{})&&JSON.stringify(s.param2||{})===JSON.stringify(r||{})}));if(u)return g[u].triggers.push(o),d(u);{const h=await S({tableName:e,command:n,param1:i,param2:r},l),{channelName:p,synced_field:m,id_fields:f}=h;function y(t,n){t&&g[p]&&g[p].triggers.map((({onUpdates:i,onSyncRequest:s,onPullRequest:r})=>{t.data?Promise.resolve(i(t)).then((()=>{n&&n({ok:!0})})).catch((t=>{n?n({err:t}):console.error(e+" onUpdates error",t)})):t.onSyncRequest?Promise.resolve(s(t.onSyncRequest)).then((e=>n({onSyncRequest:e}))).catch((t=>{n?n({err:t}):console.error(e+" onSyncRequest error",t)})):t.onPullRequest?Promise.resolve(r(t.onPullRequest)).then((e=>{n({data:e})})).catch((t=>{n?n({err:t}):console.error(e+" onPullRequest error",t)})):console.log("unexpected response")}))}return g[p]={tableName:e,command:n,param1:i,param2:r,triggers:[o],syncInfo:h,onCall:y},s.on(p,y),d(p)}}),(([{tableName:e}])=>e)),j=new o((async function(e,{tableName:t,command:n,param1:i,param2:r},o,a){function l(n,s){let r={unsubscribe:function(){return O(n,s,o)},filter:{...i}};return e[t].update&&(r={...r,update:function(n,s){return e[t].update(i,n,s)}}),e[t].delete&&(r={...r,delete:function(n){return e[t].delete(i,n)}}),Object.freeze(r)}const c=Object.entries(m).find((([e])=>{let s=m[e];return s&&s.tableName===t&&s.command===n&&JSON.stringify(s.param1||{})===JSON.stringify(i||{})&&JSON.stringify(s.param2||{})===JSON.stringify(r||{})}));if(c){const e=c[0];return c[1].handlers.push(o),c[1].errorHandlers.push(a),setTimeout((()=>{var t,n;o&&(null===(t=null==m?void 0:m[e])||void 0===t?void 0:t.lastData)&&o(null===(n=null==m?void 0:m[e])||void 0===n?void 0:n.lastData)}),10),l(e,c[1].unsubChannel)}const{channelName:d,channelNameReady:u,channelNameUnsubscribe:h}=await _({tableName:t,command:n,param1:i,param2:r}),p=function(e,t){const n=m[d];n?e.data?(n.lastData=e.data,n.handlers.forEach((t=>{t(e.data)}))):e.err?n.errorHandlers.forEach((t=>{t(e.err)})):console.error("INTERNAL ERROR: Unexpected data format from subscription: ",e):console.warn("Orphaned subscription: ",d)},f=a||function(e){console.error(`Uncaught error within running subscription \n ${d}`,e)};return s.on(d,p),m[d]={lastData:void 0,tableName:t,command:n,param1:i,param2:r,onCall:p,unsubChannel:h,handlers:[o],errorHandlers:[f],destroy:()=>{m[d]&&(Object.values(m[d]).map((e=>{e&&e.handlers&&e.handlers.map((e=>O(d,h,e)))})),delete m[d])}},s.emit(u,{now:Date.now()}),l(d,h)}),(([e,{tableName:t}])=>t));async function w(e,t,n,i){return j.run([e,t,n,i])}return new Promise(((e,o)=>{s.removeAllListeners(i.CHANNELS.CONNECTION),s.on(i.CHANNELS.CONNECTION,(e=>(o(e),"ok"))),l&&s.on("disconnect",l),s.on(i.CHANNELS.SCHEMA,(({schema:l,methods:d,tableSchema:O,auth:j,rawSQL:N,joinTables:T=[],err:x})=>{if((0,t.debug)("destroySyncs",{subscriptions:m,syncedTables:f}),Object.values(m).map((e=>e.destroy())),m={},g={},Object.values(f).map((e=>{e&&e.destroy&&e.destroy()})),f={},b&&c&&(c(s,x),x))return void console.error(x);if(x)throw o(x),x;b=!0;let E=JSON.parse(JSON.stringify(l)),C=JSON.parse(JSON.stringify(d)),P={},I={};if(j){if(j.pathGuard&&r){const e=e=>{var t,n;(null==e?void 0:e.shouldReload)&&(u?u():"undefined"!=typeof window&&(null===(n=null===(t=null===window||void 0===window?void 0:window.location)||void 0===t?void 0:t.reload)||void 0===n||n.call(t)))};s.emit(i.CHANNELS.AUTHGUARD,JSON.stringify(window.location),((t,n)=>{e(n)})),s.removeAllListeners(i.CHANNELS.AUTHGUARD),s.on(i.CHANNELS.AUTHGUARD,(t=>{e(t)}))}I={...j},[i.CHANNELS.LOGIN,i.CHANNELS.LOGOUT,i.CHANNELS.REGISTER].map((e=>{j[e]&&(I[e]=function(t){return new Promise(((n,i)=>{s.emit(h+e,t,((e,t)=>{e?i(e):n(t)}))}))})}))}C.map((e=>{const t="string"==typeof e,n=function(...e){return new Promise(((t,n)=>{s.emit(i.CHANNELS.METHOD,{method:r,params:e},((e,i)=>{e?n(e):t(i)}))}))},r=t?e:e.name;P[r]=t?n:{...e,run:n}})),P=Object.freeze(P),N&&(E.sql=function(e,t,n){return new Promise(((r,o)=>{s.emit(i.CHANNELS.SQL,{query:e,params:t,options:n},((e,t)=>{if(e)o(e);else if(n&&"noticeSubscription"===n.returnType&&t&&Object.keys(t).sort().join()===["socketChannel","socketUnsubChannel"].sort().join()&&!Object.values(t).find((e=>"string"!=typeof e))){const e=t,n=t=>(((e,t)=>{p=p||{config:t,listeners:[]},p.listeners.length||(s.removeAllListeners(t.socketChannel),s.on(t.socketChannel,(e=>{p&&p.listeners&&p.listeners.length?p.listeners.map((t=>{t(e)})):s.emit(t.socketUnsubChannel,{})}))),p.listeners.push(e)})(t,e),{...e,removeListener:()=>(e=>{p&&(p.listeners=p.listeners.filter((t=>t!==e)),!p.listeners.length&&p.config&&p.config.socketUnsubChannel&&s&&s.emit(p.config.socketUnsubChannel,{}))})(t)}),i={...e,addListener:n};r(i)}else if(n&&n.returnType&&"statement"===n.returnType||!t||Object.keys(t).sort().join()!==["socketChannel","socketUnsubChannel","notifChannel"].sort().join()||Object.values(t).find((e=>"string"!=typeof e)))r(t);else{const e=e=>(((e,t)=>{var n;y=y||{},y[t.notifChannel]?null===(n=y[t.notifChannel])||void 0===n||n.listeners.push(e):(y[t.notifChannel]={config:t,listeners:[e]},s.removeAllListeners(t.socketChannel),s.on(t.socketChannel,(e=>{var n,i;(null===(n=y[t.notifChannel])||void 0===n?void 0:n.listeners.length)?y[t.notifChannel].listeners.map((t=>{t(e)})):s.emit(null===(i=y[t.notifChannel])||void 0===i?void 0:i.config.socketUnsubChannel,{})})))})(e,t),{...t,removeListener:()=>((e,t)=>{const n=y[t.notifChannel];n&&(n.listeners=n.listeners.filter((t=>t!==e)),!n.listeners.length&&n.config&&n.config.socketUnsubChannel&&s&&(s.emit(n.config.socketUnsubChannel,{}),delete y[t.notifChannel]))})(e,t)}),n={...t,addListener:e};r(n)}}))}))});const k=e=>"[object Object]"===Object.prototype.toString.call(e),A=(e,t,n,i)=>{if(!k(e)||!k(t)||"function"!=typeof n||i&&"function"!=typeof i)throw"Expecting: ( basicFilter<object>, options<object>, onChange<function> , onError?<function>) but got something else"},D=["subscribe","subscribeOne"];(0,i.getKeys)(E).forEach((e=>{Object.keys(E[e]).sort(((e,t)=>D.includes(e)-D.includes(t))).forEach((t=>{if(["find","findOne"].includes(t)&&(E[e].getJoinedTables=function(){return(T||[]).filter((t=>Array.isArray(t)&&t.includes(e))).flat().filter((t=>t!==e))}),"sync"===t){if(E[e]._syncInfo={...E[e][t]},n){E[e].getSync=(t,i={})=>n.create({name:e,filter:t,db:E,...i});const t=async(t={},i={},s)=>{const r=`${e}.${JSON.stringify(t)}.${JSON.stringify(i)}`;return f[r]||(f[r]=await n.create({...i,name:e,filter:t,db:E,onError:s})),f[r]};E[e].sync=async(e,n={handlesOnData:!0,select:"*"},i,s)=>{A(e,n,i,s);const r=await t(e,n,s);return await r.sync(i,n.handlesOnData)},E[e].syncOne=async(e,n={handlesOnData:!0},i,s)=>{A(e,n,i,s);const r=await t(e,n,s);return await r.syncOne(e,i,n.handlesOnData)}}E[e]._sync=function(n,i,s){return async function(e,t){return v.run([e,t])}({tableName:e,command:t,param1:n,param2:i},s)}}else if(D.includes(t)){const n=function(n,i,s,r){return A(n,i,s,r),w(E,{tableName:e,command:t,param1:n,param2:i},s,r)};E[e][t]=n;const i="subscribeOne";E[e][t+"Hook"]=function(e,s,r){return{start:o=>n(e,s,t!==i?o:e=>{o(e[0])},r),args:[e,s,r]}},t!==i&&D.includes(i)||(E[e][i]=function(n,i,s,r){return A(n,i,s,r),w(E,{tableName:e,command:t,param1:n,param2:i},(e=>{s(e[0])}),r)})}else E[e][t]=function(n,i,r){return new Promise(((o,a)=>{s.emit(h,{tableName:e,command:t,param1:n,param2:i,param3:r},((e,t)=>{e?a(e):o(t)}))}))}}))})),m&&Object.keys(m).length&&Object.keys(m).map((async e=>{try{let t=m[e];await _(t),s.on(e,t.onCall)}catch(e){console.error("There was an issue reconnecting old subscriptions",e)}})),g&&Object.keys(g).length&&(0,i.getKeys)(g).filter((e=>{var t;return null===(t=g[e])||void 0===t?void 0:t.triggers.length})).map((async e=>{try{let t=g[e];await S(t,t.triggers[0].onSyncRequest),s.on(e,t.onCall)}catch(e){console.error("There was an issue reconnecting olf subscriptions",e)}})),T.flat().map((e=>{function t(t=!0,n,i,s){return{[t?"$leftJoin":"$innerJoin"]:e,filter:n,select:i,...s}}E.innerJoin=E.innerJoin||{},E.leftJoin=E.leftJoin||{},E.innerJoinOne=E.innerJoinOne||{},E.leftJoinOne=E.leftJoinOne||{},E.leftJoin[e]=(e,n,i={})=>t(!0,e,n,i),E.innerJoin[e]=(e,n,i={})=>t(!1,e,n,i),E.leftJoinOne[e]=(e,n,i={})=>t(!0,e,n,{...i,limit:1}),E.innerJoinOne[e]=(e,n,i={})=>t(!1,e,n,{...i,limit:1})})),(async()=>{try{await a(E,P,O,I,b)}catch(e){console.error("Prostgles: Error within onReady: \n",e),o(e)}e(E)})()}))}))};class o{constructor(e,t){this.queue=[],this.isRunning=!1,this.func=e,this.groupBy=t}async run(e){const t=new Promise(((t,n)=>{const i={arguments:e,onResult:t};this.queue.push(i)})),n=async()=>{if(this.isRunning)return;this.isRunning=!0;const e=async e=>{if(e){const t=await this.func(...e.arguments);e.onResult(t)}};if(this.groupBy){const t=[],n=[];this.queue.forEach((async(e,i)=>{const s=this.groupBy(e.arguments);t.includes(s)||(t.push(s),n.push({index:i,item:e}))})),n.slice(0).reverse().forEach((e=>{this.queue.splice(e.index,1)})),await Promise.all(n.map((t=>e(t.item))))}else{const t=this.queue.shift();await e(t)}this.isRunning=!1,this.queue.length&&n()};return n(),t}}},792:function(e){var t;this||window,t=()=>(()=>{"use strict";var e={31:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CONTENT_TYPE_TO_EXT=void 0,t.CONTENT_TYPE_TO_EXT={"text/html":["html","htm","shtml"],"text/css":["css"],"text/csv":["csv"],"text/tsv":["tsv"],"text/xml":["xml"],"text/mathml":["mml"],"text/plain":["txt"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/x-component":["htc"],"image/gif":["gif"],"image/jpeg":["jpeg","jpg"],"image/png":["png"],"image/tiff":["tif","tiff"],"image/vnd.wap.wbmp":["wbmp"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-ms-bmp":["bmp"],"image/svg+xml":["svg"],"image/webp":["webp"],"application/sql":["sql"],"application/x-javascript":["js"],"application/atom+xml":["atom"],"application/rss+xml":["rss"],"application/java-archive":["jar","war","ear"],"application/mac-binhex40":["hqx"],"application/msword":["doc","docx"],"application/pdf":["pdf"],"application/postscript":["ps","eps","ai"],"application/rtf":["rtf"],"application/vnd.ms-excel":["xls","xlsx"],"application/vnd.ms-powerpoint":["ppt","pptx"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/x-7z-compressed":["7z"],"application/x-cocoa":["cco"],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-makeself":["run"],"application/x-perl":["pl","pm"],"application/x-pilot":["prc","pdb"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-sea":["sea"],"application/x-shockwave-flash":["swf"],"application/x-stuffit":["sit"],"application/x-tcl":["tcl","tk"],"application/x-x509-ca-cert":["der","pem","crt"],"application/x-xpinstall":["xpi"],"application/xhtml+xml":["xhtml"],"application/zip":["zip"],"application/octet-stream":["bin","exe","dll","deb","dmg","eot","iso","img","msi","msp","msm"],"audio/midi":["mid","midi","kar"],"audio/mpeg":["mp3"],"audio/ogg":["ogg"],"audio/x-realaudio":["ra"],"video/3gpp":["3gpp","3gp"],"video/mpeg":["mpeg","mpg"],"video/quicktime":["mov"],"video/x-flv":["flv"],"video/x-mng":["mng"],"video/x-ms-asf":["asx","asf"],"video/x-ms-wmv":["wmv"],"video/x-msvideo":["avi"],"video/mp4":["m4v","mp4"],"video/webm":["webm"]}},444:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.COMPLEX_FILTER_KEY=t.EXISTS_KEYS=t.GeomFilter_Funcs=t.GeomFilterKeys=t.ArrayFilterOperands=t.TextFilter_FullTextSearchFilterKeys=t.TextFilterFTSKeys=t.TextFilterKeys=t.JsonbFilterKeys=t.JsonbOperands=t.CompareInFilterKeys=t.CompareFilterKeys=void 0;const i=n(128);t.CompareFilterKeys=["=","$eq","<>",">","<",">=","<=","$eq","$ne","$gt","$gte","$lte"],t.CompareInFilterKeys=["$in","$nin"],t.JsonbOperands={"@>":{Operator:"@>","Right Operand Type":"jsonb",Description:"Does the left JSON value contain the right JSON path/value entries at the top level?",Example:'\'{"a":1, "b":2}\'::jsonb @> \'{"b":2}\'::jsonb'},"<@":{Operator:"<@","Right Operand Type":"jsonb",Description:"Are the left JSON path/value entries contained at the top level within the right JSON value?",Example:'\'{"b":2}\'::jsonb <@ \'{"a":1, "b":2}\'::jsonb'},"?":{Operator:"?","Right Operand Type":"text",Description:"Does the string exist as a top-level key within the JSON value?",Example:"'{\"a\":1, \"b\":2}'::jsonb ? 'b'"},"?|":{Operator:"?|","Right Operand Type":"text[]",Description:"Do any of these array strings exist as top-level keys?",Example:"'{\"a\":1, \"b\":2, \"c\":3}'::jsonb ?| array['b', 'c']"},"?&":{Operator:"?&","Right Operand Type":"text[]",Description:"Do all of these array strings exist as top-level keys?",Example:"'[\"a\", \"b\"]'::jsonb ?& array['a', 'b']"},"||":{Operator:"||","Right Operand Type":"jsonb",Description:"Concatenate two jsonb values into a new jsonb value",Example:'\'["a", "b"]\'::jsonb || \'["c", "d"]\'::jsonb'},"-":{Operator:"-","Right Operand Type":"integer",Description:"Delete the array element with specified index (Negative integers count from the end). Throws an error if top level container is not an array.",Example:'\'["a", "b"]\'::jsonb - 1'},"#-":{Operator:"#-","Right Operand Type":"text[]",Description:"Delete the field or element with specified path (for JSON arrays, negative integers count from the end)",Example:"'[\"a\", {\"b\":1}]'::jsonb #- '{1,b}'"},"@?":{Operator:"@?","Right Operand Type":"jsonpath",Description:"Does JSON path return any item for the specified JSON value?",Example:"'{\"a\":[1,2,3,4,5]}'::jsonb @? '$.a[*] ? (@ > 2)'"},"@@":{Operator:"@@","Right Operand Type":"jsonpath",Description:"Returns the result of JSON path predicate check for the specified JSON value. Only the first item of the result is taken into account. If the result is not Boolean, then null is returned.",Example:"'{\"a\":[1,2,3,4,5]}'::jsonb @@ '$.a[*] > 2'"}},t.JsonbFilterKeys=(0,i.getKeys)(t.JsonbOperands),t.TextFilterKeys=["$ilike","$like","$nilike","$nlike"],t.TextFilterFTSKeys=["@@","@>","<@","$contains","$containedBy"],t.TextFilter_FullTextSearchFilterKeys=["to_tsquery","plainto_tsquery","phraseto_tsquery","websearch_to_tsquery"],t.ArrayFilterOperands=["@>","<@","=","$eq","$contains","$containedBy","&&","$overlaps"],t.GeomFilterKeys=["~","~=","@","|&>","|>>",">>","=","<<|","<<","&>","&<|","&<","&&&","&&"],t.GeomFilter_Funcs=["ST_MakeEnvelope","st_makeenvelope","ST_MakePolygon","st_makepolygon"],t.EXISTS_KEYS=["$exists","$notExists","$existsJoined","$notExistsJoined"],t.COMPLEX_FILTER_KEY="$filter"},590:function(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var s=Object.getOwnPropertyDescriptor(t,n);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,s)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),s=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.CONTENT_TYPE_TO_EXT=t.getKeys=t.isObject=t.isDefined=t.get=t.WAL=t.unpatchText=t.stableStringify=t.isEmpty=t.getTextPatch=t.omitKeys=t.pickKeys=t.asName=t.RULE_METHODS=t.CHANNELS=t.JOIN_PARAMS=t.JOIN_KEYS=t.TS_PG_Types=t._PG_geometric=t._PG_postgis=t._PG_interval=t._PG_date=t._PG_bool=t._PG_json=t._PG_numbers=t._PG_strings=void 0,t._PG_strings=["bpchar","char","varchar","text","citext","uuid","bytea","time","timetz","interval","name","cidr","inet","macaddr","macaddr8","int4range","int8range","numrange","tsvector"],t._PG_numbers=["int2","int4","int8","float4","float8","numeric","money","oid"],t._PG_json=["json","jsonb"],t._PG_bool=["bool"],t._PG_date=["date","timestamp","timestamptz"],t._PG_interval=["interval"],t._PG_postgis=["geometry","geography"],t._PG_geometric=["point","line","lseg","box","path","polygon","circle"];const r={string:[...t._PG_strings,...t._PG_date,...t._PG_geometric,...t._PG_postgis,"lseg"],number:t._PG_numbers,boolean:t._PG_bool,any:[...t._PG_json,...t._PG_interval]};t.TS_PG_Types={...r,"number[]":r.number.map((e=>`_${e}`)),"boolean[]":r.boolean.map((e=>`_${e}`)),"string[]":r.string.map((e=>`_${e}`)),"any[]":r.any.map((e=>`_${e}`))},t.JOIN_KEYS=["$innerJoin","$leftJoin"],t.JOIN_PARAMS=["select","filter","$path","$condition","offset","limit","orderBy"];const o="_psqlWS_.";t.CHANNELS={SCHEMA_CHANGED:o+"schema-changed",SCHEMA:o+"schema",DEFAULT:o,SQL:"_psqlWS_.sql",METHOD:"_psqlWS_.method",NOTICE_EV:"_psqlWS_.notice",LISTEN_EV:"_psqlWS_.listen",REGISTER:"_psqlWS_.register",LOGIN:"_psqlWS_.login",LOGOUT:"_psqlWS_.logout",AUTHGUARD:"_psqlWS_.authguard",CONNECTION:"_psqlWS_.connection",_preffix:o},t.RULE_METHODS={getColumns:["getColumns"],getInfo:["getInfo"],insert:["insert","upsert"],update:["update","upsert","updateBatch"],select:["findOne","find","count","size"],delete:["delete","remove"],sync:["sync","unsync"],subscribe:["unsubscribe","subscribe","subscribeOne"]};var a=n(128);Object.defineProperty(t,"asName",{enumerable:!0,get:function(){return a.asName}}),Object.defineProperty(t,"pickKeys",{enumerable:!0,get:function(){return a.pickKeys}}),Object.defineProperty(t,"omitKeys",{enumerable:!0,get:function(){return a.omitKeys}}),Object.defineProperty(t,"getTextPatch",{enumerable:!0,get:function(){return a.getTextPatch}}),Object.defineProperty(t,"isEmpty",{enumerable:!0,get:function(){return a.isEmpty}}),Object.defineProperty(t,"stableStringify",{enumerable:!0,get:function(){return a.stableStringify}}),Object.defineProperty(t,"unpatchText",{enumerable:!0,get:function(){return a.unpatchText}}),Object.defineProperty(t,"WAL",{enumerable:!0,get:function(){return a.WAL}}),Object.defineProperty(t,"get",{enumerable:!0,get:function(){return a.get}}),Object.defineProperty(t,"isDefined",{enumerable:!0,get:function(){return a.isDefined}}),Object.defineProperty(t,"isObject",{enumerable:!0,get:function(){return a.isObject}}),Object.defineProperty(t,"getKeys",{enumerable:!0,get:function(){return a.getKeys}}),s(n(444),t);var l=n(31);Object.defineProperty(t,"CONTENT_TYPE_TO_EXT",{enumerable:!0,get:function(){return l.CONTENT_TYPE_TO_EXT}}),s(n(929),t)},929:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getJSONBSchemaAsJSONSchema=t.DATA_TYPES=t.PrimitiveArrayTypes=t.PrimitiveTypes=void 0;const i=n(128);t.PrimitiveTypes=["boolean","number","integer","string","Date","time","timestamp","any"],t.PrimitiveArrayTypes=t.PrimitiveTypes.map((e=>`${e}[]`)),t.DATA_TYPES=[...t.PrimitiveTypes,...t.PrimitiveArrayTypes];const s=(e,t)=>{const{type:n,arrayOf:r,arrayOfType:o,description:a,nullable:l,oneOf:c,oneOfType:d,title:u,record:h,...p}="string"==typeof e?{type:e}:e;let m={};const f={...(p.enum||p.allowedValues?.length)&&{enum:p.allowedValues?.slice(0)??p.enum.slice(0)},...!!a&&{description:a},...!!u&&{title:u}};if(p.enum?.length&&(f.type=typeof p.enum[0]),"string"==typeof n||r||o){if(n&&"string"!=typeof n)throw"Not expected";m=r||o||n?.endsWith("[]")?{type:"array",items:r||o?s(r||{type:o}):n?.startsWith("any")?{type:void 0}:{type:n?.slice(0,-2),...p.allowedValues&&{enum:p.allowedValues.slice(0)}}}:{type:n}}else(0,i.isObject)(n)?m={type:"object",required:(0,i.getKeys)(n).filter((e=>{const t=n[e];return"string"==typeof t||!t.optional})),properties:(0,i.getKeys)(n).reduce(((e,t)=>({...e,[t]:s(n[t])})),{})}:c||d?m={oneOf:(c||d.map((e=>({type:e})))).map((e=>s(e)))}:h&&(m={type:"object",...h.values&&!h.keysEnum&&{additionalProperties:s(h.values)},...h.keysEnum&&{properties:h.keysEnum.reduce(((e,t)=>({...e,[t]:h.values?s(h.values):{type:{}}})),{})}});if(l){const e={type:"null"};m.oneOf?m.oneOf.push(e):m.enum&&!m.enum.includes(null)?m.enum.push(null):m={oneOf:[m,e]}}return{...t?{$id:t?.id,$schema:"https://json-schema.org/draft/2020-12/schema"}:void 0,...f,...m}};t.getJSONBSchemaAsJSONSchema=function(e,t,n){return s(n,{id:`${e}.${t}`})}},899:(e,t)=>{function n(e,t){var n=e[0],i=e[1],l=e[2],c=e[3];n=s(n,i,l,c,t[0],7,-680876936),c=s(c,n,i,l,t[1],12,-389564586),l=s(l,c,n,i,t[2],17,606105819),i=s(i,l,c,n,t[3],22,-1044525330),n=s(n,i,l,c,t[4],7,-176418897),c=s(c,n,i,l,t[5],12,1200080426),l=s(l,c,n,i,t[6],17,-1473231341),i=s(i,l,c,n,t[7],22,-45705983),n=s(n,i,l,c,t[8],7,1770035416),c=s(c,n,i,l,t[9],12,-1958414417),l=s(l,c,n,i,t[10],17,-42063),i=s(i,l,c,n,t[11],22,-1990404162),n=s(n,i,l,c,t[12],7,1804603682),c=s(c,n,i,l,t[13],12,-40341101),l=s(l,c,n,i,t[14],17,-1502002290),n=r(n,i=s(i,l,c,n,t[15],22,1236535329),l,c,t[1],5,-165796510),c=r(c,n,i,l,t[6],9,-1069501632),l=r(l,c,n,i,t[11],14,643717713),i=r(i,l,c,n,t[0],20,-373897302),n=r(n,i,l,c,t[5],5,-701558691),c=r(c,n,i,l,t[10],9,38016083),l=r(l,c,n,i,t[15],14,-660478335),i=r(i,l,c,n,t[4],20,-405537848),n=r(n,i,l,c,t[9],5,568446438),c=r(c,n,i,l,t[14],9,-1019803690),l=r(l,c,n,i,t[3],14,-187363961),i=r(i,l,c,n,t[8],20,1163531501),n=r(n,i,l,c,t[13],5,-1444681467),c=r(c,n,i,l,t[2],9,-51403784),l=r(l,c,n,i,t[7],14,1735328473),n=o(n,i=r(i,l,c,n,t[12],20,-1926607734),l,c,t[5],4,-378558),c=o(c,n,i,l,t[8],11,-2022574463),l=o(l,c,n,i,t[11],16,1839030562),i=o(i,l,c,n,t[14],23,-35309556),n=o(n,i,l,c,t[1],4,-1530992060),c=o(c,n,i,l,t[4],11,1272893353),l=o(l,c,n,i,t[7],16,-155497632),i=o(i,l,c,n,t[10],23,-1094730640),n=o(n,i,l,c,t[13],4,681279174),c=o(c,n,i,l,t[0],11,-358537222),l=o(l,c,n,i,t[3],16,-722521979),i=o(i,l,c,n,t[6],23,76029189),n=o(n,i,l,c,t[9],4,-640364487),c=o(c,n,i,l,t[12],11,-421815835),l=o(l,c,n,i,t[15],16,530742520),n=a(n,i=o(i,l,c,n,t[2],23,-995338651),l,c,t[0],6,-198630844),c=a(c,n,i,l,t[7],10,1126891415),l=a(l,c,n,i,t[14],15,-1416354905),i=a(i,l,c,n,t[5],21,-57434055),n=a(n,i,l,c,t[12],6,1700485571),c=a(c,n,i,l,t[3],10,-1894986606),l=a(l,c,n,i,t[10],15,-1051523),i=a(i,l,c,n,t[1],21,-2054922799),n=a(n,i,l,c,t[8],6,1873313359),c=a(c,n,i,l,t[15],10,-30611744),l=a(l,c,n,i,t[6],15,-1560198380),i=a(i,l,c,n,t[13],21,1309151649),n=a(n,i,l,c,t[4],6,-145523070),c=a(c,n,i,l,t[11],10,-1120210379),l=a(l,c,n,i,t[2],15,718787259),i=a(i,l,c,n,t[9],21,-343485551),e[0]=h(n,e[0]),e[1]=h(i,e[1]),e[2]=h(l,e[2]),e[3]=h(c,e[3])}function i(e,t,n,i,s,r){return t=h(h(t,e),h(i,r)),h(t<<s|t>>>32-s,n)}function s(e,t,n,s,r,o,a){return i(t&n|~t&s,e,t,r,o,a)}function r(e,t,n,s,r,o,a){return i(t&s|n&~s,e,t,r,o,a)}function o(e,t,n,s,r,o,a){return i(t^n^s,e,t,r,o,a)}function a(e,t,n,s,r,o,a){return i(n^(t|~s),e,t,r,o,a)}function l(e){var t,n=[];for(t=0;t<64;t+=4)n[t>>2]=e.charCodeAt(t)+(e.charCodeAt(t+1)<<8)+(e.charCodeAt(t+2)<<16)+(e.charCodeAt(t+3)<<24);return n}Object.defineProperty(t,"__esModule",{value:!0}),t.md5=t.md5cycle=void 0,t.md5cycle=n;var c="0123456789abcdef".split("");function d(e){for(var t="",n=0;n<4;n++)t+=c[e>>8*n+4&15]+c[e>>8*n&15];return t}function u(e){return function(e){for(var t=0;t<e.length;t++)e[t]=d(e[t]);return e.join("")}(function(e){var t,i=e.length,s=[1732584193,-271733879,-1732584194,271733878];for(t=64;t<=e.length;t+=64)n(s,l(e.substring(t-64,t)));e=e.substring(t-64);var r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;t<e.length;t++)r[t>>2]|=e.charCodeAt(t)<<(t%4<<3);if(r[t>>2]|=128<<(t%4<<3),t>55)for(n(s,r),t=0;t<16;t++)r[t]=0;return r[14]=8*i,n(s,r),s}(e))}function h(e,t){return e+t&4294967295}t.md5=u,u("hello")},128:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getKeys=t.isDefined=t.isObject=t.get=t.isEmpty=t.WAL=t.unpatchText=t.getTextPatch=t.stableStringify=t.find=t.filter=t.omitKeys=t.pickKeys=t.asName=void 0;const i=n(899);function s(e,t=[],n=!1){let i=t;if(!i.length)return{};if(e&&i.length){let t={};return i.forEach((i=>{n&&void 0===e[i]||(t[i]=e[i])})),t}return e}function r(e,t){return e.filter((e=>Object.entries(t).every((([t,n])=>e[t]===n))))}function o(e){for(var t in e)return!1;return!0}function a(e){return Object.keys(e)}t.asName=function(e){if(null==e||!e.toString||!e.toString())throw"Expecting a non empty string";return`"${e.toString().replace(/"/g,'""')}"`},t.pickKeys=s,t.omitKeys=function(e,t){return s(e,a(e).filter((e=>!t.includes(e))))},t.filter=r,t.find=function(e,t){return r(e,t)[0]},t.stableStringify=function(e,t){t||(t={}),"function"==typeof t&&(t={cmp:t});var n,i="boolean"==typeof t.cycles&&t.cycles,s=t.cmp&&(n=t.cmp,function(e){return function(t,i){var s={key:t,value:e[t]},r={key:i,value:e[i]};return n(s,r)}}),r=[];return function e(t){if(t&&t.toJSON&&"function"==typeof t.toJSON&&(t=t.toJSON()),void 0!==t){if("number"==typeof t)return isFinite(t)?""+t:"null";if("object"!=typeof t)return JSON.stringify(t);var n,o;if(Array.isArray(t)){for(o="[",n=0;n<t.length;n++)n&&(o+=","),o+=e(t[n])||"null";return o+"]"}if(null===t)return"null";if(-1!==r.indexOf(t)){if(i)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var a=r.push(t)-1,l=Object.keys(t).sort(s&&s(t));for(o="",n=0;n<l.length;n++){var c=l[n],d=e(t[c]);d&&(o&&(o+=","),o+=JSON.stringify(c)+":"+d)}return r.splice(a,1),"{"+o+"}"}}(e)},t.getTextPatch=function(e,t){if(!(e&&t&&e.trim().length&&t.trim().length))return t;if(e===t)return{from:0,to:0,text:"",md5:(0,i.md5)(t)};function n(n=1){let i=n<1?-1:0,s=!1;for(;!s&&Math.abs(i)<=t.length;){const r=n<1?[i]:[0,i];e.slice(...r)!==t.slice(...r)?s=!0:i+=1*Math.sign(n)}return i}let s=n()-1,r=e.length+n(-1)+1,o=t.length+n(-1)+1;return{from:s,to:r,text:t.slice(s,o),md5:(0,i.md5)(t)}},t.unpatchText=function(e,t){if(!t||"string"==typeof t)return t;const{from:n,to:s,text:r,md5:o}=t;if(null===r||null===e)return r;let a=e.slice(0,n)+r+e.slice(s);if(o&&(0,i.md5)(a)!==o)throw"Patch text error: Could not match md5 hash: (original/result) \n"+e+"\n"+a;return a},t.WAL=class{constructor(e){if(this.changed={},this.sending={},this.sentHistory={},this.callbacks=[],this.sort=(e,t)=>{const{orderBy:n}=this.options;return n&&e&&t&&n.map((n=>{if(!(n.fieldName in e)||!(n.fieldName in t))throw"Replication error: \n some orderBy fields missing from data";let i=n.asc?e[n.fieldName]:t[n.fieldName],s=n.asc?t[n.fieldName]:e[n.fieldName],r=+i-+s,o=i<s?-1:i==s?0:1;return"number"===n.tsDataType&&Number.isFinite(r)?r:o})).find((e=>e))||0},this.isInHistory=e=>{if(!e)throw"Provide item";const t=e[this.options.synced_field];if(!Number.isFinite(+t))throw"Provided item Synced field value is missing/invalid ";const n=this.sentHistory[this.getIdStr(e)],i=n?.[this.options.synced_field];if(n){if(!Number.isFinite(+i))throw"Provided historic item Synced field value is missing/invalid";if(+i==+t)return!0}return!1},this.addData=e=>{o(this.changed)&&this.options.onSendStart&&this.options.onSendStart(),e.map((e=>{var t;const{initial:n,current:i,delta:s}={...e};if(!i)throw"Expecting { current: object, initial?: object }";const r=this.getIdStr(i);this.changed??(this.changed={}),(t=this.changed)[r]??(t[r]={initial:n,current:i,delta:s}),this.changed[r].current={...this.changed[r].current,...i},this.changed[r].delta={...this.changed[r].delta,...s}})),this.sendItems()},this.isOnSending=!1,this.isSendingTimeout=void 0,this.willDeleteHistory=void 0,this.sendItems=async()=>{const{DEBUG_MODE:e,onSend:t,onSendEnd:n,batch_size:i,throttle:s,historyAgeSeconds:r=2}=this.options;if(this.isSendingTimeout||this.sending&&!o(this.sending))return;if(!this.changed||o(this.changed))return;let a,l=[],c=[],d={};Object.keys(this.changed).sort(((e,t)=>this.sort(this.changed[e].current,this.changed[t].current))).slice(0,i).map((e=>{let t={...this.changed[e]};this.sending[e]={...t},c.push({...t}),d[e]={...t.current},delete this.changed[e]})),l=c.map((e=>{let t={};return Object.keys(e.current).map((n=>{const i=e.initial?.[n],s=e.current[n];var r,o;![this.options.synced_field,...this.options.id_fields].includes(n)&&((r=i)===(o=s)||(["number","string","boolean"].includes(typeof r)?r===o:JSON.stringify(r)===JSON.stringify(o)))||(t[n]=s)})),t})),e&&console.log(this.options.id," SENDING lr->",l[l.length-1]),this.isSendingTimeout||(this.isSendingTimeout=setTimeout((()=>{this.isSendingTimeout=void 0,o(this.changed)||this.sendItems()}),s)),this.isOnSending=!0;try{await t(l,c),r&&(this.sentHistory={...this.sentHistory,...d},this.willDeleteHistory||(this.willDeleteHistory=setTimeout((()=>{this.willDeleteHistory=void 0,this.sentHistory={}}),1e3*r)))}catch(e){a=e,console.error("WAL onSend failed:",e,l,c)}if(this.isOnSending=!1,this.callbacks.length){const e=Object.keys(this.sending);this.callbacks.forEach(((t,n)=>{t.idStrs=t.idStrs.filter((t=>e.includes(t))),t.idStrs.length||t.cb(a)})),this.callbacks=this.callbacks.filter((e=>e.idStrs.length))}this.sending={},e&&console.log(this.options.id," SENT lr->",l[l.length-1]),o(this.changed)?n&&n(l,c,a):this.sendItems()},this.options={...e},!this.options.orderBy){const{synced_field:t,id_fields:n}=e;this.options.orderBy=[t,...n.sort()].map((e=>({fieldName:e,tsDataType:e===t?"number":"string",asc:!0})))}}isSending(){const e=this.isOnSending||!(o(this.sending)&&o(this.changed));return this.options.DEBUG_MODE&&console.log(this.options.id," CHECKING isSending ->",e),e}getIdStr(e){return this.options.id_fields.sort().map((t=>`${e[t]||""}`)).join(".")}getIdObj(e){let t={};return this.options.id_fields.sort().map((n=>{t[n]=e[n]})),t}getDeltaObj(e){let t={};return Object.keys(e).map((n=>{this.options.id_fields.includes(n)||(t[n]=e[n])})),t}},t.isEmpty=o,t.get=function(e,t){let n=t,i=e;return e?("string"==typeof n&&(n=n.split(".")),n.reduce(((e,t)=>e&&e[t]?e[t]:void 0),i)):e},t.isObject=function(e){return Boolean(e&&"object"==typeof e&&!Array.isArray(e))},t.isDefined=function(e){return null!=e},t.getKeys=a}},t={};return function n(i){var s=t[i];if(void 0!==s)return s.exports;var r=t[i]={exports:{}};return e[i].call(r.exports,r,r.exports,n),r.exports}(590)})(),e.exports=t()}},t={};function n(i){var s=t[i];if(void 0!==s)return s.exports;var r=t[i]={exports:{}};return e[i].call(r.exports,r,r.exports,n),r.exports}var i={};return(()=>{"use strict";var e=i;Object.defineProperty(e,"__esModule",{value:!0}),e.prostgles=void 0;const t=n(274),s=n(133);e.prostgles=function(e){return(0,t.prostgles)(e,s.SyncedTable)}})(),i})()));
1
+ !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var i in n)("object"==typeof exports?exports:e)[i]=n[i]}}(this||window,(()=>(()=>{var e={133:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.quickClone=t.SyncedTable=t.debug=void 0;const i=n(792),s="DEBUG_SYNCEDTABLE",r="undefined"!=typeof window;t.debug=function(...e){r&&window[s]&&window[s](...e)};const o={array:"array",localStorage:"localStorage",object:"object"};class a{set multiSubscriptions(e){(0,t.debug)(e,this._multiSubscriptions),this._multiSubscriptions=e.slice(0)}get multiSubscriptions(){return this._multiSubscriptions}set singleSubscriptions(e){(0,t.debug)(e,this._singleSubscriptions),this._singleSubscriptions=e.slice(0)}get singleSubscriptions(){return this._singleSubscriptions}constructor({name:e,filter:n,onChange:s,onReady:a,db:u,skipFirstTrigger:d=!1,select:h="*",storageType:p="object",patchText:m=!1,patchJSON:f=!1,onError:g}){if(this.throttle=100,this.batch_size=50,this.skipFirstTrigger=!1,this.columns=[],this._multiSubscriptions=[],this._singleSubscriptions=[],this.items=[],this.itemsObj={},this.isSynced=!1,this.updatePatches=async e=>{var t,n;let s=e.map((e=>e.current)),r=[],o=[];if(this.columns&&this.columns.length&&(null===(t=this.tableHandler)||void 0===t?void 0:t.updateBatch)&&(this.patchText||this.patchJSON)){const t=this.columns.filter((e=>"text"===e.data_type));if(this.patchText&&t.length){s=[];const n=[this.synced_field,...this.id_fields];await Promise.all(e.slice(0).map((async(e,a)=>{const{current:l,initial:c}={...e};let u;c&&(t.map((e=>{!n.includes(e.name)&&e.name in l&&(null!=u||(u={...l}),u[e.name]=(0,i.getTextPatch)(c[e.name],l[e.name]))})),u&&this.wal&&(o.push(u),r.push([this.wal.getIdObj(u),this.wal.getDeltaObj(u)]))),u||s.push(l)})))}}if(r.length)try{await(null===(n=this.tableHandler)||void 0===n?void 0:n.updateBatch(r))}catch(e){console.log("failed to patch update",e),s=s.concat(o)}return s.filter((e=>e))},this._notifySubscribers=(e=[])=>{if(!this.isSynced)return;let t=[],n=[],i=[];if(e.map((({idObj:e,newItem:s,delta:r})=>{this.singleSubscriptions.filter((t=>this.matchesIdObj(t.idObj,e))).map((async e=>{try{await e.notify(s,r)}catch(e){console.error("SyncedTable failed to notify: ",e)}})),this.matchesFilter(s)&&(t.push(s),n.push(r),i.push(e))})),this.onChange||this.multiSubscriptions.length){let e=[],i=[];if(this.getItems().map((s=>{e.push({...s});const r=t.findIndex((e=>this.matchesIdObj(s,e)));i.push(n[r])})),this.onChange)try{this.onChange(e,i)}catch(e){console.error("SyncedTable failed to notify onChange: ",e)}this.multiSubscriptions.map((async t=>{try{await t.notify(e,i)}catch(e){console.error("SyncedTable failed to notify: ",e)}}))}},this.unsubscribe=e=>(this.singleSubscriptions=this.singleSubscriptions.filter((t=>t._onChange!==e)),this.multiSubscriptions=this.multiSubscriptions.filter((t=>t._onChange!==e)),(0,t.debug)("unsubscribe",this),"ok"),this.unsync=()=>{this.dbSync&&this.dbSync.unsync&&this.dbSync.unsync()},this.destroy=()=>{this.unsync(),this.multiSubscriptions=[],this.singleSubscriptions=[],this.itemsObj={},this.items=[],this.onChange=void 0},this.delete=async(e,t=!1)=>{var n;const i=this.getIdObj(e);return this.setItem(i,void 0,!0,!0),!t&&(null===(n=this.tableHandler)||void 0===n?void 0:n.delete)&&await this.tableHandler.delete(i),this._notifySubscribers(),!0},this.checkItemCols=e=>{if(this.columns&&this.columns.length){const t=Object.keys({...e}).filter((e=>!this.columns.find((t=>t.name===e))));if(t.length)throw"Unexpected columns in sync item update: "+t.join(", ")}},this.upsert=async(e,t=!1)=>{var n,s;if(!(e&&e.length||t))throw"No data provided for upsert";let r,o=[],a=[];await Promise.all(e.map((async(e,n)=>{var s;let c={...e.idObj},u={...e.delta};Object.keys(u).map((e=>{void 0===u[e]&&(u[e]=null)})),t||this.checkItemCols({...e.delta,...e.idObj});let d=this.getItem(c),h=d.index,p=d.data;!t&&!(0,i.isEmpty)(u)||(0,i.isEmpty)(p)||(u=this.getDelta(p||{},u)),t||(u[this.synced_field]=Date.now());let m={...p,...u,...c};p&&!t&&(null===(s=e.opts)||void 0===s?void 0:s.deepMerge)&&(m=l({...p,...c},{...u})),r=p?p[this.synced_field]<m[this.synced_field]?"updated":"unchanged":"inserted",this.setItem(m,h);let f={idObj:c,delta:u,oldItem:p,newItem:m,status:r,from_server:t};return t||a.push({initial:p,current:{...m}}),f.delta&&!(0,i.isEmpty)(f.delta)&&o.push(f),!0}))).catch((e=>{console.error("SyncedTable failed upsert: ",e)})),null===(n=this.notifyWal)||void 0===n||n.addData(o.map((e=>({initial:e.oldItem,current:e.newItem})))),!t&&a.length&&(null===(s=this.wal)||void 0===s||s.addData(a))},this.setItems=e=>{const t=c(e);if(this.storageType===o.localStorage){if(!r)throw"Cannot access window object. Choose another storage method (array OR object)";window.localStorage.setItem(this.name,JSON.stringify(t))}else this.storageType===o.array?this.items=t:this.itemsObj=t.reduce(((e,t)=>({...e,[this.getIdStr(t)]:{...t}})),{})},this.getItems=()=>{let e=[];if(this.storageType===o.localStorage){if(!r)throw"Cannot access window object. Choose another storage method (array OR object)";let t=window.localStorage.getItem(this.name);if(t)try{e=JSON.parse(t)}catch(e){console.error(e)}}else e=this.storageType===o.array?this.items.map((e=>({...e}))):Object.values({...this.itemsObj});if(!this.id_fields||!this.synced_field)throw"id_fields AND/OR synced_field missing";{const t=[this.synced_field,...this.id_fields.sort()];e=e.filter((e=>!this.filter||!(0,i.getKeys)(this.filter).find((t=>e[t]!==this.filter[t])))).sort(((e,n)=>t.map((t=>e[t]<n[t]?-1:e[t]>n[t]?1:0)).find((e=>e))))}return c(e)},this.getBatch=({from_synced:e,to_synced:t,offset:n,limit:i}={offset:0,limit:void 0})=>{let s=this.getItems().map((e=>({...e}))).filter((n=>(!Number.isFinite(e)||+n[this.synced_field]>=+e)&&(!Number.isFinite(t)||+n[this.synced_field]<=+t)));return(n||i)&&(s=s.splice(null!=n?n:0,i||s.length)),s},this.name=e,this.filter=n,this.select=h,this.onChange=s,!o[p])throw"Invalid storage type. Expecting one of: "+Object.keys(o).join(", ");if(r||p!==o.localStorage||(console.warn("Could not set storageType to localStorage: window object missing\nStorage changed to object"),p="object"),this.storageType=p,this.patchText=m,this.patchJSON=f,!u)throw"db missing";this.db=u;const{id_fields:y,synced_field:b,throttle:O=100,batch_size:S=50}=u[this.name]._syncInfo;if(!y||!b)throw"id_fields/synced_field missing";this.id_fields=y,this.synced_field=b,this.batch_size=S,this.throttle=O,this.skipFirstTrigger=d,this.multiSubscriptions=[],this.singleSubscriptions=[],this.onError=g||function(e){console.error("Sync internal error: ",e)};const _={id_fields:y,synced_field:b,throttle:O};u[this.name]._sync(n,{select:h},{onSyncRequest:e=>{let t={c_lr:void 0,c_fr:void 0,c_count:0},n=this.getBatch(e);return n.length&&(t={c_fr:this.getRowSyncObj(n[0]),c_lr:this.getRowSyncObj(n[n.length-1]),c_count:n.length}),t},onPullRequest:async e=>this.getBatch(e),onUpdates:async e=>{var t;if("err"in e&&e.err)null===(t=this.onError)||void 0===t||t.call(this,e.err);else if("isSynced"in e&&e.isSynced&&!this.isSynced){this.isSynced=e.isSynced;let t=this.getItems().map((e=>({...e})));this.setItems([]);const n=t.map((e=>({idObj:this.getIdObj(e),delta:{...e}})));await this.upsert(n,!0)}else if("data"in e){let t=e.data.map((e=>({idObj:this.getIdObj(e),delta:e})));await this.upsert(t,!0)}else console.error("Unexpected onUpdates");return!0}}).then((e=>{function t(){return"Data may be lost. Are you sure?"}this.dbSync=e,this.wal=new i.WAL({..._,batch_size:S,onSendStart:()=>{r&&(window.onbeforeunload=t)},onSend:async(e,t)=>(await this.updatePatches(t)).length?this.dbSync.syncData(e):[],onSendEnd:()=>{r&&(window.onbeforeunload=null)}}),this.notifyWal=new i.WAL({..._,batch_size:1/0,throttle:5,onSend:async(e,t)=>{this._notifySubscribers(t.map((e=>{var t;return{delta:this.getDelta(null!==(t=e.initial)&&void 0!==t?t:{},e.current),idObj:this.getIdObj(e.current),newItem:e.current}})))}}),a()})),u[this.name].getColumns&&u[this.name].getColumns().then((e=>{this.columns=e})),this.onChange&&!this.skipFirstTrigger&&setTimeout(this.onChange,0),(0,t.debug)(this)}static create(e){return new Promise(((t,n)=>{try{const n=new a({...e,onReady:()=>{setTimeout((()=>{t(n)}),0)}})}catch(e){n(e)}}))}sync(e,t=!0){const n={$unsync:()=>this.unsubscribe(e),getItems:()=>this.getItems(),$upsert:e=>{if(e){const t=e=>({idObj:this.getIdObj(e),delta:e});Array.isArray(e)?this.upsert(e.map((e=>t(e)))):this.upsert([t(e)])}}},i={_onChange:e,handlesOnData:t,handles:n,notify:(n,i)=>{let s=[...n],r=[...i];return t&&(s=s.map(((n,i)=>{const s=(n,i)=>({...n,...this.makeSingleSyncHandles(i,e),$get:()=>s(this.getItem(i).data,i),$find:e=>s(this.getItem(e).data,e),$update:(e,t)=>this.upsert([{idObj:i,delta:e,opts:t}]).then((e=>!0)),$delete:async()=>this.delete(i),$cloneMultiSync:e=>this.sync(e,t)}),r=this.getIdObj(n);return s(n,r)}))),e(s,r)}};return this.multiSubscriptions.push(i),this.skipFirstTrigger||setTimeout((()=>{let e=this.getItems();i.notify(e,e)}),0),Object.freeze({...n})}makeSingleSyncHandles(e,n){if(!e||!n)throw"syncOne(idObj, onChange) -> MISSING idObj or onChange";const i={$get:()=>this.getItem(e).data,$find:e=>this.getItem(e).data,$unsync:()=>this.unsubscribe(n),$delete:()=>this.delete(e),$update:(n,i)=>{this.singleSubscriptions.length||this.multiSubscriptions.length||(console.warn("No sync listeners"),(0,t.debug)("nosync",this._singleSubscriptions,this._multiSubscriptions)),this.upsert([{idObj:e,delta:n,opts:i}])},$cloneSync:t=>this.syncOne(e,t),$cloneMultiSync:e=>this.sync(e,!0)};return i}syncOne(e,t,n=!0){const i=this.makeSingleSyncHandles(e,t),s={_onChange:t,idObj:e,handlesOnData:n,handles:i,notify:(e,s)=>{let r={...e};return n&&(r.$get=i.$get,r.$find=i.$find,r.$update=i.$update,r.$delete=i.$delete,r.$unsync=i.$unsync,r.$cloneSync=i.$cloneSync),t(r,s)}};return this.singleSubscriptions.push(s),setTimeout((()=>{let e=i.$get();e&&s.notify(e,e)}),0),Object.freeze({...i})}getIdStr(e){return this.id_fields.sort().map((t=>`${e[t]||""}`)).join(".")}getIdObj(e){let t={};return this.id_fields.sort().map((n=>{t[n]=e[n]})),t}getRowSyncObj(e){let t={};return[this.synced_field,...this.id_fields].sort().map((n=>{t[n]=e[n]})),t}matchesFilter(e){return Boolean(e&&(!this.filter||(0,i.isEmpty)(this.filter)||!Object.keys(this.filter).find((t=>this.filter[t]!==e[t]))))}matchesIdObj(e,t){return Boolean(e&&t&&!this.id_fields.sort().find((n=>e[n]!==t[n])))}getDelta(e,t){return(0,i.isEmpty)(e)?{...t}:Object.keys({...e,...t}).filter((e=>!this.id_fields.includes(e))).reduce(((n,i)=>{let s={};if(i in t&&t[i]!==e[i]){let n={[i]:t[i]};t[i]&&e[i]&&"object"==typeof e[i]?JSON.stringify(t[i])!==JSON.stringify(e[i])&&(s=n):s=n}return{...n,...s}}),{})}deleteAll(){this.getItems().map((e=>this.delete(e)))}get tableHandler(){const e=this.db[this.name];if((null==e?void 0:e.update)&&e.updateBatch)return e}getItem(e){let t;return this.storageType===o.localStorage?t=this.getItems().find((t=>this.matchesIdObj(t,e))):this.storageType===o.array?t=this.items.find((t=>this.matchesIdObj(t,e))):(this.itemsObj=this.itemsObj||{},t={...this.itemsObj}[this.getIdStr(e)]),{data:c(t),index:-1}}setItem(e,t,n=!1,i=!1){const s=c(e);if(this.storageType===o.localStorage){let e=this.getItems();i?e=e.filter((e=>!this.matchesIdObj(e,s))):void 0!==t&&e[t]?e[t]=n?{...s}:{...e[t],...s}:e.push(s),r&&window.localStorage.setItem(this.name,JSON.stringify(e))}else if(this.storageType===o.array)i?this.items=this.items.filter((e=>!this.matchesIdObj(e,s))):void 0===t||this.items[t]?void 0!==t&&(this.items[t]=n?{...s}:{...this.items[t],...s}):this.items.push(s);else if(this.itemsObj=this.itemsObj||{},i)delete this.itemsObj[this.getIdStr(s)];else{let e=this.itemsObj[this.getIdStr(s)]||{};this.itemsObj[this.getIdStr(s)]=n?{...s}:{...e,...s}}}}function l(e,t){const n=e?c(e):e,s=t?c(t):t;let r=Object.assign({},n);return(0,i.isObject)(n)&&(0,i.isObject)(s)&&Object.keys(s).forEach((e=>{(0,i.isObject)(s[e])?e in n?r[e]=l(n[e],s[e]):Object.assign(r,{[e]:s[e]}):Object.assign(r,{[e]:s[e]})})),r}function c(e){if(r&&"structuredClone"in window&&"function"==typeof window.structuredClone)return window.structuredClone(e);if(Array.isArray(e))return e.slice(0).map((e=>c(e)));if((0,i.isObject)(e)){let t={};return(0,i.getKeys)(e).map((n=>{t[n]=c(e[n])})),t}return e}t.SyncedTable=a,t.default=l,t.quickClone=c},274:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.prostgles=t.asName=t.debug=void 0;const i=n(792);Object.defineProperty(t,"asName",{enumerable:!0,get:function(){return i.asName}});const s="DEBUG_SYNCEDTABLE",r="undefined"!=typeof window;t.debug=function(...e){r&&window[s]&&window[s](...e)},t.prostgles=function(e,n){const{socket:s,onReady:a,onDisconnect:l,onReconnect:c,onSchemaChange:u=!0,onReload:d}=e;if((0,t.debug)("prostgles",{initOpts:e}),u){let e;"function"==typeof u&&(e=u),s.removeAllListeners(i.CHANNELS.SCHEMA_CHANGED),e&&s.on(i.CHANNELS.SCHEMA_CHANGED,e)}const h=i.CHANNELS._preffix;let p,m={},f={},g={},y={},b=!1;function O(e,n,i){return(0,t.debug)("_unsubscribe",{channelName:e,handler:i}),new Promise(((t,r)=>{m[e]?(m[e].handlers=m[e].handlers.filter((e=>e!==i)),m[e].handlers.length||(s.emit(n,{},((e,t)=>{e&&console.error(e)})),s.removeListener(e,m[e].onCall),delete m[e]),t(!0)):t(!0)}))}function S({tableName:e,command:t,param1:n,param2:i},r){return new Promise(((o,a)=>{s.emit(h,{tableName:e,command:t,param1:n,param2:i},((e,t)=>{if(e)console.error(e),a(e);else if(t){const{id_fields:e,synced_field:n,channelName:i}=t;s.emit(i,{onSyncRequest:r({})},(e=>{console.log(e)})),o({id_fields:e,synced_field:n,channelName:i})}}))}))}function _({tableName:e,command:t,param1:n,param2:i}){return new Promise(((r,o)=>{s.emit(h,{tableName:e,command:t,param1:n,param2:i},((e,t)=>{e?(console.error(e),o(e)):t&&r(t)}))}))}const v=new o((async function({tableName:e,command:n,param1:i,param2:r},o){const{onPullRequest:a,onSyncRequest:l,onUpdates:c}=o;function u(e){return Object.freeze({unsync:function(){!function(e,n){(0,t.debug)("_unsync",{channelName:e,triggers:n}),new Promise(((t,i)=>{g[e]&&(g[e].triggers=g[e].triggers.filter((e=>e.onPullRequest!==n.onPullRequest&&e.onSyncRequest!==n.onSyncRequest&&e.onUpdates!==n.onUpdates)),g[e].triggers.length||(s.emit(e+"unsync",{},((e,n)=>{e?i(e):t(n)})),s.removeListener(e,g[e].onCall),delete g[e]))}))}(e,o)},syncData:function(t,n,i){s.emit(e,{onSyncRequest:{...l({}),...{data:t}||{},...{deleted:n}||{}}},i?e=>{i(e)}:null)}})}const d=Object.keys(g).find((t=>{let s=g[t];return s&&s.tableName===e&&s.command===n&&JSON.stringify(s.param1||{})===JSON.stringify(i||{})&&JSON.stringify(s.param2||{})===JSON.stringify(r||{})}));if(d)return g[d].triggers.push(o),u(d);{const h=await S({tableName:e,command:n,param1:i,param2:r},l),{channelName:p,synced_field:m,id_fields:f}=h;function y(t,n){t&&g[p]&&g[p].triggers.map((({onUpdates:i,onSyncRequest:s,onPullRequest:r})=>{t.data?Promise.resolve(i(t)).then((()=>{n&&n({ok:!0})})).catch((t=>{n?n({err:t}):console.error(e+" onUpdates error",t)})):t.onSyncRequest?Promise.resolve(s(t.onSyncRequest)).then((e=>n({onSyncRequest:e}))).catch((t=>{n?n({err:t}):console.error(e+" onSyncRequest error",t)})):t.onPullRequest?Promise.resolve(r(t.onPullRequest)).then((e=>{n({data:e})})).catch((t=>{n?n({err:t}):console.error(e+" onPullRequest error",t)})):console.log("unexpected response")}))}return g[p]={tableName:e,command:n,param1:i,param2:r,triggers:[o],syncInfo:h,onCall:y},s.on(p,y),u(p)}}),(([{tableName:e}])=>e)),j=new o((async function(e,{tableName:t,command:n,param1:i,param2:r},o,a){function l(n,s){let r={unsubscribe:function(){return O(n,s,o)},filter:{...i}};return e[t].update&&(r={...r,update:function(n,s){return e[t].update(i,n,s)}}),e[t].delete&&(r={...r,delete:function(n){return e[t].delete(i,n)}}),Object.freeze(r)}const c=Object.entries(m).find((([e])=>{let s=m[e];return s&&s.tableName===t&&s.command===n&&JSON.stringify(s.param1||{})===JSON.stringify(i||{})&&JSON.stringify(s.param2||{})===JSON.stringify(r||{})}));if(c){const e=c[0];return c[1].handlers.push(o),c[1].errorHandlers.push(a),setTimeout((()=>{var t,n;o&&(null===(t=null==m?void 0:m[e])||void 0===t?void 0:t.lastData)&&o(null===(n=null==m?void 0:m[e])||void 0===n?void 0:n.lastData)}),10),l(e,c[1].unsubChannel)}const{channelName:u,channelNameReady:d,channelNameUnsubscribe:h}=await _({tableName:t,command:n,param1:i,param2:r}),p=function(e,t){const n=m[u];n?e.data?(n.lastData=e.data,n.handlers.forEach((t=>{t(e.data)}))):e.err?n.errorHandlers.forEach((t=>{null==t||t(e.err)})):console.error("INTERNAL ERROR: Unexpected data format from subscription: ",e):console.warn("Orphaned subscription: ",u)},f=a||function(e){console.error(`Uncaught error within running subscription \n ${u}`,e)};return s.on(u,p),m[u]={lastData:void 0,tableName:t,command:n,param1:i,param2:r,onCall:p,unsubChannel:h,handlers:[o],errorHandlers:[f],destroy:()=>{m[u]&&(Object.values(m[u]).map((e=>{e&&e.handlers&&e.handlers.map((e=>O(u,h,e)))})),delete m[u])}},s.emit(d,{now:Date.now()}),l(u,h)}),(([e,{tableName:t}])=>t));async function w(e,t,n,i){return j.run([e,t,n,i])}return new Promise(((e,o)=>{s.removeAllListeners(i.CHANNELS.CONNECTION),s.on(i.CHANNELS.CONNECTION,(e=>(o(e),"ok"))),l&&s.on("disconnect",l),s.on(i.CHANNELS.SCHEMA,(({schema:l,methods:u,tableSchema:O,auth:j,rawSQL:N,joinTables:T=[],err:x})=>{if((0,t.debug)("destroySyncs",{subscriptions:m,syncedTables:f}),Object.values(m).map((e=>e.destroy())),m={},g={},Object.values(f).map((e=>{e&&e.destroy&&e.destroy()})),f={},b&&c&&(c(s,x),x))return void console.error(x);if(x)throw o(x),x;b=!0;let E=JSON.parse(JSON.stringify(l)),C=JSON.parse(JSON.stringify(u)),P={},I={};if(j){if(j.pathGuard&&r){const e=e=>{var t,n;(null==e?void 0:e.shouldReload)&&(d?d():"undefined"!=typeof window&&(null===(n=null===(t=null===window||void 0===window?void 0:window.location)||void 0===t?void 0:t.reload)||void 0===n||n.call(t)))};s.emit(i.CHANNELS.AUTHGUARD,JSON.stringify(window.location),((t,n)=>{e(n)})),s.removeAllListeners(i.CHANNELS.AUTHGUARD),s.on(i.CHANNELS.AUTHGUARD,(t=>{e(t)}))}I={...j},[i.CHANNELS.LOGIN,i.CHANNELS.LOGOUT,i.CHANNELS.REGISTER].map((e=>{j[e]&&(I[e]=function(t){return new Promise(((n,i)=>{s.emit(h+e,t,((e,t)=>{e?i(e):n(t)}))}))})}))}C.map((e=>{const t="string"==typeof e,n=function(...e){return new Promise(((t,n)=>{s.emit(i.CHANNELS.METHOD,{method:r,params:e},((e,i)=>{e?n(e):t(i)}))}))},r=t?e:e.name;P[r]=t?n:{...e,run:n}})),P=Object.freeze(P),N&&(E.sql=function(e,t,n){return new Promise(((r,o)=>{s.emit(i.CHANNELS.SQL,{query:e,params:t,options:n},((e,t)=>{if(e)o(e);else if(n&&"noticeSubscription"===n.returnType&&t&&Object.keys(t).sort().join()===["socketChannel","socketUnsubChannel"].sort().join()&&!Object.values(t).find((e=>"string"!=typeof e))){const e=t,n=t=>(((e,t)=>{p=p||{config:t,listeners:[]},p.listeners.length||(s.removeAllListeners(t.socketChannel),s.on(t.socketChannel,(e=>{p&&p.listeners&&p.listeners.length?p.listeners.map((t=>{t(e)})):s.emit(t.socketUnsubChannel,{})}))),p.listeners.push(e)})(t,e),{...e,removeListener:()=>(e=>{p&&(p.listeners=p.listeners.filter((t=>t!==e)),!p.listeners.length&&p.config&&p.config.socketUnsubChannel&&s&&s.emit(p.config.socketUnsubChannel,{}))})(t)}),i={...e,addListener:n};r(i)}else if(n&&n.returnType&&"statement"===n.returnType||!t||Object.keys(t).sort().join()!==["socketChannel","socketUnsubChannel","notifChannel"].sort().join()||Object.values(t).find((e=>"string"!=typeof e)))r(t);else{const e=e=>(((e,t)=>{var n;y=y||{},y[t.notifChannel]?null===(n=y[t.notifChannel])||void 0===n||n.listeners.push(e):(y[t.notifChannel]={config:t,listeners:[e]},s.removeAllListeners(t.socketChannel),s.on(t.socketChannel,(e=>{var n,i;(null===(n=y[t.notifChannel])||void 0===n?void 0:n.listeners.length)?y[t.notifChannel].listeners.map((t=>{t(e)})):s.emit(null===(i=y[t.notifChannel])||void 0===i?void 0:i.config.socketUnsubChannel,{})})))})(e,t),{...t,removeListener:()=>((e,t)=>{const n=y[t.notifChannel];n&&(n.listeners=n.listeners.filter((t=>t!==e)),!n.listeners.length&&n.config&&n.config.socketUnsubChannel&&s&&(s.emit(n.config.socketUnsubChannel,{}),delete y[t.notifChannel]))})(e,t)}),n={...t,addListener:e};r(n)}}))}))});const k=e=>"[object Object]"===Object.prototype.toString.call(e),A=(e,t,n,i)=>{if(!k(e)||!k(t)||"function"!=typeof n||i&&"function"!=typeof i)throw"Expecting: ( basicFilter<object>, options<object>, onChange<function> , onError?<function>) but got something else"},D=["subscribe","subscribeOne"];(0,i.getKeys)(E).forEach((e=>{Object.keys(E[e]).sort(((e,t)=>D.includes(e)-D.includes(t))).forEach((t=>{if(["find","findOne"].includes(t)&&(E[e].getJoinedTables=function(){return(T||[]).filter((t=>Array.isArray(t)&&t.includes(e))).flat().filter((t=>t!==e))}),"sync"===t){if(E[e]._syncInfo={...E[e][t]},n){E[e].getSync=(t,i={})=>n.create({name:e,filter:t,db:E,...i});const t=async(t={},i={},s)=>{const r=`${e}.${JSON.stringify(t)}.${JSON.stringify(i)}`;return f[r]||(f[r]=await n.create({...i,name:e,filter:t,db:E,onError:s})),f[r]};E[e].sync=async(e,n={handlesOnData:!0,select:"*"},i,s)=>{A(e,n,i,s);const r=await t(e,n,s);return await r.sync(i,n.handlesOnData)},E[e].syncOne=async(e,n={handlesOnData:!0},i,s)=>{A(e,n,i,s);const r=await t(e,n,s);return await r.syncOne(e,i,n.handlesOnData)}}E[e]._sync=function(n,i,s){return async function(e,t){return v.run([e,t])}({tableName:e,command:t,param1:n,param2:i},s)}}else if(D.includes(t)){const n=function(n,i,s,r){return A(n,i,s,r),w(E,{tableName:e,command:t,param1:n,param2:i},s,r)};E[e][t]=n;const i="subscribeOne";E[e][t+"Hook"]=function(e,s,r){return{start:o=>n(e,s,t!==i?o:e=>{o(e[0])},r),args:[e,s,r]}},t!==i&&D.includes(i)||(E[e][i]=function(n,i,s,r){return A(n,i,s,r),w(E,{tableName:e,command:t,param1:n,param2:i},(e=>{s(e[0])}),r)})}else E[e][t]=function(n,i,r){return new Promise(((o,a)=>{s.emit(h,{tableName:e,command:t,param1:n,param2:i,param3:r},((e,t)=>{e?a(e):o(t)}))}))}}))})),m&&Object.keys(m).length&&Object.keys(m).map((async e=>{try{let t=m[e];await _(t),s.on(e,t.onCall)}catch(e){console.error("There was an issue reconnecting old subscriptions",e)}})),g&&Object.keys(g).length&&(0,i.getKeys)(g).filter((e=>{var t;return null===(t=g[e])||void 0===t?void 0:t.triggers.length})).map((async e=>{try{let t=g[e];await S(t,t.triggers[0].onSyncRequest),s.on(e,t.onCall)}catch(e){console.error("There was an issue reconnecting olf subscriptions",e)}})),T.flat().map((e=>{function t(t=!0,n,i,s){return{[t?"$leftJoin":"$innerJoin"]:e,filter:n,select:i,...s}}E.innerJoin=E.innerJoin||{},E.leftJoin=E.leftJoin||{},E.innerJoinOne=E.innerJoinOne||{},E.leftJoinOne=E.leftJoinOne||{},E.leftJoin[e]=(e,n,i={})=>t(!0,e,n,i),E.innerJoin[e]=(e,n,i={})=>t(!1,e,n,i),E.leftJoinOne[e]=(e,n,i={})=>t(!0,e,n,{...i,limit:1}),E.innerJoinOne[e]=(e,n,i={})=>t(!1,e,n,{...i,limit:1})})),(async()=>{try{await a(E,P,O,I,b)}catch(e){console.error("Prostgles: Error within onReady: \n",e),o(e)}e(E)})()}))}))};class o{constructor(e,t){this.queue=[],this.isRunning=!1,this.func=e,this.groupBy=t}async run(e){const t=new Promise(((t,n)=>{const i={arguments:e,onResult:t};this.queue.push(i)})),n=async()=>{if(this.isRunning)return;this.isRunning=!0;const e=async e=>{if(e){const t=await this.func(...e.arguments);e.onResult(t)}};if(this.groupBy){const t=[],n=[];this.queue.forEach((async(e,i)=>{const s=this.groupBy(e.arguments);t.includes(s)||(t.push(s),n.push({index:i,item:e}))})),n.slice(0).reverse().forEach((e=>{this.queue.splice(e.index,1)})),await Promise.all(n.map((t=>e(t.item))))}else{const t=this.queue.shift();await e(t)}this.isRunning=!1,this.queue.length&&n()};return n(),t}}},792:function(e){var t;this||window,t=()=>(()=>{"use strict";var e={31:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CONTENT_TYPE_TO_EXT=void 0,t.CONTENT_TYPE_TO_EXT={"text/html":["html","htm","shtml"],"text/css":["css"],"text/csv":["csv"],"text/tsv":["tsv"],"text/xml":["xml"],"text/mathml":["mml"],"text/plain":["txt"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/x-component":["htc"],"image/gif":["gif"],"image/jpeg":["jpeg","jpg"],"image/png":["png"],"image/tiff":["tif","tiff"],"image/vnd.wap.wbmp":["wbmp"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-ms-bmp":["bmp"],"image/svg+xml":["svg"],"image/webp":["webp"],"application/sql":["sql"],"application/x-javascript":["js"],"application/atom+xml":["atom"],"application/rss+xml":["rss"],"application/java-archive":["jar","war","ear"],"application/mac-binhex40":["hqx"],"application/msword":["doc","docx"],"application/pdf":["pdf"],"application/postscript":["ps","eps","ai"],"application/rtf":["rtf"],"application/vnd.ms-excel":["xls","xlsx"],"application/vnd.ms-powerpoint":["ppt","pptx"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/x-7z-compressed":["7z"],"application/x-cocoa":["cco"],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-makeself":["run"],"application/x-perl":["pl","pm"],"application/x-pilot":["prc","pdb"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-sea":["sea"],"application/x-shockwave-flash":["swf"],"application/x-stuffit":["sit"],"application/x-tcl":["tcl","tk"],"application/x-x509-ca-cert":["der","pem","crt"],"application/x-xpinstall":["xpi"],"application/xhtml+xml":["xhtml"],"application/zip":["zip"],"application/octet-stream":["bin","exe","dll","deb","dmg","eot","iso","img","msi","msp","msm"],"audio/midi":["mid","midi","kar"],"audio/mpeg":["mp3"],"audio/ogg":["ogg"],"audio/x-realaudio":["ra"],"video/3gpp":["3gpp","3gp"],"video/mpeg":["mpeg","mpg"],"video/quicktime":["mov"],"video/x-flv":["flv"],"video/x-mng":["mng"],"video/x-ms-asf":["asx","asf"],"video/x-ms-wmv":["wmv"],"video/x-msvideo":["avi"],"video/mp4":["m4v","mp4"],"video/webm":["webm"]}},444:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.COMPLEX_FILTER_KEY=t.EXISTS_KEYS=t.GeomFilter_Funcs=t.GeomFilterKeys=t.ArrayFilterOperands=t.TextFilter_FullTextSearchFilterKeys=t.TextFilterFTSKeys=t.TextFilterKeys=t.JsonbFilterKeys=t.JsonbOperands=t.CompareInFilterKeys=t.CompareFilterKeys=void 0;const i=n(128);t.CompareFilterKeys=["=","$eq","<>",">","<",">=","<=","$eq","$ne","$gt","$gte","$lte"],t.CompareInFilterKeys=["$in","$nin"],t.JsonbOperands={"@>":{Operator:"@>","Right Operand Type":"jsonb",Description:"Does the left JSON value contain the right JSON path/value entries at the top level?",Example:'\'{"a":1, "b":2}\'::jsonb @> \'{"b":2}\'::jsonb'},"<@":{Operator:"<@","Right Operand Type":"jsonb",Description:"Are the left JSON path/value entries contained at the top level within the right JSON value?",Example:'\'{"b":2}\'::jsonb <@ \'{"a":1, "b":2}\'::jsonb'},"?":{Operator:"?","Right Operand Type":"text",Description:"Does the string exist as a top-level key within the JSON value?",Example:"'{\"a\":1, \"b\":2}'::jsonb ? 'b'"},"?|":{Operator:"?|","Right Operand Type":"text[]",Description:"Do any of these array strings exist as top-level keys?",Example:"'{\"a\":1, \"b\":2, \"c\":3}'::jsonb ?| array['b', 'c']"},"?&":{Operator:"?&","Right Operand Type":"text[]",Description:"Do all of these array strings exist as top-level keys?",Example:"'[\"a\", \"b\"]'::jsonb ?& array['a', 'b']"},"||":{Operator:"||","Right Operand Type":"jsonb",Description:"Concatenate two jsonb values into a new jsonb value",Example:'\'["a", "b"]\'::jsonb || \'["c", "d"]\'::jsonb'},"-":{Operator:"-","Right Operand Type":"integer",Description:"Delete the array element with specified index (Negative integers count from the end). Throws an error if top level container is not an array.",Example:'\'["a", "b"]\'::jsonb - 1'},"#-":{Operator:"#-","Right Operand Type":"text[]",Description:"Delete the field or element with specified path (for JSON arrays, negative integers count from the end)",Example:"'[\"a\", {\"b\":1}]'::jsonb #- '{1,b}'"},"@?":{Operator:"@?","Right Operand Type":"jsonpath",Description:"Does JSON path return any item for the specified JSON value?",Example:"'{\"a\":[1,2,3,4,5]}'::jsonb @? '$.a[*] ? (@ > 2)'"},"@@":{Operator:"@@","Right Operand Type":"jsonpath",Description:"Returns the result of JSON path predicate check for the specified JSON value. Only the first item of the result is taken into account. If the result is not Boolean, then null is returned.",Example:"'{\"a\":[1,2,3,4,5]}'::jsonb @@ '$.a[*] > 2'"}},t.JsonbFilterKeys=(0,i.getKeys)(t.JsonbOperands),t.TextFilterKeys=["$ilike","$like","$nilike","$nlike"],t.TextFilterFTSKeys=["@@","@>","<@","$contains","$containedBy"],t.TextFilter_FullTextSearchFilterKeys=["to_tsquery","plainto_tsquery","phraseto_tsquery","websearch_to_tsquery"],t.ArrayFilterOperands=["@>","<@","=","$eq","$contains","$containedBy","&&","$overlaps"],t.GeomFilterKeys=["~","~=","@","|&>","|>>",">>","=","<<|","<<","&>","&<|","&<","&&&","&&"],t.GeomFilter_Funcs=["ST_MakeEnvelope","st_makeenvelope","ST_MakePolygon","st_makepolygon"],t.EXISTS_KEYS=["$exists","$notExists","$existsJoined","$notExistsJoined"],t.COMPLEX_FILTER_KEY="$filter"},590:function(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var s=Object.getOwnPropertyDescriptor(t,n);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,s)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),s=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.CONTENT_TYPE_TO_EXT=t.getKeys=t.isObject=t.isDefined=t.get=t.WAL=t.unpatchText=t.stableStringify=t.isEmpty=t.getTextPatch=t.omitKeys=t.pickKeys=t.asName=t.RULE_METHODS=t.CHANNELS=t.JOIN_PARAMS=t.JOIN_KEYS=t.TS_PG_Types=t._PG_geometric=t._PG_postgis=t._PG_interval=t._PG_date=t._PG_bool=t._PG_json=t._PG_numbers=t._PG_strings=void 0,t._PG_strings=["bpchar","char","varchar","text","citext","uuid","bytea","time","timetz","interval","name","cidr","inet","macaddr","macaddr8","int4range","int8range","numrange","tsvector"],t._PG_numbers=["int2","int4","int8","float4","float8","numeric","money","oid"],t._PG_json=["json","jsonb"],t._PG_bool=["bool"],t._PG_date=["date","timestamp","timestamptz"],t._PG_interval=["interval"],t._PG_postgis=["geometry","geography"],t._PG_geometric=["point","line","lseg","box","path","polygon","circle"];const r={string:[...t._PG_strings,...t._PG_date,...t._PG_geometric,...t._PG_postgis,"lseg"],number:t._PG_numbers,boolean:t._PG_bool,any:[...t._PG_json,...t._PG_interval]};t.TS_PG_Types={...r,"number[]":r.number.map((e=>`_${e}`)),"boolean[]":r.boolean.map((e=>`_${e}`)),"string[]":r.string.map((e=>`_${e}`)),"any[]":r.any.map((e=>`_${e}`))},t.JOIN_KEYS=["$innerJoin","$leftJoin"],t.JOIN_PARAMS=["select","filter","$path","$condition","offset","limit","orderBy"];const o="_psqlWS_.";t.CHANNELS={SCHEMA_CHANGED:o+"schema-changed",SCHEMA:o+"schema",DEFAULT:o,SQL:"_psqlWS_.sql",METHOD:"_psqlWS_.method",NOTICE_EV:"_psqlWS_.notice",LISTEN_EV:"_psqlWS_.listen",REGISTER:"_psqlWS_.register",LOGIN:"_psqlWS_.login",LOGOUT:"_psqlWS_.logout",AUTHGUARD:"_psqlWS_.authguard",CONNECTION:"_psqlWS_.connection",_preffix:o},t.RULE_METHODS={getColumns:["getColumns"],getInfo:["getInfo"],insert:["insert","upsert"],update:["update","upsert","updateBatch"],select:["findOne","find","count","size"],delete:["delete","remove"],sync:["sync","unsync"],subscribe:["unsubscribe","subscribe","subscribeOne"]};var a=n(128);Object.defineProperty(t,"asName",{enumerable:!0,get:function(){return a.asName}}),Object.defineProperty(t,"pickKeys",{enumerable:!0,get:function(){return a.pickKeys}}),Object.defineProperty(t,"omitKeys",{enumerable:!0,get:function(){return a.omitKeys}}),Object.defineProperty(t,"getTextPatch",{enumerable:!0,get:function(){return a.getTextPatch}}),Object.defineProperty(t,"isEmpty",{enumerable:!0,get:function(){return a.isEmpty}}),Object.defineProperty(t,"stableStringify",{enumerable:!0,get:function(){return a.stableStringify}}),Object.defineProperty(t,"unpatchText",{enumerable:!0,get:function(){return a.unpatchText}}),Object.defineProperty(t,"WAL",{enumerable:!0,get:function(){return a.WAL}}),Object.defineProperty(t,"get",{enumerable:!0,get:function(){return a.get}}),Object.defineProperty(t,"isDefined",{enumerable:!0,get:function(){return a.isDefined}}),Object.defineProperty(t,"isObject",{enumerable:!0,get:function(){return a.isObject}}),Object.defineProperty(t,"getKeys",{enumerable:!0,get:function(){return a.getKeys}}),s(n(444),t);var l=n(31);Object.defineProperty(t,"CONTENT_TYPE_TO_EXT",{enumerable:!0,get:function(){return l.CONTENT_TYPE_TO_EXT}}),s(n(929),t)},929:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getJSONBSchemaAsJSONSchema=t.DATA_TYPES=t.PrimitiveArrayTypes=t.PrimitiveTypes=void 0;const i=n(128);t.PrimitiveTypes=["boolean","number","integer","string","Date","time","timestamp","any"],t.PrimitiveArrayTypes=t.PrimitiveTypes.map((e=>`${e}[]`)),t.DATA_TYPES=[...t.PrimitiveTypes,...t.PrimitiveArrayTypes];const s=(e,t)=>{const{type:n,arrayOf:r,arrayOfType:o,description:a,nullable:l,oneOf:c,oneOfType:u,title:d,record:h,...p}="string"==typeof e?{type:e}:e;let m={};const f={...(p.enum||p.allowedValues?.length)&&{enum:p.allowedValues?.slice(0)??p.enum.slice(0)},...!!a&&{description:a},...!!d&&{title:d}};if(p.enum?.length&&(f.type=typeof p.enum[0]),"string"==typeof n||r||o){if(n&&"string"!=typeof n)throw"Not expected";m=r||o||n?.endsWith("[]")?{type:"array",items:r||o?s(r||{type:o}):n?.startsWith("any")?{type:void 0}:{type:n?.slice(0,-2),...p.allowedValues&&{enum:p.allowedValues.slice(0)}}}:{type:n}}else(0,i.isObject)(n)?m={type:"object",required:(0,i.getKeys)(n).filter((e=>{const t=n[e];return"string"==typeof t||!t.optional})),properties:(0,i.getKeys)(n).reduce(((e,t)=>({...e,[t]:s(n[t])})),{})}:c||u?m={oneOf:(c||u.map((e=>({type:e})))).map((e=>s(e)))}:h&&(m={type:"object",...h.values&&!h.keysEnum&&{additionalProperties:s(h.values)},...h.keysEnum&&{properties:h.keysEnum.reduce(((e,t)=>({...e,[t]:h.values?s(h.values):{type:{}}})),{})}});if(l){const e={type:"null"};m.oneOf?m.oneOf.push(e):m.enum&&!m.enum.includes(null)?m.enum.push(null):m={oneOf:[m,e]}}return{...t?{$id:t?.id,$schema:"https://json-schema.org/draft/2020-12/schema"}:void 0,...f,...m}};t.getJSONBSchemaAsJSONSchema=function(e,t,n){return s(n,{id:`${e}.${t}`})}},899:(e,t)=>{function n(e,t){var n=e[0],i=e[1],l=e[2],c=e[3];n=s(n,i,l,c,t[0],7,-680876936),c=s(c,n,i,l,t[1],12,-389564586),l=s(l,c,n,i,t[2],17,606105819),i=s(i,l,c,n,t[3],22,-1044525330),n=s(n,i,l,c,t[4],7,-176418897),c=s(c,n,i,l,t[5],12,1200080426),l=s(l,c,n,i,t[6],17,-1473231341),i=s(i,l,c,n,t[7],22,-45705983),n=s(n,i,l,c,t[8],7,1770035416),c=s(c,n,i,l,t[9],12,-1958414417),l=s(l,c,n,i,t[10],17,-42063),i=s(i,l,c,n,t[11],22,-1990404162),n=s(n,i,l,c,t[12],7,1804603682),c=s(c,n,i,l,t[13],12,-40341101),l=s(l,c,n,i,t[14],17,-1502002290),n=r(n,i=s(i,l,c,n,t[15],22,1236535329),l,c,t[1],5,-165796510),c=r(c,n,i,l,t[6],9,-1069501632),l=r(l,c,n,i,t[11],14,643717713),i=r(i,l,c,n,t[0],20,-373897302),n=r(n,i,l,c,t[5],5,-701558691),c=r(c,n,i,l,t[10],9,38016083),l=r(l,c,n,i,t[15],14,-660478335),i=r(i,l,c,n,t[4],20,-405537848),n=r(n,i,l,c,t[9],5,568446438),c=r(c,n,i,l,t[14],9,-1019803690),l=r(l,c,n,i,t[3],14,-187363961),i=r(i,l,c,n,t[8],20,1163531501),n=r(n,i,l,c,t[13],5,-1444681467),c=r(c,n,i,l,t[2],9,-51403784),l=r(l,c,n,i,t[7],14,1735328473),n=o(n,i=r(i,l,c,n,t[12],20,-1926607734),l,c,t[5],4,-378558),c=o(c,n,i,l,t[8],11,-2022574463),l=o(l,c,n,i,t[11],16,1839030562),i=o(i,l,c,n,t[14],23,-35309556),n=o(n,i,l,c,t[1],4,-1530992060),c=o(c,n,i,l,t[4],11,1272893353),l=o(l,c,n,i,t[7],16,-155497632),i=o(i,l,c,n,t[10],23,-1094730640),n=o(n,i,l,c,t[13],4,681279174),c=o(c,n,i,l,t[0],11,-358537222),l=o(l,c,n,i,t[3],16,-722521979),i=o(i,l,c,n,t[6],23,76029189),n=o(n,i,l,c,t[9],4,-640364487),c=o(c,n,i,l,t[12],11,-421815835),l=o(l,c,n,i,t[15],16,530742520),n=a(n,i=o(i,l,c,n,t[2],23,-995338651),l,c,t[0],6,-198630844),c=a(c,n,i,l,t[7],10,1126891415),l=a(l,c,n,i,t[14],15,-1416354905),i=a(i,l,c,n,t[5],21,-57434055),n=a(n,i,l,c,t[12],6,1700485571),c=a(c,n,i,l,t[3],10,-1894986606),l=a(l,c,n,i,t[10],15,-1051523),i=a(i,l,c,n,t[1],21,-2054922799),n=a(n,i,l,c,t[8],6,1873313359),c=a(c,n,i,l,t[15],10,-30611744),l=a(l,c,n,i,t[6],15,-1560198380),i=a(i,l,c,n,t[13],21,1309151649),n=a(n,i,l,c,t[4],6,-145523070),c=a(c,n,i,l,t[11],10,-1120210379),l=a(l,c,n,i,t[2],15,718787259),i=a(i,l,c,n,t[9],21,-343485551),e[0]=h(n,e[0]),e[1]=h(i,e[1]),e[2]=h(l,e[2]),e[3]=h(c,e[3])}function i(e,t,n,i,s,r){return t=h(h(t,e),h(i,r)),h(t<<s|t>>>32-s,n)}function s(e,t,n,s,r,o,a){return i(t&n|~t&s,e,t,r,o,a)}function r(e,t,n,s,r,o,a){return i(t&s|n&~s,e,t,r,o,a)}function o(e,t,n,s,r,o,a){return i(t^n^s,e,t,r,o,a)}function a(e,t,n,s,r,o,a){return i(n^(t|~s),e,t,r,o,a)}function l(e){var t,n=[];for(t=0;t<64;t+=4)n[t>>2]=e.charCodeAt(t)+(e.charCodeAt(t+1)<<8)+(e.charCodeAt(t+2)<<16)+(e.charCodeAt(t+3)<<24);return n}Object.defineProperty(t,"__esModule",{value:!0}),t.md5=t.md5cycle=void 0,t.md5cycle=n;var c="0123456789abcdef".split("");function u(e){for(var t="",n=0;n<4;n++)t+=c[e>>8*n+4&15]+c[e>>8*n&15];return t}function d(e){return function(e){for(var t=0;t<e.length;t++)e[t]=u(e[t]);return e.join("")}(function(e){var t,i=e.length,s=[1732584193,-271733879,-1732584194,271733878];for(t=64;t<=e.length;t+=64)n(s,l(e.substring(t-64,t)));e=e.substring(t-64);var r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;t<e.length;t++)r[t>>2]|=e.charCodeAt(t)<<(t%4<<3);if(r[t>>2]|=128<<(t%4<<3),t>55)for(n(s,r),t=0;t<16;t++)r[t]=0;return r[14]=8*i,n(s,r),s}(e))}function h(e,t){return e+t&4294967295}t.md5=d,d("hello")},128:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getKeys=t.isDefined=t.isObject=t.get=t.isEmpty=t.WAL=t.unpatchText=t.getTextPatch=t.stableStringify=t.find=t.filter=t.omitKeys=t.pickKeys=t.asName=void 0;const i=n(899);function s(e,t=[],n=!1){let i=t;if(!i.length)return{};if(e&&i.length){let t={};return i.forEach((i=>{n&&void 0===e[i]||(t[i]=e[i])})),t}return e}function r(e,t){return e.filter((e=>Object.entries(t).every((([t,n])=>e[t]===n))))}function o(e){for(var t in e)return!1;return!0}function a(e){return Object.keys(e)}t.asName=function(e){if(null==e||!e.toString||!e.toString())throw"Expecting a non empty string";return`"${e.toString().replace(/"/g,'""')}"`},t.pickKeys=s,t.omitKeys=function(e,t){return s(e,a(e).filter((e=>!t.includes(e))))},t.filter=r,t.find=function(e,t){return r(e,t)[0]},t.stableStringify=function(e,t){t||(t={}),"function"==typeof t&&(t={cmp:t});var n,i="boolean"==typeof t.cycles&&t.cycles,s=t.cmp&&(n=t.cmp,function(e){return function(t,i){var s={key:t,value:e[t]},r={key:i,value:e[i]};return n(s,r)}}),r=[];return function e(t){if(t&&t.toJSON&&"function"==typeof t.toJSON&&(t=t.toJSON()),void 0!==t){if("number"==typeof t)return isFinite(t)?""+t:"null";if("object"!=typeof t)return JSON.stringify(t);var n,o;if(Array.isArray(t)){for(o="[",n=0;n<t.length;n++)n&&(o+=","),o+=e(t[n])||"null";return o+"]"}if(null===t)return"null";if(-1!==r.indexOf(t)){if(i)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var a=r.push(t)-1,l=Object.keys(t).sort(s&&s(t));for(o="",n=0;n<l.length;n++){var c=l[n],u=e(t[c]);u&&(o&&(o+=","),o+=JSON.stringify(c)+":"+u)}return r.splice(a,1),"{"+o+"}"}}(e)},t.getTextPatch=function(e,t){if(!(e&&t&&e.trim().length&&t.trim().length))return t;if(e===t)return{from:0,to:0,text:"",md5:(0,i.md5)(t)};function n(n=1){let i=n<1?-1:0,s=!1;for(;!s&&Math.abs(i)<=t.length;){const r=n<1?[i]:[0,i];e.slice(...r)!==t.slice(...r)?s=!0:i+=1*Math.sign(n)}return i}let s=n()-1,r=e.length+n(-1)+1,o=t.length+n(-1)+1;return{from:s,to:r,text:t.slice(s,o),md5:(0,i.md5)(t)}},t.unpatchText=function(e,t){if(!t||"string"==typeof t)return t;const{from:n,to:s,text:r,md5:o}=t;if(null===r||null===e)return r;let a=e.slice(0,n)+r+e.slice(s);if(o&&(0,i.md5)(a)!==o)throw"Patch text error: Could not match md5 hash: (original/result) \n"+e+"\n"+a;return a},t.WAL=class{constructor(e){if(this.changed={},this.sending={},this.sentHistory={},this.callbacks=[],this.sort=(e,t)=>{const{orderBy:n}=this.options;return n&&e&&t&&n.map((n=>{if(!(n.fieldName in e)||!(n.fieldName in t))throw"Replication error: \n some orderBy fields missing from data";let i=n.asc?e[n.fieldName]:t[n.fieldName],s=n.asc?t[n.fieldName]:e[n.fieldName],r=+i-+s,o=i<s?-1:i==s?0:1;return"number"===n.tsDataType&&Number.isFinite(r)?r:o})).find((e=>e))||0},this.isInHistory=e=>{if(!e)throw"Provide item";const t=e[this.options.synced_field];if(!Number.isFinite(+t))throw"Provided item Synced field value is missing/invalid ";const n=this.sentHistory[this.getIdStr(e)],i=n?.[this.options.synced_field];if(n){if(!Number.isFinite(+i))throw"Provided historic item Synced field value is missing/invalid";if(+i==+t)return!0}return!1},this.addData=e=>{o(this.changed)&&this.options.onSendStart&&this.options.onSendStart(),e.map((e=>{var t;const{initial:n,current:i,delta:s}={...e};if(!i)throw"Expecting { current: object, initial?: object }";const r=this.getIdStr(i);this.changed??(this.changed={}),(t=this.changed)[r]??(t[r]={initial:n,current:i,delta:s}),this.changed[r].current={...this.changed[r].current,...i},this.changed[r].delta={...this.changed[r].delta,...s}})),this.sendItems()},this.isOnSending=!1,this.isSendingTimeout=void 0,this.willDeleteHistory=void 0,this.sendItems=async()=>{const{DEBUG_MODE:e,onSend:t,onSendEnd:n,batch_size:i,throttle:s,historyAgeSeconds:r=2}=this.options;if(this.isSendingTimeout||this.sending&&!o(this.sending))return;if(!this.changed||o(this.changed))return;let a,l=[],c=[],u={};Object.keys(this.changed).sort(((e,t)=>this.sort(this.changed[e].current,this.changed[t].current))).slice(0,i).map((e=>{let t={...this.changed[e]};this.sending[e]={...t},c.push({...t}),u[e]={...t.current},delete this.changed[e]})),l=c.map((e=>{let t={};return Object.keys(e.current).map((n=>{const i=e.initial?.[n],s=e.current[n];var r,o;![this.options.synced_field,...this.options.id_fields].includes(n)&&((r=i)===(o=s)||(["number","string","boolean"].includes(typeof r)?r===o:JSON.stringify(r)===JSON.stringify(o)))||(t[n]=s)})),t})),e&&console.log(this.options.id," SENDING lr->",l[l.length-1]),this.isSendingTimeout||(this.isSendingTimeout=setTimeout((()=>{this.isSendingTimeout=void 0,o(this.changed)||this.sendItems()}),s)),this.isOnSending=!0;try{await t(l,c),r&&(this.sentHistory={...this.sentHistory,...u},this.willDeleteHistory||(this.willDeleteHistory=setTimeout((()=>{this.willDeleteHistory=void 0,this.sentHistory={}}),1e3*r)))}catch(e){a=e,console.error("WAL onSend failed:",e,l,c)}if(this.isOnSending=!1,this.callbacks.length){const e=Object.keys(this.sending);this.callbacks.forEach(((t,n)=>{t.idStrs=t.idStrs.filter((t=>e.includes(t))),t.idStrs.length||t.cb(a)})),this.callbacks=this.callbacks.filter((e=>e.idStrs.length))}this.sending={},e&&console.log(this.options.id," SENT lr->",l[l.length-1]),o(this.changed)?n&&n(l,c,a):this.sendItems()},this.options={...e},!this.options.orderBy){const{synced_field:t,id_fields:n}=e;this.options.orderBy=[t,...n.sort()].map((e=>({fieldName:e,tsDataType:e===t?"number":"string",asc:!0})))}}isSending(){const e=this.isOnSending||!(o(this.sending)&&o(this.changed));return this.options.DEBUG_MODE&&console.log(this.options.id," CHECKING isSending ->",e),e}getIdStr(e){return this.options.id_fields.sort().map((t=>`${e[t]||""}`)).join(".")}getIdObj(e){let t={};return this.options.id_fields.sort().map((n=>{t[n]=e[n]})),t}getDeltaObj(e){let t={};return Object.keys(e).map((n=>{this.options.id_fields.includes(n)||(t[n]=e[n])})),t}},t.isEmpty=o,t.get=function(e,t){let n=t,i=e;return e?("string"==typeof n&&(n=n.split(".")),n.reduce(((e,t)=>e&&e[t]?e[t]:void 0),i)):e},t.isObject=function(e){return Boolean(e&&"object"==typeof e&&!Array.isArray(e))},t.isDefined=function(e){return null!=e},t.getKeys=a}},t={};return function n(i){var s=t[i];if(void 0!==s)return s.exports;var r=t[i]={exports:{}};return e[i].call(r.exports,r,r.exports,n),r.exports}(590)})(),e.exports=t()}},t={};function n(i){var s=t[i];if(void 0!==s)return s.exports;var r=t[i]={exports:{}};return e[i].call(r.exports,r,r.exports,n),r.exports}var i={};return(()=>{"use strict";var e=i;Object.defineProperty(e,"__esModule",{value:!0}),e.prostgles=void 0;const t=n(274),s=n(133);e.prostgles=function(e){return(0,t.prostgles)(e,s.SyncedTable)}})(),i})()));
@@ -1 +1 @@
1
- !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var i in n)("object"==typeof exports?exports:e)[i]=n[i]}}(this||window,(()=>{return e={274:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.prostgles=t.asName=t.debug=void 0;const i=n(792);Object.defineProperty(t,"asName",{enumerable:!0,get:function(){return i.asName}});const r="DEBUG_SYNCEDTABLE",s="undefined"!=typeof window;t.debug=function(...e){s&&window[r]&&window[r](...e)},t.prostgles=function(e,n){const{socket:r,onReady:a,onDisconnect:l,onReconnect:c,onSchemaChange:u=!0,onReload:p}=e;if((0,t.debug)("prostgles",{initOpts:e}),u){let e;"function"==typeof u&&(e=u),r.removeAllListeners(i.CHANNELS.SCHEMA_CHANGED),e&&r.on(i.CHANNELS.SCHEMA_CHANGED,e)}const d=i.CHANNELS._preffix;let m,f={},h={},g={},y={},b=!1;function O(e,n,i){return(0,t.debug)("_unsubscribe",{channelName:e,handler:i}),new Promise(((t,s)=>{f[e]?(f[e].handlers=f[e].handlers.filter((e=>e!==i)),f[e].handlers.length||(r.emit(n,{},((e,t)=>{e&&console.error(e)})),r.removeListener(e,f[e].onCall),delete f[e]),t(!0)):t(!0)}))}function v({tableName:e,command:t,param1:n,param2:i},s){return new Promise(((o,a)=>{r.emit(d,{tableName:e,command:t,param1:n,param2:i},((e,t)=>{if(e)console.error(e),a(e);else if(t){const{id_fields:e,synced_field:n,channelName:i}=t;r.emit(i,{onSyncRequest:s({})},(e=>{console.log(e)})),o({id_fields:e,synced_field:n,channelName:i})}}))}))}function _({tableName:e,command:t,param1:n,param2:i}){return new Promise(((s,o)=>{r.emit(d,{tableName:e,command:t,param1:n,param2:i},((e,t)=>{e?(console.error(e),o(e)):t&&s(t)}))}))}const S=new o((async function({tableName:e,command:n,param1:i,param2:s},o){const{onPullRequest:a,onSyncRequest:l,onUpdates:c}=o;function u(e){return Object.freeze({unsync:function(){!function(e,n){(0,t.debug)("_unsync",{channelName:e,triggers:n}),new Promise(((t,i)=>{g[e]&&(g[e].triggers=g[e].triggers.filter((e=>e.onPullRequest!==n.onPullRequest&&e.onSyncRequest!==n.onSyncRequest&&e.onUpdates!==n.onUpdates)),g[e].triggers.length||(r.emit(e+"unsync",{},((e,n)=>{e?i(e):t(n)})),r.removeListener(e,g[e].onCall),delete g[e]))}))}(e,o)},syncData:function(t,n,i){r.emit(e,{onSyncRequest:{...l({}),...{data:t}||{},...{deleted:n}||{}}},i?e=>{i(e)}:null)}})}const p=Object.keys(g).find((t=>{let r=g[t];return r&&r.tableName===e&&r.command===n&&JSON.stringify(r.param1||{})===JSON.stringify(i||{})&&JSON.stringify(r.param2||{})===JSON.stringify(s||{})}));if(p)return g[p].triggers.push(o),u(p);{const d=await v({tableName:e,command:n,param1:i,param2:s},l),{channelName:m,synced_field:f,id_fields:h}=d;function y(t,n){t&&g[m]&&g[m].triggers.map((({onUpdates:i,onSyncRequest:r,onPullRequest:s})=>{t.data?Promise.resolve(i(t)).then((()=>{n&&n({ok:!0})})).catch((t=>{n?n({err:t}):console.error(e+" onUpdates error",t)})):t.onSyncRequest?Promise.resolve(r(t.onSyncRequest)).then((e=>n({onSyncRequest:e}))).catch((t=>{n?n({err:t}):console.error(e+" onSyncRequest error",t)})):t.onPullRequest?Promise.resolve(s(t.onPullRequest)).then((e=>{n({data:e})})).catch((t=>{n?n({err:t}):console.error(e+" onPullRequest error",t)})):console.log("unexpected response")}))}return g[m]={tableName:e,command:n,param1:i,param2:s,triggers:[o],syncInfo:d,onCall:y},r.on(m,y),u(m)}}),(([{tableName:e}])=>e)),N=new o((async function(e,{tableName:t,command:n,param1:i,param2:s},o,a){function l(n,r){let s={unsubscribe:function(){return O(n,r,o)},filter:{...i}};return e[t].update&&(s={...s,update:function(n,r){return e[t].update(i,n,r)}}),e[t].delete&&(s={...s,delete:function(n){return e[t].delete(i,n)}}),Object.freeze(s)}const c=Object.entries(f).find((([e])=>{let r=f[e];return r&&r.tableName===t&&r.command===n&&JSON.stringify(r.param1||{})===JSON.stringify(i||{})&&JSON.stringify(r.param2||{})===JSON.stringify(s||{})}));if(c){const e=c[0];return c[1].handlers.push(o),c[1].errorHandlers.push(a),setTimeout((()=>{var t,n;o&&(null===(t=null==f?void 0:f[e])||void 0===t?void 0:t.lastData)&&o(null===(n=null==f?void 0:f[e])||void 0===n?void 0:n.lastData)}),10),l(e,c[1].unsubChannel)}const{channelName:u,channelNameReady:p,channelNameUnsubscribe:d}=await _({tableName:t,command:n,param1:i,param2:s}),m=function(e,t){const n=f[u];n?e.data?(n.lastData=e.data,n.handlers.forEach((t=>{t(e.data)}))):e.err?n.errorHandlers.forEach((t=>{t(e.err)})):console.error("INTERNAL ERROR: Unexpected data format from subscription: ",e):console.warn("Orphaned subscription: ",u)},h=a||function(e){console.error(`Uncaught error within running subscription \n ${u}`,e)};return r.on(u,m),f[u]={lastData:void 0,tableName:t,command:n,param1:i,param2:s,onCall:m,unsubChannel:d,handlers:[o],errorHandlers:[h],destroy:()=>{f[u]&&(Object.values(f[u]).map((e=>{e&&e.handlers&&e.handlers.map((e=>O(u,d,e)))})),delete f[u])}},r.emit(p,{now:Date.now()}),l(u,d)}),(([e,{tableName:t}])=>t));async function x(e,t,n,i){return N.run([e,t,n,i])}return new Promise(((e,o)=>{r.removeAllListeners(i.CHANNELS.CONNECTION),r.on(i.CHANNELS.CONNECTION,(e=>(o(e),"ok"))),l&&r.on("disconnect",l),r.on(i.CHANNELS.SCHEMA,(({schema:l,methods:u,tableSchema:O,auth:N,rawSQL:E,joinTables:j=[],err:T})=>{if((0,t.debug)("destroySyncs",{subscriptions:f,syncedTables:h}),Object.values(f).map((e=>e.destroy())),f={},g={},Object.values(h).map((e=>{e&&e.destroy&&e.destroy()})),h={},b&&c&&(c(r,T),T))return void console.error(T);if(T)throw o(T),T;b=!0;let w=JSON.parse(JSON.stringify(l)),P=JSON.parse(JSON.stringify(u)),C={},A={};if(N){if(N.pathGuard&&s){const e=e=>{var t,n;(null==e?void 0:e.shouldReload)&&(p?p():"undefined"!=typeof window&&(null===(n=null===(t=null===window||void 0===window?void 0:window.location)||void 0===t?void 0:t.reload)||void 0===n||n.call(t)))};r.emit(i.CHANNELS.AUTHGUARD,JSON.stringify(window.location),((t,n)=>{e(n)})),r.removeAllListeners(i.CHANNELS.AUTHGUARD),r.on(i.CHANNELS.AUTHGUARD,(t=>{e(t)}))}A={...N},[i.CHANNELS.LOGIN,i.CHANNELS.LOGOUT,i.CHANNELS.REGISTER].map((e=>{N[e]&&(A[e]=function(t){return new Promise(((n,i)=>{r.emit(d+e,t,((e,t)=>{e?i(e):n(t)}))}))})}))}P.map((e=>{const t="string"==typeof e,n=function(...e){return new Promise(((t,n)=>{r.emit(i.CHANNELS.METHOD,{method:s,params:e},((e,i)=>{e?n(e):t(i)}))}))},s=t?e:e.name;C[s]=t?n:{...e,run:n}})),C=Object.freeze(C),E&&(w.sql=function(e,t,n){return new Promise(((s,o)=>{r.emit(i.CHANNELS.SQL,{query:e,params:t,options:n},((e,t)=>{if(e)o(e);else if(n&&"noticeSubscription"===n.returnType&&t&&Object.keys(t).sort().join()===["socketChannel","socketUnsubChannel"].sort().join()&&!Object.values(t).find((e=>"string"!=typeof e))){const e=t,n=t=>(((e,t)=>{m=m||{config:t,listeners:[]},m.listeners.length||(r.removeAllListeners(t.socketChannel),r.on(t.socketChannel,(e=>{m&&m.listeners&&m.listeners.length?m.listeners.map((t=>{t(e)})):r.emit(t.socketUnsubChannel,{})}))),m.listeners.push(e)})(t,e),{...e,removeListener:()=>(e=>{m&&(m.listeners=m.listeners.filter((t=>t!==e)),!m.listeners.length&&m.config&&m.config.socketUnsubChannel&&r&&r.emit(m.config.socketUnsubChannel,{}))})(t)}),i={...e,addListener:n};s(i)}else if(n&&n.returnType&&"statement"===n.returnType||!t||Object.keys(t).sort().join()!==["socketChannel","socketUnsubChannel","notifChannel"].sort().join()||Object.values(t).find((e=>"string"!=typeof e)))s(t);else{const e=e=>(((e,t)=>{var n;y=y||{},y[t.notifChannel]?null===(n=y[t.notifChannel])||void 0===n||n.listeners.push(e):(y[t.notifChannel]={config:t,listeners:[e]},r.removeAllListeners(t.socketChannel),r.on(t.socketChannel,(e=>{var n,i;(null===(n=y[t.notifChannel])||void 0===n?void 0:n.listeners.length)?y[t.notifChannel].listeners.map((t=>{t(e)})):r.emit(null===(i=y[t.notifChannel])||void 0===i?void 0:i.config.socketUnsubChannel,{})})))})(e,t),{...t,removeListener:()=>((e,t)=>{const n=y[t.notifChannel];n&&(n.listeners=n.listeners.filter((t=>t!==e)),!n.listeners.length&&n.config&&n.config.socketUnsubChannel&&r&&(r.emit(n.config.socketUnsubChannel,{}),delete y[t.notifChannel]))})(e,t)}),n={...t,addListener:e};s(n)}}))}))});const k=e=>"[object Object]"===Object.prototype.toString.call(e),J=(e,t,n,i)=>{if(!k(e)||!k(t)||"function"!=typeof n||i&&"function"!=typeof i)throw"Expecting: ( basicFilter<object>, options<object>, onChange<function> , onError?<function>) but got something else"},D=["subscribe","subscribeOne"];(0,i.getKeys)(w).forEach((e=>{Object.keys(w[e]).sort(((e,t)=>D.includes(e)-D.includes(t))).forEach((t=>{if(["find","findOne"].includes(t)&&(w[e].getJoinedTables=function(){return(j||[]).filter((t=>Array.isArray(t)&&t.includes(e))).flat().filter((t=>t!==e))}),"sync"===t){if(w[e]._syncInfo={...w[e][t]},n){w[e].getSync=(t,i={})=>n.create({name:e,filter:t,db:w,...i});const t=async(t={},i={},r)=>{const s=`${e}.${JSON.stringify(t)}.${JSON.stringify(i)}`;return h[s]||(h[s]=await n.create({...i,name:e,filter:t,db:w,onError:r})),h[s]};w[e].sync=async(e,n={handlesOnData:!0,select:"*"},i,r)=>{J(e,n,i,r);const s=await t(e,n,r);return await s.sync(i,n.handlesOnData)},w[e].syncOne=async(e,n={handlesOnData:!0},i,r)=>{J(e,n,i,r);const s=await t(e,n,r);return await s.syncOne(e,i,n.handlesOnData)}}w[e]._sync=function(n,i,r){return async function(e,t){return S.run([e,t])}({tableName:e,command:t,param1:n,param2:i},r)}}else if(D.includes(t)){const n=function(n,i,r,s){return J(n,i,r,s),x(w,{tableName:e,command:t,param1:n,param2:i},r,s)};w[e][t]=n;const i="subscribeOne";w[e][t+"Hook"]=function(e,r,s){return{start:o=>n(e,r,t!==i?o:e=>{o(e[0])},s),args:[e,r,s]}},t!==i&&D.includes(i)||(w[e][i]=function(n,i,r,s){return J(n,i,r,s),x(w,{tableName:e,command:t,param1:n,param2:i},(e=>{r(e[0])}),s)})}else w[e][t]=function(n,i,s){return new Promise(((o,a)=>{r.emit(d,{tableName:e,command:t,param1:n,param2:i,param3:s},((e,t)=>{e?a(e):o(t)}))}))}}))})),f&&Object.keys(f).length&&Object.keys(f).map((async e=>{try{let t=f[e];await _(t),r.on(e,t.onCall)}catch(e){console.error("There was an issue reconnecting old subscriptions",e)}})),g&&Object.keys(g).length&&(0,i.getKeys)(g).filter((e=>{var t;return null===(t=g[e])||void 0===t?void 0:t.triggers.length})).map((async e=>{try{let t=g[e];await v(t,t.triggers[0].onSyncRequest),r.on(e,t.onCall)}catch(e){console.error("There was an issue reconnecting olf subscriptions",e)}})),j.flat().map((e=>{function t(t=!0,n,i,r){return{[t?"$leftJoin":"$innerJoin"]:e,filter:n,select:i,...r}}w.innerJoin=w.innerJoin||{},w.leftJoin=w.leftJoin||{},w.innerJoinOne=w.innerJoinOne||{},w.leftJoinOne=w.leftJoinOne||{},w.leftJoin[e]=(e,n,i={})=>t(!0,e,n,i),w.innerJoin[e]=(e,n,i={})=>t(!1,e,n,i),w.leftJoinOne[e]=(e,n,i={})=>t(!0,e,n,{...i,limit:1}),w.innerJoinOne[e]=(e,n,i={})=>t(!1,e,n,{...i,limit:1})})),(async()=>{try{await a(w,C,O,A,b)}catch(e){console.error("Prostgles: Error within onReady: \n",e),o(e)}e(w)})()}))}))};class o{constructor(e,t){this.queue=[],this.isRunning=!1,this.func=e,this.groupBy=t}async run(e){const t=new Promise(((t,n)=>{const i={arguments:e,onResult:t};this.queue.push(i)})),n=async()=>{if(this.isRunning)return;this.isRunning=!0;const e=async e=>{if(e){const t=await this.func(...e.arguments);e.onResult(t)}};if(this.groupBy){const t=[],n=[];this.queue.forEach((async(e,i)=>{const r=this.groupBy(e.arguments);t.includes(r)||(t.push(r),n.push({index:i,item:e}))})),n.slice(0).reverse().forEach((e=>{this.queue.splice(e.index,1)})),await Promise.all(n.map((t=>e(t.item))))}else{const t=this.queue.shift();await e(t)}this.isRunning=!1,this.queue.length&&n()};return n(),t}}},792:function(e){var t;this||window,t=()=>(()=>{"use strict";var e={31:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CONTENT_TYPE_TO_EXT=void 0,t.CONTENT_TYPE_TO_EXT={"text/html":["html","htm","shtml"],"text/css":["css"],"text/csv":["csv"],"text/tsv":["tsv"],"text/xml":["xml"],"text/mathml":["mml"],"text/plain":["txt"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/x-component":["htc"],"image/gif":["gif"],"image/jpeg":["jpeg","jpg"],"image/png":["png"],"image/tiff":["tif","tiff"],"image/vnd.wap.wbmp":["wbmp"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-ms-bmp":["bmp"],"image/svg+xml":["svg"],"image/webp":["webp"],"application/sql":["sql"],"application/x-javascript":["js"],"application/atom+xml":["atom"],"application/rss+xml":["rss"],"application/java-archive":["jar","war","ear"],"application/mac-binhex40":["hqx"],"application/msword":["doc","docx"],"application/pdf":["pdf"],"application/postscript":["ps","eps","ai"],"application/rtf":["rtf"],"application/vnd.ms-excel":["xls","xlsx"],"application/vnd.ms-powerpoint":["ppt","pptx"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/x-7z-compressed":["7z"],"application/x-cocoa":["cco"],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-makeself":["run"],"application/x-perl":["pl","pm"],"application/x-pilot":["prc","pdb"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-sea":["sea"],"application/x-shockwave-flash":["swf"],"application/x-stuffit":["sit"],"application/x-tcl":["tcl","tk"],"application/x-x509-ca-cert":["der","pem","crt"],"application/x-xpinstall":["xpi"],"application/xhtml+xml":["xhtml"],"application/zip":["zip"],"application/octet-stream":["bin","exe","dll","deb","dmg","eot","iso","img","msi","msp","msm"],"audio/midi":["mid","midi","kar"],"audio/mpeg":["mp3"],"audio/ogg":["ogg"],"audio/x-realaudio":["ra"],"video/3gpp":["3gpp","3gp"],"video/mpeg":["mpeg","mpg"],"video/quicktime":["mov"],"video/x-flv":["flv"],"video/x-mng":["mng"],"video/x-ms-asf":["asx","asf"],"video/x-ms-wmv":["wmv"],"video/x-msvideo":["avi"],"video/mp4":["m4v","mp4"],"video/webm":["webm"]}},444:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.COMPLEX_FILTER_KEY=t.EXISTS_KEYS=t.GeomFilter_Funcs=t.GeomFilterKeys=t.ArrayFilterOperands=t.TextFilter_FullTextSearchFilterKeys=t.TextFilterFTSKeys=t.TextFilterKeys=t.JsonbFilterKeys=t.JsonbOperands=t.CompareInFilterKeys=t.CompareFilterKeys=void 0;const i=n(128);t.CompareFilterKeys=["=","$eq","<>",">","<",">=","<=","$eq","$ne","$gt","$gte","$lte"],t.CompareInFilterKeys=["$in","$nin"],t.JsonbOperands={"@>":{Operator:"@>","Right Operand Type":"jsonb",Description:"Does the left JSON value contain the right JSON path/value entries at the top level?",Example:'\'{"a":1, "b":2}\'::jsonb @> \'{"b":2}\'::jsonb'},"<@":{Operator:"<@","Right Operand Type":"jsonb",Description:"Are the left JSON path/value entries contained at the top level within the right JSON value?",Example:'\'{"b":2}\'::jsonb <@ \'{"a":1, "b":2}\'::jsonb'},"?":{Operator:"?","Right Operand Type":"text",Description:"Does the string exist as a top-level key within the JSON value?",Example:"'{\"a\":1, \"b\":2}'::jsonb ? 'b'"},"?|":{Operator:"?|","Right Operand Type":"text[]",Description:"Do any of these array strings exist as top-level keys?",Example:"'{\"a\":1, \"b\":2, \"c\":3}'::jsonb ?| array['b', 'c']"},"?&":{Operator:"?&","Right Operand Type":"text[]",Description:"Do all of these array strings exist as top-level keys?",Example:"'[\"a\", \"b\"]'::jsonb ?& array['a', 'b']"},"||":{Operator:"||","Right Operand Type":"jsonb",Description:"Concatenate two jsonb values into a new jsonb value",Example:'\'["a", "b"]\'::jsonb || \'["c", "d"]\'::jsonb'},"-":{Operator:"-","Right Operand Type":"integer",Description:"Delete the array element with specified index (Negative integers count from the end). Throws an error if top level container is not an array.",Example:'\'["a", "b"]\'::jsonb - 1'},"#-":{Operator:"#-","Right Operand Type":"text[]",Description:"Delete the field or element with specified path (for JSON arrays, negative integers count from the end)",Example:"'[\"a\", {\"b\":1}]'::jsonb #- '{1,b}'"},"@?":{Operator:"@?","Right Operand Type":"jsonpath",Description:"Does JSON path return any item for the specified JSON value?",Example:"'{\"a\":[1,2,3,4,5]}'::jsonb @? '$.a[*] ? (@ > 2)'"},"@@":{Operator:"@@","Right Operand Type":"jsonpath",Description:"Returns the result of JSON path predicate check for the specified JSON value. Only the first item of the result is taken into account. If the result is not Boolean, then null is returned.",Example:"'{\"a\":[1,2,3,4,5]}'::jsonb @@ '$.a[*] > 2'"}},t.JsonbFilterKeys=(0,i.getKeys)(t.JsonbOperands),t.TextFilterKeys=["$ilike","$like","$nilike","$nlike"],t.TextFilterFTSKeys=["@@","@>","<@","$contains","$containedBy"],t.TextFilter_FullTextSearchFilterKeys=["to_tsquery","plainto_tsquery","phraseto_tsquery","websearch_to_tsquery"],t.ArrayFilterOperands=["@>","<@","=","$eq","$contains","$containedBy","&&","$overlaps"],t.GeomFilterKeys=["~","~=","@","|&>","|>>",">>","=","<<|","<<","&>","&<|","&<","&&&","&&"],t.GeomFilter_Funcs=["ST_MakeEnvelope","st_makeenvelope","ST_MakePolygon","st_makepolygon"],t.EXISTS_KEYS=["$exists","$notExists","$existsJoined","$notExistsJoined"],t.COMPLEX_FILTER_KEY="$filter"},590:function(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.CONTENT_TYPE_TO_EXT=t.getKeys=t.isObject=t.isDefined=t.get=t.WAL=t.unpatchText=t.stableStringify=t.isEmpty=t.getTextPatch=t.omitKeys=t.pickKeys=t.asName=t.RULE_METHODS=t.CHANNELS=t.JOIN_PARAMS=t.JOIN_KEYS=t.TS_PG_Types=t._PG_geometric=t._PG_postgis=t._PG_interval=t._PG_date=t._PG_bool=t._PG_json=t._PG_numbers=t._PG_strings=void 0,t._PG_strings=["bpchar","char","varchar","text","citext","uuid","bytea","time","timetz","interval","name","cidr","inet","macaddr","macaddr8","int4range","int8range","numrange","tsvector"],t._PG_numbers=["int2","int4","int8","float4","float8","numeric","money","oid"],t._PG_json=["json","jsonb"],t._PG_bool=["bool"],t._PG_date=["date","timestamp","timestamptz"],t._PG_interval=["interval"],t._PG_postgis=["geometry","geography"],t._PG_geometric=["point","line","lseg","box","path","polygon","circle"];const s={string:[...t._PG_strings,...t._PG_date,...t._PG_geometric,...t._PG_postgis,"lseg"],number:t._PG_numbers,boolean:t._PG_bool,any:[...t._PG_json,...t._PG_interval]};t.TS_PG_Types={...s,"number[]":s.number.map((e=>`_${e}`)),"boolean[]":s.boolean.map((e=>`_${e}`)),"string[]":s.string.map((e=>`_${e}`)),"any[]":s.any.map((e=>`_${e}`))},t.JOIN_KEYS=["$innerJoin","$leftJoin"],t.JOIN_PARAMS=["select","filter","$path","$condition","offset","limit","orderBy"];const o="_psqlWS_.";t.CHANNELS={SCHEMA_CHANGED:o+"schema-changed",SCHEMA:o+"schema",DEFAULT:o,SQL:"_psqlWS_.sql",METHOD:"_psqlWS_.method",NOTICE_EV:"_psqlWS_.notice",LISTEN_EV:"_psqlWS_.listen",REGISTER:"_psqlWS_.register",LOGIN:"_psqlWS_.login",LOGOUT:"_psqlWS_.logout",AUTHGUARD:"_psqlWS_.authguard",CONNECTION:"_psqlWS_.connection",_preffix:o},t.RULE_METHODS={getColumns:["getColumns"],getInfo:["getInfo"],insert:["insert","upsert"],update:["update","upsert","updateBatch"],select:["findOne","find","count","size"],delete:["delete","remove"],sync:["sync","unsync"],subscribe:["unsubscribe","subscribe","subscribeOne"]};var a=n(128);Object.defineProperty(t,"asName",{enumerable:!0,get:function(){return a.asName}}),Object.defineProperty(t,"pickKeys",{enumerable:!0,get:function(){return a.pickKeys}}),Object.defineProperty(t,"omitKeys",{enumerable:!0,get:function(){return a.omitKeys}}),Object.defineProperty(t,"getTextPatch",{enumerable:!0,get:function(){return a.getTextPatch}}),Object.defineProperty(t,"isEmpty",{enumerable:!0,get:function(){return a.isEmpty}}),Object.defineProperty(t,"stableStringify",{enumerable:!0,get:function(){return a.stableStringify}}),Object.defineProperty(t,"unpatchText",{enumerable:!0,get:function(){return a.unpatchText}}),Object.defineProperty(t,"WAL",{enumerable:!0,get:function(){return a.WAL}}),Object.defineProperty(t,"get",{enumerable:!0,get:function(){return a.get}}),Object.defineProperty(t,"isDefined",{enumerable:!0,get:function(){return a.isDefined}}),Object.defineProperty(t,"isObject",{enumerable:!0,get:function(){return a.isObject}}),Object.defineProperty(t,"getKeys",{enumerable:!0,get:function(){return a.getKeys}}),r(n(444),t);var l=n(31);Object.defineProperty(t,"CONTENT_TYPE_TO_EXT",{enumerable:!0,get:function(){return l.CONTENT_TYPE_TO_EXT}}),r(n(929),t)},929:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getJSONBSchemaAsJSONSchema=t.DATA_TYPES=t.PrimitiveArrayTypes=t.PrimitiveTypes=void 0;const i=n(128);t.PrimitiveTypes=["boolean","number","integer","string","Date","time","timestamp","any"],t.PrimitiveArrayTypes=t.PrimitiveTypes.map((e=>`${e}[]`)),t.DATA_TYPES=[...t.PrimitiveTypes,...t.PrimitiveArrayTypes];const r=(e,t)=>{const{type:n,arrayOf:s,arrayOfType:o,description:a,nullable:l,oneOf:c,oneOfType:u,title:p,record:d,...m}="string"==typeof e?{type:e}:e;let f={};const h={...(m.enum||m.allowedValues?.length)&&{enum:m.allowedValues?.slice(0)??m.enum.slice(0)},...!!a&&{description:a},...!!p&&{title:p}};if(m.enum?.length&&(h.type=typeof m.enum[0]),"string"==typeof n||s||o){if(n&&"string"!=typeof n)throw"Not expected";f=s||o||n?.endsWith("[]")?{type:"array",items:s||o?r(s||{type:o}):n?.startsWith("any")?{type:void 0}:{type:n?.slice(0,-2),...m.allowedValues&&{enum:m.allowedValues.slice(0)}}}:{type:n}}else(0,i.isObject)(n)?f={type:"object",required:(0,i.getKeys)(n).filter((e=>{const t=n[e];return"string"==typeof t||!t.optional})),properties:(0,i.getKeys)(n).reduce(((e,t)=>({...e,[t]:r(n[t])})),{})}:c||u?f={oneOf:(c||u.map((e=>({type:e})))).map((e=>r(e)))}:d&&(f={type:"object",...d.values&&!d.keysEnum&&{additionalProperties:r(d.values)},...d.keysEnum&&{properties:d.keysEnum.reduce(((e,t)=>({...e,[t]:d.values?r(d.values):{type:{}}})),{})}});if(l){const e={type:"null"};f.oneOf?f.oneOf.push(e):f.enum&&!f.enum.includes(null)?f.enum.push(null):f={oneOf:[f,e]}}return{...t?{$id:t?.id,$schema:"https://json-schema.org/draft/2020-12/schema"}:void 0,...h,...f}};t.getJSONBSchemaAsJSONSchema=function(e,t,n){return r(n,{id:`${e}.${t}`})}},899:(e,t)=>{function n(e,t){var n=e[0],i=e[1],l=e[2],c=e[3];n=r(n,i,l,c,t[0],7,-680876936),c=r(c,n,i,l,t[1],12,-389564586),l=r(l,c,n,i,t[2],17,606105819),i=r(i,l,c,n,t[3],22,-1044525330),n=r(n,i,l,c,t[4],7,-176418897),c=r(c,n,i,l,t[5],12,1200080426),l=r(l,c,n,i,t[6],17,-1473231341),i=r(i,l,c,n,t[7],22,-45705983),n=r(n,i,l,c,t[8],7,1770035416),c=r(c,n,i,l,t[9],12,-1958414417),l=r(l,c,n,i,t[10],17,-42063),i=r(i,l,c,n,t[11],22,-1990404162),n=r(n,i,l,c,t[12],7,1804603682),c=r(c,n,i,l,t[13],12,-40341101),l=r(l,c,n,i,t[14],17,-1502002290),n=s(n,i=r(i,l,c,n,t[15],22,1236535329),l,c,t[1],5,-165796510),c=s(c,n,i,l,t[6],9,-1069501632),l=s(l,c,n,i,t[11],14,643717713),i=s(i,l,c,n,t[0],20,-373897302),n=s(n,i,l,c,t[5],5,-701558691),c=s(c,n,i,l,t[10],9,38016083),l=s(l,c,n,i,t[15],14,-660478335),i=s(i,l,c,n,t[4],20,-405537848),n=s(n,i,l,c,t[9],5,568446438),c=s(c,n,i,l,t[14],9,-1019803690),l=s(l,c,n,i,t[3],14,-187363961),i=s(i,l,c,n,t[8],20,1163531501),n=s(n,i,l,c,t[13],5,-1444681467),c=s(c,n,i,l,t[2],9,-51403784),l=s(l,c,n,i,t[7],14,1735328473),n=o(n,i=s(i,l,c,n,t[12],20,-1926607734),l,c,t[5],4,-378558),c=o(c,n,i,l,t[8],11,-2022574463),l=o(l,c,n,i,t[11],16,1839030562),i=o(i,l,c,n,t[14],23,-35309556),n=o(n,i,l,c,t[1],4,-1530992060),c=o(c,n,i,l,t[4],11,1272893353),l=o(l,c,n,i,t[7],16,-155497632),i=o(i,l,c,n,t[10],23,-1094730640),n=o(n,i,l,c,t[13],4,681279174),c=o(c,n,i,l,t[0],11,-358537222),l=o(l,c,n,i,t[3],16,-722521979),i=o(i,l,c,n,t[6],23,76029189),n=o(n,i,l,c,t[9],4,-640364487),c=o(c,n,i,l,t[12],11,-421815835),l=o(l,c,n,i,t[15],16,530742520),n=a(n,i=o(i,l,c,n,t[2],23,-995338651),l,c,t[0],6,-198630844),c=a(c,n,i,l,t[7],10,1126891415),l=a(l,c,n,i,t[14],15,-1416354905),i=a(i,l,c,n,t[5],21,-57434055),n=a(n,i,l,c,t[12],6,1700485571),c=a(c,n,i,l,t[3],10,-1894986606),l=a(l,c,n,i,t[10],15,-1051523),i=a(i,l,c,n,t[1],21,-2054922799),n=a(n,i,l,c,t[8],6,1873313359),c=a(c,n,i,l,t[15],10,-30611744),l=a(l,c,n,i,t[6],15,-1560198380),i=a(i,l,c,n,t[13],21,1309151649),n=a(n,i,l,c,t[4],6,-145523070),c=a(c,n,i,l,t[11],10,-1120210379),l=a(l,c,n,i,t[2],15,718787259),i=a(i,l,c,n,t[9],21,-343485551),e[0]=d(n,e[0]),e[1]=d(i,e[1]),e[2]=d(l,e[2]),e[3]=d(c,e[3])}function i(e,t,n,i,r,s){return t=d(d(t,e),d(i,s)),d(t<<r|t>>>32-r,n)}function r(e,t,n,r,s,o,a){return i(t&n|~t&r,e,t,s,o,a)}function s(e,t,n,r,s,o,a){return i(t&r|n&~r,e,t,s,o,a)}function o(e,t,n,r,s,o,a){return i(t^n^r,e,t,s,o,a)}function a(e,t,n,r,s,o,a){return i(n^(t|~r),e,t,s,o,a)}function l(e){var t,n=[];for(t=0;t<64;t+=4)n[t>>2]=e.charCodeAt(t)+(e.charCodeAt(t+1)<<8)+(e.charCodeAt(t+2)<<16)+(e.charCodeAt(t+3)<<24);return n}Object.defineProperty(t,"__esModule",{value:!0}),t.md5=t.md5cycle=void 0,t.md5cycle=n;var c="0123456789abcdef".split("");function u(e){for(var t="",n=0;n<4;n++)t+=c[e>>8*n+4&15]+c[e>>8*n&15];return t}function p(e){return function(e){for(var t=0;t<e.length;t++)e[t]=u(e[t]);return e.join("")}(function(e){var t,i=e.length,r=[1732584193,-271733879,-1732584194,271733878];for(t=64;t<=e.length;t+=64)n(r,l(e.substring(t-64,t)));e=e.substring(t-64);var s=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;t<e.length;t++)s[t>>2]|=e.charCodeAt(t)<<(t%4<<3);if(s[t>>2]|=128<<(t%4<<3),t>55)for(n(r,s),t=0;t<16;t++)s[t]=0;return s[14]=8*i,n(r,s),r}(e))}function d(e,t){return e+t&4294967295}t.md5=p,p("hello")},128:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getKeys=t.isDefined=t.isObject=t.get=t.isEmpty=t.WAL=t.unpatchText=t.getTextPatch=t.stableStringify=t.find=t.filter=t.omitKeys=t.pickKeys=t.asName=void 0;const i=n(899);function r(e,t=[],n=!1){let i=t;if(!i.length)return{};if(e&&i.length){let t={};return i.forEach((i=>{n&&void 0===e[i]||(t[i]=e[i])})),t}return e}function s(e,t){return e.filter((e=>Object.entries(t).every((([t,n])=>e[t]===n))))}function o(e){for(var t in e)return!1;return!0}function a(e){return Object.keys(e)}t.asName=function(e){if(null==e||!e.toString||!e.toString())throw"Expecting a non empty string";return`"${e.toString().replace(/"/g,'""')}"`},t.pickKeys=r,t.omitKeys=function(e,t){return r(e,a(e).filter((e=>!t.includes(e))))},t.filter=s,t.find=function(e,t){return s(e,t)[0]},t.stableStringify=function(e,t){t||(t={}),"function"==typeof t&&(t={cmp:t});var n,i="boolean"==typeof t.cycles&&t.cycles,r=t.cmp&&(n=t.cmp,function(e){return function(t,i){var r={key:t,value:e[t]},s={key:i,value:e[i]};return n(r,s)}}),s=[];return function e(t){if(t&&t.toJSON&&"function"==typeof t.toJSON&&(t=t.toJSON()),void 0!==t){if("number"==typeof t)return isFinite(t)?""+t:"null";if("object"!=typeof t)return JSON.stringify(t);var n,o;if(Array.isArray(t)){for(o="[",n=0;n<t.length;n++)n&&(o+=","),o+=e(t[n])||"null";return o+"]"}if(null===t)return"null";if(-1!==s.indexOf(t)){if(i)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var a=s.push(t)-1,l=Object.keys(t).sort(r&&r(t));for(o="",n=0;n<l.length;n++){var c=l[n],u=e(t[c]);u&&(o&&(o+=","),o+=JSON.stringify(c)+":"+u)}return s.splice(a,1),"{"+o+"}"}}(e)},t.getTextPatch=function(e,t){if(!(e&&t&&e.trim().length&&t.trim().length))return t;if(e===t)return{from:0,to:0,text:"",md5:(0,i.md5)(t)};function n(n=1){let i=n<1?-1:0,r=!1;for(;!r&&Math.abs(i)<=t.length;){const s=n<1?[i]:[0,i];e.slice(...s)!==t.slice(...s)?r=!0:i+=1*Math.sign(n)}return i}let r=n()-1,s=e.length+n(-1)+1,o=t.length+n(-1)+1;return{from:r,to:s,text:t.slice(r,o),md5:(0,i.md5)(t)}},t.unpatchText=function(e,t){if(!t||"string"==typeof t)return t;const{from:n,to:r,text:s,md5:o}=t;if(null===s||null===e)return s;let a=e.slice(0,n)+s+e.slice(r);if(o&&(0,i.md5)(a)!==o)throw"Patch text error: Could not match md5 hash: (original/result) \n"+e+"\n"+a;return a},t.WAL=class{constructor(e){if(this.changed={},this.sending={},this.sentHistory={},this.callbacks=[],this.sort=(e,t)=>{const{orderBy:n}=this.options;return n&&e&&t&&n.map((n=>{if(!(n.fieldName in e)||!(n.fieldName in t))throw"Replication error: \n some orderBy fields missing from data";let i=n.asc?e[n.fieldName]:t[n.fieldName],r=n.asc?t[n.fieldName]:e[n.fieldName],s=+i-+r,o=i<r?-1:i==r?0:1;return"number"===n.tsDataType&&Number.isFinite(s)?s:o})).find((e=>e))||0},this.isInHistory=e=>{if(!e)throw"Provide item";const t=e[this.options.synced_field];if(!Number.isFinite(+t))throw"Provided item Synced field value is missing/invalid ";const n=this.sentHistory[this.getIdStr(e)],i=n?.[this.options.synced_field];if(n){if(!Number.isFinite(+i))throw"Provided historic item Synced field value is missing/invalid";if(+i==+t)return!0}return!1},this.addData=e=>{o(this.changed)&&this.options.onSendStart&&this.options.onSendStart(),e.map((e=>{var t;const{initial:n,current:i,delta:r}={...e};if(!i)throw"Expecting { current: object, initial?: object }";const s=this.getIdStr(i);this.changed??(this.changed={}),(t=this.changed)[s]??(t[s]={initial:n,current:i,delta:r}),this.changed[s].current={...this.changed[s].current,...i},this.changed[s].delta={...this.changed[s].delta,...r}})),this.sendItems()},this.isOnSending=!1,this.isSendingTimeout=void 0,this.willDeleteHistory=void 0,this.sendItems=async()=>{const{DEBUG_MODE:e,onSend:t,onSendEnd:n,batch_size:i,throttle:r,historyAgeSeconds:s=2}=this.options;if(this.isSendingTimeout||this.sending&&!o(this.sending))return;if(!this.changed||o(this.changed))return;let a,l=[],c=[],u={};Object.keys(this.changed).sort(((e,t)=>this.sort(this.changed[e].current,this.changed[t].current))).slice(0,i).map((e=>{let t={...this.changed[e]};this.sending[e]={...t},c.push({...t}),u[e]={...t.current},delete this.changed[e]})),l=c.map((e=>{let t={};return Object.keys(e.current).map((n=>{const i=e.initial?.[n],r=e.current[n];var s,o;![this.options.synced_field,...this.options.id_fields].includes(n)&&((s=i)===(o=r)||(["number","string","boolean"].includes(typeof s)?s===o:JSON.stringify(s)===JSON.stringify(o)))||(t[n]=r)})),t})),e&&console.log(this.options.id," SENDING lr->",l[l.length-1]),this.isSendingTimeout||(this.isSendingTimeout=setTimeout((()=>{this.isSendingTimeout=void 0,o(this.changed)||this.sendItems()}),r)),this.isOnSending=!0;try{await t(l,c),s&&(this.sentHistory={...this.sentHistory,...u},this.willDeleteHistory||(this.willDeleteHistory=setTimeout((()=>{this.willDeleteHistory=void 0,this.sentHistory={}}),1e3*s)))}catch(e){a=e,console.error("WAL onSend failed:",e,l,c)}if(this.isOnSending=!1,this.callbacks.length){const e=Object.keys(this.sending);this.callbacks.forEach(((t,n)=>{t.idStrs=t.idStrs.filter((t=>e.includes(t))),t.idStrs.length||t.cb(a)})),this.callbacks=this.callbacks.filter((e=>e.idStrs.length))}this.sending={},e&&console.log(this.options.id," SENT lr->",l[l.length-1]),o(this.changed)?n&&n(l,c,a):this.sendItems()},this.options={...e},!this.options.orderBy){const{synced_field:t,id_fields:n}=e;this.options.orderBy=[t,...n.sort()].map((e=>({fieldName:e,tsDataType:e===t?"number":"string",asc:!0})))}}isSending(){const e=this.isOnSending||!(o(this.sending)&&o(this.changed));return this.options.DEBUG_MODE&&console.log(this.options.id," CHECKING isSending ->",e),e}getIdStr(e){return this.options.id_fields.sort().map((t=>`${e[t]||""}`)).join(".")}getIdObj(e){let t={};return this.options.id_fields.sort().map((n=>{t[n]=e[n]})),t}getDeltaObj(e){let t={};return Object.keys(e).map((n=>{this.options.id_fields.includes(n)||(t[n]=e[n])})),t}},t.isEmpty=o,t.get=function(e,t){let n=t,i=e;return e?("string"==typeof n&&(n=n.split(".")),n.reduce(((e,t)=>e&&e[t]?e[t]:void 0),i)):e},t.isObject=function(e){return Boolean(e&&"object"==typeof e&&!Array.isArray(e))},t.isDefined=function(e){return null!=e},t.getKeys=a}},t={};return function n(i){var r=t[i];if(void 0!==r)return r.exports;var s=t[i]={exports:{}};return e[i].call(s.exports,s,s.exports,n),s.exports}(590)})(),e.exports=t()}},t={},function n(i){var r=t[i];if(void 0!==r)return r.exports;var s=t[i]={exports:{}};return e[i].call(s.exports,s,s.exports,n),s.exports}(274);var e,t}));
1
+ !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var i in n)("object"==typeof exports?exports:e)[i]=n[i]}}(this||window,(()=>{return e={274:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.prostgles=t.asName=t.debug=void 0;const i=n(792);Object.defineProperty(t,"asName",{enumerable:!0,get:function(){return i.asName}});const r="DEBUG_SYNCEDTABLE",s="undefined"!=typeof window;t.debug=function(...e){s&&window[r]&&window[r](...e)},t.prostgles=function(e,n){const{socket:r,onReady:a,onDisconnect:l,onReconnect:c,onSchemaChange:u=!0,onReload:p}=e;if((0,t.debug)("prostgles",{initOpts:e}),u){let e;"function"==typeof u&&(e=u),r.removeAllListeners(i.CHANNELS.SCHEMA_CHANGED),e&&r.on(i.CHANNELS.SCHEMA_CHANGED,e)}const d=i.CHANNELS._preffix;let m,f={},h={},g={},y={},b=!1;function O(e,n,i){return(0,t.debug)("_unsubscribe",{channelName:e,handler:i}),new Promise(((t,s)=>{f[e]?(f[e].handlers=f[e].handlers.filter((e=>e!==i)),f[e].handlers.length||(r.emit(n,{},((e,t)=>{e&&console.error(e)})),r.removeListener(e,f[e].onCall),delete f[e]),t(!0)):t(!0)}))}function v({tableName:e,command:t,param1:n,param2:i},s){return new Promise(((o,a)=>{r.emit(d,{tableName:e,command:t,param1:n,param2:i},((e,t)=>{if(e)console.error(e),a(e);else if(t){const{id_fields:e,synced_field:n,channelName:i}=t;r.emit(i,{onSyncRequest:s({})},(e=>{console.log(e)})),o({id_fields:e,synced_field:n,channelName:i})}}))}))}function _({tableName:e,command:t,param1:n,param2:i}){return new Promise(((s,o)=>{r.emit(d,{tableName:e,command:t,param1:n,param2:i},((e,t)=>{e?(console.error(e),o(e)):t&&s(t)}))}))}const S=new o((async function({tableName:e,command:n,param1:i,param2:s},o){const{onPullRequest:a,onSyncRequest:l,onUpdates:c}=o;function u(e){return Object.freeze({unsync:function(){!function(e,n){(0,t.debug)("_unsync",{channelName:e,triggers:n}),new Promise(((t,i)=>{g[e]&&(g[e].triggers=g[e].triggers.filter((e=>e.onPullRequest!==n.onPullRequest&&e.onSyncRequest!==n.onSyncRequest&&e.onUpdates!==n.onUpdates)),g[e].triggers.length||(r.emit(e+"unsync",{},((e,n)=>{e?i(e):t(n)})),r.removeListener(e,g[e].onCall),delete g[e]))}))}(e,o)},syncData:function(t,n,i){r.emit(e,{onSyncRequest:{...l({}),...{data:t}||{},...{deleted:n}||{}}},i?e=>{i(e)}:null)}})}const p=Object.keys(g).find((t=>{let r=g[t];return r&&r.tableName===e&&r.command===n&&JSON.stringify(r.param1||{})===JSON.stringify(i||{})&&JSON.stringify(r.param2||{})===JSON.stringify(s||{})}));if(p)return g[p].triggers.push(o),u(p);{const d=await v({tableName:e,command:n,param1:i,param2:s},l),{channelName:m,synced_field:f,id_fields:h}=d;function y(t,n){t&&g[m]&&g[m].triggers.map((({onUpdates:i,onSyncRequest:r,onPullRequest:s})=>{t.data?Promise.resolve(i(t)).then((()=>{n&&n({ok:!0})})).catch((t=>{n?n({err:t}):console.error(e+" onUpdates error",t)})):t.onSyncRequest?Promise.resolve(r(t.onSyncRequest)).then((e=>n({onSyncRequest:e}))).catch((t=>{n?n({err:t}):console.error(e+" onSyncRequest error",t)})):t.onPullRequest?Promise.resolve(s(t.onPullRequest)).then((e=>{n({data:e})})).catch((t=>{n?n({err:t}):console.error(e+" onPullRequest error",t)})):console.log("unexpected response")}))}return g[m]={tableName:e,command:n,param1:i,param2:s,triggers:[o],syncInfo:d,onCall:y},r.on(m,y),u(m)}}),(([{tableName:e}])=>e)),N=new o((async function(e,{tableName:t,command:n,param1:i,param2:s},o,a){function l(n,r){let s={unsubscribe:function(){return O(n,r,o)},filter:{...i}};return e[t].update&&(s={...s,update:function(n,r){return e[t].update(i,n,r)}}),e[t].delete&&(s={...s,delete:function(n){return e[t].delete(i,n)}}),Object.freeze(s)}const c=Object.entries(f).find((([e])=>{let r=f[e];return r&&r.tableName===t&&r.command===n&&JSON.stringify(r.param1||{})===JSON.stringify(i||{})&&JSON.stringify(r.param2||{})===JSON.stringify(s||{})}));if(c){const e=c[0];return c[1].handlers.push(o),c[1].errorHandlers.push(a),setTimeout((()=>{var t,n;o&&(null===(t=null==f?void 0:f[e])||void 0===t?void 0:t.lastData)&&o(null===(n=null==f?void 0:f[e])||void 0===n?void 0:n.lastData)}),10),l(e,c[1].unsubChannel)}const{channelName:u,channelNameReady:p,channelNameUnsubscribe:d}=await _({tableName:t,command:n,param1:i,param2:s}),m=function(e,t){const n=f[u];n?e.data?(n.lastData=e.data,n.handlers.forEach((t=>{t(e.data)}))):e.err?n.errorHandlers.forEach((t=>{null==t||t(e.err)})):console.error("INTERNAL ERROR: Unexpected data format from subscription: ",e):console.warn("Orphaned subscription: ",u)},h=a||function(e){console.error(`Uncaught error within running subscription \n ${u}`,e)};return r.on(u,m),f[u]={lastData:void 0,tableName:t,command:n,param1:i,param2:s,onCall:m,unsubChannel:d,handlers:[o],errorHandlers:[h],destroy:()=>{f[u]&&(Object.values(f[u]).map((e=>{e&&e.handlers&&e.handlers.map((e=>O(u,d,e)))})),delete f[u])}},r.emit(p,{now:Date.now()}),l(u,d)}),(([e,{tableName:t}])=>t));async function x(e,t,n,i){return N.run([e,t,n,i])}return new Promise(((e,o)=>{r.removeAllListeners(i.CHANNELS.CONNECTION),r.on(i.CHANNELS.CONNECTION,(e=>(o(e),"ok"))),l&&r.on("disconnect",l),r.on(i.CHANNELS.SCHEMA,(({schema:l,methods:u,tableSchema:O,auth:N,rawSQL:E,joinTables:j=[],err:T})=>{if((0,t.debug)("destroySyncs",{subscriptions:f,syncedTables:h}),Object.values(f).map((e=>e.destroy())),f={},g={},Object.values(h).map((e=>{e&&e.destroy&&e.destroy()})),h={},b&&c&&(c(r,T),T))return void console.error(T);if(T)throw o(T),T;b=!0;let w=JSON.parse(JSON.stringify(l)),P=JSON.parse(JSON.stringify(u)),C={},A={};if(N){if(N.pathGuard&&s){const e=e=>{var t,n;(null==e?void 0:e.shouldReload)&&(p?p():"undefined"!=typeof window&&(null===(n=null===(t=null===window||void 0===window?void 0:window.location)||void 0===t?void 0:t.reload)||void 0===n||n.call(t)))};r.emit(i.CHANNELS.AUTHGUARD,JSON.stringify(window.location),((t,n)=>{e(n)})),r.removeAllListeners(i.CHANNELS.AUTHGUARD),r.on(i.CHANNELS.AUTHGUARD,(t=>{e(t)}))}A={...N},[i.CHANNELS.LOGIN,i.CHANNELS.LOGOUT,i.CHANNELS.REGISTER].map((e=>{N[e]&&(A[e]=function(t){return new Promise(((n,i)=>{r.emit(d+e,t,((e,t)=>{e?i(e):n(t)}))}))})}))}P.map((e=>{const t="string"==typeof e,n=function(...e){return new Promise(((t,n)=>{r.emit(i.CHANNELS.METHOD,{method:s,params:e},((e,i)=>{e?n(e):t(i)}))}))},s=t?e:e.name;C[s]=t?n:{...e,run:n}})),C=Object.freeze(C),E&&(w.sql=function(e,t,n){return new Promise(((s,o)=>{r.emit(i.CHANNELS.SQL,{query:e,params:t,options:n},((e,t)=>{if(e)o(e);else if(n&&"noticeSubscription"===n.returnType&&t&&Object.keys(t).sort().join()===["socketChannel","socketUnsubChannel"].sort().join()&&!Object.values(t).find((e=>"string"!=typeof e))){const e=t,n=t=>(((e,t)=>{m=m||{config:t,listeners:[]},m.listeners.length||(r.removeAllListeners(t.socketChannel),r.on(t.socketChannel,(e=>{m&&m.listeners&&m.listeners.length?m.listeners.map((t=>{t(e)})):r.emit(t.socketUnsubChannel,{})}))),m.listeners.push(e)})(t,e),{...e,removeListener:()=>(e=>{m&&(m.listeners=m.listeners.filter((t=>t!==e)),!m.listeners.length&&m.config&&m.config.socketUnsubChannel&&r&&r.emit(m.config.socketUnsubChannel,{}))})(t)}),i={...e,addListener:n};s(i)}else if(n&&n.returnType&&"statement"===n.returnType||!t||Object.keys(t).sort().join()!==["socketChannel","socketUnsubChannel","notifChannel"].sort().join()||Object.values(t).find((e=>"string"!=typeof e)))s(t);else{const e=e=>(((e,t)=>{var n;y=y||{},y[t.notifChannel]?null===(n=y[t.notifChannel])||void 0===n||n.listeners.push(e):(y[t.notifChannel]={config:t,listeners:[e]},r.removeAllListeners(t.socketChannel),r.on(t.socketChannel,(e=>{var n,i;(null===(n=y[t.notifChannel])||void 0===n?void 0:n.listeners.length)?y[t.notifChannel].listeners.map((t=>{t(e)})):r.emit(null===(i=y[t.notifChannel])||void 0===i?void 0:i.config.socketUnsubChannel,{})})))})(e,t),{...t,removeListener:()=>((e,t)=>{const n=y[t.notifChannel];n&&(n.listeners=n.listeners.filter((t=>t!==e)),!n.listeners.length&&n.config&&n.config.socketUnsubChannel&&r&&(r.emit(n.config.socketUnsubChannel,{}),delete y[t.notifChannel]))})(e,t)}),n={...t,addListener:e};s(n)}}))}))});const k=e=>"[object Object]"===Object.prototype.toString.call(e),J=(e,t,n,i)=>{if(!k(e)||!k(t)||"function"!=typeof n||i&&"function"!=typeof i)throw"Expecting: ( basicFilter<object>, options<object>, onChange<function> , onError?<function>) but got something else"},D=["subscribe","subscribeOne"];(0,i.getKeys)(w).forEach((e=>{Object.keys(w[e]).sort(((e,t)=>D.includes(e)-D.includes(t))).forEach((t=>{if(["find","findOne"].includes(t)&&(w[e].getJoinedTables=function(){return(j||[]).filter((t=>Array.isArray(t)&&t.includes(e))).flat().filter((t=>t!==e))}),"sync"===t){if(w[e]._syncInfo={...w[e][t]},n){w[e].getSync=(t,i={})=>n.create({name:e,filter:t,db:w,...i});const t=async(t={},i={},r)=>{const s=`${e}.${JSON.stringify(t)}.${JSON.stringify(i)}`;return h[s]||(h[s]=await n.create({...i,name:e,filter:t,db:w,onError:r})),h[s]};w[e].sync=async(e,n={handlesOnData:!0,select:"*"},i,r)=>{J(e,n,i,r);const s=await t(e,n,r);return await s.sync(i,n.handlesOnData)},w[e].syncOne=async(e,n={handlesOnData:!0},i,r)=>{J(e,n,i,r);const s=await t(e,n,r);return await s.syncOne(e,i,n.handlesOnData)}}w[e]._sync=function(n,i,r){return async function(e,t){return S.run([e,t])}({tableName:e,command:t,param1:n,param2:i},r)}}else if(D.includes(t)){const n=function(n,i,r,s){return J(n,i,r,s),x(w,{tableName:e,command:t,param1:n,param2:i},r,s)};w[e][t]=n;const i="subscribeOne";w[e][t+"Hook"]=function(e,r,s){return{start:o=>n(e,r,t!==i?o:e=>{o(e[0])},s),args:[e,r,s]}},t!==i&&D.includes(i)||(w[e][i]=function(n,i,r,s){return J(n,i,r,s),x(w,{tableName:e,command:t,param1:n,param2:i},(e=>{r(e[0])}),s)})}else w[e][t]=function(n,i,s){return new Promise(((o,a)=>{r.emit(d,{tableName:e,command:t,param1:n,param2:i,param3:s},((e,t)=>{e?a(e):o(t)}))}))}}))})),f&&Object.keys(f).length&&Object.keys(f).map((async e=>{try{let t=f[e];await _(t),r.on(e,t.onCall)}catch(e){console.error("There was an issue reconnecting old subscriptions",e)}})),g&&Object.keys(g).length&&(0,i.getKeys)(g).filter((e=>{var t;return null===(t=g[e])||void 0===t?void 0:t.triggers.length})).map((async e=>{try{let t=g[e];await v(t,t.triggers[0].onSyncRequest),r.on(e,t.onCall)}catch(e){console.error("There was an issue reconnecting olf subscriptions",e)}})),j.flat().map((e=>{function t(t=!0,n,i,r){return{[t?"$leftJoin":"$innerJoin"]:e,filter:n,select:i,...r}}w.innerJoin=w.innerJoin||{},w.leftJoin=w.leftJoin||{},w.innerJoinOne=w.innerJoinOne||{},w.leftJoinOne=w.leftJoinOne||{},w.leftJoin[e]=(e,n,i={})=>t(!0,e,n,i),w.innerJoin[e]=(e,n,i={})=>t(!1,e,n,i),w.leftJoinOne[e]=(e,n,i={})=>t(!0,e,n,{...i,limit:1}),w.innerJoinOne[e]=(e,n,i={})=>t(!1,e,n,{...i,limit:1})})),(async()=>{try{await a(w,C,O,A,b)}catch(e){console.error("Prostgles: Error within onReady: \n",e),o(e)}e(w)})()}))}))};class o{constructor(e,t){this.queue=[],this.isRunning=!1,this.func=e,this.groupBy=t}async run(e){const t=new Promise(((t,n)=>{const i={arguments:e,onResult:t};this.queue.push(i)})),n=async()=>{if(this.isRunning)return;this.isRunning=!0;const e=async e=>{if(e){const t=await this.func(...e.arguments);e.onResult(t)}};if(this.groupBy){const t=[],n=[];this.queue.forEach((async(e,i)=>{const r=this.groupBy(e.arguments);t.includes(r)||(t.push(r),n.push({index:i,item:e}))})),n.slice(0).reverse().forEach((e=>{this.queue.splice(e.index,1)})),await Promise.all(n.map((t=>e(t.item))))}else{const t=this.queue.shift();await e(t)}this.isRunning=!1,this.queue.length&&n()};return n(),t}}},792:function(e){var t;this||window,t=()=>(()=>{"use strict";var e={31:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CONTENT_TYPE_TO_EXT=void 0,t.CONTENT_TYPE_TO_EXT={"text/html":["html","htm","shtml"],"text/css":["css"],"text/csv":["csv"],"text/tsv":["tsv"],"text/xml":["xml"],"text/mathml":["mml"],"text/plain":["txt"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/x-component":["htc"],"image/gif":["gif"],"image/jpeg":["jpeg","jpg"],"image/png":["png"],"image/tiff":["tif","tiff"],"image/vnd.wap.wbmp":["wbmp"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-ms-bmp":["bmp"],"image/svg+xml":["svg"],"image/webp":["webp"],"application/sql":["sql"],"application/x-javascript":["js"],"application/atom+xml":["atom"],"application/rss+xml":["rss"],"application/java-archive":["jar","war","ear"],"application/mac-binhex40":["hqx"],"application/msword":["doc","docx"],"application/pdf":["pdf"],"application/postscript":["ps","eps","ai"],"application/rtf":["rtf"],"application/vnd.ms-excel":["xls","xlsx"],"application/vnd.ms-powerpoint":["ppt","pptx"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/x-7z-compressed":["7z"],"application/x-cocoa":["cco"],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-makeself":["run"],"application/x-perl":["pl","pm"],"application/x-pilot":["prc","pdb"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-sea":["sea"],"application/x-shockwave-flash":["swf"],"application/x-stuffit":["sit"],"application/x-tcl":["tcl","tk"],"application/x-x509-ca-cert":["der","pem","crt"],"application/x-xpinstall":["xpi"],"application/xhtml+xml":["xhtml"],"application/zip":["zip"],"application/octet-stream":["bin","exe","dll","deb","dmg","eot","iso","img","msi","msp","msm"],"audio/midi":["mid","midi","kar"],"audio/mpeg":["mp3"],"audio/ogg":["ogg"],"audio/x-realaudio":["ra"],"video/3gpp":["3gpp","3gp"],"video/mpeg":["mpeg","mpg"],"video/quicktime":["mov"],"video/x-flv":["flv"],"video/x-mng":["mng"],"video/x-ms-asf":["asx","asf"],"video/x-ms-wmv":["wmv"],"video/x-msvideo":["avi"],"video/mp4":["m4v","mp4"],"video/webm":["webm"]}},444:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.COMPLEX_FILTER_KEY=t.EXISTS_KEYS=t.GeomFilter_Funcs=t.GeomFilterKeys=t.ArrayFilterOperands=t.TextFilter_FullTextSearchFilterKeys=t.TextFilterFTSKeys=t.TextFilterKeys=t.JsonbFilterKeys=t.JsonbOperands=t.CompareInFilterKeys=t.CompareFilterKeys=void 0;const i=n(128);t.CompareFilterKeys=["=","$eq","<>",">","<",">=","<=","$eq","$ne","$gt","$gte","$lte"],t.CompareInFilterKeys=["$in","$nin"],t.JsonbOperands={"@>":{Operator:"@>","Right Operand Type":"jsonb",Description:"Does the left JSON value contain the right JSON path/value entries at the top level?",Example:'\'{"a":1, "b":2}\'::jsonb @> \'{"b":2}\'::jsonb'},"<@":{Operator:"<@","Right Operand Type":"jsonb",Description:"Are the left JSON path/value entries contained at the top level within the right JSON value?",Example:'\'{"b":2}\'::jsonb <@ \'{"a":1, "b":2}\'::jsonb'},"?":{Operator:"?","Right Operand Type":"text",Description:"Does the string exist as a top-level key within the JSON value?",Example:"'{\"a\":1, \"b\":2}'::jsonb ? 'b'"},"?|":{Operator:"?|","Right Operand Type":"text[]",Description:"Do any of these array strings exist as top-level keys?",Example:"'{\"a\":1, \"b\":2, \"c\":3}'::jsonb ?| array['b', 'c']"},"?&":{Operator:"?&","Right Operand Type":"text[]",Description:"Do all of these array strings exist as top-level keys?",Example:"'[\"a\", \"b\"]'::jsonb ?& array['a', 'b']"},"||":{Operator:"||","Right Operand Type":"jsonb",Description:"Concatenate two jsonb values into a new jsonb value",Example:'\'["a", "b"]\'::jsonb || \'["c", "d"]\'::jsonb'},"-":{Operator:"-","Right Operand Type":"integer",Description:"Delete the array element with specified index (Negative integers count from the end). Throws an error if top level container is not an array.",Example:'\'["a", "b"]\'::jsonb - 1'},"#-":{Operator:"#-","Right Operand Type":"text[]",Description:"Delete the field or element with specified path (for JSON arrays, negative integers count from the end)",Example:"'[\"a\", {\"b\":1}]'::jsonb #- '{1,b}'"},"@?":{Operator:"@?","Right Operand Type":"jsonpath",Description:"Does JSON path return any item for the specified JSON value?",Example:"'{\"a\":[1,2,3,4,5]}'::jsonb @? '$.a[*] ? (@ > 2)'"},"@@":{Operator:"@@","Right Operand Type":"jsonpath",Description:"Returns the result of JSON path predicate check for the specified JSON value. Only the first item of the result is taken into account. If the result is not Boolean, then null is returned.",Example:"'{\"a\":[1,2,3,4,5]}'::jsonb @@ '$.a[*] > 2'"}},t.JsonbFilterKeys=(0,i.getKeys)(t.JsonbOperands),t.TextFilterKeys=["$ilike","$like","$nilike","$nlike"],t.TextFilterFTSKeys=["@@","@>","<@","$contains","$containedBy"],t.TextFilter_FullTextSearchFilterKeys=["to_tsquery","plainto_tsquery","phraseto_tsquery","websearch_to_tsquery"],t.ArrayFilterOperands=["@>","<@","=","$eq","$contains","$containedBy","&&","$overlaps"],t.GeomFilterKeys=["~","~=","@","|&>","|>>",">>","=","<<|","<<","&>","&<|","&<","&&&","&&"],t.GeomFilter_Funcs=["ST_MakeEnvelope","st_makeenvelope","ST_MakePolygon","st_makepolygon"],t.EXISTS_KEYS=["$exists","$notExists","$existsJoined","$notExistsJoined"],t.COMPLEX_FILTER_KEY="$filter"},590:function(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.CONTENT_TYPE_TO_EXT=t.getKeys=t.isObject=t.isDefined=t.get=t.WAL=t.unpatchText=t.stableStringify=t.isEmpty=t.getTextPatch=t.omitKeys=t.pickKeys=t.asName=t.RULE_METHODS=t.CHANNELS=t.JOIN_PARAMS=t.JOIN_KEYS=t.TS_PG_Types=t._PG_geometric=t._PG_postgis=t._PG_interval=t._PG_date=t._PG_bool=t._PG_json=t._PG_numbers=t._PG_strings=void 0,t._PG_strings=["bpchar","char","varchar","text","citext","uuid","bytea","time","timetz","interval","name","cidr","inet","macaddr","macaddr8","int4range","int8range","numrange","tsvector"],t._PG_numbers=["int2","int4","int8","float4","float8","numeric","money","oid"],t._PG_json=["json","jsonb"],t._PG_bool=["bool"],t._PG_date=["date","timestamp","timestamptz"],t._PG_interval=["interval"],t._PG_postgis=["geometry","geography"],t._PG_geometric=["point","line","lseg","box","path","polygon","circle"];const s={string:[...t._PG_strings,...t._PG_date,...t._PG_geometric,...t._PG_postgis,"lseg"],number:t._PG_numbers,boolean:t._PG_bool,any:[...t._PG_json,...t._PG_interval]};t.TS_PG_Types={...s,"number[]":s.number.map((e=>`_${e}`)),"boolean[]":s.boolean.map((e=>`_${e}`)),"string[]":s.string.map((e=>`_${e}`)),"any[]":s.any.map((e=>`_${e}`))},t.JOIN_KEYS=["$innerJoin","$leftJoin"],t.JOIN_PARAMS=["select","filter","$path","$condition","offset","limit","orderBy"];const o="_psqlWS_.";t.CHANNELS={SCHEMA_CHANGED:o+"schema-changed",SCHEMA:o+"schema",DEFAULT:o,SQL:"_psqlWS_.sql",METHOD:"_psqlWS_.method",NOTICE_EV:"_psqlWS_.notice",LISTEN_EV:"_psqlWS_.listen",REGISTER:"_psqlWS_.register",LOGIN:"_psqlWS_.login",LOGOUT:"_psqlWS_.logout",AUTHGUARD:"_psqlWS_.authguard",CONNECTION:"_psqlWS_.connection",_preffix:o},t.RULE_METHODS={getColumns:["getColumns"],getInfo:["getInfo"],insert:["insert","upsert"],update:["update","upsert","updateBatch"],select:["findOne","find","count","size"],delete:["delete","remove"],sync:["sync","unsync"],subscribe:["unsubscribe","subscribe","subscribeOne"]};var a=n(128);Object.defineProperty(t,"asName",{enumerable:!0,get:function(){return a.asName}}),Object.defineProperty(t,"pickKeys",{enumerable:!0,get:function(){return a.pickKeys}}),Object.defineProperty(t,"omitKeys",{enumerable:!0,get:function(){return a.omitKeys}}),Object.defineProperty(t,"getTextPatch",{enumerable:!0,get:function(){return a.getTextPatch}}),Object.defineProperty(t,"isEmpty",{enumerable:!0,get:function(){return a.isEmpty}}),Object.defineProperty(t,"stableStringify",{enumerable:!0,get:function(){return a.stableStringify}}),Object.defineProperty(t,"unpatchText",{enumerable:!0,get:function(){return a.unpatchText}}),Object.defineProperty(t,"WAL",{enumerable:!0,get:function(){return a.WAL}}),Object.defineProperty(t,"get",{enumerable:!0,get:function(){return a.get}}),Object.defineProperty(t,"isDefined",{enumerable:!0,get:function(){return a.isDefined}}),Object.defineProperty(t,"isObject",{enumerable:!0,get:function(){return a.isObject}}),Object.defineProperty(t,"getKeys",{enumerable:!0,get:function(){return a.getKeys}}),r(n(444),t);var l=n(31);Object.defineProperty(t,"CONTENT_TYPE_TO_EXT",{enumerable:!0,get:function(){return l.CONTENT_TYPE_TO_EXT}}),r(n(929),t)},929:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getJSONBSchemaAsJSONSchema=t.DATA_TYPES=t.PrimitiveArrayTypes=t.PrimitiveTypes=void 0;const i=n(128);t.PrimitiveTypes=["boolean","number","integer","string","Date","time","timestamp","any"],t.PrimitiveArrayTypes=t.PrimitiveTypes.map((e=>`${e}[]`)),t.DATA_TYPES=[...t.PrimitiveTypes,...t.PrimitiveArrayTypes];const r=(e,t)=>{const{type:n,arrayOf:s,arrayOfType:o,description:a,nullable:l,oneOf:c,oneOfType:u,title:p,record:d,...m}="string"==typeof e?{type:e}:e;let f={};const h={...(m.enum||m.allowedValues?.length)&&{enum:m.allowedValues?.slice(0)??m.enum.slice(0)},...!!a&&{description:a},...!!p&&{title:p}};if(m.enum?.length&&(h.type=typeof m.enum[0]),"string"==typeof n||s||o){if(n&&"string"!=typeof n)throw"Not expected";f=s||o||n?.endsWith("[]")?{type:"array",items:s||o?r(s||{type:o}):n?.startsWith("any")?{type:void 0}:{type:n?.slice(0,-2),...m.allowedValues&&{enum:m.allowedValues.slice(0)}}}:{type:n}}else(0,i.isObject)(n)?f={type:"object",required:(0,i.getKeys)(n).filter((e=>{const t=n[e];return"string"==typeof t||!t.optional})),properties:(0,i.getKeys)(n).reduce(((e,t)=>({...e,[t]:r(n[t])})),{})}:c||u?f={oneOf:(c||u.map((e=>({type:e})))).map((e=>r(e)))}:d&&(f={type:"object",...d.values&&!d.keysEnum&&{additionalProperties:r(d.values)},...d.keysEnum&&{properties:d.keysEnum.reduce(((e,t)=>({...e,[t]:d.values?r(d.values):{type:{}}})),{})}});if(l){const e={type:"null"};f.oneOf?f.oneOf.push(e):f.enum&&!f.enum.includes(null)?f.enum.push(null):f={oneOf:[f,e]}}return{...t?{$id:t?.id,$schema:"https://json-schema.org/draft/2020-12/schema"}:void 0,...h,...f}};t.getJSONBSchemaAsJSONSchema=function(e,t,n){return r(n,{id:`${e}.${t}`})}},899:(e,t)=>{function n(e,t){var n=e[0],i=e[1],l=e[2],c=e[3];n=r(n,i,l,c,t[0],7,-680876936),c=r(c,n,i,l,t[1],12,-389564586),l=r(l,c,n,i,t[2],17,606105819),i=r(i,l,c,n,t[3],22,-1044525330),n=r(n,i,l,c,t[4],7,-176418897),c=r(c,n,i,l,t[5],12,1200080426),l=r(l,c,n,i,t[6],17,-1473231341),i=r(i,l,c,n,t[7],22,-45705983),n=r(n,i,l,c,t[8],7,1770035416),c=r(c,n,i,l,t[9],12,-1958414417),l=r(l,c,n,i,t[10],17,-42063),i=r(i,l,c,n,t[11],22,-1990404162),n=r(n,i,l,c,t[12],7,1804603682),c=r(c,n,i,l,t[13],12,-40341101),l=r(l,c,n,i,t[14],17,-1502002290),n=s(n,i=r(i,l,c,n,t[15],22,1236535329),l,c,t[1],5,-165796510),c=s(c,n,i,l,t[6],9,-1069501632),l=s(l,c,n,i,t[11],14,643717713),i=s(i,l,c,n,t[0],20,-373897302),n=s(n,i,l,c,t[5],5,-701558691),c=s(c,n,i,l,t[10],9,38016083),l=s(l,c,n,i,t[15],14,-660478335),i=s(i,l,c,n,t[4],20,-405537848),n=s(n,i,l,c,t[9],5,568446438),c=s(c,n,i,l,t[14],9,-1019803690),l=s(l,c,n,i,t[3],14,-187363961),i=s(i,l,c,n,t[8],20,1163531501),n=s(n,i,l,c,t[13],5,-1444681467),c=s(c,n,i,l,t[2],9,-51403784),l=s(l,c,n,i,t[7],14,1735328473),n=o(n,i=s(i,l,c,n,t[12],20,-1926607734),l,c,t[5],4,-378558),c=o(c,n,i,l,t[8],11,-2022574463),l=o(l,c,n,i,t[11],16,1839030562),i=o(i,l,c,n,t[14],23,-35309556),n=o(n,i,l,c,t[1],4,-1530992060),c=o(c,n,i,l,t[4],11,1272893353),l=o(l,c,n,i,t[7],16,-155497632),i=o(i,l,c,n,t[10],23,-1094730640),n=o(n,i,l,c,t[13],4,681279174),c=o(c,n,i,l,t[0],11,-358537222),l=o(l,c,n,i,t[3],16,-722521979),i=o(i,l,c,n,t[6],23,76029189),n=o(n,i,l,c,t[9],4,-640364487),c=o(c,n,i,l,t[12],11,-421815835),l=o(l,c,n,i,t[15],16,530742520),n=a(n,i=o(i,l,c,n,t[2],23,-995338651),l,c,t[0],6,-198630844),c=a(c,n,i,l,t[7],10,1126891415),l=a(l,c,n,i,t[14],15,-1416354905),i=a(i,l,c,n,t[5],21,-57434055),n=a(n,i,l,c,t[12],6,1700485571),c=a(c,n,i,l,t[3],10,-1894986606),l=a(l,c,n,i,t[10],15,-1051523),i=a(i,l,c,n,t[1],21,-2054922799),n=a(n,i,l,c,t[8],6,1873313359),c=a(c,n,i,l,t[15],10,-30611744),l=a(l,c,n,i,t[6],15,-1560198380),i=a(i,l,c,n,t[13],21,1309151649),n=a(n,i,l,c,t[4],6,-145523070),c=a(c,n,i,l,t[11],10,-1120210379),l=a(l,c,n,i,t[2],15,718787259),i=a(i,l,c,n,t[9],21,-343485551),e[0]=d(n,e[0]),e[1]=d(i,e[1]),e[2]=d(l,e[2]),e[3]=d(c,e[3])}function i(e,t,n,i,r,s){return t=d(d(t,e),d(i,s)),d(t<<r|t>>>32-r,n)}function r(e,t,n,r,s,o,a){return i(t&n|~t&r,e,t,s,o,a)}function s(e,t,n,r,s,o,a){return i(t&r|n&~r,e,t,s,o,a)}function o(e,t,n,r,s,o,a){return i(t^n^r,e,t,s,o,a)}function a(e,t,n,r,s,o,a){return i(n^(t|~r),e,t,s,o,a)}function l(e){var t,n=[];for(t=0;t<64;t+=4)n[t>>2]=e.charCodeAt(t)+(e.charCodeAt(t+1)<<8)+(e.charCodeAt(t+2)<<16)+(e.charCodeAt(t+3)<<24);return n}Object.defineProperty(t,"__esModule",{value:!0}),t.md5=t.md5cycle=void 0,t.md5cycle=n;var c="0123456789abcdef".split("");function u(e){for(var t="",n=0;n<4;n++)t+=c[e>>8*n+4&15]+c[e>>8*n&15];return t}function p(e){return function(e){for(var t=0;t<e.length;t++)e[t]=u(e[t]);return e.join("")}(function(e){var t,i=e.length,r=[1732584193,-271733879,-1732584194,271733878];for(t=64;t<=e.length;t+=64)n(r,l(e.substring(t-64,t)));e=e.substring(t-64);var s=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;t<e.length;t++)s[t>>2]|=e.charCodeAt(t)<<(t%4<<3);if(s[t>>2]|=128<<(t%4<<3),t>55)for(n(r,s),t=0;t<16;t++)s[t]=0;return s[14]=8*i,n(r,s),r}(e))}function d(e,t){return e+t&4294967295}t.md5=p,p("hello")},128:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getKeys=t.isDefined=t.isObject=t.get=t.isEmpty=t.WAL=t.unpatchText=t.getTextPatch=t.stableStringify=t.find=t.filter=t.omitKeys=t.pickKeys=t.asName=void 0;const i=n(899);function r(e,t=[],n=!1){let i=t;if(!i.length)return{};if(e&&i.length){let t={};return i.forEach((i=>{n&&void 0===e[i]||(t[i]=e[i])})),t}return e}function s(e,t){return e.filter((e=>Object.entries(t).every((([t,n])=>e[t]===n))))}function o(e){for(var t in e)return!1;return!0}function a(e){return Object.keys(e)}t.asName=function(e){if(null==e||!e.toString||!e.toString())throw"Expecting a non empty string";return`"${e.toString().replace(/"/g,'""')}"`},t.pickKeys=r,t.omitKeys=function(e,t){return r(e,a(e).filter((e=>!t.includes(e))))},t.filter=s,t.find=function(e,t){return s(e,t)[0]},t.stableStringify=function(e,t){t||(t={}),"function"==typeof t&&(t={cmp:t});var n,i="boolean"==typeof t.cycles&&t.cycles,r=t.cmp&&(n=t.cmp,function(e){return function(t,i){var r={key:t,value:e[t]},s={key:i,value:e[i]};return n(r,s)}}),s=[];return function e(t){if(t&&t.toJSON&&"function"==typeof t.toJSON&&(t=t.toJSON()),void 0!==t){if("number"==typeof t)return isFinite(t)?""+t:"null";if("object"!=typeof t)return JSON.stringify(t);var n,o;if(Array.isArray(t)){for(o="[",n=0;n<t.length;n++)n&&(o+=","),o+=e(t[n])||"null";return o+"]"}if(null===t)return"null";if(-1!==s.indexOf(t)){if(i)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var a=s.push(t)-1,l=Object.keys(t).sort(r&&r(t));for(o="",n=0;n<l.length;n++){var c=l[n],u=e(t[c]);u&&(o&&(o+=","),o+=JSON.stringify(c)+":"+u)}return s.splice(a,1),"{"+o+"}"}}(e)},t.getTextPatch=function(e,t){if(!(e&&t&&e.trim().length&&t.trim().length))return t;if(e===t)return{from:0,to:0,text:"",md5:(0,i.md5)(t)};function n(n=1){let i=n<1?-1:0,r=!1;for(;!r&&Math.abs(i)<=t.length;){const s=n<1?[i]:[0,i];e.slice(...s)!==t.slice(...s)?r=!0:i+=1*Math.sign(n)}return i}let r=n()-1,s=e.length+n(-1)+1,o=t.length+n(-1)+1;return{from:r,to:s,text:t.slice(r,o),md5:(0,i.md5)(t)}},t.unpatchText=function(e,t){if(!t||"string"==typeof t)return t;const{from:n,to:r,text:s,md5:o}=t;if(null===s||null===e)return s;let a=e.slice(0,n)+s+e.slice(r);if(o&&(0,i.md5)(a)!==o)throw"Patch text error: Could not match md5 hash: (original/result) \n"+e+"\n"+a;return a},t.WAL=class{constructor(e){if(this.changed={},this.sending={},this.sentHistory={},this.callbacks=[],this.sort=(e,t)=>{const{orderBy:n}=this.options;return n&&e&&t&&n.map((n=>{if(!(n.fieldName in e)||!(n.fieldName in t))throw"Replication error: \n some orderBy fields missing from data";let i=n.asc?e[n.fieldName]:t[n.fieldName],r=n.asc?t[n.fieldName]:e[n.fieldName],s=+i-+r,o=i<r?-1:i==r?0:1;return"number"===n.tsDataType&&Number.isFinite(s)?s:o})).find((e=>e))||0},this.isInHistory=e=>{if(!e)throw"Provide item";const t=e[this.options.synced_field];if(!Number.isFinite(+t))throw"Provided item Synced field value is missing/invalid ";const n=this.sentHistory[this.getIdStr(e)],i=n?.[this.options.synced_field];if(n){if(!Number.isFinite(+i))throw"Provided historic item Synced field value is missing/invalid";if(+i==+t)return!0}return!1},this.addData=e=>{o(this.changed)&&this.options.onSendStart&&this.options.onSendStart(),e.map((e=>{var t;const{initial:n,current:i,delta:r}={...e};if(!i)throw"Expecting { current: object, initial?: object }";const s=this.getIdStr(i);this.changed??(this.changed={}),(t=this.changed)[s]??(t[s]={initial:n,current:i,delta:r}),this.changed[s].current={...this.changed[s].current,...i},this.changed[s].delta={...this.changed[s].delta,...r}})),this.sendItems()},this.isOnSending=!1,this.isSendingTimeout=void 0,this.willDeleteHistory=void 0,this.sendItems=async()=>{const{DEBUG_MODE:e,onSend:t,onSendEnd:n,batch_size:i,throttle:r,historyAgeSeconds:s=2}=this.options;if(this.isSendingTimeout||this.sending&&!o(this.sending))return;if(!this.changed||o(this.changed))return;let a,l=[],c=[],u={};Object.keys(this.changed).sort(((e,t)=>this.sort(this.changed[e].current,this.changed[t].current))).slice(0,i).map((e=>{let t={...this.changed[e]};this.sending[e]={...t},c.push({...t}),u[e]={...t.current},delete this.changed[e]})),l=c.map((e=>{let t={};return Object.keys(e.current).map((n=>{const i=e.initial?.[n],r=e.current[n];var s,o;![this.options.synced_field,...this.options.id_fields].includes(n)&&((s=i)===(o=r)||(["number","string","boolean"].includes(typeof s)?s===o:JSON.stringify(s)===JSON.stringify(o)))||(t[n]=r)})),t})),e&&console.log(this.options.id," SENDING lr->",l[l.length-1]),this.isSendingTimeout||(this.isSendingTimeout=setTimeout((()=>{this.isSendingTimeout=void 0,o(this.changed)||this.sendItems()}),r)),this.isOnSending=!0;try{await t(l,c),s&&(this.sentHistory={...this.sentHistory,...u},this.willDeleteHistory||(this.willDeleteHistory=setTimeout((()=>{this.willDeleteHistory=void 0,this.sentHistory={}}),1e3*s)))}catch(e){a=e,console.error("WAL onSend failed:",e,l,c)}if(this.isOnSending=!1,this.callbacks.length){const e=Object.keys(this.sending);this.callbacks.forEach(((t,n)=>{t.idStrs=t.idStrs.filter((t=>e.includes(t))),t.idStrs.length||t.cb(a)})),this.callbacks=this.callbacks.filter((e=>e.idStrs.length))}this.sending={},e&&console.log(this.options.id," SENT lr->",l[l.length-1]),o(this.changed)?n&&n(l,c,a):this.sendItems()},this.options={...e},!this.options.orderBy){const{synced_field:t,id_fields:n}=e;this.options.orderBy=[t,...n.sort()].map((e=>({fieldName:e,tsDataType:e===t?"number":"string",asc:!0})))}}isSending(){const e=this.isOnSending||!(o(this.sending)&&o(this.changed));return this.options.DEBUG_MODE&&console.log(this.options.id," CHECKING isSending ->",e),e}getIdStr(e){return this.options.id_fields.sort().map((t=>`${e[t]||""}`)).join(".")}getIdObj(e){let t={};return this.options.id_fields.sort().map((n=>{t[n]=e[n]})),t}getDeltaObj(e){let t={};return Object.keys(e).map((n=>{this.options.id_fields.includes(n)||(t[n]=e[n])})),t}},t.isEmpty=o,t.get=function(e,t){let n=t,i=e;return e?("string"==typeof n&&(n=n.split(".")),n.reduce(((e,t)=>e&&e[t]?e[t]:void 0),i)):e},t.isObject=function(e){return Boolean(e&&"object"==typeof e&&!Array.isArray(e))},t.isDefined=function(e){return null!=e},t.getKeys=a}},t={};return function n(i){var r=t[i];if(void 0!==r)return r.exports;var s=t[i]={exports:{}};return e[i].call(s.exports,s,s.exports,n),s.exports}(590)})(),e.exports=t()}},t={},function n(i){var r=t[i];if(void 0!==r)return r.exports;var s=t[i]={exports:{}};return e[i].call(s.exports,s,s.exports,n),s.exports}(274);var e,t}));
@@ -1,5 +1,5 @@
1
1
  import { InitOptions } from "./prostgles";
2
- declare function prostgles<DBSchema>(params: InitOptions<DBSchema>): Promise<unknown>;
2
+ declare function prostgles<DBSchema = void>(params: InitOptions<DBSchema>): Promise<unknown>;
3
3
  declare namespace prostgles {
4
4
  var SyncedTable: typeof import("./SyncedTable").SyncedTable;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prostgles-full.d.ts","sourceRoot":"","sources":["../lib/prostgles-full.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,WAAW,EAAmB,MAAM,aAAa,CAAC;AAE9E,iBAAS,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,oBAGzD;kBAHQ,SAAS;;;AAQlB,SAAS,SAAS,CAAC"}
1
+ {"version":3,"file":"prostgles-full.d.ts","sourceRoot":"","sources":["../lib/prostgles-full.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,WAAW,EAAE,MAAM,aAAa,CAAC;AAE7D,iBAAS,SAAS,CAAC,QAAQ,GAAG,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,oBAGhE;kBAHQ,SAAS;;;AAQlB,SAAS,SAAS,CAAC"}
@@ -1,8 +1,8 @@
1
- import { TableHandler, DbJoinMaker, AnyObject, SubscriptionHandler, SQLHandler, DBSchemaTable, MethodHandler, SQLResult, DBSchema, ViewHandler, asName, FullFilter, SubscribeParams, OnError, GetSelectReturnType } from "prostgles-types";
1
+ import { TableHandler, AnyObject, SubscriptionHandler, SQLHandler, DBSchemaTable, MethodHandler, SQLResult, DBSchema, ViewHandler, asName, FullFilter, SubscribeParams, OnError, GetSelectReturnType } from "prostgles-types";
2
2
  import type { Sync, SyncOne } from "./SyncedTable";
3
3
  export declare const debug: any;
4
4
  export { MethodHandler, SQLResult, asName };
5
- export type ViewHandlerClient<T extends AnyObject = AnyObject, S = void> = ViewHandler<T, S> & {
5
+ export type ViewHandlerClient<T extends AnyObject = AnyObject, S extends DBSchema | void = void> = ViewHandler<T, S> & {
6
6
  getJoinedTables: () => string[];
7
7
  _syncInfo?: any;
8
8
  getSync?: any;
@@ -10,7 +10,7 @@ export type ViewHandlerClient<T extends AnyObject = AnyObject, S = void> = ViewH
10
10
  syncOne?: SyncOne<T>;
11
11
  _sync?: any;
12
12
  subscribeHook: <SubParams extends SubscribeParams<T, S>>(filter?: FullFilter<T, S>, options?: SubParams, onError?: OnError) => {
13
- start: ((onChange: (items: GetSelectReturnType<S, SubParams, T, false>[]) => any) => Promise<SubscriptionHandler<T>>);
13
+ start: ((onChange: (items: GetSelectReturnType<S, SubParams, T, false>[]) => any) => Promise<SubscriptionHandler>);
14
14
  args: [
15
15
  filter?: FullFilter<T, S>,
16
16
  options?: SubscribeParams<T>,
@@ -18,7 +18,7 @@ export type ViewHandlerClient<T extends AnyObject = AnyObject, S = void> = ViewH
18
18
  ];
19
19
  };
20
20
  subscribeOneHook: <SubParams extends SubscribeParams<T, S>>(filter?: FullFilter<T, S>, options?: SubscribeParams<T>, onError?: OnError) => {
21
- start: (onChange: (item: GetSelectReturnType<S, SubParams, T, false> | undefined) => any) => Promise<SubscriptionHandler<T>>;
21
+ start: (onChange: (item: GetSelectReturnType<S, SubParams, T, false> | undefined) => any) => Promise<SubscriptionHandler>;
22
22
  args: [
23
23
  filter?: FullFilter<T, S>,
24
24
  options?: SubscribeParams<T>,
@@ -26,7 +26,7 @@ export type ViewHandlerClient<T extends AnyObject = AnyObject, S = void> = ViewH
26
26
  ];
27
27
  };
28
28
  };
29
- export type TableHandlerClient<T extends AnyObject = AnyObject, S = void> = TableHandler<T, S> & {
29
+ export type TableHandlerClient<T extends AnyObject = AnyObject, S extends DBSchema | void = void> = TableHandler<T, S> & {
30
30
  getJoinedTables: () => string[];
31
31
  _syncInfo?: any;
32
32
  getSync?: any;
@@ -34,14 +34,11 @@ export type TableHandlerClient<T extends AnyObject = AnyObject, S = void> = Tabl
34
34
  syncOne?: SyncOne<T>;
35
35
  _sync?: any;
36
36
  };
37
- export type DBHandlerClient<Tables extends Record<string, AnyObject> = Record<string, AnyObject>> = {
38
- [key in keyof Tables]: Partial<TableHandlerClient<Tables[key]>>;
39
- } & DbJoinMaker & {
37
+ export type DBHandlerClient<Schema = void> = (Schema extends DBSchema ? {
38
+ [tov_name in keyof Schema]: Schema[tov_name]["is_view"] extends true ? ViewHandlerClient<Schema[tov_name]["columns"], Schema> : TableHandlerClient<Schema[tov_name]["columns"], Schema>;
39
+ } : Record<string, Partial<TableHandlerClient>>) & {
40
40
  sql?: SQLHandler;
41
41
  };
42
- export type DBOFullyTyped<Schema = void> = Schema extends DBSchema ? {
43
- [tov_name in keyof Schema]: Schema[tov_name]["is_view"] extends true ? ViewHandlerClient<Schema[tov_name]["columns"], Schema> : TableHandlerClient<Schema[tov_name]["columns"], Schema>;
44
- } & Pick<DBHandlerClient, "sql"> : DBHandlerClient;
45
42
  export type Auth = {
46
43
  register?: (params: any) => Promise<any>;
47
44
  login?: (params: any) => Promise<any>;
@@ -59,7 +56,7 @@ export type InitOptions<DBSchema = void> = {
59
56
  * true by default
60
57
  */
61
58
  onSchemaChange?: false | (() => void);
62
- onReady: (dbo: DBOFullyTyped<DBSchema>, methods: MethodHandler | undefined, tableSchema: DBSchemaTable[] | undefined, auth: Auth | undefined, isReconnect: boolean) => any;
59
+ onReady: (dbo: DBHandlerClient<DBSchema>, methods: MethodHandler | undefined, tableSchema: DBSchemaTable[] | undefined, auth: Auth | undefined, isReconnect: boolean) => any;
63
60
  /**
64
61
  * If not provided will fire onReady
65
62
  */
@@ -1 +1 @@
1
- {"version":3,"file":"prostgles.d.ts","sourceRoot":"","sources":["../lib/prostgles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prostgles.d.ts","sourceRoot":"","sources":["../lib/prostgles.ts"],"names":[],"mappings":"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"}
package/dist/prostgles.js CHANGED
@@ -15,14 +15,6 @@ const debug = function (...args) {
15
15
  }
16
16
  };
17
17
  exports.debug = debug;
18
- /** Type inference check */
19
- const db = 1;
20
- (async () => {
21
- const res = await db.tbl1.findOne();
22
- res === null || res === void 0 ? void 0 : res.col1;
23
- // @ts-expect-error
24
- res.col2;
25
- });
26
18
  function prostgles(initOpts, syncedTable) {
27
19
  const { socket, onReady, onDisconnect, onReconnect, onSchemaChange = true, onReload } = initOpts;
28
20
  (0, exports.debug)("prostgles", { initOpts });
@@ -322,7 +314,6 @@ function prostgles(initOpts, syncedTable) {
322
314
  */
323
315
  const addSubQueuer = new FunctionQueuer(_addSub, ([_, { tableName }]) => tableName);
324
316
  async function addSub(dbo, params, onChange, _onError) {
325
- //@ts-ignore
326
317
  return addSubQueuer.run([dbo, params, onChange, _onError]);
327
318
  }
328
319
  /**
@@ -391,7 +382,7 @@ function prostgles(initOpts, syncedTable) {
391
382
  }
392
383
  else if (data.err) {
393
384
  sub.errorHandlers.forEach(h => {
394
- h(data.err);
385
+ h === null || h === void 0 ? void 0 : h(data.err);
395
386
  });
396
387
  }
397
388
  else {
package/dist/typeTests.js CHANGED
@@ -9,3 +9,4 @@ const f = (a) => { };
9
9
  // f(dbo.table1)
10
10
  const ra = (a) => {
11
11
  };
12
+ // const dboBasic: DBHandlerClient = dbo;
@@ -25,12 +25,31 @@ export type SyncOneOptions = Partial<SyncedTableOptions> & {
25
25
  /**
26
26
  * Creates a local synchronized table
27
27
  */
28
- export type Sync<T = POJO> = (basicFilter: Partial<T>, options: SyncOptions, onChange: (data: (SyncDataItem<Required<T>>)[], delta?: Partial<T>[]) => any, onError?: (error: any) => void) => Promise<MultiSyncHandles<T>>;
28
+ type OnChange<T> = (data: (SyncDataItem<Required<T>>)[], delta?: Partial<T>[]) => any
29
+ export type Sync<
30
+ T extends AnyObject,
31
+ OnChangeFunc extends OnChange<T> = (data: (SyncDataItem<Required<T>>)[], delta?: Partial<T>[]) => any,
32
+ // Result extends MultiSyncHandles<T> = {
33
+ // $unsync: () => void;
34
+ // $upsert: (newData: T[]) => any;
35
+ // getItems: () => T[];
36
+ // }
37
+ Upsert extends ((newData: T[]) => any) = ((newData: T[]) => any)
38
+ > = (
39
+ basicFilter: Partial<T>,
40
+ options: SyncOptions,
41
+ onChange: OnChangeFunc,
42
+ onError?: (error: any) => void
43
+ ) => Promise<{
44
+ $unsync: () => void;
45
+ $upsert: Upsert;
46
+ getItems: () => T[];
47
+ }>;
29
48
 
30
49
  /**
31
50
  * Creates a local synchronized record
32
51
  */
33
- export type SyncOne<T = POJO> = (basicFilter: Partial<T>, options: SyncOneOptions, onChange: (data: (SyncDataItem<Required<T>>), delta?: Partial<T>) => any, onError?: (error: any) => void) => Promise<SingleSyncHandles<T>>;
52
+ export type SyncOne<T extends AnyObject = AnyObject> = (basicFilter: Partial<T>, options: SyncOneOptions, onChange: (data: (SyncDataItem<Required<T>>), delta?: Partial<T>) => any, onError?: (error: any) => void) => Promise<SingleSyncHandles<T>>;
34
53
 
35
54
  export type SyncBatchRequest = {
36
55
  from_synced?: string | number;
@@ -51,13 +70,13 @@ export type ItemUpdated = ItemUpdate & {
51
70
  from_server: boolean;
52
71
  }
53
72
 
54
- export type CloneSync<T, Full extends boolean> = (
73
+ export type CloneSync<T extends AnyObject, Full extends boolean> = (
55
74
  onChange: SingleChangeListener<T>,
56
75
  onError?: (error: any) => void
57
76
  ) => SingleSyncHandles<T, Full>;
58
77
 
59
- export type CloneMultiSync<T> = (
60
- onChange: MultiChangeListener,
78
+ export type CloneMultiSync<T extends AnyObject> = (
79
+ onChange: MultiChangeListener<T>,
61
80
  onError?: (error: any) => void
62
81
  ) => MultiSyncHandles<T>;
63
82
 
@@ -71,7 +90,7 @@ type DeepPartial<T> = T extends Array<any> ? T : T extends object ? {
71
90
  /**
72
91
  * CRUD handles added if initialised with handlesOnData = true
73
92
  */
74
- export type SingleSyncHandles<T = POJO, Full extends boolean = false> = {
93
+ export type SingleSyncHandles<T extends AnyObject = AnyObject, Full extends boolean = false> = {
75
94
  $get: () => T;
76
95
  $find: (idObj: Partial<T>) => (T | undefined);
77
96
  $unsync: () => any;
@@ -81,22 +100,22 @@ export type SingleSyncHandles<T = POJO, Full extends boolean = false> = {
81
100
  $cloneMultiSync: CloneMultiSync<T>;
82
101
  }
83
102
 
84
- export type SyncDataItem<T = POJO, Full extends boolean = false> = T & (Full extends true ? SingleSyncHandles<T, true> : Partial<SingleSyncHandles<T>>);
103
+ export type SyncDataItem<T extends AnyObject = AnyObject, Full extends boolean = false> = T & (Full extends true ? SingleSyncHandles<T, true> : Partial<SingleSyncHandles<T>>);
85
104
 
86
- export type MultiSyncHandles<T = POJO> = {
105
+ export type MultiSyncHandles<T extends AnyObject> = {
87
106
  $unsync: () => void;
88
107
  $upsert: (newData: T[]) => any;
89
108
  getItems: () => AnyObject[];
90
109
  }
91
110
 
92
- export type SubscriptionSingle<T = POJO, Full extends boolean = false> = {
111
+ export type SubscriptionSingle<T extends AnyObject = AnyObject, Full extends boolean = false> = {
93
112
  _onChange: SingleChangeListener<T, Full>
94
113
  notify: (data: T, delta?: DeepPartial<T>) => T;
95
114
  idObj: Partial<T>;
96
115
  handlesOnData?: boolean;
97
116
  handles?: SingleSyncHandles<T, Full>;
98
117
  }
99
- export type SubscriptionMulti<T = POJO> = {
118
+ export type SubscriptionMulti<T extends AnyObject = AnyObject> = {
100
119
  _onChange: MultiChangeListener<T>;
101
120
  notify: (data: T[], delta: DeepPartial<T>[]) => T[];
102
121
  idObj?: Partial<T>;
@@ -110,8 +129,8 @@ const STORAGE_TYPES = {
110
129
  object: "object"
111
130
  } as const;
112
131
 
113
- export type MultiChangeListener<T = POJO> = (items: SyncDataItem<T>[], delta: DeepPartial<T>[]) => any;
114
- export type SingleChangeListener<T = POJO, Full extends boolean = false> = (item: SyncDataItem<T, Full>, delta?: DeepPartial<T>) => any;
132
+ export type MultiChangeListener<T extends AnyObject = AnyObject> = (items: SyncDataItem<T>[], delta: DeepPartial<T>[]) => any;
133
+ export type SingleChangeListener<T extends AnyObject = AnyObject, Full extends boolean = false> = (item: SyncDataItem<T, Full>, delta?: DeepPartial<T>) => any;
115
134
 
116
135
  export type SyncedTableOptions = {
117
136
  name: string;
@@ -430,7 +449,7 @@ export class SyncedTable {
430
449
  * @param handlesOnData If true then $upsert and $unsync handles will be added on each data item. True by default;
431
450
  */
432
451
  sync<T extends AnyObject = AnyObject>(onChange: MultiChangeListener<T>, handlesOnData = true): MultiSyncHandles<T> {
433
- const handles: MultiSyncHandles = {
452
+ const handles: MultiSyncHandles<T> = {
434
453
  $unsync: () => {
435
454
  return this.unsubscribe(onChange)
436
455
  },
@@ -1083,4 +1102,16 @@ export function quickClone<T>(obj: T): T {
1083
1102
  }
1084
1103
 
1085
1104
  return obj;
1086
- }
1105
+ }
1106
+
1107
+ /**
1108
+ * Type tests
1109
+ */
1110
+ (async () => {
1111
+ const s: Sync<{ a: number, b: string; }> = 1 as any;
1112
+ const sh = s({ a: 1 }, { } as any, (d) => { d });
1113
+
1114
+ const syncTyped: Sync<{ col1: string; }, ()=>any> = 1 as any;
1115
+
1116
+ // const sUntyped: Sync<AnyObject, any> = syncTyped;
1117
+ })
@@ -1,6 +1,6 @@
1
- import { prostgles as pgls, InitOptions, DBHandlerClient } from "./prostgles";
1
+ import { prostgles as pgls, InitOptions } from "./prostgles";
2
2
  import { SyncedTable } from "./SyncedTable";
3
- function prostgles<DBSchema>(params: InitOptions<DBSchema>) {
3
+ function prostgles<DBSchema = void>(params: InitOptions<DBSchema>) {
4
4
  //@ts-ignore
5
5
  return pgls(params, SyncedTable);
6
6
  }
package/lib/prostgles.ts CHANGED
@@ -10,8 +10,7 @@ import {
10
10
  DBNoticeConfig, AnyObject, SubscriptionHandler,
11
11
  SQLHandler, DBEventHandles, AuthGuardLocation, DBSchemaTable,
12
12
  AuthGuardLocationResponse, MethodHandler, ClientSyncHandles, UpdateParams, DeleteParams, ClientSchema, SQLResult, DBSchema, ViewHandler,
13
- asName,
14
- TableSchemaForClient,
13
+ asName,
15
14
  SubscriptionChannels,
16
15
  FullFilter,
17
16
  SubscribeParams,
@@ -32,7 +31,7 @@ export const debug: any = function (...args: any[]) {
32
31
 
33
32
  export { MethodHandler, SQLResult, asName };
34
33
 
35
- export type ViewHandlerClient<T extends AnyObject = AnyObject, S = void> = ViewHandler<T, S> & {
34
+ export type ViewHandlerClient<T extends AnyObject = AnyObject, S extends DBSchema | void = void> = ViewHandler<T, S> & {
36
35
  getJoinedTables: () => string[];
37
36
  _syncInfo?: any;
38
37
  getSync?: any;
@@ -46,7 +45,7 @@ export type ViewHandlerClient<T extends AnyObject = AnyObject, S = void> = ViewH
46
45
  ) => {
47
46
  start: ((
48
47
  onChange: (items: GetSelectReturnType<S, SubParams, T, false>[]) => any
49
- ) => Promise<SubscriptionHandler<T>>) //ReturnType<ViewHandler<T, S>["subscribe"]>)
48
+ ) => Promise<SubscriptionHandler>)
50
49
  args: [
51
50
  filter?: FullFilter<T, S>,
52
51
  options?: SubscribeParams<T>,
@@ -60,7 +59,7 @@ export type ViewHandlerClient<T extends AnyObject = AnyObject, S = void> = ViewH
60
59
  ) => {
61
60
  start: (
62
61
  onChange: (item: GetSelectReturnType<S, SubParams, T, false> | undefined) => any
63
- ) => Promise<SubscriptionHandler<T>>;
62
+ ) => Promise<SubscriptionHandler>;
64
63
  args: [
65
64
  filter?: FullFilter<T, S>,
66
65
  options?: SubscribeParams<T>,
@@ -69,7 +68,7 @@ export type ViewHandlerClient<T extends AnyObject = AnyObject, S = void> = ViewH
69
68
  }
70
69
  }
71
70
 
72
- export type TableHandlerClient<T extends AnyObject = AnyObject, S = void> = TableHandler<T, S> & {
71
+ export type TableHandlerClient<T extends AnyObject = AnyObject, S extends DBSchema | void = void> = TableHandler<T, S> & {
73
72
  getJoinedTables: () => string[];
74
73
  _syncInfo?: any;
75
74
  getSync?: any;
@@ -78,55 +77,16 @@ export type TableHandlerClient<T extends AnyObject = AnyObject, S = void> = Tabl
78
77
  _sync?: any;
79
78
  }
80
79
 
81
- // export type TableHandlerClientBasic = TableHandlerBasic & {
82
- // getJoinedTables: () => string[];
83
- // _syncInfo?: any;
84
- // getSync?: any;
85
- // sync?: Sync;
86
- // syncOne?: SyncOne;
87
- // _sync?: any;
88
- // }
89
-
90
- export type DBHandlerClient<Tables extends Record<string, AnyObject> = Record<string, AnyObject>> = {
91
- [key in keyof Tables]: Partial<TableHandlerClient<Tables[key]>>;
92
- } & DbJoinMaker & {
93
- sql?: SQLHandler;
94
- };
95
-
96
80
 
97
- export type DBOFullyTyped<Schema = void> = Schema extends DBSchema ? {
81
+ export type DBHandlerClient<Schema = void> = (Schema extends DBSchema ? {
98
82
  [tov_name in keyof Schema]: Schema[tov_name]["is_view"] extends true ?
99
- ViewHandlerClient<Schema[tov_name]["columns"], Schema> :
100
- TableHandlerClient<Schema[tov_name]["columns"], Schema>
101
- } & Pick<DBHandlerClient, "sql"> :
102
- DBHandlerClient;
103
-
104
- /** Type inference check */
105
- const db: DBHandlerClient<{ tbl1: { col1: string; col2: number } }> = 1 as any;
106
- (async () => {
107
- const res = await db.tbl1.findOne!()
108
- res?.col1;
109
- // @ts-expect-error
110
- res.col2;
111
- });
112
-
113
- // export type DBHandlerClientBasic = {
114
- // [key: string]: Partial<TableHandlerClientBasic>;
115
- // } & {
116
- // innerJoin: TableJoinBasic;
117
- // leftJoin: TableJoinBasic;
118
- // innerJoinOne: TableJoinBasic;
119
- // leftJoinOne: TableJoinBasic;
120
- // } & {
121
-
122
- // /**
123
- // *
124
- // * @param query <string> query. e.g.: SELECT * FROM users;
125
- // * @param params <any[] | object> query arguments to be escaped. e.g.: { name: 'dwadaw' }
126
- // * @param options <object> { returnType: "statement" | "rows" | "noticeSubscription" }
127
- // */
128
- // sql?: SQLHandler;
129
- // };
83
+ ViewHandlerClient<Schema[tov_name]["columns"], Schema> :
84
+ TableHandlerClient<Schema[tov_name]["columns"], Schema>
85
+ } :
86
+ Record<string, Partial<TableHandlerClient>>
87
+ ) & {
88
+ sql?: SQLHandler;
89
+ };
130
90
 
131
91
  export type Auth = {
132
92
  register?: (params: any) => Promise<any>;
@@ -148,7 +108,7 @@ export type InitOptions<DBSchema = void> = {
148
108
  * true by default
149
109
  */
150
110
  onSchemaChange?: false | (() => void);
151
- onReady: (dbo: DBOFullyTyped<DBSchema>, methods: MethodHandler | undefined, tableSchema: DBSchemaTable[] | undefined, auth: Auth | undefined, isReconnect: boolean) => any;
111
+ onReady: (dbo: DBHandlerClient<DBSchema>, methods: MethodHandler | undefined, tableSchema: DBSchemaTable[] | undefined, auth: Auth | undefined, isReconnect: boolean) => any;
152
112
 
153
113
  /**
154
114
  * If not provided will fire onReady
@@ -169,7 +129,7 @@ type Subscription = CoreParams & {
169
129
  lastData: any;
170
130
  onCall: Function,
171
131
  handlers: Function[];
172
- errorHandlers: Function[];
132
+ errorHandlers: (Function | undefined)[];
173
133
  unsubChannel: string;
174
134
  destroy: () => any;
175
135
  };
@@ -520,15 +480,14 @@ export function prostgles<DBSchema>(initOpts: InitOptions<DBSchema>, syncedTable
520
480
  * Can be used concurrently
521
481
  */
522
482
  const addSubQueuer = new FunctionQueuer(_addSub, ([_, { tableName }]) => tableName);
523
- async function addSub<T extends AnyObject>(dbo: any, params: CoreParams, onChange: Function, _onError: Function): Promise<SubscriptionHandler<T>> {
524
- //@ts-ignore
483
+ async function addSub(dbo: any, params: CoreParams, onChange: Function, _onError?: Function): Promise<SubscriptionHandler> {
525
484
  return addSubQueuer.run([dbo, params, onChange, _onError]);
526
485
  }
527
486
 
528
487
  /**
529
488
  * Do NOT use concurrently
530
489
  */
531
- async function _addSub<T extends AnyObject>(dbo: any, { tableName, command, param1, param2 }: CoreParams, onChange: Function, _onError: Function): Promise<SubscriptionHandler<T>> {
490
+ async function _addSub(dbo: any, { tableName, command, param1, param2 }: CoreParams, onChange: Function, _onError?: Function): Promise<SubscriptionHandler> {
532
491
 
533
492
  function makeHandler(channelName: string, unsubChannel: string) {
534
493
 
@@ -597,7 +556,7 @@ export function prostgles<DBSchema>(initOpts: InitOptions<DBSchema>, syncedTable
597
556
  });
598
557
  } else if (data.err) {
599
558
  sub.errorHandlers.forEach(h => {
600
- h(data.err);
559
+ h?.(data.err);
601
560
  });
602
561
  } else {
603
562
  console.error("INTERNAL ERROR: Unexpected data format from subscription: ", data)
@@ -667,7 +626,7 @@ export function prostgles<DBSchema>(initOpts: InitOptions<DBSchema>, syncedTable
667
626
 
668
627
  connected = true;
669
628
 
670
- let dbo: DBOFullyTyped = JSON.parse(JSON.stringify(schema));
629
+ let dbo: DBHandlerClient = JSON.parse(JSON.stringify(schema));
671
630
  let _methods: typeof methods = JSON.parse(JSON.stringify(methods)),
672
631
  methodsObj: MethodHandler = {},
673
632
  _auth = {};
@@ -833,7 +792,7 @@ export function prostgles<DBSchema>(initOpts: InitOptions<DBSchema>, syncedTable
833
792
  } else if (sub_commands.includes(command as any)) {
834
793
  const subFunc = function <T extends AnyObject = AnyObject>(param1, param2, onChange, onError) {
835
794
  checkSubscriptionArgs(param1, param2, onChange, onError);
836
- return addSub<T>(dbo, { tableName, command, param1, param2 }, onChange, onError);
795
+ return addSub(dbo, { tableName, command, param1, param2 }, onChange, onError);
837
796
  };
838
797
  dbo[tableName][command] = subFunc;
839
798
  const SUBONE = "subscribeOne";
@@ -851,11 +810,11 @@ export function prostgles<DBSchema>(initOpts: InitOptions<DBSchema>, syncedTable
851
810
  }
852
811
 
853
812
  if (command === SUBONE || !sub_commands.includes(SUBONE)) {
854
- dbo[tableName][SUBONE] = function <T extends AnyObject = AnyObject>(param1, param2, onChange, onError) {
813
+ dbo[tableName][SUBONE] = function (param1, param2, onChange, onError) {
855
814
  checkSubscriptionArgs(param1, param2, onChange, onError);
856
815
 
857
816
  let onChangeOne = (rows) => { onChange(rows[0]) };
858
- return addSub<T>(dbo, { tableName, command, param1, param2 }, onChangeOne, onError);
817
+ return addSub(dbo, { tableName, command, param1, param2 }, onChangeOne, onError);
859
818
  };
860
819
  }
861
820
  } else {
@@ -934,7 +893,7 @@ export function prostgles<DBSchema>(initOpts: InitOptions<DBSchema>, syncedTable
934
893
 
935
894
  (async () => {
936
895
  try {
937
- await onReady(dbo as DBOFullyTyped<DBSchema>, methodsObj, tableSchema, _auth, connected);
896
+ await onReady(dbo as DBHandlerClient<DBSchema>, methodsObj, tableSchema, _auth, connected);
938
897
  } catch (err) {
939
898
  console.error("Prostgles: Error within onReady: \n", err);
940
899
  reject(err);
package/lib/typeTests.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { AnyObject, DBSchema, FullFilter, TableHandler } from "prostgles-types";
2
- import { DBOFullyTyped } from "./prostgles";
2
+ import { DBHandlerClient } from "./prostgles";
3
3
 
4
4
 
5
5
  // const schema: DBSchema = {
@@ -16,11 +16,11 @@ import { DBOFullyTyped } from "./prostgles";
16
16
  }
17
17
  };
18
18
 
19
- const dbo: DBOFullyTyped<GeneratedSchema> = 1 as any;
19
+ const dbo: DBHandlerClient<GeneratedSchema> = 1 as any;
20
20
 
21
- const filter: FullFilter<GeneratedSchema, GeneratedSchema["table1"]["columns"]> = { };
21
+ const filter: FullFilter<GeneratedSchema["table1"]["columns"], GeneratedSchema> = { };
22
22
 
23
- const filterCheck = <F extends FullFilter | undefined>(f: F) => {};
23
+ const filterCheck = <F extends FullFilter<void, void> | undefined>(f: F) => {};
24
24
  filterCheck(filter);
25
25
 
26
26
  const sub: TableHandler["count"] = dbo.table1.count
@@ -31,3 +31,6 @@ const f = <A extends TableHandler>(a: A) => {};
31
31
  const ra = <A extends AnyObject>(a: A) => {
32
32
 
33
33
  };
34
+
35
+
36
+ // const dboBasic: DBHandlerClient = dbo;
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "prostgles-client",
3
- "version": "4.0.7",
3
+ "version": "4.0.8",
4
4
  "description": "Reactive client for Postgres",
5
5
  "main": "dist/prostgles-full.js",
6
6
  "types": "dist/prostgles-full.d.ts",
7
7
  "dependencies": {
8
- "prostgles-types": "^4.0.9"
8
+ "prostgles-types": "^4.0.12"
9
9
  },
10
10
  "devDependencies": {
11
11
  "@types/node": "^14.14.14",