@ztimson/momentum 0.21.0 → 0.27.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../src/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,YAAY,EAAE,KAAK,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAC,eAAe,EAAC,MAAM,MAAM,CAAC;AACrC,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAEjC,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG;IACtC,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC;IAC7B,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,GAAG,CAAC;IAC1B,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,GAAG,CAAC;IAC5B,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,CAAC;CAClC,CAAC;AAEF,qBAAa,KAAM,SAAQ,YAAY,CAAC,UAAU,CAAC;IAClD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAO;IAC3B,OAAO,CAAC,MAAM,CAAS;IAEvB,MAAM,0BAAkC;IACxC,IAAI,KAAK,WAAgC;IACzC,IAAI,KAAK,CAAC,GAAG,QAAA,EAA4B;gBAE7B,GAAG,EAAE,GAAG,GAAG,MAAM;IAK7B,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvC,IAAI,CAAC,MAAM,UAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAUnC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYnD,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAWjC"}
1
+ {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../src/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,YAAY,EAAE,KAAK,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAC,eAAe,EAAC,MAAM,MAAM,CAAC;AACrC,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAEjC,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;CACzC,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG;IACtC,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC;IAC7B,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,GAAG,CAAC;IAC1B,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,GAAG,CAAC;IAC5B,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,CAAC;IAClC,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,GAAG,CAAC;CAClC,CAAC;AAEF,qBAAa,KAAM,SAAQ,YAAY,CAAC,UAAU,CAAC;IAClD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAO;IAC3B,OAAO,CAAC,MAAM,CAAS;IAEvB,MAAM,0BAAkC;IACxC,IAAI,KAAK,WAAgC;IACzC,IAAI,KAAK,CAAC,GAAG,QAAA,EAA4B;gBAE7B,GAAG,EAAE,GAAG,GAAG,MAAM;IAK7B,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvC,IAAI,CAAC,MAAM,UAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAcnC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAanD,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAajC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;CAQxC"}
package/dist/users.js ADDED
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Users = void 0;
4
+ const api_1 = require("./api");
5
+ const utils_1 = require("@ztimson/utils");
6
+ const rxjs_1 = require("rxjs");
7
+ class Users extends utils_1.TypedEmitter {
8
+ api;
9
+ listed = false;
10
+ $cache = new rxjs_1.BehaviorSubject([]);
11
+ get cache() { return this.$cache.value; }
12
+ set cache(val) { this.$cache.next(val); }
13
+ constructor(api) {
14
+ super();
15
+ this.api = typeof api == 'string' ? new api_1.Api(api) : api;
16
+ }
17
+ delete(username) {
18
+ return this.api.request({
19
+ url: `/api/users/${username}`,
20
+ method: 'DELETE'
21
+ }).then(() => {
22
+ this.cache = this.cache.filter(u => u.username != username);
23
+ this.emit('DELETE', username);
24
+ });
25
+ }
26
+ list(reload = false) {
27
+ if (!reload && this.listed)
28
+ return Promise.resolve(this.cache);
29
+ return this.api.request({ url: `/api/users` }).then(resp => {
30
+ resp.map(r => {
31
+ r.image = this.api.url + r.image + `?token=${this.api.token}`;
32
+ return r;
33
+ });
34
+ this.cache = resp;
35
+ this.listed = true;
36
+ this.emit('LIST', resp);
37
+ return resp;
38
+ });
39
+ }
40
+ read(username, reload = false) {
41
+ if (!reload) {
42
+ const cached = this.cache.find(u => u.username == username);
43
+ if (cached)
44
+ return Promise.resolve(cached);
45
+ }
46
+ return this.api.request({ url: `/api/users/${username}` }).then(resp => {
47
+ resp.image = this.api.url + resp.image + `?token=${this.api.token}`;
48
+ if (resp)
49
+ this.cache = [...this.cache.filter(u => u.username != username), resp];
50
+ this.emit('READ', resp);
51
+ return resp;
52
+ });
53
+ }
54
+ update(user) {
55
+ return this.api.request({
56
+ url: `/api/users/${user.username}`,
57
+ method: 'PATCH',
58
+ body: user
59
+ }).then(resp => {
60
+ resp.image = this.api.url + resp.image + `?token=${this.api.token}`;
61
+ if (resp)
62
+ this.cache = this.cache.filter(u => u.username != user.username).concat([resp]);
63
+ this.emit('UPDATE', resp);
64
+ return resp;
65
+ });
66
+ }
67
+ uploadImage(username, file) {
68
+ const data = new FormData();
69
+ data.append('file', file);
70
+ return this.api.request({ url: `/api/users/${username}/image`, body: data }).then(resp => {
71
+ this.emit('UPLOAD_IMAGE', file);
72
+ return resp;
73
+ });
74
+ }
75
+ }
76
+ exports.Users = Users;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ztimson/momentum",
3
- "version": "0.21.0",
3
+ "version": "0.27.1",
4
4
  "description": "Client library for momentum",
5
5
  "keywords": [
6
6
  "Momentum"
@@ -10,30 +10,27 @@
10
10
  "type": "git",
11
11
  "url": "https://git.zakscode.com/ztimson/momentum"
12
12
  },
13
- "main": "dist/momentum.cjs",
14
- "module": "dist/momentum.mjs",
13
+ "main": "dist/index.js",
14
+ "module": "dist/index.mjs",
15
15
  "types": "dist/index.d.ts",
16
+ "typings": "dist/index.d.ts",
16
17
  "exports": {
17
- "types": "./dist/index.d.ts",
18
- "import": "./dist/momentum.mjs",
19
- "require": "./dist/momentum.cjs"
18
+ "import": "./dist/index.mjs",
19
+ "require": "./dist/index.js",
20
+ "types": "./dist/index.d.ts"
20
21
  },
21
22
  "scripts": {
22
- "prebuild": "node -e \"const fs=require('fs');fs.cpSync('../README.md','./README.md')\"",
23
- "build": "npx tsc && npx vite build",
24
- "postbuild": "node -e \"const fs=require('fs');fs.cpSync('dist/momentum.cjs','../server/public/momentum.cjs');fs.cpSync('dist/momentum.mjs','../server/public/momentum.mjs')\"",
25
- "watch": "npx vite build --watch"
23
+ "prebuild": "bun -e \"const fs=require('fs');fs.cpSync('../README.md','./README.md')\"",
24
+ "build": "tsc && bun build --target browser --outfile dist/index.mjs --minify src/index.ts",
25
+ "postbuild": "bun -e \"const fs=require('fs');fs.cpSync('dist/index.mjs','../server/public/momentum.mjs')\"",
26
+ "watch": "tsc -w & bun build --watch --target browser --outfile dist/index.mjs --minify src/index.ts"
26
27
  },
27
28
  "dependencies": {
28
- "@ztimson/utils": "^0.12.0",
29
+ "@ztimson/utils": "^0.12.3",
29
30
  "rxjs": "^7.8.1"
30
31
  },
31
32
  "devDependencies": {
32
- "@types/node": "^18.14.0",
33
- "rxjs": "^7.8.1",
34
- "typescript": "^5.3.3",
35
- "vite": "^5.0.12",
36
- "vite-plugin-dts": "^3.7.2"
33
+ "typescript": "^5.3.3"
37
34
  },
38
35
  "files": [
39
36
  "dist"
package/dist/momentum.cjs DELETED
@@ -1,4 +0,0 @@
1
- (function(h,y){typeof exports=="object"&&typeof module<"u"?y(exports):typeof define=="function"&&define.amd?define(["exports"],y):(h=typeof globalThis<"u"?globalThis:h||self,y(h.utils={}))})(this,function(h){"use strict";var Ht=Object.defineProperty;var Wt=(h,y,L)=>y in h?Ht(h,y,{enumerable:!0,configurable:!0,writable:!0,value:L}):h[y]=L;var a=(h,y,L)=>Wt(h,typeof y!="symbol"?y+"":y,L);var y=Object.defineProperty,L=(i,e,t)=>e in i?y(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,l=(i,e,t)=>(L(i,typeof e!="symbol"?e+"":e,t),t);function St(i,e=!1){if(i==null)throw new Error("Cannot clean a NULL value");return Array.isArray(i)?i=i.filter(t=>t!=null):Object.entries(i).forEach(([t,r])=>{(e&&r===void 0||!e&&r==null)&&delete i[t]}),i}function K(i,e){const t=typeof i,r=typeof e;return t!="object"||i==null||r!="object"||e==null?t=="function"&&r=="function"?i.toString()==e.toString():i===e:Object.keys(i).length!=Object.keys(e).length?!1:Object.keys(i).every(n=>K(i[n],e[n]))}function z(i,e){const t=document.createElement("a");t.href=i,t.download=e,document.body.appendChild(t),t.click(),document.body.removeChild(t)}class d{constructor(){l(this,"listeners",{})}static emit(e,...t){(this.listeners["*"]||[]).forEach(r=>r(e,...t)),(this.listeners[e.toString()]||[]).forEach(r=>r(...t))}static off(e,t){const r=e.toString();this.listeners[r]=(this.listeners[r]||[]).filter(n=>n===t)}static on(e,t){var r;const n=e.toString();return this.listeners[n]||(this.listeners[n]=[]),(r=this.listeners[n])==null||r.push(t),()=>this.off(e,t)}static once(e,t){return new Promise(r=>{const n=this.on(e,(...s)=>{r(s.length==1?s[0]:s),t&&t(...s),n()})})}emit(e,...t){(this.listeners["*"]||[]).forEach(r=>r(e,...t)),(this.listeners[e]||[]).forEach(r=>r(...t))}off(e,t){this.listeners[e]=(this.listeners[e]||[]).filter(r=>r===t)}on(e,t){var r;return this.listeners[e]||(this.listeners[e]=[]),(r=this.listeners[e])==null||r.push(t),()=>this.off(e,t)}once(e,t){return new Promise(r=>{const n=this.on(e,(...s)=>{r(s.length==1?s[0]:s),t&&t(...s),n()})})}}l(d,"listeners",{});class T extends Error{constructor(e,t){super(e),l(this,"_code"),t!=null&&(this._code=t)}get code(){return this._code||this.constructor.code}set code(e){this._code=e}static from(e){const t=Number(e.statusCode)??Number(e.code),r=new this(e.message||e.toString());return Object.assign(r,{stack:e.stack,...e,code:t??void 0})}static instanceof(e){return e.constructor.code!=null}toString(){return this.message||super.toString()}}l(T,"code",500);class Lt extends T{constructor(e="Bad Request"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(Lt,"code",400);class Tt extends T{constructor(e="Unauthorized"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(Tt,"code",401);class Ot extends T{constructor(e="Forbidden"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(Ot,"code",403);class $t extends T{constructor(e="Not Found"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l($t,"code",404);class At extends T{constructor(e="Internal Server Error"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(At,"code",500);const A={CLEAR:"\x1B[0m",BRIGHT:"\x1B[1m",DIM:"\x1B[2m",UNDERSCORE:"\x1B[4m",BLINK:"\x1B[5m",REVERSE:"\x1B[7m",HIDDEN:"\x1B[8m"},P={BLACK:"\x1B[30m",RED:"\x1B[31m",GREEN:"\x1B[32m",YELLOW:"\x1B[33m",BLUE:"\x1B[34m",MAGENTA:"\x1B[35m",CYAN:"\x1B[36m",LIGHT_GREY:"\x1B[37m",GREY:"\x1B[90m",LIGHT_RED:"\x1B[91m",LIGHT_GREEN:"\x1B[92m",LIGHT_YELLOW:"\x1B[93m",LIGHT_BLUE:"\x1B[94m",LIGHT_MAGENTA:"\x1B[95m",LIGHT_CYAN:"\x1B[96m",WHITE:"\x1B[97m"};var O=(i=>(i[i.ERROR=0]="ERROR",i[i.WARN=1]="WARN",i[i.INFO=2]="INFO",i[i.LOG=3]="LOG",i[i.DEBUG=4]="DEBUG",i))(O||{});l(class g extends d{constructor(e){super(),this.namespace=e}pad(e,t,r,n=!1){const s=e.toString(),o=t-s.length;if(o<=0)return s;const u=Array(~~(o/r.length)).fill(r).join("");return n?s+u:u+s}format(...e){const t=new Date;return`${`${t.getFullYear()}-${t.getMonth()+1}-${t.getDate()} ${this.pad(t.getHours().toString(),2,"0")}:${this.pad(t.getMinutes().toString(),2,"0")}:${this.pad(t.getSeconds().toString(),2,"0")}.${this.pad(t.getMilliseconds().toString(),3,"0",!0)}`}${this.namespace?` [${this.namespace}]`:""} ${e.join(" ")}`}debug(...e){if(g.LOG_LEVEL<4)return;const t=this.format(...e);g.emit(4,t),console.debug(P.LIGHT_GREY+t+A.CLEAR)}log(...e){if(g.LOG_LEVEL<3)return;const t=this.format(...e);g.emit(3,t),console.log(A.CLEAR+t)}info(...e){if(g.LOG_LEVEL<2)return;const t=this.format(...e);g.emit(2,t),console.info(P.BLUE+t+A.CLEAR)}warn(...e){if(g.LOG_LEVEL<1)return;const t=this.format(...e);g.emit(1,t),console.warn(P.YELLOW+t+A.CLEAR)}error(...e){if(g.LOG_LEVEL<0)return;const t=this.format(...e);g.emit(0,t),console.error(P.RED+t+A.CLEAR)}},"LOG_LEVEL",4);class _t extends Promise{constructor(e){super((t,r)=>e(n=>t(n),n=>r(n),n=>this.progress=n)),l(this,"listeners",[]),l(this,"_progress",0)}get progress(){return this._progress}set progress(e){e!=this._progress&&(this._progress=e,this.listeners.forEach(t=>t(e)))}onProgress(e){return this.listeners.push(e),this}}const k=class S{constructor(e={}){l(this,"interceptors",{}),l(this,"headers",{}),this.opts=e,this.headers=e.headers||{},e.interceptors&&e.interceptors.forEach(t=>S.addInterceptor(t))}static addInterceptor(e){const t=Object.keys(S.interceptors).length.toString();return S.interceptors[t]=e,()=>{S.interceptors[t]=null}}addInterceptor(e){const t=Object.keys(this.interceptors).length.toString();return this.interceptors[t]=e,()=>{this.interceptors[t]=null}}async request(e={}){var t,r;if(!this.opts.url&&!e.url)throw new Error("URL needs to be set");let n=((t=e.url)!=null&&t.startsWith("http")?e.url:(this.opts.url||"")+(e.url||"")).replace(/([^:]\/)\/+/g,"$1");if(e.fragment&&(n.includes("#")?n.replace(/#.*(\?|\n)/g,(o,u)=>`#${e.fragment}${u}`):n+="#"+e.fragment),e.query){const o=Array.isArray(e.query)?e.query:Object.keys(e.query).map(u=>({key:u,value:e.query[u]}));n+=(n.includes("?")?"&":"?")+o.map(u=>`${u.key}=${u.value}`).join("&")}const s=St({"Content-Type":e.body&&!(e.body instanceof FormData)?"application/json":void 0,...S.headers,...this.headers,...e.headers});return fetch(n,{headers:s,method:e.method||(e.body?"POST":"GET"),body:(r=s["Content-Type"])!=null&&r.startsWith("application/json")&&e.body?JSON.stringify(e.body):e.body}).then(async o=>{for(let f of[...Object.values(S.interceptors),...Object.values(this.interceptors)])await new Promise(v=>f(o,()=>v()));const u=await(async()=>{var f,v;return!e.skipConverting&&(f=o.headers.get("Content-Type"))!=null&&f.startsWith("application/json")?await o.json():!e.skipConverting&&(v=o.headers.get("Content-Type"))!=null&&v.startsWith("text/plain")?await o.text():o})();if(o.ok)return u;const c=o.statusText||(typeof u=="string"?u:null);throw c?new Error(c):u})}};l(k,"interceptors",{}),l(k,"headers",{});let Rt=k;class p extends Rt{constructor(t=location.origin,r={}){r.url=t;super(r);a(this,"emitter",new d);a(this,"_token",null);a(this,"emit",this.emitter.emit.bind(this.emitter));a(this,"off",this.emitter.off.bind(this.emitter));a(this,"on",this.emitter.on.bind(this.emitter));a(this,"once",this.emitter.once.bind(this.emitter));this.url=t,this.opts=r}get token(){return this._token}set token(t){t!=this._token&&(this._token=t,this.headers.Authorization=t?`Bearer ${t}`:void 0,this.emit("TOKEN",t))}request(t){const r=super.request(t).then(n=>(this.emit("RESPONSE",n,t),n)).catch(n=>{throw this.emit("REJECTED",n,t),n});return this.emit("REQUEST",r,t),r}}var B=function(i,e){return B=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])},B(i,e)};function _(i,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");B(i,e);function t(){this.constructor=i}i.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}function G(i){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&i[e],r=0;if(t)return t.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&r>=i.length&&(i=void 0),{value:i&&i[r++],done:!i}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function N(i,e){var t=typeof Symbol=="function"&&i[Symbol.iterator];if(!t)return i;var r=t.call(i),n,s=[],o;try{for(;(e===void 0||e-- >0)&&!(n=r.next()).done;)s.push(n.value)}catch(u){o={error:u}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(o)throw o.error}}return s}function H(i,e,t){if(t||arguments.length===2)for(var r=0,n=e.length,s;r<n;r++)(s||!(r in e))&&(s||(s=Array.prototype.slice.call(e,0,r)),s[r]=e[r]);return i.concat(s||Array.prototype.slice.call(e))}typeof SuppressedError=="function"&&SuppressedError;function b(i){return typeof i=="function"}function J(i){var e=function(r){Error.call(r),r.stack=new Error().stack},t=i(e);return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var W=J(function(i){return function(t){i(this),this.message=t?t.length+` errors occurred during unsubscription:
2
- `+t.map(function(r,n){return n+1+") "+r.toString()}).join(`
3
- `):"",this.name="UnsubscriptionError",this.errors=t}});function M(i,e){if(i){var t=i.indexOf(e);0<=t&&i.splice(t,1)}}var q=function(){function i(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}return i.prototype.unsubscribe=function(){var e,t,r,n,s;if(!this.closed){this.closed=!0;var o=this._parentage;if(o)if(this._parentage=null,Array.isArray(o))try{for(var u=G(o),c=u.next();!c.done;c=u.next()){var f=c.value;f.remove(this)}}catch(m){e={error:m}}finally{try{c&&!c.done&&(t=u.return)&&t.call(u)}finally{if(e)throw e.error}}else o.remove(this);var v=this.initialTeardown;if(b(v))try{v()}catch(m){s=m instanceof W?m.errors:[m]}var R=this._finalizers;if(R){this._finalizers=null;try{for(var w=G(R),E=w.next();!E.done;E=w.next()){var C=E.value;try{Z(C)}catch(m){s=s??[],m instanceof W?s=H(H([],N(s)),N(m.errors)):s.push(m)}}}catch(m){r={error:m}}finally{try{E&&!E.done&&(n=w.return)&&n.call(w)}finally{if(r)throw r.error}}}if(s)throw new W(s)}},i.prototype.add=function(e){var t;if(e&&e!==this)if(this.closed)Z(e);else{if(e instanceof i){if(e.closed||e._hasParent(this))return;e._addParent(this)}(this._finalizers=(t=this._finalizers)!==null&&t!==void 0?t:[]).push(e)}},i.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},i.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},i.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&M(t,e)},i.prototype.remove=function(e){var t=this._finalizers;t&&M(t,e),e instanceof i&&e._removeParent(this)},i.EMPTY=function(){var e=new i;return e.closed=!0,e}(),i}(),Q=q.EMPTY;function X(i){return i instanceof q||i&&"closed"in i&&b(i.remove)&&b(i.add)&&b(i.unsubscribe)}function Z(i){b(i)?i():i.unsubscribe()}var tt={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},et={setTimeout:function(i,e){for(var t=[],r=2;r<arguments.length;r++)t[r-2]=arguments[r];return setTimeout.apply(void 0,H([i,e],N(t)))},clearTimeout:function(i){var e=et.delegate;return((e==null?void 0:e.clearTimeout)||clearTimeout)(i)},delegate:void 0};function Pt(i){et.setTimeout(function(){throw i})}function rt(){}function x(i){i()}var it=function(i){_(e,i);function e(t){var r=i.call(this)||this;return r.isStopped=!1,t?(r.destination=t,X(t)&&t.add(r)):r.destination=It,r}return e.create=function(t,r,n){return new Y(t,r,n)},e.prototype.next=function(t){this.isStopped||this._next(t)},e.prototype.error=function(t){this.isStopped||(this.isStopped=!0,this._error(t))},e.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())},e.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,i.prototype.unsubscribe.call(this),this.destination=null)},e.prototype._next=function(t){this.destination.next(t)},e.prototype._error=function(t){try{this.destination.error(t)}finally{this.unsubscribe()}},e.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},e}(q),qt=Function.prototype.bind;function F(i,e){return qt.call(i,e)}var xt=function(){function i(e){this.partialObserver=e}return i.prototype.next=function(e){var t=this.partialObserver;if(t.next)try{t.next(e)}catch(r){D(r)}},i.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(r){D(r)}else D(e)},i.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(t){D(t)}},i}(),Y=function(i){_(e,i);function e(t,r,n){var s=i.call(this)||this,o;if(b(t)||!t)o={next:t??void 0,error:r??void 0,complete:n??void 0};else{var u;s&&tt.useDeprecatedNextContext?(u=Object.create(t),u.unsubscribe=function(){return s.unsubscribe()},o={next:t.next&&F(t.next,u),error:t.error&&F(t.error,u),complete:t.complete&&F(t.complete,u)}):o=t}return s.destination=new xt(o),s}return e}(it);function D(i){Pt(i)}function Dt(i){throw i}var It={closed:!0,next:rt,error:Dt,complete:rt},Ut=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}();function jt(i){return i}function Ct(i){return i.length===0?jt:i.length===1?i[0]:function(t){return i.reduce(function(r,n){return n(r)},t)}}var nt=function(){function i(e){e&&(this._subscribe=e)}return i.prototype.lift=function(e){var t=new i;return t.source=this,t.operator=e,t},i.prototype.subscribe=function(e,t,r){var n=this,s=Bt(e)?e:new Y(e,t,r);return x(function(){var o=n,u=o.operator,c=o.source;s.add(u?u.call(s,c):c?n._subscribe(s):n._trySubscribe(s))}),s},i.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.error(t)}},i.prototype.forEach=function(e,t){var r=this;return t=st(t),new t(function(n,s){var o=new Y({next:function(u){try{e(u)}catch(c){s(c),o.unsubscribe()}},error:s,complete:n});r.subscribe(o)})},i.prototype._subscribe=function(e){var t;return(t=this.source)===null||t===void 0?void 0:t.subscribe(e)},i.prototype[Ut]=function(){return this},i.prototype.pipe=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Ct(e)(this)},i.prototype.toPromise=function(e){var t=this;return e=st(e),new e(function(r,n){var s;t.subscribe(function(o){return s=o},function(o){return n(o)},function(){return r(s)})})},i.create=function(e){return new i(e)},i}();function st(i){var e;return(e=i??tt.Promise)!==null&&e!==void 0?e:Promise}function kt(i){return i&&b(i.next)&&b(i.error)&&b(i.complete)}function Bt(i){return i&&i instanceof it||kt(i)&&X(i)}var Gt=J(function(i){return function(){i(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}}),ot=function(i){_(e,i);function e(){var t=i.call(this)||this;return t.closed=!1,t.currentObservers=null,t.observers=[],t.isStopped=!1,t.hasError=!1,t.thrownError=null,t}return e.prototype.lift=function(t){var r=new ut(this,this);return r.operator=t,r},e.prototype._throwIfClosed=function(){if(this.closed)throw new Gt},e.prototype.next=function(t){var r=this;x(function(){var n,s;if(r._throwIfClosed(),!r.isStopped){r.currentObservers||(r.currentObservers=Array.from(r.observers));try{for(var o=G(r.currentObservers),u=o.next();!u.done;u=o.next()){var c=u.value;c.next(t)}}catch(f){n={error:f}}finally{try{u&&!u.done&&(s=o.return)&&s.call(o)}finally{if(n)throw n.error}}}})},e.prototype.error=function(t){var r=this;x(function(){if(r._throwIfClosed(),!r.isStopped){r.hasError=r.isStopped=!0,r.thrownError=t;for(var n=r.observers;n.length;)n.shift().error(t)}})},e.prototype.complete=function(){var t=this;x(function(){if(t._throwIfClosed(),!t.isStopped){t.isStopped=!0;for(var r=t.observers;r.length;)r.shift().complete()}})},e.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(e.prototype,"observed",{get:function(){var t;return((t=this.observers)===null||t===void 0?void 0:t.length)>0},enumerable:!1,configurable:!0}),e.prototype._trySubscribe=function(t){return this._throwIfClosed(),i.prototype._trySubscribe.call(this,t)},e.prototype._subscribe=function(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)},e.prototype._innerSubscribe=function(t){var r=this,n=this,s=n.hasError,o=n.isStopped,u=n.observers;return s||o?Q:(this.currentObservers=null,u.push(t),new q(function(){r.currentObservers=null,M(u,t)}))},e.prototype._checkFinalizedStatuses=function(t){var r=this,n=r.hasError,s=r.thrownError,o=r.isStopped;n?t.error(s):o&&t.complete()},e.prototype.asObservable=function(){var t=new nt;return t.source=this,t},e.create=function(t,r){return new ut(t,r)},e}(nt),ut=function(i){_(e,i);function e(t,r){var n=i.call(this)||this;return n.destination=t,n.source=r,n}return e.prototype.next=function(t){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.next)===null||n===void 0||n.call(r,t)},e.prototype.error=function(t){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.error)===null||n===void 0||n.call(r,t)},e.prototype.complete=function(){var t,r;(r=(t=this.destination)===null||t===void 0?void 0:t.complete)===null||r===void 0||r.call(t)},e.prototype._subscribe=function(t){var r,n;return(n=(r=this.source)===null||r===void 0?void 0:r.subscribe(t))!==null&&n!==void 0?n:Q},e}(ot),I=function(i){_(e,i);function e(t){var r=i.call(this)||this;return r._value=t,r}return Object.defineProperty(e.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),e.prototype._subscribe=function(t){var r=i.prototype._subscribe.call(this,t);return!r.closed&&t.next(this._value),r},e.prototype.getValue=function(){var t=this,r=t.hasError,n=t.thrownError,s=t._value;if(r)throw n;return this._throwIfClosed(),s},e.prototype.next=function(t){i.prototype.next.call(this,this._value=t)},e}(ot),at=(i=>(i[i.CRON=0]="CRON",i[i.EVENT=1]="EVENT",i[i.DELETE=2]="DELETE",i[i.GET=3]="GET",i[i.PATCH=4]="PATCH",i[i.POST=5]="POST",i[i.PUT=6]="PUT",i))(at||{});class ct extends d{constructor(t){super();a(this,"api");a(this,"$cache",new I([]));this.api=typeof t=="string"?new p(t):t}get cache(){return this.$cache.value}set cache(t){this.$cache.next(t)}delete(t){return this.api.request({url:`/api/actions/${t}`,method:"DELETE"}).then(()=>{this.cache=this.cache.filter(r=>r._id!=t),this.emit("DELETE",t)})}list(){return this.api.request({url:"/api/actions"}).then(t=>(this.cache=t,this.emit("LIST",t),t))}read(t,r=!1){const n=this.cache.find(s=>s._id==t);return!r&&n?Promise.resolve(n):this.api.request({url:`/api/actions/${t}`}).then(s=>(s&&(this.cache=this.cache.filter(o=>o._id!=t).concat([s])),this.emit("READ",s),s))}run(t,r={}){return this.api.request({url:("/api/actions/run/"+t).replaceAll("//","/"),...r})}runById(t,r={}){const n=typeof t=="string"?t:t._id;return this.api.request({url:"/api/actions/run-by-id/"+n,method:"POST",...r})}update(t){return this.api.request({url:`/api/actions${t._id?`/${t._id}`:""}`,method:"POST",body:t}).then(r=>(r&&(this.cache=this.cache.filter(n=>n._id!=r._id).concat([r])),this.emit("UPDATE",r),r))}}class ht extends d{constructor(t,r){var n;super();a(this,"api");a(this,"storageKey");a(this,"$user",new I(void 0));if(this.opts=r,this.api=typeof t=="string"?new p(t):t,(n=this.opts)!=null&&n.loginUi||(this.opts={...this.opts,loginUi:this.api.url+"/ui/login"}),this.storageKey=`momentum:${new URL(this.api.url).host}`,this.api.addInterceptor((s,o)=>{s.status==401&&!s.url.includes(`${this.api.url}/api/auth/login`)&&this.emit("SESSION_EXPIRED"),o()}),this.api.on("TOKEN",s=>{var o;(o=this.opts)!=null&&o.persist&&(s?localStorage.setItem(this.storageKey,s):localStorage.removeItem(this.storageKey)),s?this.whoAmI(s,!0).catch(()=>{}):this.user=null}),r!=null&&r.persist){const s=localStorage.getItem(this.storageKey);s?this.api.token=s:this.user=null}else this.user=null}get user(){return this.$user.value}set user(t){if(!K(this.user,t)){const r=t||null;this.$user.next(r),this.emit("USER",r)}}knownHost(t=location.origin){return t.startsWith("/")?Promise.resolve():this.api.request({url:`/api/auth/known-host?host=${encodeURI(new URL(t).origin)}`})}login(t,r){return this.api.request({url:"/api/auth/login",headers:{Authorization:void 0},body:{username:t.trim(),password:r.trim()}}).then(async n=>(this.api.token=n.token,await this.once("USER")))}loginRedirect(t=location.origin){return new Promise((r,n)=>{var o;const s=window.open(encodeURI(`${(o=this.opts)==null?void 0:o.loginUi}?redirect=postmessage&host=${t}`),"_blank");if(!s)return n("Unable to open login");s.addEventListener("message",u=>{var c;if(!((c=u==null?void 0:u.data)!=null&&c.token))return n("Unknown response from login");this.api.token=u.data.token,r(u.data.token),s.close()})})}logout(){this.api.token=null,this.user=null,this.emit("LOGOUT")}async register(t){const r=await this.api.request({url:"/api/auth/register",body:{...t}});return this.emit("REGISTER",t),r}async reset(t,r){await this.api.request({url:"/api/auth/reset",headers:{Authorization:r?`Bearer ${r}`:void 0},body:{email:r?void 0:t,password:r?t:void 0}}),this.emit(r?"RESET_COMPLETE":"RESET_REQUEST",r||t)}async whoAmI(t,r=!1){t||(t=this.api.token);const n=await this.api.request({url:"/api/auth/whoami",headers:t?{Authorization:`Bearer ${t}`}:void 0});return r&&(this.api.token=t,this.user=(n==null?void 0:n.user)||null,n&&this.emit("LOGIN",n.user)),n}}class lt extends d{constructor(t){super();a(this,"api");this.api=typeof t=="string"?new p(t):t}delete(t,r){return this.api.request({url:`/api/data/${t}/${r}`,method:"DELETE"}).then(()=>this.emit("DELETE",t,r))}get(t,r){return this.api.request({url:`/api/data/${t}${r?`/${r}`:""}`}).then(n=>(this.emit("GET",t,n),n))}raw(t,r,n,s){return this.api.request({url:`/api/data/${t}`,body:{operand:r,query:n,options:s}}).then(o=>(this.emit("RAW",t,o),o))}set(t,r,n=!1){return this.api.request({url:`/api/data/${t}/${r._id||""}`,method:n?"PATCH":"POST",body:r}).then(s=>(this.emit("SET",t,r),s))}}class dt extends d{constructor(t){super();a(this,"api");this.api=typeof t=="string"?new p(t):t}send(t){let r="/api/email";return typeof t.body=="object"&&(r+=`/${t.body.template}`),this.api.request({url:r,body:t}).then(n=>(this.emit("SENT",t),n))}}class pt extends d{constructor(t){super();a(this,"api");this.api=typeof t=="string"?new p(t):t}create(t){return this.api.request({url:`/api/groups/${t.name}`,method:"POST",body:t}).then(r=>(this.emit("CREATE",r),r))}list(){return this.api.request({url:"/api/groups"}).then(t=>(this.emit("LIST",t),t))}read(t){return this.api.request({url:`/api/groups/${t}`}).then(r=>(this.emit("READ",r),r))}update(t){return this.api.request({url:`/api/groups/${t.name}`,method:"PATCH",body:t}).then(r=>(this.emit("UPDATE",r),r))}delete(t){return this.api.request({url:`/api/groups/${t}`,method:"DELETE"}).then(()=>this.emit("DELETE",t))}}class ft{constructor(e,t){a(this,"api");this.api=typeof e=="string"?new p(e):e,t!=null&&t!="NONE"&&(window.addEventListener("error",r=>this.error(r.error.stack)),window.addEventListener("unhandledrejection",async r=>this.error(r.reason.stack)))}buildLog(e,t){return{time:new Date().getTime(),level:e,log:t,ctx:{cores:navigator.hardwareConcurrency,mem:navigator==null?void 0:navigator.deviceMemory,res:[window.innerWidth,window.innerHeight],url:location.href}}}clearClientLogs(){return this.api.request({url:"/api/logs/client",method:"DELETE"})}clearServerLogs(){return this.api.request({url:"/api/logs/server",method:"DELETE"})}clientLogs(e,t){const r=[e?`length=${e}`:void 0,t?`page=${t}`:void 0].filter(n=>!!n).join("&");return this.api.request({url:`/api/logs/client${r?`?${r}`:""}`})}serverLogs(e,t){const r=[e?`length=${e}`:void 0,t?`page=${t}`:void 0].filter(n=>!!n).join("&");return this.api.request({url:`/api/logs/server${r?`?${r}`:""}`})}debug(...e){return this.api.request({url:"/api/logs/client",body:this.buildLog(O.DEBUG,e)}).catch(()=>{})}log(...e){return this.api.request({url:"/api/logs/client",body:this.buildLog(O.LOG,e)}).catch(()=>{})}info(...e){return this.api.request({url:"/api/logs/client",body:this.buildLog(O.INFO,e)}).catch(()=>{})}warn(...e){return this.api.request({url:"/api/logs/client",body:this.buildLog(O.WARN,e)}).catch(()=>{})}error(...e){return this.api.request({url:"/api/logs/client",body:this.buildLog(O.ERROR,e)}).catch(()=>{})}}class mt extends d{constructor(t){super();a(this,"api");this.api=typeof t=="string"?new p(t):t}async handleResponse(t,r){const n=await t.blob();if(r){const s=URL.createObjectURL(n);z(s,r.endsWith(".pdf")?r:r+".pdf"),URL.revokeObjectURL(s)}return this.emit("CREATE",n),n}generate(t,r={}){const n=t==null?void 0:t.template;return this.api.request({url:`/api/pdf${n?`/${n}`:""}`,body:n?t==null?void 0:t.data:{html:t}}).then(s=>this.handleResponse(s,r.download?r.fileName||new Date().toISOString():void 0))}fromUrl(t,r={}){return this.api.request({url:`/api/pdf?url=${t}`}).then(n=>this.handleResponse(n,r.download?r.fileName||new Date().toISOString():void 0))}}const j=class j{constructor(e){a(this,"api");a(this,"url");a(this,"connection");a(this,"open",!1);this.api=typeof e=="string"?new p(e):e,this.url=this.api.url.replace("http","ws"),this.api.on("TOKEN",()=>this.connect()),this.api.token||this.connect()}close(){console.debug("Disconnected from Momentum"),this.open=!1,this.connection.close()}connect(e=3){var r;((r=this.connection)==null?void 0:r.readyState)<2&&this.connection.close(),this.connection=new WebSocket(this.url+(this.api.token?`?token=${this.api.token}`:""));const t=setTimeout(()=>{this.open||(this.connection.close(),console.error("Momentum connection timeout"),e>0&&this.connect(e-1))},j.timeout);this.connection.onclose=()=>this.open=!1,this.connection.onmessage=this.handle,this.connection.onopen=()=>{this.open=!0,clearTimeout(t),console.debug("Connected to Momentum")}}handle(...e){console.log(e)}send(e,t){this.connection.send(JSON.stringify({token:this.api.token,channel:e,payload:t}))}};a(j,"timeout",1e4);let U=j;class yt extends d{constructor(t){super();a(this,"api");this.api=typeof t=="string"?new p(t):t}delete(t){const r=(t.startsWith("/api/storage/")?t:"/api/storage/"+t).replaceAll("//","/");return this.api.request({url:r,method:"DELETE"}).then(()=>{this.emit("DELETE",r)})}list(t){const r=(t.startsWith("/api/storage/")?t:"/api/storage/"+t).replaceAll("//","/");return this.api.request({url:r+"?list"}).then(n=>(this.emit("LIST",t,n),n))}open(t,r="_blank"){const n=(t.startsWith("/api/storage/")?t:"/api/storage/"+t).replaceAll(/\/{2,}/g,"/"),s=`${this.api.url}${n}${this.api.token?`?token=${this.api.token}`:""}`;return r?(this.emit("OPEN",t),window.open(s,r)):s}mkdir(t){const r=(t.startsWith("/api/storage/")?t:"/api/storage/"+t).replaceAll(/\/{2,}/g,"/");return this.api.request({url:r+"?directory",method:"POST"})}download(t,r={}){return new _t((n,s,o)=>{const u=("/api/storage/"+t).replaceAll("//","/");this.api.request({...r,url:u,skipConverting:!0}).then(c=>{var m;if(!c.ok)return s(c.statusText);const f=c.headers.get("Content-Length"),v=f?parseInt(f,10):0;let R=[],w=0;const E=(m=c.body)==null?void 0:m.getReader(),C=vt=>{if(vt.done){o(1);const $=new Blob(R),V=r.downloadAs||new URL(c.url).pathname.split("/").pop(),wt=URL.createObjectURL($);z(wt,V.includes(".")?V:V+".zip"),URL.revokeObjectURL(wt),this.emit("DOWNLOAD",t,$),n($)}else{const $=vt.value;R.push($),w+=$.length,o(w/v),E.read().then(C)}};E==null||E.read().then(C)})})}async upload(t,r=""){if(t||(t=await new Promise(u=>{const c=document.createElement("input");c.type="file",c.accept=(r==null?void 0:r.accept)||"*",c.style.display="none",c.multiple=!!(r!=null&&r.multiple),c.onblur=c.onchange=async()=>{u(Array.from(c.files)),c.remove()},document.body.appendChild(c),c.click()})),!t||Array.isArray(t)&&!t.length)return[];const s=new FormData,o=("/api/storage/"+(typeof r=="string"?r:r==null?void 0:r.path)).replaceAll("//","/");return(Array.isArray(t)?t:[t]).forEach(u=>s.append("file",u)),this.api.request({url:o,body:s}).then(u=>(this.emit("UPLOAD",u),u))}}class gt extends d{constructor(t){super();a(this,"api");a(this,"listed",!1);a(this,"$cache",new I([]));this.api=typeof t=="string"?new p(t):t}get cache(){return this.$cache.value}set cache(t){this.$cache.next(t)}delete(t){return this.api.request({url:`/api/users/${t}`,method:"DELETE"}).then(()=>{this.cache=this.cache.filter(r=>r.username!=t),this.emit("DELETE",t)})}list(t=!1){return!t&&this.listed?Promise.resolve(this.cache):this.api.request({url:"/api/users"}).then(r=>(this.cache=r,this.listed=!0,this.emit("LIST",r),r))}read(t,r=!1){if(!r){const n=this.cache.find(s=>s.username==t);if(n)return Promise.resolve(n)}return this.api.request({url:`/api/users/${t}`}).then(n=>(n&&(this.cache={...this.cache,[n.username]:n}),this.emit("READ",n),n))}update(t){return this.api.request({url:`/api/users/${t.username}`,method:"PATCH",body:t}).then(r=>(r&&(this.cache=this.cache.filter(n=>n.username!=t.username).concat([r])),this.emit("UPDATE",r),r))}}class Et extends d{constructor(t){super();a(this,"api");a(this,"$cache",new I({}));this.api=typeof t=="string"?new p(t):t}get cache(){return this.$cache.value}set cache(t){this.$cache.next(t)}list(t=!1){return this.api.request({url:"/api/settings"+(t?"?detailed":"")}).then(r=>(this.cache=t?Object.values(r).reduce((n,s)=>({...n,[s.key]:s.value}),{}):r,this.emit("LIST",r),r))}delete(t){return this.api.request({url:`/api/settings/${t}`,method:"DELETE"}).then(()=>{this.cache={...this.cache,[t]:void 0},this.emit("DELETE",t)})}read(t,r=!1){return!r&&this.cache[t]?Promise.resolve(this.cache[t]):this.api.request({url:`/api/settings/${t}`}).then(n=>(n&&(this.cache={...this.cache,[n.key]:n}),this.emit("READ",n),n))}update(t){return this.api.request({url:`/api/settings/${t.key}`,body:t}).then(r=>(r&&(this.cache={...this.cache,[r.key]:r.value}),this.emit("UPDATE",r),r))}}class bt extends d{constructor(t){super();a(this,"api");this.api=typeof t=="string"?new p(t):t}delete(t){return this.api.request({url:`/api/static/${t}`,method:"DELETE"}).then(()=>{this.emit("DELETE",t)})}list(t){const r=("/api/static/"+t).replaceAll("//","/");return this.api.request({url:r}).then(n=>(this.emit("LIST",t,n),n))}upload(t,r="/"){const n=new FormData;return(Array.isArray(t)?t:[t]).forEach(s=>n.append("file",s)),this.api.request({url:"/api/static"+r,body:n}).then(s=>(this.emit("UPLOAD",s),s))}}class Nt extends d{constructor(t,r){super();a(this,"api");a(this,"actions");a(this,"auth");a(this,"data");a(this,"email");a(this,"groups");a(this,"logger");a(this,"pdf");a(this,"settings");a(this,"socket");a(this,"static");a(this,"storage");a(this,"users");this.api=new p(t,r==null?void 0:r.api),this.actions=new ct(this.api),this.auth=new ht(this.api,{persist:(r==null?void 0:r.persist)??!0,loginUi:r==null?void 0:r.loginUi}),this.data=new lt(this.api),this.email=new dt(this.api),this.groups=new pt(this.api),this.logger=new ft(this.api,r==null?void 0:r.logLevel),this.pdf=new mt(this.api),this.settings=new Et(this.api),this.static=new bt(this.api),this.storage=new yt(this.api),this.users=new gt(this.api),r!=null&&r.socket&&(this.socket=new U(this.api)),this.api.on("*",(n,...s)=>this.emit(`API::${n}`,...s)),this.actions.on("*",(n,...s)=>this.emit(`ACTIONS::${n}`,...s)),this.auth.on("*",(n,...s)=>this.emit(`AUTH::${n}`,...s)),this.data.on("*",(n,...s)=>this.emit(`DATA::${n}`,...s)),this.email.on("*",(n,...s)=>this.emit(`EMAIL::${n}`,...s)),this.groups.on("*",(n,...s)=>this.emit(`GROUPS::${n}`,...s)),this.pdf.on("*",(n,...s)=>this.emit(`PDF::${n}`,...s)),this.settings.on("*",(n,...s)=>this.emit(`SETTINGS::${n}`,...s)),this.static.on("*",(n,...s)=>this.emit(`STATIC::${n}`,...s)),this.storage.on("*",(n,...s)=>this.emit(`STORAGE::${n}`,...s)),this.users.on("*",(n,...s)=>this.emit(`USERS::${n}`,...s)),this.users.on("*",(n,...s)=>{var o;if(Array.isArray(s[0])){const u=s[0].find(c=>{var f;return c._id==((f=this.auth.user)==null?void 0:f._id)});u&&(this.auth.user=u)}else s[0]._id==((o=this.auth.user)==null?void 0:o._id)&&(this.auth.user=s[0])})}}h.ActionType=at,h.Actions=ct,h.Api=p,h.Auth=ht,h.Data=lt,h.Email=dt,h.Groups=pt,h.Logger=ft,h.Momentum=Nt,h.Pdf=mt,h.Settings=Et,h.Socket=U,h.Static=bt,h.Storage=yt,h.Users=gt,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
4
- //# sourceMappingURL=momentum.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"momentum.cjs","sources":["../node_modules/@ztimson/utils/dist/utils.mjs","../src/api.ts","../node_modules/tslib/tslib.es6.mjs","../node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../node_modules/rxjs/dist/esm5/internal/Subscription.js","../node_modules/rxjs/dist/esm5/internal/config.js","../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../node_modules/rxjs/dist/esm5/internal/util/noop.js","../node_modules/rxjs/dist/esm5/internal/util/errorContext.js","../node_modules/rxjs/dist/esm5/internal/Subscriber.js","../node_modules/rxjs/dist/esm5/internal/symbol/observable.js","../node_modules/rxjs/dist/esm5/internal/util/identity.js","../node_modules/rxjs/dist/esm5/internal/util/pipe.js","../node_modules/rxjs/dist/esm5/internal/Observable.js","../node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","../node_modules/rxjs/dist/esm5/internal/Subject.js","../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js","../src/actions.ts","../src/auth.ts","../src/data.ts","../src/email.ts","../src/groups.ts","../src/logger.ts","../src/pdf.ts","../src/sockets.ts","../src/storage.ts","../src/users.ts","../src/settings.ts","../src/static.ts","../src/momentum.ts"],"sourcesContent":["var k = Object.defineProperty;\nvar G = (n, e, t) => e in n ? k(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t;\nvar u = (n, e, t) => (G(n, typeof e != \"symbol\" ? e + \"\" : e, t), t);\nfunction j(n, e = !1) {\n if (n == null)\n throw new Error(\"Cannot clean a NULL value\");\n return Array.isArray(n) ? n = n.filter((t) => t != null) : Object.entries(n).forEach(([t, r]) => {\n (e && r === void 0 || !e && r == null) && delete n[t];\n }), n;\n}\nfunction tt(n) {\n return JSON.parse(JSON.stringify(n));\n}\nfunction S(n, e, t) {\n if (!(n == null || !e))\n return e.split(/[.[\\]]/g).filter((r) => r.length).reduce((r, o, s, i) => {\n if ((o[0] == '\"' || o[0] == \"'\") && (o = o.slice(1, -1)), !(r != null && r.hasOwnProperty(o))) {\n if (t == null)\n return;\n r[o] = {};\n }\n return t !== void 0 && s == i.length - 1 ? r[o] = t : r[o];\n }, n);\n}\nfunction M(n, e, t = {}) {\n if (typeof n == \"object\" && !Array.isArray(n)) {\n for (const r of Object.keys(n)) {\n const o = e ? e + \".\" + r : r;\n typeof n[r] == \"object\" ? M(n[r], o, t) : t[o] = n[r];\n }\n return t;\n }\n}\nfunction L(n, e, t = !1) {\n if (n == null)\n return t;\n if (Array.isArray(e))\n return e.findIndex((o, s) => !L(n[s], e[s], t)) == -1;\n const r = typeof e;\n return r != typeof n ? !1 : r == \"object\" ? Object.keys(e).find((o) => !L(n[o], e[o], t)) == null : r == \"function\" ? n.toString() == e.toString() : n == e;\n}\nfunction A(n, e) {\n const t = typeof n, r = typeof e;\n return t != \"object\" || n == null || r != \"object\" || e == null ? t == \"function\" && r == \"function\" ? n.toString() == e.toString() : n === e : Object.keys(n).length != Object.keys(e).length ? !1 : Object.keys(n).every((s) => A(n[s], e[s]));\n}\nfunction et(n, e) {\n e.forEach((t) => {\n Object.getOwnPropertyNames(t.prototype).forEach((r) => {\n Object.defineProperty(\n n.prototype,\n r,\n Object.getOwnPropertyDescriptor(t.prototype, r) || /* @__PURE__ */ Object.create(null)\n );\n });\n });\n}\nfunction nt(n, e) {\n let t = [];\n return JSON.parse(JSON.stringify(n, (r, o) => {\n if (typeof o == \"object\" && o !== null) {\n if (t.includes(o))\n return;\n t.push(o);\n }\n return o;\n }, e));\n}\nfunction rt(n, e) {\n return n.indexOf(e) === -1 && n.push(e), n;\n}\nfunction ot(n, e) {\n return U([\n ...n.filter((t) => !e.includes((r) => A(t, r))),\n ...e.filter((t) => !n.includes((r) => A(t, r)))\n ]);\n}\nfunction st(n) {\n return function(e, t) {\n const r = S(e, n), o = S(t, n);\n return typeof r != \"string\" || typeof o != \"string\" ? 1 : r.toLowerCase().localeCompare(o.toLowerCase());\n };\n}\nfunction P(n, e = []) {\n return n.forEach((t) => Array.isArray(t) ? P(t, e) : e.push(t)), e;\n}\nfunction it(n, e = !1) {\n return function(t, r) {\n const o = S(t, n), s = S(r, n);\n return typeof o == \"number\" && typeof s == \"number\" ? (e ? -1 : 1) * (o - s) : o > s ? e ? -1 : 1 : o < s ? e ? 1 : -1 : 0;\n };\n}\nfunction ct(n, e) {\n return (t) => A(t[n], e);\n}\nfunction U(n) {\n for (let e = n.length - 1; e >= 0; e--)\n n.slice(0, e).find((t) => A(t, n[e])) && n.splice(e, 1);\n return n;\n}\nfunction ut(n) {\n return Array.isArray(n) ? n : [n];\n}\nclass w extends Array {\n get size() {\n return this.length;\n }\n constructor(e = []) {\n super(), e != null && e.forEach && e.forEach((t) => this.add(t));\n }\n add(e) {\n this.has(e) || this.push(e);\n }\n delete(e) {\n const t = this.indexOf(e);\n t != -1 && this.slice(t, 1);\n }\n difference(e) {\n return new w(this.reduce((t, r) => (e.has(r) || t.push(r), t), []));\n }\n has(e) {\n return this.indexOf(e) != -1;\n }\n intersection(e) {\n return new w(this.reduce((t, r) => (e.has(r) && t.push(r), t), []));\n }\n isDisjointFrom(e) {\n return this.intersection(e).size == 0;\n }\n isSubsetOf(e) {\n return this.findIndex((t) => !e.has(t)) == -1;\n }\n isSuperset(e) {\n return e.findIndex((t) => !this.has(t)) == -1;\n }\n symmetricDifference(e) {\n return new w([...this.difference(e), ...e.difference(this)]);\n }\n union(e) {\n return new w([...this, ...e]);\n }\n}\nfunction at(n, e) {\n const t = document.createElement(\"a\");\n t.href = n, t.download = e, document.body.appendChild(t), t.click(), document.body.removeChild(t);\n}\nclass D {\n constructor() {\n u(this, \"listeners\", {});\n }\n static emit(e, ...t) {\n (this.listeners[\"*\"] || []).forEach((r) => r(e, ...t)), (this.listeners[e.toString()] || []).forEach((r) => r(...t));\n }\n static off(e, t) {\n const r = e.toString();\n this.listeners[r] = (this.listeners[r] || []).filter((o) => o === t);\n }\n static on(e, t) {\n var o;\n const r = e.toString();\n return this.listeners[r] || (this.listeners[r] = []), (o = this.listeners[r]) == null || o.push(t), () => this.off(e, t);\n }\n static once(e, t) {\n return new Promise((r) => {\n const o = this.on(e, (...s) => {\n r(s.length == 1 ? s[0] : s), t && t(...s), o();\n });\n });\n }\n emit(e, ...t) {\n (this.listeners[\"*\"] || []).forEach((r) => r(e, ...t)), (this.listeners[e] || []).forEach((r) => r(...t));\n }\n off(e, t) {\n this.listeners[e] = (this.listeners[e] || []).filter((r) => r === t);\n }\n on(e, t) {\n var r;\n return this.listeners[e] || (this.listeners[e] = []), (r = this.listeners[e]) == null || r.push(t), () => this.off(e, t);\n }\n once(e, t) {\n return new Promise((r) => {\n const o = this.on(e, (...s) => {\n r(s.length == 1 ? s[0] : s), t && t(...s), o();\n });\n });\n }\n}\nu(D, \"listeners\", {});\nclass m extends Error {\n constructor(t, r) {\n super(t);\n u(this, \"_code\");\n r != null && (this._code = r);\n }\n get code() {\n return this._code || this.constructor.code;\n }\n set code(t) {\n this._code = t;\n }\n static from(t) {\n const r = Number(t.statusCode) ?? Number(t.code), o = new this(t.message || t.toString());\n return Object.assign(o, {\n stack: t.stack,\n ...t,\n code: r ?? void 0\n });\n }\n static instanceof(t) {\n return t.constructor.code != null;\n }\n toString() {\n return this.message || super.toString();\n }\n}\nu(m, \"code\", 500);\nclass q extends m {\n constructor(e = \"Bad Request\") {\n super(e);\n }\n static instanceof(e) {\n return e.constructor.code == this.code;\n }\n}\nu(q, \"code\", 400);\nclass Y extends m {\n constructor(e = \"Unauthorized\") {\n super(e);\n }\n static instanceof(e) {\n return e.constructor.code == this.code;\n }\n}\nu(Y, \"code\", 401);\nclass H extends m {\n constructor(e = \"Forbidden\") {\n super(e);\n }\n static instanceof(e) {\n return e.constructor.code == this.code;\n }\n}\nu(H, \"code\", 403);\nclass W extends m {\n constructor(e = \"Not Found\") {\n super(e);\n }\n static instanceof(e) {\n return e.constructor.code == this.code;\n }\n}\nu(W, \"code\", 404);\nclass v extends m {\n constructor(e = \"Internal Server Error\") {\n super(e);\n }\n static instanceof(e) {\n return e.constructor.code == this.code;\n }\n}\nu(v, \"code\", 500);\nconst x = {\n CLEAR: \"\\x1B[0m\",\n BRIGHT: \"\\x1B[1m\",\n DIM: \"\\x1B[2m\",\n UNDERSCORE: \"\\x1B[4m\",\n BLINK: \"\\x1B[5m\",\n REVERSE: \"\\x1B[7m\",\n HIDDEN: \"\\x1B[8m\"\n}, C = {\n BLACK: \"\\x1B[30m\",\n RED: \"\\x1B[31m\",\n GREEN: \"\\x1B[32m\",\n YELLOW: \"\\x1B[33m\",\n BLUE: \"\\x1B[34m\",\n MAGENTA: \"\\x1B[35m\",\n CYAN: \"\\x1B[36m\",\n LIGHT_GREY: \"\\x1B[37m\",\n GREY: \"\\x1B[90m\",\n LIGHT_RED: \"\\x1B[91m\",\n LIGHT_GREEN: \"\\x1B[92m\",\n LIGHT_YELLOW: \"\\x1B[93m\",\n LIGHT_BLUE: \"\\x1B[94m\",\n LIGHT_MAGENTA: \"\\x1B[95m\",\n LIGHT_CYAN: \"\\x1B[96m\",\n WHITE: \"\\x1B[97m\"\n}, lt = {\n BLACK: \"\\x1B[40m\",\n RED: \"\\x1B[41m\",\n GREEN: \"\\x1B[42m\",\n YELLOW: \"\\x1B[43m\",\n BLUE: \"\\x1B[44m\",\n MAGENTA: \"\\x1B[45m\",\n CYAN: \"\\x1B[46m\",\n WHITE: \"\\x1B[47m\",\n GREY: \"\\x1B[100m\"\n};\nvar F = /* @__PURE__ */ ((n) => (n[n.ERROR = 0] = \"ERROR\", n[n.WARN = 1] = \"WARN\", n[n.INFO = 2] = \"INFO\", n[n.LOG = 3] = \"LOG\", n[n.DEBUG = 4] = \"DEBUG\", n))(F || {});\nconst d = class d extends D {\n constructor(e) {\n super(), this.namespace = e;\n }\n pad(e, t, r, o = !1) {\n const s = e.toString(), i = t - s.length;\n if (i <= 0)\n return s;\n const c = Array(~~(i / r.length)).fill(r).join(\"\");\n return o ? s + c : c + s;\n }\n format(...e) {\n const t = /* @__PURE__ */ new Date();\n return `${`${t.getFullYear()}-${t.getMonth() + 1}-${t.getDate()} ${this.pad(t.getHours().toString(), 2, \"0\")}:${this.pad(t.getMinutes().toString(), 2, \"0\")}:${this.pad(t.getSeconds().toString(), 2, \"0\")}.${this.pad(t.getMilliseconds().toString(), 3, \"0\", !0)}`}${this.namespace ? ` [${this.namespace}]` : \"\"} ${e.join(\" \")}`;\n }\n debug(...e) {\n if (d.LOG_LEVEL < 4)\n return;\n const t = this.format(...e);\n d.emit(4, t), console.debug(C.LIGHT_GREY + t + x.CLEAR);\n }\n log(...e) {\n if (d.LOG_LEVEL < 3)\n return;\n const t = this.format(...e);\n d.emit(3, t), console.log(x.CLEAR + t);\n }\n info(...e) {\n if (d.LOG_LEVEL < 2)\n return;\n const t = this.format(...e);\n d.emit(2, t), console.info(C.BLUE + t + x.CLEAR);\n }\n warn(...e) {\n if (d.LOG_LEVEL < 1)\n return;\n const t = this.format(...e);\n d.emit(1, t), console.warn(C.YELLOW + t + x.CLEAR);\n }\n error(...e) {\n if (d.LOG_LEVEL < 0)\n return;\n const t = this.format(...e);\n d.emit(0, t), console.error(C.RED + t + x.CLEAR);\n }\n};\nu(d, \"LOG_LEVEL\", 4);\nlet $ = d;\nfunction ht(n) {\n const e = (c, g) => g < 1e-7 ? c : e(g, ~~(c % g)), t = n.toString().length - 2;\n let r = Math.pow(10, t), o = n * r;\n const s = e(o, r);\n o = ~~(o / s), r = ~~(r / s);\n const i = ~~(o / r);\n return o -= i * r, `${i ? i + \" \" : \"\"}${~~o}/${~~r}`;\n}\nfunction ft(n) {\n let e = n.split(\" \");\n const t = e.length == 2 ? Number(e[0]) : 0;\n return e = e.pop().split(\"/\"), t + Number(e[0]) / Number(e[1]);\n}\nfunction dt(n, e) {\n return n.length - n.replaceAll(e, \"\").length;\n}\nfunction gt(n) {\n return Array(n).fill(null).map(() => Math.round(Math.random() * 15).toString(16)).join(\"\");\n}\nconst N = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\", b = \"0123456789\", T = \"~`!@#$%^&*()_-+={[}]|\\\\:;\\\"'<,>.?/\", z = N + b + T;\nfunction pt(n) {\n const e = /(\\+?1)?.*?(\\d{3}).*?(\\d{3}).*?(\\d{4})/g.exec(n);\n if (!e)\n throw new Error(`Number cannot be parsed: ${n}`);\n return `${e[1] ?? \"\"} (${e[2]}) ${e[3]}-${e[4]}`.trim();\n}\nfunction yt(n, e, t) {\n return `${n.slice(0, t)}${e}${n.slice(t + 1)}`;\n}\nfunction Et(n, e, t, r = !0) {\n const o = n.toString(), s = e - o.length;\n if (s <= 0)\n return o;\n const i = Array(~~(s / t.length)).fill(t).join(\"\");\n return r ? i + o : o + i;\n}\nfunction mt(n, e = z) {\n return Array(n).fill(null).map(() => {\n const t = ~~(Math.random() * e.length);\n return e[t];\n }).join(\"\");\n}\nfunction xt(n, e = !1, t = !1, r = !1) {\n if (!e && !t && !r)\n throw new Error(\"Must enable at least one: letters, numbers, symbols\");\n return Array(n).fill(null).map(() => {\n let o;\n do {\n const s = ~~(Math.random() * 3);\n e && s == 0 ? o = N[~~(Math.random() * N.length)] : t && s == 1 ? o = b[~~(Math.random() * b.length)] : r && s == 2 && (o = T[~~(Math.random() * T.length)]);\n } while (!o);\n return o;\n }).join(\"\");\n}\nfunction wt(n, e) {\n if (typeof e == \"string\" && (e = new RegExp(e, \"g\")), !e.global)\n throw new TypeError(\"Regular expression must be global.\");\n let t = [], r;\n for (; (r = e.exec(n)) !== null; )\n t.push(r);\n return t;\n}\nfunction J(n) {\n var e = K(Z(Q(V(n), 8 * n.length)));\n return e.toLowerCase();\n}\nfunction K(n) {\n for (var e, t = \"0123456789ABCDEF\", r = \"\", o = 0; o < n.length; o++)\n e = n.charCodeAt(o), r += t.charAt(e >>> 4 & 15) + t.charAt(15 & e);\n return r;\n}\nfunction V(n) {\n for (var e = Array(n.length >> 2), t = 0; t < e.length; t++)\n e[t] = 0;\n for (t = 0; t < 8 * n.length; t += 8)\n e[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32;\n return e;\n}\nfunction Z(n) {\n for (var e = \"\", t = 0; t < 32 * n.length; t += 8)\n e += String.fromCharCode(n[t >> 5] >>> t % 32 & 255);\n return e;\n}\nfunction Q(n, e) {\n n[e >> 5] |= 128 << e % 32, n[14 + (e + 64 >>> 9 << 4)] = e;\n for (var t = 1732584193, r = -271733879, o = -1732584194, s = 271733878, i = 0; i < n.length; i += 16) {\n var c = t, g = r, B = o, E = s;\n r = f(r = f(r = f(r = f(r = h(r = h(r = h(r = h(r = l(r = l(r = l(r = l(r = a(r = a(r = a(r = a(r, o = a(o, s = a(s, t = a(t, r, o, s, n[i + 0], 7, -680876936), r, o, n[i + 1], 12, -389564586), t, r, n[i + 2], 17, 606105819), s, t, n[i + 3], 22, -1044525330), o = a(o, s = a(s, t = a(t, r, o, s, n[i + 4], 7, -176418897), r, o, n[i + 5], 12, 1200080426), t, r, n[i + 6], 17, -1473231341), s, t, n[i + 7], 22, -45705983), o = a(o, s = a(s, t = a(t, r, o, s, n[i + 8], 7, 1770035416), r, o, n[i + 9], 12, -1958414417), t, r, n[i + 10], 17, -42063), s, t, n[i + 11], 22, -1990404162), o = a(o, s = a(s, t = a(t, r, o, s, n[i + 12], 7, 1804603682), r, o, n[i + 13], 12, -40341101), t, r, n[i + 14], 17, -1502002290), s, t, n[i + 15], 22, 1236535329), o = l(o, s = l(s, t = l(t, r, o, s, n[i + 1], 5, -165796510), r, o, n[i + 6], 9, -1069501632), t, r, n[i + 11], 14, 643717713), s, t, n[i + 0], 20, -373897302), o = l(o, s = l(s, t = l(t, r, o, s, n[i + 5], 5, -701558691), r, o, n[i + 10], 9, 38016083), t, r, n[i + 15], 14, -660478335), s, t, n[i + 4], 20, -405537848), o = l(o, s = l(s, t = l(t, r, o, s, n[i + 9], 5, 568446438), r, o, n[i + 14], 9, -1019803690), t, r, n[i + 3], 14, -187363961), s, t, n[i + 8], 20, 1163531501), o = l(o, s = l(s, t = l(t, r, o, s, n[i + 13], 5, -1444681467), r, o, n[i + 2], 9, -51403784), t, r, n[i + 7], 14, 1735328473), s, t, n[i + 12], 20, -1926607734), o = h(o, s = h(s, t = h(t, r, o, s, n[i + 5], 4, -378558), r, o, n[i + 8], 11, -2022574463), t, r, n[i + 11], 16, 1839030562), s, t, n[i + 14], 23, -35309556), o = h(o, s = h(s, t = h(t, r, o, s, n[i + 1], 4, -1530992060), r, o, n[i + 4], 11, 1272893353), t, r, n[i + 7], 16, -155497632), s, t, n[i + 10], 23, -1094730640), o = h(o, s = h(s, t = h(t, r, o, s, n[i + 13], 4, 681279174), r, o, n[i + 0], 11, -358537222), t, r, n[i + 3], 16, -722521979), s, t, n[i + 6], 23, 76029189), o = h(o, s = h(s, t = h(t, r, o, s, n[i + 9], 4, -640364487), r, o, n[i + 12], 11, -421815835), t, r, n[i + 15], 16, 530742520), s, t, n[i + 2], 23, -995338651), o = f(o, s = f(s, t = f(t, r, o, s, n[i + 0], 6, -198630844), r, o, n[i + 7], 10, 1126891415), t, r, n[i + 14], 15, -1416354905), s, t, n[i + 5], 21, -57434055), o = f(o, s = f(s, t = f(t, r, o, s, n[i + 12], 6, 1700485571), r, o, n[i + 3], 10, -1894986606), t, r, n[i + 10], 15, -1051523), s, t, n[i + 1], 21, -2054922799), o = f(o, s = f(s, t = f(t, r, o, s, n[i + 8], 6, 1873313359), r, o, n[i + 15], 10, -30611744), t, r, n[i + 6], 15, -1560198380), s, t, n[i + 13], 21, 1309151649), o = f(o, s = f(s, t = f(t, r, o, s, n[i + 4], 6, -145523070), r, o, n[i + 11], 10, -1120210379), t, r, n[i + 2], 15, 718787259), s, t, n[i + 9], 21, -343485551), t = y(t, c), r = y(r, g), o = y(o, B), s = y(s, E);\n }\n return Array(t, r, o, s);\n}\nfunction R(n, e, t, r, o, s) {\n return y(X(y(y(e, n), y(r, s)), o), t);\n}\nfunction a(n, e, t, r, o, s, i) {\n return R(e & t | ~e & r, n, e, o, s, i);\n}\nfunction l(n, e, t, r, o, s, i) {\n return R(e & r | t & ~r, n, e, o, s, i);\n}\nfunction h(n, e, t, r, o, s, i) {\n return R(e ^ t ^ r, n, e, o, s, i);\n}\nfunction f(n, e, t, r, o, s, i) {\n return R(t ^ (e | ~r), n, e, o, s, i);\n}\nfunction y(n, e) {\n var t = (65535 & n) + (65535 & e);\n return (n >> 16) + (e >> 16) + (t >> 16) << 16 | 65535 & t;\n}\nfunction X(n, e) {\n return n << e | n >>> 32 - e;\n}\nfunction At(n) {\n return /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/.test(n);\n}\nfunction Bt(n) {\n return Object.entries(n).map(\n ([e, t]) => encodeURIComponent(e) + \"=\" + encodeURIComponent(t)\n ).join(\"&\");\n}\nfunction Ot(n, e = \"mp\") {\n return n ? `https://www.gravatar.com/avatar/${J(n)}?d=${e}` : \"\";\n}\nfunction Ct(n) {\n const e = new RegExp(\n \"(?:(?<protocol>[\\\\w\\\\d]+)\\\\:\\\\/\\\\/)?(?:(?<user>.+)\\\\@)?(?<host>(?<domain>[^:\\\\/\\\\?#@\\\\n]+)(?:\\\\:(?<port>\\\\d*))?)(?<path>\\\\/.*?)?(?:\\\\?(?<query>.*?))?(?:#(?<fragment>.*?))?$\",\n \"gm\"\n ).exec(n), t = (e == null ? void 0 : e.groups) ?? {}, r = t.domain.split(\".\");\n if (t.port != null && (t.port = Number(t.port)), r.length > 2 && (t.domain = r.splice(-2, 2).join(\".\"), t.subdomain = r.join(\".\")), t.query) {\n const o = t.query.split(\"&\"), s = {};\n o.forEach((i) => {\n const [c, g] = i.split(\"=\");\n s[c] = g;\n }), t.query = s;\n }\n return t;\n}\nclass St extends Promise {\n constructor(t) {\n super((r, o) => t(\n (s) => r(s),\n (s) => o(s),\n (s) => this.progress = s\n ));\n u(this, \"listeners\", []);\n u(this, \"_progress\", 0);\n }\n get progress() {\n return this._progress;\n }\n set progress(t) {\n t != this._progress && (this._progress = t, this.listeners.forEach((r) => r(t)));\n }\n onProgress(t) {\n return this.listeners.push(t), this;\n }\n}\nfunction Rt(n) {\n return (n instanceof Date ? n.getTime() : n) - (/* @__PURE__ */ new Date()).getTime();\n}\nfunction Nt(n) {\n return new Promise((e) => setTimeout(e, n));\n}\nfunction bt(n) {\n const e = n instanceof Date ? n : new Date(n);\n return new Intl.DateTimeFormat(\"en-us\", {\n weekday: \"long\",\n month: \"short\",\n day: \"numeric\",\n hour: \"numeric\",\n minute: \"numeric\",\n hour12: !0\n }).format(e);\n}\nconst p = class p {\n constructor(e = {}) {\n u(this, \"interceptors\", {});\n u(this, \"headers\", {});\n this.opts = e, this.headers = e.headers || {}, e.interceptors && e.interceptors.forEach((t) => p.addInterceptor(t));\n }\n static addInterceptor(e) {\n const t = Object.keys(p.interceptors).length.toString();\n return p.interceptors[t] = e, () => {\n p.interceptors[t] = null;\n };\n }\n addInterceptor(e) {\n const t = Object.keys(this.interceptors).length.toString();\n return this.interceptors[t] = e, () => {\n this.interceptors[t] = null;\n };\n }\n async request(e = {}) {\n var o, s;\n if (!this.opts.url && !e.url)\n throw new Error(\"URL needs to be set\");\n let t = ((o = e.url) != null && o.startsWith(\"http\") ? e.url : (this.opts.url || \"\") + (e.url || \"\")).replace(/([^:]\\/)\\/+/g, \"$1\");\n if (e.fragment && (t.includes(\"#\") ? t.replace(/#.*(\\?|\\n)/g, (i, c) => `#${e.fragment}${c}`) : t += \"#\" + e.fragment), e.query) {\n const i = Array.isArray(e.query) ? e.query : Object.keys(e.query).map((c) => ({ key: c, value: e.query[c] }));\n t += (t.includes(\"?\") ? \"&\" : \"?\") + i.map((c) => `${c.key}=${c.value}`).join(\"&\");\n }\n const r = j({\n \"Content-Type\": e.body && !(e.body instanceof FormData) ? \"application/json\" : void 0,\n ...p.headers,\n ...this.headers,\n ...e.headers\n });\n return fetch(t, {\n headers: r,\n method: e.method || (e.body ? \"POST\" : \"GET\"),\n body: (s = r[\"Content-Type\"]) != null && s.startsWith(\"application/json\") && e.body ? JSON.stringify(e.body) : e.body\n }).then(async (i) => {\n for (let E of [...Object.values(p.interceptors), ...Object.values(this.interceptors)])\n await new Promise((O) => E(i, () => O()));\n const g = await (async () => {\n var E, O;\n return !e.skipConverting && ((E = i.headers.get(\"Content-Type\")) != null && E.startsWith(\"application/json\")) ? await i.json() : !e.skipConverting && ((O = i.headers.get(\"Content-Type\")) != null && O.startsWith(\"text/plain\")) ? await i.text() : i;\n })();\n if (i.ok)\n return g;\n const B = i.statusText || (typeof g == \"string\" ? g : null);\n throw B ? new Error(B) : g;\n });\n }\n};\nu(p, \"interceptors\", {}), u(p, \"headers\", {});\nlet I = p;\nexport {\n w as ASet,\n q as BadRequestError,\n lt as CliBackground,\n x as CliEffects,\n C as CliForeground,\n m as CustomError,\n H as ForbiddenError,\n v as InternalServerError,\n F as LOG_LEVEL,\n $ as Logger,\n W as NotFoundError,\n St as PromiseProgress,\n D as TypedEmitter,\n Y as UnauthorizedError,\n I as XHR,\n rt as addUnique,\n ot as arrayDiff,\n st as caseInsensitiveSort,\n j as clean,\n dt as countChars,\n gt as createHex,\n ht as dec2Frac,\n tt as deepCopy,\n S as dotNotation,\n at as download,\n ct as findByProp,\n P as flattenArr,\n M as flattenObj,\n Bt as formEncode,\n bt as formatDate,\n pt as formatPhoneNumber,\n ft as fracToDec,\n Ot as gravatar,\n L as includes,\n yt as insertAt,\n A as isEqual,\n ut as makeArray,\n U as makeUnique,\n wt as matchAll,\n J as md5,\n et as mixin,\n Et as pad,\n mt as randomString,\n xt as randomStringBuilder,\n nt as sanitizedJSON,\n Nt as sleep,\n it as sortByProp,\n Rt as timeUntil,\n Ct as urlParser,\n At as validateEmail\n};\n//# sourceMappingURL=utils.mjs.map\n","import {\r\n\tTypedEmitter,\r\n\ttype TypedEvents,\r\n\ttype RequestOptions,\r\n\tXHR,\r\n\ttype XhrOptions,\r\n} from '@ztimson/utils';\r\n\r\nexport type ApiEvents = TypedEvents & {\r\n\tREQUEST: (request: Promise<any>, options: RequestOptions) => any;\r\n\tRESPONSE: (response: any, options: RequestOptions) => any;\r\n\tREJECTED: (response: Error, options: RequestOptions) => any;\r\n\tTOKEN: (token: string | null) => any\r\n}\r\n\r\nexport class Api extends XHR {\r\n\tprivate emitter = new TypedEmitter<ApiEvents>();\r\n\r\n\tprivate _token: string | null = null;\r\n\tget token(): string | null { return this._token; }\r\n\tset token(token: string | null) {\r\n\t\tif(token == this._token) return;\r\n\t\tthis._token = token;\r\n\t\tthis.headers['Authorization'] = token ? `Bearer ${token}` : undefined;\r\n\t\tthis.emit('TOKEN', token);\r\n\t}\r\n\r\n\tconstructor(public readonly url: string = location.origin, public readonly opts: XhrOptions = {}) {\r\n\t\topts.url = url;\r\n\t\tsuper(opts);\r\n\t}\r\n\r\n\temit = this.emitter.emit.bind(this.emitter);\r\n\toff = this.emitter.off.bind(this.emitter);\r\n\ton = this.emitter.on.bind(this.emitter);\r\n\tonce = this.emitter.once.bind(this.emitter);\r\n\r\n\trequest<T>(options: RequestOptions): Promise<T> {\r\n\t\tconst req = super.request<T>(options).then(resp => {\r\n\t\t\tthis.emit('RESPONSE', resp, options);\r\n\t\t\treturn resp;\r\n\t\t}).catch(err => {\r\n\t\t\tthis.emit('REJECTED', err, options);\r\n\t\t\tthrow err;\r\n\t\t});\r\n\t\tthis.emit('REQUEST', req, options);\r\n\t\treturn req;\r\n\t}\r\n}\r\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function () {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar BehaviorSubject = (function (_super) {\n __extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: false,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, (this._value = value));\n };\n return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map","import {Api} from './api';\nimport {RequestOptions, TypedEmitter, type TypedEvents} from '@ztimson/utils';\nimport {BehaviorSubject} from 'rxjs';\nimport {Meta} from './core';\n\nexport type Action = Meta & {\n\tname: string;\n\ttrigger: {type: ActionType, value: string};\n\tsystem?: boolean;\n\tfn: string;\n\tnotes?: string;\n\tlastRun?: number;\n\tnextRun?: number;\n}\n\nexport type ActionResponse = {\n\taction: string;\n\tstdout: any[];\n\tstderr: any[];\n\treturn?: any;\n}\n\nexport enum ActionType {\n\t'CRON',\n\t'EVENT',\n\t'DELETE',\n\t'GET',\n\t'PATCH',\n\t'POST',\n\t'PUT',\n}\n\nexport type ActionEvents = TypedEvents & {\n\tLIST: (actions: Action[]) => any;\n\tDELETE: (id: string) => any;\n\tREAD: (action: Action | null) => any;\n\tUPDATE: (action: Action) => any;\n\tEXECUTE: (action: Action, resp: any) => any;\n}\n\nexport class Actions extends TypedEmitter<ActionEvents> {\n\tprivate readonly api!: Api;\n\n\t$cache = new BehaviorSubject<Action[]>([]);\n\tget cache() { return this.$cache.value; }\n\tset cache(val) { this.$cache.next(val); }\n\n\tconstructor(api: Api | string) {\n\t\tsuper();\n\t\tthis.api = typeof api == 'string' ? new Api(api) : api;\n\t}\n\n\tdelete(id: string): Promise<void> {\n\t\treturn this.api.request({url: `/api/actions/${id}`, method: 'DELETE'}).then(() => {\n\t\t\tthis.cache = this.cache.filter(a => a._id != id);\n\t\t\tthis.emit('DELETE', id);\n\t\t});\n\t}\n\n\tlist(): Promise<Action[]> {\n\t\treturn this.api.request<Action[]>({url: `/api/actions`}).then(resp => {\n\t\t\tthis.cache = resp;\n\t\t\tthis.emit('LIST', resp);\n\t\t\treturn resp;\n\t\t});\n\t}\n\n\tread(id: string, reload=false): Promise<Action | null> {\n\t\tconst cached = this.cache.find(a => a._id == id);\n\t\tif(!reload && cached) return Promise.resolve(cached);\n\t\treturn this.api.request<Action | null>({url: `/api/actions/${id}`}).then(action => {\n\t\t\tif(action) this.cache = this.cache.filter(a => a._id != id).concat([action]);\n\t\t\tthis.emit('READ', action);\n\t\t\treturn action;\n\t\t});\n\t}\n\n\trun<T>(path: string, opts: RequestOptions = {}) {\n\t\treturn this.api.request<T>({url: (`/api/actions/run/` + path).replaceAll('//', '/'), ...opts});\n\t}\n\n\trunById(action: string | Action, opts: RequestOptions = {}) {\n\t\tconst id = typeof action == 'string' ? action : action._id;\n\t\treturn this.api.request<ActionResponse>({url: '/api/actions/run-by-id/' + id, method: 'POST', ...opts});\n\t}\n\n\tupdate(action: Action): Promise<Action> {\n\t\treturn this.api.request<Action>({\n\t\t\turl: `/api/actions${action._id ? `/${action._id}` : ''}`,\n\t\t\tmethod: 'POST',\n\t\t\tbody: action\n\t\t}).then(action => {\n\t\t\tif(action) this.cache = this.cache.filter(a => a._id != action._id).concat([action]);\n\t\t\tthis.emit('UPDATE', action);\n\t\t\treturn action;\n\t\t});\n\t}\n}\n","import {BehaviorSubject} from 'rxjs';\r\nimport {Api} from './api';\r\nimport {isEqual, TypedEmitter, type TypedEvents} from '@ztimson/utils';\r\nimport type {User} from './users';\r\n\r\nexport type AuthEvents = TypedEvents & {\r\n\tUSER: (user: User | null) => any;\r\n\tLOGIN: (user: User) => any;\r\n\tLOGOUT: () => any;\r\n\tREGISTER: (user: Partial<User>) => any;\r\n\tRESET_REQUEST: (email: string) => any;\r\n\tRESET_COMPLETE: (token: string) => any;\r\n\tSESSION_EXPIRED: () => any;\r\n}\r\n\r\nexport type AuthOptions = {\r\n\tloginUi?: string;\r\n\tpersist?: boolean;\r\n}\r\n\r\nexport class Auth extends TypedEmitter<AuthEvents> {\r\n\tprivate readonly api!: Api;\r\n\tprivate readonly storageKey!: string;\r\n\r\n\t$user = new BehaviorSubject<User | null | undefined>(undefined)\r\n\tget user(): User | null | undefined { return this.$user.value; }\r\n\tset user(user: User | null | undefined) {\r\n\t\tif(!isEqual(this.user, user)) {\r\n\t\t\tconst u = user ? user : null;\r\n\t\t\tthis.$user.next(u);\r\n\t\t\tthis.emit('USER', u);\r\n\t\t}\r\n\t}\r\n\r\n\tconstructor(api: Api | string, private readonly opts?: AuthOptions) {\r\n\t\tsuper();\r\n\t\tthis.api = typeof api == 'string' ? new Api(api) : api;\r\n\t\tif(!this.opts?.loginUi) this.opts = {...this.opts, loginUi: this.api.url + '/ui/login'};\r\n\t\tthis.storageKey = `momentum:${new URL(this.api.url).host}`;\r\n\r\n\t\tthis.api.addInterceptor((resp: Response, next: () => void) => {\r\n\t\t\tif(resp.status == 401 && !resp.url.includes(`${this.api.url}/api/auth/login`))\r\n\t\t\t\tthis.emit('SESSION_EXPIRED');\r\n\t\t\tnext();\r\n\t\t});\r\n\r\n\t\tthis.api.on('TOKEN', token => {\r\n\t\t\tif(this.opts?.persist) {\r\n\t\t\t\tif(token) localStorage.setItem(this.storageKey, token);\r\n\t\t\t\telse localStorage.removeItem(this.storageKey);\r\n\t\t\t}\r\n\t\t\tif(token) this.whoAmI(token, true).catch(() => {});\r\n\t\t\telse this.user = null;\r\n\t\t});\r\n\r\n\t\tif(opts?.persist) {\r\n\t\t\tconst token = localStorage.getItem(this.storageKey);\r\n\t\t\tif(token) this.api.token = token;\r\n\t\t\telse this.user = null;\r\n\t\t} else {\r\n\t\t\tthis.user = null;\r\n\t\t}\r\n\t}\r\n\r\n\tknownHost(host: string = location.origin): Promise<void> {\r\n\t\tif(host.startsWith('/')) return Promise.resolve();\r\n\t\treturn this.api.request({url: `/api/auth/known-host?host=${encodeURI(new URL(host).origin)}`});\r\n\t}\r\n\r\n\tlogin(username: string, password: string): Promise<User | null> {\r\n\t\treturn this.api.request<{token: string}>({\r\n\t\t\turl: '/api/auth/login',\r\n\t\t\theaders: {Authorization: undefined},\r\n\t\t\tbody: {\r\n\t\t\t\tusername: username.trim(),\r\n\t\t\t\tpassword: password.trim()\r\n\t\t\t}\r\n\t\t}).then(async resp => {\r\n\t\t\tthis.api.token = resp.token;\r\n\t\t\treturn await this.once('USER');\r\n\t\t});\r\n\t}\r\n\r\n\tloginRedirect(host: string = location.origin): Promise<string> {\r\n\t\treturn new Promise((res, rej) => {\r\n\t\t\tconst win = window.open(encodeURI(`${this.opts?.loginUi}?redirect=postmessage&host=${host}`), '_blank');\r\n\t\t\tif(!win) return rej('Unable to open login');\r\n\t\t\twin.addEventListener('message', (event: MessageEvent) => {\r\n\t\t\t\tif(!event?.data?.token) return rej('Unknown response from login');\r\n\t\t\t\tthis.api.token = event.data.token;\r\n\t\t\t\tres(event.data.token);\r\n\t\t\t\twin.close();\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tlogout(): void {\r\n\t\tthis.api.token = null;\r\n\t\tthis.user = null;\r\n\t\tthis.emit('LOGOUT');\r\n\t}\r\n\r\n\tasync register(user: Partial<User> & {username: string, password: string}): Promise<void> {\r\n\t\tconst req = await this.api.request<void>({url: '/api/auth/register', body: {...user}});\r\n\t\tthis.emit('REGISTER', user);\r\n\t\treturn req;\r\n\t}\r\n\r\n\treset(password: string, token?: string): Promise<void>;\r\n\treset(email: string): Promise<void>;\r\n\tasync reset(emailOrPass: string, token?: string): Promise<void> {\r\n\t\tawait this.api.request({\r\n\t\t\turl: '/api/auth/reset',\r\n\t\t\theaders: {'Authorization': token ? `Bearer ${token}` : undefined},\r\n\t\t\tbody: {\r\n\t\t\t\temail: token ? undefined : emailOrPass,\r\n\t\t\t\tpassword: token ? emailOrPass : undefined,\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.emit(!token ? 'RESET_REQUEST' : 'RESET_COMPLETE', !token ? emailOrPass : token);\r\n\t}\r\n\r\n\tasync whoAmI(token?: string, set = false): Promise<{token: string, user: User, permissions: string[]} | null> {\r\n\t\tif(!token) token = <string>this.api.token;\r\n\t\tconst user = await this.api.request<{token: string, user: User, permissions: string[]} | null>({\r\n\t\t\turl: '/api/auth/whoami',\r\n\t\t\theaders: token ? {'Authorization': `Bearer ${token}`} : undefined\r\n\t\t});\r\n\t\tif(set) {\r\n\t\t\tthis.api.token = token;\r\n\t\t\tthis.user = user?.user || null;\r\n\t\t\tif(user) this.emit('LOGIN', user.user);\r\n\t\t}\r\n\t\treturn user;\r\n\t}\r\n}\r\n","import {Api} from './api';\r\nimport {type Meta} from './core';\r\nimport {TypedEmitter, type TypedEvents} from '@ztimson/utils';\r\n\r\nexport type DataEvents = TypedEvents & {\r\n\tDELETE: (collection: string, document: string) => any;\r\n\tGET: (collection: string, documents: any) => any;\r\n\tRAW: (collection: string, response: any) => any;\r\n\tSET: (collection: string, document: any) => any;\r\n};\r\n\r\nexport class Data extends TypedEmitter<DataEvents> {\r\n\tprivate readonly api!: Api;\r\n\r\n\tconstructor(api: Api | string) {\r\n\t\tsuper();\r\n\t\tthis.api = typeof api == 'string' ? new Api(api) : api;\r\n\t}\r\n\r\n\tdelete(collection: string, document: string): Promise<void> {\r\n\t\treturn this.api.request<void>({\r\n\t\t\turl: `/api/data/${collection}/${document}`,\r\n\t\t\tmethod: 'DELETE'\r\n\t\t}).then(() => this.emit('DELETE', collection, document));\r\n\t}\r\n\r\n\tget<T extends Meta>(collection: string): Promise<T[]>;\r\n\tget<T extends Meta>(collection: string, document: string): Promise<T>;\r\n\tget<T extends Meta>(collection: string, document?: string): Promise<T | T[]> {\r\n\t\treturn this.api.request<T | T[]>({url: `/api/data/${collection}${document ? `/${document}` : ''}`}).then(resp => {\r\n\t\t\tthis.emit('GET', collection, resp);\r\n\t\t\treturn resp;\r\n\t\t});\r\n\t}\r\n\r\n\traw<T>(collection: string, operand: string, query: any, options: any): Promise<T> {\r\n\t\treturn this.api.request<T>({\r\n\t\t\turl: `/api/data/${collection}`,\r\n\t\t\tbody: {\r\n\t\t\t\toperand,\r\n\t\t\t\tquery,\r\n\t\t\t\toptions,\r\n\t\t\t}\r\n\t\t}).then(resp => {\r\n\t\t\tthis.emit('RAW', collection, resp);\r\n\t\t\treturn resp;\r\n\t\t});\r\n\t}\r\n\r\n\tset<T extends Meta>(collection: string, document: Partial<T> & {_id?: string}, append = false): Promise<T> {\r\n\t\treturn this.api.request<T>({\r\n\t\t\turl: `/api/data/${collection}/${document._id || ''}`,\r\n\t\t\tmethod: append ? 'PATCH' : 'POST',\r\n\t\t\tbody: document\r\n\t\t}).then(resp => {\r\n\t\t\tthis.emit('SET', collection, document);\r\n\t\t\treturn resp;\r\n\t\t});\r\n\t}\r\n}\r\n","import {Api} from './api';\r\nimport {TypedEmitter, type TypedEvents} from '@ztimson/utils';\r\n\r\nexport type MailTemplate = {template: string, data?: any};\r\nexport type Mail = {\r\n\tto: string | string[];\r\n\tcc?: string[];\r\n\tbcc?: string[];\r\n\tsubject?: string;\r\n\tbody?: string | MailTemplate;\r\n}\r\n\r\nexport type EmailEvents = TypedEvents & {\r\n\tSENT: (email: Mail) => any\r\n}\r\n\r\nexport class Email extends TypedEmitter<EmailEvents> {\r\n\tprivate readonly api!: Api;\r\n\r\n\tconstructor(api: Api | string) {\r\n\t\tsuper();\r\n\t\tthis.api = typeof api == 'string' ? new Api(api) : api;\r\n\t}\r\n\r\n\tsend(email: Mail) {\r\n\t\tlet url = '/api/email';\r\n\t\tif(typeof email.body == 'object') url += `/${email.body.template}`;\r\n\t\treturn this.api.request({url, body: email}).then(resp => {\r\n\t\t\tthis.emit('SENT', email);\r\n\t\t\treturn resp;\r\n\t\t});\r\n\t}\r\n}\r\n","import {Api} from './api';\nimport {TypedEmitter, type TypedEvents} from '@ztimson/utils';\nimport type {Meta} from './core';\n\nexport type Group = Meta & {\n\tname: string;\n\tdescription?: string,\n\tnotes?: string;\n\tusers: string[];\n\tpermissions: string[];\n\textra: any;\n}\n\nexport type GroupEvents = TypedEvents & {\n\tLIST: (users: Group[]) => any;\n\tCREATE: (user: Group) => any;\n\tREAD: (user: Group) => any;\n\tUPDATE: (user: Group) => any;\n\tDELETE: (name: string) => any;\n};\n\nexport class Groups extends TypedEmitter<GroupEvents> {\n\tprivate readonly api!: Api;\n\n\tconstructor(api: Api | string) {\n\t\tsuper();\n\t\tthis.api = typeof api == 'string' ? new Api(api) : api;\n\t}\n\n\tcreate(group: Group): Promise<Group> {\n\t\treturn this.api.request<Group>({\n\t\t\turl: `/api/groups/${group.name}`,\n\t\t\tmethod: 'POST',\n\t\t\tbody: group\n\t\t}).then(resp => {\n\t\t\tthis.emit('CREATE', resp);\n\t\t\treturn resp;\n\t\t});\n\t}\n\n\tlist(): Promise<Group[]> {\n\t\treturn this.api.request<Group[]>({url: `/api/groups`}).then(resp => {\n\t\t\tthis.emit('LIST', resp);\n\t\t\treturn resp;\n\t\t});\n\t}\n\n\tread(name: string): Promise<Group> {\n\t\treturn this.api.request<Group>({url: `/api/groups/${name}`}).then(resp => {\n\t\t\tthis.emit('READ', resp);\n\t\t\treturn resp;\n\t\t});\n\t}\n\n\tupdate(group: Group): Promise<Group> {\n\t\treturn this.api.request<Group>({\n\t\t\turl: `/api/groups/${group.name}`,\n\t\t\tmethod: 'PATCH',\n\t\t\tbody: group\n\t\t}).then(resp => {\n\t\t\tthis.emit('UPDATE', resp);\n\t\t\treturn resp;\n\t\t});\n\t}\n\n\tdelete(name: string): Promise<void> {\n\t\treturn this.api.request<void>({\n\t\t\turl: `/api/groups/${name}`,\n\t\t\tmethod: 'DELETE'\n\t\t}).then(() => this.emit('DELETE', name));\n\t}\n}\n","import {Api} from './api';\r\nimport {LOG_LEVEL} from '@ztimson/utils';\r\n\r\nexport type LogLevel = 'ERROR' | 'WARN' | 'INFO' | 'LOG' | 'DEBUG' | 'NONE';\r\n\r\nexport type Log<T> = {\r\n\ttime: number;\r\n\tlevel: LOG_LEVEL;\r\n\tlog: any[];\r\n\tctx?: T\r\n}\r\n\r\nexport type ClientLog = Log<{\r\n\turl: string;\r\n\tuser: string;\r\n\tip: string;\r\n\tcores: number | 'Unknown';\r\n\tmem: number | 'Unknown';\r\n\tres: [number, number];\r\n\tua: string | {\r\n\t\tua: string;\r\n\t\tbrowser: {name: string, version: string, major: string};\r\n\t\tcpu: {architecture: string};\r\n\t\tdevice: {mode?: string, type?: string};\r\n\t\tengine: {name: string, version: string};\r\n\t\tos: {name: string, version: string};\r\n\t}\r\n}>;\r\n\r\nexport class Logger {\r\n\tprivate readonly api!: Api;\r\n\r\n\tconstructor(api: Api | string, logLevel?: LogLevel | null) {\r\n\t\tthis.api = typeof api == 'string' ? new Api(api) : api;\r\n\t\tif(logLevel != null && logLevel != 'NONE') {\r\n\t\t\t// LOG_LEVEL[logLevel];\r\n\t\t\twindow.addEventListener('error', (event: ErrorEvent) => this.error(event.error.stack));\r\n\t\t\twindow.addEventListener('unhandledrejection', async (event: any) => this.error(event.reason.stack));\r\n\t\t}\r\n\t}\r\n\r\n\tprivate buildLog(level: LOG_LEVEL, log: any[]) {\r\n\t\treturn {\r\n\t\t\ttime: new Date().getTime(),\r\n\t\t\tlevel,\r\n\t\t\tlog,\r\n\t\t\tctx: {\r\n\t\t\t\tcores: navigator.hardwareConcurrency,\r\n\t\t\t\tmem: (<any>navigator)?.deviceMemory,\r\n\t\t\t\tres: [window.innerWidth, window.innerHeight],\r\n\t\t\t\turl: location.href,\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearClientLogs() {\r\n\t\treturn this.api.request<ClientLog[]>({url: `/api/logs/client`, method: 'DELETE'});\r\n\t}\r\n\r\n\tclearServerLogs() {\r\n\t\treturn this.api.request<ClientLog[]>({url: `/api/logs/server`, method: 'DELETE'});\r\n\t}\r\n\r\n\tclientLogs(length?: number, page?: number): Promise<ClientLog[]> {\r\n\t\tconst query = [length ? `length=${length}` : undefined, page ? `page=${page}` : undefined, ].filter(v => !!v).join('&');\r\n\t\treturn this.api.request<ClientLog[]>({url: `/api/logs/client${query ? `?${query}` : ''}`});\r\n\t}\r\n\r\n\tserverLogs(length?: number, page?: number): Promise<Log<any>[]> {\r\n\t\tconst query = [length ? `length=${length}` : undefined, page ? `page=${page}` : undefined, ].filter(v => !!v).join('&');\r\n\t\treturn this.api.request<Log<any>[]>({url: `/api/logs/server${query ? `?${query}` : ''}`});\r\n\t}\r\n\r\n\tdebug(...logs: any[]) {\r\n\t\treturn this.api.request({url: `/api/logs/client`, body: this.buildLog(LOG_LEVEL.DEBUG, logs)}).catch(() => {});\r\n\t}\r\n\r\n\tlog(...logs: any[]) {\r\n\t\treturn this.api.request({url: `/api/logs/client`, body: this.buildLog(LOG_LEVEL.LOG, logs)}).catch(() => {});\r\n\t}\r\n\r\n\tinfo(...logs: any[]) {\r\n\t\treturn this.api.request({url: `/api/logs/client`, body: this.buildLog(LOG_LEVEL.INFO, logs)}).catch(() => {});\r\n\t}\r\n\r\n\twarn(...logs: any[]) {\r\n\t\treturn this.api.request({url: `/api/logs/client`, body: this.buildLog(LOG_LEVEL.WARN, logs)}).catch(() => {});\r\n\t}\r\n\r\n\terror(...logs: any[]) {\r\n\t\treturn this.api.request({url: `/api/logs/client`, body: this.buildLog(LOG_LEVEL.ERROR, logs)}).catch(() => {});\r\n\t}\r\n}\r\n","import {Api} from './api';\nimport {download, TypedEmitter, type TypedEvents} from '@ztimson/utils';\n\nexport type PdfTemplate = {template: string, data: any};\n\nexport type PdfEvents = TypedEvents & {\n\tCREATE: (pdf: Blob) => any;\n}\n\nexport class Pdf extends TypedEmitter<PdfEvents> {\n\tprivate readonly api!: Api;\n\n\tconstructor(api: Api | string) {\n\t\tsuper();\n\t\tthis.api = typeof api == 'string' ? new Api(api) : api;\n\t}\n\n\tprivate async handleResponse(resp: Response, fileName?: string) {\n\t\tconst blob = await resp.blob();\n\t\tif(fileName) {\n\t\t\tconst url = URL.createObjectURL(blob);\n\t\t\tdownload(url, fileName.endsWith('.pdf') ? fileName : fileName + '.pdf');\n\t\t\tURL.revokeObjectURL(url);\n\t\t}\n\t\tthis.emit('CREATE', blob);\n\t\treturn blob;\n\t}\n\n\tgenerate(content: string | PdfTemplate, opts: {download?: boolean, 'fileName'?: string} = {}) {\n\t\tconst template = (<any>content)?.template;\n\t\treturn this.api.request<Response>({\n\t\t\turl: `/api/pdf${template ? `/${template}` : ''}`,\n\t\t\tbody: template ? (<any>content)?.data : {html: content}\n\t\t}).then((resp) => this.handleResponse(resp, opts.download ? (opts.fileName || new Date().toISOString()) : undefined));\n\t}\n\n\tfromUrl(url: string, opts: {download?: boolean, 'fileName'?: string} = {}) {\n\t\treturn this.api.request<Response>({url: `/api/pdf?url=${url}`}).then((resp) =>\n\t\t\tthis.handleResponse(resp, opts.download ? (opts.fileName || new Date().toISOString()) : undefined));\n\t}\n}\n","import {Api} from './api';\n\nexport class Socket {\n\tstatic readonly timeout = 10000;\n\n\tprivate readonly api!: Api;\n\n\treadonly url!: string;\n\n\tprivate connection!: WebSocket;\n\n\topen = false;\n\n\tconstructor(api: Api | string) {\n\t\tthis.api = typeof api == 'string' ? new Api(api) : api;\n\t\tthis.url = this.api.url.replace('http', 'ws');\n\t\tthis.api.on('TOKEN', () => this.connect());\n\t\tif(!this.api.token) this.connect();\n\t}\n\n\tclose() {\n\t\tconsole.debug('Disconnected from Momentum');\n\t\tthis.open = false;\n\t\tthis.connection.close();\n\t}\n\n\tconnect(retry = 3) {\n\t\tif(this.connection?.readyState < 2) this.connection.close();\n\t\tthis.connection = new WebSocket(this.url + (this.api.token ? `?token=${this.api.token}` : ''));\n\t\tconst timeout = setTimeout(() => {\n\t\t\tif(this.open) return;\n\t\t\tthis.connection.close();\n\t\t\tconsole.error(`Momentum connection timeout`);\n\t\t\tif(retry > 0) this.connect(retry - 1);\n\t\t}, Socket.timeout);\n\t\tthis.connection.onclose = () => this.open = false;\n\t\tthis.connection.onmessage = this.handle;\n\t\tthis.connection.onopen = () => {\n\t\t\tthis.open = true;\n\t\t\tclearTimeout(timeout);\n\t\t\tconsole.debug('Connected to Momentum');\n\t\t}\n\t}\n\n\tprivate handle(...args: any[]) {\n\t\tconsole.log(args);\n\t}\n\n\tsend(channel: string, payload?: any) {\n\t\tthis.connection.send(JSON.stringify({\n\t\t\ttoken: this.api.token,\n\t\t\tchannel,\n\t\t\tpayload\n\t\t}));\n\t}\n}\n","import {Api} from './api';\r\nimport {type Meta} from './core';\r\nimport {PromiseProgress, type RequestOptions, TypedEmitter, download, type TypedEvents} from '@ztimson/utils';\r\n\r\nexport type DirMeta = {\r\n\tchildren: (DirMeta | FileMeta)[];\r\n\tpath: string;\r\n\tname: string;\r\n\tmime: 'directory',\r\n\tsize: number;\r\n}\r\n\r\nexport type FileMeta = Meta & {\r\n\tpath: string;\r\n\tname: string;\r\n\tmime: string;\r\n\tsize: number;\r\n}\r\n\r\nexport type StorageEvents = TypedEvents & {\r\n\tLIST: (path: string, response: DirMeta | FileMeta) => any;\r\n\tDELETE: (path: string) => any;\r\n\tDOWNLOAD: (path: string, data: Blob) => any;\r\n\tOPEN: (path: string) => any;\r\n\tUPLOAD: (files: FileMeta[]) => any;\r\n};\r\nexport class Storage extends TypedEmitter<StorageEvents> {\r\n\treadonly api!: Api;\r\n\r\n\tconstructor(api: Api | string) {\r\n\t\tsuper();\r\n\t\tthis.api = typeof api == 'string' ? new Api(api) : api;\r\n\t}\r\n\r\n\tdelete(path: string): Promise<void> {\r\n\t\tconst url = (path.startsWith('/api/storage/') ? path : '/api/storage/' + path).replaceAll('//', '/');\r\n\t\treturn this.api.request({url, method: 'DELETE'}).then(() => {\r\n\t\t\tthis.emit('DELETE', url);\r\n\t\t});\r\n\t}\r\n\r\n\tlist(path: string): Promise<DirMeta | FileMeta> {\r\n\t\tconst url = (path.startsWith('/api/storage/') ? path : '/api/storage/' + path).replaceAll('//', '/');\r\n\t\treturn this.api.request<DirMeta | FileMeta>({url: url + '?list'}).then(resp => {\r\n\t\t\tthis.emit('LIST', path, resp);\r\n\t\t\treturn resp;\r\n\t\t});\r\n\t}\r\n\r\n\topen(path: string, target: false): string;\r\n\topen(path: string, target?: '_blank' | '_self'): Window | null;\r\n\topen(path: string, target: false | '_blank' | '_self' = '_blank'): string | Window | null {\r\n\t\tconst p = (path.startsWith('/api/storage/') ? path : '/api/storage/' + path).replaceAll(/\\/{2,}/g, '/');\r\n\t\tconst link = `${this.api.url}${p}${this.api.token ? `?token=${this.api.token}` : ''}`;\r\n\t\tif(!target) return link;\r\n\t\tthis.emit('OPEN', path);\r\n\t\treturn window.open(link, target);\r\n\t}\r\n\r\n\tmkdir(path: string): Promise<DirMeta> {\r\n\t\tconst p = (path.startsWith('/api/storage/') ? path : '/api/storage/' + path).replaceAll(/\\/{2,}/g, '/');\r\n\t\treturn this.api.request({url: p + '?directory', method: 'POST'});\r\n\t}\r\n\r\n\tdownload(path: string, opts: RequestOptions & {'downloadAs'?: string} = {}): PromiseProgress<Blob> {\r\n\t\treturn new PromiseProgress<Blob>((res: Function, rej: Function, progress: Function) => {\r\n\t\t\tconst p = ('/api/storage/' + path).replaceAll('//', '/');\r\n\t\t\tthis.api.request({...opts, url: p, skipConverting: true}).then((response: any) => {\r\n\t\t\t\tif(!response.ok) return rej(response.statusText);\r\n\t\t\t\tconst contentLength = response.headers.get('Content-Length');\r\n\t\t\t\tconst total = contentLength ? parseInt(contentLength, 10) : 0;\r\n\t\t\t\tlet chunks: any[] = [], loaded = 0;\r\n\t\t\t\tconst reader = response.body?.getReader();\r\n\t\t\t\tconst process = (result: any) => {\r\n\t\t\t\t\tif(result.done) {\r\n\t\t\t\t\t\tprogress(1);\r\n\t\t\t\t\t\tconst blob = new Blob(chunks);\r\n\t\t\t\t\t\tconst name = opts.downloadAs || <string>new URL(response.url).pathname.split('/').pop();\r\n\t\t\t\t\t\tconst url = URL.createObjectURL(blob);\r\n\t\t\t\t\t\tdownload(url, name.includes('.') ? name : name + '.zip');\r\n\t\t\t\t\t\tURL.revokeObjectURL(url);\r\n\t\t\t\t\t\tthis.emit('DOWNLOAD', path, blob);\r\n\t\t\t\t\t\tres(blob);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconst chunk = result.value;\r\n\t\t\t\t\t\tchunks.push(chunk);\r\n\t\t\t\t\t\tloaded += chunk.length;\r\n\t\t\t\t\t\tprogress(loaded / total);\r\n\t\t\t\t\t\treader.read().then(process);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treader?.read().then(process);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tasync upload(files?: File | File[] | null, opts: string | {path?: string, accept?: string, multiple?: boolean} = '') {\r\n\t\tconst fileBrowser = (): Promise<File[]> => {\r\n\t\t\treturn new Promise(res => {\r\n\t\t\t\tconst input = document.createElement('input');\r\n\t\t\t\tinput.type = 'file';\r\n\t\t\t\tinput.accept = (<any>opts)?.accept || '*';\r\n\t\t\t\tinput.style.display='none';\r\n\t\t\t\tinput.multiple = !!(<any>opts)?.multiple;\r\n\t\t\t\tinput.onblur = input.onchange = async () => {\r\n\t\t\t\t\tres(Array.from(<any>input.files));\r\n\t\t\t\t\tinput.remove();\r\n\t\t\t\t}\r\n\t\t\t\tdocument.body.appendChild(input);\r\n\t\t\t\tinput.click();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(!files) files = await fileBrowser();\r\n\t\tif(!files || Array.isArray(files) && !files.length) return [];\r\n\r\n\t\tconst data = new FormData();\r\n\t\tconst p = ('/api/storage/' + (typeof opts == 'string' ? opts : opts?.path)).replaceAll('//', '/');\r\n\t\t(Array.isArray(files) ? files : [files]).forEach(f => data.append('file', <Blob>f));\r\n\t\treturn this.api.request<FileMeta[]>({url: p, body: data}).then(resp => {\r\n\t\t\tthis.emit('UPLOAD', resp);\r\n\t\t\treturn resp;\r\n\t\t});\r\n\t}\r\n}\r\n","import {Api} from './api';\nimport {TypedEmitter, type TypedEvents} from '@ztimson/utils';\nimport {BehaviorSubject} from 'rxjs';\nimport type {Meta} from './core';\n\nexport type User = Meta & {\n\tusername: string;\n\tname: string;\n\temail: string;\n\timage?: string;\n\tdisabled?: boolean;\n\tgroups?: string[];\n\tpermissions?: string[];\n\tnotes?: string;\n\textra: any;\n\tlastLogin?: number | null;\n}\n\nexport type UserEvents = TypedEvents & {\n\tLIST: (users: User[]) => any;\n\tREAD: (user: User) => any;\n\tUPDATE: (user: User) => any;\n\tDELETE: (username: string) => any;\n};\n\nexport class Users extends TypedEmitter<UserEvents> {\n\tprivate readonly api!: Api;\n\tprivate listed = false;\n\n\t$cache = new BehaviorSubject<User[]>([])\n\tget cache() { return this.$cache.value; }\n\tset cache(val) { this.$cache.next(val); }\n\n\tconstructor(api: Api | string) {\n\t\tsuper();\n\t\tthis.api = typeof api == 'string' ? new Api(api) : api;\n\t}\n\n\tdelete(username: string): Promise<void> {\n\t\treturn this.api.request<void>({\n\t\t\turl: `/api/users/${username}`,\n\t\t\tmethod: 'DELETE'\n\t\t}).then(() => {\n\t\t\tthis.cache = this.cache.filter(u => u.username != username);\n\t\t\tthis.emit('DELETE', username)\n\t\t});\n\t}\n\n\tlist(reload=false): Promise<User[]> {\n\t\tif(!reload && this.listed) return Promise.resolve(this.cache);\n\t\treturn this.api.request<User[]>({url: `/api/users`}).then(resp => {\n\t\t\tthis.cache = resp;\n\t\t\tthis.listed = true;\n\t\t\tthis.emit('LIST', resp);\n\t\t\treturn resp;\n\t\t});\n\t}\n\n\tread(username: string, reload=false): Promise<User> {\n\t\tif(!reload) {\n\t\t\tconst cached = this.cache.find(u => u.username == username);\n\t\t\tif(cached) return Promise.resolve(cached);\n\t\t}\n\t\treturn this.api.request<User>({url: `/api/users/${username}`}).then(resp => {\n\t\t\tif(resp) this.cache = {...this.cache, [resp.username]: resp};\n\t\t\tthis.emit('READ', resp);\n\t\t\treturn resp;\n\t\t});\n\t}\n\n\tupdate(user: User): Promise<User> {\n\t\treturn this.api.request<User>({\n\t\t\turl: `/api/users/${user.username}`,\n\t\t\tmethod: 'PATCH',\n\t\t\tbody: user\n\t\t}).then(resp => {\n\t\t\tif(resp) this.cache = this.cache.filter(u => u.username != user.username).concat([resp]);\n\t\t\tthis.emit('UPDATE', resp);\n\t\t\treturn resp;\n\t\t});\n\t}\n}\n","import {Api} from './api';\nimport {TypedEmitter, type TypedEvents} from '@ztimson/utils';\nimport {BehaviorSubject} from 'rxjs';\n\n/** Momentum variable */\nexport type Setting<T> = {\n\t/** Internal ID */\n\t_id?: string;\n\t/** Variable name */\n\tkey: string;\n\t/** Variable value */\n\tvalue: T;\n\t/** Visible without authenticating */\n\tpublic?: boolean;\n\t/** Momentum variable, cannot be deleted */\n\tsystem?: boolean;\n}\n\nexport type SettingEvents = TypedEvents & {\n\tLIST: (variables: {[key: string]: any}) => any;\n\tDELETE: (key: string) => any;\n\tREAD: (variable: Setting<any> | null) => any;\n\tUPDATE: (variable: Setting<any>) => any;\n}\n\nexport class Settings extends TypedEmitter<SettingEvents> {\n\tprivate readonly api!: Api;\n\n\t$cache = new BehaviorSubject<{[key: string]: any}>({});\n\tget cache() { return this.$cache.value; }\n\tset cache(val) { this.$cache.next(val); }\n\n\tconstructor(api: Api | string) {\n\t\tsuper();\n\t\tthis.api = typeof api == 'string' ? new Api(api) : api;\n\t}\n\n\tlist(detailed = false): Promise<{[key: string]: any}> {\n\t\treturn this.api.request<{[key: string]: any}>({url: `/api/settings` + (detailed ? '?detailed' : '')}).then(resp => {\n\t\t\tthis.cache = !detailed ? resp : Object.values(resp).reduce((acc, v) => ({...acc, [v.key]: v.value}), {});\n\t\t\tthis.emit('LIST', resp);\n\t\t\treturn resp;\n\t\t});\n\t}\n\n\tdelete(key: string): Promise<void> {\n\t\treturn this.api.request({url: `/api/settings/${key}`, method: 'DELETE'}).then(() => {\n\t\t\tthis.cache = {...this.cache, [key]: undefined};\n\t\t\tthis.emit('DELETE', key);\n\t\t});\n\t}\n\n\tread(key: string, reload=false): Promise<Setting<any> | null> {\n\t\tif(!reload && this.cache[key]) return Promise.resolve(this.cache[key]);\n\t\treturn this.api.request<Setting<any> | null>({url: `/api/settings/${key}`}).then(variable => {\n\t\t\tif(variable) this.cache = {...this.cache, [variable.key]: variable};\n\t\t\tthis.emit('READ', variable);\n\t\t\treturn variable;\n\t\t});\n\t}\n\n\tupdate(variable: Setting<any>): Promise<Setting<any>> {\n\t\treturn this.api.request<Setting<any>>({url: `/api/settings/${variable.key}`, body: variable}).then(variable => {\n\t\t\tif(variable) this.cache = {...this.cache, [variable.key]: variable.value};\n\t\t\tthis.emit('UPDATE', variable);\n\t\t\treturn variable;\n\t\t});\n\t}\n}\n","import {Api} from './api';\nimport {TypedEmitter, type TypedEvents} from '@ztimson/utils';\nimport {type FileMeta} from './storage';\n\nexport type StaticEvents = TypedEvents & {\n\tLIST: (path: string, response: string[] | FileMeta) => any;\n\tDELETE: (path: string) => any;\n\tUPLOAD: (files: FileMeta[]) => any;\n};\n\nexport class Static extends TypedEmitter<StaticEvents> {\n\tprivate readonly api!: Api;\n\n\tconstructor(api: Api | string) {\n\t\tsuper();\n\t\tthis.api = typeof api == 'string' ? new Api(api) : api;\n\t}\n\n\tdelete(path: string): Promise<void> {\n\t\treturn this.api.request({url: `/api/static/${path}`, method: 'DELETE'}).then(() => {\n\t\t\tthis.emit('DELETE', path);\n\t\t});\n\t}\n\n\tlist(path: string): Promise<string[] | FileMeta> {\n\t\tconst url = ('/api/static/' + path).replaceAll('//', '/');\n\t\treturn this.api.request<string[] | FileMeta>({url}).then(resp => {\n\t\t\tthis.emit('LIST', path, resp);\n\t\t\treturn resp;\n\t\t});\n\t}\n\n\tupload(files: File | File[], path = '/'): Promise<FileMeta[]> {\n\t\tconst data = new FormData();\n\t\t(Array.isArray(files) ? files : [files]).forEach(f => data.append('file', <Blob>f));\n\t\treturn this.api.request<FileMeta[]>({url: '/api/static' + path, body: data}).then(resp => {\n\t\t\tthis.emit('UPLOAD', resp);\n\t\t\treturn resp;\n\t\t});\n\t}\n}\n","import {Actions} from './actions';\nimport {Api, type ApiEvents} from './api';\nimport {Auth, type AuthEvents, AuthOptions} from './auth';\nimport {Data, type DataEvents} from './data';\nimport {Email, type EmailEvents} from './email';\nimport {Groups} from './groups';\nimport {TypedEmitter, type TypedEvents, type XhrOptions} from '@ztimson/utils';\nimport {Logger, LogLevel} from './logger';\nimport {Pdf, type PdfEvents} from './pdf';\nimport {Socket} from './sockets';\nimport {Storage, type StorageEvents} from './storage';\nimport {Users} from './users';\nimport {Settings, type SettingEvents} from './settings';\nimport {Static, type StaticEvents} from './static';\n\nexport type MomentumEvents = TypedEvents & ApiEvents & AuthEvents & DataEvents & EmailEvents & PdfEvents & StaticEvents & StorageEvents & SettingEvents;\n\nexport type MomentumOptions = AuthOptions & {\n\tlogLevel?: LogLevel;\n\tsocket?: boolean;\n\tapi?: XhrOptions;\n}\n\nexport class Momentum extends TypedEmitter<MomentumEvents> {\n\tapi!: Api;\n\tactions!: Actions;\n\tauth!: Auth;\n\tdata!: Data;\n\temail!: Email;\n\tgroups!: Groups;\n\tlogger!: Logger;\n\tpdf!: Pdf;\n\tsettings!: Settings;\n\tsocket?: Socket;\n\tstatic!: Static;\n\tstorage!: Storage;\n\tusers!: Users;\n\tconstructor(url?: string, opts?: MomentumOptions) {\n\t\tsuper();\n\t\tthis.api = new Api(url, opts?.api);\n\t\tthis.actions = new Actions(this.api);\n\t\tthis.auth = new Auth(this.api, {\n\t\t\tpersist: opts?.persist ?? true,\n\t\t\tloginUi: opts?.loginUi\n\t\t});\n\t\tthis.data = new Data(this.api);\n\t\tthis.email = new Email(this.api);\n\t\tthis.groups = new Groups(this.api);\n\t\tthis.logger = new Logger(this.api, opts?.logLevel);\n\t\tthis.pdf = new Pdf(this.api);\n\t\tthis.settings = new Settings(this.api);\n\t\tthis.static = new Static(this.api);\n\t\tthis.storage = new Storage(this.api);\n\t\tthis.users = new Users(this.api);\n\t\tif(opts?.socket) this.socket = new Socket(this.api);\n\n\t\tthis.api.on('*', (event, ...args: any[]) => this.emit(`API::${event}`, ...args));\n\t\tthis.actions.on('*', (event, ...args: any[]) => this.emit(`ACTIONS::${event}`, ...args));\n\t\tthis.auth.on('*', (event, ...args: any[]) => this.emit(`AUTH::${event}`, ...args));\n\t\tthis.data.on('*', (event, ...args: any[]) => this.emit(`DATA::${event}`, ...args));\n\t\tthis.email.on('*', (event, ...args: any[]) => this.emit(`EMAIL::${event}`, ...args));\n\t\tthis.groups.on('*', (event, ...args: any[]) => this.emit(`GROUPS::${event}`, ...args));\n\t\tthis.pdf.on('*', (event, ...args: any[]) => this.emit(`PDF::${event}`, ...args));\n\t\tthis.settings.on('*', (event, ...args: any[]) => this.emit(`SETTINGS::${event}`, ...args));\n\t\tthis.static.on('*', (event, ...args: any[]) => this.emit(`STATIC::${event}`, ...args));\n\t\tthis.storage.on('*', (event, ...args: any[]) => this.emit(`STORAGE::${event}`, ...args));\n\t\tthis.users.on('*', (event, ...args: any[]) => this.emit(`USERS::${event}`, ...args));\n\n\t\tthis.users.on('*', (event, ...args: any[]) => {\n\t\t\tif(Array.isArray(args[0])) {\n\t\t\t\tconst u = args[0].find(u => u._id == this.auth.user?._id);\n\t\t\t\tif(u) this.auth.user = u;\n\t\t\t} else if(args[0]._id == this.auth.user?._id) {\n\t\t\t\tthis.auth.user = args[0];\n\t\t\t}\n\t\t});\n\t}\n}\n"],"names":["k","G","n","u","j","A","s","at","D","o","r","m","t","q","Y","H","W","v","x","C","F","d","i","c","St","p","E","O","g","B","I","Api","XHR","url","opts","__publicField","TypedEmitter","token","options","req","resp","err","extendStatics","b","__extends","__","__values","__read","ar","e","error","__spreadArray","to","from","pack","l","isFunction","value","createErrorClass","createImpl","_super","instance","ctorFunc","UnsubscriptionError","errors","arrRemove","arr","item","index","Subscription","initialTeardown","e_1","_a","e_2","_b","_parentage","_parentage_1","_parentage_1_1","parent_1","e_1_1","initialFinalizer","_finalizers","_finalizers_1","_finalizers_1_1","finalizer","execFinalizer","e_2_1","teardown","parent","empty","EMPTY_SUBSCRIPTION","isSubscription","config","timeoutProvider","handler","timeout","args","_i","handle","delegate","reportUnhandledError","noop","errorContext","cb","Subscriber","destination","_this","EMPTY_OBSERVER","next","complete","SafeSubscriber","_bind","bind","fn","thisArg","ConsumerObserver","partialObserver","handleUnhandledError","observerOrNext","context_1","defaultErrorHandler","observable","identity","pipeFromArray","fns","input","prev","Observable","subscribe","operator","subscriber","isSubscriber","source","sink","promiseCtor","getPromiseCtor","resolve","reject","Symbol_observable","operations","isObserver","ObjectUnsubscribedError","Subject","subject","AnonymousSubject","_c","observer","observers","hasError","isStopped","thrownError","BehaviorSubject","_value","subscription","ActionType","ActionType2","Actions","api","val","id","a","reload","cached","action","path","Auth","user","isEqual","host","username","password","res","rej","win","event","emailOrPass","set","Data","collection","document","operand","query","append","Email","email","Groups","group","name","Logger","logLevel","level","log","length","page","logs","LOG_LEVEL","Pdf","fileName","blob","download","content","template","_Socket","retry","channel","payload","Socket","Storage","target","link","PromiseProgress","progress","response","contentLength","total","chunks","loaded","reader","process","result","chunk","files","data","f","Users","Settings","detailed","acc","key","variable","Static","Momentum"],"mappings":"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","x_google_ignoreList":[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]}