@trakit/sync 0.0.40 → 0.0.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/API/Functions.d.ts +7 -0
- package/README.md +21 -21
- package/index.d.ts +4 -3
- package/package.json +1 -1
- package/trakit-sync.min.js +2 -2
package/API/Functions.d.ts
CHANGED
|
@@ -39,4 +39,11 @@ export declare function makePayloadClass(type: SyncName, suffix?: string | nothi
|
|
|
39
39
|
* @returns
|
|
40
40
|
*/
|
|
41
41
|
export declare function makeReplyClass(type: SyncName, suffix?: string | nothing): (new (json: JsonObject) => Reply) | nothing;
|
|
42
|
+
/**
|
|
43
|
+
* Issues a fetch request and returns the response as a {@link JsonObject}.
|
|
44
|
+
* If the fetch fails, returns a standardized error response object.
|
|
45
|
+
* @param request
|
|
46
|
+
* @returns
|
|
47
|
+
*/
|
|
48
|
+
export declare function fetchJsonObject(request: Request): Promise<JsonObject>;
|
|
42
49
|
//# sourceMappingURL=Functions.d.ts.map
|
package/README.md
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
# Trak-iT API Synchronization
|
|
2
|
-
|
|
3
|
-
This library provides a full suite of tools to keep a local copy of objects from Trak-iT's APIs in-sync. Other Trak-iT API libraries are available on GitHub. https://github.com/trakitwireless
|
|
4
|
-
|
|
5
|
-
### Prerequisites
|
|
6
|
-
|
|
7
|
-
The `@trakit/objects` and `@trakit/commands` packages are required since they contain the definitions for all the commands required to manipulate the objects.
|
|
8
|
-
|
|
9
|
-
In order to build this project, you need to install the RollupJS, and plugins for TypeScript and Minifying.
|
|
10
|
-
```
|
|
11
|
-
npm i rollup rollup-plugin-typescript2 @rollup/plugin-terser
|
|
12
|
-
```
|
|
13
|
-
After those have been installed, build the project normally.
|
|
14
|
-
```
|
|
15
|
-
rollup --config rollup.config.js
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Questions and Feedback
|
|
19
|
-
|
|
20
|
-
If you have any questions, please start for the project on GitHub
|
|
21
|
-
https://github.com/trakitwireless/trakit-ts-sync/issues
|
|
1
|
+
# Trak-iT API Synchronization
|
|
2
|
+
|
|
3
|
+
This library provides a full suite of tools to keep a local copy of objects from Trak-iT's APIs in-sync. Other Trak-iT API libraries are available on GitHub. https://github.com/trakitwireless
|
|
4
|
+
|
|
5
|
+
### Prerequisites
|
|
6
|
+
|
|
7
|
+
The `@trakit/objects` and `@trakit/commands` packages are required since they contain the definitions for all the commands required to manipulate the objects.
|
|
8
|
+
|
|
9
|
+
In order to build this project, you need to install the RollupJS, and plugins for TypeScript and Minifying.
|
|
10
|
+
```
|
|
11
|
+
npm i rollup rollup-plugin-typescript2 @rollup/plugin-terser
|
|
12
|
+
```
|
|
13
|
+
After those have been installed, build the project normally.
|
|
14
|
+
```
|
|
15
|
+
rollup --config rollup.config.js
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Questions and Feedback
|
|
19
|
+
|
|
20
|
+
If you have any questions, please start for the project on GitHub
|
|
21
|
+
https://github.com/trakitwireless/trakit-ts-sync/issues
|
package/index.d.ts
CHANGED
|
@@ -5,9 +5,10 @@
|
|
|
5
5
|
* @copyright Trak-iT Wireless Inc. 2025
|
|
6
6
|
*/
|
|
7
7
|
import { TrakitEvent, TrakitEventAccount, TrakitEventDelete, TrakitEventList, TrakitEventSync, TrakitEventUpdate } from "./API/Events";
|
|
8
|
-
import { createClientErrorResponse } from "./API/Functions";
|
|
8
|
+
import { createClientErrorResponse, fetchJsonObject } from "./API/Functions";
|
|
9
9
|
import { TrakitBaseCommander } from "./API/TrakitBaseCommander";
|
|
10
10
|
import { TrakitObjectCommander } from "./API/TrakitObjectCommander";
|
|
11
|
+
import { HttpVerb } from "./RESTful/Constants";
|
|
11
12
|
import { createCorsRequest, payloadToVerbRoute } from "./RESTful/Functions";
|
|
12
13
|
import { TrakitRestfulCommander } from "./RESTful/TrakitRestfulCommander";
|
|
13
14
|
import { TrakitSyncCommander } from "./Synchronization/TrakitSyncCommander";
|
|
@@ -18,11 +19,11 @@ import { TrakitSocketCommander, TrakitSocketStatus } from "./WebSocket/TrakitSoc
|
|
|
18
19
|
/**
|
|
19
20
|
* Version number for this release.
|
|
20
21
|
*/
|
|
21
|
-
export declare const version = "0.0.
|
|
22
|
+
export declare const version = "0.0.41";
|
|
22
23
|
/**
|
|
23
24
|
* API exports
|
|
24
25
|
*/
|
|
25
|
-
export { createClientErrorResponse, TrakitBaseCommander, TrakitEvent, TrakitEventAccount, TrakitEventDelete, TrakitEventList, TrakitEventSync, TrakitEventUpdate, TrakitObjectCommander };
|
|
26
|
+
export { createClientErrorResponse, fetchJsonObject, TrakitBaseCommander, TrakitEvent, TrakitEventAccount, TrakitEventDelete, TrakitEventList, TrakitEventSync, TrakitEventUpdate, TrakitObjectCommander, type HttpVerb };
|
|
26
27
|
/**
|
|
27
28
|
* RESTful API exports
|
|
28
29
|
*/
|
package/package.json
CHANGED
package/trakit-sync.min.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
function e(e,t){return{errorCode:c.unknown,message:"Client exception",errorDetails:{kind:"stack",message:e?.message??"Unknonwn error",stack:e?.stack??null,value:t??null}}}function t(e){if("CompanyLabels"===(e=sr.capitalize(e)))e="CompanyStyle";else e=sr.singularize(e);return e}function s(e){let t="GET",s="",r=new URLSearchParams;const n=e.getAction();switch(n.object){case"Self":"Get"==n.kind?(t="GET",s="self"):(t="POST",s="self/"+n.filter.toLowerCase());break;case"Subscription":throw new Error(n.object+" only supported by TrakitSocketCommander",{cause:n});case"DispatchJob":switch(n.filter){case"Cancel":t=n.batch?"PATCH":"POST",s+="/cancel";break;case"Change":t=n.batch?"PATCH":"PUT"}default:if(s=[...n.object.match(gr)].map((e=>sr.pluralize(e.toLowerCase()))).join("/"),!n.batch){switch(e.getKey&&(s+="/"+e.getKey()),n.kind){case"Get":break;case"List":switch(n.filter){case"BillingProfile":case"BillingProfile":s=n.object in wr?wr[n.object].replace("{profileId}",e.billingProfile.id):`billing/profiles/${e.billingProfile.id}/${s}`;break;case"Company":s=n.object in pr?pr[n.object].replace("{companyId}",e.company.id):`companies/${e.company.id}/${s}`;break;case"Asset":s=n.object in mr?mr[n.object].replace("{assetId}",e.asset.id):`assets/${e.asset.id}/${s}`;break;case"User":s=`users/${encodeURIComponent(e.user.login)}/${s}`}if(sr.isntNaN(e?.after?.valueOf())&&r.set("after",e.after.toISOString()),sr.isntNaN(e?.before?.valueOf())&&r.set("before",e.before.toISOString()),sr.isntNaN(e?.lowest)&&r.set("lowest",e.lowest),sr.isntNaN(e?.highest)&&r.set("highest",e.highest),e?.first&&r.set("first",e.first),e?.last&&r.set("last",e.last),e?.labels?.length&&r.set("labels",e.labels.join(",")),e?.references?.size)for(const[t,s]of e.references.entries())r.set(t,s);break;case"Merge":t="POST";break;case"Delete":t="DELETE";break;case"Restore":t="PATCH",s+="/restore";break;case"Suspend":t="PATCH",s+="/suspend";break;case"Reactivate":t="PATCH",s+="/revive"}break}switch(t="PATCH",n.kind){case"Get":case"List":t="GET";break;case"Merge":break;case"Delete":t="DELETE";break;case"Restore":s+="/restore";break;case"Suspend":s+="/suspend";break;case"Reactivate":s+="/revive"}}return[t,r.size?s+"?"+r.toString():s]}async function r(e,t,s="GET",r=null,n=null){const i=new Map(n),o={method:s,cache:"no-store",mode:"cors",credentials:"omit"};return r&&"GET"!==s&&(o.body=r),e.machine?i.set("Authorization",e.machine.secret?.length?"HMAC256 "+btoa(e.machine.key+":"+await e.machine.createHmacSignature(t,s,o.body?.length??0,new Date)):"Machine "+btoa(e.machine.key)):e.ghostId&&i.set("Authorization","Bearer "+e.ghostId),i.size>0&&(o.headers=new Headers([...i.entries()])),new Request(t,o)}function n(e){const t=e.getAction(),s=new Error("no command supported for "+e.constructor.name,{cause:t});switch(t.object){case"Subscription":switch(t.kind){case"Merge":return"subscribe";case"Delete":return"unsubscribe";case"List":return"getSubscriptionsList";default:throw s}case"Self":switch(t.filter){case"Get":return"getSessionDetails";case"Login":case"Logout":return t.filter.toLowerCase();case"Contact":case"Password":case"Preferences":return"updateOwn"+t.filter;default:throw s}case"Session":switch(t.kind){case"Get":case"List":break;case"Delete":return"killSession";default:throw s}break;case"DispatchJob":switch(t.filter){case"Cancel":case"Change":return t.kind.toLocaleLowerCase()+t.object}}switch(t.kind){case"Get":case"Merge":case"Restore":case"Suspend":return t.kind.toLocaleLowerCase()+t.object;case"Delete":return"remove"+t.object;case"Reactivate":return"revive"+t.object;case"List":return"get"+sr.pluralize(t.object)+"List"+("Company"!=(t.filter||"Company")?"By"+t.filter:"");default:throw s}}function i(e){return e.reduce(((e,t)=>e.concat(fr[t]||[])),[]).filter(((e,t,s)=>s.indexOf(e)===t))}function o(e){const t=[];for(const[s,r]of Object.entries(Br)){const n=r.map((e=>fr[e])).flat();n.filter((t=>e.includes(t))).length/n.length>=.5&&t.push(s)}const s=t.reduce(((e,t)=>e.concat([t],Br[t])),[]);for(const[r,n]of Object.entries(fr))!s.includes(r)&&n.some((t=>e.includes(t)))&&t.push(r);return t}import*as a from"@trakit/commands";import{ErrorCode as c,RepSelfGet as h,ReplySync as u,ReplySyncList as d,ReplySyncGet as l,ReplySyncDelete as p,ReplySyncBatchDelete as m,PaySelfGet as w,PaySelfLogin as g,PaySelfLogout as y,PaySelfContact as v,PaySelfPassword as f,PaySelfPreferences as b,PayCompanyGet as C,PayCompanyMerge as P,PayCompanyDelete as R,PayCompanyRestore as S,PayCompanyGeneralListByCompany as k,PayCompanyGeneralGet as A,PayCompanyPolicyListByCompany as M,PayCompanyPolicyGet as D,PayCompanyStyleListByCompany as I,PayCompanyStyleGet as T,PayCompanyDirectoryListByCompany as G,PayCompanyDirectoryGet as B,PayCompanyResellerGet as U,PayCompanyResellerMerge as E,PayCompanyResellerDelete as J,PayCompanyResellerRestore as L,PayContactListByCompany as x,PayContactGet as _,PayContactMerge as N,PayContactDelete as O,PayContactRestore as F,PayContactBatchMerge as H,PayContactBatchDelete as q,PayUserListByCompany as $,PayUserGet as W,PayUserMerge as j,PayUserDelete as z,PayUserRestore as K,PayUserGeneralListByCompany as Z,PayUserGeneralGet as Q,PayUserAdvancedListByCompany as V,PayUserAdvancedGet as X,PayUserGroupListByCompany as Y,PayUserGroupGet as ee,PayUserGroupMerge as te,PayUserGroupDelete as se,PayUserGroupRestore as re,PayMachineListByCompany as ne,PayMachineGet as ie,PayMachineMerge as oe,PayMachineDelete as ae,PayMachineRestore as ce,PaySessionListByCompany as he,PaySessionListByUser as ue,PaySessionDelete as de,PayIconListByCompany as le,PayIconGet as pe,PayIconMerge as me,PayIconDelete as we,PayIconRestore as ge,PayPictureListByCompany as ye,PayPictureGet as ve,PayPictureMerge as fe,PayPictureDelete as be,PayPictureRestore as Ce,PayDocumentListByCompany as Pe,PayDocumentGet as Re,PayDocumentMerge as Se,PayDocumentDelete as ke,PayDocumentRestore as Ae,PayFormTemplateListByCompany as Me,PayFormTemplateGet as De,PayFormTemplateMerge as Ie,PayFormTemplateDelete as Te,PayFormTemplateRestore as Ge,PayFormResultListByCompany as Be,PayFormResultGet as Ue,PayFormResultMerge as Ee,PayFormResultBatchMerge as Je,PayFormResultDelete as Le,PayFormResultRestore as xe,PayDashcamListByCompany as _e,PayDashcamGet as Ne,PayDashcamLiveListByCompany as Oe,PayAssetListByCompany as Fe,PayAssetGet as He,PayAssetMerge as qe,PayAssetBatchMerge as $e,PayAssetDelete as We,PayAssetRestore as je,PayAssetSuspend as ze,PayAssetReactivate as Ke,PayAssetGeneralListByCompany as Ze,PayAssetGeneralGet as Qe,PayAssetAdvancedListByCompany as Ve,PayAssetAdvancedGet as Xe,PayAssetDispatchMerge as Ye,PayDispatchTaskListByCompany as et,PayDispatchTaskListByAsset as tt,PayDispatchTaskGet as st,PayDispatchTaskMerge as rt,PayDispatchTaskBatchMerge as nt,PayDispatchTaskDelete as it,PayDispatchTaskRestore as ot,PayDispatchJobListByCompany as at,PayDispatchJobListByAsset as ct,PayDispatchJobGet as ht,PayDispatchJobMerge as ut,PayDispatchJobBatchMerge as dt,PayDispatchJobDelete as lt,PayDispatchJobRestore as pt,PayDispatchJobChange as mt,PayDispatchJobCancel as wt,PayAssetMessageListByCompany as gt,PayAssetMessageListByAsset as yt,PayAssetMessageGet as vt,PayAssetMessageMerge as ft,PayAssetMessageBatchMerge as bt,PayAssetMessageDelete as Ct,PayAssetMessageRestore as Pt,PayPlaceListByCompany as Rt,PayPlaceGet as St,PayPlaceMerge as kt,PayPlaceDelete as At,PayPlaceRestore as Mt,PayProviderListByCompany as Dt,PayProviderGet as It,PayProviderMerge as Tt,PayProviderBatchMerge as Gt,PayProviderBatchDelete as Bt,PayProviderDelete as Ut,PayProviderRestore as Et,PayProviderGeneralListByCompany as Jt,PayProviderGeneralGet as Lt,PayProviderAdvancedListByCompany as xt,PayProviderAdvancedGet as _t,PayProviderControlListByCompany as Nt,PayProviderControlGet as Ot,PayProviderScriptListByCompany as Ft,PayProviderScriptGet as Ht,PayProviderScriptMerge as qt,PayProviderScriptDelete as $t,PayProviderScriptRestore as Wt,PayProviderConfigListByCompany as jt,PayProviderConfigGet as zt,PayProviderConfigMerge as Kt,PayProviderConfigBatchMerge as Zt,PayProviderConfigDelete as Qt,PayProviderConfigRestore as Vt,PayProviderConfigurationListByCompany as Xt,PayProviderConfigurationGet as Yt,PayProviderConfigurationMerge as es,PayProviderConfigurationBatchMerge as ts,PayProviderConfigurationDelete as ss,PayProviderConfigurationRestore as rs,PayProviderRegistrationListByCompany as ns,PayProviderRegistrationGet as is,PayProviderRegistrationMerge as os,PayProviderRegistrationDelete as as,PayBehaviourListByCompany as cs,PayBehaviourGet as hs,PayBehaviourMerge as us,PayBehaviourBatchMerge as ds,PayBehaviourDelete as ls,PayBehaviourRestore as ps,PayBehaviourScriptListByCompany as ms,PayBehaviourScriptGet as ws,PayBehaviourScriptMerge as gs,PayBehaviourScriptDelete as ys,PayBehaviourScriptRestore as vs,PayBehaviourLogListByAsset as fs,PayBehaviourLogBatchDeleteByAsset as bs,PayBehaviourLogListByBehaviour as Cs,PayBehaviourLogBatchDeleteByBehaviour as Ps,PayBehaviourLogListByScript as Rs,PayBehaviourLogBatchDeleteByScript as Ss,PayReportTemplateListByCompany as ks,PayReportTemplateGet as As,PayReportTemplateMerge as Ms,PayReportTemplateDelete as Ds,PayReportTemplateRestore as Is,PayReportScheduleListByCompany as Ts,PayReportScheduleGet as Gs,PayReportScheduleMerge as Bs,PayReportScheduleDelete as Us,PayReportScheduleRestore as Es,PayReportResultListByCompany as Js,PayReportResultGet as Ls,PayReportResultMerge as xs,PayReportResultDelete as _s,PayReportResultRestore as Ns,PayMaintenanceScheduleListByCompany as Os,PayMaintenanceScheduleGet as Fs,PayMaintenanceScheduleMerge as Hs,PayMaintenanceScheduleDelete as qs,PayMaintenanceScheduleRestore as $s,PayMaintenanceJobListByCompany as Ws,PayMaintenanceJobGet as js,PayMaintenanceJobMerge as zs,PayMaintenanceJobDelete as Ks,PayMaintenanceJobRestore as Zs,SubscriptionType as Qs,Reply as Vs,PaySubscriptionMerge as Xs,RepSubscription as Ys,PaySubscriptionDelete as er,PaySubscriptionList as tr}from"@trakit/commands";import{utility as sr,Machine as rr,serialization as nr}from"@trakit/objects";class ir{type;constructor(e){this.type=e}}class or extends ir{kind;companyId;constructor(e,t,s){super(e),this.kind=t,this.companyId=s}}class ar extends ir{account;constructor(e,t){super(e),this.account=t}}class cr extends or{objects;constructor(e,t,s,r){super(e,t,s),this.objects=r}}class hr extends or{object;constructor(e,t,s,r){super(e,t,s),this.object=r}}class ur extends or{key;constructor(e,t,s,r){super(e,t,s),this.key=r}}class dr{account;baseAddress;query=new Map;headers=new Map;createBaseUrl(e){const t=this.baseAddress?new URL(e??"",this.baseAddress):new URL(e),s=new Map(this.query);for(const[e,r]of s)t.searchParams.append(e,r);return t}constructor(e,t){this.baseAddress=t?new URL(t):null,this.setAuth(e)}setAuth(e){e instanceof h?this.account=e:"string"==typeof e?this.setAuth({ghostId:e}):e instanceof rr||e?.key?this.setAuth({machine:e.toJSON?.()??e}):e?.machine?.key||e?.ghostId?this.setAuth(new h({errorCode:c.success,message:"Authenticated via "+(e?.machine?.key?"Machine":"Session"),...e.toJSON?.()??e})):this.setAuth(new h)}command(t){return new Promise((async(s,r)=>{let n=null,i=null,o=null;try{n=await this.t(t)}catch(t){i=e(t)}try{i=i??await this.i(n)}catch(s){o=t.createReply(s instanceof Error?e(s):s)}try{o=o??t.createReply(i)}catch(s){o=t.createReply(e(s,i))}(o.errorCode===c.success?s:r)(o)}))}}class lr extends dr{o=new Map;h(e){e&&this.setAuth(new h({serverTime:this.account.serverTime?.toISOString()??null,ghostId:this.account.ghostId??null,expiry:this.account.expiry?.toISOString()??null,user:this.account.userLogin?{login:this.account.userLogin}:null,machine:this.account.machineKey?{key:this.account.machineKey}:null,sessionPolicy:this.account.sessionPolicy?.toJSON()??null,passwordPolicy:this.account.passwordPolicy?.toJSON()??null})),this.fire("account",(()=>new ar("account",this.account)))}u(e,t,s){this.fire("list",(()=>new cr("list",e,t,s)))}l(e,t,s){this.fire("update",(()=>new hr("update",e,t,s)))}p(e,t,s){this.fire("delete",(()=>new ur("delete",e,t,s)))}on(e,t){let s=this.o.get(e);s||this.o.set(e,s=[]);const r=s.includes(t);return r||s.push(t),!r}off(e,t){const s=this.o.get(e);if(s?.length){if(t){const e=s.indexOf(t);return!!(e>-1&&s.splice(e,1))}return!(s.length=0)}return!1}fire(e,t){const s=this.o.get(e)?.slice();if(s?.length){const e=t();s.forEach((t=>t.call(this,e)),this)}}handles(e,t){return this.o.get(e)?.includes(t)??!1}dispose(){for(const e of[...this.o.keys()])this.off(e)}async command(e){const t=await super.command(e);if(t instanceof u&&t.store()){const s=e.getAction(),r=t.getCompanyId();t instanceof d?s.filter?t.getList().forEach((e=>this.l(s.object,r,e))):this.u(s.object,r,t.getList()):t instanceof l?this.l(s.object,r,t.getObject()):t instanceof p?this.p(s.object,r,t.getKey()):t instanceof m&&t.getResults().forEach((e=>this.p(s.object,e.getCompanyId(),e.getKey())))}return t}async selfDetails(){const e=await this.command(new w);return this.setAuth(e),this.h(),e}async login(e,t,s){const r=await this.command(new g({username:e,password:t,userAgent:s??null}));return this.setAuth(r),this.h(),r}logout(){const e=this.command(new y);return this.setAuth(),this.h(),e}updateContact(e,t,s,r,n,i,o,a,c,h,u){return this.command(new v({contact:{name:e??null,notes:t??null,otherNames:s??null,emails:r??null,phones:n??null,addresses:i??null,urls:o??null,dates:a??null,options:c??null,roles:h??null,pictures:u??null}}))}updatePassword(e,t){return this.command(new f({current:e,password:t}))}updatePreferences(e,t,s,r,n,i){return this.command(new b({language:e??null,timezone:t?.code??t??null,notify:s?.map((e=>e.toJSON?.()??e))??null,formats:r instanceof Map?nr.fromMap(r):r??null,measurements:n instanceof Map?nr.fromMap(n):n??null,options:i instanceof Map?nr.fromMap(i):i??null}))}getCompany(e){return this.command(new C({company:{id:e}}))}mergeCompany(e){return this.command(new P({company:e}))}removeCompany(e){return this.command(new R({company:{id:e}}))}restoreCompany(e){return this.command(new S({company:{id:e}}))}listCompanyGenerals(e,t){return this.command(new k({...t,company:{id:e}}))}getCompanyGeneral(e){return this.command(new A({company:{id:e}}))}listCompanyPolicies(e,t){return this.command(new M({...t,company:{id:e}}))}getCompanyPolicy(e){return this.command(new D({company:{id:e}}))}listCompanyStyles(e,t){return this.command(new I({...t,company:{id:e}}))}getCompanyStyle(e){return this.command(new T({company:{id:e}}))}listCompanyDirectories(e,t){return this.command(new G({...t,company:{id:e}}))}getCompanyDirectory(e){return this.command(new B({company:{id:e}}))}getReseller(e){return this.command(new U({company:{id:e}}))}mergeReseller(e){return this.command(new E({company:e}))}removeReseller(e){return this.command(new J({company:{id:e}}))}restoreReseller(e){return this.command(new L({company:{id:e}}))}listContacts(e,t){return this.command(new x({...t,company:{id:e}}))}getContact(e){return this.command(new _({contact:{id:e}}))}mergeContact(e){return this.command(new N({contact:e}))}removeContact(e){return this.command(new O({contact:{id:e}}))}restoreContact(e){return this.command(new F({contact:{id:e}}))}multiMergeContact(e){return this.command(new H({contacts:e}))}multiRemoveContact(e){return this.command(new q({contacts:e.map((e=>({id:e})))}))}listUsers(e,t){return this.command(new $({...t,company:{id:e}}))}getUser(e){return this.command(new W({user:{login:e}}))}mergeUser(e){return this.command(new j({user:e}))}removeUser(e){return this.command(new z({user:{login:e}}))}restoreUser(e){return this.command(new K({user:{login:e}}))}listUserGenerals(e,t){return this.command(new Z({...t,company:{id:e}}))}getUserGeneral(e){return this.command(new Q({user:{login:e}}))}listUserAdvanceds(e,t){return this.command(new V({...t,company:{id:e}}))}getUserAdvanced(e){return this.command(new X({user:{login:e}}))}listUserGroups(e,t){return this.command(new Y({...t,company:{id:e}}))}getUserGroup(e){return this.command(new ee({userGroup:{id:e}}))}mergeUserGroup(e){return this.command(new te({userGroup:e}))}removeUserGroup(e){return this.command(new se({userGroup:{id:e}}))}restoreUserGroup(e){return this.command(new re({userGroup:{id:e}}))}listMachines(e,t){return this.command(new ne({...t,company:{id:e}}))}getMachine(e){return this.command(new ie({machine:{id:e}}))}mergeMachine(e){return this.command(new oe({machine:e}))}removeMachine(e){return this.command(new ae({machine:{id:e}}))}restoreMachine(e){return this.command(new ce({machine:{id:e}}))}listSessions(e,t){return this.command(new he({...t,company:{id:e}}))}listSessionsByUser(e,t){return this.command(new ue({...t,user:{login:e}}))}killSession(e){return this.command(new de({session:{handle:e}}))}listIcons(e,t){return this.command(new le({...t,company:{id:e}}))}getIcon(e){return this.command(new pe({icon:{id:e}}))}mergeIcon(e){return this.command(new me({icon:e}))}removeIcon(e){return this.command(new we({icon:{id:e}}))}restoreIcon(e){return this.command(new ge({icon:{id:e}}))}listPictures(e,t){return this.command(new ye({...t,company:{id:e}}))}getPicture(e){return this.command(new ve({picture:{id:e}}))}mergePicture(e){return this.command(new fe({picture:e}))}removePicture(e){return this.command(new be({picture:{id:e}}))}restorePicture(e){return this.command(new Ce({picture:{id:e}}))}listDocuments(e,t){return this.command(new Pe({...t,company:{id:e}}))}getDocument(e){return this.command(new Re({document:{id:e}}))}mergeDocument(e){return this.command(new Se({document:e}))}removeDocument(e){return this.command(new ke({document:{id:e}}))}restoreDocument(e){return this.command(new Ae({document:{id:e}}))}listFormTemplates(e,t){return this.command(new Me({...t,company:{id:e}}))}getFormTemplate(e){return this.command(new De({formTemplate:{id:e}}))}mergeFormTemplate(e){return this.command(new Ie({formTemplate:e}))}removeFormTemplate(e){return this.command(new Te({formTemplate:{id:e}}))}restoreFormTemplate(e){return this.command(new Ge({formTemplate:{id:e}}))}listFormResults(e,t){return this.command(new Be({...t,company:{id:e}}))}getFormResult(e){return this.command(new Ue({formResult:{id:e}}))}mergeFormResult(e){return this.command(new Ee({formResult:e}))}multiMergeFormResult(e){return this.command(new Je({formResult:{id:e}}))}removeFormResult(e){return this.command(new Le({formResult:{id:e}}))}restoreFormResult(e){return this.command(new xe({formResult:{id:e}}))}listDashcamDatas(e,t){return this.command(new _e({...t,company:{id:e}}))}getDashcamData(e){return this.command(new Ne({dashcam:{guid:e}}))}listDashcamLives(e,t){return this.command(new Oe({...t,company:{id:e}}))}listAssets(e,t){return this.command(new Fe({...t,company:{id:e}}))}getAsset(e){return this.command(new He({asset:{id:e}}))}mergeAsset(e){return this.command(new qe({asset:e}))}multiMergeAsset(e){return this.command(new $e({assets:e}))}removeAsset(e){return this.command(new We({asset:{id:e}}))}restoreAsset(e){return this.command(new je({asset:{id:e}}))}suspendAsset(e){return this.command(new ze({asset:{id:e}}))}reviveAsset(e){return this.command(new Ke({asset:{id:e}}))}searchAssets(e,t){}listAssetGenerals(e,t){return this.command(new Ze({...t,company:{id:e}}))}getAssetGeneral(e){return this.command(new Qe({asset:{id:e}}))}searchAssetGenerals(e,t){}listAssetAdvanceds(e,t){return this.command(new Ve({...t,company:{id:e}}))}getAssetAdvanced(e){return this.command(new Xe({asset:{id:e}}))}searchAssetAdvanceds(e,t){}mergeAssetDispatch(e){return this.command(new Ye({assetDispatch:e}))}listDispatchTasks(e,t){return this.command(new et({...t,company:{id:e}}))}getDispatchTasksByAsset(e,t){return this.command(new tt({...t,asset:{id:e}}))}getDispatchTask(e){return this.command(new st({dispatchTask:{id:e}}))}mergeDispatchTask(e){return this.command(new rt({dispatchTask:e}))}multiMergeDispatchTask(e){return this.command(new nt({dispatchTask:{id:e}}))}removeDispatchTask(e){return this.command(new it({dispatchTask:{id:e}}))}restoreDispatchTask(e){return this.command(new ot({dispatchTask:{id:e}}))}listDispatchJobs(e,t){return this.command(new at({...t,company:{id:e}}))}getDispatchJobsByAsset(e,t){return this.command(new ct({...t,asset:{id:e}}))}getDispatchJob(e){return this.command(new ht({dispatchJob:{id:e}}))}mergeDispatchJob(e){return this.command(new ut({dispatchJob:e}))}multiMergeDispatchJob(e){return this.command(new dt({dispatchJob:{id:e}}))}removeDispatchJob(e){return this.command(new lt({dispatchJob:{id:e}}))}restoreDispatchJob(e){return this.command(new pt({dispatchJob:{id:e}}))}changeDispatchJob(e){return this.command(new mt({dispatchJob:e}))}cancelDispatchJob(e){return this.command(new wt({dispatchJob:e}))}listAssetMessages(e,t){return this.command(new gt({...t,company:{id:e}}))}getAssetMessagesByAsset(e,t){return this.command(new yt({...t,asset:{id:e}}))}getAssetMessage(e){return this.command(new vt({message:{id:e}}))}mergeAssetMessage(e){return this.command(new ft({assetMessage:e}))}multiMergeAssetMessage(e){return this.command(new bt({assetMessage:{id:e}}))}removeAssetMessage(e){return this.command(new Ct({assetMessage:{id:e}}))}restoreAssetMessage(e){return this.command(new Pt({assetMessage:{id:e}}))}listPlaces(e,t){return this.command(new Rt({...t,company:{id:e}}))}getPlace(e){return this.command(new St({place:{id:e}}))}mergePlace(e){return this.command(new kt({place:e}))}removePlace(e){return this.command(new At({place:{id:e}}))}restorePlace(e){return this.command(new Mt({place:{id:e}}))}listProviders(e,t){return this.command(new Dt({...t,company:{id:e}}))}getProvider(e){return this.command(new It({provider:{id:e}}))}mergeProvider(e){return this.command(new Tt({provider:e}))}multiMergeProvider(e){return this.command(new Gt({providers:e}))}multiRemoveProvider(e){return this.command(new Bt({providers:e.map((e=>({id:e})))}))}removeProvider(e){return this.command(new Ut({provider:{id:e}}))}restoreProvider(e){return this.command(new Et({provider:{id:e}}))}searchProviders(e,t){}listProviderGenerals(e,t){return this.command(new Jt({...t,company:{id:e}}))}getProviderGeneral(e){return this.command(new Lt({provider:{id:e}}))}searchProviderGenerals(e,t){}listProviderAdvanceds(e,t){return this.command(new xt({...t,company:{id:e}}))}getProviderAdvanced(e){return this.command(new _t({provider:{id:e}}))}searchProviderAdvanceds(e,t){}listProviderControls(e,t){return this.command(new Nt({...t,company:{id:e}}))}getProviderControl(e){return this.command(new Ot({provider:{id:e}}))}searchProviderControls(e,t){}listProviderScripts(e,t){return this.command(new Ft({...t,company:{id:e}}))}getProviderScript(e){return this.command(new Ht({providerScript:{id:e}}))}mergeProviderScript(e){return this.command(new qt({providerScript:e}))}removeProviderScript(e){return this.command(new $t({providerScript:{id:e}}))}restoreProviderScript(e){return this.command(new Wt({providerScript:{id:e}}))}listProviderConfigs(e,t){return this.command(new jt({...t,company:{id:e}}))}getProviderConfig(e){return this.command(new zt({providerConfig:{id:e}}))}mergeProviderConfig(e){return this.command(new Kt({providerConfig:e}))}multiMergeProviderConfig(e){return this.command(new Zt({providerConfig:{id:e}}))}removeProviderConfig(e){return this.command(new Qt({providerConfig:{id:e}}))}restoreProviderConfig(e){return this.command(new Vt({providerConfig:{id:e}}))}listProviderConfigurations(e,t){return this.command(new Xt({...t,company:{id:e}}))}getProviderConfiguration(e){return this.command(new Yt({providerConfiguration:{id:e}}))}mergeProviderConfiguration(e){return this.command(new es({providerConfiguration:e}))}multiMergeProviderConfiguration(e){return this.command(new ts({providerConfiguration:{id:e}}))}removeProviderConfiguration(e){return this.command(new ss({providerConfiguration:{id:e}}))}restoreProviderConfiguration(e){return this.command(new rs({providerConfiguration:{id:e}}))}listProviderRegistration(e,t){return this.command(new ns({...t,company:{id:e}}))}getProviderRegistration(e){return this.command(new is({providerRegistration:{id:e}}))}mergeProviderRegistration(e){return this.command(new os({providerRegistration:e}))}removeProviderRegistration(e){return this.command(new as({providerRegistration:{id:e}}))}listBehaviours(e,t){return this.command(new cs({...t,company:{id:e}}))}getBehaviour(e){return this.command(new hs({behaviour:{id:e}}))}mergeBehaviour(e){return this.command(new us({behaviour:e}))}multiMergeBehaviour(e){return this.command(new ds({behaviour:{id:e}}))}removeBehaviour(e){return this.command(new ls({behaviour:{id:e}}))}restoreBehaviour(e){return this.command(new ps({behaviour:{id:e}}))}listBehaviourScripts(e,t){return this.command(new ms({...t,company:{id:e}}))}getBehaviourScript(e){return this.command(new ws({behaviourScript:{id:e}}))}mergeBehaviourScript(e){return this.command(new gs({behaviourScript:e}))}removeBehaviourScript(e){return this.command(new ys({behaviourScript:{id:e}}))}restoreBehaviourScript(e){return this.command(new vs({behaviourScript:{id:e}}))}listBehaviourAssetLogs(e,t){return this.command(new fs({...t,behaviour:{id:e}}))}clearBehaviourAssetLogs(e){return this.command(new bs({behaviour:{id:e}}))}listBehaviourLogs(e,t){return this.command(new Cs({...t,behaviour:{id:e}}))}clearBehaviourLogs(e){return this.command(new Ps({behaviour:{id:e}}))}listBehaviourScriptLogs(e,t){return this.command(new Rs({...t,behaviourScript:{id:e}}))}clearBehaviourScriptLogs(e,t){return this.command(new Ss({...t,behaviourScript:{id:e}}))}listReportTemplates(e,t){return this.command(new ks({...t,company:{id:e}}))}getReportTemplate(e){return this.command(new As({reportTemplate:{id:e}}))}mergeReportTemplate(e){return this.command(new Ms({reportTemplate:e}))}removeReportTemplate(e){return this.command(new Ds({reportTemplate:{id:e}}))}restoreReportTemplate(e){return this.command(new Is({reportTemplate:{id:e}}))}listReportSchedules(e,t){return this.command(new Ts({...t,company:{id:e}}))}getReportSchedule(e){return this.command(new Gs({reportSchedule:{id:e}}))}mergeReportSchedule(e){return this.command(new Bs({reportSchedule:e}))}removeReportSchedule(e){return this.command(new Us({reportSchedule:{id:e}}))}restoreReportSchedule(e){return this.command(new Es({reportSchedule:{id:e}}))}listReportResults(e,t){return this.command(new Js({...t,company:{id:e}}))}getReportResult(e){return this.command(new Ls({reportResult:{id:e}}))}mergeReportResult(e){return this.command(new xs({reportResult:e}))}removeReportResult(e){return this.command(new _s({reportResult:{id:e}}))}restoreReportResult(e){return this.command(new Ns({reportResult:{id:e}}))}listMaintenanceSchedules(e,t){return this.command(new Os({...t,company:{id:e}}))}getMaintenanceSchedule(e){return this.command(new Fs({maintenanceSchedule:{id:e}}))}mergeMaintenanceSchedule(e){return this.command(new Hs({maintenanceSchedule:e}))}removeMaintenanceSchedule(e){return this.command(new qs({maintenanceSchedule:{id:e}}))}restoreMaintenanceSchedule(e){return this.command(new $s({maintenanceSchedule:{id:e}}))}listMaintenanceJobs(e,t){return this.command(new Ws({...t,company:{id:e}}))}getMaintenanceJob(e){return this.command(new js({maintenanceJob:{id:e}}))}mergeMaintenanceJob(e){return this.command(new zs({maintenanceJob:e}))}removeMaintenanceJob(e){return this.command(new Ks({maintenanceJob:{id:e}}))}restoreMaintenanceJob(e){return this.command(new Zs({maintenanceJob:{id:e}}))}}const pr={Company:"/companies/generals?parent={companyId}",CompanyGeneral:"/companies/generals?parent={companyId}",CompanyDirectory:"/companies/directory?parent={companyId}",CompanyStyle:"/companies/styles?parent={companyId}",CompanyPolicy:"/companies/policies?parent={companyId}",CompanyReseller:"/companies/resellers?parent={companyId}",Contact:"/companies/{companyId}/contacts",Machine:"/companies/{companyId}/machines",User:"/companies/{companyId}/users",UserGeneral:"/companies/{companyId}/users/generals",UserAdvanced:"/companies/{companyId}/users/advanceds",UserGroup:"/companies/{companyId}/users/groups",Session:"/companies/{companyId}/users/sessions",Dashcam:"/companies/{companyId}/dashcams",DashcamLive:"/companies/{companyId}/dashcams/live",Icon:"/companies/{companyId}/icons",Picture:"/companies/{companyId}/pictures",Document:"/companies/{companyId}/documents",FormTemplate:"/companies/{companyId}/forms/templates",FormResult:"/companies/{companyId}/forms",Asset:"/companies/{companyId}/assets",AssetGeneral:"/companies/{companyId}/assets/generals",AssetAdvanced:"/companies/{companyId}/assets/advanceds",AssetDispatch:"/companies/{companyId}/assets/dispatches",AssetMessage:"/companies/{companyId}/assets/messages",AssetAlert:"/companies/{companyId}/assets/alerts",DispatchTask:"/companies/{companyId}/assets/dispatch/tasks",DispatchJob:"/companies/{companyId}/assets/dispatch/jobs",MaintenanceSchedule:"/companies/{companyId}/maintenance/schedules",MaintenanceJob:"/companies/{companyId}/maintenance/jobs",Place:"/companies/{companyId}/places",Behaviour:"/companies/{companyId}/behaviours",BehaviourScript:"/companies/{companyId}/behaviours/scripts",BehaviourLog:"",Provider:"/companies/{companyId}/providers",ProviderGeneral:"/companies/{companyId}/providers/generals",ProviderAdvanced:"/companies/{companyId}/providers/advanceds",ProviderControl:"/companies/{companyId}/providers/controls",ProviderConfiguration:"/companies/{companyId}/providers/configurations",ProviderConfigurationType:"",ProviderScript:"/companies/{companyId}/providers/scripts",ProviderConfig:"/companies/{companyId}/providers/configs",ProviderRegistration:"/companies/{companyId}/providers/registrations",ReportTemplate:"/companies/{companyId}/reports/templates",ReportSchedule:"/companies/{companyId}/reports/schedules",ReportResult:"/companies/{companyId}/reports/results",BillingProfile:"/companies/{companyId}/billing/profiles",BillingReport:"/companies/{companyId}/billing/profiles/reports",BillableHostingRule:"",BillableHostingLicense:""},mr={AssetMessage:"/assets/{assetId}/messages",DispatchTask:"/assets/{assetId}/dispatch/tasks",DispatchJob:"/assets/{assetId}/dispatch/jobs",FormResult:"/assets/{assetId}/forms",MaintenanceJob:"/assets/{assetId}/maintenance/jobs"},wr={BillingHosting:"/billing/profiles/{profileId}/rules",BillingLicense:"/billing/profiles/{profileId}/licenses",BillingReport:"/billing/profiles/{profileId}/reports"},gr=/[A-Z][a-z]+/;class yr extends lr{static URI_PROD="https://rest.trakit.ca/";static URI_BETA="https://mindflayer.trakit.ca/";constructor(e,t){super(e,t??yr.URI_PROD)}t(e){const[t,n]=s(e);return r(this.account,this.createBaseUrl(n),t,"GET"===t?null:JSON.stringify(e.toJSON()),this.headers)}async i(t){try{return await(await fetch(t)).json()}catch(t){throw e(t)}}}const vr=/^(.+?)(Merged|Deleted|Suspended)$/,fr={Company:[Qs.companyGeneral,Qs.companyLabels,Qs.companyPolicies],CompanyGeneral:[Qs.companyGeneral],CompanyDirectory:[],CompanyStyle:[Qs.companyLabels],CompanyPolicy:[Qs.companyPolicies],CompanyReseller:[Qs.companyReseller],Contact:[Qs.contact],Machine:[Qs.machine],User:[Qs.userGeneral,Qs.userAdvanced],UserGeneral:[Qs.userGeneral],UserAdvanced:[Qs.userAdvanced],UserGroup:[Qs.userGroup],Session:[],Dashcam:[],Icon:[Qs.icon],Picture:[Qs.picture],Document:[Qs.document],FormTemplate:[Qs.formTemplate],FormResult:[Qs.formResult],Asset:[Qs.assetGeneral,Qs.assetAdvanced,Qs.assetDispatch],AssetGeneral:[Qs.assetGeneral],AssetAdvanced:[Qs.assetAdvanced],AssetDispatch:[Qs.assetDispatch],AssetMessage:[Qs.assetMessage],AssetAlert:[],DispatchTask:[Qs.dispatchTask],DispatchJob:[Qs.dispatchJob],MaintenanceSchedule:[Qs.maintenanceSchedule],MaintenanceJob:[Qs.maintenanceJob],Place:[Qs.placeGeneral],BehaviourScript:[Qs.behaviourScript],Behaviour:[Qs.behaviour],BehaviourLog:[Qs.behaviourLog],Provider:[Qs.providerGeneral,Qs.providerAdvanced,Qs.providerControl],ProviderGeneral:[Qs.providerGeneral],ProviderAdvanced:[Qs.providerAdvanced],ProviderControl:[Qs.providerControl],ProviderConfiguration:[Qs.providerConfiguration],ProviderConfigurationType:[],ProviderScript:[Qs.providerScript],ProviderConfig:[Qs.providerConfig],ProviderRegistration:[Qs.providerRegistration],ReportTemplate:[Qs.reportTemplate],ReportSchedule:[Qs.reportSchedule],ReportResult:[Qs.reportResult],BillingProfile:[Qs.billingProfile],BillingReport:[Qs.billingReport],BillableHostingRule:[Qs.billingHosting],BillableHostingLicense:[Qs.billingLicense]};class br{#e=new Map;get regions(){return[...this.#e.keys()]}getExpired(){const e=new Date,t=[];for(let[s,r]of this.#e)r&&r<e&&t.push(s);return t}purgeExpired(){const e=this.getExpired();return e.forEach((e=>this.#e.delete(e))),e}getExpiring(){const e=[];for(let[t,s]of this.#e)s&&e.push(t);return e}#t(e,t){return t=t||null,this.#e.set(e,t),t}addExpiry(e){return this.#t(e,new Date((new Date).valueOf()+3e5))}addExpiries(e){return e.map((e=>this.addExpiry(e)))}removeExpiry(e){const t=this.#e.get(e);return this.#t(e),t||null}removeExpiries(e){return e.map((e=>this.removeExpiry(e)))}reset(){const e=[];for(let[t,s]of this.#e)s||e.push(t);return this.#e.clear(),e}}var Cr;!function(e){e.maintenance="maintenance",e.upgrade="upgrade"}(Cr||(Cr={}));class Pr{static fromJson(e){switch(e?.kind){case Cr.maintenance:return new Rr(e);case Cr.upgrade:return new Sr(e);default:throw new Error(`Unknown broadcast type: ${e?.kind}`)}}kind;serverTime;message;constructor(e){this.kind=e?.kind,this.serverTime=sr.date(e?.serverTime),this.message=e?.message??""}}class Rr extends Pr{starting;ending;constructor(e){super(e),this.starting=sr.date(e?.starting),this.ending=sr.date(e?.ending)}}class Sr extends Pr{eta;reload;constructor(e){super(e),this.eta=sr.date(e?.eta),this.reload=!!e?.reload}}class kr extends ir{name;body;constructor(e,t,s){super(e),this.name=t,this.body=s}}class Ar extends ir{reply;constructor(e,t){super(e),this.reply=t}}class Mr extends ir{broadcast;constructor(e,t){super(e),this.broadcast=Pr.fromJson(t)}}const Dr="connection",Ir="dis"+Dr;var Tr;!function(e){e[e.opening=WebSocket.CONNECTING]="opening",e[e.open=WebSocket.OPEN]="open",e[e.closing=WebSocket.CLOSING]="closing",e[e.closed=WebSocket.CLOSED]="closed"}(Tr||(Tr={}));class Gr extends lr{static URI_PROD="wss://socket.trakit.ca/";static URI_BETA="wss://kraken.trakit.ca/";static msgNameToSyncName(e){const s=vr.exec(e);return 3===s?.length?t(s[1])||null:void 0}#s=new Date(NaN);#r=new Date(NaN);#n="";#i=new Date(NaN);get lastConnected(){return this.#s}get lastReceived(){return this.#r}get lastMessage(){return this.#n}get lastSent(){return this.#i}get state(){switch(this.#o?.readyState){case WebSocket.CONNECTING:return Tr.opening;case WebSocket.OPEN:return this.#a?Tr.open:Tr.opening;case WebSocket.CLOSING:return Tr.closing;default:return Tr.closed}}get ready(){return this.#a&&this.#c}m(e){const t=this.o.get("open");if(t?.length){const s=new ar("open",e);t.forEach((e=>e.call(this,s)))}}v(e){const t=this.o.get("close");if(t?.length){const s=new Ar("close",e);t.forEach((e=>e.call(this,s)))}}C(e,t){const s=this.o.get("message");if(s?.length){const r=new kr("message",e,t);s.forEach((e=>e.call(this,r)))}}P(e){const t=this.o.get("error");if(t?.length){const s=new Ar("error",e);t.forEach((e=>e.call(this,s)))}}R(e){const t=this.o.get("broadcast");if(t?.length){const s=new Mr("broadcast",e);t.forEach((e=>e.call(this,s)))}}#h=0;#u=new Map;#d(e,t){return this.#u.get(e)?.(t),this.#u.delete(e)}#o;#a=!1;#c=!0;#l(e){this.#o.onopen=null,this.#o.onmessage=e=>this.#p(e),this.#m=0}#w(e){this.P(new Vs({errorCode:c.service,message:"WebSocket error",errorDetails:{kind:"connection",state:this.state,reconnect:this.reconnectEnabled}}))}#g(e){clearTimeout(this.#y),clearTimeout(this.#v),this.#a=!1,this.#m=this.#m?2*this.#m:this.lastReceived?(new Date).valueOf()-this.lastReceived.valueOf():5e3;const t=Math.min(this.#m,3e5),s={kind:"connection",state:Tr.closed,code:e.code,reason:e.reason,wasClean:e.wasClean,reconnect:this.reconnectEnabled,retry:(new Date).valueOf()+t},r={errorCode:c.success,message:"Disconnected",errorDetails:s};for(const e of[...this.#u.keys()].sort())this.#d(e,e===Ir?r:{...r,reqId:e,errorCode:c.service,errorDetails:{...s}});this.v?.(new Vs(r)),this.#v=this.reconnectEnabled&&this.#c?setTimeout((()=>this.open()),t,this):0,this.#o=this.#o.onopen=this.#o.onerror=this.#o.onclose=this.#o.onmessage=null}#p(e){this.#r=new Date;const t=e.data.substring(0,e.data.indexOf(" ")),s=JSON.parse(e.data.substring(t.length+1));switch(this.#n=t,"connectionResponse"!==t&&"noopResponse"!==t&&this.C(t,s),t){case"connectionResponse":this.#f(s),this.#s=new Date(this.#r),this.#a=!0,this.#d(Dr,s),this.h(),this.m(this.account);break;case"loginResponse":case"getSessionDetailsResponse":this.#f(s),this.h();break;case"updateOwnPasswordResponse":this.#c||(this.#c=0===s.errorCode);break;case"logoutResponse":this.close();case"sessionEnded":this.#c=!1,this.#f(s),this.h();break;case"sessionGeneralMerged":this.#b([,"userGeneral","Merged"],this.#C(s)),this.h(!0);break;case"sessionAdvancedMerged":this.#b([,"userAdvanced","Merged"],this.#P(s)),this.h(!0);break;case"sessionMachineMerged":this.#b([,"machine","Merged"],this.#P(s)),this.h(!0);break;case"broadcast":this.R(s)}if(t.endsWith("Response"))this.#d(s.reqId,s);else if(!t.startsWith("session")){const e=vr.exec(t);e?.length&&this.#b(e,s)}this.resetKeepAlive()}#f(e){e.user&&this.#b([,"user","Merged"],this.#P(this.#C(e.user))),e.machine&&this.#b([,"machine","Merged"],this.#P(e.machine)),this.setAuth(new h(e)),this.#c=0===this.account.errorCode&&!this.account.user?.passwordExpired}#C(e){if(e?.contact){const t=e.contact;return this.#b([,"contact","Merged"],t),{...e,contact:t.id}}return e}#P(e){return e?.groups?.length?{...e,groups:e.groups.map((e=>(this.#b([,"userGroup","Merged"],e),e.id)))}:e}#b(e,s){const r=t(e[1]),n=s[r.startsWith("Company")?"parent":"company"],i=function(e,t){return a["Rep"+e+(t??"Get")]}(r,"Merged"===e[2]?"Get":e[2].slice(0,-1).slice(0,7));if(!i)throw new Error("No Reply class found for "+r+" and action "+e[2]);const o=new i({errorCode:c.success,message:e[2]+" event",[e[1]]:s});if(o.store())switch(e[2]){case"Merged":case"Suspended":this.l(r,n,o.getObject());break;case"Deleted":this.p(r,n,function(e,t){return e[function(e){switch(e){case"User":case"UserGeneral":case"UserAdvanced":return"login";case"ProviderRegistration":return"code";case"Session":return"handle";case"Machine":return"key";case"Dashcam":return"guid";default:return"id"}}(t)]}(s,r))}return o}reconnectEnabled=!0;#m=0;#v=0;keepAliveEnabled=!1;#y=0;constructor(e,t){super(e,t??Gr.URI_PROD)}dispose(){this.close().finally((()=>{super.dispose(),this.#o=this.#u=null}))}open(){return clearTimeout(this.#v),new Promise((async(e,t)=>{const s=this.state;if(s===Tr.closed){const s=this.createBaseUrl();this.#o=new WebSocket(s,this.account.machine?(this.account.machine.secret?.length?"HMAC256#"+btoa(this.account.machine.key+":"+await this.account.machine.createHmacSignature(s)):"MACHINE#"+btoa(this.account.machine.key)).replaceAll("/","|").replace(/=*$/,""):this.account.ghostId||void 0),this.#o.onopen=e=>this.#l(e),this.#o.onerror=e=>this.#w(e),this.#o.onclose=e=>this.#g(e),this.#u.set(Dr,(s=>{(0===s.errorCode?e:t)(this.account)}))}else t(new h({errorCode:c.unknown,message:"WebSocket not closed",errorDetails:{kind:"connection",connection:s}}))}))}close(){return new Promise(((e,t)=>{const s=this.state;switch(s){case Tr.opening:case Tr.open:this.#c=!1,this.reconnectEnabled=!1,this.#u.set(Ir,(s=>{(0===s.errorCode?e:t)(new Vs(s))})),this.#o.close(1e3,"Bye!");break;default:t(new Vs({errorCode:c.unknown,message:"WebSocket not open",errorDetails:{kind:"connection",connection:s}}))}}))}t(e){return Promise.resolve([n(e),e.toJSON()])}i(t){const s=t[0],r=t[1]||{};return new Promise(((n,i)=>{const o=this.state;switch(o){case Tr.open:const a=++this.#h,h=setTimeout((()=>this.#d(a,{reqId:a,errorCode:c.unknown,message:"Command timeout"})),12e4);r.reqId=a,this.#u.set(a,(e=>{clearTimeout(h),n(e)}));try{this.#o.send(s+" "+JSON.stringify(r)),this.#i=new Date}catch(t){this.#d(a,e(t))}this.resetKeepAlive();break;case Tr.closed:this.open().then((()=>this.i(t).then(n))).catch(i);break;default:i({errorCode:c.unknown,message:"Not connected",errorDetails:{kind:"connection",connection:o}})}}))}resetKeepAlive(){return clearTimeout(this.#y),this.#y=this.keepAliveEnabled&&this.#c?setTimeout((()=>this.i(["noop",{}])),3e5):0,Promise.resolve(0!==this.#y)}subscribe(e,t){return t?.length?this.command(new Xs({company:{id:e},subscriptionTypes:t})):Promise.resolve(new Ys({errorCode:c.success,message:"No subscriptions specified"}))}unsubscribe(e,t){return t?.length?this.command(new er({company:{id:e},subscriptionTypes:t})):Promise.resolve(new Ys({errorCode:c.success,message:"No subscriptions specified"}))}listSubscriptions(){return this.command(new tr)}}const Br={Company:["CompanyGeneral","CompanyDirectory","CompanyStyle","CompanyPolicy"],Asset:["AssetGeneral","AssetAdvanced","AssetDispatch"],Provider:["ProviderGeneral","ProviderAdvanced","ProviderControl"],User:["UserGeneral","UserAdvanced"]};class Ur extends lr{S;k;get autoConnect(){return this.S.reconnectEnabled}set autoConnect(e){this.S.reconnectEnabled=!!e,e&&this.S.state===Tr.closed&&this.S.open()}get socketOnline(){return this.S.state===Tr.open}get socketDetails(){return{state:this.S.state,ready:this.S.ready,lastConnected:this.S.lastConnected,lastSent:this.S.lastSent,lastReceived:this.S.lastReceived,lastMessage:this.S.lastMessage}}get socketAddress(){return this.S.baseAddress}set socketAddress(e){this.S.baseAddress=e}get restAddress(){return this.k.baseAddress}set restAddress(e){this.k.baseAddress=e}constructor(e,t,s){super(e);const r=e=>this.setAuth(e.account),n=e=>this.fire(e.type,(()=>e));this.k=new yr(this.account,t??yr.URI_PROD),this.k.on("account",r),this.S=new Gr(this.account,s??Gr.URI_PROD),this.S.on("account",r),this.S.on("open",(e=>this.#R(e.account))),this.S.on("close",(e=>this.#S(e.reply)));for(const e of["account","list","update","delete"])this.k.on(e,n),this.S.on(e,n);for(const e of["open","close","broadcast"])this.S.on(e,n);this.autoConnect=!(!this.account.ghostId&&!this.account.machine?.key)}dispose(){super.dispose(),this.k.dispose(),this.S.dispose(),this.k=this.S=null}setAuth(e){super.setAuth(e),this.k?.setAuth(this.account),this.S?.setAuth(this.account)}command(e){const t=e.getAction().object;return"Subscription"===t||"Self"===t&&this.socketOnline?this.socket(e):this.rest(e)}t(e){throw new Error("Method not implemented.")}i(e){throw new Error("Method not implemented.")}rest(e){return this.k.command(e)}socket(e){return this.S.command(e)}#R(e){this.#k.forEach(((e,t)=>{this.sync(t,o(e.reset()))})),this.#A()}#S(e){clearTimeout(this.#M)}isSynced(e,t){let s=this.S.state===Tr.open;if(s){const r=this.#D(e);s=i(t).every((e=>r.regions.includes(e)))}return s}getSyncs(e,t=!1){const s=this.#D(e),r=t?[]:s.getExpiring();return o(s.regions.filter((e=>!r.includes(e))))}async sync(e,t){const s=[],r=this.#D(e),n=i(t).filter((e=>!r.regions.includes(e)));if(n.length>0){const t=(await this.S.subscribe(e,n)).merged;r.removeExpiries(n),o(t).forEach((t=>{const r=function(e,t){return a["Pay"+e+(t??"Get")]}(t,t.startsWith("Company")?"Get":"ListByCompany");if(!r)throw new Error(`No payload class could be made for sync type ${t}`);s.push(this.command(new r({company:{id:e}})))}))}return Promise.all(s)}desync(e,t){const s=this.#D(e),r=t.reduce(((e,t)=>e.concat(fr[t]||[])),[]).filter((e=>s.regions.includes(e))).filter(((e,t,s)=>s.indexOf(e)===t));return s.addExpiries(r),r}#k=new Map;#A(){const e=[];this.S.state===Tr.open&&this.#k.forEach(((t,s)=>{const r=t.purgeExpired();r.length&&e.push(this.unsubscribe(s,r))})),Promise.allSettled(e).finally((()=>{this.#M=setTimeout((()=>this.#A()),1e4)}))}#M;#D(e){let t=this.#k.get(e);return t||this.#k.set(e,t=new br),t}subscribe(e,t){return this.S.subscribe(e,t)}unsubscribe(e,t){return this.S.unsubscribe(e,t)}listSubscriptions(){return this.S.listSubscriptions()}}
|
|
1
|
+
function e(e,t){return{errorCode:h.unknown,message:"Client exception",errorDetails:{kind:"stack",message:e?.message??"Unknonwn error",stack:e?.stack??null,value:t??null}}}function t(e){if("CompanyLabels"===(e=rr.capitalize(e)))e="CompanyStyle";else e=rr.singularize(e);return e}async function s(t){try{return await(await fetch(t)).json()}catch(t){throw e(t)}}function r(e){let t="GET",s="",r=new URLSearchParams;const n=e.getAction();switch(n.object){case"Self":"Get"==n.kind?(t="GET",s="self"):(t="POST",s="self/"+n.filter.toLowerCase());break;case"Subscription":throw new Error(n.object+" only supported by TrakitSocketCommander",{cause:n});case"DispatchJob":switch(n.filter){case"Cancel":t=n.batch?"PATCH":"POST",s+="/cancel";break;case"Change":t=n.batch?"PATCH":"PUT"}default:if(s=[...n.object.match(yr)].map((e=>rr.pluralize(e.toLowerCase()))).join("/"),!n.batch){switch(e.getKey&&(s+="/"+e.getKey()),n.kind){case"Get":break;case"List":switch(n.filter){case"BillingProfile":case"BillingProfile":s=n.object in gr?gr[n.object].replace("{profileId}",e.billingProfile.id):`billing/profiles/${e.billingProfile.id}/${s}`;break;case"Company":s=n.object in mr?mr[n.object].replace("{companyId}",e.company.id):`companies/${e.company.id}/${s}`;break;case"Asset":s=n.object in wr?wr[n.object].replace("{assetId}",e.asset.id):`assets/${e.asset.id}/${s}`;break;case"User":s=`users/${encodeURIComponent(e.user.login)}/${s}`}if(rr.isntNaN(e?.after?.valueOf())&&r.set("after",e.after.toISOString()),rr.isntNaN(e?.before?.valueOf())&&r.set("before",e.before.toISOString()),rr.isntNaN(e?.lowest)&&r.set("lowest",e.lowest),rr.isntNaN(e?.highest)&&r.set("highest",e.highest),e?.first&&r.set("first",e.first),e?.last&&r.set("last",e.last),e?.labels?.length&&r.set("labels",e.labels.join(",")),e?.references?.size)for(const[t,s]of e.references.entries())r.set(t,s);break;case"Merge":t="POST";break;case"Delete":t="DELETE";break;case"Restore":t="PATCH",s+="/restore";break;case"Suspend":t="PATCH",s+="/suspend";break;case"Reactivate":t="PATCH",s+="/revive"}break}switch(t="PATCH",n.kind){case"Get":case"List":t="GET";break;case"Merge":break;case"Delete":t="DELETE";break;case"Restore":s+="/restore";break;case"Suspend":s+="/suspend";break;case"Reactivate":s+="/revive"}}return[t,r.size?s+"?"+r.toString():s]}async function n(e,t,s="GET",r=null,n=null){const i=new Map(n),o={method:s,cache:"no-store",mode:"cors",credentials:"omit"};return r&&"GET"!==s&&(o.body=r),e.machine?i.set("Authorization",e.machine.secret?.length?"HMAC256 "+btoa(e.machine.key+":"+await e.machine.createHmacSignature(t,s,o.body?.length??0,new Date)):"Machine "+btoa(e.machine.key)):e.ghostId&&i.set("Authorization","Bearer "+e.ghostId),i.size>0&&(o.headers=new Headers([...i.entries()])),new Request(t,o)}function i(e){const t=e.getAction(),s=new Error("no command supported for "+e.constructor.name,{cause:t});switch(t.object){case"Subscription":switch(t.kind){case"Merge":return"subscribe";case"Delete":return"unsubscribe";case"List":return"getSubscriptionsList";default:throw s}case"Self":switch(t.filter){case"Get":return"getSessionDetails";case"Login":case"Logout":return t.filter.toLowerCase();case"Contact":case"Password":case"Preferences":return"updateOwn"+t.filter;default:throw s}case"Session":switch(t.kind){case"Get":case"List":break;case"Delete":return"killSession";default:throw s}break;case"DispatchJob":switch(t.filter){case"Cancel":case"Change":return t.kind.toLocaleLowerCase()+t.object}}switch(t.kind){case"Get":case"Merge":case"Restore":case"Suspend":return t.kind.toLocaleLowerCase()+t.object;case"Delete":return"remove"+t.object;case"Reactivate":return"revive"+t.object;case"List":return"get"+rr.pluralize(t.object)+"List"+("Company"!=(t.filter||"Company")?"By"+t.filter:"");default:throw s}}function o(e){return e.reduce(((e,t)=>e.concat(br[t]||[])),[]).filter(((e,t,s)=>s.indexOf(e)===t))}function a(e){const t=[];for(const[s,r]of Object.entries(Ur)){const n=r.map((e=>br[e])).flat();n.filter((t=>e.includes(t))).length/n.length>=.5&&t.push(s)}const s=t.reduce(((e,t)=>e.concat([t],Ur[t])),[]);for(const[r,n]of Object.entries(br))!s.includes(r)&&n.some((t=>e.includes(t)))&&t.push(r);return t}import*as c from"@trakit/commands";import{ErrorCode as h,RepSelfGet as u,ReplySync as d,ReplySyncList as l,ReplySyncGet as p,ReplySyncDelete as m,ReplySyncBatchDelete as w,PaySelfGet as g,PaySelfLogin as y,PaySelfLogout as v,PaySelfContact as f,PaySelfPassword as b,PaySelfPreferences as C,PayCompanyGet as P,PayCompanyMerge as R,PayCompanyDelete as S,PayCompanyRestore as k,PayCompanyGeneralListByCompany as A,PayCompanyGeneralGet as M,PayCompanyPolicyListByCompany as D,PayCompanyPolicyGet as I,PayCompanyStyleListByCompany as T,PayCompanyStyleGet as G,PayCompanyDirectoryListByCompany as B,PayCompanyDirectoryGet as U,PayCompanyResellerGet as E,PayCompanyResellerMerge as J,PayCompanyResellerDelete as L,PayCompanyResellerRestore as x,PayContactListByCompany as _,PayContactGet as N,PayContactMerge as O,PayContactDelete as F,PayContactRestore as H,PayContactBatchMerge as q,PayContactBatchDelete as $,PayUserListByCompany as W,PayUserGet as j,PayUserMerge as z,PayUserDelete as K,PayUserRestore as Z,PayUserGeneralListByCompany as Q,PayUserGeneralGet as V,PayUserAdvancedListByCompany as X,PayUserAdvancedGet as Y,PayUserGroupListByCompany as ee,PayUserGroupGet as te,PayUserGroupMerge as se,PayUserGroupDelete as re,PayUserGroupRestore as ne,PayMachineListByCompany as ie,PayMachineGet as oe,PayMachineMerge as ae,PayMachineDelete as ce,PayMachineRestore as he,PaySessionListByCompany as ue,PaySessionListByUser as de,PaySessionDelete as le,PayIconListByCompany as pe,PayIconGet as me,PayIconMerge as we,PayIconDelete as ge,PayIconRestore as ye,PayPictureListByCompany as ve,PayPictureGet as fe,PayPictureMerge as be,PayPictureDelete as Ce,PayPictureRestore as Pe,PayDocumentListByCompany as Re,PayDocumentGet as Se,PayDocumentMerge as ke,PayDocumentDelete as Ae,PayDocumentRestore as Me,PayFormTemplateListByCompany as De,PayFormTemplateGet as Ie,PayFormTemplateMerge as Te,PayFormTemplateDelete as Ge,PayFormTemplateRestore as Be,PayFormResultListByCompany as Ue,PayFormResultGet as Ee,PayFormResultMerge as Je,PayFormResultBatchMerge as Le,PayFormResultDelete as xe,PayFormResultRestore as _e,PayDashcamListByCompany as Ne,PayDashcamGet as Oe,PayDashcamLiveListByCompany as Fe,PayAssetListByCompany as He,PayAssetGet as qe,PayAssetMerge as $e,PayAssetBatchMerge as We,PayAssetDelete as je,PayAssetRestore as ze,PayAssetSuspend as Ke,PayAssetReactivate as Ze,PayAssetGeneralListByCompany as Qe,PayAssetGeneralGet as Ve,PayAssetAdvancedListByCompany as Xe,PayAssetAdvancedGet as Ye,PayAssetDispatchMerge as et,PayDispatchTaskListByCompany as tt,PayDispatchTaskListByAsset as st,PayDispatchTaskGet as rt,PayDispatchTaskMerge as nt,PayDispatchTaskBatchMerge as it,PayDispatchTaskDelete as ot,PayDispatchTaskRestore as at,PayDispatchJobListByCompany as ct,PayDispatchJobListByAsset as ht,PayDispatchJobGet as ut,PayDispatchJobMerge as dt,PayDispatchJobBatchMerge as lt,PayDispatchJobDelete as pt,PayDispatchJobRestore as mt,PayDispatchJobChange as wt,PayDispatchJobCancel as gt,PayAssetMessageListByCompany as yt,PayAssetMessageListByAsset as vt,PayAssetMessageGet as ft,PayAssetMessageMerge as bt,PayAssetMessageBatchMerge as Ct,PayAssetMessageDelete as Pt,PayAssetMessageRestore as Rt,PayPlaceListByCompany as St,PayPlaceGet as kt,PayPlaceMerge as At,PayPlaceDelete as Mt,PayPlaceRestore as Dt,PayProviderListByCompany as It,PayProviderGet as Tt,PayProviderMerge as Gt,PayProviderBatchMerge as Bt,PayProviderBatchDelete as Ut,PayProviderDelete as Et,PayProviderRestore as Jt,PayProviderGeneralListByCompany as Lt,PayProviderGeneralGet as xt,PayProviderAdvancedListByCompany as _t,PayProviderAdvancedGet as Nt,PayProviderControlListByCompany as Ot,PayProviderControlGet as Ft,PayProviderScriptListByCompany as Ht,PayProviderScriptGet as qt,PayProviderScriptMerge as $t,PayProviderScriptDelete as Wt,PayProviderScriptRestore as jt,PayProviderConfigListByCompany as zt,PayProviderConfigGet as Kt,PayProviderConfigMerge as Zt,PayProviderConfigBatchMerge as Qt,PayProviderConfigDelete as Vt,PayProviderConfigRestore as Xt,PayProviderConfigurationListByCompany as Yt,PayProviderConfigurationGet as es,PayProviderConfigurationMerge as ts,PayProviderConfigurationBatchMerge as ss,PayProviderConfigurationDelete as rs,PayProviderConfigurationRestore as ns,PayProviderRegistrationListByCompany as is,PayProviderRegistrationGet as os,PayProviderRegistrationMerge as as,PayProviderRegistrationDelete as cs,PayBehaviourListByCompany as hs,PayBehaviourGet as us,PayBehaviourMerge as ds,PayBehaviourBatchMerge as ls,PayBehaviourDelete as ps,PayBehaviourRestore as ms,PayBehaviourScriptListByCompany as ws,PayBehaviourScriptGet as gs,PayBehaviourScriptMerge as ys,PayBehaviourScriptDelete as vs,PayBehaviourScriptRestore as fs,PayBehaviourLogListByAsset as bs,PayBehaviourLogBatchDeleteByAsset as Cs,PayBehaviourLogListByBehaviour as Ps,PayBehaviourLogBatchDeleteByBehaviour as Rs,PayBehaviourLogListByScript as Ss,PayBehaviourLogBatchDeleteByScript as ks,PayReportTemplateListByCompany as As,PayReportTemplateGet as Ms,PayReportTemplateMerge as Ds,PayReportTemplateDelete as Is,PayReportTemplateRestore as Ts,PayReportScheduleListByCompany as Gs,PayReportScheduleGet as Bs,PayReportScheduleMerge as Us,PayReportScheduleDelete as Es,PayReportScheduleRestore as Js,PayReportResultListByCompany as Ls,PayReportResultGet as xs,PayReportResultMerge as _s,PayReportResultDelete as Ns,PayReportResultRestore as Os,PayMaintenanceScheduleListByCompany as Fs,PayMaintenanceScheduleGet as Hs,PayMaintenanceScheduleMerge as qs,PayMaintenanceScheduleDelete as $s,PayMaintenanceScheduleRestore as Ws,PayMaintenanceJobListByCompany as js,PayMaintenanceJobGet as zs,PayMaintenanceJobMerge as Ks,PayMaintenanceJobDelete as Zs,PayMaintenanceJobRestore as Qs,SubscriptionType as Vs,Reply as Xs,PaySubscriptionMerge as Ys,RepSubscription as er,PaySubscriptionDelete as tr,PaySubscriptionList as sr}from"@trakit/commands";import{utility as rr,Machine as nr,serialization as ir}from"@trakit/objects";class or{type;constructor(e){this.type=e}}class ar extends or{kind;companyId;constructor(e,t,s){super(e),this.kind=t,this.companyId=s}}class cr extends or{account;constructor(e,t){super(e),this.account=t}}class hr extends ar{objects;constructor(e,t,s,r){super(e,t,s),this.objects=r}}class ur extends ar{object;constructor(e,t,s,r){super(e,t,s),this.object=r}}class dr extends ar{key;constructor(e,t,s,r){super(e,t,s),this.key=r}}class lr{account;baseAddress;query=new Map;headers=new Map;createBaseUrl(e){const t=this.baseAddress?new URL(e??"",this.baseAddress):new URL(e),s=new Map(this.query);for(const[e,r]of s)t.searchParams.append(e,r);return t}constructor(e,t){this.baseAddress=t?new URL(t):null,this.setAuth(e)}setAuth(e){e instanceof u?this.account=e:"string"==typeof e?this.setAuth({ghostId:e}):e instanceof nr||e?.key?this.setAuth({machine:e.toJSON?.()??e}):e?.machine?.key||e?.ghostId?this.setAuth(new u({errorCode:h.success,message:"Authenticated via "+(e?.machine?.key?"Machine":"Session"),...e.toJSON?.()??e})):this.setAuth(new u)}command(t){return new Promise((async(s,r)=>{let n=null,i=null,o=null;try{n=await this.t(t)}catch(t){i=e(t)}try{i=i??await this.i(n)}catch(s){o=t.createReply(s instanceof Error?e(s):s)}try{o=o??t.createReply(i)}catch(s){o=t.createReply(e(s,i))}(o.errorCode===h.success?s:r)(o)}))}}class pr extends lr{o=new Map;h(e){e&&this.setAuth(new u({serverTime:this.account.serverTime?.toISOString()??null,ghostId:this.account.ghostId??null,expiry:this.account.expiry?.toISOString()??null,user:this.account.userLogin?{login:this.account.userLogin}:null,machine:this.account.machineKey?{key:this.account.machineKey}:null,sessionPolicy:this.account.sessionPolicy?.toJSON()??null,passwordPolicy:this.account.passwordPolicy?.toJSON()??null})),this.fire("account",(()=>new cr("account",this.account)))}u(e,t,s){this.fire("list",(()=>new hr("list",e,t,s)))}l(e,t,s){this.fire("update",(()=>new ur("update",e,t,s)))}p(e,t,s){this.fire("delete",(()=>new dr("delete",e,t,s)))}on(e,t){let s=this.o.get(e);s||this.o.set(e,s=[]);const r=s.includes(t);return r||s.push(t),!r}off(e,t){const s=this.o.get(e);if(s?.length){if(t){const e=s.indexOf(t);return!!(e>-1&&s.splice(e,1))}return!(s.length=0)}return!1}fire(e,t){const s=this.o.get(e)?.slice();if(s?.length){const e=t();s.forEach((t=>t.call(this,e)),this)}}handles(e,t){return this.o.get(e)?.includes(t)??!1}dispose(){for(const e of[...this.o.keys()])this.off(e)}async command(e){const t=await super.command(e);if(t instanceof d&&t.store()){const s=e.getAction(),r=t.getCompanyId();t instanceof l?s.filter?t.getList().forEach((e=>this.l(s.object,r,e))):this.u(s.object,r,t.getList()):t instanceof p?this.l(s.object,r,t.getObject()):t instanceof m?this.p(s.object,r,t.getKey()):t instanceof w&&t.getResults().forEach((e=>this.p(s.object,e.getCompanyId(),e.getKey())))}return t}async selfDetails(){const e=await this.command(new g);return this.setAuth(e),this.h(),e}async login(e,t,s){const r=await this.command(new y({username:e,password:t,userAgent:s??null}));return this.setAuth(r),this.h(),r}logout(){const e=this.command(new v);return this.setAuth(),this.h(),e}updateContact(e,t,s,r,n,i,o,a,c,h,u){return this.command(new f({contact:{name:e??null,notes:t??null,otherNames:s??null,emails:r??null,phones:n??null,addresses:i??null,urls:o??null,dates:a??null,options:c??null,roles:h??null,pictures:u??null}}))}updatePassword(e,t){return this.command(new b({current:e,password:t}))}updatePreferences(e,t,s,r,n,i){return this.command(new C({language:e??null,timezone:t?.code??t??null,notify:s?.map((e=>e.toJSON?.()??e))??null,formats:r instanceof Map?ir.fromMap(r):r??null,measurements:n instanceof Map?ir.fromMap(n):n??null,options:i instanceof Map?ir.fromMap(i):i??null}))}getCompany(e){return this.command(new P({company:{id:e}}))}mergeCompany(e){return this.command(new R({company:e}))}removeCompany(e){return this.command(new S({company:{id:e}}))}restoreCompany(e){return this.command(new k({company:{id:e}}))}listCompanyGenerals(e,t){return this.command(new A({...t,company:{id:e}}))}getCompanyGeneral(e){return this.command(new M({company:{id:e}}))}listCompanyPolicies(e,t){return this.command(new D({...t,company:{id:e}}))}getCompanyPolicy(e){return this.command(new I({company:{id:e}}))}listCompanyStyles(e,t){return this.command(new T({...t,company:{id:e}}))}getCompanyStyle(e){return this.command(new G({company:{id:e}}))}listCompanyDirectories(e,t){return this.command(new B({...t,company:{id:e}}))}getCompanyDirectory(e){return this.command(new U({company:{id:e}}))}getReseller(e){return this.command(new E({company:{id:e}}))}mergeReseller(e){return this.command(new J({company:e}))}removeReseller(e){return this.command(new L({company:{id:e}}))}restoreReseller(e){return this.command(new x({company:{id:e}}))}listContacts(e,t){return this.command(new _({...t,company:{id:e}}))}getContact(e){return this.command(new N({contact:{id:e}}))}mergeContact(e){return this.command(new O({contact:e}))}removeContact(e){return this.command(new F({contact:{id:e}}))}restoreContact(e){return this.command(new H({contact:{id:e}}))}multiMergeContact(e){return this.command(new q({contacts:e}))}multiRemoveContact(e){return this.command(new $({contacts:e.map((e=>({id:e})))}))}listUsers(e,t){return this.command(new W({...t,company:{id:e}}))}getUser(e){return this.command(new j({user:{login:e}}))}mergeUser(e){return this.command(new z({user:e}))}removeUser(e){return this.command(new K({user:{login:e}}))}restoreUser(e){return this.command(new Z({user:{login:e}}))}listUserGenerals(e,t){return this.command(new Q({...t,company:{id:e}}))}getUserGeneral(e){return this.command(new V({user:{login:e}}))}listUserAdvanceds(e,t){return this.command(new X({...t,company:{id:e}}))}getUserAdvanced(e){return this.command(new Y({user:{login:e}}))}listUserGroups(e,t){return this.command(new ee({...t,company:{id:e}}))}getUserGroup(e){return this.command(new te({userGroup:{id:e}}))}mergeUserGroup(e){return this.command(new se({userGroup:e}))}removeUserGroup(e){return this.command(new re({userGroup:{id:e}}))}restoreUserGroup(e){return this.command(new ne({userGroup:{id:e}}))}listMachines(e,t){return this.command(new ie({...t,company:{id:e}}))}getMachine(e){return this.command(new oe({machine:{id:e}}))}mergeMachine(e){return this.command(new ae({machine:e}))}removeMachine(e){return this.command(new ce({machine:{id:e}}))}restoreMachine(e){return this.command(new he({machine:{id:e}}))}listSessions(e,t){return this.command(new ue({...t,company:{id:e}}))}listSessionsByUser(e,t){return this.command(new de({...t,user:{login:e}}))}killSession(e){return this.command(new le({session:{handle:e}}))}listIcons(e,t){return this.command(new pe({...t,company:{id:e}}))}getIcon(e){return this.command(new me({icon:{id:e}}))}mergeIcon(e){return this.command(new we({icon:e}))}removeIcon(e){return this.command(new ge({icon:{id:e}}))}restoreIcon(e){return this.command(new ye({icon:{id:e}}))}listPictures(e,t){return this.command(new ve({...t,company:{id:e}}))}getPicture(e){return this.command(new fe({picture:{id:e}}))}mergePicture(e){return this.command(new be({picture:e}))}removePicture(e){return this.command(new Ce({picture:{id:e}}))}restorePicture(e){return this.command(new Pe({picture:{id:e}}))}listDocuments(e,t){return this.command(new Re({...t,company:{id:e}}))}getDocument(e){return this.command(new Se({document:{id:e}}))}mergeDocument(e){return this.command(new ke({document:e}))}removeDocument(e){return this.command(new Ae({document:{id:e}}))}restoreDocument(e){return this.command(new Me({document:{id:e}}))}listFormTemplates(e,t){return this.command(new De({...t,company:{id:e}}))}getFormTemplate(e){return this.command(new Ie({formTemplate:{id:e}}))}mergeFormTemplate(e){return this.command(new Te({formTemplate:e}))}removeFormTemplate(e){return this.command(new Ge({formTemplate:{id:e}}))}restoreFormTemplate(e){return this.command(new Be({formTemplate:{id:e}}))}listFormResults(e,t){return this.command(new Ue({...t,company:{id:e}}))}getFormResult(e){return this.command(new Ee({formResult:{id:e}}))}mergeFormResult(e){return this.command(new Je({formResult:e}))}multiMergeFormResult(e){return this.command(new Le({formResult:{id:e}}))}removeFormResult(e){return this.command(new xe({formResult:{id:e}}))}restoreFormResult(e){return this.command(new _e({formResult:{id:e}}))}listDashcamDatas(e,t){return this.command(new Ne({...t,company:{id:e}}))}getDashcamData(e){return this.command(new Oe({dashcam:{guid:e}}))}listDashcamLives(e,t){return this.command(new Fe({...t,company:{id:e}}))}listAssets(e,t){return this.command(new He({...t,company:{id:e}}))}getAsset(e){return this.command(new qe({asset:{id:e}}))}mergeAsset(e){return this.command(new $e({asset:e}))}multiMergeAsset(e){return this.command(new We({assets:e}))}removeAsset(e){return this.command(new je({asset:{id:e}}))}restoreAsset(e){return this.command(new ze({asset:{id:e}}))}suspendAsset(e){return this.command(new Ke({asset:{id:e}}))}reviveAsset(e){return this.command(new Ze({asset:{id:e}}))}searchAssets(e,t){}listAssetGenerals(e,t){return this.command(new Qe({...t,company:{id:e}}))}getAssetGeneral(e){return this.command(new Ve({asset:{id:e}}))}searchAssetGenerals(e,t){}listAssetAdvanceds(e,t){return this.command(new Xe({...t,company:{id:e}}))}getAssetAdvanced(e){return this.command(new Ye({asset:{id:e}}))}searchAssetAdvanceds(e,t){}mergeAssetDispatch(e){return this.command(new et({assetDispatch:e}))}listDispatchTasks(e,t){return this.command(new tt({...t,company:{id:e}}))}getDispatchTasksByAsset(e,t){return this.command(new st({...t,asset:{id:e}}))}getDispatchTask(e){return this.command(new rt({dispatchTask:{id:e}}))}mergeDispatchTask(e){return this.command(new nt({dispatchTask:e}))}multiMergeDispatchTask(e){return this.command(new it({dispatchTask:{id:e}}))}removeDispatchTask(e){return this.command(new ot({dispatchTask:{id:e}}))}restoreDispatchTask(e){return this.command(new at({dispatchTask:{id:e}}))}listDispatchJobs(e,t){return this.command(new ct({...t,company:{id:e}}))}getDispatchJobsByAsset(e,t){return this.command(new ht({...t,asset:{id:e}}))}getDispatchJob(e){return this.command(new ut({dispatchJob:{id:e}}))}mergeDispatchJob(e){return this.command(new dt({dispatchJob:e}))}multiMergeDispatchJob(e){return this.command(new lt({dispatchJob:{id:e}}))}removeDispatchJob(e){return this.command(new pt({dispatchJob:{id:e}}))}restoreDispatchJob(e){return this.command(new mt({dispatchJob:{id:e}}))}changeDispatchJob(e){return this.command(new wt({dispatchJob:e}))}cancelDispatchJob(e){return this.command(new gt({dispatchJob:e}))}listAssetMessages(e,t){return this.command(new yt({...t,company:{id:e}}))}getAssetMessagesByAsset(e,t){return this.command(new vt({...t,asset:{id:e}}))}getAssetMessage(e){return this.command(new ft({message:{id:e}}))}mergeAssetMessage(e){return this.command(new bt({assetMessage:e}))}multiMergeAssetMessage(e){return this.command(new Ct({assetMessage:{id:e}}))}removeAssetMessage(e){return this.command(new Pt({assetMessage:{id:e}}))}restoreAssetMessage(e){return this.command(new Rt({assetMessage:{id:e}}))}listPlaces(e,t){return this.command(new St({...t,company:{id:e}}))}getPlace(e){return this.command(new kt({place:{id:e}}))}mergePlace(e){return this.command(new At({place:e}))}removePlace(e){return this.command(new Mt({place:{id:e}}))}restorePlace(e){return this.command(new Dt({place:{id:e}}))}listProviders(e,t){return this.command(new It({...t,company:{id:e}}))}getProvider(e){return this.command(new Tt({provider:{id:e}}))}mergeProvider(e){return this.command(new Gt({provider:e}))}multiMergeProvider(e){return this.command(new Bt({providers:e}))}multiRemoveProvider(e){return this.command(new Ut({providers:e.map((e=>({id:e})))}))}removeProvider(e){return this.command(new Et({provider:{id:e}}))}restoreProvider(e){return this.command(new Jt({provider:{id:e}}))}searchProviders(e,t){}listProviderGenerals(e,t){return this.command(new Lt({...t,company:{id:e}}))}getProviderGeneral(e){return this.command(new xt({provider:{id:e}}))}searchProviderGenerals(e,t){}listProviderAdvanceds(e,t){return this.command(new _t({...t,company:{id:e}}))}getProviderAdvanced(e){return this.command(new Nt({provider:{id:e}}))}searchProviderAdvanceds(e,t){}listProviderControls(e,t){return this.command(new Ot({...t,company:{id:e}}))}getProviderControl(e){return this.command(new Ft({provider:{id:e}}))}searchProviderControls(e,t){}listProviderScripts(e,t){return this.command(new Ht({...t,company:{id:e}}))}getProviderScript(e){return this.command(new qt({providerScript:{id:e}}))}mergeProviderScript(e){return this.command(new $t({providerScript:e}))}removeProviderScript(e){return this.command(new Wt({providerScript:{id:e}}))}restoreProviderScript(e){return this.command(new jt({providerScript:{id:e}}))}listProviderConfigs(e,t){return this.command(new zt({...t,company:{id:e}}))}getProviderConfig(e){return this.command(new Kt({providerConfig:{id:e}}))}mergeProviderConfig(e){return this.command(new Zt({providerConfig:e}))}multiMergeProviderConfig(e){return this.command(new Qt({providerConfig:{id:e}}))}removeProviderConfig(e){return this.command(new Vt({providerConfig:{id:e}}))}restoreProviderConfig(e){return this.command(new Xt({providerConfig:{id:e}}))}listProviderConfigurations(e,t){return this.command(new Yt({...t,company:{id:e}}))}getProviderConfiguration(e){return this.command(new es({providerConfiguration:{id:e}}))}mergeProviderConfiguration(e){return this.command(new ts({providerConfiguration:e}))}multiMergeProviderConfiguration(e){return this.command(new ss({providerConfiguration:{id:e}}))}removeProviderConfiguration(e){return this.command(new rs({providerConfiguration:{id:e}}))}restoreProviderConfiguration(e){return this.command(new ns({providerConfiguration:{id:e}}))}listProviderRegistration(e,t){return this.command(new is({...t,company:{id:e}}))}getProviderRegistration(e){return this.command(new os({providerRegistration:{id:e}}))}mergeProviderRegistration(e){return this.command(new as({providerRegistration:e}))}removeProviderRegistration(e){return this.command(new cs({providerRegistration:{id:e}}))}listBehaviours(e,t){return this.command(new hs({...t,company:{id:e}}))}getBehaviour(e){return this.command(new us({behaviour:{id:e}}))}mergeBehaviour(e){return this.command(new ds({behaviour:e}))}multiMergeBehaviour(e){return this.command(new ls({behaviour:{id:e}}))}removeBehaviour(e){return this.command(new ps({behaviour:{id:e}}))}restoreBehaviour(e){return this.command(new ms({behaviour:{id:e}}))}listBehaviourScripts(e,t){return this.command(new ws({...t,company:{id:e}}))}getBehaviourScript(e){return this.command(new gs({behaviourScript:{id:e}}))}mergeBehaviourScript(e){return this.command(new ys({behaviourScript:e}))}removeBehaviourScript(e){return this.command(new vs({behaviourScript:{id:e}}))}restoreBehaviourScript(e){return this.command(new fs({behaviourScript:{id:e}}))}listBehaviourAssetLogs(e,t){return this.command(new bs({...t,behaviour:{id:e}}))}clearBehaviourAssetLogs(e){return this.command(new Cs({behaviour:{id:e}}))}listBehaviourLogs(e,t){return this.command(new Ps({...t,behaviour:{id:e}}))}clearBehaviourLogs(e){return this.command(new Rs({behaviour:{id:e}}))}listBehaviourScriptLogs(e,t){return this.command(new Ss({...t,behaviourScript:{id:e}}))}clearBehaviourScriptLogs(e,t){return this.command(new ks({...t,behaviourScript:{id:e}}))}listReportTemplates(e,t){return this.command(new As({...t,company:{id:e}}))}getReportTemplate(e){return this.command(new Ms({reportTemplate:{id:e}}))}mergeReportTemplate(e){return this.command(new Ds({reportTemplate:e}))}removeReportTemplate(e){return this.command(new Is({reportTemplate:{id:e}}))}restoreReportTemplate(e){return this.command(new Ts({reportTemplate:{id:e}}))}listReportSchedules(e,t){return this.command(new Gs({...t,company:{id:e}}))}getReportSchedule(e){return this.command(new Bs({reportSchedule:{id:e}}))}mergeReportSchedule(e){return this.command(new Us({reportSchedule:e}))}removeReportSchedule(e){return this.command(new Es({reportSchedule:{id:e}}))}restoreReportSchedule(e){return this.command(new Js({reportSchedule:{id:e}}))}listReportResults(e,t){return this.command(new Ls({...t,company:{id:e}}))}getReportResult(e){return this.command(new xs({reportResult:{id:e}}))}mergeReportResult(e){return this.command(new _s({reportResult:e}))}removeReportResult(e){return this.command(new Ns({reportResult:{id:e}}))}restoreReportResult(e){return this.command(new Os({reportResult:{id:e}}))}listMaintenanceSchedules(e,t){return this.command(new Fs({...t,company:{id:e}}))}getMaintenanceSchedule(e){return this.command(new Hs({maintenanceSchedule:{id:e}}))}mergeMaintenanceSchedule(e){return this.command(new qs({maintenanceSchedule:e}))}removeMaintenanceSchedule(e){return this.command(new $s({maintenanceSchedule:{id:e}}))}restoreMaintenanceSchedule(e){return this.command(new Ws({maintenanceSchedule:{id:e}}))}listMaintenanceJobs(e,t){return this.command(new js({...t,company:{id:e}}))}getMaintenanceJob(e){return this.command(new zs({maintenanceJob:{id:e}}))}mergeMaintenanceJob(e){return this.command(new Ks({maintenanceJob:e}))}removeMaintenanceJob(e){return this.command(new Zs({maintenanceJob:{id:e}}))}restoreMaintenanceJob(e){return this.command(new Qs({maintenanceJob:{id:e}}))}}const mr={Company:"/companies/generals?parent={companyId}",CompanyGeneral:"/companies/generals?parent={companyId}",CompanyDirectory:"/companies/directory?parent={companyId}",CompanyStyle:"/companies/styles?parent={companyId}",CompanyPolicy:"/companies/policies?parent={companyId}",CompanyReseller:"/companies/resellers?parent={companyId}",Contact:"/companies/{companyId}/contacts",Machine:"/companies/{companyId}/machines",User:"/companies/{companyId}/users",UserGeneral:"/companies/{companyId}/users/generals",UserAdvanced:"/companies/{companyId}/users/advanceds",UserGroup:"/companies/{companyId}/users/groups",Session:"/companies/{companyId}/users/sessions",Dashcam:"/companies/{companyId}/dashcams",DashcamLive:"/companies/{companyId}/dashcams/live",Icon:"/companies/{companyId}/icons",Picture:"/companies/{companyId}/pictures",Document:"/companies/{companyId}/documents",FormTemplate:"/companies/{companyId}/forms/templates",FormResult:"/companies/{companyId}/forms",Asset:"/companies/{companyId}/assets",AssetGeneral:"/companies/{companyId}/assets/generals",AssetAdvanced:"/companies/{companyId}/assets/advanceds",AssetDispatch:"/companies/{companyId}/assets/dispatches",AssetMessage:"/companies/{companyId}/assets/messages",AssetAlert:"/companies/{companyId}/assets/alerts",DispatchTask:"/companies/{companyId}/assets/dispatch/tasks",DispatchJob:"/companies/{companyId}/assets/dispatch/jobs",MaintenanceSchedule:"/companies/{companyId}/maintenance/schedules",MaintenanceJob:"/companies/{companyId}/maintenance/jobs",Place:"/companies/{companyId}/places",Behaviour:"/companies/{companyId}/behaviours",BehaviourScript:"/companies/{companyId}/behaviours/scripts",BehaviourLog:"",Provider:"/companies/{companyId}/providers",ProviderGeneral:"/companies/{companyId}/providers/generals",ProviderAdvanced:"/companies/{companyId}/providers/advanceds",ProviderControl:"/companies/{companyId}/providers/controls",ProviderConfiguration:"/companies/{companyId}/providers/configurations",ProviderConfigurationType:"",ProviderScript:"/companies/{companyId}/providers/scripts",ProviderConfig:"/companies/{companyId}/providers/configs",ProviderRegistration:"/companies/{companyId}/providers/registrations",ReportTemplate:"/companies/{companyId}/reports/templates",ReportSchedule:"/companies/{companyId}/reports/schedules",ReportResult:"/companies/{companyId}/reports/results",BillingProfile:"/companies/{companyId}/billing/profiles",BillingReport:"/companies/{companyId}/billing/profiles/reports",BillableHostingRule:"",BillableHostingLicense:""},wr={AssetMessage:"/assets/{assetId}/messages",DispatchTask:"/assets/{assetId}/dispatch/tasks",DispatchJob:"/assets/{assetId}/dispatch/jobs",FormResult:"/assets/{assetId}/forms",MaintenanceJob:"/assets/{assetId}/maintenance/jobs"},gr={BillingHosting:"/billing/profiles/{profileId}/rules",BillingLicense:"/billing/profiles/{profileId}/licenses",BillingReport:"/billing/profiles/{profileId}/reports"},yr=/[A-Z][a-z]+/;class vr extends pr{static URI_PROD="https://rest.trakit.ca/";static URI_BETA="https://mindflayer.trakit.ca/";constructor(e,t){super(e,t??vr.URI_PROD)}t(e){const[t,s]=r(e);return n(this.account,this.createBaseUrl(s),t,"GET"===t?null:JSON.stringify(e.toJSON()),this.headers)}i(e){return s(e)}}const fr=/^(.+?)(Merged|Deleted|Suspended)$/,br={Company:[Vs.companyGeneral,Vs.companyLabels,Vs.companyPolicies],CompanyGeneral:[Vs.companyGeneral],CompanyDirectory:[],CompanyStyle:[Vs.companyLabels],CompanyPolicy:[Vs.companyPolicies],CompanyReseller:[Vs.companyReseller],Contact:[Vs.contact],Machine:[Vs.machine],User:[Vs.userGeneral,Vs.userAdvanced],UserGeneral:[Vs.userGeneral],UserAdvanced:[Vs.userAdvanced],UserGroup:[Vs.userGroup],Session:[],Dashcam:[],Icon:[Vs.icon],Picture:[Vs.picture],Document:[Vs.document],FormTemplate:[Vs.formTemplate],FormResult:[Vs.formResult],Asset:[Vs.assetGeneral,Vs.assetAdvanced,Vs.assetDispatch],AssetGeneral:[Vs.assetGeneral],AssetAdvanced:[Vs.assetAdvanced],AssetDispatch:[Vs.assetDispatch],AssetMessage:[Vs.assetMessage],AssetAlert:[],DispatchTask:[Vs.dispatchTask],DispatchJob:[Vs.dispatchJob],MaintenanceSchedule:[Vs.maintenanceSchedule],MaintenanceJob:[Vs.maintenanceJob],Place:[Vs.placeGeneral],BehaviourScript:[Vs.behaviourScript],Behaviour:[Vs.behaviour],BehaviourLog:[Vs.behaviourLog],Provider:[Vs.providerGeneral,Vs.providerAdvanced,Vs.providerControl],ProviderGeneral:[Vs.providerGeneral],ProviderAdvanced:[Vs.providerAdvanced],ProviderControl:[Vs.providerControl],ProviderConfiguration:[Vs.providerConfiguration],ProviderConfigurationType:[],ProviderScript:[Vs.providerScript],ProviderConfig:[Vs.providerConfig],ProviderRegistration:[Vs.providerRegistration],ReportTemplate:[Vs.reportTemplate],ReportSchedule:[Vs.reportSchedule],ReportResult:[Vs.reportResult],BillingProfile:[Vs.billingProfile],BillingReport:[Vs.billingReport],BillableHostingRule:[Vs.billingHosting],BillableHostingLicense:[Vs.billingLicense]};class Cr{#e=new Map;get regions(){return[...this.#e.keys()]}getExpired(){const e=new Date,t=[];for(let[s,r]of this.#e)r&&r<e&&t.push(s);return t}purgeExpired(){const e=this.getExpired();return e.forEach((e=>this.#e.delete(e))),e}getExpiring(){const e=[];for(let[t,s]of this.#e)s&&e.push(t);return e}#t(e,t){return t=t||null,this.#e.set(e,t),t}addExpiry(e){return this.#t(e,new Date((new Date).valueOf()+3e5))}addExpiries(e){return e.map((e=>this.addExpiry(e)))}removeExpiry(e){const t=this.#e.get(e);return this.#t(e),t||null}removeExpiries(e){return e.map((e=>this.removeExpiry(e)))}reset(){const e=[];for(let[t,s]of this.#e)s||e.push(t);return this.#e.clear(),e}}var Pr;!function(e){e.maintenance="maintenance",e.upgrade="upgrade"}(Pr||(Pr={}));class Rr{static fromJson(e){switch(e?.kind){case Pr.maintenance:return new Sr(e);case Pr.upgrade:return new kr(e);default:throw new Error(`Unknown broadcast type: ${e?.kind}`)}}kind;serverTime;message;constructor(e){this.kind=e?.kind,this.serverTime=rr.date(e?.serverTime),this.message=e?.message??""}}class Sr extends Rr{starting;ending;constructor(e){super(e),this.starting=rr.date(e?.starting),this.ending=rr.date(e?.ending)}}class kr extends Rr{eta;reload;constructor(e){super(e),this.eta=rr.date(e?.eta),this.reload=!!e?.reload}}class Ar extends or{name;body;constructor(e,t,s){super(e),this.name=t,this.body=s}}class Mr extends or{reply;constructor(e,t){super(e),this.reply=t}}class Dr extends or{broadcast;constructor(e,t){super(e),this.broadcast=Rr.fromJson(t)}}const Ir="connection",Tr="dis"+Ir;var Gr;!function(e){e[e.opening=WebSocket.CONNECTING]="opening",e[e.open=WebSocket.OPEN]="open",e[e.closing=WebSocket.CLOSING]="closing",e[e.closed=WebSocket.CLOSED]="closed"}(Gr||(Gr={}));class Br extends pr{static URI_PROD="wss://socket.trakit.ca/";static URI_BETA="wss://kraken.trakit.ca/";static msgNameToSyncName(e){const s=fr.exec(e);return 3===s?.length?t(s[1])||null:void 0}#s=new Date(NaN);#r=new Date(NaN);#n="";#i=new Date(NaN);get lastConnected(){return this.#s}get lastReceived(){return this.#r}get lastMessage(){return this.#n}get lastSent(){return this.#i}get state(){switch(this.#o?.readyState){case WebSocket.CONNECTING:return Gr.opening;case WebSocket.OPEN:return this.#a?Gr.open:Gr.opening;case WebSocket.CLOSING:return Gr.closing;default:return Gr.closed}}get ready(){return this.#a&&this.#c}m(e){const t=this.o.get("open");if(t?.length){const s=new cr("open",e);t.forEach((e=>e.call(this,s)))}}v(e){const t=this.o.get("close");if(t?.length){const s=new Mr("close",e);t.forEach((e=>e.call(this,s)))}}C(e,t){const s=this.o.get("message");if(s?.length){const r=new Ar("message",e,t);s.forEach((e=>e.call(this,r)))}}P(e){const t=this.o.get("error");if(t?.length){const s=new Mr("error",e);t.forEach((e=>e.call(this,s)))}}R(e){const t=this.o.get("broadcast");if(t?.length){const s=new Dr("broadcast",e);t.forEach((e=>e.call(this,s)))}}#h=0;#u=new Map;#d(e,t){return this.#u.get(e)?.(t),this.#u.delete(e)}#o;#a=!1;#c=!0;#l(e){this.#o.onopen=null,this.#o.onmessage=e=>this.#p(e),this.#m=0}#w(e){this.P(new Xs({errorCode:h.service,message:"WebSocket error",errorDetails:{kind:"connection",state:this.state,reconnect:this.reconnectEnabled}}))}#g(e){clearTimeout(this.#y),clearTimeout(this.#v),this.#a=!1,this.#m=this.#m?2*this.#m:this.lastReceived?(new Date).valueOf()-this.lastReceived.valueOf():5e3;const t=Math.min(this.#m,3e5),s={kind:"connection",state:Gr.closed,code:e.code,reason:e.reason,wasClean:e.wasClean,reconnect:this.reconnectEnabled,retry:(new Date).valueOf()+t},r={errorCode:h.success,message:"Disconnected",errorDetails:s};for(const e of[...this.#u.keys()].sort())this.#d(e,e===Tr?r:{...r,reqId:e,errorCode:h.service,errorDetails:{...s}});this.v?.(new Xs(r)),this.#v=this.reconnectEnabled&&this.#c?setTimeout((()=>this.open()),t,this):0,this.#o=this.#o.onopen=this.#o.onerror=this.#o.onclose=this.#o.onmessage=null}#p(e){this.#r=new Date;const t=e.data.substring(0,e.data.indexOf(" ")),s=JSON.parse(e.data.substring(t.length+1));switch(this.#n=t,"connectionResponse"!==t&&"noopResponse"!==t&&this.C(t,s),t){case"connectionResponse":this.#f(s),this.#s=new Date(this.#r),this.#a=!0,this.#d(Ir,s),this.h(),this.m(this.account);break;case"loginResponse":case"getSessionDetailsResponse":this.#f(s),this.h();break;case"updateOwnPasswordResponse":this.#c||(this.#c=0===s.errorCode);break;case"logoutResponse":this.close();case"sessionEnded":this.#c=!1,this.#f(s),this.h();break;case"sessionGeneralMerged":this.#b([,"userGeneral","Merged"],this.#C(s)),this.h(!0);break;case"sessionAdvancedMerged":this.#b([,"userAdvanced","Merged"],this.#P(s)),this.h(!0);break;case"sessionMachineMerged":this.#b([,"machine","Merged"],this.#P(s)),this.h(!0);break;case"broadcast":this.R(s)}if(t.endsWith("Response"))this.#d(s.reqId,s);else if(!t.startsWith("session")){const e=fr.exec(t);e?.length&&this.#b(e,s)}this.resetKeepAlive()}#f(e){e.user&&this.#b([,"user","Merged"],this.#P(this.#C(e.user))),e.machine&&this.#b([,"machine","Merged"],this.#P(e.machine)),this.setAuth(new u(e)),this.#c=0===this.account.errorCode&&!this.account.user?.passwordExpired}#C(e){if(e?.contact){const t=e.contact;return this.#b([,"contact","Merged"],t),{...e,contact:t.id}}return e}#P(e){return e?.groups?.length?{...e,groups:e.groups.map((e=>(this.#b([,"userGroup","Merged"],e),e.id)))}:e}#b(e,s){const r=t(e[1]),n=s[r.startsWith("Company")?"parent":"company"],i=function(e,t){return c["Rep"+e+(t??"Get")]}(r,"Merged"===e[2]?"Get":e[2].slice(0,-1).slice(0,7));if(!i)throw new Error("No Reply class found for "+r+" and action "+e[2]);const o=new i({errorCode:h.success,message:e[2]+" event",[e[1]]:s});if(o.store())switch(e[2]){case"Merged":case"Suspended":this.l(r,n,o.getObject());break;case"Deleted":this.p(r,n,function(e,t){return e[function(e){switch(e){case"User":case"UserGeneral":case"UserAdvanced":return"login";case"ProviderRegistration":return"code";case"Session":return"handle";case"Machine":return"key";case"Dashcam":return"guid";default:return"id"}}(t)]}(s,r))}return o}reconnectEnabled=!0;#m=0;#v=0;keepAliveEnabled=!1;#y=0;constructor(e,t){super(e,t??Br.URI_PROD)}dispose(){this.close().finally((()=>{super.dispose(),this.#o=this.#u=null}))}open(){return clearTimeout(this.#v),new Promise((async(e,t)=>{const s=this.state;if(s===Gr.closed){const s=this.createBaseUrl();this.#o=new WebSocket(s,this.account.machine?(this.account.machine.secret?.length?"HMAC256#"+btoa(this.account.machine.key+":"+await this.account.machine.createHmacSignature(s)):"MACHINE#"+btoa(this.account.machine.key)).replaceAll("/","|").replace(/=*$/,""):this.account.ghostId||void 0),this.#o.onopen=e=>this.#l(e),this.#o.onerror=e=>this.#w(e),this.#o.onclose=e=>this.#g(e),this.#u.set(Ir,(s=>{(0===s.errorCode?e:t)(this.account)}))}else t(new u({errorCode:h.unknown,message:"WebSocket not closed",errorDetails:{kind:"connection",connection:s}}))}))}close(){return new Promise(((e,t)=>{const s=this.state;switch(s){case Gr.opening:case Gr.open:this.#c=!1,this.reconnectEnabled=!1,this.#u.set(Tr,(s=>{(0===s.errorCode?e:t)(new Xs(s))})),this.#o.close(1e3,"Bye!");break;default:t(new Xs({errorCode:h.unknown,message:"WebSocket not open",errorDetails:{kind:"connection",connection:s}}))}}))}t(e){return Promise.resolve([i(e),e.toJSON()])}i(t){const s=t[0],r=t[1]||{};return new Promise(((n,i)=>{const o=this.state;switch(o){case Gr.open:const a=++this.#h,c=setTimeout((()=>this.#d(a,{reqId:a,errorCode:h.unknown,message:"Command timeout"})),12e4);r.reqId=a,this.#u.set(a,(e=>{clearTimeout(c),n(e)}));try{this.#o.send(s+" "+JSON.stringify(r)),this.#i=new Date}catch(t){this.#d(a,e(t))}this.resetKeepAlive();break;case Gr.closed:this.open().then((()=>this.i(t).then(n))).catch(i);break;default:i({errorCode:h.unknown,message:"Not connected",errorDetails:{kind:"connection",connection:o}})}}))}resetKeepAlive(){return clearTimeout(this.#y),this.#y=this.keepAliveEnabled&&this.#c?setTimeout((()=>this.i(["noop",{}])),3e5):0,Promise.resolve(0!==this.#y)}subscribe(e,t){return t?.length?this.command(new Ys({company:{id:e},subscriptionTypes:t})):Promise.resolve(new er({errorCode:h.success,message:"No subscriptions specified"}))}unsubscribe(e,t){return t?.length?this.command(new tr({company:{id:e},subscriptionTypes:t})):Promise.resolve(new er({errorCode:h.success,message:"No subscriptions specified"}))}listSubscriptions(){return this.command(new sr)}}const Ur={Company:["CompanyGeneral","CompanyDirectory","CompanyStyle","CompanyPolicy"],Asset:["AssetGeneral","AssetAdvanced","AssetDispatch"],Provider:["ProviderGeneral","ProviderAdvanced","ProviderControl"],User:["UserGeneral","UserAdvanced"]};class Er extends pr{S;k;get autoConnect(){return this.S.reconnectEnabled}set autoConnect(e){this.S.reconnectEnabled=!!e,e&&this.S.state===Gr.closed&&this.S.open()}get socketOnline(){return this.S.state===Gr.open}get socketDetails(){return{state:this.S.state,ready:this.S.ready,lastConnected:this.S.lastConnected,lastSent:this.S.lastSent,lastReceived:this.S.lastReceived,lastMessage:this.S.lastMessage}}get socketAddress(){return this.S.baseAddress}set socketAddress(e){this.S.baseAddress=e}get restAddress(){return this.k.baseAddress}set restAddress(e){this.k.baseAddress=e}constructor(e,t,s){super(e);const r=e=>this.setAuth(e.account),n=e=>this.fire(e.type,(()=>e));this.k=new vr(this.account,t??vr.URI_PROD),this.k.on("account",r),this.S=new Br(this.account,s??Br.URI_PROD),this.S.on("account",r),this.S.on("open",(e=>this.#R(e.account))),this.S.on("close",(e=>this.#S(e.reply)));for(const e of["account","list","update","delete"])this.k.on(e,n),this.S.on(e,n);for(const e of["open","close","broadcast"])this.S.on(e,n);this.autoConnect=!(!this.account.ghostId&&!this.account.machine?.key)}dispose(){super.dispose(),this.k.dispose(),this.S.dispose(),this.k=this.S=null}setAuth(e){super.setAuth(e),this.k?.setAuth(this.account),this.S?.setAuth(this.account)}command(e){const t=e.getAction().object;return"Subscription"===t||"Self"===t&&this.socketOnline?this.socket(e):this.rest(e)}t(e){throw new Error("Method not implemented.")}i(e){throw new Error("Method not implemented.")}rest(e){return this.k.command(e)}socket(e){return this.S.command(e)}#R(e){this.#k.forEach(((e,t)=>{this.sync(t,a(e.reset()))})),this.#A()}#S(e){clearTimeout(this.#M)}isSynced(e,t){let s=this.S.state===Gr.open;if(s){const r=this.#D(e);s=o(t).every((e=>r.regions.includes(e)))}return s}getSyncs(e,t=!1){const s=this.#D(e),r=t?[]:s.getExpiring();return a(s.regions.filter((e=>!r.includes(e))))}async sync(e,t){const s=[],r=this.#D(e),n=o(t).filter((e=>!r.regions.includes(e)));if(n.length>0){const t=(await this.S.subscribe(e,n)).merged;r.removeExpiries(n),a(t).forEach((t=>{const r=function(e,t){return c["Pay"+e+(t??"Get")]}(t,t.startsWith("Company")?"Get":"ListByCompany");if(!r)throw new Error(`No payload class could be made for sync type ${t}`);s.push(this.command(new r({company:{id:e}})))}))}return Promise.all(s)}desync(e,t){const s=this.#D(e),r=t.reduce(((e,t)=>e.concat(br[t]||[])),[]).filter((e=>s.regions.includes(e))).filter(((e,t,s)=>s.indexOf(e)===t));return s.addExpiries(r),r}#k=new Map;#A(){const e=[];this.S.state===Gr.open&&this.#k.forEach(((t,s)=>{const r=t.purgeExpired();r.length&&e.push(this.unsubscribe(s,r))})),Promise.allSettled(e).finally((()=>{this.#M=setTimeout((()=>this.#A()),1e4)}))}#M;#D(e){let t=this.#k.get(e);return t||this.#k.set(e,t=new Cr),t}subscribe(e,t){return this.S.subscribe(e,t)}unsubscribe(e,t){return this.S.unsubscribe(e,t)}listSubscriptions(){return this.S.listSubscriptions()}}
|
|
2
2
|
/**
|
|
3
3
|
* Synchronization library main process.
|
|
4
4
|
* {@link https://github.com/trakitwireless/trakit-ts-sync|Client synchronization library.}
|
|
5
5
|
* Last updated on Thu Feb 27 2025 11:59:01
|
|
6
6
|
* @copyright Trak-iT Wireless Inc. 2025
|
|
7
|
-
*/const
|
|
7
|
+
*/const Jr="0.0.41";export{Cr as SubscribedRegions,lr as TrakitBaseCommander,or as TrakitEvent,cr as TrakitEventAccount,dr as TrakitEventDelete,hr as TrakitEventList,Mr as TrakitEventSocketClose,Ar as TrakitEventSocketMessage,ar as TrakitEventSync,ur as TrakitEventUpdate,pr as TrakitObjectCommander,vr as TrakitRestfulCommander,Br as TrakitSocketCommander,Gr as TrakitSocketStatus,Er as TrakitSyncCommander,e as createClientErrorResponse,n as createCorsRequest,s as fetchJsonObject,i as payloadToCommandName,r as payloadToVerbRoute,Jr as version};
|