@basmilius/http-client 3.26.0 → 3.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -245,4 +245,5 @@ declare function isRequestError(obj: unknown): obj is RequestError;
245
245
  declare function isUnsanctionedRequest(statusCode: unknown): boolean;
246
246
  declare function isValidationError(obj: unknown): obj is ValidationError;
247
247
  //#endregion
248
- export { BaseResponse, BaseService, BlobResponse, type DtoInstance, ForeignData, HttpAdapter, HttpClient, HttpMethod, HttpStatusCode, Paginated, QueryString, export_default as RequestAbortedError, RequestBuilder, RequestError, ValidationError, export_default$1 as adapter, export_default$2 as assertDto, export_default$3 as bound, export_default$4 as cloneDto, export_default$5 as debounce, export_default$6 as deserialize, export_default$7 as dto, export_default$8 as executeIfDtoDirtyAndMarkClean, export_default$9 as isDto, export_default$10 as isDtoClean, export_default$11 as isDtoDirty, isRequestAborted, isRequestError, isUnsanctionedRequest, isValidationError, markDtoClean, markDtoDirty, export_default$12 as serialize };
248
+ export { BaseResponse, BaseService, BlobResponse, type DtoInstance, ForeignData, HttpAdapter, HttpClient, HttpMethod, HttpStatusCode, Paginated, QueryString, export_default as RequestAbortedError, RequestBuilder, RequestError, ValidationError, export_default$1 as adapter, export_default$2 as assertDto, export_default$3 as bound, export_default$4 as cloneDto, export_default$5 as debounce, export_default$6 as deserialize, export_default$7 as dto, export_default$8 as executeIfDtoDirtyAndMarkClean, export_default$9 as isDto, export_default$10 as isDtoClean, export_default$11 as isDtoDirty, isRequestAborted, isRequestError, isUnsanctionedRequest, isValidationError, markDtoClean, markDtoDirty, export_default$12 as serialize };
249
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/dto/BlobResponse.ts","../src/dto/Paginated.ts","../src/type/index.ts","../src/dto/RequestError.ts","../src/dto/ValidationError.ts","../src/adapter/HttpAdapter.ts","../src/decorator/adapter.ts","../src/decorator/bound.ts","../src/decorator/debounce.ts","../src/decorator/dto/symbols.ts","../src/decorator/dto/instance.ts","../src/decorator/dto/index.ts","../src/decorator/dto/helper/assertDto.ts","../src/decorator/dto/helper/cloneDto.ts","../src/decorator/dto/helper/executeIfDtoDirtyAndMarkClean.ts","../src/decorator/dto/helper/isDto.ts","../src/decorator/dto/helper/isDtoClean.ts","../src/decorator/dto/helper/isDtoDirty.ts","../src/decorator/dto/helper/markDtoClean.ts","../src/decorator/dto/helper/markDtoDirty.ts","../src/decorator/dto/serialize/deserialize.ts","../src/decorator/dto/serialize/serialize.ts","../src/http/BaseResponse.ts","../src/http/HttpClient.ts","../src/http/QueryString.ts","../src/http/RequestBuilder.ts","../src/http/BaseService.ts","../src/http/RequestAbortedError.ts","../src/http/helpers.ts"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1 +1,2 @@
1
- import{DateTime as e}from"luxon";import{debounce as t,getPrototypeChain as n,setObjectMethod as r,setObjectValue as i}from"@basmilius/utils";import{customRef as a,markRaw as o,toRaw as s}from"vue";function c(e){return class extends e{constructor(...e){throw Error(`@adapter: cannot create instance of class.`)}}}function ee(){return(e,t)=>{e[t]=e[t].bind(e)}}function te(e){return(n,r,i)=>{i.value=t(i.value,e,n)}}function ne(e,t){return e===t?!0:e===t}const l=Symbol(),u=Symbol(),d=Symbol(),f=Symbol(),p=Symbol(),m=Symbol(),h=Symbol(),g=Symbol(),_=Symbol(),re=Symbol(),ie=Symbol();function v(e){return e&&typeof e==`object`&&!!e[p]}function y(e){if(!v(e))throw Error(`@dto assert given object is not a class decorated with @Dto.`)}const ae=Symbol();function b(e,t=0,n){return function(...r){let i=e[ae]??=new WeakMap,a=r[t],o=n===void 0?`self`:r[n];if(typeof a!=`object`||!a)return e.call(this,...r);i.has(a)||i.set(a,[]);let s=i.get(a);if(!s.includes(o)){s.push(o);try{return e.call(this,...r)}finally{let e=s.lastIndexOf(o);e!==-1&&s.splice(e,1),s.length===0&&i.delete(a)}}}}function oe(e){return y(e),e.clone()}function x(e){return y(e),e[f]}const S=b(function(e,t,n,r){let i=e[ie];i(e,t,n,r),e[m]&&S(e[m],e[h],e[m][e[h]])},0,1),C=b(function(e){y(e),e[f]&&(e[f]=!1,S(e,f,!1,!0)),!(!e[u]||e[u].length===0)&&e[u].filter(x).forEach(C)});async function se(e,t){!v(e)||!x(e)||(await t(e),C(e))}function ce(e){return y(e),!e[f]}const w=b(function(e,t){y(e),e[f]||(e[f]=!0,S(e,f,!0,!1)),e[m]&&w(e[m],e[h])});function T(e,t,n){t[u]??=[],!t[u].includes(e)&&t[u].push(e),e[m]!==t&&(e[m]=t),e[h]!==n&&(e[h]=n)}function E(e,t,n){if(v(n))T(n,e,t);else if(Array.isArray(n)){for(let r of n)v(r)&&T(r,e,t);n[m]=e,n[h]=t}}function le(e,t){let n=e[re];n(e,t)}function D(e,t){if(u in t){let n=t[u].indexOf(e);n!==-1&&t[u].splice(n,1)}e[m]=void 0,e[h]=void 0}function ue(e,t){if(v(t))D(t,e);else if(Array.isArray(t)){for(let n of t)v(n)&&D(n,e);t[m]=void 0,t[h]=void 0}}const O={};var k={deleteProperty(e,t){if(Reflect.deleteProperty(e,t),A(e,t))return!0;let n=e[m];return n&&S(n,e[h],n[e[h]]),n&&w(n,e[h]),!0},get(e,t,n){if(t===_)return!0;if(A(e,t))return Reflect.get(e,t,n);let r=e[m];return r&&le(r,e[h]),Reflect.get(e,t)},set(e,t,n,r){if(A(e,t))return Reflect.set(e,t,n,r);let i=e[m];return i&&S(i,e[h],i[e[h]]),i&&w(i,e[h]),Reflect.set(e,t,n)}};function A(e,t){return typeof t==`symbol`||typeof e[t]==`function`||t===`length`}var de={get(e,t,n){if(t===_)return!0;if(typeof t==`symbol`)return Reflect.get(e,t,n);let r=e[d][t];if(!r||!r.get)return Reflect.get(e,t,n);let i=r.get.call(e);return le(e,t),E(e,t,i),i},getOwnPropertyDescriptor(e,t){return e[d][t]},ownKeys(e){return e[g]},set(e,t,n,r){if(typeof t==`symbol`)return Reflect.set(e,t,n,r);let i=e[d][t];if(!i||!i.set)return Reflect.set(e,t,n,r);let a=i.get?.call(e)??void 0;return ne(n,a)?!0:(ue(e,a),Array.isArray(n)&&!n[_]&&(n=new Proxy(n,k)),i.set.call(e,n),E(e,t,n),w(e,t),S(e,t,n,a),!0)}},fe={get(e,t,n){return t===`__v_isRef`?!1:t===_?!0:t in e?Reflect.get(e,t,n):Reflect.get(e.value,t)},getOwnPropertyDescriptor(e,t){return Reflect.getOwnPropertyDescriptor(e.value,t)},ownKeys(e){return Reflect.ownKeys(e.value)},set(e,t,n,r){return t in e?Reflect.set(e,t,n,r):Reflect.set(e.value,t,n)}},pe={construct(e,t,n){t=t.map(e=>Array.isArray(e)?new Proxy(e,k):e);let r=a((r,i)=>{let a=o(Reflect.construct(e,t,n));a[l]=t,a[f]=!1,a[re]=r,a[ie]=i;let s=new Proxy(a,de);return{get:()=>(r(),s),set:()=>void 0}});return new Proxy(r,fe)}};function me(){let e=this;y(e);let t=O[e[p]],n=new t(...e[l]);for(let[e,t]of Object.entries(this[d]))t.set&&(n[e]=v(this[e])?this[e].clone():this[e]);return n}function he(e){for(let t in e){let n=this[d][t];v(this[t])&&typeof e[t]==`object`?this[t].fill(e[t]):n&&n.set&&(this[t]=e[t])}}function ge(){let e={};for(let t of this[g]){let n=this[t];v(n)&&(n=n.toJSON()),e[t]=n}return e}function j(e){ve(e);let t=Object.freeze(n(e)),a=Object.keys(t);return i(e.prototype,d,t),i(e.prototype,p,e.name),i(e.prototype,g,a),i(e,Symbol.hasInstance,t=>typeof t==`object`&&t?.[p]===e.name),r(e,`clone`,me),r(e,`fill`,he),r(e,`toJSON`,ge),_e(e)}function _e(e){let t=new Proxy(e,pe);return O[e.name]=t,t}function ve(e){let t=Object.getPrototypeOf(e.prototype);if(p in t)throw Error(`⛔️ @dto ${e.name} cannot extend parent class which is also decorated with @dto ${t[p]}.`)}function M(e){return e.map(F)}function ye([,t]){return e.fromISO(t)}function N(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,F(t)]).filter(([,e])=>e!==void 0))}const P={};function be([,e,t,n,r]){if(!(t in O))throw Error(`Cannot restore @dto. Dto ${t} was not found.`);if(e in P)return P[e];let i=O[t],a=new i(...M(r));return a.fill(N(n)),P[e]=a,a}function xe(e){return Array.isArray(e)&&e[0]===3058}function Se(e){return Array.isArray(e)&&e[0]===3057}function F(e){switch(!0){case e===null:return null;case Array.isArray(e):switch(!0){case xe(e):return ye(e);case Se(e):return be(e);default:return M(e)}case typeof e==`object`:return N(e);default:return e}}function Ce(e){return F(JSON.parse(e))}function we(e){return[3058,e.toISO({extendedZone:!0,includeOffset:!0})]}function I(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,z(t)]).filter(([,e])=>e!==void 0))}function Te(){return`10000000-1000-4000-8000-100000000000`.replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))}function L(e){e=s(e);let t=e.toJSON();return[3057,Te(),e[p],I(t),R(e[l])]}function R(t){switch(!0){case t.every(v):return t.map(L);case t.every(e.isDateTime):return t.map(we);default:return t.map(z)}}function z(t){switch(!0){case t===null:return null;case Array.isArray(t):return R(t);case v(t):return L(t);case e.isDateTime(t):return we(t);case typeof t==`object`:return I(t);case typeof t==`boolean`:case typeof t==`number`:case typeof t==`string`:return t;default:return}}function Ee(e){return JSON.stringify(z(e))}function B(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let V=class{get blob(){return this.#e}get name(){return this.#t}#e;#t;constructor(e,t){this.#e=e,this.#t=t}};V=B([j],V);var H=V;let U=class{get items(){return this.#e}get page(){return this.#t}get pageSize(){return this.#n}get pages(){return this.#r}get total(){return this.#i}#e;#t;#n;#r;#i;constructor(e,t,n,r,i){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i}};U=B([j],U);var W=U;let G=class{get code(){return this.#e}get error(){return this.#t}get errorDescription(){return this.#n}get statusCode(){return this.#r}#e;#t;#n;#r;constructor(e,t,n,r){this.#e=e,this.#t=t,this.#n=n,this.#r=r}};G=B([j],G);var K=G;let q=class{get code(){return this.#e}get error(){return this.#t}get errorDescription(){return this.#n}get errors(){return this.#r}get params(){return this.#i}#e;#t;#n;#r;#i;constructor(e,t,n,r,i){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i}};q=B([j],q);var J=q,Y;let X=Y=class{static parsePaginatedAdapter(e,t){return new W(e.items.map(t),e.page,e.page_size,e.pages,e.total)}static parseFileNameFromContentDispositionHeader(t){let n=`download-${e.now().toFormat(`yyyy-MM-dd HH-mm-ss`)}`;if(!t.startsWith(`attachment`))return n;let r=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/.exec(t);return(r?.length||0)<2?n:r[1].replaceAll(`'`,``).replaceAll(`"`,``).replaceAll(`/`,`-`).replaceAll(`:`,`-`)}static parseRequestError(e,t){return new K(e.code,e.error,e.error_description,t)}static parseValidationError(e){let t;return e.errors&&(t={},Object.entries(e.errors).forEach(([e,n])=>{t[e]=Y.parseValidationError(n)})),new J(e.code,e.error,e.error_description,t,e.params)}};X=Y=B([c],X);var Z=class{get data(){return this.#e}get headers(){return this.#t.headers}get ok(){return this.statusCode>=200&&this.statusCode<300}get response(){return this.#t}get statusCode(){return this.#t.status}#e;#t;constructor(e,t){this.#e=e,this.#t=t}},De=class e{get authToken(){return this.#e}set authToken(e){this.#e=e}get baseUrl(){return this.#t}get dataField(){return this.#n}#e;#t;#n;constructor(e,t,n=!1){this.#e=e,this.#t=t,this.#n=n}static get instance(){if(e.#r===null)throw Error(`There is currently no HttpClient instance registered. Register one using the HttpClient.register() function.`);return e.#r}static#r=null;static register(t){e.#r=t}},Q=class extends Error{};const $={};var Oe=class t{get client(){return this.#e}get options(){return this.#r}get path(){return this.#n}set path(e){this.#n=e}get query(){return this.#i}set query(e){this.#i=e}#e;#t=null;#n;#r={};#i=null;constructor(e,t){this.#e=t??De.instance,this.#r.cache=`no-cache`,this.#r.method=`GET`,this.#n=e}autoCancel(e){return this.#t=e,this}bearerToken(e){return e??=this.#e.authToken,e?this.header(`Authorization`,`Bearer ${e}`):(this.#r.headers&&`Authorization`in this.#r.headers&&delete this.#r.headers.Authorization,this)}body(e,t=`application/octet-stream`){return e instanceof FormData?t=null:(Array.isArray(e)||typeof e==`object`)&&(e=JSON.stringify(e),t=`application/json`),this.#r.body=e,t===null?this:this.header(`Content-Type`,t)}header(e,t){return this.#r.headers=this.#r.headers||{},this.#r.headers[e]=t,this}method(e){return this.#r.method=e.toUpperCase(),this}queryString(e){return this.#i=e,this}signal(e=null){return this.#r.signal=e,this}async fetch(){return this.#a().then(e=>e.json())}async fetchBlob(){let t=await this.#a();if(t.status!==200){let e=await t.json();throw`code`in e&&`error`in e&&`error_description`in e?new K(e.code,e.error,e.error_description,t.status):new K(-1,`failed_without_info`,`Request failed without any information from the backend.`,t.status)}let n=t.headers.has(`content-disposition`)?X.parseFileNameFromContentDispositionHeader(t.headers.get(`content-disposition`)??``):`download-${e.now().toFormat(`yyyy-MM-dd HH-mm-ss`)}`;return new H(await t.blob(),n)}async run(){let{data:e,response:t}=await this.#o();return new Z(e,t)}async runAdapter(e){let{data:t,response:n}=await this.#o();return new Z(e(t),n)}async runArrayAdapter(e){return this.runAdapter(t=>t.map(e))}async runEmpty(){return await this.#o()}async runPaginatedAdapter(e){return this.runAdapter(t=>X.parsePaginatedAdapter(t,e))}async runData(){return await this.#o()}async runDataKey(e){let{data:t,response:n}=await this.#o();return new Z(t[e],n)}async runStatusCode(){return(await this.#o()).statusCode}async#a(){if(this.#t!==null){this.#t in $&&$[this.#t].abort(new Q);let e=new AbortController;$[this.#t]=e,this.signal(e.signal)}let e=this.path;this.query!==null&&(e+=`?${this.query.build()}`);let t=await fetch(this.client.baseUrl+e,this.options);return this.#t!==null&&delete $[this.#t],t}async#o(){return await this.#a().then(e=>t.#s(e,this.client.dataField))}static async#s(e,t){if(e.status===204)return new Z(null,e);if(e.headers.has(`content-type`)&&e.headers.get(`content-type`)?.startsWith(`application/json`)){let n=await e.json();if(n&&typeof n==`object`&&`code`in n&&`error`in n&&`error_description`in n)throw`errors`in n?X.parseValidationError(n):X.parseRequestError(n,e.status);return t&&`data`in n?new Z(n.data,e):new Z(n,e)}if(e.status===401||e.status===403||(await e.text()).length===0&&e.status>=200&&e.status<300)return new Z(null,e);throw new K(-1,`not_a_json_response`,`The response was not a JSON response.`,e.status)}},ke=class{request(e,t){return new Oe(e,t)}},Ae=class e{#e;constructor(){this.#e=new URLSearchParams}build(){return this.#e.toString()}append(e,t){return this.#t(this.#e.append.bind(this.#e),e,t)}appendArray(e,t){return t?.forEach(t=>this.append(e,t)),this}delete(e){return this.#e.delete(e),this}get(e){return this.#e.get(e)}getAll(e){return this.#e.getAll(e)}has(e){return this.#e.has(e)}set(e,t){return this.#t(this.#e.set.bind(this.#e),e,t)}#t(e,t,n){if(!n&&n!==!1)return this;switch(typeof n){case`boolean`:e(t,n?`true`:`false`);break;case`number`:e(t,n.toString(10));break;case`string`:e(t,n);break}return this}static builder(){return new e}};function je(e){return e instanceof Q}function Me(e){return e instanceof K}function Ne(e){return e instanceof K&&(e=e.statusCode),e===403||e===401}function Pe(e){return e instanceof J}export{Z as BaseResponse,ke as BaseService,H as BlobResponse,X as HttpAdapter,De as HttpClient,W as Paginated,Ae as QueryString,Q as RequestAbortedError,Oe as RequestBuilder,K as RequestError,J as ValidationError,c as adapter,y as assertDto,ee as bound,oe as cloneDto,te as debounce,Ce as deserialize,j as dto,se as executeIfDtoDirtyAndMarkClean,v as isDto,ce as isDtoClean,x as isDtoDirty,je as isRequestAborted,Me as isRequestError,Ne as isUnsanctionedRequest,Pe as isValidationError,C as markDtoClean,w as markDtoDirty,Ee as serialize};
1
+ import{DateTime as e}from"luxon";import{debounce as t,getPrototypeChain as n,setObjectMethod as r,setObjectValue as i}from"@basmilius/utils";import{customRef as a,markRaw as o,toRaw as s}from"vue";function c(e){return class extends e{constructor(...e){throw Error(`@adapter: cannot create instance of class.`)}}}function ee(){return(e,t)=>{e[t]=e[t].bind(e)}}function te(e){return(n,r,i)=>{i.value=t(i.value,e,n)}}function ne(e,t){return e===t?!0:e===t}const l=Symbol(),u=Symbol(),d=Symbol(),f=Symbol(),p=Symbol(),m=Symbol(),h=Symbol(),g=Symbol(),_=Symbol(),re=Symbol(),ie=Symbol();function v(e){return e&&typeof e==`object`&&!!e[p]}function y(e){if(!v(e))throw Error(`@dto assert given object is not a class decorated with @Dto.`)}const ae=Symbol();function b(e,t=0,n){return function(...r){let i=e[ae]??=new WeakMap,a=r[t],o=n===void 0?`self`:r[n];if(typeof a!=`object`||!a)return e.call(this,...r);i.has(a)||i.set(a,[]);let s=i.get(a);if(!s.includes(o)){s.push(o);try{return e.call(this,...r)}finally{let e=s.lastIndexOf(o);e!==-1&&s.splice(e,1),s.length===0&&i.delete(a)}}}}function oe(e){return y(e),e.clone()}function x(e){return y(e),e[f]}const S=b(function(e,t,n,r){let i=e[ie];i(e,t,n,r),e[m]&&S(e[m],e[h],e[m][e[h]])},0,1),C=b(function(e){y(e),e[f]&&(e[f]=!1,S(e,f,!1,!0)),!(!e[u]||e[u].length===0)&&e[u].filter(x).forEach(C)});async function se(e,t){!v(e)||!x(e)||(await t(e),C(e))}function ce(e){return y(e),!e[f]}const w=b(function(e,t){y(e),e[f]||(e[f]=!0,S(e,f,!0,!1)),e[m]&&w(e[m],e[h])});function T(e,t,n){t[u]??=[],!t[u].includes(e)&&t[u].push(e),e[m]!==t&&(e[m]=t),e[h]!==n&&(e[h]=n)}function E(e,t,n){if(v(n))T(n,e,t);else if(Array.isArray(n)){for(let r of n)v(r)&&T(r,e,t);n[m]=e,n[h]=t}}function le(e,t){let n=e[re];n(e,t)}function D(e,t){if(u in t){let n=t[u].indexOf(e);n!==-1&&t[u].splice(n,1)}e[m]=void 0,e[h]=void 0}function ue(e,t){if(v(t))D(t,e);else if(Array.isArray(t)){for(let n of t)v(n)&&D(n,e);t[m]=void 0,t[h]=void 0}}const O={};var k={deleteProperty(e,t){if(Reflect.deleteProperty(e,t),A(e,t))return!0;let n=e[m];return n&&S(n,e[h],n[e[h]]),n&&w(n,e[h]),!0},get(e,t,n){if(t===_)return!0;if(A(e,t))return Reflect.get(e,t,n);let r=e[m];return r&&le(r,e[h]),Reflect.get(e,t)},set(e,t,n,r){if(A(e,t))return Reflect.set(e,t,n,r);let i=e[m];return i&&S(i,e[h],i[e[h]]),i&&w(i,e[h]),Reflect.set(e,t,n)}};function A(e,t){return typeof t==`symbol`||typeof e[t]==`function`||t===`length`}var de={get(e,t,n){if(t===_)return!0;if(typeof t==`symbol`)return Reflect.get(e,t,n);let r=e[d][t];if(!r||!r.get)return Reflect.get(e,t,n);let i=r.get.call(e);return le(e,t),E(e,t,i),i},getOwnPropertyDescriptor(e,t){return e[d][t]},ownKeys(e){return e[g]},set(e,t,n,r){if(typeof t==`symbol`)return Reflect.set(e,t,n,r);let i=e[d][t];if(!i||!i.set)return Reflect.set(e,t,n,r);let a=i.get?.call(e)??void 0;return ne(n,a)?!0:(ue(e,a),Array.isArray(n)&&!n[_]&&(n=new Proxy(n,k)),i.set.call(e,n),E(e,t,n),w(e,t),S(e,t,n,a),!0)}},fe={get(e,t,n){return t===`__v_isRef`?!1:t===_?!0:t in e?Reflect.get(e,t,n):Reflect.get(e.value,t)},getOwnPropertyDescriptor(e,t){return Reflect.getOwnPropertyDescriptor(e.value,t)},ownKeys(e){return Reflect.ownKeys(e.value)},set(e,t,n,r){return t in e?Reflect.set(e,t,n,r):Reflect.set(e.value,t,n)}},pe={construct(e,t,n){t=t.map(e=>Array.isArray(e)?new Proxy(e,k):e);let r=a((r,i)=>{let a=o(Reflect.construct(e,t,n));a[l]=t,a[f]=!1,a[re]=r,a[ie]=i;let s=new Proxy(a,de);return{get:()=>(r(),s),set:()=>void 0}});return new Proxy(r,fe)}};function me(){let e=this;y(e);let t=O[e[p]],n=new t(...e[l]);for(let[e,t]of Object.entries(this[d]))t.set&&(n[e]=v(this[e])?this[e].clone():this[e]);return n}function he(e){for(let t in e){let n=this[d][t];v(this[t])&&typeof e[t]==`object`?this[t].fill(e[t]):n&&n.set&&(this[t]=e[t])}}function ge(){let e={};for(let t of this[g]){let n=this[t];v(n)&&(n=n.toJSON()),e[t]=n}return e}function j(e){ve(e);let t=Object.freeze(n(e)),a=Object.keys(t);return i(e.prototype,d,t),i(e.prototype,p,e.name),i(e.prototype,g,a),i(e,Symbol.hasInstance,t=>typeof t==`object`&&t?.[p]===e.name),r(e,`clone`,me),r(e,`fill`,he),r(e,`toJSON`,ge),_e(e)}function _e(e){let t=new Proxy(e,pe);return O[e.name]=t,t}function ve(e){let t=Object.getPrototypeOf(e.prototype);if(p in t)throw Error(`⛔️ @dto ${e.name} cannot extend parent class which is also decorated with @dto ${t[p]}.`)}function M(e){return e.map(F)}function ye([,t]){return e.fromISO(t)}function N(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,F(t)]).filter(([,e])=>e!==void 0))}const P={};function be([,e,t,n,r]){if(!(t in O))throw Error(`Cannot restore @dto. Dto ${t} was not found.`);if(e in P)return P[e];let i=O[t],a=new i(...M(r));return a.fill(N(n)),P[e]=a,a}function xe(e){return Array.isArray(e)&&e[0]===3058}function Se(e){return Array.isArray(e)&&e[0]===3057}function F(e){switch(!0){case e===null:return null;case Array.isArray(e):switch(!0){case xe(e):return ye(e);case Se(e):return be(e);default:return M(e)}case typeof e==`object`:return N(e);default:return e}}function Ce(e){return F(JSON.parse(e))}function we(e){return[3058,e.toISO({extendedZone:!0,includeOffset:!0})]}function I(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,z(t)]).filter(([,e])=>e!==void 0))}function Te(){return`10000000-1000-4000-8000-100000000000`.replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))}function L(e){e=s(e);let t=e.toJSON();return[3057,Te(),e[p],I(t),R(e[l])]}function R(t){switch(!0){case t.every(v):return t.map(L);case t.every(e.isDateTime):return t.map(we);default:return t.map(z)}}function z(t){switch(!0){case t===null:return null;case Array.isArray(t):return R(t);case v(t):return L(t);case e.isDateTime(t):return we(t);case typeof t==`object`:return I(t);case typeof t==`boolean`:case typeof t==`number`:case typeof t==`string`:return t;default:return}}function Ee(e){return JSON.stringify(z(e))}function B(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let V=class{get blob(){return this.#e}get name(){return this.#t}#e;#t;constructor(e,t){this.#e=e,this.#t=t}};V=B([j],V);var H=V;let U=class{get items(){return this.#e}get page(){return this.#t}get pageSize(){return this.#n}get pages(){return this.#r}get total(){return this.#i}#e;#t;#n;#r;#i;constructor(e,t,n,r,i){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i}};U=B([j],U);var W=U;let G=class{get code(){return this.#e}get error(){return this.#t}get errorDescription(){return this.#n}get statusCode(){return this.#r}#e;#t;#n;#r;constructor(e,t,n,r){this.#e=e,this.#t=t,this.#n=n,this.#r=r}};G=B([j],G);var K=G;let q=class{get code(){return this.#e}get error(){return this.#t}get errorDescription(){return this.#n}get errors(){return this.#r}get params(){return this.#i}#e;#t;#n;#r;#i;constructor(e,t,n,r,i){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i}};q=B([j],q);var J=q,Y;let X=Y=class{static parsePaginatedAdapter(e,t){return new W(e.items.map(t),e.page,e.page_size,e.pages,e.total)}static parseFileNameFromContentDispositionHeader(t){let n=`download-${e.now().toFormat(`yyyy-MM-dd HH-mm-ss`)}`;if(!t.startsWith(`attachment`))return n;let r=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/.exec(t);return(r?.length||0)<2?n:r[1].replaceAll(`'`,``).replaceAll(`"`,``).replaceAll(`/`,`-`).replaceAll(`:`,`-`)}static parseRequestError(e,t){return new K(e.code,e.error,e.error_description,t)}static parseValidationError(e){let t;return e.errors&&(t={},Object.entries(e.errors).forEach(([e,n])=>{t[e]=Y.parseValidationError(n)})),new J(e.code,e.error,e.error_description,t,e.params)}};X=Y=B([c],X);var Z=class{get data(){return this.#e}get headers(){return this.#t.headers}get ok(){return this.statusCode>=200&&this.statusCode<300}get response(){return this.#t}get statusCode(){return this.#t.status}#e;#t;constructor(e,t){this.#e=e,this.#t=t}},De=class e{get authToken(){return this.#e}set authToken(e){this.#e=e}get baseUrl(){return this.#t}get dataField(){return this.#n}#e;#t;#n;constructor(e,t,n=!1){this.#e=e,this.#t=t,this.#n=n}static get instance(){if(e.#r===null)throw Error(`There is currently no HttpClient instance registered. Register one using the HttpClient.register() function.`);return e.#r}static#r=null;static register(t){e.#r=t}},Q=class extends Error{};const $={};var Oe=class t{get client(){return this.#e}get options(){return this.#r}get path(){return this.#n}set path(e){this.#n=e}get query(){return this.#i}set query(e){this.#i=e}#e;#t=null;#n;#r={};#i=null;constructor(e,t){this.#e=t??De.instance,this.#r.cache=`no-cache`,this.#r.method=`GET`,this.#n=e}autoCancel(e){return this.#t=e,this}bearerToken(e){return e??=this.#e.authToken,e?this.header(`Authorization`,`Bearer ${e}`):(this.#r.headers&&`Authorization`in this.#r.headers&&delete this.#r.headers.Authorization,this)}body(e,t=`application/octet-stream`){return e instanceof FormData?t=null:(Array.isArray(e)||typeof e==`object`)&&(e=JSON.stringify(e),t=`application/json`),this.#r.body=e,t===null?this:this.header(`Content-Type`,t)}header(e,t){return this.#r.headers=this.#r.headers||{},this.#r.headers[e]=t,this}method(e){return this.#r.method=e.toUpperCase(),this}queryString(e){return this.#i=e,this}signal(e=null){return this.#r.signal=e,this}async fetch(){return this.#a().then(e=>e.json())}async fetchBlob(){let t=await this.#a();if(t.status!==200){let e=await t.json();throw`code`in e&&`error`in e&&`error_description`in e?new K(e.code,e.error,e.error_description,t.status):new K(-1,`failed_without_info`,`Request failed without any information from the backend.`,t.status)}let n=t.headers.has(`content-disposition`)?X.parseFileNameFromContentDispositionHeader(t.headers.get(`content-disposition`)??``):`download-${e.now().toFormat(`yyyy-MM-dd HH-mm-ss`)}`;return new H(await t.blob(),n)}async run(){let{data:e,response:t}=await this.#o();return new Z(e,t)}async runAdapter(e){let{data:t,response:n}=await this.#o();return new Z(e(t),n)}async runArrayAdapter(e){return this.runAdapter(t=>t.map(e))}async runEmpty(){return await this.#o()}async runPaginatedAdapter(e){return this.runAdapter(t=>X.parsePaginatedAdapter(t,e))}async runData(){return await this.#o()}async runDataKey(e){let{data:t,response:n}=await this.#o();return new Z(t[e],n)}async runStatusCode(){return(await this.#o()).statusCode}async#a(){if(this.#t!==null){this.#t in $&&$[this.#t].abort(new Q);let e=new AbortController;$[this.#t]=e,this.signal(e.signal)}let e=this.path;this.query!==null&&(e+=`?${this.query.build()}`);let t=await fetch(this.client.baseUrl+e,this.options);return this.#t!==null&&delete $[this.#t],t}async#o(){return await this.#a().then(e=>t.#s(e,this.client.dataField))}static async#s(e,t){if(e.status===204)return new Z(null,e);if(e.headers.has(`content-type`)&&e.headers.get(`content-type`)?.startsWith(`application/json`)){let n=await e.json();if(n&&typeof n==`object`&&`code`in n&&`error`in n&&`error_description`in n)throw`errors`in n?X.parseValidationError(n):X.parseRequestError(n,e.status);return t&&`data`in n?new Z(n.data,e):new Z(n,e)}if(e.status===401||e.status===403||(await e.text()).length===0&&e.status>=200&&e.status<300)return new Z(null,e);throw new K(-1,`not_a_json_response`,`The response was not a JSON response.`,e.status)}},ke=class{request(e,t){return new Oe(e,t)}},Ae=class e{#e;constructor(){this.#e=new URLSearchParams}build(){return this.#e.toString()}append(e,t){return this.#t(this.#e.append.bind(this.#e),e,t)}appendArray(e,t){return t?.forEach(t=>this.append(e,t)),this}delete(e){return this.#e.delete(e),this}get(e){return this.#e.get(e)}getAll(e){return this.#e.getAll(e)}has(e){return this.#e.has(e)}set(e,t){return this.#t(this.#e.set.bind(this.#e),e,t)}#t(e,t,n){if(!n&&n!==!1)return this;switch(typeof n){case`boolean`:e(t,n?`true`:`false`);break;case`number`:e(t,n.toString(10));break;case`string`:e(t,n);break}return this}static builder(){return new e}};function je(e){return e instanceof Q}function Me(e){return e instanceof K}function Ne(e){return e instanceof K&&(e=e.statusCode),e===403||e===401}function Pe(e){return e instanceof J}export{Z as BaseResponse,ke as BaseService,H as BlobResponse,X as HttpAdapter,De as HttpClient,W as Paginated,Ae as QueryString,Q as RequestAbortedError,Oe as RequestBuilder,K as RequestError,J as ValidationError,c as adapter,y as assertDto,ee as bound,oe as cloneDto,te as debounce,Ce as deserialize,j as dto,se as executeIfDtoDirtyAndMarkClean,v as isDto,ce as isDtoClean,x as isDtoDirty,je as isRequestAborted,Me as isRequestError,Ne as isUnsanctionedRequest,Pe as isValidationError,C as markDtoClean,w as markDtoDirty,Ee as serialize};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["isDto","circularProtect","circularProtect","isDtoDirty","isDto","isDtoDirty","circularProtect","isDto","isDto","areEqual","arrayProxy","arrayProxy","instanceProxy","refProxy","isDto","isDto","isDto","clone","fill","toJSON","classProxy","isDto","instance","deserializeUnknown","deserializeUnknown","deserializeArray","deserializeObject","isSerializedDateTime","deserializeDateTime","isSerializedDto","deserializeDto","deserializeArray","deserializeObject","deserializeUnknown","serializeUnknown","uuid","serializeObject","serializeArray","isDto","serializeDto","serializeDateTime","serializeUnknown","serializeArray","isDto","serializeDto","serializeDateTime","serializeObject","serializeUnknown","#blob","#name","dto","#items","#page","#pageSize","#pages","#total","dto","#code","#error","#errorDescription","#statusCode","dto","#code","#error","#errorDescription","#errors","#params","dto","Paginated","RequestError","ValidationError","adapter","#data","#response","#authToken","#baseUrl","#dataField","#instance","#client","#options","#path","#query","#autoCancelIdentifier","#execute","RequestError","BlobResponse","#executeSafe","RequestAbortedError","#handleResponse","#builder","#add","RequestAbortedError","RequestError","ValidationError"],"sources":["../src/decorator/adapter.ts","../src/decorator/bound.ts","../src/decorator/debounce.ts","../src/decorator/dto/const.ts","../src/decorator/dto/helper/areEqual.ts","../src/decorator/dto/symbols.ts","../src/decorator/dto/helper/isDto.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/arrayProxy.ts","../src/decorator/dto/instanceProxy.ts","../src/decorator/dto/refProxy.ts","../src/decorator/dto/classProxy.ts","../src/decorator/dto/clone.ts","../src/decorator/dto/fill.ts","../src/decorator/dto/toJSON.ts","../src/decorator/dto/index.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/serializeDateTime.ts","../src/decorator/dto/serialize/serializeObject.ts","../src/decorator/dto/serialize/uuid.ts","../src/decorator/dto/serialize/serializeDto.ts","../src/decorator/dto/serialize/serializeArray.ts","../src/decorator/dto/serialize/serializeUnknown.ts","../src/decorator/dto/serialize/serialize.ts","../src/dto/BlobResponse.ts","../src/dto/Paginated.ts","../src/dto/RequestError.ts","../src/dto/ValidationError.ts","../src/adapter/HttpAdapter.ts","../src/http/BaseResponse.ts","../src/http/HttpClient.ts","../src/http/RequestAbortedError.ts","../src/http/RequestBuilder.ts","../src/http/BaseService.ts","../src/http/QueryString.ts","../src/http/helpers.ts"],"sourcesContent":["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","export default function () {\n return (target: object, method: string): void => {\n target[method] = target[method].bind(target);\n };\n}\n","import { debounce } from '@basmilius/utils';\n\nexport default function (interval: number): Function {\n return (target: object, _: string, descriptor: PropertyDescriptor) => {\n descriptor.value = debounce(descriptor.value, interval, target);\n };\n}\n","export const ENABLE_CIRCULAR_LOGGING = false;\nexport const ENABLE_DIRTY_LOGGING = false;\nexport const ENABLE_REACTIVE_LOGGING = false;\nexport const ENABLE_GET_LOGGING = false;\nexport const ENABLE_SET_LOGGING = false;\nexport const ENABLE_SERIALIZATION_LOGGING = false;\nexport const OVERRIDE_CONSOLE_LOG = false;\n\nexport const SERIALIZED_DATETIME = 0xBF2;\nexport const SERIALIZED_DTO = 0xBF1;\n","/**\n * Checks if the two given values are equal. When both values are a\n * dto, the check is done by firstly converthing them to JSON.\n */\nexport default function (a: unknown, b: unknown): boolean {\n if (a === b) {\n return true;\n }\n\n return a === b;\n}\n","export const ARGS: unique symbol = Symbol();\nexport const CHILDREN: unique symbol = Symbol();\nexport const DESCRIPTORS: unique symbol = Symbol();\nexport const DIRTY: unique symbol = Symbol();\nexport const NAME: unique symbol = Symbol();\nexport const PARENT: unique symbol = Symbol();\nexport const PARENT_KEY: unique symbol = Symbol();\nexport const PROPERTIES: unique symbol = Symbol();\nexport const PROXY: unique symbol = Symbol();\nexport const TRACK: unique symbol = Symbol();\nexport const TRIGGER: unique symbol = Symbol();\n","import { NAME } from '../symbols';\nimport type DtoInstance from '../instance';\n\n/**\n * Checks if the given object is a dto.\n */\nexport default function (obj: unknown): obj is DtoInstance<unknown> {\n return obj && typeof obj === 'object' && !!obj[NAME];\n}\n","import type DtoInstance from '../instance';\nimport isDto from './isDto';\n\n/**\n * Asserts that the given object is a dto.\n */\nexport default function (obj: unknown): asserts obj is DtoInstance<never> {\n if (!isDto(obj)) {\n throw new Error('@dto assert given object is not a class decorated with @Dto.');\n }\n}\n","import { ENABLE_CIRCULAR_LOGGING } from '../const';\nimport type DtoInstance from '../instance';\n\ntype CircularMap = WeakMap<DtoInstance<unknown>, (string | symbol)[]>;\nconst CIRCULAR_MAP = Symbol();\n\nexport default function <T extends (...args: any[]) => unknown>(fn: T, arg1: number = 0, arg2?: number): T {\n return function (...args: any[]): unknown {\n const map: CircularMap = fn[CIRCULAR_MAP] ??= new WeakMap();\n const primary = args[arg1];\n const secondary = arg2 !== undefined ? args[arg2] : 'self';\n\n if (typeof primary !== 'object' || primary === null) {\n return fn.call(this, ...args);\n }\n\n if (!map.has(primary)) {\n map.set(primary, []);\n }\n\n const visited = map.get(primary)!;\n\n if (visited.includes(secondary)) {\n ENABLE_CIRCULAR_LOGGING && console.log('%c@dto %ccircular protect %cdetected a circular reference', 'color: #0891b2', 'color: #059669', 'color: #1d4ed8', {fn, primary, secondary});\n return;\n }\n\n visited.push(secondary);\n\n try {\n return fn.call(this, ...args);\n } finally {\n const index = visited.lastIndexOf(secondary);\n\n if (index !== -1) {\n visited.splice(index, 1);\n }\n\n if (visited.length === 0) {\n map.delete(primary);\n }\n }\n } as T;\n}\n","import assertDto from './assertDto';\n\n/**\n * Clones the given dto.\n */\nexport default function <T>(obj: T): T {\n assertDto(obj);\n return obj.clone() as T;\n}\n","import { DIRTY } from '../symbols';\nimport assertDto from './assertDto';\n\n/**\n * Checks if the given dto is dirty.\n */\nexport default function (obj: unknown): boolean {\n assertDto(obj);\n return obj[DIRTY];\n}\n","import { ENABLE_REACTIVE_LOGGING } from '../const';\nimport { NAME, PARENT, PARENT_KEY, TRIGGER } from '../symbols';\nimport type DtoInstance from '../instance';\nimport circularProtect from './circularProtect';\n\n/**\n * Trigger for when a dto property is being updated.\n */\nconst triggerDto: (dto: DtoInstance<unknown>, key: string | symbol, value: unknown, oldValue?: unknown) => void = circularProtect(function (dto: DtoInstance<unknown>, key: string | symbol, value: unknown, oldValue?: unknown): void {\n const trigger = dto[TRIGGER];\n trigger(dto, key, value, oldValue);\n\n ENABLE_REACTIVE_LOGGING && console.log(`%c@dto %c${dto[NAME]} %ctrigger`, 'color: #0891b2', 'color: #059669', 'color: #1d4ed8', key, {dto, value, oldValue});\n\n dto[PARENT] && triggerDto(dto[PARENT], dto[PARENT_KEY], dto[PARENT][dto[PARENT_KEY]]);\n}, 0, 1);\n\nexport default triggerDto;\n","import { ENABLE_DIRTY_LOGGING } from '../const';\nimport { CHILDREN, DIRTY, NAME } from '../symbols';\nimport assertDto from './assertDto';\nimport circularProtect from './circularProtect';\nimport isDtoDirty from './isDtoDirty';\nimport triggerDto from './triggerDto';\n\n/**\n * Marks the given dto clean.\n */\nconst markDtoClean: (obj: unknown) => void = circularProtect(function (obj: unknown): void {\n assertDto(obj);\n\n if (obj[DIRTY]) {\n obj[DIRTY] = false;\n ENABLE_DIRTY_LOGGING && console.log(`%c@dto %c${obj[NAME]} %cdirty`, 'color: #0891b2', 'color: #059669', 'color: #1d4ed8', 'marked clean', {obj});\n triggerDto(obj, DIRTY, false, true);\n }\n\n if (!obj[CHILDREN] || obj[CHILDREN].length === 0) {\n return;\n }\n\n obj[CHILDREN]\n .filter(isDtoDirty)\n .forEach(markDtoClean);\n});\n\nexport default markDtoClean;\n","import type DtoInstance from '../instance';\nimport isDto from './isDto';\nimport isDtoDirty from './isDtoDirty';\nimport markDtoClean from './markDtoClean';\n\n/**\n * Executes the given function if the given dto is marked dirty.\n */\nexport default async function <T, R = void>(obj: T, fn: (dto: T & DtoInstance<T>) => Promise<R>): Promise<void> {\n if (!isDto(obj) || !isDtoDirty(obj)) {\n return;\n }\n\n await fn(obj);\n markDtoClean(obj);\n}\n","import type DtoInstance from '../instance';\n\nexport default function <T>(dto: DtoInstance<T>): DtoInstance<T> {\n return (dto as any)?.value ?? dto;\n}\n","import { DIRTY } from '../symbols';\nimport assertDto from './assertDto';\n\n/**\n * Checks if the given dto is clean.\n */\nexport default function (obj: unknown): boolean {\n assertDto(obj);\n return !obj[DIRTY];\n}\n","import { ENABLE_DIRTY_LOGGING } from '../const';\nimport { DIRTY, NAME, PARENT, PARENT_KEY } from '../symbols';\nimport assertDto from './assertDto';\nimport circularProtect from './circularProtect';\nimport triggerDto from './triggerDto';\n\n/**\n * Marks the given dto dirty.\n */\nconst markDtoDirty: (obj: unknown, key?: string | number) => void = circularProtect(function (obj: unknown, key?: string | number): void {\n assertDto(obj);\n\n if (!obj[DIRTY]) {\n obj[DIRTY] = true;\n ENABLE_DIRTY_LOGGING && console.log(`%c@dto %c${obj[NAME]} %cdirty`, 'color: #0891b2', 'color: #059669', 'color: #1d4ed8', 'marked dirty', {obj, key});\n triggerDto(obj, DIRTY, true, false);\n }\n\n if (!obj[PARENT]) {\n return;\n }\n\n markDtoDirty(obj[PARENT], obj[PARENT_KEY]);\n});\n\nexport default markDtoDirty;\n","import { CHILDREN, PARENT, PARENT_KEY } from '../symbols';\nimport type DtoInstance from '../instance';\n\n/**\n * Creates a parent-child relationship between the given two dtos.\n */\nexport default function (dto: DtoInstance<unknown>, parent: DtoInstance<unknown>, key: string): void {\n parent[CHILDREN] ??= [];\n !parent[CHILDREN].includes(dto) && parent[CHILDREN].push(dto);\n\n dto[PARENT] !== parent && (dto[PARENT] = parent);\n dto[PARENT_KEY] !== key && (dto[PARENT_KEY] = key);\n}\n","import { PARENT, PARENT_KEY } from '../symbols';\nimport type DtoInstance from '../instance';\nimport isDto from './isDto';\nimport relateDtoTo from './relateDtoTo';\n\n/**\n * Creates relationships between the given value and dto.\n */\nexport default function (dto: DtoInstance<unknown>, key: string, value: unknown): void {\n if (isDto(value)) {\n relateDtoTo(value, dto, key);\n } else if (Array.isArray(value)) {\n for (const item of value) {\n if (!isDto(item)) {\n continue;\n }\n\n relateDtoTo(item, dto, key);\n }\n\n value[PARENT] = dto;\n value[PARENT_KEY] = key;\n }\n}\n","import { ENABLE_REACTIVE_LOGGING } from '../const';\nimport { NAME, TRACK } from '../symbols';\nimport type DtoInstance from '../instance';\n\n/**\n * Tracking for when a dto property is being accessed.\n */\nexport default function trackDto(dto: DtoInstance<unknown>, key: string): void {\n const track = dto[TRACK];\n track(dto, key);\n\n ENABLE_REACTIVE_LOGGING && console.log(`%c@dto %c${dto[NAME]} %ctrack`, 'color: #0891b2', 'color: #059669', 'color: #1d4ed8', key, {dto});\n}\n","import { CHILDREN, PARENT, PARENT_KEY } from '../symbols';\nimport type DtoInstance from '../instance';\n\n/**\n * Removes a parent-child relationship between the given two dtos.\n */\nexport default function (dto: DtoInstance<unknown>, parent: DtoInstance<unknown>): void {\n if (CHILDREN in parent) {\n const index = parent[CHILDREN].indexOf(dto);\n\n if (index !== -1) {\n parent[CHILDREN].splice(index, 1);\n }\n }\n\n dto[PARENT] = undefined;\n dto[PARENT_KEY] = undefined;\n}\n","import { PARENT, PARENT_KEY } from '../symbols';\nimport type DtoInstance from '../instance';\nimport isDto from './isDto';\nimport unrelateDtoFrom from './unrelateDtoFrom';\n\n/**\n * Removes relationships between the given value and dto.\n */\nexport default function (dto: DtoInstance<unknown>, value: unknown): void {\n if (isDto(value)) {\n unrelateDtoFrom(value, dto);\n } else if (Array.isArray(value)) {\n for (const item of value) {\n if (isDto(item)) {\n unrelateDtoFrom(item, dto);\n }\n }\n\n value[PARENT] = undefined;\n value[PARENT_KEY] = undefined;\n }\n}\n","import type { Constructor } from '@basmilius/utils';\nimport type DtoInstance from './instance';\n\nexport const DTO_CLASS_MAP: Record<string, Constructor<DtoInstance<unknown>>> = {};\n","import { markDtoDirty, trackDto, triggerDto } from './helper';\nimport { PARENT, PARENT_KEY, PROXY } from './symbols';\nimport type DtoInstance from './instance';\n\nexport default {\n /**\n * Trap for when a property is deleted from the target. This\n * will mark the parent dto as dirty and trigger an update.\n */\n deleteProperty(target: unknown[], key: string | symbol): boolean {\n Reflect.deleteProperty(target, key);\n\n if (ignored(target, key)) {\n return true;\n }\n\n const dto = target[PARENT] as DtoInstance<unknown>;\n dto && triggerDto(dto, target[PARENT_KEY], dto[target[PARENT_KEY]]);\n dto && markDtoDirty(dto, target[PARENT_KEY]);\n\n return true;\n },\n\n /**\n * Trap for when a property of the target is being accessed. The\n * property access is being tracked for further updates.\n */\n get(target: unknown[], key: string | symbol, receiver: any): unknown {\n if (key === PROXY) {\n return true;\n }\n\n if (ignored(target, key)) {\n return Reflect.get(target, key, receiver);\n }\n\n const dto = target[PARENT] as DtoInstance<unknown>;\n dto && trackDto(dto, target[PARENT_KEY]);\n\n return Reflect.get(target, key);\n },\n\n /**\n * Trap for when a property of the target is being updated. This\n * will mark the parent dto as dirty and trigger an update.\n */\n set(target: unknown[], key: string | symbol, value: unknown, receiver: any) {\n if (ignored(target, key)) {\n return Reflect.set(target, key, value, receiver);\n }\n\n const dto = target[PARENT] as DtoInstance<unknown>;\n dto && triggerDto(dto, target[PARENT_KEY], dto[target[PARENT_KEY]]);\n dto && markDtoDirty(dto, target[PARENT_KEY]);\n\n return Reflect.set(target, key, value);\n }\n} satisfies ProxyHandler<unknown[]> as ProxyHandler<unknown[]>;\n\n/**\n * Checks if the given key should be ignored by the proxy.\n */\nfunction ignored(target: unknown[], key: string | symbol): key is symbol {\n return typeof key === 'symbol' || typeof target[key] === 'function' || key === 'length';\n}\n","import { ENABLE_GET_LOGGING, ENABLE_SET_LOGGING } from './const';\nimport { areEqual, markDtoDirty, relateValueTo, trackDto, triggerDto, unrelateValueFrom } from './helper';\nimport { DESCRIPTORS, NAME, PROPERTIES, PROXY } from './symbols';\nimport arrayProxy from './arrayProxy';\nimport type DtoInstance from './instance';\n\nexport default {\n /**\n * Trap for when a dto property is being accessed. The property\n * access is being tracked for further updates. If the dto has\n * any child dtos, a relationship will be added between them.\n */\n get(target: DtoInstance<unknown>, key: string | symbol, receiver: any): unknown {\n if (key === PROXY) {\n return true;\n }\n\n if (typeof key === 'symbol') {\n return Reflect.get(target, key, receiver);\n }\n\n const descriptor = target[DESCRIPTORS][key];\n\n if (!descriptor || !descriptor.get) {\n return Reflect.get(target, key, receiver);\n }\n\n const value = descriptor.get.call(target);\n\n ENABLE_GET_LOGGING && console.log(`%c@dto %c${target[NAME]} %cget`, 'color: #0891b2', 'color: #059669', 'color: #1d4ed8', key);\n trackDto(target, key);\n\n relateValueTo(target, key, value);\n\n return value;\n },\n\n /**\n * Trap for when a descriptor of a dto property is requested.\n */\n getOwnPropertyDescriptor(target: DtoInstance<unknown>, key: string | symbol): PropertyDescriptor | undefined {\n return target[DESCRIPTORS][key];\n },\n\n /**\n * Trap for when the keys of a dto are requested.\n */\n ownKeys(target: DtoInstance<unknown>) {\n return target[PROPERTIES];\n },\n\n /**\n * Trap for when a dto property is being updated. This will\n * mark the dto dirty and trigger an update. If an array is\n * passed, that array will be made reactive as well.\n */\n set(target: DtoInstance<unknown>, key: string | symbol, value: unknown, receiver: any): boolean {\n if (typeof key === 'symbol') {\n return Reflect.set(target, key, value, receiver);\n }\n\n const descriptor = target[DESCRIPTORS][key];\n\n if (!descriptor || !descriptor.set) {\n return Reflect.set(target, key, value, receiver);\n }\n\n const oldValue = descriptor.get?.call(target) ?? undefined;\n\n if (areEqual(value, oldValue)) {\n return true;\n }\n\n unrelateValueFrom(target, oldValue);\n\n if (Array.isArray(value) && !value[PROXY]) {\n value = new Proxy(value, arrayProxy);\n }\n\n ENABLE_SET_LOGGING && console.log(`%c@dto %c${target[NAME]} %cset`, 'color: #0891b2', 'color: #059669', 'color: #1d4ed8', key, {value});\n descriptor.set.call(target, value);\n\n relateValueTo(target, key, value);\n markDtoDirty(target, key);\n triggerDto(target, key, value, oldValue);\n\n return true;\n }\n} satisfies ProxyHandler<DtoInstance<unknown>> as ProxyHandler<DtoInstance<unknown>>;\n","import type { Ref } from 'vue';\nimport { PROXY } from './symbols';\nimport type DtoInstance from './instance';\n\nexport default {\n /**\n * Trap for when a ref property is being accessed. The property\n * access is being tracked for further updates. If the requested\n * property is not a part of {Ref}, the get is proxied to the\n * underlying dto instance.\n *\n * A little trick with __v_isRef is done here, all the features\n * of refs are used by our dto, but we don't want Vue to treat\n * it as a ref. We return false here to trick Vue.\n */\n get(target: Ref<DtoInstance<unknown>>, key: string | symbol, receiver: any): unknown {\n if (key === '__v_isRef') {\n return false;\n }\n\n if (key === PROXY) {\n return true;\n }\n\n if (key in target) {\n return Reflect.get(target, key, receiver);\n }\n\n return Reflect.get(target.value, key);\n },\n\n /**\n * Trap for when a descriptor of a property is requested, that\n * request is proxied to the underlying dto.\n */\n getOwnPropertyDescriptor(target: Ref<DtoInstance<unknown>>, key: string | symbol): PropertyDescriptor | undefined {\n return Reflect.getOwnPropertyDescriptor(target.value, key);\n },\n\n /**\n * Trap for when the keys of the ref are requested, that request\n * is proxied to the underlying dto.\n */\n ownKeys(target: Ref<DtoInstance<unknown>>) {\n return Reflect.ownKeys(target.value);\n },\n\n /**\n * Trap for when a ref property is being updated. If the property\n * is not part of {Ref}, the set is proxied to the underlying dto\n * instance. In that proxy, the dto will be marked dirty and an\n * update is triggered.\n */\n set(target: Ref<DtoInstance<unknown>>, key: string | symbol, value: unknown, receiver: any): boolean {\n if (key in target) {\n return Reflect.set(target, key, value, receiver);\n }\n\n return Reflect.set(target.value, key, value);\n }\n} satisfies ProxyHandler<Ref<DtoInstance<unknown>>> as ProxyHandler<Ref<DtoInstance<unknown>>>;\n","import type { Constructor } from '@basmilius/utils';\nimport { customRef, markRaw } from 'vue';\nimport { ARGS, DIRTY, TRACK, TRIGGER } from './symbols';\nimport type DtoInstance from './instance';\nimport arrayProxy from './arrayProxy';\nimport instanceProxy from './instanceProxy';\nimport refProxy from './refProxy';\n\nexport default {\n /**\n * Trap for when a dto is being constructed. Reactivity is provided\n * to all arguments and a proxied custom ref is returned that references\n * the actual dto instance.\n */\n construct(target: Constructor, argsArray: any[], newTarget: Function): DtoInstance<unknown> {\n // note(Bas): This will apply reactivity to any array arguments.\n argsArray = argsArray.map(arg => {\n if (!Array.isArray(arg)) {\n return arg;\n }\n\n return new Proxy(arg, arrayProxy);\n });\n\n const ref = customRef((track, trigger) => {\n const instance = markRaw(Reflect.construct(target, argsArray, newTarget));\n instance[ARGS] = argsArray;\n instance[DIRTY] = false;\n instance[TRACK] = track;\n instance[TRIGGER] = trigger;\n\n const proxied = new Proxy(instance, instanceProxy);\n\n return {\n // note(Bas): track that the dto itself is being accessed.\n get: () => {\n track();\n return proxied;\n },\n\n // note(Bas): setter is never used, but we don't want to\n // cause any errors.\n set: () => void 0\n };\n });\n\n return new Proxy(ref, refProxy) as unknown as DtoInstance<unknown>;\n }\n} satisfies ProxyHandler<Constructor> as ProxyHandler<Constructor>;\n","import { assertDto, isDto } from './helper';\nimport { ARGS, DESCRIPTORS, NAME } from './symbols';\nimport { DTO_CLASS_MAP } from './map';\nimport type DtoInstance from './instance';\n\n/**\n * Returns a clone of the dto.\n */\nexport default function <T>(this: DtoInstance<T>): DtoInstance<T> {\n const instance = this;\n assertDto(instance);\n\n const clazz = DTO_CLASS_MAP[instance[NAME]];\n const clone = new clazz(...instance[ARGS]);\n\n for (const [key, descriptor] of Object.entries(this[DESCRIPTORS])) {\n if (!descriptor.set) {\n continue;\n }\n\n clone[key] = isDto(this[key]) ? this[key].clone() : this[key];\n }\n\n return clone as DtoInstance<T>;\n}\n","import { isDto } from './helper';\nimport { DESCRIPTORS } from './symbols';\nimport type DtoInstance from './instance';\n\n/**\n * Fills the dto with the given data.\n */\nexport default function (this: DtoInstance<unknown>, data: Record<string, unknown>): void {\n for (let key in data) {\n const descriptor = this[DESCRIPTORS][key];\n\n if (isDto(this[key]) && typeof data[key] === 'object') {\n this[key].fill(data[key] as Record<string, unknown>);\n } else if (descriptor && descriptor.set) {\n this[key] = data[key];\n }\n }\n}\n","import { isDto } from './helper';\nimport type DtoInstance from './instance';\nimport { PROPERTIES } from './symbols';\n\n/**\n * Returns the json object representation of the dto.\n */\nexport default function (this: DtoInstance<unknown>): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n\n for (const property of this[PROPERTIES]) {\n let value: unknown = this[property];\n\n if (isDto(value)) {\n value = value.toJSON();\n }\n\n result[property] = value;\n }\n\n return result;\n}\n","import { type Constructor, getPrototypeChain, setObjectMethod, setObjectValue } from '@basmilius/utils';\nimport { OVERRIDE_CONSOLE_LOG } from './const';\nimport { instance, isDto } from './helper';\nimport { DTO_CLASS_MAP } from './map';\nimport { DESCRIPTORS, NAME, PROPERTIES } from './symbols';\nimport classProxy from './classProxy';\nimport clone from './clone';\nimport fill from './fill';\nimport type DtoInstance from './instance';\nimport toJSON from './toJSON';\n\n/**\n * Provides reactivity to the decorated class.\n */\nexport default function <T extends Constructor>(clazz: T): T {\n validate(clazz);\n\n const descriptors = Object.freeze(getPrototypeChain(clazz));\n const properties = Object.keys(descriptors);\n\n setObjectValue(clazz.prototype, DESCRIPTORS, descriptors);\n setObjectValue(clazz.prototype, NAME, clazz.name);\n setObjectValue(clazz.prototype, PROPERTIES, properties);\n setObjectValue(clazz, Symbol.hasInstance, (instance: unknown) => typeof instance === 'object' && instance?.[NAME] === clazz.name);\n\n setObjectMethod(clazz, 'clone', clone<T>);\n setObjectMethod(clazz, 'fill', fill);\n setObjectMethod(clazz, 'toJSON', toJSON);\n\n return proxy(clazz);\n}\n\nexport type {\n DtoInstance\n};\n\nfunction proxy<T extends Constructor>(clazz: T): T {\n const proxied = new Proxy(clazz, classProxy) as T;\n\n DTO_CLASS_MAP[clazz.name] = proxied as unknown as Constructor<DtoInstance<unknown>>;\n\n return proxied;\n}\n\nfunction validate(clazz: Function): void {\n const parent = Object.getPrototypeOf(clazz.prototype);\n\n if (NAME in parent) {\n throw new Error(`⛔️ @dto ${clazz.name} cannot extend parent class which is also decorated with @dto ${parent[NAME]}.`);\n }\n}\n\nif (OVERRIDE_CONSOLE_LOG) {\n const _error = console.error.bind(console);\n const _info = console.info.bind(console);\n const _log = console.log.bind(console);\n const _warn = console.warn.bind(console);\n\n const override = (fn: Function) => (...args: unknown[]) => {\n for (let i = args.length - 1; i >= 0; --i) {\n const arg = args[i];\n\n if (!isDto(arg)) {\n continue;\n }\n\n const dto = instance(arg);\n args.splice(i, 1, `📦 ${dto[NAME]}`, dto.toJSON());\n }\n\n return fn(...args);\n };\n\n console.error = override(_error);\n console.info = override(_info);\n console.log = override(_log);\n console.warn = override(_warn);\n}\n","import deserializeUnknown from './deserializeUnknown';\n\nexport default function (obj: unknown[]): unknown[] {\n return obj.map(deserializeUnknown);\n}\n","import { DateTime } from 'luxon';\nimport type { SerializedDateTime } from './types';\n\nexport default function ([, iso]: SerializedDateTime): DateTime {\n return DateTime.fromISO(iso);\n}\n","import deserializeUnknown from './deserializeUnknown';\n\nexport default function (obj: object): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(obj)\n .map(([key, value]) => [key, deserializeUnknown(value)])\n .filter(([, value]) => value !== undefined)\n );\n}\n","import { ENABLE_SERIALIZATION_LOGGING } from '../const';\nimport { DTO_CLASS_MAP } from '../map';\nimport type { SerializedDto } from './types';\nimport type DtoInstance from '../instance';\nimport deserializeArray from './deserializeArray';\nimport deserializeObject from './deserializeObject';\n\nconst CACHE: Record<string, unknown> = {};\n\nexport default function ([, id, name, state, args]: SerializedDto): DtoInstance<unknown> {\n if (!(name in DTO_CLASS_MAP)) {\n throw new Error(`Cannot restore @dto. Dto ${name} was not found.`);\n }\n\n if (id in CACHE) {\n return CACHE[id] as DtoInstance<unknown>;\n }\n\n ENABLE_SERIALIZATION_LOGGING && console.group('⭐️', name, id);\n const Dto = DTO_CLASS_MAP[name];\n const instance = new Dto(...deserializeArray(args));\n instance.fill(deserializeObject(state));\n ENABLE_SERIALIZATION_LOGGING && console.groupEnd();\n\n CACHE[id] = instance;\n\n return instance;\n}\n","import { SERIALIZED_DATETIME } from '../const';\nimport type { SerializedDateTime } from './types';\n\nexport default function (obj: unknown): obj is SerializedDateTime {\n return Array.isArray(obj) && obj[0] === SERIALIZED_DATETIME;\n}\n","import { SERIALIZED_DTO } from '../const';\nimport type { SerializedDto } from './types';\n\nexport default function (obj: unknown): obj is SerializedDto {\n return Array.isArray(obj) && obj[0] === SERIALIZED_DTO;\n}\n","import deserializeArray from './deserializeArray';\nimport deserializeDateTime from './deserializeDateTime';\nimport deserializeDto from './deserializeDto';\nimport deserializeObject from './deserializeObject';\nimport isSerializedDateTime from './isSerializedDateTime';\nimport isSerializedDto from './isSerializedDto';\n\nexport default function (obj: unknown): unknown {\n switch (true) {\n case obj === null:\n return null;\n\n case Array.isArray(obj):\n switch (true) {\n case isSerializedDateTime(obj):\n return deserializeDateTime(obj);\n\n case isSerializedDto(obj):\n return deserializeDto(obj);\n\n default:\n return deserializeArray(obj);\n }\n\n case typeof obj === 'object':\n return deserializeObject(obj);\n\n default:\n return obj;\n }\n}\n","import deserializeUnknown from './deserializeUnknown';\n\nexport default function (serialized: string): unknown {\n return deserializeUnknown(JSON.parse(serialized));\n}\n","import type { DateTime } from 'luxon';\nimport { SERIALIZED_DATETIME } from '../const';\nimport type { SerializedDateTime } from './types';\n\nexport default function (obj: DateTime): SerializedDateTime {\n return [SERIALIZED_DATETIME, obj.toISO({\n extendedZone: true,\n includeOffset: true\n })];\n}\n","import serializeUnknown from './serializeUnknown';\n\nexport default function (obj: object): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(obj)\n .map(([key, value]) => [key, serializeUnknown(value)])\n .filter(([, value]) => value !== undefined)\n );\n}\n","export default function (): string {\n return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, c => (+c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> +c / 4).toString(16));\n}\n","import { toRaw } from 'vue';\nimport { SERIALIZED_DTO } from '../const';\nimport { ARGS, NAME } from '../symbols';\nimport type { SerializedDto } from './types';\nimport type DtoInstance from '../instance';\nimport serializeArray from './serializeArray';\nimport serializeObject from './serializeObject';\nimport uuid from './uuid';\n\nexport default function (obj: DtoInstance<unknown>): SerializedDto {\n obj = toRaw(obj);\n\n const json = obj.toJSON();\n\n return [\n SERIALIZED_DTO,\n uuid(),\n obj[NAME],\n serializeObject(json),\n serializeArray(obj[ARGS])\n ];\n}\n","import { DateTime } from 'luxon';\nimport type { Serialized } from './types';\nimport isDto from '../helper/isDto';\nimport serializeDateTime from './serializeDateTime';\nimport serializeDto from './serializeDto';\nimport serializeUnknown from './serializeUnknown';\n\nexport default function (obj: unknown[]): Serialized[] {\n switch (true) {\n case obj.every(isDto):\n return obj.map(serializeDto);\n\n case obj.every(DateTime.isDateTime):\n return obj.map(serializeDateTime);\n\n default:\n return obj.map(serializeUnknown);\n }\n}\n","import { DateTime } from 'luxon';\nimport type { Serialized } from './types';\nimport isDto from '../helper/isDto';\nimport serializeArray from './serializeArray';\nimport serializeDateTime from './serializeDateTime';\nimport serializeDto from './serializeDto';\nimport serializeObject from './serializeObject';\n\nexport default function (obj: unknown): Serialized | undefined {\n switch (true) {\n case obj === null:\n return null;\n\n case Array.isArray(obj):\n return serializeArray(obj);\n\n case isDto(obj):\n return serializeDto(obj);\n\n case DateTime.isDateTime(obj):\n return serializeDateTime(obj);\n\n case typeof obj === 'object':\n return serializeObject(obj);\n\n case typeof obj === 'boolean':\n case typeof obj === 'number':\n case typeof obj === 'string':\n return obj;\n\n default:\n return undefined;\n }\n}\n","import serializeUnknown from './serializeUnknown';\n\nexport default function (obj: unknown): string {\n return JSON.stringify(serializeUnknown(obj));\n}\n","import { dto } from '../decorator';\n\n@dto\nexport default class BlobResponse {\n get blob(): Blob {\n return this.#blob;\n }\n\n get name(): string {\n return this.#name;\n }\n\n readonly #blob: Blob;\n readonly #name: string;\n\n constructor(blob: Blob, name: string) {\n this.#blob = blob;\n this.#name = name;\n }\n}\n","import { dto } from '../decorator';\n\n@dto\nexport default class Paginated<T> {\n get items(): T[] {\n return this.#items;\n }\n\n get page(): number {\n return this.#page;\n }\n\n get pageSize(): number {\n return this.#pageSize;\n }\n\n get pages(): number {\n return this.#pages;\n }\n\n get total(): number {\n return this.#total;\n }\n\n readonly #items: T[];\n readonly #page: number;\n readonly #pageSize: number;\n readonly #pages: number;\n readonly #total: number;\n\n constructor(items: T[], page: number, pageSize: number, pages: number, total: number) {\n this.#items = items;\n this.#page = page;\n this.#pageSize = pageSize;\n this.#pages = pages;\n this.#total = total;\n }\n}\n","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","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","import { DateTime } from 'luxon';\nimport { adapter } from '../decorator';\nimport { Paginated, RequestError, ValidationError } from '../dto';\nimport type { ForeignData, HttpStatusCode } from '../type';\n\n@adapter\nexport class HttpAdapter {\n public static parsePaginatedAdapter<T>(data: ForeignData, adapterMethod: (item: object) => T): Paginated<T> {\n return new Paginated<T>(\n data.items.map(adapterMethod),\n data.page,\n data.page_size,\n data.pages,\n data.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(data: ForeignData, statusCode: HttpStatusCode): RequestError {\n return new RequestError(\n data.code,\n data.error,\n data.error_description,\n statusCode\n );\n }\n\n public static parseValidationError(data: ForeignData): ValidationError {\n let errors: Record<string, ValidationError>;\n\n if (data.errors) {\n errors = {};\n\n Object.entries(data.errors).forEach(([key, value]) => {\n errors[key] = HttpAdapter.parseValidationError(value as object);\n });\n }\n\n return new ValidationError(\n data.code,\n data.error,\n data.error_description,\n errors,\n data.params\n );\n }\n}\n","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","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","export default class extends Error {\n}\n","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 const response = await fetch(this.client.baseUrl + path, this.options);\n\n if (this.#autoCancelIdentifier !== null) {\n delete abortControllers[this.#autoCancelIdentifier];\n }\n\n return response;\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 (data && typeof data === 'object' && '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","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","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","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"],"mappings":"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"}
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": "3.26.0",
4
+ "version": "3.28.0",
5
5
  "license": "MIT",
6
6
  "funding": "https://github.com/sponsors/basmilius",
7
7
  "homepage": "https://github.com/basmilius/packages",
@@ -46,7 +46,7 @@
46
46
  "provenance": true
47
47
  },
48
48
  "dependencies": {
49
- "@basmilius/utils": "3.26.0",
49
+ "@basmilius/utils": "3.28.0",
50
50
  "luxon": "^3.7.2"
51
51
  },
52
52
  "peerDependencies": {