@trakit/sync 0.0.54 → 0.0.56

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.
@@ -48,11 +48,15 @@ export declare abstract class TrakitBaseCommander<TRequest> {
48
48
  } | {
49
49
  ghostId: guid;
50
50
  } | guid | nothing): void;
51
+ /**
52
+ * Counter used to correlate requests to responses.
53
+ */
54
+ protected _commandId: number;
51
55
  /**
52
56
  * A mapping of commands that are currently executing, to ensure that duplicate commands
53
57
  * with the same payload are not sent to the underlying service multiple times concurrently.
54
58
  */
55
- _commandPromises: Map<string, Promise<Reply>>;
59
+ protected _commandPromises: Map<string, Promise<Reply>>;
56
60
  /**
57
61
  * Sends a command to the underlying service, and returns a Promise that completes when a reply is received.
58
62
  * @param payload The payload to send to the service.
@@ -73,7 +73,7 @@ export declare abstract class TrakitObjectCommander<TRequest> extends TrakitBase
73
73
  * @param userAgent Optional string to identify the client software.
74
74
  * @returns The response, which contains a SelfUser when successful.
75
75
  */
76
- login(username: string, password: string, userAgent?: string | nothing): Promise<RepSelfGet | null>;
76
+ login(username: string, password: string, userAgent?: string | nothing): Promise<RepSelfGet>;
77
77
  /**
78
78
  * Sends a logout command and removes the current {@link RepSelfGet|session information} whether successful or not.
79
79
  * @returns The logout response.
package/index.d.ts CHANGED
@@ -18,7 +18,7 @@ import { TrakitSocketCommander, TrakitSocketStatus } from "./WebSocket/TrakitSoc
18
18
  /**
19
19
  * Version number for this release.
20
20
  */
21
- export declare const version = "0.0.54";
21
+ export declare const version = "0.0.56";
22
22
  /**
23
23
  * API exports
24
24
  */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@trakit/sync",
3
3
  "type": "module",
4
- "version": "0.0.54",
4
+ "version": "0.0.56",
5
5
  "main": "./trakit-sync.min.js",
6
6
  "types": "./index.d.ts",
7
7
  "scripts": {
@@ -35,7 +35,7 @@
35
35
  "vitest": "^4.0.7"
36
36
  },
37
37
  "dependencies": {
38
- "@trakit/commands": "^0.0.29",
38
+ "@trakit/commands": "^0.0.30",
39
39
  "@trakit/objects": "^0.0.29"
40
40
  }
41
41
  }
