@basmilius/http-client 2.8.1 → 2.9.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.
@@ -0,0 +1 @@
1
+ export default class extends Error {}
@@ -12,6 +12,7 @@ export default class RequestBuilder {
12
12
  get query(): QueryString | null;
13
13
  set query(value: QueryString | null);
14
14
  constructor(path: string, client?: HttpClient);
15
+ autoCancel(identifier: symbol): RequestBuilder;
15
16
  bearerToken(token?: string): RequestBuilder;
16
17
  body(body: BodyInit | FormData | object | null, contentType?: string | null): RequestBuilder;
17
18
  header(name: string, value: string): RequestBuilder;
@@ -1,4 +1,6 @@
1
1
  import { RequestError, ValidationError } from "../dto";
2
+ import RequestAbortedError from "./RequestAbortedError";
3
+ export declare function isRequestAborted(obj: unknown): obj is RequestAbortedError;
2
4
  export declare function isRequestError(obj: unknown): obj is RequestError;
3
5
  export declare function isUnsanctionedRequest(statusCode: unknown): boolean;
4
6
  export declare function isValidationError(obj: unknown): obj is ValidationError;
@@ -2,6 +2,7 @@ import BaseResponse from "./BaseResponse";
2
2
  import BaseService from "./BaseService";
3
3
  import HttpClient from "./HttpClient";
4
4
  import QueryString from "./QueryString";
5
+ import RequestAbortedError from "./RequestAbortedError";
5
6
  import RequestBuilder from "./RequestBuilder";
6
- export { BaseResponse, BaseService, HttpClient, QueryString, RequestBuilder };
7
- export { isRequestError, isUnsanctionedRequest, isValidationError } from "./helpers";
7
+ export { BaseResponse, BaseService, HttpClient, QueryString, RequestAbortedError, RequestBuilder };
8
+ export { isRequestAborted, isRequestError, isUnsanctionedRequest, isValidationError } from "./helpers";
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var q=function(r,i,n,m){var u=arguments.length,f=u<3?i:m===null?m=Object.getOwnPropertyDescriptor(i,n):m,p;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")f=Reflect.decorate(r,i,n,m);else for(var x=r.length-1;x>=0;x--)if(p=r[x])f=(u<3?p(f):u>3?p(i,n,f):p(i,n))||f;return u>3&&f&&Object.defineProperty(i,n,f),f};import{DateTime as Pr}from"luxon";function e(r){return class extends r{constructor(...i){throw new Error("@adapter: cannot create instance of class.")}}}function Zr(){return(r,i)=>{r[i]=r[i].bind(r)}}import{debounce as Tr}from"@basmilius/utils";function Wr(r){return(i,n,m)=>{m.value=Tr(m.value,r,i)}}import{getPrototypeChain as Yr,setObjectMethod as wr,setObjectValue as mr}from"@basmilius/utils";var $r=!1,R=!1,P=!1,Br=!1,Jr=!1,tr=!1,Ir=!1;var _=Symbol(),U=Symbol(),h=Symbol(),S=Symbol(),o=Symbol(),s=Symbol(),c=Symbol(),M=Symbol(),V=Symbol(),g=Symbol(),j=Symbol();function t(r){return r&&typeof r==="object"&&!!r[o]}function y(r,i){if(!t(r)||!t(i))return r===i;return JSON.stringify(r)===JSON.stringify(i)}function l(r){if(!t(r))throw new Error("@dto assert given object is not a class decorated with @Dto.")}var fr=Symbol();function Z(r,i=0,n){return function(...m){let u=fr in r,f=r[fr]??=new WeakMap,p=m[i],x=n!==void 0?m[n]:"self";if(typeof p!=="object")return r.call(this,...m);if(!f.has(p))f.set(p,[]);if(f.get(p).includes(x)){$r&&console.log("%c@dto %ccircular protect %cdetected a circular reference","color: #0891b2","color: #059669","color: #1d4ed8",{fn:r,primary:p,secondary:x});return}f.get(p).push(x);let E=r.call(this,...m);return!u&&delete r[fr],E}}function or(r){return l(r),r.clone()}function W(r){return l(r),r[S]}var Or=Z(function(r,i,n,m){let u=r[j];u(r,i,n,m),P&&console.log(`%c@dto %c${r[o]} %ctrigger`,"color: #0891b2","color: #059669","color: #1d4ed8",i,{dto:r,value:n,oldValue:m}),r[s]&&Or(r[s],r[c],r[s][r[c]])},0,1),C=Or;var Xr=Z(function(r){if(l(r),r[S])r[S]=!1,R&&console.log(`%c@dto %c${r[o]} %cdirty`,"color: #0891b2","color: #059669","color: #1d4ed8","marked clean",{obj:r}),C(r,S,!1,!0);if(!r[U]||r[U].length===0)return;r[U].filter(W).forEach(Xr)}),k=Xr;async function pr(r,i){if(!t(r)||!W(r))return;await i(r),k(r)}function v(r){return r?.value??r}function cr(r){return l(r),!r[S]}var _r=Z(function(r,i){if(l(r),!r[S])r[S]=!0,R&&console.log(`%c@dto %c${r[o]} %cdirty`,"color: #0891b2","color: #059669","color: #1d4ed8","marked dirty",{obj:r,key:i}),C(r,S,!0,!1);if(!r[s])return;_r(r[s],r[c])}),$=_r;function a(r,i,n){i[U]??=[],!i[U].includes(r)&&i[U].push(r),r[s]!==i&&(r[s]=i),r[c]!==n&&(r[c]=n)}function T(r,i,n){if(t(n))a(n,r,i);else if(Array.isArray(n)){if(n.some(t))n.filter(t).forEach((m)=>a(m,r,i));n[s]=r,n[c]=i}}function D(r,i){let n=r[g];n(r,i),P&&console.log(`%c@dto %c${r[o]} %ctrack`,"color: #0891b2","color: #059669","color: #1d4ed8",i,{dto:r})}function rr(r,i){if(U in i){let n=i[U].indexOf(r);i[U].splice(n,1)}r[s]=void 0,r[c]=void 0}function ir(r,i){if(t(i))rr(i,r);else if(Array.isArray(i)){if(i.some(t))i.filter(t).forEach((n)=>rr(n,r));i[s]=void 0,i[c]=void 0}}var B={};import{customRef as zr,markRaw as Ar}from"vue";var nr={deleteProperty(r,i){if(Reflect.deleteProperty(r,i),sr(r,i))return!0;let n=r[s];return n&&C(n,r[c],n[r[c]]),n&&$(n,r[c]),!0},get(r,i,n){if(i===V)return!0;if(sr(r,i))return Reflect.get(r,i,n);let m=r[s];return m&&D(m,r[c]),Reflect.get(r,i)},set(r,i,n,m){if(sr(r,i))return Reflect.set(r,i,n,m);let u=r[s];return u&&C(u,r[c],u[r[c]]),u&&$(u,r[c]),Reflect.set(r,i,n)}};function sr(r,i){return typeof i==="symbol"||typeof r[i]==="function"||i==="length"}var Mr={get(r,i,n){if(i===V)return!0;if(typeof i==="symbol")return Reflect.get(r,i,n);let m=r[h][i];if(!m||!m.get)return Reflect.get(r,i,n);let u=m.get.call(r);return Br&&console.log(`%c@dto %c${r[o]} %cget`,"color: #0891b2","color: #059669","color: #1d4ed8",i),D(r,i),T(r,i,u),u},getOwnPropertyDescriptor(r,i){return r[h][i]},ownKeys(r){return r[M]},set(r,i,n,m){if(typeof i==="symbol")return Reflect.set(r,i,n,m);let u=r[h][i];if(!u||!u.set)return Reflect.set(r,i,n,m);let f=u.get?.call(r)??void 0;if(y(n,f))return!0;if(ir(r,f),Array.isArray(n)&&!n[V])n=new Proxy(n,nr);return Jr&&console.log(`%c@dto %c${r[o]} %cset`,"color: #0891b2","color: #059669","color: #1d4ed8",i,{value:n}),u.set.call(r,n),T(r,i,n),$(r,i),C(r,i,n,f),!0}};var Dr={get(r,i,n){if(i==="__v_isRef")return!1;if(i===V)return!0;if(i in r)return Reflect.get(r,i,n);return Reflect.get(r.value,i)},getOwnPropertyDescriptor(r,i){return Reflect.getOwnPropertyDescriptor(r.value,i)},ownKeys(r){return Reflect.ownKeys(r.value)},set(r,i,n,m){if(i in r)return Reflect.set(r,i,n,m);return Reflect.set(r.value,i,n)}};var Kr={construct(r,i,n){i=i.map((u)=>{if(!Array.isArray(u))return u;return new Proxy(u,nr)});let m=zr((u,f)=>{let p=Ar(Reflect.construct(r,i,n));p[_]=i,p[S]=!1,p[g]=u,p[j]=f;let x=new Proxy(p,Mr);return{get:()=>{return u(),x},set:()=>{return}}});return new Proxy(m,Dr)}};function lr(){let r=this;l(r);let n=new B[r[o]](...r[_]);return Object.entries(this[h]).filter(([,m])=>!!m.set).map(([m])=>m).forEach((m)=>n[m]=t(this[m])?this[m].clone():this[m]),n}function xr(r){for(let i in r){let n=this[h][i];if(t(this[i])&&typeof r[i]==="object")this[i].fill(r[i]);else if(n&&n.set)this[i]=r[i]}}function Sr(){return Object.fromEntries(this[M].map((r)=>{let i=Reflect.get.call(this,this,r,this);if(t(i))i=i.toJSON();return[r,i]}))}function F(r){Nr(r);let i=Object.freeze(Yr(r)),n=Object.keys(i);return mr(r.prototype,h,i),mr(r.prototype,o,r.name),mr(r.prototype,M,n),mr(r,Symbol.hasInstance,(m)=>typeof m==="object"&&m?.[o]===r.name),wr(r,"clone",lr),wr(r,"fill",xr),wr(r,"toJSON",Sr),dr(r)}function dr(r){let i=new Proxy(r,Kr);return B[r.name]=i,i}function Nr(r){let i=Object.getPrototypeOf(r.prototype);if(o in i)throw new Error(`⛔️ @dto ${r.name} cannot extend parent class which is also decorated with @dto ${i[o]}.`)}if(Ir){let r=console.error.bind(console),i=console.info.bind(console),n=console.log.bind(console),m=console.warn.bind(console),u=(f)=>(...p)=>{for(let x=p.length-1;x>=0;--x){let E=p[x];if(!t(E))continue;let Vr=v(E);p.splice(x,1,`\uD83D\uDCE6 ${Vr[o]}`,Vr.toJSON())}return f(...p)};console.error=u(r),console.info=u(i),console.log=u(n),console.warn=u(m)}function z(r){return r.map(J)}import{DateTime as br}from"luxon";function Ur([,r]){return br.fromISO(r)}function A(r){return Object.fromEntries(Object.entries(r).map(([i,n])=>[i,J(n)]).filter(([,i])=>i!==void 0))}var Qr={};function qr([,r,i,n,m]){if(!(i in B))throw new Error(`Cannot restore @dto. Dto ${i} was not found.`);if(r in Qr)return Qr[r];tr&&console.group("⭐️",i,r);let f=new B[i](...z(m));return f.fill(A(n)),tr&&console.groupEnd(),Qr[r]=f,f}function hr(r){return Array.isArray(r)&&r[0]===3058}function Cr(r){return Array.isArray(r)&&r[0]===3057}function J(r){switch(!0){case r===null:return null;case Array.isArray(r):switch(!0){case hr(r):return Ur(r);case Cr(r):return qr(r);default:return z(r)}case typeof r==="object":return A(r);default:return r}}function Fr(r){return J(JSON.parse(r))}import{DateTime as Rr}from"luxon";import{DateTime as er}from"luxon";function Y(r){return[3058,r.toISO({extendedZone:!0,includeOffset:!0})]}import{toRaw as Er}from"vue";function d(r){return Object.fromEntries(Object.entries(r).map(([i,n])=>[i,I(n)]).filter(([,i])=>i!==void 0))}function Gr(){return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,(r)=>(+r^crypto.getRandomValues(new Uint8Array(1))[0]&15>>+r/4).toString(16))}function N(r){r=Er(r);let i=r.toJSON();return[3057,Gr(),r[o],d(i),b(r[_])]}function b(r){switch(!0){case r.every(t):return r.map(N);case r.every(er.isDateTime):return r.map(Y);default:return r.map(I)}}function I(r){switch(!0){case r===null:return null;case Array.isArray(r):return b(r);case t(r):return N(r);case Rr.isDateTime(r):return Y(r);case typeof r==="object":return d(r);case typeof r==="boolean":case typeof r==="number":case typeof r==="string":return r;default:return}}function Hr(r){return JSON.stringify(I(r))}class O{get blob(){return this.#r}get name(){return this.#i}#r;#i;constructor(r,i){this.#r=r,this.#i=i}}O=q([F],O);class X{get items(){return this.#r}get page(){return this.#i}get pageSize(){return this.#n}get pages(){return this.#m}get total(){return this.#u}#r;#i;#n;#m;#u;constructor(r,i,n,m,u){this.#r=r,this.#i=i,this.#n=n,this.#m=m,this.#u=u}}X=q([F],X);class w{get code(){return this.#r}get error(){return this.#i}get errorDescription(){return this.#n}get statusCode(){return this.#m}#r;#i;#n;#m;constructor(r,i,n,m){this.#r=r,this.#i=i,this.#n=n,this.#m=m}}w=q([F],w);class H{get code(){return this.#r}get error(){return this.#i}get errorDescription(){return this.#n}get errors(){return this.#m}get params(){return this.#u}#r;#i;#n;#m;#u;constructor(r,i,n,m,u){this.#r=r,this.#i=i,this.#n=n,this.#m=m,this.#u=u}}H=q([F],H);class G{static parsePaginatedAdapter(r,i){return new X(r.items.map(i),r.page,r.page_size,r.pages,r.total)}static parseFileNameFromContentDispositionHeader(r){let i=`download-${Pr.now().toFormat("yyyy-MM-dd HH-mm-ss")}`;if(!r.startsWith("attachment"))return i;let m=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/.exec(r);if((m?.length||0)<2)return i;return m[1].replaceAll("'","").replaceAll('"',"").replaceAll("/","-").replaceAll(":","-")}static parseRequestError(r,i){return new w(r.code,r.error,r.error_description,i)}static parseValidationError(r){let i;if(r.errors)i={},Object.entries(r.errors).forEach(([n,m])=>{i[n]=G.parseValidationError(m)});return new H(r.code,r.error,r.error_description,i,r.params)}}G=q([e],G);class Q{get data(){return this.#r}get headers(){return this.#i.headers}get ok(){return this.statusCode>=200&&this.statusCode<300}get response(){return this.#i}get statusCode(){return this.#i.status}#r;#i;constructor(r,i){this.#r=r,this.#i=i}}import{DateTime as gr}from"luxon";class L{get authToken(){return this.#r}set authToken(r){this.#r=r}get baseUrl(){return this.#i}get dataField(){return this.#n}#r;#i;#n;constructor(r,i,n=!1){this.#r=r,this.#i=i,this.#n=n}static get instance(){if(L.#m===null)throw new Error("There is currently no HttpClient instance registered. Register one using the HttpClient.register() function.");return L.#m}static#m=null;static register(r){L.#m=r}}class K{get client(){return this.#r}get options(){return this.#n}get path(){return this.#i}set path(r){this.#i=r}get query(){return this.#m}set query(r){this.#m=r}#r;#i;#n={};#m=null;constructor(r,i){this.#r=i??L.instance,this.#n.cache="no-cache",this.#n.method="GET",this.#i=r}bearerToken(r){if(r=r??this.#r.authToken,r)return this.header("Authorization",`Bearer ${r}`);if(this.#n.headers&&"Authorization"in this.#n.headers)delete this.#n.headers.Authorization;return this}body(r,i="application/octet-stream"){if(r instanceof FormData)i=null;else if(Array.isArray(r)||typeof r==="object")r=JSON.stringify(r),i="application/json";if(this.#n.body=r,i!==null)return this.header("Content-Type",i);return this}header(r,i){return this.#n.headers=this.#n.headers||{},this.#n.headers[r]=i,this}method(r){return this.#n.method=r.toUpperCase(),this}queryString(r){return this.#m=r,this}signal(r=null){return this.#n.signal=r,this}async fetch(){return this.#u().then((r)=>r.json())}async fetchBlob(){let r=await this.#u();if(r.status!==200){let n=await r.json();if("code"in n&&"error"in n&&"error_description"in n)throw new w(n.code,n.error,n.error_description,r.status);throw new w(-1,"failed_without_info","Request failed without any information from the backend.",r.status)}let i=r.headers.has("content-disposition")?G.parseFileNameFromContentDispositionHeader(r.headers.get("content-disposition")):`download-${gr.now().toFormat("yyyy-MM-dd HH-mm-ss")}`;return new O(await r.blob(),i)}async run(){let{data:r,response:i}=await this.#t();return new Q(r,i)}async runAdapter(r){let{data:i,response:n}=await this.#t();return new Q(r(i),n)}async runArrayAdapter(r){return this.runAdapter((i)=>i.map(r))}async runEmpty(){return await this.#t()}async runPaginatedAdapter(r){return this.runAdapter((i)=>G.parsePaginatedAdapter(i,r))}async runData(){return await this.#t()}async runDataKey(r){let{data:i,response:n}=await this.#t();return new Q(i[r],n)}async runStatusCode(){return(await this.#t()).statusCode}async#u(){let r=this.path;if(this.query!==null)r+=`?${this.query.build()}`;return await fetch(this.client.baseUrl+r,this.options)}async#t(){return await this.#u().then((r)=>K.#f(r,this.client.dataField))}static async#f(r,i){if(r.status===204)return new Q(null,r);if(r.headers.has("content-type")&&r.headers.get("content-type").startsWith("application/json")){let m=await r.json();if("code"in m&&"error"in m&&"error_description"in m){if("errors"in m)throw G.parseValidationError(m);throw G.parseRequestError(m,r.status)}if(i&&"data"in m)return new Q(m.data,r);return new Q(m,r)}if(r.status===401||r.status===403)return new Q(null,r);if((await r.text()).length===0&&r.status>=200&&r.status<300)return new Q(null,r);throw new w(-1,"not_a_json_response","The response was not a JSON response.",r.status)}}class Lr{request(r,i){return new K(r,i)}}class ur{#r;constructor(){this.#r=new URLSearchParams}build(){return this.#r.toString()}append(r,i){return this.#i(this.#r.append.bind(this.#r),r,i)}appendArray(r,i){if(i===void 0||i===null)return this;return i.forEach((n)=>this.append(r,n)),this}delete(r){return this.#r.delete(r),this}get(r){return this.#r.get(r)}getAll(r){return this.#r.getAll(r)}has(r){return this.#r.has(r)}set(r,i){return this.#i(this.#r.set.bind(this.#r),r,i)}#i(r,i,n){if(!n&&n!==!1)return this;switch(typeof n){case"boolean":r(i,n?"true":"false");break;case"number":r(i,n.toString(10));break;case"string":r(i,n);break}return this}static builder(){return new ur}}function jr(r){return r instanceof w}function yr(r){if(r instanceof w)r=r.statusCode;return r===403||r===401}function kr(r){return r instanceof H}export{Hr as serialize,$ as markDtoDirty,k as markDtoClean,kr as isValidationError,yr as isUnsanctionedRequest,jr as isRequestError,W as isDtoDirty,cr as isDtoClean,t as isDto,pr as executeIfDtoDirtyAndMarkClean,F as dto,Fr as deserialize,Wr as debounce,or as cloneDto,Zr as bound,l as assertDto,e as adapter,H as ValidationError,w as RequestError,K as RequestBuilder,ur as QueryString,X as Paginated,L as HttpClient,G as HttpAdapter,O as BlobResponse,Lr as BaseService,Q as BaseResponse};
1
+ var Q=function(r,i,n,m){var u=arguments.length,f=u<3?i:m===null?m=Object.getOwnPropertyDescriptor(i,n):m,p;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")f=Reflect.decorate(r,i,n,m);else for(var x=r.length-1;x>=0;x--)if(p=r[x])f=(u<3?p(f):u>3?p(i,n,f):p(i,n))||f;return u>3&&f&&Object.defineProperty(i,n,f),f};import{DateTime as jr}from"luxon";function P(r){return class extends r{constructor(...i){throw new Error("@adapter: cannot create instance of class.")}}}function Br(){return(r,i)=>{r[i]=r[i].bind(r)}}import{debounce as zr}from"@basmilius/utils";function Cr(r){return(i,n,m)=>{m.value=zr(m.value,r,i)}}import{getPrototypeChain as Nr,setObjectMethod as Ur,setObjectValue as ur}from"@basmilius/utils";var Jr=!1,g=!1,e=!1,Or=!1,Xr=!1,fr=!1,Ir=!1;var _=Symbol(),U=Symbol(),h=Symbol(),S=Symbol(),o=Symbol(),c=Symbol(),s=Symbol(),M=Symbol(),Z=Symbol(),j=Symbol(),y=Symbol();function t(r){return r&&typeof r==="object"&&!!r[o]}function k(r,i){if(!t(r)||!t(i))return r===i;return JSON.stringify(r)===JSON.stringify(i)}function l(r){if(!t(r))throw new Error("@dto assert given object is not a class decorated with @Dto.")}var or=Symbol();function W(r,i=0,n){return function(...m){let u=or in r,f=r[or]??=new WeakMap,p=m[i],x=n!==void 0?m[n]:"self";if(typeof p!=="object")return r.call(this,...m);if(!f.has(p))f.set(p,[]);if(f.get(p).includes(x)){Jr&&console.log("%c@dto %ccircular protect %cdetected a circular reference","color: #0891b2","color: #059669","color: #1d4ed8",{fn:r,primary:p,secondary:x});return}f.get(p).push(x);let R=r.call(this,...m);return!u&&delete r[or],R}}function pr(r){return l(r),r.clone()}function $(r){return l(r),r[S]}var _r=W(function(r,i,n,m){let u=r[y];u(r,i,n,m),e&&console.log(`%c@dto %c${r[o]} %ctrigger`,"color: #0891b2","color: #059669","color: #1d4ed8",i,{dto:r,value:n,oldValue:m}),r[c]&&_r(r[c],r[s],r[c][r[s]])},0,1),F=_r;var Mr=W(function(r){if(l(r),r[S])r[S]=!1,g&&console.log(`%c@dto %c${r[o]} %cdirty`,"color: #0891b2","color: #059669","color: #1d4ed8","marked clean",{obj:r}),F(r,S,!1,!0);if(!r[U]||r[U].length===0)return;r[U].filter($).forEach(Mr)}),v=Mr;async function sr(r,i){if(!t(r)||!$(r))return;await i(r),v(r)}function a(r){return r?.value??r}function cr(r){return l(r),!r[S]}var Dr=W(function(r,i){if(l(r),!r[S])r[S]=!0,g&&console.log(`%c@dto %c${r[o]} %cdirty`,"color: #0891b2","color: #059669","color: #1d4ed8","marked dirty",{obj:r,key:i}),F(r,S,!0,!1);if(!r[c])return;Dr(r[c],r[s])}),B=Dr;function rr(r,i,n){i[U]??=[],!i[U].includes(r)&&i[U].push(r),r[c]!==i&&(r[c]=i),r[s]!==n&&(r[s]=n)}function T(r,i,n){if(t(n))rr(n,r,i);else if(Array.isArray(n)){if(n.some(t))n.filter(t).forEach((m)=>rr(m,r,i));n[c]=r,n[s]=i}}function D(r,i){let n=r[j];n(r,i),e&&console.log(`%c@dto %c${r[o]} %ctrack`,"color: #0891b2","color: #059669","color: #1d4ed8",i,{dto:r})}function ir(r,i){if(U in i){let n=i[U].indexOf(r);i[U].splice(n,1)}r[c]=void 0,r[s]=void 0}function nr(r,i){if(t(i))ir(i,r);else if(Array.isArray(i)){if(i.some(t))i.filter(t).forEach((n)=>ir(n,r));i[c]=void 0,i[s]=void 0}}var C={};import{customRef as Yr,markRaw as dr}from"vue";var mr={deleteProperty(r,i){if(Reflect.deleteProperty(r,i),lr(r,i))return!0;let n=r[c];return n&&F(n,r[s],n[r[s]]),n&&B(n,r[s]),!0},get(r,i,n){if(i===Z)return!0;if(lr(r,i))return Reflect.get(r,i,n);let m=r[c];return m&&D(m,r[s]),Reflect.get(r,i)},set(r,i,n,m){if(lr(r,i))return Reflect.set(r,i,n,m);let u=r[c];return u&&F(u,r[s],u[r[s]]),u&&B(u,r[s]),Reflect.set(r,i,n)}};function lr(r,i){return typeof i==="symbol"||typeof r[i]==="function"||i==="length"}var Kr={get(r,i,n){if(i===Z)return!0;if(typeof i==="symbol")return Reflect.get(r,i,n);let m=r[h][i];if(!m||!m.get)return Reflect.get(r,i,n);let u=m.get.call(r);return Or&&console.log(`%c@dto %c${r[o]} %cget`,"color: #0891b2","color: #059669","color: #1d4ed8",i),D(r,i),T(r,i,u),u},getOwnPropertyDescriptor(r,i){return r[h][i]},ownKeys(r){return r[M]},set(r,i,n,m){if(typeof i==="symbol")return Reflect.set(r,i,n,m);let u=r[h][i];if(!u||!u.set)return Reflect.set(r,i,n,m);let f=u.get?.call(r)??void 0;if(k(n,f))return!0;if(nr(r,f),Array.isArray(n)&&!n[Z])n=new Proxy(n,mr);return Xr&&console.log(`%c@dto %c${r[o]} %cset`,"color: #0891b2","color: #059669","color: #1d4ed8",i,{value:n}),u.set.call(r,n),T(r,i,n),B(r,i),F(r,i,n,f),!0}};var Tr={get(r,i,n){if(i==="__v_isRef")return!1;if(i===Z)return!0;if(i in r)return Reflect.get(r,i,n);return Reflect.get(r.value,i)},getOwnPropertyDescriptor(r,i){return Reflect.getOwnPropertyDescriptor(r.value,i)},ownKeys(r){return Reflect.ownKeys(r.value)},set(r,i,n,m){if(i in r)return Reflect.set(r,i,n,m);return Reflect.set(r.value,i,n)}};var Ar={construct(r,i,n){i=i.map((u)=>{if(!Array.isArray(u))return u;return new Proxy(u,mr)});let m=Yr((u,f)=>{let p=dr(Reflect.construct(r,i,n));p[_]=i,p[S]=!1,p[j]=u,p[y]=f;let x=new Proxy(p,Kr);return{get:()=>{return u(),x},set:()=>{return}}});return new Proxy(m,Tr)}};function xr(){let r=this;l(r);let n=new C[r[o]](...r[_]);return Object.entries(this[h]).filter(([,m])=>!!m.set).map(([m])=>m).forEach((m)=>n[m]=t(this[m])?this[m].clone():this[m]),n}function Sr(r){for(let i in r){let n=this[h][i];if(t(this[i])&&typeof r[i]==="object")this[i].fill(r[i]);else if(n&&n.set)this[i]=r[i]}}function wr(){return Object.fromEntries(this[M].map((r)=>{let i=Reflect.get.call(this,this,r,this);if(t(i))i=i.toJSON();return[r,i]}))}function G(r){Er(r);let i=Object.freeze(Nr(r)),n=Object.keys(i);return ur(r.prototype,h,i),ur(r.prototype,o,r.name),ur(r.prototype,M,n),ur(r,Symbol.hasInstance,(m)=>typeof m==="object"&&m?.[o]===r.name),Ur(r,"clone",xr),Ur(r,"fill",Sr),Ur(r,"toJSON",wr),br(r)}function br(r){let i=new Proxy(r,Ar);return C[r.name]=i,i}function Er(r){let i=Object.getPrototypeOf(r.prototype);if(o in i)throw new Error(`⛔️ @dto ${r.name} cannot extend parent class which is also decorated with @dto ${i[o]}.`)}if(Ir){let r=console.error.bind(console),i=console.info.bind(console),n=console.log.bind(console),m=console.warn.bind(console),u=(f)=>(...p)=>{for(let x=p.length-1;x>=0;--x){let R=p[x];if(!t(R))continue;let $r=a(R);p.splice(x,1,`\uD83D\uDCE6 ${$r[o]}`,$r.toJSON())}return f(...p)};console.error=u(r),console.info=u(i),console.log=u(n),console.warn=u(m)}function A(r){return r.map(J)}import{DateTime as Rr}from"luxon";function qr([,r]){return Rr.fromISO(r)}function z(r){return Object.fromEntries(Object.entries(r).map(([i,n])=>[i,J(n)]).filter(([,i])=>i!==void 0))}var Qr={};function hr([,r,i,n,m]){if(!(i in C))throw new Error(`Cannot restore @dto. Dto ${i} was not found.`);if(r in Qr)return Qr[r];fr&&console.group("⭐️",i,r);let f=new C[i](...A(m));return f.fill(z(n)),fr&&console.groupEnd(),Qr[r]=f,f}function Fr(r){return Array.isArray(r)&&r[0]===3058}function Gr(r){return Array.isArray(r)&&r[0]===3057}function J(r){switch(!0){case r===null:return null;case Array.isArray(r):switch(!0){case Fr(r):return qr(r);case Gr(r):return hr(r);default:return A(r)}case typeof r==="object":return z(r);default:return r}}function Hr(r){return J(JSON.parse(r))}import{DateTime as er}from"luxon";import{DateTime as gr}from"luxon";function Y(r){return[3058,r.toISO({extendedZone:!0,includeOffset:!0})]}import{toRaw as Pr}from"vue";function d(r){return Object.fromEntries(Object.entries(r).map(([i,n])=>[i,O(n)]).filter(([,i])=>i!==void 0))}function Lr(){return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,(r)=>(+r^crypto.getRandomValues(new Uint8Array(1))[0]&15>>+r/4).toString(16))}function N(r){r=Pr(r);let i=r.toJSON();return[3057,Lr(),r[o],d(i),b(r[_])]}function b(r){switch(!0){case r.every(t):return r.map(N);case r.every(gr.isDateTime):return r.map(Y);default:return r.map(O)}}function O(r){switch(!0){case r===null:return null;case Array.isArray(r):return b(r);case t(r):return N(r);case er.isDateTime(r):return Y(r);case typeof r==="object":return d(r);case typeof r==="boolean":case typeof r==="number":case typeof r==="string":return r;default:return}}function Vr(r){return JSON.stringify(O(r))}class X{get blob(){return this.#r}get name(){return this.#i}#r;#i;constructor(r,i){this.#r=r,this.#i=i}}X=Q([G],X);class I{get items(){return this.#r}get page(){return this.#i}get pageSize(){return this.#m}get pages(){return this.#n}get total(){return this.#u}#r;#i;#m;#n;#u;constructor(r,i,n,m,u){this.#r=r,this.#i=i,this.#m=n,this.#n=m,this.#u=u}}I=Q([G],I);class w{get code(){return this.#r}get error(){return this.#i}get errorDescription(){return this.#m}get statusCode(){return this.#n}#r;#i;#m;#n;constructor(r,i,n,m){this.#r=r,this.#i=i,this.#m=n,this.#n=m}}w=Q([G],w);class L{get code(){return this.#r}get error(){return this.#i}get errorDescription(){return this.#m}get errors(){return this.#n}get params(){return this.#u}#r;#i;#m;#n;#u;constructor(r,i,n,m,u){this.#r=r,this.#i=i,this.#m=n,this.#n=m,this.#u=u}}L=Q([G],L);class H{static parsePaginatedAdapter(r,i){return new I(r.items.map(i),r.page,r.page_size,r.pages,r.total)}static parseFileNameFromContentDispositionHeader(r){let i=`download-${jr.now().toFormat("yyyy-MM-dd HH-mm-ss")}`;if(!r.startsWith("attachment"))return i;let m=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/.exec(r);if((m?.length||0)<2)return i;return m[1].replaceAll("'","").replaceAll('"',"").replaceAll("/","-").replaceAll(":","-")}static parseRequestError(r,i){return new w(r.code,r.error,r.error_description,i)}static parseValidationError(r){let i;if(r.errors)i={},Object.entries(r.errors).forEach(([n,m])=>{i[n]=H.parseValidationError(m)});return new L(r.code,r.error,r.error_description,i,r.params)}}H=Q([P],H);class q{get data(){return this.#r}get headers(){return this.#i.headers}get ok(){return this.statusCode>=200&&this.statusCode<300}get response(){return this.#i}get statusCode(){return this.#i.status}#r;#i;constructor(r,i){this.#r=r,this.#i=i}}import{DateTime as yr}from"luxon";class V{get authToken(){return this.#r}set authToken(r){this.#r=r}get baseUrl(){return this.#i}get dataField(){return this.#m}#r;#i;#m;constructor(r,i,n=!1){this.#r=r,this.#i=i,this.#m=n}static get instance(){if(V.#n===null)throw new Error("There is currently no HttpClient instance registered. Register one using the HttpClient.register() function.");return V.#n}static#n=null;static register(r){V.#n=r}}class E extends Error{}var Zr={};class K{get client(){return this.#r}get options(){return this.#n}get path(){return this.#m}set path(r){this.#m=r}get query(){return this.#u}set query(r){this.#u=r}#r;#i=null;#m;#n={};#u=null;constructor(r,i){this.#r=i??V.instance,this.#n.cache="no-cache",this.#n.method="GET",this.#m=r}autoCancel(r){return this.#i=r,this}bearerToken(r){if(r=r??this.#r.authToken,r)return this.header("Authorization",`Bearer ${r}`);if(this.#n.headers&&"Authorization"in this.#n.headers)delete this.#n.headers.Authorization;return this}body(r,i="application/octet-stream"){if(r instanceof FormData)i=null;else if(Array.isArray(r)||typeof r==="object")r=JSON.stringify(r),i="application/json";if(this.#n.body=r,i!==null)return this.header("Content-Type",i);return this}header(r,i){return this.#n.headers=this.#n.headers||{},this.#n.headers[r]=i,this}method(r){return this.#n.method=r.toUpperCase(),this}queryString(r){return this.#u=r,this}signal(r=null){return this.#n.signal=r,this}async fetch(){return this.#f().then((r)=>r.json())}async fetchBlob(){let r=await this.#f();if(r.status!==200){let n=await r.json();if("code"in n&&"error"in n&&"error_description"in n)throw new w(n.code,n.error,n.error_description,r.status);throw new w(-1,"failed_without_info","Request failed without any information from the backend.",r.status)}let i=r.headers.has("content-disposition")?H.parseFileNameFromContentDispositionHeader(r.headers.get("content-disposition")):`download-${yr.now().toFormat("yyyy-MM-dd HH-mm-ss")}`;return new X(await r.blob(),i)}async run(){let{data:r,response:i}=await this.#t();return new q(r,i)}async runAdapter(r){let{data:i,response:n}=await this.#t();return new q(r(i),n)}async runArrayAdapter(r){return this.runAdapter((i)=>i.map(r))}async runEmpty(){return await this.#t()}async runPaginatedAdapter(r){return this.runAdapter((i)=>H.parsePaginatedAdapter(i,r))}async runData(){return await this.#t()}async runDataKey(r){let{data:i,response:n}=await this.#t();return new q(i[r],n)}async runStatusCode(){return(await this.#t()).statusCode}async#f(){if(this.#i!==null){if(this.#i in Zr)Zr[this.#i].abort(new E);let i=new AbortController;Zr[this.#i]=i,this.signal(i.signal)}let r=this.path;if(this.query!==null)r+=`?${this.query.build()}`;return await fetch(this.client.baseUrl+r,this.options)}async#t(){return await this.#f().then((r)=>K.#o(r,this.client.dataField))}static async#o(r,i){if(r.status===204)return new q(null,r);if(r.headers.has("content-type")&&r.headers.get("content-type").startsWith("application/json")){let m=await r.json();if("code"in m&&"error"in m&&"error_description"in m){if("errors"in m)throw H.parseValidationError(m);throw H.parseRequestError(m,r.status)}if(i&&"data"in m)return new q(m.data,r);return new q(m,r)}if(r.status===401||r.status===403)return new q(null,r);if((await r.text()).length===0&&r.status>=200&&r.status<300)return new q(null,r);throw new w(-1,"not_a_json_response","The response was not a JSON response.",r.status)}}class Wr{request(r,i){return new K(r,i)}}class tr{#r;constructor(){this.#r=new URLSearchParams}build(){return this.#r.toString()}append(r,i){return this.#i(this.#r.append.bind(this.#r),r,i)}appendArray(r,i){if(i===void 0||i===null)return this;return i.forEach((n)=>this.append(r,n)),this}delete(r){return this.#r.delete(r),this}get(r){return this.#r.get(r)}getAll(r){return this.#r.getAll(r)}has(r){return this.#r.has(r)}set(r,i){return this.#i(this.#r.set.bind(this.#r),r,i)}#i(r,i,n){if(!n&&n!==!1)return this;switch(typeof n){case"boolean":r(i,n?"true":"false");break;case"number":r(i,n.toString(10));break;case"string":r(i,n);break}return this}static builder(){return new tr}}function kr(r){return r instanceof E}function vr(r){return r instanceof w}function ar(r){if(r instanceof w)r=r.statusCode;return r===403||r===401}function ri(r){return r instanceof L}export{Vr as serialize,B as markDtoDirty,v as markDtoClean,ri as isValidationError,ar as isUnsanctionedRequest,vr as isRequestError,kr as isRequestAborted,$ as isDtoDirty,cr as isDtoClean,t as isDto,sr as executeIfDtoDirtyAndMarkClean,G as dto,Hr as deserialize,Cr as debounce,pr as cloneDto,Br as bound,l as assertDto,P as adapter,L as ValidationError,w as RequestError,K as RequestBuilder,E as RequestAbortedError,tr as QueryString,I as Paginated,V as HttpClient,H as HttpAdapter,X as BlobResponse,Wr as BaseService,q as BaseResponse};
2
2
 
3
- //# debugId=DE157B262E616B3464756E2164756E21
3
+ //# debugId=839E19BEE00A9E8364756E2164756E21
4
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/adapter/HttpAdapter.ts", "../src/decorator/adapter.ts", "../src/decorator/bound.ts", "../src/decorator/debounce.ts", "../src/decorator/dto/index.ts", "../src/decorator/dto/constant.ts", "../src/decorator/dto/symbols.ts", "../src/decorator/dto/helper/isDto.ts", "../src/decorator/dto/helper/areEqual.ts", "../src/decorator/dto/helper/assertDto.ts", "../src/decorator/dto/helper/circularProtect.ts", "../src/decorator/dto/helper/cloneDto.ts", "../src/decorator/dto/helper/isDtoDirty.ts", "../src/decorator/dto/helper/triggerDto.ts", "../src/decorator/dto/helper/markDtoClean.ts", "../src/decorator/dto/helper/executeIfDtoDirtyAndMarkClean.ts", "../src/decorator/dto/helper/instance.ts", "../src/decorator/dto/helper/isDtoClean.ts", "../src/decorator/dto/helper/markDtoDirty.ts", "../src/decorator/dto/helper/relateDtoTo.ts", "../src/decorator/dto/helper/relateValueTo.ts", "../src/decorator/dto/helper/trackDto.ts", "../src/decorator/dto/helper/unrelateDtoFrom.ts", "../src/decorator/dto/helper/unrelateValueFrom.ts", "../src/decorator/dto/map.ts", "../src/decorator/dto/classProxy.ts", "../src/decorator/dto/arrayProxy.ts", "../src/decorator/dto/instanceProxy.ts", "../src/decorator/dto/refProxy.ts", "../src/decorator/dto/clone.ts", "../src/decorator/dto/fill.ts", "../src/decorator/dto/toJSON.ts", "../src/decorator/dto/serialize/deserializeArray.ts", "../src/decorator/dto/serialize/deserializeDateTime.ts", "../src/decorator/dto/serialize/deserializeObject.ts", "../src/decorator/dto/serialize/deserializeDto.ts", "../src/decorator/dto/serialize/isSerializedDateTime.ts", "../src/decorator/dto/serialize/isSerializedDto.ts", "../src/decorator/dto/serialize/deserializeUnknown.ts", "../src/decorator/dto/serialize/deserialize.ts", "../src/decorator/dto/serialize/serializeUnknown.ts", "../src/decorator/dto/serialize/serializeArray.ts", "../src/decorator/dto/serialize/serializeDateTime.ts", "../src/decorator/dto/serialize/serializeDto.ts", "../src/decorator/dto/serialize/serializeObject.ts", "../src/decorator/dto/serialize/uuid.ts", "../src/decorator/dto/serialize/serialize.ts", "../src/dto/BlobResponse.ts", "../src/dto/Paginated.ts", "../src/dto/RequestError.ts", "../src/dto/ValidationError.ts", "../src/http/BaseResponse.ts", "../src/http/RequestBuilder.ts", "../src/http/HttpClient.ts", "../src/http/BaseService.ts", "../src/http/QueryString.ts", "../src/http/helpers.ts"],
3
+ "sources": ["../src/adapter/HttpAdapter.ts", "../src/decorator/adapter.ts", "../src/decorator/bound.ts", "../src/decorator/debounce.ts", "../src/decorator/dto/index.ts", "../src/decorator/dto/constant.ts", "../src/decorator/dto/symbols.ts", "../src/decorator/dto/helper/isDto.ts", "../src/decorator/dto/helper/areEqual.ts", "../src/decorator/dto/helper/assertDto.ts", "../src/decorator/dto/helper/circularProtect.ts", "../src/decorator/dto/helper/cloneDto.ts", "../src/decorator/dto/helper/isDtoDirty.ts", "../src/decorator/dto/helper/triggerDto.ts", "../src/decorator/dto/helper/markDtoClean.ts", "../src/decorator/dto/helper/executeIfDtoDirtyAndMarkClean.ts", "../src/decorator/dto/helper/instance.ts", "../src/decorator/dto/helper/isDtoClean.ts", "../src/decorator/dto/helper/markDtoDirty.ts", "../src/decorator/dto/helper/relateDtoTo.ts", "../src/decorator/dto/helper/relateValueTo.ts", "../src/decorator/dto/helper/trackDto.ts", "../src/decorator/dto/helper/unrelateDtoFrom.ts", "../src/decorator/dto/helper/unrelateValueFrom.ts", "../src/decorator/dto/map.ts", "../src/decorator/dto/classProxy.ts", "../src/decorator/dto/arrayProxy.ts", "../src/decorator/dto/instanceProxy.ts", "../src/decorator/dto/refProxy.ts", "../src/decorator/dto/clone.ts", "../src/decorator/dto/fill.ts", "../src/decorator/dto/toJSON.ts", "../src/decorator/dto/serialize/deserializeArray.ts", "../src/decorator/dto/serialize/deserializeDateTime.ts", "../src/decorator/dto/serialize/deserializeObject.ts", "../src/decorator/dto/serialize/deserializeDto.ts", "../src/decorator/dto/serialize/isSerializedDateTime.ts", "../src/decorator/dto/serialize/isSerializedDto.ts", "../src/decorator/dto/serialize/deserializeUnknown.ts", "../src/decorator/dto/serialize/deserialize.ts", "../src/decorator/dto/serialize/serializeUnknown.ts", "../src/decorator/dto/serialize/serializeArray.ts", "../src/decorator/dto/serialize/serializeDateTime.ts", "../src/decorator/dto/serialize/serializeDto.ts", "../src/decorator/dto/serialize/serializeObject.ts", "../src/decorator/dto/serialize/uuid.ts", "../src/decorator/dto/serialize/serialize.ts", "../src/dto/BlobResponse.ts", "../src/dto/Paginated.ts", "../src/dto/RequestError.ts", "../src/dto/ValidationError.ts", "../src/http/BaseResponse.ts", "../src/http/RequestBuilder.ts", "../src/http/HttpClient.ts", "../src/http/RequestAbortedError.ts", "../src/http/BaseService.ts", "../src/http/QueryString.ts", "../src/http/helpers.ts"],
4
4
  "sourcesContent": [
5
5
  "import { DateTime } from 'luxon';\nimport { adapter } from '../decorator';\nimport { Paginated, RequestError, ValidationError } from '../dto';\nimport type { HttpStatusCode } from '../type';\n\n@adapter\nexport class HttpAdapter {\n public static parsePaginatedAdapter<T>(response: object, adapterMethod: (item: object) => T): Paginated<T> {\n return new Paginated<T>(\n response['items'].map(adapterMethod),\n response['page'],\n response['page_size'],\n response['pages'],\n response['total']\n );\n }\n\n public static parseFileNameFromContentDispositionHeader(header: string): string {\n const defaultFilename = `download-${DateTime.now().toFormat('yyyy-MM-dd HH-mm-ss')}`;\n\n if (!header.startsWith('attachment')) {\n return defaultFilename;\n }\n\n const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n const matches = filenameRegex.exec(header);\n\n if ((matches?.length || 0) < 2) {\n return defaultFilename;\n }\n\n return matches[1]\n .replaceAll('\\'', '')\n .replaceAll('\\\"', '')\n .replaceAll('\\/', '-')\n .replaceAll('\\:', '-');\n }\n\n public static parseRequestError(response: object, statusCode: HttpStatusCode): RequestError {\n return new RequestError(\n response['code'],\n response['error'],\n response['error_description'],\n statusCode\n );\n }\n\n public static parseValidationError(response: object): ValidationError {\n let errors: Record<string, ValidationError>;\n\n if (response['errors']) {\n errors = {};\n\n Object.entries(response['errors']).forEach(([key, value]) => {\n errors[key] = HttpAdapter.parseValidationError(value as object);\n });\n }\n\n return new ValidationError(\n response['code'],\n response['error'],\n response['error_description'],\n errors,\n response['params']\n );\n }\n}\n",
6
6
  "import type { Constructor } from '@basmilius/utils';\n\nexport default function <T extends Constructor>(Parent: T): T {\n return class extends Parent {\n // @ts-ignore\n constructor(...args: any[]) {\n throw new Error('@adapter: cannot create instance of class.');\n }\n } as T;\n}\n",
@@ -54,13 +54,14 @@
54
54
  "import { dto } from '../decorator';\nimport type { HttpStatusCode } from '../type';\n\n@dto\nexport default class RequestError {\n get code(): number {\n return this.#code;\n }\n\n get error(): string {\n return this.#error;\n }\n\n get errorDescription(): string {\n return this.#errorDescription;\n }\n\n get statusCode(): HttpStatusCode {\n return this.#statusCode;\n }\n\n readonly #code: number;\n readonly #error: string;\n readonly #errorDescription: string;\n readonly #statusCode: HttpStatusCode;\n\n constructor(code: number, error: string, errorDescription: string, statusCode: HttpStatusCode) {\n this.#code = code;\n this.#error = error;\n this.#errorDescription = errorDescription;\n this.#statusCode = statusCode;\n }\n}\n",
55
55
  "import { dto } from '../decorator';\n\n@dto\nexport default class ValidationError {\n get code(): number {\n return this.#code;\n }\n\n get error(): string {\n return this.#error;\n }\n\n get errorDescription(): string {\n return this.#errorDescription;\n }\n\n get errors(): Record<string, ValidationError> {\n return this.#errors;\n }\n\n get params(): Record<string, string | number | boolean> {\n return this.#params;\n }\n\n readonly #code: number;\n readonly #error: string;\n readonly #errorDescription: string;\n readonly #errors: Record<string, ValidationError>;\n readonly #params: Record<string, string | number | boolean>;\n\n constructor(code: number, error: string, errorDescription: string, errors?: Record<string, ValidationError>, params?: Record<string, string | number | boolean>) {\n this.#code = code;\n this.#error = error;\n this.#errorDescription = errorDescription;\n this.#errors = errors;\n this.#params = params;\n }\n}\n",
56
56
  "import type { HttpStatusCode } from '../type';\n\nexport default class BaseResponse<T> {\n get data(): T {\n return this.#data;\n }\n\n get headers(): Headers {\n return this.#response.headers;\n }\n\n get ok(): boolean {\n return this.statusCode >= 200 && this.statusCode < 300;\n }\n\n get response(): Response {\n return this.#response;\n }\n\n get statusCode(): HttpStatusCode {\n return this.#response.status as HttpStatusCode;\n }\n\n readonly #data: T;\n readonly #response: Response;\n\n constructor(data: T, response: Response) {\n this.#data = data;\n this.#response = response;\n }\n}\n",
57
- "import { DateTime } from 'luxon';\nimport { HttpAdapter } from '../adapter';\nimport { BlobResponse, Paginated, RequestError } from '../dto';\nimport type { HttpMethod, HttpStatusCode } from '../type';\nimport BaseResponse from './BaseResponse';\nimport HttpClient from './HttpClient';\nimport type QueryString from './QueryString';\n\nexport default class RequestBuilder {\n get client(): HttpClient {\n return this.#client;\n }\n\n get options(): RequestInit {\n return this.#options;\n }\n\n get path(): string {\n return this.#path;\n }\n\n set path(value: string) {\n this.#path = value;\n }\n\n get query(): QueryString | null {\n return this.#query;\n }\n\n set query(value: QueryString | null) {\n this.#query = value;\n }\n\n readonly #client: HttpClient;\n #path: string;\n #options: RequestInit = {};\n #query: QueryString | null = null;\n\n constructor(path: string, client?: HttpClient) {\n this.#client = client ?? HttpClient.instance;\n this.#options.cache = 'no-cache';\n this.#options.method = 'GET';\n this.#path = path;\n }\n\n public bearerToken(token?: string): RequestBuilder {\n token = token ?? this.#client.authToken;\n\n if (token) {\n return this.header('Authorization', `Bearer ${token}`);\n }\n\n if (this.#options.headers && 'Authorization' in this.#options.headers) {\n delete this.#options.headers['Authorization'];\n }\n\n return this;\n }\n\n public body(body: BodyInit | FormData | object | null, contentType: string | null = 'application/octet-stream'): RequestBuilder {\n if (body instanceof FormData) {\n // note: this allows browsers to set formdata with their custom boundary.\n contentType = null;\n } else if (Array.isArray(body) || typeof body === 'object') {\n body = JSON.stringify(body);\n contentType = 'application/json';\n }\n\n this.#options.body = body;\n\n if (contentType !== null) {\n return this.header('Content-Type', contentType);\n }\n\n return this;\n }\n\n public header(name: string, value: string): RequestBuilder {\n this.#options.headers = this.#options.headers || {};\n this.#options.headers[name] = value;\n\n return this;\n }\n\n public method(method: HttpMethod): RequestBuilder {\n this.#options.method = method.toUpperCase();\n\n return this;\n }\n\n public queryString(queryString: QueryString): RequestBuilder {\n this.#query = queryString;\n\n return this;\n }\n\n public signal(signal: AbortSignal | null = null): RequestBuilder {\n this.#options.signal = signal;\n\n return this;\n }\n\n public async fetch<TResult>(): Promise<TResult> {\n return this.#execute()\n .then(r => r.json());\n }\n\n public async fetchBlob(): Promise<BlobResponse> {\n let response = await this.#execute();\n\n if (response.status !== 200) {\n const data = await response.json();\n\n if ('code' in data && 'error' in data && 'error_description' in data) {\n throw new RequestError(data.code, data.error, data.error_description, response.status as HttpStatusCode);\n }\n\n throw new RequestError(-1, 'failed_without_info', 'Request failed without any information from the backend.', response.status as HttpStatusCode);\n }\n\n let filename = response.headers.has('content-disposition')\n ? HttpAdapter.parseFileNameFromContentDispositionHeader(response.headers.get('content-disposition'))\n : `download-${DateTime.now().toFormat('yyyy-MM-dd HH-mm-ss')}`;\n\n return new BlobResponse(\n await response.blob(),\n filename\n );\n }\n\n public async run<TResult extends {}>(): Promise<BaseResponse<TResult>> {\n const {data, response} = await this.#executeSafe<TResult>();\n\n return new BaseResponse(data, response);\n }\n\n public async runAdapter<TResult extends {}>(adapterMethod: (item: object) => TResult): Promise<BaseResponse<TResult>> {\n const {data, response} = await this.#executeSafe<TResult>();\n\n return new BaseResponse(adapterMethod(data), response);\n }\n\n public async runArrayAdapter<TResult extends {}>(adapterMethod: (item: object) => TResult): Promise<BaseResponse<TResult[]>> {\n return this.runAdapter<TResult[]>((data: []) => data.map(adapterMethod));\n }\n\n public async runEmpty(): Promise<BaseResponse<never>> {\n return await this.#executeSafe<never>();\n }\n\n public async runPaginatedAdapter<TResult extends {}>(adapterMethod: (item: object) => TResult): Promise<BaseResponse<Paginated<TResult>>> {\n return this.runAdapter<Paginated<TResult>>(response => HttpAdapter.parsePaginatedAdapter(response, adapterMethod));\n }\n\n public async runData<TResult>(): Promise<BaseResponse<TResult>> {\n return await this.#executeSafe<TResult>();\n }\n\n public async runDataKey<TResult extends object, TKey extends keyof TResult = keyof TResult>(key: TKey): Promise<BaseResponse<TResult[TKey]>> {\n const {data, response} = await this.#executeSafe<TResult>();\n\n return new BaseResponse(data[key] as TResult[TKey], response);\n }\n\n public async runStatusCode(): Promise<HttpStatusCode> {\n const response = await this.#executeSafe<never>();\n\n return response.statusCode;\n }\n\n async #execute(): Promise<Response> {\n let path = this.path;\n\n if (this.query !== null) {\n path += `?${this.query.build()}`;\n }\n\n return await fetch(this.client.baseUrl + path, this.options);\n }\n\n async #executeSafe<TResult>(): Promise<BaseResponse<TResult>> {\n return await this\n .#execute()\n .then(response => RequestBuilder.#handleResponse<TResult>(response, this.client.dataField));\n }\n\n static async #handleResponse<TResult>(response: Response, dataField: boolean): Promise<BaseResponse<TResult | null>> {\n if (response.status === 204) {\n return new BaseResponse(null, response);\n }\n\n if (response.headers.has('content-type') && response.headers.get('content-type').startsWith('application/json')) {\n const data = await response.json();\n\n if ('code' in data && 'error' in data && 'error_description' in data) {\n if ('errors' in data) {\n throw HttpAdapter.parseValidationError(data);\n }\n\n throw HttpAdapter.parseRequestError(data, response.status as HttpStatusCode);\n }\n\n if (dataField && 'data' in data) {\n return new BaseResponse(data.data as TResult, response);\n }\n\n return new BaseResponse(data, response);\n }\n\n if (response.status === 401 || response.status === 403) {\n return new BaseResponse(null, response);\n }\n\n const data = await response.text();\n\n if (data.length === 0 && response.status >= 200 && response.status < 300) {\n return new BaseResponse(null, response);\n }\n\n throw new RequestError(-1, 'not_a_json_response', 'The response was not a JSON response.', response.status as HttpStatusCode);\n }\n}\n",
57
+ "import { DateTime } from 'luxon';\nimport { HttpAdapter } from '../adapter';\nimport { BlobResponse, Paginated, RequestError } from '../dto';\nimport type { HttpMethod, HttpStatusCode } from '../type';\nimport BaseResponse from './BaseResponse';\nimport HttpClient from './HttpClient';\nimport type QueryString from './QueryString';\nimport RequestAbortedError from './RequestAbortedError';\n\nconst abortControllers: Record<symbol, AbortController> = {};\n\nexport default class RequestBuilder {\n get client(): HttpClient {\n return this.#client;\n }\n\n get options(): RequestInit {\n return this.#options;\n }\n\n get path(): string {\n return this.#path;\n }\n\n set path(value: string) {\n this.#path = value;\n }\n\n get query(): QueryString | null {\n return this.#query;\n }\n\n set query(value: QueryString | null) {\n this.#query = value;\n }\n\n readonly #client: HttpClient;\n #autoCancelIdentifier: symbol | null = null;\n #path: string;\n #options: RequestInit = {};\n #query: QueryString | null = null;\n\n constructor(path: string, client?: HttpClient) {\n this.#client = client ?? HttpClient.instance;\n this.#options.cache = 'no-cache';\n this.#options.method = 'GET';\n this.#path = path;\n }\n\n public autoCancel(identifier: symbol): RequestBuilder {\n this.#autoCancelIdentifier = identifier;\n\n return this;\n }\n\n public bearerToken(token?: string): RequestBuilder {\n token = token ?? this.#client.authToken;\n\n if (token) {\n return this.header('Authorization', `Bearer ${token}`);\n }\n\n if (this.#options.headers && 'Authorization' in this.#options.headers) {\n delete this.#options.headers['Authorization'];\n }\n\n return this;\n }\n\n public body(body: BodyInit | FormData | object | null, contentType: string | null = 'application/octet-stream'): RequestBuilder {\n if (body instanceof FormData) {\n // note: this allows browsers to set formdata with their custom boundary.\n contentType = null;\n } else if (Array.isArray(body) || typeof body === 'object') {\n body = JSON.stringify(body);\n contentType = 'application/json';\n }\n\n this.#options.body = body;\n\n if (contentType !== null) {\n return this.header('Content-Type', contentType);\n }\n\n return this;\n }\n\n public header(name: string, value: string): RequestBuilder {\n this.#options.headers = this.#options.headers || {};\n this.#options.headers[name] = value;\n\n return this;\n }\n\n public method(method: HttpMethod): RequestBuilder {\n this.#options.method = method.toUpperCase();\n\n return this;\n }\n\n public queryString(queryString: QueryString): RequestBuilder {\n this.#query = queryString;\n\n return this;\n }\n\n public signal(signal: AbortSignal | null = null): RequestBuilder {\n this.#options.signal = signal;\n\n return this;\n }\n\n public async fetch<TResult>(): Promise<TResult> {\n return this.#execute()\n .then(r => r.json());\n }\n\n public async fetchBlob(): Promise<BlobResponse> {\n let response = await this.#execute();\n\n if (response.status !== 200) {\n const data = await response.json();\n\n if ('code' in data && 'error' in data && 'error_description' in data) {\n throw new RequestError(data.code, data.error, data.error_description, response.status as HttpStatusCode);\n }\n\n throw new RequestError(-1, 'failed_without_info', 'Request failed without any information from the backend.', response.status as HttpStatusCode);\n }\n\n let filename = response.headers.has('content-disposition')\n ? HttpAdapter.parseFileNameFromContentDispositionHeader(response.headers.get('content-disposition'))\n : `download-${DateTime.now().toFormat('yyyy-MM-dd HH-mm-ss')}`;\n\n return new BlobResponse(\n await response.blob(),\n filename\n );\n }\n\n public async run<TResult extends {}>(): Promise<BaseResponse<TResult>> {\n const {data, response} = await this.#executeSafe<TResult>();\n\n return new BaseResponse(data, response);\n }\n\n public async runAdapter<TResult extends {}>(adapterMethod: (item: object) => TResult): Promise<BaseResponse<TResult>> {\n const {data, response} = await this.#executeSafe<TResult>();\n\n return new BaseResponse(adapterMethod(data), response);\n }\n\n public async runArrayAdapter<TResult extends {}>(adapterMethod: (item: object) => TResult): Promise<BaseResponse<TResult[]>> {\n return this.runAdapter<TResult[]>((data: []) => data.map(adapterMethod));\n }\n\n public async runEmpty(): Promise<BaseResponse<never>> {\n return await this.#executeSafe<never>();\n }\n\n public async runPaginatedAdapter<TResult extends {}>(adapterMethod: (item: object) => TResult): Promise<BaseResponse<Paginated<TResult>>> {\n return this.runAdapter<Paginated<TResult>>(response => HttpAdapter.parsePaginatedAdapter(response, adapterMethod));\n }\n\n public async runData<TResult>(): Promise<BaseResponse<TResult>> {\n return await this.#executeSafe<TResult>();\n }\n\n public async runDataKey<TResult extends object, TKey extends keyof TResult = keyof TResult>(key: TKey): Promise<BaseResponse<TResult[TKey]>> {\n const {data, response} = await this.#executeSafe<TResult>();\n\n return new BaseResponse(data[key] as TResult[TKey], response);\n }\n\n public async runStatusCode(): Promise<HttpStatusCode> {\n const response = await this.#executeSafe<never>();\n\n return response.statusCode;\n }\n\n async #execute(): Promise<Response> {\n if (this.#autoCancelIdentifier !== null) {\n if (this.#autoCancelIdentifier in abortControllers) {\n abortControllers[this.#autoCancelIdentifier].abort(new RequestAbortedError());\n }\n\n const controller = new AbortController();\n abortControllers[this.#autoCancelIdentifier] = controller;\n\n this.signal(controller.signal);\n }\n\n let path = this.path;\n\n if (this.query !== null) {\n path += `?${this.query.build()}`;\n }\n\n return await fetch(this.client.baseUrl + path, this.options);\n }\n\n async #executeSafe<TResult>(): Promise<BaseResponse<TResult>> {\n return await this\n .#execute()\n .then(response => RequestBuilder.#handleResponse<TResult>(response, this.client.dataField));\n }\n\n static async #handleResponse<TResult>(response: Response, dataField: boolean): Promise<BaseResponse<TResult | null>> {\n if (response.status === 204) {\n return new BaseResponse(null, response);\n }\n\n if (response.headers.has('content-type') && response.headers.get('content-type').startsWith('application/json')) {\n const data = await response.json();\n\n if ('code' in data && 'error' in data && 'error_description' in data) {\n if ('errors' in data) {\n throw HttpAdapter.parseValidationError(data);\n }\n\n throw HttpAdapter.parseRequestError(data, response.status as HttpStatusCode);\n }\n\n if (dataField && 'data' in data) {\n return new BaseResponse(data.data as TResult, response);\n }\n\n return new BaseResponse(data, response);\n }\n\n if (response.status === 401 || response.status === 403) {\n return new BaseResponse(null, response);\n }\n\n const data = await response.text();\n\n if (data.length === 0 && response.status >= 200 && response.status < 300) {\n return new BaseResponse(null, response);\n }\n\n throw new RequestError(-1, 'not_a_json_response', 'The response was not a JSON response.', response.status as HttpStatusCode);\n }\n}\n",
58
58
  "export default class HttpClient {\n get authToken(): string | null {\n return this.#authToken;\n }\n\n set authToken(value: string | null) {\n this.#authToken = value;\n }\n\n get baseUrl(): string {\n return this.#baseUrl;\n }\n\n get dataField(): boolean {\n return this.#dataField;\n }\n\n #authToken: string | null;\n readonly #baseUrl: string;\n readonly #dataField: boolean;\n\n constructor(authToken: string | null, baseUrl: string, dataField: boolean = false) {\n this.#authToken = authToken;\n this.#baseUrl = baseUrl;\n this.#dataField = dataField;\n }\n\n static get instance(): HttpClient {\n if (HttpClient.#instance === null) {\n throw new Error('There is currently no HttpClient instance registered. Register one using the HttpClient.register() function.');\n }\n\n return HttpClient.#instance;\n }\n\n static #instance: HttpClient | null = null;\n\n static register(client: HttpClient): void {\n HttpClient.#instance = client;\n }\n}\n",
59
+ "export default class extends Error {}\n",
59
60
  "import HttpClient from './HttpClient';\nimport RequestBuilder from './RequestBuilder';\n\nexport default class BaseService {\n protected request(path: string, client?: HttpClient): RequestBuilder {\n return new RequestBuilder(path, client);\n }\n}\n",
60
61
  "export default class QueryString {\n readonly #builder: URLSearchParams;\n\n constructor() {\n this.#builder = new URLSearchParams();\n }\n\n public build(): string {\n return this.#builder.toString();\n }\n\n public append(name: string, value: QueryStringValue): QueryString {\n return this.#add(this.#builder.append.bind(this.#builder), name, value);\n }\n\n public appendArray(name: string, values: QueryStringValue[] | null): QueryString {\n if (values === undefined || values === null) {\n return this;\n }\n\n values.forEach(value => this.append(name, value));\n\n return this;\n }\n\n public delete(name: string): QueryString {\n this.#builder.delete(name);\n\n return this;\n }\n\n public get(name: string): string | null {\n return this.#builder.get(name);\n }\n\n public getAll(name: string): string[] {\n return this.#builder.getAll(name);\n }\n\n public has(name: string): boolean {\n return this.#builder.has(name);\n }\n\n public set(name: string, value: QueryStringValue): QueryString {\n return this.#add(this.#builder.set.bind(this.#builder), name, value);\n }\n\n #add(fn: ((name: string, value: string) => void), name: string, value: QueryStringValue): QueryString {\n if (!value && value !== false) {\n return this;\n }\n\n switch (typeof value) {\n case 'boolean':\n fn(name, value ? 'true' : 'false');\n break;\n\n case 'number':\n fn(name, value.toString(10));\n break;\n\n case 'string':\n fn(name, value);\n break;\n }\n\n return this;\n }\n\n public static builder(): QueryString {\n return new QueryString();\n }\n}\n\ntype QueryStringValue = boolean | number | string | null;\n",
61
- "import { RequestError, ValidationError } from '../dto';\n\nexport function isRequestError(obj: unknown): obj is RequestError {\n return obj instanceof RequestError;\n}\n\nexport function isUnsanctionedRequest(statusCode: unknown): boolean {\n if (statusCode instanceof RequestError) {\n statusCode = statusCode.statusCode;\n }\n\n return statusCode === 403 || statusCode === 401;\n}\n\nexport function isValidationError(obj: unknown): obj is ValidationError {\n return obj instanceof ValidationError;\n}\n"
62
+ "import { RequestError, ValidationError } from '../dto';\nimport RequestAbortedError from './RequestAbortedError';\n\nexport function isRequestAborted(obj: unknown): obj is RequestAbortedError {\n return obj instanceof RequestAbortedError;\n}\n\nexport function isRequestError(obj: unknown): obj is RequestError {\n return obj instanceof RequestError;\n}\n\nexport function isUnsanctionedRequest(statusCode: unknown): boolean {\n if (statusCode instanceof RequestError) {\n statusCode = statusCode.statusCode;\n }\n\n return statusCode === 403 || statusCode === 401;\n}\n\nexport function isValidationError(obj: unknown): obj is ValidationError {\n return obj instanceof ValidationError;\n}\n"
62
63
  ],
63
- "mappings": "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",
64
- "debugId": "DE157B262E616B3464756E2164756E21",
64
+ "mappings": "0UAAA,mBAAS,eCET,SAAO,CAAwC,CAAC,EAAc,CAC1D,OAAO,cAAc,CAAO,CAExB,WAAW,IAAI,EAAa,CACxB,MAAM,IAAI,MAAM,4CAA4C,EAEpE,ECRJ,SAAO,EAAiB,EAAG,CACvB,MAAO,CAAC,EAAgB,IAAyB,CAC7C,EAAO,GAAU,EAAO,GAAQ,KAAK,CAAM,GCFnD,mBAAS,0BAET,SAAO,EAAiB,CAAC,EAAkB,CACvC,MAAO,CAAC,EAAgB,EAAW,IAAmC,CAClE,EAAW,MAAQ,GAAS,EAAW,MAAO,EAAU,CAAM,GCJtE,4BAA2B,sBAAmB,qBAAiB,0BCAxD,IAAM,GAA0B,GAC1B,EAAuB,GACvB,EAA0B,GAC1B,GAAqB,GACrB,GAAqB,GACrB,GAA+B,GAC/B,GAAuB,GCN7B,IAAM,EAAsB,OAAO,EAC7B,EAA0B,OAAO,EACjC,EAA6B,OAAO,EACpC,EAAuB,OAAO,EAC9B,EAAsB,OAAO,EAC7B,EAAwB,OAAO,EAC/B,EAA4B,OAAO,EACnC,EAA4B,OAAO,EACnC,EAAuB,OAAO,EAC9B,EAAuB,OAAO,EAC9B,EAAyB,OAAO,ECJ7C,SAAO,CAAiB,CAAC,EAA2C,CAChE,OAAO,GAAO,OAAO,IAAQ,YAAc,EAAI,GCDnD,SAAO,CAAiB,CAAC,EAAY,EAAsB,CACvD,IAAK,EAAM,CAAC,IAAM,EAAM,CAAC,EACrB,OAAO,IAAM,EAGjB,OAAO,KAAK,UAAU,CAAC,IAAM,KAAK,UAAU,CAAC,ECLjD,SAAO,CAAiB,CAAC,EAAiD,CACtE,IAAK,EAAM,CAAG,EACV,MAAM,IAAI,MAAM,8DAA8D,ECJtF,IAAM,GAAe,OAAO,EAE5B,SAAO,CAAwD,CAAC,EAAO,EAAe,EAAG,EAAkB,CACvG,OAAO,QAAS,IAAI,EAAsB,CACtC,IAAM,EAAS,MAAgB,EACzB,EAAmB,EAAG,MAAkB,IAAI,QAC5C,EAAU,EAAK,GACf,EAAY,IAAS,OAAY,EAAK,GAAQ,OAEpD,GAAI,OAAO,IAAY,SACnB,OAAO,EAAG,KAAK,KAAM,GAAG,CAAI,EAGhC,IAAK,EAAI,IAAI,CAAO,EAChB,EAAI,IAAI,EAAS,CAAC,CAAC,EAGvB,GAAI,EAAI,IAAI,CAAO,EAAE,SAAS,CAAS,EAAG,CACtC,IAA2B,QAAQ,IAAI,4DAA6D,iBAAkB,iBAAkB,iBAAkB,CAAC,KAAI,UAAS,WAAS,CAAC,EAClL,OAGJ,EAAI,IAAI,CAAO,EAAE,KAAK,CAAS,EAE/B,IAAM,EAAS,EAAG,KAAK,KAAM,GAAG,CAAI,EAIpC,OAFC,GAAW,OAAO,EAAG,IAEf,GC3Bf,SAAO,EAAoB,CAAC,EAAW,CAEnC,OADA,EAAU,CAAG,EACN,EAAI,MAAM,ECDrB,SAAO,CAAiB,CAAC,EAAuB,CAE5C,OADA,EAAU,CAAG,EACN,EAAI,GCAf,IAAM,GAA4G,EAAgB,QAAS,CAAC,EAA2B,EAAsB,EAAgB,EAA0B,CACnO,IAAM,EAAU,EAAI,GACpB,EAAQ,EAAK,EAAK,EAAO,CAAQ,EAEjC,GAA2B,QAAQ,IAAI,YAAY,EAAI,eAAmB,iBAAkB,iBAAkB,iBAAkB,EAAK,CAAC,MAAK,QAAO,UAAQ,CAAC,EAE3J,EAAI,IAAW,GAAW,EAAI,GAAS,EAAI,GAAa,EAAI,GAAQ,EAAI,GAAY,GACrF,EAAG,CAAC,EAEQ,KCPf,IAAM,GAAuC,EAAgB,QAAS,CAAC,EAAoB,CAGvF,GAFA,EAAU,CAAG,EAET,EAAI,GACJ,EAAI,GAAS,GACb,GAAwB,QAAQ,IAAI,YAAY,EAAI,aAAiB,iBAAkB,iBAAkB,iBAAkB,eAAgB,CAAC,KAAG,CAAC,EAChJ,EAAW,EAAK,EAAO,GAAO,EAAI,EAGtC,IAAK,EAAI,IAAa,EAAI,GAAU,SAAW,EAC3C,OAGJ,EAAI,GACC,OAAO,CAAU,EACjB,QAAQ,EAAY,EAC5B,EAEc,KCpBf,eAAO,EAAoC,CAAC,EAAQ,EAA4D,CAC5G,IAAK,EAAM,CAAG,IAAM,EAAW,CAAG,EAC9B,OAGJ,MAAM,EAAG,CAAG,EACZ,EAAa,CAAG,ECZpB,SAAO,CAAoB,CAAC,EAAqC,CAC7D,OAAQ,GAAa,OAAS,ECGlC,SAAO,EAAiB,CAAC,EAAuB,CAE5C,OADA,EAAU,CAAG,GACL,EAAI,GCChB,IAAM,GAA8D,EAAgB,QAAS,CAAC,EAAc,EAA6B,CAGrI,GAFA,EAAU,CAAG,GAER,EAAI,GACL,EAAI,GAAS,GACb,GAAwB,QAAQ,IAAI,YAAY,EAAI,aAAiB,iBAAkB,iBAAkB,iBAAkB,eAAgB,CAAC,MAAK,KAAG,CAAC,EACrJ,EAAW,EAAK,EAAO,GAAM,EAAK,EAGtC,IAAK,EAAI,GACL,OAGJ,GAAa,EAAI,GAAS,EAAI,EAAW,EAC5C,EAEc,KCnBf,SAAO,EAAiB,CAAC,EAA2B,EAA8B,EAAmB,CACjG,EAAO,KAAc,CAAC,GACrB,EAAO,GAAU,SAAS,CAAG,GAAK,EAAO,GAAU,KAAK,CAAG,EAE5D,EAAI,KAAY,IAAW,EAAI,GAAU,GACzC,EAAI,KAAgB,IAAQ,EAAI,GAAc,GCHlD,SAAO,CAAiB,CAAC,EAA2B,EAAa,EAAsB,CACnF,GAAI,EAAM,CAAK,EACX,GAAY,EAAO,EAAK,CAAG,EACxB,QAAI,MAAM,QAAQ,CAAK,EAAG,CAC7B,GAAI,EAAM,KAAK,CAAK,EAChB,EACK,OAAO,CAAK,EACZ,QAAQ,KAAO,GAAY,EAAK,EAAK,CAAG,CAAC,EAGlD,EAAM,GAAU,EAChB,EAAM,GAAc,GCZ5B,SAAwB,CAAQ,CAAC,EAA2B,EAAmB,CAC3E,IAAM,EAAQ,EAAI,GAClB,EAAM,EAAK,CAAG,EAEd,GAA2B,QAAQ,IAAI,YAAY,EAAI,aAAiB,iBAAkB,iBAAkB,iBAAkB,EAAK,CAAC,KAAG,CAAC,ECL5I,SAAO,EAAiB,CAAC,EAA2B,EAAoC,CACpF,GAAI,KAAY,EAAQ,CACpB,IAAM,EAAQ,EAAO,GAAU,QAAQ,CAAG,EAC1C,EAAO,GAAU,OAAO,EAAO,CAAC,EAGpC,EAAI,GAAU,OACd,EAAI,GAAc,OCLtB,SAAO,EAAiB,CAAC,EAA2B,EAAsB,CACtE,GAAI,EAAM,CAAK,EACX,GAAgB,EAAO,CAAG,EACvB,QAAI,MAAM,QAAQ,CAAK,EAAG,CAC7B,GAAI,EAAM,KAAK,CAAK,EAChB,EACK,OAAO,CAAK,EACZ,QAAQ,KAAO,GAAgB,EAAK,CAAG,CAAC,EAGjD,EAAM,GAAU,OAChB,EAAM,GAAc,QChBrB,IAAM,EAAmE,CAAC,ECFjF,oBAAS,cAAW,aCGpB,IAAe,IAKX,cAAc,CAAC,EAAmB,EAA+B,CAG7D,GAFA,QAAQ,eAAe,EAAQ,CAAG,EAE9B,GAAQ,EAAQ,CAAG,EACnB,MAAO,GAGX,IAAM,EAAM,EAAO,GAInB,OAHA,GAAO,EAAW,EAAK,EAAO,GAAa,EAAI,EAAO,GAAY,EAClE,GAAO,EAAa,EAAK,EAAO,EAAW,EAEpC,IAOX,GAAG,CAAC,EAAmB,EAAsB,EAAwB,CACjE,GAAI,IAAQ,EACR,MAAO,GAGX,GAAI,GAAQ,EAAQ,CAAG,EACnB,OAAO,QAAQ,IAAI,EAAQ,EAAK,CAAQ,EAG5C,IAAM,EAAM,EAAO,GAGnB,OAFA,GAAO,EAAS,EAAK,EAAO,EAAW,EAEhC,QAAQ,IAAI,EAAQ,CAAG,GAOlC,GAAG,CAAC,EAAmB,EAAsB,EAAgB,EAAe,CACxE,GAAI,GAAQ,EAAQ,CAAG,EACnB,OAAO,QAAQ,IAAI,EAAQ,EAAK,EAAO,CAAQ,EAGnD,IAAM,EAAM,EAAO,GAInB,OAHA,GAAO,EAAW,EAAK,EAAO,GAAa,EAAI,EAAO,GAAY,EAClE,GAAO,EAAa,EAAK,EAAO,EAAW,EAEpC,QAAQ,IAAI,EAAQ,EAAK,CAAK,EAE7C,EAKA,SAAS,EAAO,CAAC,EAAmB,EAAqC,CACrE,OAAO,OAAO,IAAQ,UAAY,OAAO,EAAO,KAAS,YAAc,IAAQ,SCzDnF,IAAe,IAMX,GAAG,CAAC,EAA8B,EAAsB,EAAwB,CAC5E,GAAI,IAAQ,EACR,MAAO,GAGX,GAAI,OAAO,IAAQ,SACf,OAAO,QAAQ,IAAI,EAAQ,EAAK,CAAQ,EAG5C,IAAM,EAAa,EAAO,GAAa,GAEvC,IAAK,IAAe,EAAW,IAC3B,OAAO,QAAQ,IAAI,EAAQ,EAAK,CAAQ,EAG5C,IAAM,EAAQ,EAAW,IAAI,KAAK,CAAM,EAOxC,OALA,IAAsB,QAAQ,IAAI,YAAY,EAAO,WAAe,iBAAkB,iBAAkB,iBAAkB,CAAG,EAC7H,EAAS,EAAQ,CAAG,EAEpB,EAAc,EAAQ,EAAK,CAAK,EAEzB,GAMX,wBAAwB,CAAC,EAA8B,EAAsD,CACzG,OAAO,EAAO,GAAa,IAM/B,OAAO,CAAC,EAA8B,CAClC,OAAO,EAAO,IAQlB,GAAG,CAAC,EAA8B,EAAsB,EAAgB,EAAwB,CAC5F,GAAI,OAAO,IAAQ,SACf,OAAO,QAAQ,IAAI,EAAQ,EAAK,EAAO,CAAQ,EAGnD,IAAM,EAAa,EAAO,GAAa,GAEvC,IAAK,IAAe,EAAW,IAC3B,OAAO,QAAQ,IAAI,EAAQ,EAAK,EAAO,CAAQ,EAGnD,IAAM,EAAW,EAAW,KAAK,KAAK,CAAM,GAAK,OAEjD,GAAI,EAAS,EAAO,CAAQ,EACxB,MAAO,GAKX,GAFA,GAAkB,EAAQ,CAAQ,EAE9B,MAAM,QAAQ,CAAK,IAAM,EAAM,GAC/B,EAAQ,IAAI,MAAM,EAAO,EAAU,EAUvC,OAPA,IAAsB,QAAQ,IAAI,YAAY,EAAO,WAAe,iBAAkB,iBAAkB,iBAAkB,EAAK,CAAC,OAAK,CAAC,EACtI,EAAW,IAAI,KAAK,EAAQ,CAAK,EAEjC,EAAc,EAAQ,EAAK,CAAK,EAChC,EAAa,EAAQ,CAAG,EACxB,EAAW,EAAQ,EAAK,EAAO,CAAQ,EAEhC,GAEf,ECpFA,IAAe,IAWX,GAAG,CAAC,EAAmC,EAAsB,EAAwB,CACjF,GAAI,IAAQ,YACR,MAAO,GAGX,GAAI,IAAQ,EACR,MAAO,GAGX,GAAI,KAAO,EACP,OAAO,QAAQ,IAAI,EAAQ,EAAK,CAAQ,EAG5C,OAAO,QAAQ,IAAI,EAAO,MAAO,CAAG,GAOxC,wBAAwB,CAAC,EAAmC,EAAsD,CAC9G,OAAO,QAAQ,yBAAyB,EAAO,MAAO,CAAG,GAO7D,OAAO,CAAC,EAAmC,CACvC,OAAO,QAAQ,QAAQ,EAAO,KAAK,GASvC,GAAG,CAAC,EAAmC,EAAsB,EAAgB,EAAwB,CACjG,GAAI,KAAO,EACP,OAAO,QAAQ,IAAI,EAAQ,EAAK,EAAO,CAAQ,EAGnD,OAAO,QAAQ,IAAI,EAAO,MAAO,EAAK,CAAK,EAEnD,EHpDA,IAAe,IAMX,SAAS,CAAC,EAAqB,EAAkB,EAA2C,CAExF,EAAY,EAAU,IAAI,KAAO,CAC7B,IAAK,MAAM,QAAQ,CAAG,EAClB,OAAO,EAGX,OAAO,IAAI,MAAM,EAAK,EAAU,EACnC,EAED,IAAM,EAAM,GAAU,CAAC,EAAO,IAAY,CACtC,IAAM,EAAW,GAAQ,QAAQ,UAAU,EAAQ,EAAW,CAAS,CAAC,EACxE,EAAS,GAAQ,EACjB,EAAS,GAAS,GAClB,EAAS,GAAS,EAClB,EAAS,GAAW,EAEpB,IAAM,EAAU,IAAI,MAAM,EAAU,EAAa,EAEjD,MAAO,CAEH,IAAK,IAAM,CAEP,OADA,EAAM,EACC,GAKX,IAAK,IAAG,CAAG,OACf,EACH,EAED,OAAO,IAAI,MAAM,EAAK,EAAQ,EAEtC,EIxCA,SAAO,EAAoB,EAAuC,CAC9D,IAAM,EAAW,KACjB,EAAU,CAAQ,EAGlB,IAAM,EAAQ,IADA,EAAc,EAAS,IACb,GAAG,EAAS,EAAK,EASzC,OAPA,OAAO,QAAQ,KAAK,EAAY,EAC3B,OAAO,GAAI,OAAkB,EAAW,GAAG,EAC3C,IAAI,EAAE,KAAU,CAAI,EACpB,QAAQ,KAAO,EAAM,GAAO,EAAM,KAAK,EAAI,EACtC,KAAK,GAAK,MAAM,EAChB,KAAK,EAAI,EAEZ,ECfX,SAAO,EAAiB,CAA6B,EAAqC,CACtF,QAAS,KAAO,EAAM,CAClB,IAAM,EAAa,KAAK,GAAa,GAErC,GAAI,EAAM,KAAK,EAAI,GAAK,OAAO,EAAK,KAAS,SACzC,KAAK,GAAK,KAAK,EAAK,EAA+B,EAChD,QAAI,GAAc,EAAW,IAChC,KAAK,GAAO,EAAK,ICP7B,SAAO,EAAiB,EAAsD,CAC1E,OAAO,OAAO,YACV,KAAK,GAAY,IAAI,KAAY,CAC7B,IAAI,EAAiB,QAAQ,IAAI,KAAK,KAAM,KAAM,EAAU,IAAI,EAEhE,GAAI,EAAM,CAAK,EACX,EAAQ,EAAM,OAAO,EAGzB,MAAO,CAAC,EAAU,CAAK,EAC1B,CACL,E3BJJ,SAAO,CAAwC,CAAC,EAAa,CACzD,GAAS,CAAK,EAEd,IAAM,EAAc,OAAO,OAAO,GAAkB,CAAK,CAAC,EACpD,EAAa,OAAO,KAAK,CAAW,EAW1C,OATA,GAAe,EAAM,UAAW,EAAa,CAAW,EACxD,GAAe,EAAM,UAAW,EAAM,EAAM,IAAI,EAChD,GAAe,EAAM,UAAW,EAAY,CAAU,EACtD,GAAe,EAAO,OAAO,YAAa,CAAC,IAAsB,OAAO,IAAa,UAAY,IAAW,KAAU,EAAM,IAAI,EAEhI,GAAgB,EAAO,QAAS,EAAQ,EACxC,GAAgB,EAAO,OAAQ,EAAI,EACnC,GAAgB,EAAO,SAAU,EAAM,EAEhC,GAAM,CAAK,EAOtB,SAAS,EAA4B,CAAC,EAAa,CAC/C,IAAM,EAAU,IAAI,MAAM,EAAO,EAAU,EAI3C,OAFA,EAAc,EAAM,MAAQ,EAErB,EAGX,SAAS,EAAQ,CAAC,EAAuB,CACrC,IAAM,EAAS,OAAO,eAAe,EAAM,SAAS,EAEpD,GAAI,KAAQ,EACR,MAAM,IAAI,MAAM,WAAU,EAAM,qEAAqE,EAAO,KAAQ,EAI5H,GAAI,GAAsB,CACtB,IAAM,EAAS,QAAQ,MAAM,KAAK,OAAO,EACnC,EAAQ,QAAQ,KAAK,KAAK,OAAO,EACjC,EAAO,QAAQ,IAAI,KAAK,OAAO,EAC/B,EAAQ,QAAQ,KAAK,KAAK,OAAO,EAEjC,EAAW,CAAC,IAAiB,IAAI,IAAoB,CACvD,QAAS,EAAI,EAAK,OAAS,EAAG,GAAK,IAAK,EAAG,CACvC,IAAM,EAAM,EAAK,GAEjB,IAAK,EAAM,CAAG,EACV,SAGJ,IAAM,GAAM,EAAS,CAAG,EACxB,EAAK,OAAO,EAAG,EAAG,gBAAK,GAAI,KAAS,GAAI,OAAO,CAAC,EAGpD,OAAO,EAAG,GAAG,CAAI,GAGrB,QAAQ,MAAQ,EAAS,CAAM,EAC/B,QAAQ,KAAO,EAAS,CAAK,EAC7B,QAAQ,IAAM,EAAS,CAAI,EAC3B,QAAQ,KAAO,EAAS,CAAK,E4B1EjC,SAAO,CAAiB,CAAC,EAA2B,CAChD,OAAO,EAAI,IAAI,CAAkB,ECHrC,mBAAS,eAGT,SAAO,EAAiB,GAAI,GAAoC,CAC5D,OAAO,GAAS,QAAQ,CAAG,ECF/B,SAAO,CAAiB,CAAC,EAAsC,CAC3D,OAAO,OAAO,YACV,OAAO,QAAQ,CAAG,EACb,IAAI,EAAE,EAAK,KAAW,CAAC,EAAK,EAAmB,CAAK,CAAC,CAAC,EACtD,OAAO,GAAI,KAAW,IAAU,MAAS,CAClD,ECAJ,IAAM,GAAiC,CAAC,EAExC,SAAO,EAAiB,GAAI,EAAI,EAAM,EAAO,GAA4C,CACrF,KAAM,KAAQ,GACV,MAAM,IAAI,MAAM,4BAA4B,kBAAqB,EAGrE,GAAI,KAAM,GACN,OAAO,GAAM,GAGjB,IAAgC,QAAQ,MAAM,KAAK,EAAM,CAAE,EAE3D,IAAM,EAAW,IADL,EAAc,GACD,GAAG,EAAiB,CAAI,CAAC,EAMlD,OALA,EAAS,KAAK,EAAkB,CAAK,CAAC,EACtC,IAAgC,QAAQ,SAAS,EAEjD,GAAM,GAAM,EAEL,ECxBX,SAAO,EAAiB,CAAC,EAAyC,CAC9D,OAAO,MAAM,QAAQ,CAAG,GAAK,EAAI,KAAO,KCD5C,SAAO,EAAiB,CAAC,EAAoC,CACzD,OAAO,MAAM,QAAQ,CAAG,GAAK,EAAI,KAAO,KCI5C,SAAO,CAAiB,CAAC,EAAuB,CAC5C,OAAQ,SACC,IAAQ,KACT,OAAO,UAEN,MAAM,QAAQ,CAAG,EAClB,OAAQ,SACC,GAAqB,CAAG,EACzB,OAAO,GAAoB,CAAG,OAE7B,GAAgB,CAAG,EACpB,OAAO,GAAe,CAAG,UAGzB,OAAO,EAAiB,CAAG,OAGlC,OAAO,IAAQ,SAChB,OAAO,EAAkB,CAAG,UAG5B,OAAO,GC1BnB,SAAO,EAAiB,CAAC,EAA6B,CAClD,OAAO,EAAmB,KAAK,MAAM,CAAU,CAAC,ECHpD,mBAAS,eCAT,mBAAS,eCGT,SAAO,CAAiB,CAAC,EAAmC,CACxD,MAAO,CAAC,KAAO,EAAI,MAAM,CACrB,aAAc,GACd,cAAe,EACnB,CAAC,CAAC,ECPN,gBAAS,aCET,SAAO,CAAiB,CAAC,EAAsC,CAC3D,OAAO,OAAO,YACV,OAAO,QAAQ,CAAG,EACb,IAAI,EAAE,EAAK,KAAW,CAAC,EAAK,EAAiB,CAAK,CAAC,CAAC,EACpD,OAAO,GAAI,KAAW,IAAU,MAAS,CAClD,ECPJ,SAAO,EAAiB,EAAG,CACvB,MAAO,uCAAuC,QAAQ,SAAU,OAAO,EAAI,OAAO,gBAAgB,IAAI,WAAW,CAAC,CAAC,EAAE,GAAK,KAAO,EAAI,GAAG,SAAS,EAAE,CAAC,EFOxJ,SAAO,CAAiB,CAAC,EAA0C,CAC/D,EAAM,GAAM,CAAG,EAEf,IAAM,EAAO,EAAI,OAAO,EAExB,MAAO,CACH,KACA,GAAK,EACL,EAAI,GACJ,EAAgB,CAAI,EACpB,EAAe,EAAI,EAAK,CAC5B,EFZJ,SAAO,CAAiB,CAAC,EAA8B,CACnD,OAAQ,SACC,EAAI,MAAM,CAAK,EAChB,OAAO,EAAI,IAAI,CAAY,OAE1B,EAAI,MAAM,GAAS,UAAU,EAC9B,OAAO,EAAI,IAAI,CAAiB,UAGhC,OAAO,EAAI,IAAI,CAAgB,GDR3C,SAAO,CAAiB,CAAC,EAAsC,CAC3D,OAAQ,SACC,IAAQ,KACT,OAAO,UAEN,MAAM,QAAQ,CAAG,EAClB,OAAO,EAAe,CAAG,OAExB,EAAM,CAAG,EACV,OAAO,EAAa,CAAG,OAEtB,GAAS,WAAW,CAAG,EACxB,OAAO,EAAkB,CAAG,OAE3B,OAAO,IAAQ,SAChB,OAAO,EAAgB,CAAG,OAEzB,OAAO,IAAQ,eACf,OAAO,IAAQ,cACf,OAAO,IAAQ,SAChB,OAAO,UAGP,QM7BZ,SAAO,EAAiB,CAAC,EAAsB,CAC3C,OAAO,KAAK,UAAU,EAAiB,CAAG,CAAC,ECA/C,MAAqB,CAAa,IAC1B,KAAI,EAAS,CACb,OAAO,KAAK,MAGZ,KAAI,EAAW,CACf,OAAO,KAAK,GAGP,GACA,GAET,WAAW,CAAC,EAAY,EAAc,CAClC,KAAK,GAAQ,EACb,KAAK,GAAQ,EAErB,CAhBqB,EAAN,GADd,GACoB,GCArB,MAAqB,CAAa,IAC1B,MAAK,EAAQ,CACb,OAAO,KAAK,MAGZ,KAAI,EAAW,CACf,OAAO,KAAK,MAGZ,SAAQ,EAAW,CACnB,OAAO,KAAK,MAGZ,MAAK,EAAW,CAChB,OAAO,KAAK,MAGZ,MAAK,EAAW,CAChB,OAAO,KAAK,GAGP,GACA,GACA,GACA,GACA,GAET,WAAW,CAAC,EAAY,EAAc,EAAkB,EAAe,EAAe,CAClF,KAAK,GAAS,EACd,KAAK,GAAQ,EACb,KAAK,GAAY,EACjB,KAAK,GAAS,EACd,KAAK,GAAS,EAEtB,CAlCqB,EAAN,GADd,GACoB,GCCrB,MAAqB,CAAa,IAC1B,KAAI,EAAW,CACf,OAAO,KAAK,MAGZ,MAAK,EAAW,CAChB,OAAO,KAAK,MAGZ,iBAAgB,EAAW,CAC3B,OAAO,KAAK,MAGZ,WAAU,EAAmB,CAC7B,OAAO,KAAK,GAGP,GACA,GACA,GACA,GAET,WAAW,CAAC,EAAc,EAAe,EAA0B,EAA4B,CAC3F,KAAK,GAAQ,EACb,KAAK,GAAS,EACd,KAAK,GAAoB,EACzB,KAAK,GAAc,EAE3B,CA5BqB,EAAN,GADd,GACoB,GCDrB,MAAqB,CAAgB,IAC7B,KAAI,EAAW,CACf,OAAO,KAAK,MAGZ,MAAK,EAAW,CAChB,OAAO,KAAK,MAGZ,iBAAgB,EAAW,CAC3B,OAAO,KAAK,MAGZ,OAAM,EAAoC,CAC1C,OAAO,KAAK,MAGZ,OAAM,EAA8C,CACpD,OAAO,KAAK,GAGP,GACA,GACA,GACA,GACA,GAET,WAAW,CAAC,EAAc,EAAe,EAA0B,EAA0C,EAAoD,CAC7J,KAAK,GAAQ,EACb,KAAK,GAAS,EACd,KAAK,GAAoB,EACzB,KAAK,GAAU,EACf,KAAK,GAAU,EAEvB,CAlCqB,EAAN,GADd,GACoB,GlDGd,MAAM,CAAY,OACP,sBAAwB,CAAC,EAAkB,EAAkD,CACvG,OAAO,IAAI,EACP,EAAS,MAAS,IAAI,CAAa,EACnC,EAAS,KACT,EAAS,UACT,EAAS,MACT,EAAS,KACb,QAGU,0CAAyC,CAAC,EAAwB,CAC5E,IAAM,EAAkB,YAAY,GAAS,IAAI,EAAE,SAAS,qBAAqB,IAEjF,IAAK,EAAO,WAAW,YAAY,EAC/B,OAAO,EAIX,IAAM,EADgB,yCACQ,KAAK,CAAM,EAEzC,IAAK,GAAS,QAAU,GAAK,EACzB,OAAO,EAGX,OAAO,EAAQ,GACV,WAAW,IAAM,EAAE,EACnB,WAAW,IAAM,EAAE,EACnB,WAAW,IAAM,GAAG,EACpB,WAAW,IAAM,GAAG,QAGf,kBAAiB,CAAC,EAAkB,EAA0C,CACxF,OAAO,IAAI,EACP,EAAS,KACT,EAAS,MACT,EAAS,kBACT,CACJ,QAGU,qBAAoB,CAAC,EAAmC,CAClE,IAAI,EAEJ,GAAI,EAAS,OACT,EAAS,CAAC,EAEV,OAAO,QAAQ,EAAS,MAAS,EAAE,QAAQ,EAAE,EAAK,KAAW,CACzD,EAAO,GAAO,EAAY,qBAAqB,CAAe,EACjE,EAGL,OAAO,IAAI,EACP,EAAS,KACT,EAAS,MACT,EAAS,kBACT,EACA,EAAS,MACb,EAER,CA5Da,EAAN,GADN,GACY,GmDJb,MAAqB,CAAgB,IAC7B,KAAI,EAAM,CACV,OAAO,KAAK,MAGZ,QAAO,EAAY,CACnB,OAAO,KAAK,GAAU,WAGtB,GAAE,EAAY,CACd,OAAO,KAAK,YAAc,KAAO,KAAK,WAAa,OAGnD,SAAQ,EAAa,CACrB,OAAO,KAAK,MAGZ,WAAU,EAAmB,CAC7B,OAAO,KAAK,GAAU,OAGjB,GACA,GAET,WAAW,CAAC,EAAS,EAAoB,CACrC,KAAK,GAAQ,EACb,KAAK,GAAY,EAEzB,CC9BA,mBAAS,eCAT,MAAqB,CAAW,IACxB,UAAS,EAAkB,CAC3B,OAAO,KAAK,MAGZ,UAAS,CAAC,EAAsB,CAChC,KAAK,GAAa,KAGlB,QAAO,EAAW,CAClB,OAAO,KAAK,MAGZ,UAAS,EAAY,CACrB,OAAO,KAAK,GAGhB,GACS,GACA,GAET,WAAW,CAAC,EAA0B,EAAiB,EAAqB,GAAO,CAC/E,KAAK,GAAa,EAClB,KAAK,GAAW,EAChB,KAAK,GAAa,YAGX,SAAQ,EAAe,CAC9B,GAAI,EAAW,KAAc,KACzB,MAAM,IAAI,MAAM,8GAA8G,EAGlI,OAAO,EAAW,SAGf,GAA+B,WAE/B,SAAQ,CAAC,EAA0B,CACtC,EAAW,GAAY,EAE/B,CCxCA,MAAO,UAAsB,KAAM,CAAC,CFSpC,IAAM,GAAoD,CAAC,EAE3D,MAAqB,CAAe,IAC5B,OAAM,EAAe,CACrB,OAAO,KAAK,MAGZ,QAAO,EAAgB,CACvB,OAAO,KAAK,MAGZ,KAAI,EAAW,CACf,OAAO,KAAK,MAGZ,KAAI,CAAC,EAAe,CACpB,KAAK,GAAQ,KAGb,MAAK,EAAuB,CAC5B,OAAO,KAAK,MAGZ,MAAK,CAAC,EAA2B,CACjC,KAAK,GAAS,EAGT,GACT,GAAuC,KACvC,GACA,GAAwB,CAAC,EACzB,GAA6B,KAE7B,WAAW,CAAC,EAAc,EAAqB,CAC3C,KAAK,GAAU,GAAU,EAAW,SACpC,KAAK,GAAS,MAAQ,WACtB,KAAK,GAAS,OAAS,MACvB,KAAK,GAAQ,EAGV,UAAU,CAAC,EAAoC,CAGlD,OAFA,KAAK,GAAwB,EAEtB,KAGJ,WAAW,CAAC,EAAgC,CAG/C,GAFA,EAAQ,GAAS,KAAK,GAAQ,UAE1B,EACA,OAAO,KAAK,OAAO,gBAAiB,UAAU,GAAO,EAGzD,GAAI,KAAK,GAAS,SAAW,kBAAmB,KAAK,GAAS,QAC1D,OAAO,KAAK,GAAS,QAAQ,cAGjC,OAAO,KAGJ,IAAI,CAAC,EAA2C,EAA6B,2BAA4C,CAC5H,GAAI,aAAgB,SAEhB,EAAc,KACX,QAAI,MAAM,QAAQ,CAAI,GAAK,OAAO,IAAS,SAC9C,EAAO,KAAK,UAAU,CAAI,EAC1B,EAAc,mBAKlB,GAFA,KAAK,GAAS,KAAO,EAEjB,IAAgB,KAChB,OAAO,KAAK,OAAO,eAAgB,CAAW,EAGlD,OAAO,KAGJ,MAAM,CAAC,EAAc,EAA+B,CAIvD,OAHA,KAAK,GAAS,QAAU,KAAK,GAAS,SAAW,CAAC,EAClD,KAAK,GAAS,QAAQ,GAAQ,EAEvB,KAGJ,MAAM,CAAC,EAAoC,CAG9C,OAFA,KAAK,GAAS,OAAS,EAAO,YAAY,EAEnC,KAGJ,WAAW,CAAC,EAA0C,CAGzD,OAFA,KAAK,GAAS,EAEP,KAGJ,MAAM,CAAC,EAA6B,KAAsB,CAG7D,OAFA,KAAK,GAAS,OAAS,EAEhB,UAGE,MAAc,EAAqB,CAC5C,OAAO,KAAK,GAAS,EAChB,KAAK,KAAK,EAAE,KAAK,CAAC,OAGd,UAAS,EAA0B,CAC5C,IAAI,EAAW,MAAM,KAAK,GAAS,EAEnC,GAAI,EAAS,SAAW,IAAK,CACzB,IAAM,EAAO,MAAM,EAAS,KAAK,EAEjC,GAAI,SAAU,GAAQ,UAAW,GAAQ,sBAAuB,EAC5D,MAAM,IAAI,EAAa,EAAK,KAAM,EAAK,MAAO,EAAK,kBAAmB,EAAS,MAAwB,EAG3G,MAAM,IAAI,EAAa,GAAI,sBAAuB,2DAA4D,EAAS,MAAwB,EAGnJ,IAAI,EAAW,EAAS,QAAQ,IAAI,qBAAqB,EACnD,EAAY,0CAA0C,EAAS,QAAQ,IAAI,qBAAqB,CAAC,EACjG,YAAY,GAAS,IAAI,EAAE,SAAS,qBAAqB,IAE/D,OAAO,IAAI,EACP,MAAM,EAAS,KAAK,EACpB,CACJ,OAGS,IAAuB,EAAmC,CACnE,IAAO,OAAM,YAAY,MAAM,KAAK,GAAsB,EAE1D,OAAO,IAAI,EAAa,EAAM,CAAQ,OAG7B,WAA8B,CAAC,EAA0E,CAClH,IAAO,OAAM,YAAY,MAAM,KAAK,GAAsB,EAE1D,OAAO,IAAI,EAAa,EAAc,CAAI,EAAG,CAAQ,OAG5C,gBAAmC,CAAC,EAA4E,CACzH,OAAO,KAAK,WAAsB,CAAC,IAAa,EAAK,IAAI,CAAa,CAAC,OAG9D,SAAQ,EAAiC,CAClD,OAAO,MAAM,KAAK,GAAoB,OAG7B,oBAAuC,CAAC,EAAqF,CACtI,OAAO,KAAK,WAA+B,KAAY,EAAY,sBAAsB,EAAU,CAAa,CAAC,OAGxG,QAAgB,EAAmC,CAC5D,OAAO,MAAM,KAAK,GAAsB,OAG/B,WAA8E,CAAC,EAAiD,CACzI,IAAO,OAAM,YAAY,MAAM,KAAK,GAAsB,EAE1D,OAAO,IAAI,EAAa,EAAK,GAAuB,CAAQ,OAGnD,cAAa,EAA4B,CAGlD,OAFiB,MAAM,KAAK,GAAoB,GAEhC,gBAGd,EAAQ,EAAsB,CAChC,GAAI,KAAK,KAA0B,KAAM,CACrC,GAAI,KAAK,MAAyB,GAC9B,GAAiB,KAAK,IAAuB,MAAM,IAAI,CAAqB,EAGhF,IAAM,EAAa,IAAI,gBACvB,GAAiB,KAAK,IAAyB,EAE/C,KAAK,OAAO,EAAW,MAAM,EAGjC,IAAI,EAAO,KAAK,KAEhB,GAAI,KAAK,QAAU,KACf,GAAQ,IAAI,KAAK,MAAM,MAAM,IAGjC,OAAO,MAAM,MAAM,KAAK,OAAO,QAAU,EAAM,KAAK,OAAO,OAGzD,EAAqB,EAAmC,CAC1D,OAAO,MAAM,KACR,GAAS,EACT,KAAK,KAAY,EAAe,GAAyB,EAAU,KAAK,OAAO,SAAS,CAAC,cAGrF,EAAwB,CAAC,EAAoB,EAA2D,CACjH,GAAI,EAAS,SAAW,IACpB,OAAO,IAAI,EAAa,KAAM,CAAQ,EAG1C,GAAI,EAAS,QAAQ,IAAI,cAAc,GAAK,EAAS,QAAQ,IAAI,cAAc,EAAE,WAAW,kBAAkB,EAAG,CAC7G,IAAM,EAAO,MAAM,EAAS,KAAK,EAEjC,GAAI,SAAU,GAAQ,UAAW,GAAQ,sBAAuB,EAAM,CAClE,GAAI,WAAY,EACZ,MAAM,EAAY,qBAAqB,CAAI,EAG/C,MAAM,EAAY,kBAAkB,EAAM,EAAS,MAAwB,EAG/E,GAAI,GAAa,SAAU,EACvB,OAAO,IAAI,EAAa,EAAK,KAAiB,CAAQ,EAG1D,OAAO,IAAI,EAAa,EAAM,CAAQ,EAG1C,GAAI,EAAS,SAAW,KAAO,EAAS,SAAW,IAC/C,OAAO,IAAI,EAAa,KAAM,CAAQ,EAK1C,IAFa,MAAM,EAAS,KAAK,GAExB,SAAW,GAAK,EAAS,QAAU,KAAO,EAAS,OAAS,IACjE,OAAO,IAAI,EAAa,KAAM,CAAQ,EAG1C,MAAM,IAAI,EAAa,GAAI,sBAAuB,wCAAyC,EAAS,MAAwB,EAEpI,CG/OA,MAAqB,EAAY,CACnB,OAAO,CAAC,EAAc,EAAqC,CACjE,OAAO,IAAI,EAAe,EAAM,CAAM,EAE9C,CCPA,MAAqB,EAAY,CACpB,GAET,WAAW,EAAG,CACV,KAAK,GAAW,IAAI,gBAGjB,KAAK,EAAW,CACnB,OAAO,KAAK,GAAS,SAAS,EAG3B,MAAM,CAAC,EAAc,EAAsC,CAC9D,OAAO,KAAK,GAAK,KAAK,GAAS,OAAO,KAAK,KAAK,EAAQ,EAAG,EAAM,CAAK,EAGnE,WAAW,CAAC,EAAc,EAAgD,CAC7E,GAAI,IAAW,QAAa,IAAW,KACnC,OAAO,KAKX,OAFA,EAAO,QAAQ,KAAS,KAAK,OAAO,EAAM,CAAK,CAAC,EAEzC,KAGJ,MAAM,CAAC,EAA2B,CAGrC,OAFA,KAAK,GAAS,OAAO,CAAI,EAElB,KAGJ,GAAG,CAAC,EAA6B,CACpC,OAAO,KAAK,GAAS,IAAI,CAAI,EAG1B,MAAM,CAAC,EAAwB,CAClC,OAAO,KAAK,GAAS,OAAO,CAAI,EAG7B,GAAG,CAAC,EAAuB,CAC9B,OAAO,KAAK,GAAS,IAAI,CAAI,EAG1B,GAAG,CAAC,EAAc,EAAsC,CAC3D,OAAO,KAAK,GAAK,KAAK,GAAS,IAAI,KAAK,KAAK,EAAQ,EAAG,EAAM,CAAK,EAGvE,EAAI,CAAC,EAA6C,EAAc,EAAsC,CAClG,IAAK,GAAS,IAAU,GACpB,OAAO,KAGX,OAAQ,OAAO,OACN,UACD,EAAG,EAAM,EAAQ,OAAS,OAAO,EACjC,UAEC,SACD,EAAG,EAAM,EAAM,SAAS,EAAE,CAAC,EAC3B,UAEC,SACD,EAAG,EAAM,CAAK,EACd,MAGR,OAAO,WAGG,QAAO,EAAgB,CACjC,OAAO,IAAI,GAEnB,CCrEO,SAAS,EAAgB,CAAC,EAA0C,CACvE,OAAO,aAAe,EAGnB,SAAS,EAAc,CAAC,EAAmC,CAC9D,OAAO,aAAe,EAGnB,SAAS,EAAqB,CAAC,EAA8B,CAChE,GAAI,aAAsB,EACtB,EAAa,EAAW,WAG5B,OAAO,IAAe,KAAO,IAAe,IAGzC,SAAS,EAAiB,CAAC,EAAsC,CACpE,OAAO,aAAe",
65
+ "debugId": "839E19BEE00A9E8364756E2164756E21",
65
66
  "names": []
66
67
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@basmilius/http-client",
3
3
  "description": "Http client for Vue projects.",
4
- "version": "2.8.1",
4
+ "version": "2.9.1",
5
5
  "license": "MIT",
6
6
  "funding": "https://github.com/sponsors/basmilius",
7
7
  "homepage": "https://github.com/basmilius/packages",
@@ -46,12 +46,12 @@
46
46
  },
47
47
  "sideEffects": false,
48
48
  "dependencies": {
49
- "@basmilius/utils": "2.8.1",
49
+ "@basmilius/utils": "2.9.1",
50
50
  "luxon": "^3.7.1",
51
51
  "vue": "^3.5.18"
52
52
  },
53
53
  "devDependencies": {
54
- "@basmilius/tools": "2.8.1",
54
+ "@basmilius/tools": "2.9.1",
55
55
  "@types/luxon": "^3.7.1"
56
56
  }
57
57
  }
@@ -0,0 +1 @@
1
+ export default class extends Error {}
@@ -5,6 +5,9 @@ import type { HttpMethod, HttpStatusCode } from '../type';
5
5
  import BaseResponse from './BaseResponse';
6
6
  import HttpClient from './HttpClient';
7
7
  import type QueryString from './QueryString';
8
+ import RequestAbortedError from './RequestAbortedError';
9
+
10
+ const abortControllers: Record<symbol, AbortController> = {};
8
11
 
9
12
  export default class RequestBuilder {
10
13
  get client(): HttpClient {
@@ -32,6 +35,7 @@ export default class RequestBuilder {
32
35
  }
33
36
 
34
37
  readonly #client: HttpClient;
38
+ #autoCancelIdentifier: symbol | null = null;
35
39
  #path: string;
36
40
  #options: RequestInit = {};
37
41
  #query: QueryString | null = null;
@@ -43,6 +47,12 @@ export default class RequestBuilder {
43
47
  this.#path = path;
44
48
  }
45
49
 
50
+ public autoCancel(identifier: symbol): RequestBuilder {
51
+ this.#autoCancelIdentifier = identifier;
52
+
53
+ return this;
54
+ }
55
+
46
56
  public bearerToken(token?: string): RequestBuilder {
47
57
  token = token ?? this.#client.authToken;
48
58
 
@@ -169,6 +179,17 @@ export default class RequestBuilder {
169
179
  }
170
180
 
171
181
  async #execute(): Promise<Response> {
182
+ if (this.#autoCancelIdentifier !== null) {
183
+ if (this.#autoCancelIdentifier in abortControllers) {
184
+ abortControllers[this.#autoCancelIdentifier].abort(new RequestAbortedError());
185
+ }
186
+
187
+ const controller = new AbortController();
188
+ abortControllers[this.#autoCancelIdentifier] = controller;
189
+
190
+ this.signal(controller.signal);
191
+ }
192
+
172
193
  let path = this.path;
173
194
 
174
195
  if (this.query !== null) {
@@ -1,4 +1,9 @@
1
1
  import { RequestError, ValidationError } from '../dto';
2
+ import RequestAbortedError from './RequestAbortedError';
3
+
4
+ export function isRequestAborted(obj: unknown): obj is RequestAbortedError {
5
+ return obj instanceof RequestAbortedError;
6
+ }
2
7
 
3
8
  export function isRequestError(obj: unknown): obj is RequestError {
4
9
  return obj instanceof RequestError;
package/src/http/index.ts CHANGED
@@ -2,6 +2,7 @@ import BaseResponse from './BaseResponse';
2
2
  import BaseService from './BaseService';
3
3
  import HttpClient from './HttpClient';
4
4
  import QueryString from './QueryString';
5
+ import RequestAbortedError from './RequestAbortedError';
5
6
  import RequestBuilder from './RequestBuilder';
6
7
 
7
8
  export {
@@ -9,10 +10,12 @@ export {
9
10
  BaseService,
10
11
  HttpClient,
11
12
  QueryString,
13
+ RequestAbortedError,
12
14
  RequestBuilder
13
15
  };
14
16
 
15
17
  export {
18
+ isRequestAborted,
16
19
  isRequestError,
17
20
  isUnsanctionedRequest,
18
21
  isValidationError