@@ -1,7 +1,7 @@
1
- function e(e,t){return{errorCode:u.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=ir.capitalize(e)))e="CompanyStyle";else e=ir.singularize(e);return e}function s(e){const t=e.getAction();let s="GET",r=new URLSearchParams,n=[...t.object.match(yr)].map((e=>ir.pluralize(e.toLowerCase()))).join("/");switch(t.object){case"Self":"Get"==t.kind?(s="GET",n="self"):(s="POST",n="self/"+t.filter.toLowerCase());break;case"Subscription":throw new Error(t.object+" only supported by TrakitSocketCommander",{cause:t});case"DispatchJob":switch(t.filter){case"Cancel":s=t.batch?"PATCH":"POST",n+="/cancel";break;case"Change":s=t.batch?"PATCH":"PUT"}default:if(!t.batch){switch(e.getKey&&(n=ir.isCompounded(t.object)?n.replace("/","/"+e.getKey()+"/"):n+"/"+e.getKey()),t.kind){case"Get":break;case"List":switch(t.filter){case"Asset":n=t.object in wr?wr[t.object].replace("{assetId}",e.asset.id):`assets/${e.asset.id}/${n}`;break;case"BillingProfile":n=t.object in gr?gr[t.object].replace("{profileId}",e.billingProfile.id):`billing/profiles/${e.billingProfile.id}/${n}`;break;case"Company":n=t.object in mr?mr[t.object].replace("{companyId}",e.company.id):`companies/${e.company.id}/${n}`;break;case"User":n=`users/${encodeURIComponent(e.user.login)}/${n}`}if(ir.isntNaN(e?.after?.valueOf())&&r.set("after",e.after.toISOString()),ir.isntNaN(e?.before?.valueOf())&&r.set("before",e.before.toISOString()),ir.isntNaN(e?.lowest)&&r.set("lowest",e.lowest),ir.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":s="POST";break;case"Delete":s="DELETE";break;case"Restore":s="PATCH",n+="/restore";break;case"Suspend":s="PATCH",n+="/suspend";break;case"Reactivate":s="PATCH",n+="/revive"}break}switch(s="PATCH",t.kind){case"Get":case"List":s="GET";break;case"Merge":break;case"Delete":s="DELETE";break;case"Restore":n+="/restore";break;case"Suspend":n+="/suspend";break;case"Reactivate":n+="/revive"}}return[s,r.size?n+"?"+r.toString():n]}async function r(e,t){const[r,i]=s(t);return n(e.account,e.createBaseUrl(i),r,"GET"===r?null:JSON.stringify(t.toJSON()),e.headers)}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)}async function i(t){try{const s=await async function(t){try{return fetch(t)}catch(t){throw e(t)}}(t);return await s.json()}catch(t){throw e(t)}}function o(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"+ir.pluralize(t.object)+"List"+("Company"!=(t.filter||"Company")?"By"+t.filter:"");default:throw s}}function a(e){return e.reduce(((e,t)=>e.concat(Pr[t]||[])),[]).filter(((e,t,s)=>s.indexOf(e)===t))}function c(e){const t=[];for(const[s,r]of Object.entries(Er)){const n=r.map((e=>Pr[e])).flat();n.filter((t=>e.includes(t))).length/n.length>=.5&&t.push(s)}const s=t.reduce(((e,t)=>e.concat([t],Er[t])),[]);for(const[r,n]of Object.entries(Pr))!s.includes(r)&&n.some((t=>e.includes(t)))&&t.push(r);return t}import*as h from"@trakit/commands";import{ErrorCode as u,RepSelfGet as d,ReplySync as p,ReplySyncList as l,ReplySyncGet as m,ReplySyncDelete as w,ReplySyncBatchDelete as g,PaySelfGet as y,PaySelfLogin as v,PaySelfLogout as f,PaySelfContact as b,PaySelfPassword as C,PaySelfPreferences as P,PaySelfState as S,PayCompanyGet as R,PayCompanyMerge as k,PayCompanyDelete as A,PayCompanyRestore as M,PayCompanyGeneralListByCompany as D,PayCompanyGeneralGet as I,PayCompanyPolicyListByCompany as T,PayCompanyPolicyGet as G,PayCompanyStyleListByCompany as U,PayCompanyStyleGet as B,PayCompanyDirectoryListByCompany as J,PayCompanyDirectoryGet as E,PayCompanyResellerGet as L,PayCompanyResellerMerge as x,PayCompanyResellerDelete as N,PayCompanyResellerRestore as O,PayContactListByCompany as _,PayContactGet as F,PayContactMerge as H,PayContactDelete as q,PayContactRestore as $,PayContactBatchMerge as W,PayContactBatchDelete as j,PayUserListByCompany as z,PayUserGet as K,PayUserMerge as Z,PayUserDelete as Q,PayUserRestore as V,PayUserGeneralListByCompany as X,PayUserGeneralGet as Y,PayUserAdvancedListByCompany as ee,PayUserAdvancedGet as te,PayUserGroupListByCompany as se,PayUserGroupGet as re,PayUserGroupMerge as ne,PayUserGroupDelete as ie,PayUserGroupRestore as oe,PayMachineListByCompany as ae,PayMachineGet as ce,PayMachineMerge as he,PayMachineDelete as ue,PayMachineRestore as de,PaySessionListByCompany as pe,PaySessionListByUser as le,PaySessionDelete as me,PayIconListByCompany as we,PayIconGet as ge,PayIconMerge as ye,PayIconDelete as ve,PayIconRestore as fe,PayPictureListByCompany as be,PayPictureGet as Ce,PayPictureMerge as Pe,PayPictureDelete as Se,PayPictureRestore as Re,PayDocumentListByCompany as ke,PayDocumentGet as Ae,PayDocumentMerge as Me,PayDocumentDelete as De,PayDocumentRestore as Ie,PayFormTemplateListByCompany as Te,PayFormTemplateGet as Ge,PayFormTemplateMerge as Ue,PayFormTemplateDelete as Be,PayFormTemplateRestore as Je,PayFormResultListByCompany as Ee,PayFormResultGet as Le,PayFormResultMerge as xe,PayFormResultBatchMerge as Ne,PayFormResultDelete as Oe,PayFormResultRestore as _e,PayDashcamListByCompany as Fe,PayDashcamGet as He,PayDashcamLiveListByCompany as qe,PayAssetListByCompany as $e,PayAssetGet as We,PayAssetMerge as je,PayAssetBatchMerge as ze,PayAssetDelete as Ke,PayAssetRestore as Ze,PayAssetSuspend as Qe,PayAssetReactivate as Ve,PayAssetGeneralListByCompany as Xe,PayAssetGeneralGet as Ye,PayAssetAdvancedListByCompany as et,PayAssetAdvancedGet as tt,PayAssetDispatchMerge as st,PayDispatchTaskListByCompany as rt,PayDispatchTaskListByAsset as nt,PayDispatchTaskGet as it,PayDispatchTaskMerge as ot,PayDispatchTaskBatchMerge as at,PayDispatchTaskDelete as ct,PayDispatchTaskRestore as ht,PayDispatchJobListByCompany as ut,PayDispatchJobListByAsset as dt,PayDispatchJobGet as pt,PayDispatchJobMerge as lt,PayDispatchJobBatchMerge as mt,PayDispatchJobDelete as wt,PayDispatchJobRestore as gt,PayDispatchJobChange as yt,PayDispatchJobCancel as vt,PayAssetMessageListByCompany as ft,PayAssetMessageListByAsset as bt,PayAssetMessageGet as Ct,PayAssetMessageMerge as Pt,PayAssetMessageBatchMerge as St,PayAssetMessageDelete as Rt,PayAssetMessageRestore as kt,PayPlaceListByCompany as At,PayPlaceGet as Mt,PayPlaceMerge as Dt,PayPlaceDelete as It,PayPlaceRestore as Tt,PayProviderListByCompany as Gt,PayProviderGet as Ut,PayProviderMerge as Bt,PayProviderBatchMerge as Jt,PayProviderBatchDelete as Et,PayProviderDelete as Lt,PayProviderRestore as xt,PayProviderGeneralListByCompany as Nt,PayProviderGeneralGet as Ot,PayProviderAdvancedListByCompany as _t,PayProviderAdvancedGet as Ft,PayProviderControlListByCompany as Ht,PayProviderControlGet as qt,PayProviderScriptListByCompany as $t,PayProviderScriptGet as Wt,PayProviderScriptMerge as jt,PayProviderScriptDelete as zt,PayProviderScriptRestore as Kt,PayProviderConfigListByCompany as Zt,PayProviderConfigGet as Qt,PayProviderConfigMerge as Vt,PayProviderConfigBatchMerge as Xt,PayProviderConfigDelete as Yt,PayProviderConfigRestore as es,PayProviderConfigurationListByCompany as ts,PayProviderConfigurationGet as ss,PayProviderConfigurationMerge as rs,PayProviderConfigurationBatchMerge as ns,PayProviderConfigurationDelete as is,PayProviderConfigurationRestore as os,PayProviderRegistrationListByCompany as as,PayProviderRegistrationGet as cs,PayProviderRegistrationMerge as hs,PayProviderRegistrationDelete as us,PayBehaviourListByCompany as ds,PayBehaviourGet as ps,PayBehaviourMerge as ls,PayBehaviourBatchMerge as ms,PayBehaviourDelete as ws,PayBehaviourRestore as gs,PayBehaviourScriptListByCompany as ys,PayBehaviourScriptGet as vs,PayBehaviourScriptMerge as fs,PayBehaviourScriptDelete as bs,PayBehaviourScriptRestore as Cs,PayBehaviourLogListByAsset as Ps,PayBehaviourLogBatchDeleteByAsset as Ss,PayBehaviourLogListByBehaviour as Rs,PayBehaviourLogBatchDeleteByBehaviour as ks,PayBehaviourLogListByScript as As,PayBehaviourLogBatchDeleteByScript as Ms,PayReportTemplateListByCompany as Ds,PayReportTemplateGet as Is,PayReportTemplateMerge as Ts,PayReportTemplateDelete as Gs,PayReportTemplateRestore as Us,PayReportScheduleListByCompany as Bs,PayReportScheduleGet as Js,PayReportScheduleMerge as Es,PayReportScheduleDelete as Ls,PayReportScheduleRestore as xs,PayReportResultListByCompany as Ns,PayReportResultGet as Os,PayReportResultMerge as _s,PayReportResultDelete as Fs,PayReportResultRestore as Hs,PayMaintenanceScheduleListByCompany as qs,PayMaintenanceScheduleGet as $s,PayMaintenanceScheduleMerge as Ws,PayMaintenanceScheduleDelete as js,PayMaintenanceScheduleRestore as zs,PayMaintenanceJobListByCompany as Ks,PayMaintenanceJobGet as Zs,PayMaintenanceJobMerge as Qs,PayMaintenanceJobDelete as Vs,PayMaintenanceJobRestore as Xs,SubscriptionType as Ys,Reply as er,PaySubscriptionMerge as tr,RepSubscription as sr,PaySubscriptionDelete as rr,PaySubscriptionList as nr}from"@trakit/commands";import{utility as ir,Machine as or,serialization as ar}from"@trakit/objects";class cr{type;constructor(e){this.type=e}}class hr extends cr{kind;companyId;constructor(e,t,s){super(e),this.kind=t,this.companyId=s}}class ur extends cr{account;constructor(e,t){super(e),this.account=t}}class dr extends hr{objects;constructor(e,t,s,r){super(e,t,s),this.objects=r}}class pr extends hr{object;constructor(e,t,s,r){super(e,t,s),this.object=r}}class lr extends hr{key;constructor(e,t,s,r){super(e,t,s),this.key=r}}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",UserAuthentication:"/companies/{companyId}/users/authentications",UserState:"/companies/{companyId}/users/states",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{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 d?this.account=e:"string"==typeof e?this.setAuth({ghostId:e}):e instanceof or||e?.key?this.setAuth({machine:e.toJSON?.()??e}):e?.machine?.key||e?.ghostId?this.setAuth(new d({errorCode:u.success,message:"Authenticated via "+(e?.machine?.key?"Machine":"Session"),...e.toJSON?.()??e})):this.setAuth(new d)}t=new Map;command(t){const s=t.constructor.name+JSON.stringify(t.toJSON());let r=this.t.get(s);return r||this.t.set(s,r=new Promise((async(r,n)=>{let i=null,o=null,a=null;try{i=await this.requestCreate(t)}catch(t){o=e(t)}try{o=o??await this.requestRelay(i)}catch(s){a=t.createReply(s instanceof Error?e(s):s)}try{a=a??t.createReply(o)}catch(s){a=t.createReply(e(s,o))}(a.errorCode===u.success?r:n)(a),this.t.delete(s)}))),r}}class fr extends vr{i=new Map;o(e){this.setAuth(e??new d({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 ur("account",this.account)))}h(e,t,s){this.fire("list",(()=>new dr("list",e,t,s)))}u(e,t,s){this.fire("update",(()=>new pr("update",e,t,s)))}p(e,t,s){this.fire("delete",(()=>new lr("delete",e,t,s)))}on(e,t){let s=this.i.get(e);s||this.i.set(e,s=[]);const r=s.includes(t);return r||s.push(t),!r}off(e,t){const s=this.i.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.i.get(e)?.slice();if(s?.length){const e=t();s.forEach((t=>t.call(this,e)),this)}}handles(e,t){return this.i.get(e)?.includes(t)??!1}dispose(){for(const e of[...this.i.keys()])this.off(e)}async command(e){const t=await super.command(e);if(t instanceof p&&t.store()){const s=e.getAction(),r=t.getCompanyId();t instanceof l?s.filter?t.getList().forEach((e=>this.u(s.object,r,e))):this.h(s.object,r,t.getList()):t instanceof m?this.u(s.object,r,t.getObject()):t instanceof w?this.p(s.object,r,t.getKey()):t instanceof g&&t.getResults().forEach((e=>this.p(s.object,e.getCompanyId(),e.getKey())))}return t}async selfDetails(){const e=await this.command(new y);return this.o(e),e}async login(e,t,s){const r=await this.command(new v({username:e,password:t,userAgent:s??null}));return this.o(r),r}logout(){const e=this.command(new f);return this.o(new d),e}updateContact(e,t,s,r,n,i,o,a,c,h,u){return this.command(new b({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 C({current:e,password:t}))}updatePreferences(e,t,s,r,n){return this.command(new P({language:e??null,timezone:t?.code??t??null,notify:s?.map((e=>e.toJSON?.()??e))??null,formats:r instanceof Map?ar.fromMap(r):r??null,measurements:n instanceof Map?ar.fromMap(n):n??null}))}updateState(e){return this.command(new S({options:e instanceof Map?ar.fromMap(e):e??null}))}getCompany(e){return this.command(new R({company:{id:e}}))}mergeCompany(e){return this.command(new k({company:e}))}removeCompany(e){return this.command(new A({company:{id:e}}))}restoreCompany(e){return this.command(new M({company:{id:e}}))}listCompanyGenerals(e,t){return this.command(new D({...t,company:{id:e}}))}getCompanyGeneral(e){return this.command(new I({company:{id:e}}))}listCompanyPolicies(e,t){return this.command(new T({...t,company:{id:e}}))}getCompanyPolicy(e){return this.command(new G({company:{id:e}}))}listCompanyStyles(e,t){return this.command(new U({...t,company:{id:e}}))}getCompanyStyle(e){return this.command(new B({company:{id:e}}))}listCompanyDirectories(e,t){return this.command(new J({...t,company:{id:e}}))}getCompanyDirectory(e){return this.command(new E({company:{id:e}}))}getReseller(e){return this.command(new L({company:{id:e}}))}mergeReseller(e){return this.command(new x({company:e}))}removeReseller(e){return this.command(new N({company:{id:e}}))}restoreReseller(e){return this.command(new O({company:{id:e}}))}listContacts(e,t){return this.command(new _({...t,company:{id:e}}))}getContact(e){return this.command(new F({contact:{id:e}}))}mergeContact(e){return this.command(new H({contact:e}))}removeContact(e){return this.command(new q({contact:{id:e}}))}restoreContact(e){return this.command(new $({contact:{id:e}}))}multiMergeContact(e){return this.command(new W({contacts:e}))}multiRemoveContact(e){return this.command(new j({contacts:e.map((e=>({id:e})))}))}listUsers(e,t){return this.command(new z({...t,company:{id:e}}))}getUser(e){return this.command(new K({user:{login:e}}))}mergeUser(e){return this.command(new Z({user:e}))}removeUser(e){return this.command(new Q({user:{login:e}}))}restoreUser(e){return this.command(new V({user:{login:e}}))}listUserGenerals(e,t){return this.command(new X({...t,company:{id:e}}))}getUserGeneral(e){return this.command(new Y({user:{login:e}}))}listUserAdvanceds(e,t){return this.command(new ee({...t,company:{id:e}}))}getUserAdvanced(e){return this.command(new te({user:{login:e}}))}listUserGroups(e,t){return this.command(new se({...t,company:{id:e}}))}getUserGroup(e){return this.command(new re({userGroup:{id:e}}))}mergeUserGroup(e){return this.command(new ne({userGroup:e}))}removeUserGroup(e){return this.command(new ie({userGroup:{id:e}}))}restoreUserGroup(e){return this.command(new oe({userGroup:{id:e}}))}listMachines(e,t){return this.command(new ae({...t,company:{id:e}}))}getMachine(e){return this.command(new ce({machine:{id:e}}))}mergeMachine(e){return this.command(new he({machine:e}))}removeMachine(e){return this.command(new ue({machine:{id:e}}))}restoreMachine(e){return this.command(new de({machine:{id:e}}))}listSessions(e,t){return this.command(new pe({...t,company:{id:e}}))}listSessionsByUser(e,t){return this.command(new le({...t,user:{login:e}}))}killSession(e){return this.command(new me({session:{handle:e}}))}listIcons(e,t){return this.command(new we({...t,company:{id:e}}))}getIcon(e){return this.command(new ge({icon:{id:e}}))}mergeIcon(e){return this.command(new ye({icon:e}))}removeIcon(e){return this.command(new ve({icon:{id:e}}))}restoreIcon(e){return this.command(new fe({icon:{id:e}}))}listPictures(e,t){return this.command(new be({...t,company:{id:e}}))}getPicture(e){return this.command(new Ce({picture:{id:e}}))}mergePicture(e){return this.command(new Pe({picture:e}))}removePicture(e){return this.command(new Se({picture:{id:e}}))}restorePicture(e){return this.command(new Re({picture:{id:e}}))}listDocuments(e,t){return this.command(new ke({...t,company:{id:e}}))}getDocument(e){return this.command(new Ae({document:{id:e}}))}mergeDocument(e){return this.command(new Me({document:e}))}removeDocument(e){return this.command(new De({document:{id:e}}))}restoreDocument(e){return this.command(new Ie({document:{id:e}}))}listFormTemplates(e,t){return this.command(new Te({...t,company:{id:e}}))}getFormTemplate(e){return this.command(new Ge({formTemplate:{id:e}}))}mergeFormTemplate(e){return this.command(new Ue({formTemplate:e}))}removeFormTemplate(e){return this.command(new Be({formTemplate:{id:e}}))}restoreFormTemplate(e){return this.command(new Je({formTemplate:{id:e}}))}listFormResults(e,t){return this.command(new Ee({...t,company:{id:e}}))}getFormResult(e){return this.command(new Le({formResult:{id:e}}))}mergeFormResult(e){return this.command(new xe({formResult:e}))}multiMergeFormResult(e){return this.command(new Ne({formResult:{id:e}}))}removeFormResult(e){return this.command(new Oe({formResult:{id:e}}))}restoreFormResult(e){return this.command(new _e({formResult:{id:e}}))}listDashcamDatas(e,t){return this.command(new Fe({...t,company:{id:e}}))}getDashcamData(e){return this.command(new He({dashcam:{guid:e}}))}listDashcamLives(e,t){return this.command(new qe({...t,company:{id:e}}))}listAssets(e,t){return this.command(new $e({...t,company:{id:e}}))}getAsset(e){return this.command(new We({asset:{id:e}}))}mergeAsset(e){return this.command(new je({asset:e}))}multiMergeAsset(e){return this.command(new ze({assets:e}))}removeAsset(e){return this.command(new Ke({asset:{id:e}}))}restoreAsset(e){return this.command(new Ze({asset:{id:e}}))}suspendAsset(e){return this.command(new Qe({asset:{id:e}}))}reviveAsset(e){return this.command(new Ve({asset:{id:e}}))}searchAssets(e,t){}listAssetGenerals(e,t){return this.command(new Xe({...t,company:{id:e}}))}getAssetGeneral(e){return this.command(new Ye({asset:{id:e}}))}searchAssetGenerals(e,t){}listAssetAdvanceds(e,t){return this.command(new et({...t,company:{id:e}}))}getAssetAdvanced(e){return this.command(new tt({asset:{id:e}}))}searchAssetAdvanceds(e,t){}mergeAssetDispatch(e){return this.command(new st({assetDispatch:e}))}listDispatchTasks(e,t){return this.command(new rt({...t,company:{id:e}}))}getDispatchTasksByAsset(e,t){return this.command(new nt({...t,asset:{id:e}}))}getDispatchTask(e){return this.command(new it({dispatchTask:{id:e}}))}mergeDispatchTask(e){return this.command(new ot({dispatchTask:e}))}multiMergeDispatchTask(e){return this.command(new at({dispatchTask:{id:e}}))}removeDispatchTask(e){return this.command(new ct({dispatchTask:{id:e}}))}restoreDispatchTask(e){return this.command(new ht({dispatchTask:{id:e}}))}listDispatchJobs(e,t){return this.command(new ut({...t,company:{id:e}}))}getDispatchJobsByAsset(e,t){return this.command(new dt({...t,asset:{id:e}}))}getDispatchJob(e){return this.command(new pt({dispatchJob:{id:e}}))}mergeDispatchJob(e){return this.command(new lt({dispatchJob:e}))}multiMergeDispatchJob(e){return this.command(new mt({dispatchJob:{id:e}}))}removeDispatchJob(e){return this.command(new wt({dispatchJob:{id:e}}))}restoreDispatchJob(e){return this.command(new gt({dispatchJob:{id:e}}))}changeDispatchJob(e){return this.command(new yt({dispatchJob:e}))}cancelDispatchJob(e){return this.command(new vt({dispatchJob:e}))}listAssetMessages(e,t){return this.command(new ft({...t,company:{id:e}}))}getAssetMessagesByAsset(e,t){return this.command(new bt({...t,asset:{id:e}}))}getAssetMessage(e){return this.command(new Ct({message:{id:e}}))}mergeAssetMessage(e){return this.command(new Pt({assetMessage:e}))}multiMergeAssetMessage(e){return this.command(new St({assetMessage:{id:e}}))}removeAssetMessage(e){return this.command(new Rt({assetMessage:{id:e}}))}restoreAssetMessage(e){return this.command(new kt({assetMessage:{id:e}}))}listPlaces(e,t){return this.command(new At({...t,company:{id:e}}))}getPlace(e){return this.command(new Mt({place:{id:e}}))}mergePlace(e){return this.command(new Dt({place:e}))}removePlace(e){return this.command(new It({place:{id:e}}))}restorePlace(e){return this.command(new Tt({place:{id:e}}))}listProviders(e,t){return this.command(new Gt({...t,company:{id:e}}))}getProvider(e){return this.command(new Ut({provider:{id:e}}))}mergeProvider(e){return this.command(new Bt({provider:e}))}multiMergeProvider(e){return this.command(new Jt({providers:e}))}multiRemoveProvider(e){return this.command(new Et({providers:e.map((e=>({id:e})))}))}removeProvider(e){return this.command(new Lt({provider:{id:e}}))}restoreProvider(e){return this.command(new xt({provider:{id:e}}))}searchProviders(e,t){}listProviderGenerals(e,t){return this.command(new Nt({...t,company:{id:e}}))}getProviderGeneral(e){return this.command(new Ot({provider:{id:e}}))}searchProviderGenerals(e,t){}listProviderAdvanceds(e,t){return this.command(new _t({...t,company:{id:e}}))}getProviderAdvanced(e){return this.command(new Ft({provider:{id:e}}))}searchProviderAdvanceds(e,t){}listProviderControls(e,t){return this.command(new Ht({...t,company:{id:e}}))}getProviderControl(e){return this.command(new qt({provider:{id:e}}))}searchProviderControls(e,t){}listProviderScripts(e,t){return this.command(new $t({...t,company:{id:e}}))}getProviderScript(e){return this.command(new Wt({providerScript:{id:e}}))}mergeProviderScript(e){return this.command(new jt({providerScript:e}))}removeProviderScript(e){return this.command(new zt({providerScript:{id:e}}))}restoreProviderScript(e){return this.command(new Kt({providerScript:{id:e}}))}listProviderConfigs(e,t){return this.command(new Zt({...t,company:{id:e}}))}getProviderConfig(e){return this.command(new Qt({providerConfig:{id:e}}))}mergeProviderConfig(e){return this.command(new Vt({providerConfig:e}))}multiMergeProviderConfig(e){return this.command(new Xt({providerConfig:{id:e}}))}removeProviderConfig(e){return this.command(new Yt({providerConfig:{id:e}}))}restoreProviderConfig(e){return this.command(new es({providerConfig:{id:e}}))}listProviderConfigurations(e,t){return this.command(new ts({...t,company:{id:e}}))}getProviderConfiguration(e){return this.command(new ss({providerConfiguration:{id:e}}))}mergeProviderConfiguration(e){return this.command(new rs({providerConfiguration:e}))}multiMergeProviderConfiguration(e){return this.command(new ns({providerConfiguration:{id:e}}))}removeProviderConfiguration(e){return this.command(new is({providerConfiguration:{id:e}}))}restoreProviderConfiguration(e){return this.command(new os({providerConfiguration:{id:e}}))}listProviderRegistration(e,t){return this.command(new as({...t,company:{id:e}}))}getProviderRegistration(e){return this.command(new cs({providerRegistration:{id:e}}))}mergeProviderRegistration(e){return this.command(new hs({providerRegistration:e}))}removeProviderRegistration(e){return this.command(new us({providerRegistration:{id:e}}))}listBehaviours(e,t){return this.command(new ds({...t,company:{id:e}}))}getBehaviour(e){return this.command(new ps({behaviour:{id:e}}))}mergeBehaviour(e){return this.command(new ls({behaviour:e}))}multiMergeBehaviour(e){return this.command(new ms({behaviour:{id:e}}))}removeBehaviour(e){return this.command(new ws({behaviour:{id:e}}))}restoreBehaviour(e){return this.command(new gs({behaviour:{id:e}}))}listBehaviourScripts(e,t){return this.command(new ys({...t,company:{id:e}}))}getBehaviourScript(e){return this.command(new vs({behaviourScript:{id:e}}))}mergeBehaviourScript(e){return this.command(new fs({behaviourScript:e}))}removeBehaviourScript(e){return this.command(new bs({behaviourScript:{id:e}}))}restoreBehaviourScript(e){return this.command(new Cs({behaviourScript:{id:e}}))}listBehaviourAssetLogs(e,t){return this.command(new Ps({...t,behaviour:{id:e}}))}clearBehaviourAssetLogs(e){return this.command(new Ss({behaviour:{id:e}}))}listBehaviourLogs(e,t){return this.command(new Rs({...t,behaviour:{id:e}}))}clearBehaviourLogs(e){return this.command(new ks({behaviour:{id:e}}))}listBehaviourScriptLogs(e,t){return this.command(new As({...t,behaviourScript:{id:e}}))}clearBehaviourScriptLogs(e,t){return this.command(new Ms({...t,behaviourScript:{id:e}}))}listReportTemplates(e,t){return this.command(new Ds({...t,company:{id:e}}))}getReportTemplate(e){return this.command(new Is({reportTemplate:{id:e}}))}mergeReportTemplate(e){return this.command(new Ts({reportTemplate:e}))}removeReportTemplate(e){return this.command(new Gs({reportTemplate:{id:e}}))}restoreReportTemplate(e){return this.command(new Us({reportTemplate:{id:e}}))}listReportSchedules(e,t){return this.command(new Bs({...t,company:{id:e}}))}getReportSchedule(e){return this.command(new Js({reportSchedule:{id:e}}))}mergeReportSchedule(e){return this.command(new Es({reportSchedule:e}))}removeReportSchedule(e){return this.command(new Ls({reportSchedule:{id:e}}))}restoreReportSchedule(e){return this.command(new xs({reportSchedule:{id:e}}))}listReportResults(e,t){return this.command(new Ns({...t,company:{id:e}}))}getReportResult(e){return this.command(new Os({reportResult:{id:e}}))}mergeReportResult(e){return this.command(new _s({reportResult:e}))}removeReportResult(e){return this.command(new Fs({reportResult:{id:e}}))}restoreReportResult(e){return this.command(new Hs({reportResult:{id:e}}))}listMaintenanceSchedules(e,t){return this.command(new qs({...t,company:{id:e}}))}getMaintenanceSchedule(e){return this.command(new $s({maintenanceSchedule:{id:e}}))}mergeMaintenanceSchedule(e){return this.command(new Ws({maintenanceSchedule:e}))}removeMaintenanceSchedule(e){return this.command(new js({maintenanceSchedule:{id:e}}))}restoreMaintenanceSchedule(e){return this.command(new zs({maintenanceSchedule:{id:e}}))}listMaintenanceJobs(e,t){return this.command(new Ks({...t,company:{id:e}}))}getMaintenanceJob(e){return this.command(new Zs({maintenanceJob:{id:e}}))}mergeMaintenanceJob(e){return this.command(new Qs({maintenanceJob:e}))}removeMaintenanceJob(e){return this.command(new Vs({maintenanceJob:{id:e}}))}restoreMaintenanceJob(e){return this.command(new Xs({maintenanceJob:{id:e}}))}}class br extends fr{static URI_PROD="https://rest.trakit.ca/";static URI_BETA="https://mindflayer.trakit.ca/";constructor(e,t){super(e,t??br.URI_PROD)}requestCreate(e){return r(this,e)}requestRelay(e){return i(e)}}const Cr=/^(.+?)(Merged|Deleted|Suspended)$/,Pr={Company:[Ys.companyGeneral,Ys.companyLabels,Ys.companyPolicies],CompanyGeneral:[Ys.companyGeneral],CompanyDirectory:[],CompanyStyle:[Ys.companyLabels],CompanyPolicy:[Ys.companyPolicies],CompanyReseller:[Ys.companyReseller],Contact:[Ys.contact],Machine:[Ys.machine],User:[Ys.userGeneral,Ys.userAdvanced,Ys.userAuthentication],UserGeneral:[Ys.userGeneral],UserAdvanced:[Ys.userAdvanced],UserAuthentication:[Ys.userAuthentication],UserState:[Ys.userState],UserGroup:[Ys.userGroup],Session:[],Dashcam:[],Icon:[Ys.icon],Picture:[Ys.picture],Document:[Ys.document],FormTemplate:[Ys.formTemplate],FormResult:[Ys.formResult],Asset:[Ys.assetGeneral,Ys.assetAdvanced,Ys.assetDispatch],AssetGeneral:[Ys.assetGeneral],AssetAdvanced:[Ys.assetAdvanced],AssetDispatch:[Ys.assetDispatch],AssetMessage:[Ys.assetMessage],AssetAlert:[],DispatchTask:[Ys.dispatchTask],DispatchJob:[Ys.dispatchJob],MaintenanceSchedule:[Ys.maintenanceSchedule],MaintenanceJob:[Ys.maintenanceJob],Place:[Ys.placeGeneral],BehaviourScript:[Ys.behaviourScript],Behaviour:[Ys.behaviour],BehaviourLog:[Ys.behaviourLog],Provider:[Ys.providerGeneral,Ys.providerAdvanced,Ys.providerControl],ProviderGeneral:[Ys.providerGeneral],ProviderAdvanced:[Ys.providerAdvanced],ProviderControl:[Ys.providerControl],ProviderConfiguration:[Ys.providerConfiguration],ProviderConfigurationType:[],ProviderScript:[Ys.providerScript],ProviderConfig:[Ys.providerConfig],ProviderRegistration:[Ys.providerRegistration],ReportTemplate:[Ys.reportTemplate],ReportSchedule:[Ys.reportSchedule],ReportResult:[Ys.reportResult],BillingProfile:[Ys.billingProfile],BillingReport:[Ys.billingReport],BillableHostingRule:[Ys.billingHosting],BillableHostingLicense:[Ys.billingLicense]};class Sr{#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}expireRegion(e,t=!1){const s=t?0:(new Date).valueOf();return this.#t(e,new Date(s+3e5))}expireRegions(e,t=!1){return e.map((e=>this.expireRegion(e,t)))}preserveRegion(e){const t=this.#e.get(e);return this.#t(e),t||null}preserveRegions(e){return e.map((e=>this.preserveRegion(e)))}reset(){const e=[];for(let[t,s]of this.#e)s||e.push(t);return this.#e.clear(),e}}var Rr;!function(e){e.maintenance="maintenance",e.upgrade="upgrade"}(Rr||(Rr={}));class kr{static fromJson(e){switch(e?.kind){case Rr.maintenance:return new Ar(e);case Rr.upgrade:return new Mr(e);default:throw new Error(`Unknown broadcast type: ${e?.kind}`)}}kind;serverTime;message;constructor(e){this.kind=e?.kind,this.serverTime=ir.date(e?.serverTime),this.message=e?.message??""}}class Ar extends kr{starting;ending;constructor(e){super(e),this.starting=ir.date(e?.starting),this.ending=ir.date(e?.ending)}}class Mr extends kr{eta;reload;constructor(e){super(e),this.eta=ir.date(e?.eta),this.reload=!!e?.reload}}class Dr extends cr{name;body;constructor(e,t,s){super(e),this.name=t,this.body=s}}class Ir extends cr{reply;constructor(e,t){super(e),this.reply=t}}class Tr extends cr{broadcast;constructor(e,t){super(e),this.broadcast=kr.fromJson(t)}}const Gr="connection",Ur="dis"+Gr;var Br;!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"}(Br||(Br={}));class Jr extends fr{static URI_PROD="wss://socket.trakit.ca/";static URI_BETA="wss://kraken.trakit.ca/";static msgNameToSyncName(e){const s=Cr.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 Br.opening;case WebSocket.OPEN:return this.#a?Br.open:Br.opening;case WebSocket.CLOSING:return Br.closing;default:return Br.closed}}get ready(){return this.#a&&this.#c}l(e){const t=this.i.get("open");if(t?.length){const s=new ur("open",e);t.forEach((e=>e.call(this,s)))}}m(e){const t=this.i.get("close");if(t?.length){const s=new Ir("close",e);t.forEach((e=>e.call(this,s)))}}v(e,t){const s=this.i.get("message");if(s?.length){const r=new Dr("message",e,t);s.forEach((e=>e.call(this,r)))}}C(e){const t=this.i.get("error");if(t?.length){const s=new Ir("error",e);t.forEach((e=>e.call(this,s)))}}P(e){const t=this.i.get("broadcast");if(t?.length){const s=new Tr("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;#p(e){this.#o.onopen=null,this.#o.onmessage=e=>this.#l(e),this.#m=0}#w(e){this.C(new er({errorCode:u.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:Br.closed,code:e.code,reason:e.reason,wasClean:e.wasClean,reconnect:this.reconnectEnabled,retry:(new Date).valueOf()+t},r={errorCode:u.success,message:"Disconnected",errorDetails:s};for(const e of[...this.#u.keys()].sort())this.#d(e,e===Ur?r:{...r,reqId:e,errorCode:u.service,errorDetails:{...s}});this.m?.(new er(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}#l(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.v(t,s),t){case"connectionResponse":this.#f(s),this.#s=new Date(this.#r),this.#a=!0,this.#d(Gr,s),this.o(),this.l(this.account);break;case"loginResponse":case"getSessionDetailsResponse":this.#f(s),this.o();break;case"updateOwnPasswordResponse":this.#c||(this.#c=0===s.errorCode);break;case"logoutResponse":this.close();case"sessionEnded":this.#c=!1,this.#f(s),this.o();break;case"sessionGeneralMerged":this.#b([,"userGeneral","Merged"],this.#C(s)),this.o();break;case"sessionAdvancedMerged":this.#b([,"userAdvanced","Merged"],this.#P(s)),this.o();break;case"sessionAuthenticationMerged":this.#b([,"userAuthentication","Merged"],s),this.o();break;case"sessionStateMerged":this.#b([,"userState","Merged"],s),this.o();break;case"sessionMachineMerged":this.#b([,"machine","Merged"],this.#P(s)),this.o();break;case"broadcast":this.P(s)}if(t.endsWith("Response"))this.#d(s.reqId,s);else if(!t.startsWith("session")){const e=Cr.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 d(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 h["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:u.success,message:e[2]+" event",[e[1]]:s});if(o.store())switch(e[2]){case"Merged":case"Suspended":this.u(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??Jr.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===Br.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.#p(e),this.#o.onerror=e=>this.#w(e),this.#o.onclose=e=>this.#g(e),this.#u.set(Gr,(s=>{(0===s.errorCode?e:t)(this.account)}))}else t(new d({errorCode:u.unknown,message:"WebSocket not closed",errorDetails:{kind:"connection",connection:s}}))}))}close(){return new Promise(((e,t)=>{const s=this.state;switch(s){case Br.opening:case Br.open:this.#c=!1,this.reconnectEnabled=!1,this.#u.set(Ur,(s=>{(0===s.errorCode?e:t)(new er(s))})),this.#o.close(1e3,"Bye!");break;default:t(new er({errorCode:u.unknown,message:"WebSocket not open",errorDetails:{kind:"connection",connection:s}}))}}))}requestCreate(e){return Promise.resolve([o(e),e.toJSON()])}requestRelay(t){const s=t[0],r=t[1]||{};return new Promise(((n,i)=>{const o=this.state;switch(o){case Br.open:const a=++this.#h,c=setTimeout((()=>this.#d(a,{reqId:a,errorCode:u.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 Br.closed:this.open().then((()=>this.requestRelay(t).then(n))).catch(i);break;default:i({errorCode:u.unknown,message:"Not connected",errorDetails:{kind:"connection",connection:o}})}}))}resetKeepAlive(){return clearTimeout(this.#y),this.#y=this.keepAliveEnabled&&this.#c?setTimeout((()=>this.requestRelay(["noop",{}])),3e5):0,Promise.resolve(0!==this.#y)}subscribe(e,t){return t?.length?this.command(new tr({company:{id:e},subscriptionTypes:t})):Promise.resolve(new sr({errorCode:u.success,message:"No subscriptions specified"}))}unsubscribe(e,t){return t?.length?this.command(new rr({company:{id:e},subscriptionTypes:t})):Promise.resolve(new sr({errorCode:u.success,message:"No subscriptions specified"}))}listSubscriptions(){return this.command(new nr)}}const Er={Company:["CompanyGeneral","CompanyDirectory","CompanyStyle","CompanyPolicy"],Asset:["AssetGeneral","AssetAdvanced","AssetDispatch"],Provider:["ProviderGeneral","ProviderAdvanced","ProviderControl"],User:["UserGeneral","UserAdvanced"]};class Lr extends fr{S;R;get autoConnect(){return this.S.reconnectEnabled}set autoConnect(e){this.S.reconnectEnabled=!!e,e&&this.S.state===Br.closed&&this.S.open()}get socketOnline(){return this.S.state===Br.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.R.baseAddress}set restAddress(e){this.R.baseAddress=e}constructor(e,t,s){super(e);const r=e=>this.setAuth(e.account),n=e=>this.fire(e.type,(()=>e));this.R=new br(this.account,t??br.URI_PROD),this.R.on("account",r),this.S=new Jr(this.account,s??Jr.URI_PROD),this.S.on("account",r),this.S.on("open",(e=>this.#S(e.account))),this.S.on("close",(e=>this.#R(e.reply)));for(const e of["account","list","update","delete"])this.R.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.R.dispose(),this.S.dispose(),this.R=this.S=null}setAuth(e){super.setAuth(e),this.R?.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)}requestCreate(e){throw new Error("Method not implemented.")}requestRelay(e){throw new Error("Method not implemented.")}rest(e){return this.R.command(e)}socket(e){return this.S.command(e)}#S(e){this.#k.forEach(((e,t)=>{this.sync(t,c(e.reset()))})),this.#A()}#R(e){clearTimeout(this.#M)}isSynced(e,t){let s=this.S.state===Br.open;if(s){const r=this.#D(e);s=a(t).every((e=>r.regions.includes(e)))}return s}getSyncs(e,t=!1){const s=this.#D(e),r=t?[]:s.getExpiring();return c(s.regions.filter((e=>!r.includes(e))))}async sync(t,s){const r=[],n=this.#D(t),i=a(s).filter((e=>!n.regions.includes(e)));if(i.length>0){n.preserveRegions(i);const s=await this.S.subscribe(t,i);n.expireRegions((s.denied??[]).concat(s.invalid??[]),!0),c(s.merged??[]).forEach((s=>{const n=function(e,t){return h["Pay"+e+(t??"Get")]}(s,s.startsWith("Company")?"Get":"ListByCompany");r.push(n?this.command(new n({company:{id:t}})):Promise.reject(e(new Error(`No payload class could be made for sync type ${s}`))))}))}return Promise.all(r)}desync(e,t){const s=this.#D(e),r=t.reduce(((e,t)=>e.concat(Pr[t]||[])),[]).filter((e=>s.regions.includes(e))).filter(((e,t,s)=>s.indexOf(e)===t));return s.expireRegions(r),r}#k=new Map;#A(){const e=[];this.S.state===Br.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 Sr),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:u.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=ir.capitalize(e)))e="CompanyStyle";else e=ir.singularize(e);return e}function s(e){const t=e.getAction();let s="GET",r=new URLSearchParams,n=[...t.object.match(yr)].map((e=>ir.pluralize(e.toLowerCase()))).join("/");switch(t.object){case"Self":"Get"==t.kind?(s="GET",n="self"):(s="POST",n="self/"+t.filter.toLowerCase());break;case"Subscription":throw new Error(t.object+" only supported by TrakitSocketCommander",{cause:t});case"DispatchJob":switch(t.filter){case"Cancel":s=t.batch?"PATCH":"POST",n+="/cancel";break;case"Change":s=t.batch?"PATCH":"PUT"}default:if(!t.batch){switch(e.getKey&&(n=ir.isCompounded(t.object)?n.replace("/","/"+e.getKey()+"/"):n+"/"+e.getKey()),t.kind){case"Get":break;case"List":switch(t.filter){case"Asset":n=t.object in wr?wr[t.object].replace("{assetId}",e.asset.id):`assets/${e.asset.id}/${n}`;break;case"BillingProfile":n=t.object in gr?gr[t.object].replace("{profileId}",e.billingProfile.id):`billing/profiles/${e.billingProfile.id}/${n}`;break;case"Company":n=t.object in mr?mr[t.object].replace("{companyId}",e.company.id):`companies/${e.company.id}/${n}`;break;case"User":n=`users/${encodeURIComponent(e.user.login)}/${n}`}if(ir.isntNaN(e?.after?.valueOf())&&r.set("after",e.after.toISOString()),ir.isntNaN(e?.before?.valueOf())&&r.set("before",e.before.toISOString()),ir.isntNaN(e?.lowest)&&r.set("lowest",e.lowest),ir.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":s="POST";break;case"Delete":s="DELETE";break;case"Restore":s="PATCH",n+="/restore";break;case"Suspend":s="PATCH",n+="/suspend";break;case"Reactivate":s="PATCH",n+="/revive"}break}switch(s="PATCH",t.kind){case"Get":case"List":s="GET";break;case"Merge":break;case"Delete":s="DELETE";break;case"Restore":n+="/restore";break;case"Suspend":n+="/suspend";break;case"Reactivate":n+="/revive"}}return[s,r.size?n+"?"+r.toString():n]}async function r(e,t){const[r,i]=s(t);return n(e.account,e.createBaseUrl(i),r,"GET"===r?null:JSON.stringify(t.toJSON()),e.headers)}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)}async function i(t){try{const s=await async function(t){try{return fetch(t)}catch(t){throw e(t)}}(t);return await s.json()}catch(t){throw e(t)}}function o(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":case"State":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"+ir.pluralize(t.object)+"List"+("Company"!=(t.filter||"Company")?"By"+t.filter:"");default:throw s}}function a(e){return e.reduce(((e,t)=>e.concat(Pr[t]||[])),[]).filter(((e,t,s)=>s.indexOf(e)===t))}function c(e){const t=[];for(const[s,r]of Object.entries(Er)){const n=r.map((e=>Pr[e])).flat();n.filter((t=>e.includes(t))).length/n.length>=.5&&t.push(s)}const s=t.reduce(((e,t)=>e.concat([t],Er[t])),[]);for(const[r,n]of Object.entries(Pr))!s.includes(r)&&n.some((t=>e.includes(t)))&&t.push(r);return t}import*as h from"@trakit/commands";import{ErrorCode as u,RepSelfGet as d,ReplySync as p,ReplySyncList as l,ReplySyncGet as m,ReplySyncDelete as w,ReplySyncBatchDelete as g,PaySelfGet as y,PaySelfLogin as v,PaySelfLogout as f,PaySelfContact as b,PaySelfPassword as C,PaySelfPreferences as P,PaySelfState as S,PayCompanyGet as R,PayCompanyMerge as k,PayCompanyDelete as A,PayCompanyRestore as D,PayCompanyGeneralListByCompany as M,PayCompanyGeneralGet as I,PayCompanyPolicyListByCompany as T,PayCompanyPolicyGet as G,PayCompanyStyleListByCompany as U,PayCompanyStyleGet as B,PayCompanyDirectoryListByCompany as J,PayCompanyDirectoryGet as E,PayCompanyResellerGet as L,PayCompanyResellerMerge as x,PayCompanyResellerDelete as N,PayCompanyResellerRestore as O,PayContactListByCompany as _,PayContactGet as F,PayContactMerge as H,PayContactDelete as q,PayContactRestore as $,PayContactBatchMerge as W,PayContactBatchDelete as j,PayUserListByCompany as z,PayUserGet as K,PayUserMerge as Z,PayUserDelete as Q,PayUserRestore as V,PayUserGeneralListByCompany as X,PayUserGeneralGet as Y,PayUserAdvancedListByCompany as ee,PayUserAdvancedGet as te,PayUserGroupListByCompany as se,PayUserGroupGet as re,PayUserGroupMerge as ne,PayUserGroupDelete as ie,PayUserGroupRestore as oe,PayMachineListByCompany as ae,PayMachineGet as ce,PayMachineMerge as he,PayMachineDelete as ue,PayMachineRestore as de,PaySessionListByCompany as pe,PaySessionListByUser as le,PaySessionDelete as me,PayIconListByCompany as we,PayIconGet as ge,PayIconMerge as ye,PayIconDelete as ve,PayIconRestore as fe,PayPictureListByCompany as be,PayPictureGet as Ce,PayPictureMerge as Pe,PayPictureDelete as Se,PayPictureRestore as Re,PayDocumentListByCompany as ke,PayDocumentGet as Ae,PayDocumentMerge as De,PayDocumentDelete as Me,PayDocumentRestore as Ie,PayFormTemplateListByCompany as Te,PayFormTemplateGet as Ge,PayFormTemplateMerge as Ue,PayFormTemplateDelete as Be,PayFormTemplateRestore as Je,PayFormResultListByCompany as Ee,PayFormResultGet as Le,PayFormResultMerge as xe,PayFormResultBatchMerge as Ne,PayFormResultDelete as Oe,PayFormResultRestore as _e,PayDashcamListByCompany as Fe,PayDashcamGet as He,PayDashcamLiveListByCompany as qe,PayAssetListByCompany as $e,PayAssetGet as We,PayAssetMerge as je,PayAssetBatchMerge as ze,PayAssetDelete as Ke,PayAssetRestore as Ze,PayAssetSuspend as Qe,PayAssetReactivate as Ve,PayAssetGeneralListByCompany as Xe,PayAssetGeneralGet as Ye,PayAssetAdvancedListByCompany as et,PayAssetAdvancedGet as tt,PayAssetDispatchMerge as st,PayDispatchTaskListByCompany as rt,PayDispatchTaskListByAsset as nt,PayDispatchTaskGet as it,PayDispatchTaskMerge as ot,PayDispatchTaskBatchMerge as at,PayDispatchTaskDelete as ct,PayDispatchTaskRestore as ht,PayDispatchJobListByCompany as ut,PayDispatchJobListByAsset as dt,PayDispatchJobGet as pt,PayDispatchJobMerge as lt,PayDispatchJobBatchMerge as mt,PayDispatchJobDelete as wt,PayDispatchJobRestore as gt,PayDispatchJobChange as yt,PayDispatchJobCancel as vt,PayAssetMessageListByCompany as ft,PayAssetMessageListByAsset as bt,PayAssetMessageGet as Ct,PayAssetMessageMerge as Pt,PayAssetMessageBatchMerge as St,PayAssetMessageDelete as Rt,PayAssetMessageRestore as kt,PayPlaceListByCompany as At,PayPlaceGet as Dt,PayPlaceMerge as Mt,PayPlaceDelete as It,PayPlaceRestore as Tt,PayProviderListByCompany as Gt,PayProviderGet as Ut,PayProviderMerge as Bt,PayProviderBatchMerge as Jt,PayProviderBatchDelete as Et,PayProviderDelete as Lt,PayProviderRestore as xt,PayProviderGeneralListByCompany as Nt,PayProviderGeneralGet as Ot,PayProviderAdvancedListByCompany as _t,PayProviderAdvancedGet as Ft,PayProviderControlListByCompany as Ht,PayProviderControlGet as qt,PayProviderScriptListByCompany as $t,PayProviderScriptGet as Wt,PayProviderScriptMerge as jt,PayProviderScriptDelete as zt,PayProviderScriptRestore as Kt,PayProviderConfigListByCompany as Zt,PayProviderConfigGet as Qt,PayProviderConfigMerge as Vt,PayProviderConfigBatchMerge as Xt,PayProviderConfigDelete as Yt,PayProviderConfigRestore as es,PayProviderConfigurationListByCompany as ts,PayProviderConfigurationGet as ss,PayProviderConfigurationMerge as rs,PayProviderConfigurationBatchMerge as ns,PayProviderConfigurationDelete as is,PayProviderConfigurationRestore as os,PayProviderRegistrationListByCompany as as,PayProviderRegistrationGet as cs,PayProviderRegistrationMerge as hs,PayProviderRegistrationDelete as us,PayBehaviourListByCompany as ds,PayBehaviourGet as ps,PayBehaviourMerge as ls,PayBehaviourBatchMerge as ms,PayBehaviourDelete as ws,PayBehaviourRestore as gs,PayBehaviourScriptListByCompany as ys,PayBehaviourScriptGet as vs,PayBehaviourScriptMerge as fs,PayBehaviourScriptDelete as bs,PayBehaviourScriptRestore as Cs,PayBehaviourLogListByAsset as Ps,PayBehaviourLogBatchDeleteByAsset as Ss,PayBehaviourLogListByBehaviour as Rs,PayBehaviourLogBatchDeleteByBehaviour as ks,PayBehaviourLogListByScript as As,PayBehaviourLogBatchDeleteByScript as Ds,PayReportTemplateListByCompany as Ms,PayReportTemplateGet as Is,PayReportTemplateMerge as Ts,PayReportTemplateDelete as Gs,PayReportTemplateRestore as Us,PayReportScheduleListByCompany as Bs,PayReportScheduleGet as Js,PayReportScheduleMerge as Es,PayReportScheduleDelete as Ls,PayReportScheduleRestore as xs,PayReportResultListByCompany as Ns,PayReportResultGet as Os,PayReportResultMerge as _s,PayReportResultDelete as Fs,PayReportResultRestore as Hs,PayMaintenanceScheduleListByCompany as qs,PayMaintenanceScheduleGet as $s,PayMaintenanceScheduleMerge as Ws,PayMaintenanceScheduleDelete as js,PayMaintenanceScheduleRestore as zs,PayMaintenanceJobListByCompany as Ks,PayMaintenanceJobGet as Zs,PayMaintenanceJobMerge as Qs,PayMaintenanceJobDelete as Vs,PayMaintenanceJobRestore as Xs,SubscriptionType as Ys,Reply as er,PaySubscriptionMerge as tr,RepSubscription as sr,PaySubscriptionDelete as rr,PaySubscriptionList as nr}from"@trakit/commands";import{utility as ir,Machine as or,serialization as ar}from"@trakit/objects";class cr{type;constructor(e){this.type=e}}class hr extends cr{kind;companyId;constructor(e,t,s){super(e),this.kind=t,this.companyId=s}}class ur extends cr{account;constructor(e,t){super(e),this.account=t}}class dr extends hr{objects;constructor(e,t,s,r){super(e,t,s),this.objects=r}}class pr extends hr{object;constructor(e,t,s,r){super(e,t,s),this.object=r}}class lr extends hr{key;constructor(e,t,s,r){super(e,t,s),this.key=r}}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",UserAuthentication:"/companies/{companyId}/users/authentications",UserState:"/companies/{companyId}/users/states",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{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 d?this.account=e:"string"==typeof e?this.setAuth({ghostId:e}):e instanceof or||e?.key?this.setAuth({machine:e.toJSON?.()??e}):e?.machine?.key||e?.ghostId?this.setAuth(new d({errorCode:u.success,message:"Authenticated via "+(e?.machine?.key?"Machine":"Session"),...e.toJSON?.()??e})):this.setAuth(new d)}t=0;i=new Map;command(t){const s=t.constructor.name+JSON.stringify(t.toJSON());let r=this.i.get(s);return r||this.i.set(s,r=new Promise((async(r,n)=>{let i=null,o=null,a=null;try{t.reqId=++this.t,i=await this.requestCreate(t)}catch(t){o=e(t)}try{o=o??await this.requestRelay(i)}catch(s){a=t.createReply(s instanceof Error?e(s):s)}try{a=a??t.createReply(o)}catch(s){a=t.createReply(e(s,o))}(a.errorCode===u.success?r:n)(a),this.i.delete(s)}))),r}}class fr extends vr{o=new Map;h(e){this.setAuth(e??new d(this.account.toJSON())),this.fire("account",(()=>new ur("account",this.account)))}u(e,t,s){this.fire("list",(()=>new dr("list",e,t,s)))}p(e,t,s){this.fire("update",(()=>new pr("update",e,t,s)))}l(e,t,s){this.fire("delete",(()=>new lr("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 p&&t.store()){const s=e.getAction(),r=t.getCompanyId();t instanceof l?s.filter?t.getList().forEach((e=>this.p(s.object,r,e))):this.u(s.object,r,t.getList()):t instanceof m?this.p(s.object,r,t.getObject()):t instanceof w?this.l(s.object,r,t.getKey()):t instanceof g&&t.getResults().forEach((e=>this.l(s.object,e.getCompanyId(),e.getKey())))}return t}async selfDetails(){const e=await this.command(new y);return this.h(e),e}async login(e,t,s){const r=await this.command(new v({username:e,password:t,userAgent:s??null}));return this.h(r),r}logout(){const e=this.command(new f);return this.h(new d),e}updateContact(e,t,s,r,n,i,o,a,c,h,u){return this.command(new b({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 C({current:e,password:t}))}updatePreferences(e,t,s,r,n){return this.command(new P({language:e??null,timezone:t?.code??t??null,notify:s?.map((e=>e.toJSON?.()??e))??null,formats:r instanceof Map?ar.fromMap(r):r??null,measurements:n instanceof Map?ar.fromMap(n):n??null}))}updateState(e){return this.command(new S({options:e instanceof Map?ar.fromMap(e):e??null}))}getCompany(e){return this.command(new R({company:{id:e}}))}mergeCompany(e){return this.command(new k({company:e}))}removeCompany(e){return this.command(new A({company:{id:e}}))}restoreCompany(e){return this.command(new D({company:{id:e}}))}listCompanyGenerals(e,t){return this.command(new M({...t,company:{id:e}}))}getCompanyGeneral(e){return this.command(new I({company:{id:e}}))}listCompanyPolicies(e,t){return this.command(new T({...t,company:{id:e}}))}getCompanyPolicy(e){return this.command(new G({company:{id:e}}))}listCompanyStyles(e,t){return this.command(new U({...t,company:{id:e}}))}getCompanyStyle(e){return this.command(new B({company:{id:e}}))}listCompanyDirectories(e,t){return this.command(new J({...t,company:{id:e}}))}getCompanyDirectory(e){return this.command(new E({company:{id:e}}))}getReseller(e){return this.command(new L({company:{id:e}}))}mergeReseller(e){return this.command(new x({company:e}))}removeReseller(e){return this.command(new N({company:{id:e}}))}restoreReseller(e){return this.command(new O({company:{id:e}}))}listContacts(e,t){return this.command(new _({...t,company:{id:e}}))}getContact(e){return this.command(new F({contact:{id:e}}))}mergeContact(e){return this.command(new H({contact:e}))}removeContact(e){return this.command(new q({contact:{id:e}}))}restoreContact(e){return this.command(new $({contact:{id:e}}))}multiMergeContact(e){return this.command(new W({contacts:e}))}multiRemoveContact(e){return this.command(new j({contacts:e.map((e=>({id:e})))}))}listUsers(e,t){return this.command(new z({...t,company:{id:e}}))}getUser(e){return this.command(new K({user:{login:e}}))}mergeUser(e){return this.command(new Z({user:e}))}removeUser(e){return this.command(new Q({user:{login:e}}))}restoreUser(e){return this.command(new V({user:{login:e}}))}listUserGenerals(e,t){return this.command(new X({...t,company:{id:e}}))}getUserGeneral(e){return this.command(new Y({user:{login:e}}))}listUserAdvanceds(e,t){return this.command(new ee({...t,company:{id:e}}))}getUserAdvanced(e){return this.command(new te({user:{login:e}}))}listUserGroups(e,t){return this.command(new se({...t,company:{id:e}}))}getUserGroup(e){return this.command(new re({userGroup:{id:e}}))}mergeUserGroup(e){return this.command(new ne({userGroup:e}))}removeUserGroup(e){return this.command(new ie({userGroup:{id:e}}))}restoreUserGroup(e){return this.command(new oe({userGroup:{id:e}}))}listMachines(e,t){return this.command(new ae({...t,company:{id:e}}))}getMachine(e){return this.command(new ce({machine:{id:e}}))}mergeMachine(e){return this.command(new he({machine:e}))}removeMachine(e){return this.command(new ue({machine:{id:e}}))}restoreMachine(e){return this.command(new de({machine:{id:e}}))}listSessions(e,t){return this.command(new pe({...t,company:{id:e}}))}listSessionsByUser(e,t){return this.command(new le({...t,user:{login:e}}))}killSession(e){return this.command(new me({session:{handle:e}}))}listIcons(e,t){return this.command(new we({...t,company:{id:e}}))}getIcon(e){return this.command(new ge({icon:{id:e}}))}mergeIcon(e){return this.command(new ye({icon:e}))}removeIcon(e){return this.command(new ve({icon:{id:e}}))}restoreIcon(e){return this.command(new fe({icon:{id:e}}))}listPictures(e,t){return this.command(new be({...t,company:{id:e}}))}getPicture(e){return this.command(new Ce({picture:{id:e}}))}mergePicture(e){return this.command(new Pe({picture:e}))}removePicture(e){return this.command(new Se({picture:{id:e}}))}restorePicture(e){return this.command(new Re({picture:{id:e}}))}listDocuments(e,t){return this.command(new ke({...t,company:{id:e}}))}getDocument(e){return this.command(new Ae({document:{id:e}}))}mergeDocument(e){return this.command(new De({document:e}))}removeDocument(e){return this.command(new Me({document:{id:e}}))}restoreDocument(e){return this.command(new Ie({document:{id:e}}))}listFormTemplates(e,t){return this.command(new Te({...t,company:{id:e}}))}getFormTemplate(e){return this.command(new Ge({formTemplate:{id:e}}))}mergeFormTemplate(e){return this.command(new Ue({formTemplate:e}))}removeFormTemplate(e){return this.command(new Be({formTemplate:{id:e}}))}restoreFormTemplate(e){return this.command(new Je({formTemplate:{id:e}}))}listFormResults(e,t){return this.command(new Ee({...t,company:{id:e}}))}getFormResult(e){return this.command(new Le({formResult:{id:e}}))}mergeFormResult(e){return this.command(new xe({formResult:e}))}multiMergeFormResult(e){return this.command(new Ne({formResult:{id:e}}))}removeFormResult(e){return this.command(new Oe({formResult:{id:e}}))}restoreFormResult(e){return this.command(new _e({formResult:{id:e}}))}listDashcamDatas(e,t){return this.command(new Fe({...t,company:{id:e}}))}getDashcamData(e){return this.command(new He({dashcam:{guid:e}}))}listDashcamLives(e,t){return this.command(new qe({...t,company:{id:e}}))}listAssets(e,t){return this.command(new $e({...t,company:{id:e}}))}getAsset(e){return this.command(new We({asset:{id:e}}))}mergeAsset(e){return this.command(new je({asset:e}))}multiMergeAsset(e){return this.command(new ze({assets:e}))}removeAsset(e){return this.command(new Ke({asset:{id:e}}))}restoreAsset(e){return this.command(new Ze({asset:{id:e}}))}suspendAsset(e){return this.command(new Qe({asset:{id:e}}))}reviveAsset(e){return this.command(new Ve({asset:{id:e}}))}searchAssets(e,t){}listAssetGenerals(e,t){return this.command(new Xe({...t,company:{id:e}}))}getAssetGeneral(e){return this.command(new Ye({asset:{id:e}}))}searchAssetGenerals(e,t){}listAssetAdvanceds(e,t){return this.command(new et({...t,company:{id:e}}))}getAssetAdvanced(e){return this.command(new tt({asset:{id:e}}))}searchAssetAdvanceds(e,t){}mergeAssetDispatch(e){return this.command(new st({assetDispatch:e}))}listDispatchTasks(e,t){return this.command(new rt({...t,company:{id:e}}))}getDispatchTasksByAsset(e,t){return this.command(new nt({...t,asset:{id:e}}))}getDispatchTask(e){return this.command(new it({dispatchTask:{id:e}}))}mergeDispatchTask(e){return this.command(new ot({dispatchTask:e}))}multiMergeDispatchTask(e){return this.command(new at({dispatchTask:{id:e}}))}removeDispatchTask(e){return this.command(new ct({dispatchTask:{id:e}}))}restoreDispatchTask(e){return this.command(new ht({dispatchTask:{id:e}}))}listDispatchJobs(e,t){return this.command(new ut({...t,company:{id:e}}))}getDispatchJobsByAsset(e,t){return this.command(new dt({...t,asset:{id:e}}))}getDispatchJob(e){return this.command(new pt({dispatchJob:{id:e}}))}mergeDispatchJob(e){return this.command(new lt({dispatchJob:e}))}multiMergeDispatchJob(e){return this.command(new mt({dispatchJob:{id:e}}))}removeDispatchJob(e){return this.command(new wt({dispatchJob:{id:e}}))}restoreDispatchJob(e){return this.command(new gt({dispatchJob:{id:e}}))}changeDispatchJob(e){return this.command(new yt({dispatchJob:e}))}cancelDispatchJob(e){return this.command(new vt({dispatchJob:e}))}listAssetMessages(e,t){return this.command(new ft({...t,company:{id:e}}))}getAssetMessagesByAsset(e,t){return this.command(new bt({...t,asset:{id:e}}))}getAssetMessage(e){return this.command(new Ct({message:{id:e}}))}mergeAssetMessage(e){return this.command(new Pt({assetMessage:e}))}multiMergeAssetMessage(e){return this.command(new St({assetMessage:{id:e}}))}removeAssetMessage(e){return this.command(new Rt({assetMessage:{id:e}}))}restoreAssetMessage(e){return this.command(new kt({assetMessage:{id:e}}))}listPlaces(e,t){return this.command(new At({...t,company:{id:e}}))}getPlace(e){return this.command(new Dt({place:{id:e}}))}mergePlace(e){return this.command(new Mt({place:e}))}removePlace(e){return this.command(new It({place:{id:e}}))}restorePlace(e){return this.command(new Tt({place:{id:e}}))}listProviders(e,t){return this.command(new Gt({...t,company:{id:e}}))}getProvider(e){return this.command(new Ut({provider:{id:e}}))}mergeProvider(e){return this.command(new Bt({provider:e}))}multiMergeProvider(e){return this.command(new Jt({providers:e}))}multiRemoveProvider(e){return this.command(new Et({providers:e.map((e=>({id:e})))}))}removeProvider(e){return this.command(new Lt({provider:{id:e}}))}restoreProvider(e){return this.command(new xt({provider:{id:e}}))}searchProviders(e,t){}listProviderGenerals(e,t){return this.command(new Nt({...t,company:{id:e}}))}getProviderGeneral(e){return this.command(new Ot({provider:{id:e}}))}searchProviderGenerals(e,t){}listProviderAdvanceds(e,t){return this.command(new _t({...t,company:{id:e}}))}getProviderAdvanced(e){return this.command(new Ft({provider:{id:e}}))}searchProviderAdvanceds(e,t){}listProviderControls(e,t){return this.command(new Ht({...t,company:{id:e}}))}getProviderControl(e){return this.command(new qt({provider:{id:e}}))}searchProviderControls(e,t){}listProviderScripts(e,t){return this.command(new $t({...t,company:{id:e}}))}getProviderScript(e){return this.command(new Wt({providerScript:{id:e}}))}mergeProviderScript(e){return this.command(new jt({providerScript:e}))}removeProviderScript(e){return this.command(new zt({providerScript:{id:e}}))}restoreProviderScript(e){return this.command(new Kt({providerScript:{id:e}}))}listProviderConfigs(e,t){return this.command(new Zt({...t,company:{id:e}}))}getProviderConfig(e){return this.command(new Qt({providerConfig:{id:e}}))}mergeProviderConfig(e){return this.command(new Vt({providerConfig:e}))}multiMergeProviderConfig(e){return this.command(new Xt({providerConfig:{id:e}}))}removeProviderConfig(e){return this.command(new Yt({providerConfig:{id:e}}))}restoreProviderConfig(e){return this.command(new es({providerConfig:{id:e}}))}listProviderConfigurations(e,t){return this.command(new ts({...t,company:{id:e}}))}getProviderConfiguration(e){return this.command(new ss({providerConfiguration:{id:e}}))}mergeProviderConfiguration(e){return this.command(new rs({providerConfiguration:e}))}multiMergeProviderConfiguration(e){return this.command(new ns({providerConfiguration:{id:e}}))}removeProviderConfiguration(e){return this.command(new is({providerConfiguration:{id:e}}))}restoreProviderConfiguration(e){return this.command(new os({providerConfiguration:{id:e}}))}listProviderRegistration(e,t){return this.command(new as({...t,company:{id:e}}))}getProviderRegistration(e){return this.command(new cs({providerRegistration:{id:e}}))}mergeProviderRegistration(e){return this.command(new hs({providerRegistration:e}))}removeProviderRegistration(e){return this.command(new us({providerRegistration:{id:e}}))}listBehaviours(e,t){return this.command(new ds({...t,company:{id:e}}))}getBehaviour(e){return this.command(new ps({behaviour:{id:e}}))}mergeBehaviour(e){return this.command(new ls({behaviour:e}))}multiMergeBehaviour(e){return this.command(new ms({behaviour:{id:e}}))}removeBehaviour(e){return this.command(new ws({behaviour:{id:e}}))}restoreBehaviour(e){return this.command(new gs({behaviour:{id:e}}))}listBehaviourScripts(e,t){return this.command(new ys({...t,company:{id:e}}))}getBehaviourScript(e){return this.command(new vs({behaviourScript:{id:e}}))}mergeBehaviourScript(e){return this.command(new fs({behaviourScript:e}))}removeBehaviourScript(e){return this.command(new bs({behaviourScript:{id:e}}))}restoreBehaviourScript(e){return this.command(new Cs({behaviourScript:{id:e}}))}listBehaviourAssetLogs(e,t){return this.command(new Ps({...t,behaviour:{id:e}}))}clearBehaviourAssetLogs(e){return this.command(new Ss({behaviour:{id:e}}))}listBehaviourLogs(e,t){return this.command(new Rs({...t,behaviour:{id:e}}))}clearBehaviourLogs(e){return this.command(new ks({behaviour:{id:e}}))}listBehaviourScriptLogs(e,t){return this.command(new As({...t,behaviourScript:{id:e}}))}clearBehaviourScriptLogs(e,t){return this.command(new Ds({...t,behaviourScript:{id:e}}))}listReportTemplates(e,t){return this.command(new Ms({...t,company:{id:e}}))}getReportTemplate(e){return this.command(new Is({reportTemplate:{id:e}}))}mergeReportTemplate(e){return this.command(new Ts({reportTemplate:e}))}removeReportTemplate(e){return this.command(new Gs({reportTemplate:{id:e}}))}restoreReportTemplate(e){return this.command(new Us({reportTemplate:{id:e}}))}listReportSchedules(e,t){return this.command(new Bs({...t,company:{id:e}}))}getReportSchedule(e){return this.command(new Js({reportSchedule:{id:e}}))}mergeReportSchedule(e){return this.command(new Es({reportSchedule:e}))}removeReportSchedule(e){return this.command(new Ls({reportSchedule:{id:e}}))}restoreReportSchedule(e){return this.command(new xs({reportSchedule:{id:e}}))}listReportResults(e,t){return this.command(new Ns({...t,company:{id:e}}))}getReportResult(e){return this.command(new Os({reportResult:{id:e}}))}mergeReportResult(e){return this.command(new _s({reportResult:e}))}removeReportResult(e){return this.command(new Fs({reportResult:{id:e}}))}restoreReportResult(e){return this.command(new Hs({reportResult:{id:e}}))}listMaintenanceSchedules(e,t){return this.command(new qs({...t,company:{id:e}}))}getMaintenanceSchedule(e){return this.command(new $s({maintenanceSchedule:{id:e}}))}mergeMaintenanceSchedule(e){return this.command(new Ws({maintenanceSchedule:e}))}removeMaintenanceSchedule(e){return this.command(new js({maintenanceSchedule:{id:e}}))}restoreMaintenanceSchedule(e){return this.command(new zs({maintenanceSchedule:{id:e}}))}listMaintenanceJobs(e,t){return this.command(new Ks({...t,company:{id:e}}))}getMaintenanceJob(e){return this.command(new Zs({maintenanceJob:{id:e}}))}mergeMaintenanceJob(e){return this.command(new Qs({maintenanceJob:e}))}removeMaintenanceJob(e){return this.command(new Vs({maintenanceJob:{id:e}}))}restoreMaintenanceJob(e){return this.command(new Xs({maintenanceJob:{id:e}}))}}class br extends fr{static URI_PROD="https://rest.trakit.ca/";static URI_BETA="https://mindflayer.trakit.ca/";constructor(e,t){super(e,t??br.URI_PROD)}requestCreate(e){return r(this,e)}requestRelay(e){return i(e)}}const Cr=/^(.+?)(Merged|Deleted|Suspended)$/,Pr={Company:[Ys.companyGeneral,Ys.companyLabels,Ys.companyPolicies],CompanyGeneral:[Ys.companyGeneral],CompanyDirectory:[],CompanyStyle:[Ys.companyLabels],CompanyPolicy:[Ys.companyPolicies],CompanyReseller:[Ys.companyReseller],Contact:[Ys.contact],Machine:[Ys.machine],User:[Ys.userGeneral,Ys.userAdvanced,Ys.userAuthentication],UserGeneral:[Ys.userGeneral],UserAdvanced:[Ys.userAdvanced],UserAuthentication:[Ys.userAuthentication],UserState:[Ys.userState],UserGroup:[Ys.userGroup],Session:[],Dashcam:[],Icon:[Ys.icon],Picture:[Ys.picture],Document:[Ys.document],FormTemplate:[Ys.formTemplate],FormResult:[Ys.formResult],Asset:[Ys.assetGeneral,Ys.assetAdvanced,Ys.assetDispatch],AssetGeneral:[Ys.assetGeneral],AssetAdvanced:[Ys.assetAdvanced],AssetDispatch:[Ys.assetDispatch],AssetMessage:[Ys.assetMessage],AssetAlert:[],DispatchTask:[Ys.dispatchTask],DispatchJob:[Ys.dispatchJob],MaintenanceSchedule:[Ys.maintenanceSchedule],MaintenanceJob:[Ys.maintenanceJob],Place:[Ys.placeGeneral],BehaviourScript:[Ys.behaviourScript],Behaviour:[Ys.behaviour],BehaviourLog:[Ys.behaviourLog],Provider:[Ys.providerGeneral,Ys.providerAdvanced,Ys.providerControl],ProviderGeneral:[Ys.providerGeneral],ProviderAdvanced:[Ys.providerAdvanced],ProviderControl:[Ys.providerControl],ProviderConfiguration:[Ys.providerConfiguration],ProviderConfigurationType:[],ProviderScript:[Ys.providerScript],ProviderConfig:[Ys.providerConfig],ProviderRegistration:[Ys.providerRegistration],ReportTemplate:[Ys.reportTemplate],ReportSchedule:[Ys.reportSchedule],ReportResult:[Ys.reportResult],BillingProfile:[Ys.billingProfile],BillingReport:[Ys.billingReport],BillableHostingRule:[Ys.billingHosting],BillableHostingLicense:[Ys.billingLicense]};class Sr{#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}expireRegion(e,t=!1){const s=t?0:(new Date).valueOf();return this.#t(e,new Date(s+3e5))}expireRegions(e,t=!1){return e.map((e=>this.expireRegion(e,t)))}preserveRegion(e){const t=this.#e.get(e);return this.#t(e),t||null}preserveRegions(e){return e.map((e=>this.preserveRegion(e)))}reset(){const e=[];for(let[t,s]of this.#e)s||e.push(t);return this.#e.clear(),e}}var Rr;!function(e){e.maintenance="maintenance",e.upgrade="upgrade"}(Rr||(Rr={}));class kr{static fromJson(e){switch(e?.kind){case Rr.maintenance:return new Ar(e);case Rr.upgrade:return new Dr(e);default:throw new Error(`Unknown broadcast type: ${e?.kind}`)}}kind;serverTime;message;constructor(e){this.kind=e?.kind,this.serverTime=ir.date(e?.serverTime),this.message=e?.message??""}}class Ar extends kr{starting;ending;constructor(e){super(e),this.starting=ir.date(e?.starting),this.ending=ir.date(e?.ending)}}class Dr extends kr{eta;reload;constructor(e){super(e),this.eta=ir.date(e?.eta),this.reload=!!e?.reload}}class Mr extends cr{name;body;constructor(e,t,s){super(e),this.name=t,this.body=s}}class Ir extends cr{reply;constructor(e,t){super(e),this.reply=t}}class Tr extends cr{broadcast;constructor(e,t){super(e),this.broadcast=kr.fromJson(t)}}const Gr="connection",Ur="dis"+Gr;var Br;!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"}(Br||(Br={}));class Jr extends fr{static URI_PROD="wss://socket.trakit.ca/";static URI_BETA="wss://kraken.trakit.ca/";static msgNameToSyncName(e){const s=Cr.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 Br.opening;case WebSocket.OPEN:return this.#a?Br.open:Br.opening;case WebSocket.CLOSING:return Br.closing;default:return Br.closed}}get ready(){return this.#a&&this.#c}m(e){const t=this.o.get("open");if(t?.length){const s=new ur("open",e);t.forEach((e=>e.call(this,s)))}}v(e){const t=this.o.get("close");if(t?.length){const s=new Ir("close",e);t.forEach((e=>e.call(this,s)))}}C(e,t){const s=this.o.get("message");if(s?.length){const r=new Mr("message",e,t);s.forEach((e=>e.call(this,r)))}}P(e){const t=this.o.get("error");if(t?.length){const s=new Ir("error",e);t.forEach((e=>e.call(this,s)))}}S(e){const t=this.o.get("broadcast");if(t?.length){const s=new Tr("broadcast",e);t.forEach((e=>e.call(this,s)))}}#h=new Map;#u(e,t){return this.#h.get(e)?.(t),this.#h.delete(e)}#o;#a=!1;#c=!0;#d(e){this.#o.onopen=null,this.#o.onmessage=e=>this.#p(e),this.#l=0}#m(e){this.P(new er({errorCode:u.service,message:"WebSocket error",errorDetails:{kind:"connection",state:this.state,reconnect:this.reconnectEnabled}}))}#w(e){clearTimeout(this.#g),clearTimeout(this.#y),this.#a=!1,this.#l=this.#l?2*this.#l:this.lastReceived?(new Date).valueOf()-this.lastReceived.valueOf():5e3;const t=Math.min(this.#l,3e5),s={kind:"connection",state:Br.closed,code:e.code,reason:e.reason,wasClean:e.wasClean,reconnect:this.reconnectEnabled,retry:(new Date).valueOf()+t},r={errorCode:u.success,message:"Disconnected",errorDetails:s};for(const e of[...this.#h.keys()].sort())this.#u(e,e===Ur?r:{...r,reqId:e,errorCode:u.service,errorDetails:{...s}});this.v?.(new er(r)),this.#y=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.#v(s),this.#s=new Date(this.#r),this.#a=!0,this.#u(Gr,s),this.h(),this.m(this.account);break;case"loginResponse":case"getSessionDetailsResponse":this.#v(s),this.h();break;case"updateOwnPasswordResponse":this.#c||(this.#c=0===s.errorCode);break;case"logoutResponse":this.close();case"sessionEnded":this.#c=!1,this.#v(s),this.h();break;case"sessionGeneralMerged":case"sessionAdvancedMerged":case"sessionAuthenticationMerged":case"sessionStateMerged":this.#f({user:s}),this.h();break;case"sessionMachineMerged":this.#f({machine:s}),this.h();break;case"broadcast":this.S(s)}if(t.endsWith("Response"))this.#u(s.reqId,s);else if(!t.startsWith("session")){const e=Cr.exec(t);e?.length&&this.#b(e,s)}this.resetKeepAlive()}#v(e){this.setAuth(new d(e)),this.#c=0===this.account.errorCode&&!this.account.user?.passwordExpired,this.account.store()}#f(e){const t=this.account.toJSON();this.setAuth(new d({...t,user:e?.user?{...t.user,...e.user}:null,machine:e?.machine?{...t.machine,...e.machine}:null})),this.account.store()}#b(e,s){const r=t(e[1]),n=s[r.startsWith("Company")?"parent":"company"],i=function(e,t){return h["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:u.success,message:e[2]+" event",[e[1]]:s});if(o.store())switch(e[2]){case"Merged":case"Suspended":this.p(r,n,o.getObject());break;case"Deleted":this.l(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;#l=0;#y=0;keepAliveEnabled=!1;#g=0;constructor(e,t){super(e,t??Jr.URI_PROD)}dispose(){this.close().finally((()=>{super.dispose(),this.#o=this.#h=null}))}open(){let e=this.i.get(Gr);return e||(clearTimeout(this.#y),this.i.set(Gr,e=new Promise((async(e,t)=>{const s=this.state;if(s===Br.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.#d(e),this.#o.onerror=e=>this.#m(e),this.#o.onclose=e=>this.#w(e),this.#h.set(Gr,(s=>{(0===s.errorCode?e:t)(this.account)}))}else t(new d({errorCode:u.unknown,message:"WebSocket not closed",errorDetails:{kind:"connection",connection:s}}))})))),e}close(){let e=this.i.get(Gr);return e||(clearTimeout(this.#y),this.i.set(Gr,e=new Promise(((e,t)=>{const s=this.state;switch(s){case Br.opening:case Br.open:this.#c=!1,this.reconnectEnabled=!1,this.#h.set(Ur,(s=>{(0===s.errorCode?e:t)(new er(s))})),this.#o.close(1e3,"Bye!");break;default:t(new er({errorCode:u.unknown,message:"WebSocket not open",errorDetails:{kind:"connection",connection:s}}))}})))),e}requestCreate(e){return Promise.resolve([o(e),e.toJSON()])}requestRelay(t){const s=t[0],r=t[1]||{};return new Promise(((n,i)=>{if(this.state===Br.open){const t=++this.t,i=setTimeout((()=>this.#u(t,{reqId:t,errorCode:u.unknown,message:"Command timeout"})),12e4);r.reqId=t,this.#h.set(t,(e=>{clearTimeout(i),n(e)}));try{this.#o.send(s+" "+JSON.stringify(r)),this.#i=new Date}catch(s){this.#u(t,e(s))}this.resetKeepAlive()}else this.open().then((()=>this.requestRelay(t).then(n))).catch(i)}))}resetKeepAlive(){return clearTimeout(this.#g),this.#g=this.keepAliveEnabled&&this.#c?setTimeout((()=>this.requestRelay(["noop",{}])),3e5):0,Promise.resolve(0!==this.#g)}subscribe(e,t){return t?.length?this.command(new tr({company:{id:e},subscriptionTypes:t})):Promise.resolve(new sr({errorCode:u.success,message:"No subscriptions specified"}))}unsubscribe(e,t){return t?.length?this.command(new rr({company:{id:e},subscriptionTypes:t})):Promise.resolve(new sr({errorCode:u.success,message:"No subscriptions specified"}))}listSubscriptions(){return this.command(new nr)}}const Er={Company:["CompanyGeneral","CompanyDirectory","CompanyStyle","CompanyPolicy"],Asset:["AssetGeneral","AssetAdvanced","AssetDispatch"],Provider:["ProviderGeneral","ProviderAdvanced","ProviderControl"],User:["UserGeneral","UserAdvanced"]};class Lr extends fr{R;k;get autoConnect(){return this.R.reconnectEnabled}set autoConnect(e){this.R.reconnectEnabled=!!e,e&&this.R.state===Br.closed&&this.R.open()}get socketOnline(){return this.R.state===Br.open}get socketDetails(){return{state:this.R.state,ready:this.R.ready,lastConnected:this.R.lastConnected,lastSent:this.R.lastSent,lastReceived:this.R.lastReceived,lastMessage:this.R.lastMessage}}get socketAddress(){return this.R.baseAddress}set socketAddress(e){this.R.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 br(this.account,t??br.URI_PROD),this.k.on("account",r),this.R=new Jr(this.account,s??Jr.URI_PROD),this.R.on("account",r),this.R.on("open",(e=>this.#C(e.account))),this.R.on("close",(e=>this.#P(e.reply)));for(const e of["account","list","update","delete"])this.k.on(e,n),this.R.on(e,n);for(const e of["open","close","broadcast"])this.R.on(e,n);this.autoConnect=!(!this.account.ghostId&&!this.account.machine?.key)}dispose(){super.dispose(),this.k.dispose(),this.R.dispose(),this.k=this.R=null}setAuth(e){super.setAuth(e),this.k?.setAuth(this.account),this.R?.setAuth(this.account)}command(e){const t=e.getAction().object;return"Subscription"===t||"Self"===t&&this.socketOnline?this.socket(e):this.rest(e)}requestCreate(e){throw new Error("Method not implemented.")}requestRelay(e){throw new Error("Method not implemented.")}rest(e){return this.k.command(e)}socket(e){return this.R.command(e)}#C(e){this.#S.forEach(((e,t)=>{this.sync(t,c(e.reset()))})),this.#R()}#P(e){clearTimeout(this.#k)}isSynced(e,t){let s=this.R.state===Br.open;if(s){const r=this.#A(e);s=a(t).every((e=>r.regions.includes(e)))}return s}getSyncs(e,t=!1){const s=this.#A(e),r=t?[]:s.getExpiring();return c(s.regions.filter((e=>!r.includes(e))))}async sync(t,s){const r=[],n=this.#A(t),i=a(s).filter((e=>!n.regions.includes(e)));if(i.length>0){n.preserveRegions(i);const s=await this.R.subscribe(t,i);n.expireRegions((s.denied??[]).concat(s.invalid??[]),!0),c(s.merged??[]).forEach((s=>{const n=function(e,t){return h["Pay"+e+(t??"Get")]}(s,s.startsWith("Company")?"Get":"ListByCompany");r.push(n?this.command(new n({company:{id:t}})):Promise.reject(e(new Error(`No payload class could be made for sync type ${s}`))))}))}return Promise.all(r)}desync(e,t){const s=this.#A(e),r=t.reduce(((e,t)=>e.concat(Pr[t]||[])),[]).filter((e=>s.regions.includes(e))).filter(((e,t,s)=>s.indexOf(e)===t));return s.expireRegions(r),r}#S=new Map;#R(){const e=[];this.R.state===Br.open&&this.#S.forEach(((t,s)=>{const r=t.purgeExpired();r.length&&e.push(this.unsubscribe(s,r))})),Promise.allSettled(e).finally((()=>{this.#k=setTimeout((()=>this.#R()),1e4)}))}#k;#A(e){let t=this.#S.get(e);return t||this.#S.set(e,t=new Sr),t}subscribe(e,t){return this.R.subscribe(e,t)}unsubscribe(e,t){return this.R.unsubscribe(e,t)}listSubscriptions(){return this.R.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 xr="0.0.54";export{Sr as SubscribedRegions,vr as TrakitBaseCommander,cr as TrakitEvent,ur as TrakitEventAccount,lr as TrakitEventDelete,dr as TrakitEventList,Ir as TrakitEventSocketClose,Dr as TrakitEventSocketMessage,hr as TrakitEventSync,pr as TrakitEventUpdate,fr as TrakitObjectCommander,br as TrakitRestfulCommander,Jr as TrakitSocketCommander,Br as TrakitSocketStatus,Lr as TrakitSyncCommander,e as createClientErrorResponse,o as makeCommandName,s as makeVerbRoute,r as requestCreateCommander,n as requestCreateCors,i as requestRelayCorsJson,xr as version};
7
+ */const xr="0.0.56";export{Sr as SubscribedRegions,vr as TrakitBaseCommander,cr as TrakitEvent,ur as TrakitEventAccount,lr as TrakitEventDelete,dr as TrakitEventList,Ir as TrakitEventSocketClose,Mr as TrakitEventSocketMessage,hr as TrakitEventSync,pr as TrakitEventUpdate,fr as TrakitObjectCommander,br as TrakitRestfulCommander,Jr as TrakitSocketCommander,Br as TrakitSocketStatus,Lr as TrakitSyncCommander,e as createClientErrorResponse,o as makeCommandName,s as makeVerbRoute,r as requestCreateCommander,n as requestCreateCors,i as requestRelayCorsJson,xr as version};