@decaf-ts/for-http 0.2.13 → 0.3.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.
package/README.md CHANGED
@@ -27,7 +27,7 @@ A lightweight HTTP adapter layer for decaf-ts that enables CRUD-style repositori
27
27
 
28
28
  Documentation available [here](https://decaf-ts.github.io/for-http/)
29
29
 
30
- Minimal size: 1.7 KB kb gzipped
30
+ Minimal size: 1.2 KB kb gzipped
31
31
 
32
32
 
33
33
  # decaf-ts/for-http — Detailed Description
package/dist/for-http.cjs CHANGED
@@ -1,2 +1,2 @@
1
- var e,t;e=this,t=function(e,t,r,s,a,i){"use strict";class o extends a.LoggedClass{get class(){if(!this._class)throw new r.InternalError("No class definition found for this repository");return this._class}get log(){return this.logger||(this.logger=this.adapter.log.for(this.toString())),this.logger}get pk(){return this._pk||(this._pk=r.findPrimaryKey(new this.class).id),this._pk}get adapter(){if(!this._adapter)throw new r.InternalError("No adapter found for this repository. did you use the @uses decorator or pass it in the constructor?");return this._adapter}get tableName(){return this._tableName||(this._tableName=t.Repository.table(this.class)),this._tableName}constructor(e,t){super(),this.observers=[],this._adapter=e,t&&(this._class=t)}url(e,t){return this.adapter.url(e,t)}async create(e,...t){let{record:r,id:s}=this.adapter.prepare(e,this.pk);return r=await this.adapter.create(this.tableName,s,r,...t),this.adapter.revert(r,this.class,this.pk,s)}async read(e,...t){const r=await this.adapter.read(this.tableName,e,...t);return this.adapter.revert(r,this.class,this.pk,e)}async update(e,...t){let{record:r,id:s}=this.adapter.prepare(e,this.pk);return r=await this.adapter.update(this.tableName,s,r,...t),this.adapter.revert(r,this.class,this.pk,s)}async delete(e,...t){const r=await this.adapter.delete(this.tableName,e,...t);return this.adapter.revert(r,this.class,this.pk,e)}async request(e){return this.adapter.request(e)}async createAll(e,...t){if(!e.length)return e;const r=e.map(e=>this.adapter.prepare(e,this.pk)),s=r.map(e=>e.id);let a=r.map(e=>e.record);return a=await this.adapter.createAll(this.tableName,s,a,...t),a.map((e,t)=>this.adapter.revert(e,this.class,this.pk,s[t]))}async deleteAll(e,...t){return(await this.adapter.deleteAll(this.tableName,e,...t)).map((t,r)=>this.adapter.revert(t,this.class,this.pk,e[r]))}async readAll(e,...t){return(await this.adapter.readAll(this.tableName,e,...t)).map((t,r)=>this.adapter.revert(t,this.class,this.pk,e[r]))}async updateAll(e,...t){const r=e.map(e=>this.adapter.prepare(e,this.pk));return(await this.adapter.updateAll(this.tableName,r.map(e=>e.id),r.map(e=>e.record),...t)).map((e,t)=>this.adapter.revert(e,this.class,this.pk,r[t].id))}observe(e){if(-1!==this.observers.indexOf(e))throw new r.InternalError("Observer already registered");this.observers.push(e)}unObserve(e){const t=this.observers.indexOf(e);if(-1===t)throw new r.InternalError("Failed to find Observer");this.observers.splice(t,1)}async updateObservers(...e){(await Promise.allSettled(this.observers.map(t=>t.refresh(...e)))).forEach((e,t)=>{e.status})}toString(){return this.class.name+" rest service"}}class n extends t.Adapter{constructor(e,t,r){super(e,t,r)}flags(e,t,r){return Object.assign(super.flags(e,t,r),{headers:{}})}repository(){return o}prepare(e,r){const s=this.log.for(this.prepare),a=Object.assign({},e);return e[t.PersistenceKeys.METADATA]&&(s.silly("Passing along persistence metadata for "+e[t.PersistenceKeys.METADATA]),Object.defineProperty(a,t.PersistenceKeys.METADATA,{enumerable:!1,writable:!1,configurable:!0,value:e[t.PersistenceKeys.METADATA]})),{record:e,id:e[r]}}revert(e,a,i,o){const n=this.log.for(this.revert),l={},c="string"==typeof a?s.Model.build(l,a):new a(l);n.silly(`Rebuilding model ${c.constructor.name} id ${o}`);const d="string"==typeof a?s.Model.get(a):a;if(!d)throw new r.InternalError("Failed to retrieve model constructor for "+a);const p=new d(e),h=e[t.PersistenceKeys.METADATA];return h&&(n.silly(`Passing along ${this.flavour} persistence metadata for ${c.constructor.name} id ${o}: ${h}`),Object.defineProperty(p,t.PersistenceKeys.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:h})),p}url(e,t){const r=new URL(`${this.config.protocol}://${this.config.host}/${e}`);return t&&Object.entries(t).forEach(([e,t])=>r.searchParams.append(e,t.toString())),encodeURI(r.toString()).replace(/\+/g,"%20")}raw(e,r,...s){return Promise.reject(new t.UnsupportedError("Api is not natively available for HttpAdapters. If required, please extends this class"))}Sequence(e){return Promise.reject(new t.UnsupportedError("Api is not natively available for HttpAdapters. If required, please extends this class"))}Statement(){throw new t.UnsupportedError("Api is not natively available for HttpAdapters. If required, please extends this class")}parseCondition(e){throw new t.UnsupportedError("Api is not natively available for HttpAdapters. If required, please extends this class")}}const l="axios";class c extends n{constructor(e,t){super(e,l,t)}getClient(){return new i.Axios({baseURL:`${this.config.protocol}://${this.config.host}`})}async request(e){return this.client.request(e)}async create(e,t,r){try{const t=this.url(e);return this.client.post(t,r)}catch(e){throw this.parseError(e)}}async read(e,t){try{const r=this.url(e,{id:t});return this.client.get(r)}catch(e){throw this.parseError(e)}}async update(e,t,r){try{const t=this.url(e);return this.client.put(t,r)}catch(e){throw this.parseError(e)}}async delete(e,t){try{const r=this.url(e,{id:t});return this.client.delete(r)}catch(e){throw this.parseError(e)}}parseError(e){const s=[r.InternalError,t.AuthorizationError,r.ConflictError,r.NotFoundError,t.UnsupportedError];for(const t of s)if(e.message.includes(t.name))return new t(e.message);return new r.InternalError(e.message)}}c.decoration();class d extends t.Repository{constructor(e,t){super(e,t)}url(e,t){return this.adapter.url(e,t)}async request(e){return this.adapter.request(e)}}e.AxiosFlavour=l,e.AxiosHttpAdapter=c,e.HttpAdapter=n,e.RestRepository=d,e.RestService=o,e.VERSION="##VERSION##"},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/core"),require("@decaf-ts/db-decorators"),require("@decaf-ts/decorator-validation"),require("@decaf-ts/logging"),require("axios")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/core","@decaf-ts/db-decorators","@decaf-ts/decorator-validation","@decaf-ts/logging","axios"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["for-http"]={},e.decafTsCore,e.decafTsDbDecorators,e.decafTsDecoratorValidation,e.decafTsLogging,e.axios);
1
+ var e,r;e=this,r=function(e,r,t,s,o){"use strict";class n extends r.Repository{constructor(e,r){super(e,r)}url(e,r){return this.adapter.url(e,r)}async request(e){return this.adapter.request(e)}}class i extends n{constructor(e,r){super(e,r),this._overrides={ignoreValidation:!0,ignoreHandlers:!0}}toString(){return s.Model.tableName(this.class)+" REST service"}}class a extends r.Adapter{constructor(e,r,t){super(e,r,t)}flags(e,r,t){return Object.assign(super.flags(e,r,t),{headers:{}})}repository(){return i}prepare(e,...t){const{log:o}=this.logCtx(t,this.prepare),n=Object.assign({},e);return e[r.PersistenceKeys.METADATA]&&(o.silly("Passing along persistence metadata for "+e[r.PersistenceKeys.METADATA]),Object.defineProperty(n,r.PersistenceKeys.METADATA,{enumerable:!1,writable:!1,configurable:!0,value:e[r.PersistenceKeys.METADATA]})),{record:e,id:e[s.Model.pk(e.constructor)]}}revert(e,o,n,...i){const{log:a}=this.logCtx(i,this.revert),c={},l="string"==typeof o?s.Model.build(c,o):new o(c);a.silly(`Rebuilding model ${l.constructor.name} id ${n}`);const d="string"==typeof o?s.Model.get(o):o;if(!d)throw new t.InternalError("Failed to retrieve model constructor for "+o);const u=new d(e),p=e[r.PersistenceKeys.METADATA];return p&&(a.silly(`Passing along ${this.flavour} persistence metadata for ${l.constructor.name} id ${n}: ${p}`),Object.defineProperty(u,r.PersistenceKeys.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:p})),u}toTableName(e){return"string"==typeof e?e:s.Model.tableName(e)}url(e,r){e=this.toTableName(e);const t=new URL(`${this.config.protocol}://${this.config.host}/${e}`);return r&&Object.entries(r).forEach(([e,r])=>t.searchParams.append(e,r.toString())),encodeURI(t.toString()).replace(/\+/g,"%20")}raw(e,...t){return Promise.reject(new r.UnsupportedError("Api is not natively available for HttpAdapters. If required, please extends this class"))}Sequence(e){return Promise.reject(new r.UnsupportedError("Api is not natively available for HttpAdapters. If required, please extends this class"))}Statement(){throw new r.UnsupportedError("Api is not natively available for HttpAdapters. If required, please extends this class")}parseCondition(e){throw new r.UnsupportedError("Api is not natively available for HttpAdapters. If required, please extends this class")}}const c="axios";class l extends a{constructor(e,r){super(e,c,r)}getClient(){return new o.Axios({baseURL:`${this.config.protocol}://${this.config.host}`})}async request(e){return this.client.request(e)}async create(e,r,t,...s){try{const r=this.url(e);return this.client.post(r,t)}catch(e){throw this.parseError(e)}}async read(e,r,...t){try{const t=this.url(e,{id:r});return this.client.get(t)}catch(e){throw this.parseError(e)}}async update(e,r,t,...s){try{const r=this.url(e);return this.client.put(r,t)}catch(e){throw this.parseError(e)}}async delete(e,r,...t){try{const t=this.url(e,{id:r});return this.client.delete(t)}catch(e){throw this.parseError(e)}}parseError(e,...s){const o=[t.InternalError,r.AuthorizationError,t.ConflictError,t.NotFoundError,r.UnsupportedError];for(const r of o)if(e.message.includes(r.name))return new r(e.message);return new t.InternalError(e.message)}}l.decoration(),e.AxiosFlavour=c,e.AxiosHttpAdapter=l,e.HttpAdapter=a,e.RestRepository=n,e.RestService=i,e.VERSION="##VERSION##"},"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@decaf-ts/core"),require("@decaf-ts/db-decorators"),require("@decaf-ts/decorator-validation"),require("axios")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/core","@decaf-ts/db-decorators","@decaf-ts/decorator-validation","axios"],r):r((e="undefined"!=typeof globalThis?globalThis:e||self)["for-http"]={},e.decafTsCore,e.decafTsDbDecorators,e.decafTsDecoratorValidation,e.axios);
2
2
  //# sourceMappingURL=for-http.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"for-http.cjs","sources":["../src/RestService.ts","../src/adapter.ts","../src/axios/constants.ts","../src/axios/axios.ts","../src/axios/index.ts","../src/RestRepository.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":["RestService","LoggedClass","this","_class","InternalError","log","logger","adapter","for","toString","pk","_pk","findPrimaryKey","class","id","_adapter","tableName","_tableName","Repository","table","constructor","clazz","super","observers","url","path","queryParams","create","model","args","record","prepare","revert","read","m","update","delete","request","details","createAll","models","length","prepared","map","ids","p","records","r","i","deleteAll","keys","readAll","updateAll","u","observe","observer","indexOf","push","unObserve","index","splice","updateObservers","Promise","allSettled","o","refresh","forEach","result","status","name","HttpAdapter","Adapter","config","flavour","alias","flags","operation","overrides","Object","assign","headers","repository","PersistenceKeys","METADATA","silly","defineProperty","enumerable","writable","configurable","value","obj","ob","Model","build","constr","get","metadata","URL","protocol","host","entries","key","searchParams","append","encodeURI","replace","raw","rawInput","process","reject","UnsupportedError","Sequence","options","Statement","parseCondition","condition","AxiosFlavour","AxiosHttpAdapter","getClient","Axios","baseURL","client","post","e","parseError","put","err","errs","AuthorizationError","ConflictError","NotFoundError","error","message","includes","decoration","RestRepository"],"mappings":"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"}
1
+ {"version":3,"file":"for-http.cjs","sources":["../src/RestRepository.ts","../src/RestService.ts","../src/adapter.ts","../src/axios/constants.ts","../src/axios/axios.ts","../src/axios/index.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":["RestRepository","Repository","constructor","adapter","clazz","super","url","path","queryParams","this","request","details","RestService","_overrides","ignoreValidation","ignoreHandlers","toString","Model","tableName","class","HttpAdapter","Adapter","config","flavour","alias","flags","operation","model","overrides","Object","assign","headers","repository","prepare","args","log","logCtx","result","PersistenceKeys","METADATA","silly","defineProperty","enumerable","writable","configurable","value","record","id","pk","revert","obj","ob","m","build","name","constr","get","InternalError","metadata","toTableName","t","URL","protocol","host","entries","forEach","key","searchParams","append","encodeURI","replace","raw","rawInput","Promise","reject","UnsupportedError","Sequence","options","Statement","parseCondition","condition","AxiosFlavour","AxiosHttpAdapter","getClient","Axios","baseURL","client","create","_args","post","e","parseError","read","update","put","delete","err","errs","AuthorizationError","ConflictError","NotFoundError","error","message","includes","decoration"],"mappings":"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"}
package/dist/for-http.js CHANGED
@@ -1,2 +1,2 @@
1
- import{Repository as e,Adapter as t,PersistenceKeys as r,UnsupportedError as s,AuthorizationError as a}from"@decaf-ts/core";import{InternalError as i,findPrimaryKey as n,ConflictError as o,NotFoundError as l}from"@decaf-ts/db-decorators";import{Model as c}from"@decaf-ts/decorator-validation";import{LoggedClass as h}from"@decaf-ts/logging";import{Axios as p}from"axios";class d extends h{get class(){if(!this._class)throw new i("No class definition found for this repository");return this._class}get log(){return this.logger||(this.logger=this.adapter.log.for(this.toString())),this.logger}get pk(){return this._pk||(this._pk=n(new this.class).id),this._pk}get adapter(){if(!this._adapter)throw new i("No adapter found for this repository. did you use the @uses decorator or pass it in the constructor?");return this._adapter}get tableName(){return this._tableName||(this._tableName=e.table(this.class)),this._tableName}constructor(e,t){super(),this.observers=[],this._adapter=e,t&&(this._class=t)}url(e,t){return this.adapter.url(e,t)}async create(e,...t){let{record:r,id:s}=this.adapter.prepare(e,this.pk);return r=await this.adapter.create(this.tableName,s,r,...t),this.adapter.revert(r,this.class,this.pk,s)}async read(e,...t){const r=await this.adapter.read(this.tableName,e,...t);return this.adapter.revert(r,this.class,this.pk,e)}async update(e,...t){let{record:r,id:s}=this.adapter.prepare(e,this.pk);return r=await this.adapter.update(this.tableName,s,r,...t),this.adapter.revert(r,this.class,this.pk,s)}async delete(e,...t){const r=await this.adapter.delete(this.tableName,e,...t);return this.adapter.revert(r,this.class,this.pk,e)}async request(e){return this.adapter.request(e)}async createAll(e,...t){if(!e.length)return e;const r=e.map(e=>this.adapter.prepare(e,this.pk)),s=r.map(e=>e.id);let a=r.map(e=>e.record);return a=await this.adapter.createAll(this.tableName,s,a,...t),a.map((e,t)=>this.adapter.revert(e,this.class,this.pk,s[t]))}async deleteAll(e,...t){return(await this.adapter.deleteAll(this.tableName,e,...t)).map((t,r)=>this.adapter.revert(t,this.class,this.pk,e[r]))}async readAll(e,...t){return(await this.adapter.readAll(this.tableName,e,...t)).map((t,r)=>this.adapter.revert(t,this.class,this.pk,e[r]))}async updateAll(e,...t){const r=e.map(e=>this.adapter.prepare(e,this.pk));return(await this.adapter.updateAll(this.tableName,r.map(e=>e.id),r.map(e=>e.record),...t)).map((e,t)=>this.adapter.revert(e,this.class,this.pk,r[t].id))}observe(e){if(-1!==this.observers.indexOf(e))throw new i("Observer already registered");this.observers.push(e)}unObserve(e){const t=this.observers.indexOf(e);if(-1===t)throw new i("Failed to find Observer");this.observers.splice(t,1)}async updateObservers(...e){(await Promise.allSettled(this.observers.map(t=>t.refresh(...e)))).forEach((e,t)=>{e.status})}toString(){return this.class.name+" rest service"}}class u extends t{constructor(e,t,r){super(e,t,r)}flags(e,t,r){return Object.assign(super.flags(e,t,r),{headers:{}})}repository(){return d}prepare(e,t){const s=this.log.for(this.prepare),a=Object.assign({},e);return e[r.METADATA]&&(s.silly("Passing along persistence metadata for "+e[r.METADATA]),Object.defineProperty(a,r.METADATA,{enumerable:!1,writable:!1,configurable:!0,value:e[r.METADATA]})),{record:e,id:e[t]}}revert(e,t,s,a){const n=this.log.for(this.revert),o={},l="string"==typeof t?c.build(o,t):new t(o);n.silly(`Rebuilding model ${l.constructor.name} id ${a}`);const h="string"==typeof t?c.get(t):t;if(!h)throw new i("Failed to retrieve model constructor for "+t);const p=new h(e),d=e[r.METADATA];return d&&(n.silly(`Passing along ${this.flavour} persistence metadata for ${l.constructor.name} id ${a}: ${d}`),Object.defineProperty(p,r.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:d})),p}url(e,t){const r=new URL(`${this.config.protocol}://${this.config.host}/${e}`);return t&&Object.entries(t).forEach(([e,t])=>r.searchParams.append(e,t.toString())),encodeURI(r.toString()).replace(/\+/g,"%20")}raw(e,t,...r){return Promise.reject(new s("Api is not natively available for HttpAdapters. If required, please extends this class"))}Sequence(e){return Promise.reject(new s("Api is not natively available for HttpAdapters. If required, please extends this class"))}Statement(){throw new s("Api is not natively available for HttpAdapters. If required, please extends this class")}parseCondition(e){throw new s("Api is not natively available for HttpAdapters. If required, please extends this class")}}const f="axios";class m extends u{constructor(e,t){super(e,f,t)}getClient(){return new p({baseURL:`${this.config.protocol}://${this.config.host}`})}async request(e){return this.client.request(e)}async create(e,t,r){try{const t=this.url(e);return this.client.post(t,r)}catch(e){throw this.parseError(e)}}async read(e,t){try{const r=this.url(e,{id:t});return this.client.get(r)}catch(e){throw this.parseError(e)}}async update(e,t,r){try{const t=this.url(e);return this.client.put(t,r)}catch(e){throw this.parseError(e)}}async delete(e,t){try{const r=this.url(e,{id:t});return this.client.delete(r)}catch(e){throw this.parseError(e)}}parseError(e){const t=[i,a,o,l,s];for(const r of t)if(e.message.includes(r.name))return new r(e.message);return new i(e.message)}}m.decoration();class g extends e{constructor(e,t){super(e,t)}url(e,t){return this.adapter.url(e,t)}async request(e){return this.adapter.request(e)}}const b="##VERSION##";export{f as AxiosFlavour,m as AxiosHttpAdapter,u as HttpAdapter,g as RestRepository,d as RestService,b as VERSION};
1
+ import{Repository as e,Adapter as t,PersistenceKeys as r,UnsupportedError as s,AuthorizationError as n}from"@decaf-ts/core";import{InternalError as o,ConflictError as a,NotFoundError as i}from"@decaf-ts/db-decorators";import{Model as c}from"@decaf-ts/decorator-validation";import{Axios as l}from"axios";class u extends e{constructor(e,t){super(e,t)}url(e,t){return this.adapter.url(e,t)}async request(e){return this.adapter.request(e)}}class p extends u{constructor(e,t){super(e,t),this._overrides={ignoreValidation:!0,ignoreHandlers:!0}}toString(){return c.tableName(this.class)+" REST service"}}class d extends t{constructor(e,t,r){super(e,t,r)}flags(e,t,r){return Object.assign(super.flags(e,t,r),{headers:{}})}repository(){return p}prepare(e,...t){const{log:s}=this.logCtx(t,this.prepare),n=Object.assign({},e);return e[r.METADATA]&&(s.silly("Passing along persistence metadata for "+e[r.METADATA]),Object.defineProperty(n,r.METADATA,{enumerable:!1,writable:!1,configurable:!0,value:e[r.METADATA]})),{record:e,id:e[c.pk(e.constructor)]}}revert(e,t,s,...n){const{log:a}=this.logCtx(n,this.revert),i={},l="string"==typeof t?c.build(i,t):new t(i);a.silly(`Rebuilding model ${l.constructor.name} id ${s}`);const u="string"==typeof t?c.get(t):t;if(!u)throw new o("Failed to retrieve model constructor for "+t);const p=new u(e),d=e[r.METADATA];return d&&(a.silly(`Passing along ${this.flavour} persistence metadata for ${l.constructor.name} id ${s}: ${d}`),Object.defineProperty(p,r.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:d})),p}toTableName(e){return"string"==typeof e?e:c.tableName(e)}url(e,t){e=this.toTableName(e);const r=new URL(`${this.config.protocol}://${this.config.host}/${e}`);return t&&Object.entries(t).forEach(([e,t])=>r.searchParams.append(e,t.toString())),encodeURI(r.toString()).replace(/\+/g,"%20")}raw(e,...t){return Promise.reject(new s("Api is not natively available for HttpAdapters. If required, please extends this class"))}Sequence(e){return Promise.reject(new s("Api is not natively available for HttpAdapters. If required, please extends this class"))}Statement(){throw new s("Api is not natively available for HttpAdapters. If required, please extends this class")}parseCondition(e){throw new s("Api is not natively available for HttpAdapters. If required, please extends this class")}}const h="axios";class f extends d{constructor(e,t){super(e,h,t)}getClient(){return new l({baseURL:`${this.config.protocol}://${this.config.host}`})}async request(e){return this.client.request(e)}async create(e,t,r,...s){try{const t=this.url(e);return this.client.post(t,r)}catch(e){throw this.parseError(e)}}async read(e,t,...r){try{const r=this.url(e,{id:t});return this.client.get(r)}catch(e){throw this.parseError(e)}}async update(e,t,r,...s){try{const t=this.url(e);return this.client.put(t,r)}catch(e){throw this.parseError(e)}}async delete(e,t,...r){try{const r=this.url(e,{id:t});return this.client.delete(r)}catch(e){throw this.parseError(e)}}parseError(e,...t){const r=[o,n,a,i,s];for(const t of r)if(e.message.includes(t.name))return new t(e.message);return new o(e.message)}}f.decoration();const g="##VERSION##";export{h as AxiosFlavour,f as AxiosHttpAdapter,d as HttpAdapter,u as RestRepository,p as RestService,g as VERSION};
2
2
  //# sourceMappingURL=for-http.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"for-http.js","sources":["../src/RestService.ts","../src/adapter.ts","../src/axios/constants.ts","../src/axios/axios.ts","../src/axios/index.ts","../src/RestRepository.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":["RestService","LoggedClass","this","_class","InternalError","log","logger","adapter","for","toString","pk","_pk","findPrimaryKey","class","id","_adapter","tableName","_tableName","Repository","table","constructor","clazz","super","observers","url","path","queryParams","create","model","args","record","prepare","revert","read","m","update","delete","request","details","createAll","models","length","prepared","map","ids","p","records","r","i","deleteAll","keys","readAll","updateAll","u","observe","observer","indexOf","push","unObserve","index","splice","updateObservers","Promise","allSettled","o","refresh","forEach","result","status","name","HttpAdapter","Adapter","config","flavour","alias","flags","operation","overrides","Object","assign","headers","repository","PersistenceKeys","METADATA","silly","defineProperty","enumerable","writable","configurable","value","obj","ob","Model","build","constr","get","metadata","URL","protocol","host","entries","key","searchParams","append","encodeURI","replace","raw","rawInput","process","reject","UnsupportedError","Sequence","options","Statement","parseCondition","condition","AxiosFlavour","AxiosHttpAdapter","getClient","Axios","baseURL","client","post","e","parseError","put","err","errs","AuthorizationError","ConflictError","NotFoundError","error","message","includes","decoration","RestRepository","VERSION"],"mappings":"mXA6DM,MAAOA,UAOHC,EAeR,SAAI,GACF,IAAKC,KAAKC,OACR,MAAM,IAAIC,EAAc,iDAC1B,OAAOF,KAAKC,MACb,CAED,OAAuBE,GAKrB,OAJKH,KAAKI,SACRJ,KAAKI,OACHJ,KAAKK,QAA0C,IAC/CC,IAAIN,KAAKO,aACNP,KAAKI,MACb,CAQD,MAAII,GAEF,OADKR,KAAKS,MAAKT,KAAKS,IAAMC,EAAe,IAAIV,KAAKW,OAASC,IACpDZ,KAAKS,GACb,CAcD,WAAcJ,GACZ,IAAKL,KAAKa,SACR,MAAM,IAAIX,EACR,wGAEJ,OAAOF,KAAKa,QACb,CAQD,aAAcC,GAEZ,OADKd,KAAKe,aAAYf,KAAKe,WAAaC,EAAWC,MAAMjB,KAAKW,QACvDX,KAAKe,UACb,CASD,WAAAG,CAAYb,EAAYc,GACtBC,QAvCQpB,KAASqB,UAAe,GAwChCrB,KAAKa,SAAWR,EACZc,IAAOnB,KAAKC,OAASkB,EAC1B,CAED,GAAAG,CAAIC,EAAcC,GAChB,OAAOxB,KAAKK,QAAQiB,IAAIC,EAAMC,EAC/B,CAWD,YAAMC,CAAOC,KAAaC,GAExB,IAAIC,OAAEA,EAAMhB,GAAEA,GAAOZ,KAAKK,QAAQwB,QAAQH,EAAO1B,KAAKQ,IAEtD,OADAoB,QAAe5B,KAAKK,QAAQoB,OAAOzB,KAAKc,UAAWF,EAAIgB,KAAWD,GAC3D3B,KAAKK,QAAQyB,OAAOF,EAAQ5B,KAAKW,MAAOX,KAAKQ,GAAII,EACzD,CAUD,UAAMmB,CAAKnB,KAAwBe,GACjC,MAAMK,QAAUhC,KAAKK,QAAQ0B,KAAK/B,KAAKc,UAAWF,KAAOe,GACzD,OAAO3B,KAAKK,QAAQyB,OAAOE,EAAGhC,KAAKW,MAAOX,KAAKQ,GAAII,EACpD,CAWD,YAAMqB,CAAOP,KAAaC,GAExB,IAAIC,OAAEA,EAAMhB,GAAEA,GAAOZ,KAAKK,QAAQwB,QAAQH,EAAO1B,KAAKQ,IAEtD,OADAoB,QAAe5B,KAAKK,QAAQ4B,OAAOjC,KAAKc,UAAWF,EAAIgB,KAAWD,GAC3D3B,KAAKK,QAAQyB,OAAOF,EAAQ5B,KAAKW,MAAOX,KAAKQ,GAAII,EACzD,CAUD,YAAM,CAAOA,KAAwBe,GACnC,MAAMK,QAAUhC,KAAKK,QAAQ6B,OAAOlC,KAAKc,UAAWF,KAAOe,GAC3D,OAAO3B,KAAKK,QAAQyB,OAAOE,EAAGhC,KAAKW,MAAOX,KAAKQ,GAAII,EACpD,CAED,aAAMuB,CAAWC,GACf,OAAOpC,KAAKK,QAAQ8B,QAAWC,EAChC,CAqBD,eAAMC,CAAUC,KAAgBX,GAC9B,IAAKW,EAAOC,OAAQ,OAAOD,EAC3B,MAAME,EAAWF,EAAOG,IAAKT,GAAMhC,KAAKK,QAAQwB,QAAQG,EAAGhC,KAAKQ,KAC1DkC,EAAMF,EAASC,IAAKE,GAAMA,EAAE/B,IAClC,IAAIgC,EAAUJ,EAASC,IAAKE,GAAMA,EAAEf,QAOpC,OANAgB,QAAgB5C,KAAKK,QAAQgC,UAC3BrC,KAAKc,UACL4B,EACAE,KACGjB,GAEEiB,EAAQH,IAAI,CAACI,EAAGC,IACrB9C,KAAKK,QAAQyB,OAAOe,EAAG7C,KAAKW,MAAOX,KAAKQ,GAAIkC,EAAII,IAEnD,CAUD,eAAMC,CAAUC,KAA8BrB,GAE5C,aADsB3B,KAAKK,QAAQ0C,UAAU/C,KAAKc,UAAWkC,KAASrB,IACvDc,IAAI,CAACI,EAAGC,IACrB9C,KAAKK,QAAQyB,OAAOe,EAAG7C,KAAKW,MAAOX,KAAKQ,GAAIwC,EAAKF,IAEpD,CAUD,aAAMG,CAAQD,KAA8BrB,GAE1C,aADsB3B,KAAKK,QAAQ4C,QAAQjD,KAAKc,UAAWkC,KAASrB,IACrDc,IAAI,CAACI,EAAGC,IACrB9C,KAAKK,QAAQyB,OAAOe,EAAG7C,KAAKW,MAAOX,KAAKQ,GAAIwC,EAAKF,IAEpD,CAWD,eAAMI,CAAUZ,KAAgBX,GAC9B,MAAMiB,EAAUN,EAAOG,IAAKT,GAAMhC,KAAKK,QAAQwB,QAAQG,EAAGhC,KAAKQ,KAO/D,aANsBR,KAAKK,QAAQ6C,UACjClD,KAAKc,UACL8B,EAAQH,IAAKI,GAAMA,EAAEjC,IACrBgC,EAAQH,IAAKI,GAAMA,EAAEjB,WAClBD,IAEUc,IAAI,CAACU,EAAGL,IACrB9C,KAAKK,QAAQyB,OAAOqB,EAAGnD,KAAKW,MAAOX,KAAKQ,GAAIoC,EAAQE,GAAGlC,IAE1D,CAUD,OAAAwC,CAAQC,GAEN,IAAe,IADDrD,KAAKqB,UAAUiC,QAAQD,GACnB,MAAM,IAAInD,EAAc,+BAC1CF,KAAKqB,UAAUkC,KAAKF,EACrB,CAUD,SAAAG,CAAUH,GACR,MAAMI,EAAQzD,KAAKqB,UAAUiC,QAAQD,GACrC,IAAe,IAAXI,EAAc,MAAM,IAAIvD,EAAc,2BAC1CF,KAAKqB,UAAUqC,OAAOD,EAAO,EAC9B,CASD,qBAAME,IAAmBhC,UACDiC,QAAQC,WAC5B7D,KAAKqB,UAAUoB,IAAKqB,GAAMA,EAAEC,WAAWpC,MAEjCqC,QAAQ,CAACC,EAAQnB,KACnBmB,EAAOC,QAKd,CAEQ,QAAA3D,GACP,OAAUP,KAAKW,MAAMwD,KAAd,eACR,ECnTG,MAAgBC,UAMZC,EACR,WAAAnD,CAAsBoD,EAAWC,EAAiBC,GAChDpD,MAAMkD,EAAQC,EAASC,EACxB,CAaQ,KAAAC,CACPC,EAKAhD,EACAiD,GAEA,OAAOC,OAAOC,OAAOzD,MAAMqD,MAASC,EAAWhD,EAAOiD,GAAY,CAChEG,QAAS,CAAE,GAEd,CASQ,UAAAC,GAGP,OAAOjF,CAGR,CAWQ,OAAA+B,CACPH,EACAlB,GAMA,MAAML,EAAMH,KAAKG,IAAIG,IAAIN,KAAK6B,SACxBoC,EAASW,OAAOC,OAAO,CAAE,EAAEnD,GAajC,OAZKA,EAAcsD,EAAgBC,YACjC9E,EAAI+E,MACF,0CAA2CxD,EAAcsD,EAAgBC,WAE3EL,OAAOO,eAAelB,EAAQe,EAAgBC,SAAU,CACtDG,YAAY,EACZC,UAAU,EACVC,cAAc,EACdC,MAAQ7D,EAAcsD,EAAgBC,aAInC,CACLrD,OAAQF,EACRd,GAAIc,EAAMlB,GAEb,CAaQ,MAAAsB,CACP0D,EACArE,EACAX,EACAI,GAEA,MAAMT,EAAMH,KAAKG,IAAIG,IAAIN,KAAK8B,QACxB2D,EAA0B,CAAA,EAC1BzD,EACa,iBAAVb,EAAqBuE,EAAMC,MAAMF,EAAItE,GAAS,IAAIA,EAAMsE,GAEjEtF,EAAI+E,MAAM,oBAAoBlD,EAAEd,YAAYiD,WAAWvD,KACvD,MAAMgF,EAA0B,iBAAVzE,EAAqBuE,EAAMG,IAAI1E,GAASA,EAC9D,IAAKyE,EACH,MAAM,IAAI1F,EACR,4CAA4CiB,GAEhD,MAAM8C,EAAS,IAAK2B,EAA0BJ,GACxCM,EAAWN,EAAIR,EAAgBC,UAarC,OAZIa,IACF3F,EAAI+E,MACF,iBAAiBlF,KAAKuE,oCAAoCvC,EAAEd,YAAYiD,WAAWvD,MAAOkF,KAE5FlB,OAAOO,eAAelB,EAAQe,EAAgBC,SAAU,CACtDG,YAAY,EACZE,cAAc,EACdD,UAAU,EACVE,MAAOO,KAIJ7B,CACR,CAUD,GAAA3C,CAAIR,EAAmBU,GACrB,MAAMF,EAAM,IAAIyE,IACd,GAAG/F,KAAKsE,OAAO0B,cAAchG,KAAKsE,OAAO2B,QAAQnF,KAQnD,OANIU,GACFoD,OAAOsB,QAAQ1E,GAAawC,QAAQ,EAAEmC,EAAKZ,KACzCjE,EAAI8E,aAAaC,OAAOF,EAAKZ,EAAMhF,aAIhC+F,UAAUhF,EAAIf,YAAYgG,QAAQ,MAAO,MACjD,CAyFD,GAAAC,CAAOC,EAAaC,KAAqB/E,GACvC,OAAOiC,QAAQ+C,OACb,IAAIC,EACF,0FAGL,CAYD,QAAAC,CAASC,GACP,OAAOlD,QAAQ+C,OACb,IAAIC,EACF,0FAGL,CAYQ,SAAAG,GACP,MAAM,IAAIH,EACR,yFAEH,CAYD,cAAAI,CAAeC,GACb,MAAM,IAAIL,EACR,yFAEH,EClVI,MAAMM,EAAe,QCuDtB,MAAOC,UAAyB/C,EAOpC,WAAAlD,CAAYoD,EAAoBE,GAC9BpD,MAAMkD,EAAQ4C,EAAc1C,EAC7B,CAEkB,SAAA4C,GACjB,OAAO,IAAIC,EAAM,CACfC,QAAS,GAAGtH,KAAKsE,OAAO0B,cAAchG,KAAKsE,OAAO2B,QAErD,CAUQ,aAAM9D,CAAWC,GACxB,OAAOpC,KAAKuH,OAAOpF,QAAQC,EAC5B,CAWD,YAAMX,CACJX,EACAF,EACAc,GAEA,IACE,MAAMJ,EAAMtB,KAAKsB,IAAIR,GACrB,OAAOd,KAAKuH,OAAOC,KAAKlG,EAAKI,EAC9B,CAAC,MAAO+F,GACP,MAAMzH,KAAK0H,WAAWD,EACvB,CACF,CASD,UAAM1F,CACJjB,EACAF,GAEA,IACE,MAAMU,EAAMtB,KAAKsB,IAAIR,EAAW,CAAEF,GAAIA,IACtC,OAAOZ,KAAKuH,OAAO1B,IAAIvE,EACxB,CAAC,MAAOmG,GACP,MAAMzH,KAAK0H,WAAWD,EACvB,CACF,CAWD,YAAMxF,CACJnB,EACAF,EACAc,GAEA,IACE,MAAMJ,EAAMtB,KAAKsB,IAAIR,GACrB,OAAOd,KAAKuH,OAAOI,IAAIrG,EAAKI,EAC7B,CAAC,MAAO+F,GACP,MAAMzH,KAAK0H,WAAWD,EACvB,CACF,CAUD,YAAM,CACJ3G,EACAF,GAEA,IACE,MAAMU,EAAMtB,KAAKsB,IAAIR,EAAW,CAAEF,GAAIA,IACtC,OAAOZ,KAAKuH,OAAOrF,OAAOZ,EAC3B,CAAC,MAAOmG,GACP,MAAMzH,KAAK0H,WAAWD,EACvB,CACF,CAEQ,UAAAC,CAAWE,GAClB,MAAMC,EAAO,CACX3H,EACA4H,EACAC,EACAC,EACApB,GAEF,IAAK,MAAMqB,KAASJ,EAClB,GAAKD,EAAcM,QAAQC,SAASF,EAAM9D,MACxC,OAAO,IAAI8D,EAAML,EAAIM,SAEzB,OAAO,IAAIhI,EAAc0H,EAAIM,QAC9B,EC9KHf,EAAiBiB,aCuBX,MAAOC,UAMHrH,EACR,WAAAE,CAAYb,EAAYc,GACtBC,MAAMf,EAASc,EAChB,CAED,GAAAG,CAAIC,EAAcC,GAChB,OAAOxB,KAAKK,QAAQiB,IAAIC,EAAMC,EAC/B,CAED,aAAMW,CAAWC,GACf,OAAOpC,KAAKK,QAAQ8B,QAAWC,EAChC,EC/BI,MAAMkG,EAAU"}
1
+ {"version":3,"file":"for-http.js","sources":["../src/RestRepository.ts","../src/RestService.ts","../src/adapter.ts","../src/axios/constants.ts","../src/axios/axios.ts","../src/axios/index.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":["RestRepository","Repository","constructor","adapter","clazz","super","url","path","queryParams","this","request","details","RestService","_overrides","ignoreValidation","ignoreHandlers","toString","Model","tableName","class","HttpAdapter","Adapter","config","flavour","alias","flags","operation","model","overrides","Object","assign","headers","repository","prepare","args","log","logCtx","result","PersistenceKeys","METADATA","silly","defineProperty","enumerable","writable","configurable","value","record","id","pk","revert","obj","ob","m","build","name","constr","get","InternalError","metadata","toTableName","t","URL","protocol","host","entries","forEach","key","searchParams","append","encodeURI","replace","raw","rawInput","Promise","reject","UnsupportedError","Sequence","options","Statement","parseCondition","condition","AxiosFlavour","AxiosHttpAdapter","getClient","Axios","baseURL","client","create","_args","post","e","parseError","read","update","put","delete","err","errs","AuthorizationError","ConflictError","NotFoundError","error","message","includes","decoration","VERSION"],"mappings":"+SAkCM,MAAOA,UAIHC,EACR,WAAAC,CAAYC,EAAYC,GACtBC,MAAMF,EAASC,EAChB,CAED,GAAAE,CACEC,EACAC,GAEA,OAAOC,KAAKN,QAAQG,IAAIC,EAAMC,EAC/B,CAED,aAAME,CAAWC,GACf,OAAOF,KAAKN,QAAQO,QAAWC,EAChC,ECEG,MAAOC,UAIHZ,EAaR,WAAAE,CAAYC,EAAYC,GACtBC,MAAMF,EAASC,GAbEK,KAAAI,WAAkC,CACnDC,kBAAkB,EAClBC,gBAAgB,EAYjB,CAEQ,QAAAC,GACP,OAAUC,EAAMC,UAAUT,KAAKU,OAAxB,eACR,ECrBG,MAAgBC,UAKZC,EACR,WAAAnB,CAAsBoB,EAAcC,EAAiBC,GACnDnB,MAAMiB,EAAQC,EAASC,EACxB,CAaQ,KAAAC,CACPC,EAKAC,EACAC,GAEA,OAAOC,OAAOC,OAAOzB,MAAMoB,MAASC,EAAWC,EAAOC,GAAY,CAChEG,QAAS,CAAE,GAEd,CASQ,UAAAC,GAGP,OAAOpB,CACR,CAYQ,OAAAqB,CACPN,KACGO,GAEH,MAAMC,IAAEA,GAAQ1B,KAAK2B,OAAOF,EAAMzB,KAAKwB,SACjCI,EAASR,OAAOC,OAAO,CAAE,EAAEH,GAajC,OAZKA,EAAcW,EAAgBC,YACjCJ,EAAIK,MACF,0CAA2Cb,EAAcW,EAAgBC,WAE3EV,OAAOY,eAAeJ,EAAQC,EAAgBC,SAAU,CACtDG,YAAY,EACZC,UAAU,EACVC,cAAc,EACdC,MAAQlB,EAAcW,EAAgBC,aAInC,CACLO,OAAQnB,EACRoB,GAAIpB,EAAMV,EAAM+B,GAAGrB,EAAMzB,cAE5B,CAaQ,MAAA+C,CACPC,EACA9C,EACA2C,KACGb,GAEH,MAAMC,IAAEA,GAAQ1B,KAAK2B,OAAOF,EAAMzB,KAAKwC,QACjCE,EAA0B,CAAA,EAC1BC,EACa,iBAAVhD,EAAqBa,EAAMoC,MAAMF,EAAI/C,GAAS,IAAIA,EAAM+C,GAEjEhB,EAAIK,MAAM,oBAAoBY,EAAElD,YAAYoD,WAAWP,KACvD,MAAMQ,EAA0B,iBAAVnD,EAAqBa,EAAMuC,IAAIpD,GAASA,EAC9D,IAAKmD,EACH,MAAM,IAAIE,EACR,4CAA4CrD,GAEhD,MAAMiC,EAAS,IAAKkB,EAA0BL,GACxCQ,EAAWR,EAAIZ,EAAgBC,UAarC,OAZImB,IACFvB,EAAIK,MACF,iBAAiB/B,KAAKc,oCAAoC6B,EAAElD,YAAYoD,WAAWP,MAAOW,KAE5F7B,OAAOY,eAAeJ,EAAQC,EAAgBC,SAAU,CACtDG,YAAY,EACZE,cAAc,EACdD,UAAU,EACVE,MAAOa,KAIJrB,CACR,CAES,WAAAsB,CAA6BC,GACrC,MAAoB,iBAANA,EAAiBA,EAAI3C,EAAMC,UAAU0C,EACpD,CAUD,GAAAtD,CACEY,EACAV,GAEAU,EAAYT,KAAKkD,YAAYzC,GAC7B,MAAMZ,EAAM,IAAIuD,IACd,GAAGpD,KAAKa,OAAOwC,cAAcrD,KAAKa,OAAOyC,QAAQ7C,KAQnD,OANIV,GACFqB,OAAOmC,QAAQxD,GAAayD,QAAQ,EAAEC,EAAKrB,KACzCvC,EAAI6D,aAAaC,OAAOF,EAAKrB,EAAM7B,aAIhCqD,UAAU/D,EAAIU,YAAYsD,QAAQ,MAAO,MACjD,CAyFD,GAAAC,CAAOC,KAAgBtC,GACrB,OAAOuC,QAAQC,OACb,IAAIC,EACF,0FAGL,CAYD,QAAAC,CAASC,GACP,OAAOJ,QAAQC,OACb,IAAIC,EACF,0FAGL,CAYQ,SAAAG,GAKP,MAAM,IAAIH,EACR,yFAEH,CAYD,cAAAI,CAAeC,GACb,MAAM,IAAIL,EACR,yFAEH,ECjWI,MAAMM,EAAe,QC8DtB,MAAOC,UAAyB9D,EAMpC,WAAAlB,CAAYoB,EAAoBE,GAC9BnB,MAAMiB,EAAQ2D,EAAczD,EAC7B,CAEkB,SAAA2D,GACjB,OAAO,IAAIC,EAAM,CACfC,QAAS,GAAG5E,KAAKa,OAAOwC,cAAcrD,KAAKa,OAAOyC,QAErD,CAUQ,aAAMrD,CAAWC,GACxB,OAAOF,KAAK6E,OAAO5E,QAAQC,EAC5B,CAWQ,YAAM4E,CACbrE,EACA6B,EACApB,KAEG6D,GAEH,IACE,MAAMlF,EAAMG,KAAKH,IAAIY,GACrB,OAAOT,KAAK6E,OAAOG,KAAKnF,EAAKqB,EAC9B,CAAC,MAAO+D,GACP,MAAMjF,KAAKkF,WAAWD,EACvB,CACF,CASQ,UAAME,CACb1E,EACA6B,KAEGb,GAEH,IACE,MAAM5B,EAAMG,KAAKH,IAAIY,EAAW,CAC9B6B,GAAIA,IAEN,OAAOtC,KAAK6E,OAAO9B,IAAIlD,EACxB,CAAC,MAAOoF,GACP,MAAMjF,KAAKkF,WAAWD,EACvB,CACF,CAWQ,YAAMG,CACb3E,EACA6B,EACApB,KAEG6D,GAEH,IACE,MAAMlF,EAAMG,KAAKH,IAAIY,GACrB,OAAOT,KAAK6E,OAAOQ,IAAIxF,EAAKqB,EAC7B,CAAC,MAAO+D,GACP,MAAMjF,KAAKkF,WAAWD,EACvB,CACF,CAUQ,YAAM,CACbxE,EACA6B,KAEGyC,GAEH,IACE,MAAMlF,EAAMG,KAAKH,IAAIY,EAAW,CAC9B6B,GAAIA,IAEN,OAAOtC,KAAK6E,OAAOS,OAAOzF,EAC3B,CAAC,MAAOoF,GACP,MAAMjF,KAAKkF,WAAWD,EACvB,CACF,CAGQ,UAAAC,CAAgCK,KAAe9D,GACtD,MAAM+D,EAAO,CACXxC,EACAyC,EACAC,EACAC,EACAzB,GAEF,IAAK,MAAM0B,KAASJ,EAClB,GAAKD,EAAcM,QAAQC,SAASF,EAAM/C,MACxC,OAAO,IAAI+C,EAAML,EAAIM,SAEzB,OAAO,IAAI7C,EAAcuC,EAAIM,QAC9B,ECjMHpB,EAAiBsB,aCSV,MAAMC,EAAU"}
@@ -1,8 +1,7 @@
1
1
  import { Repository } from "@decaf-ts/core";
2
- import { Constructor, Model } from "@decaf-ts/decorator-validation";
2
+ import { Model } from "@decaf-ts/decorator-validation";
3
+ import { Constructor } from "@decaf-ts/decoration";
3
4
  import { HttpAdapter } from "./adapter";
4
- import { Context } from "@decaf-ts/db-decorators";
5
- import { HttpFlags } from "./types";
6
5
  /**
7
6
  * @description Repository for REST API interactions
8
7
  * @summary A specialized repository implementation for interacting with REST APIs.
@@ -32,8 +31,8 @@ import { HttpFlags } from "./types";
32
31
  * ```
33
32
  * @see {@link RestService}
34
33
  */
35
- export declare class RestRepository<M extends Model, Q, A extends HttpAdapter<any, any, Q, F, C>, F extends HttpFlags = HttpFlags, C extends Context<F> = Context<F>> extends Repository<M, Q, A> {
34
+ export declare class RestRepository<M extends Model, A extends HttpAdapter<any, any, any, any>, Q = A extends HttpAdapter<any, any, infer Q, any> ? Q : never> extends Repository<M, A> {
36
35
  constructor(adapter: A, clazz?: Constructor<M>);
37
- url(path: string, queryParams?: Record<string, string | number>): string;
38
- request<V>(details: Q): Promise<V>;
36
+ url(path: string | Constructor<M>, queryParams?: Record<string, string | number>): string;
37
+ request<R>(details: Q): Promise<R>;
39
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RestRepository.js","sourceRoot":"","sources":["../src/RestRepository.ts"],"names":[],"mappings":";;;AAAA,yCAA4C;AAM5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAa,cAMX,SAAQ,iBAAmB;IAC3B,YAAY,OAAU,EAAE,KAAsB;QAC5C,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,GAAG,CAAC,IAAY,EAAE,WAA6C;QAC7D,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,OAAU;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAI,OAAO,CAAC,CAAC;IAC1C,CAAC;CACF;AAlBD,wCAkBC"}
1
+ {"version":3,"file":"RestRepository.js","sourceRoot":"","sources":["../src/RestRepository.ts"],"names":[],"mappings":";;;AAAA,yCAA4C;AAK5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAa,cAIX,SAAQ,iBAAgB;IACxB,YAAY,OAAU,EAAE,KAAsB;QAC5C,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,GAAG,CACD,IAA6B,EAC7B,WAA6C;QAE7C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,OAAU;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAI,OAAO,CAAC,CAAC;IAC1C,CAAC;CACF;AAnBD,wCAmBC"}
@@ -1,9 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RestService = void 0;
4
- const db_decorators_1 = require("@decaf-ts/db-decorators");
5
- const core_1 = require("@decaf-ts/core");
6
- const logging_1 = require("@decaf-ts/logging");
4
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
5
+ const RestRepository_1 = require("./RestRepository.cjs");
7
6
  /**
8
7
  * @description Service class for REST API operations
9
8
  * @summary Provides a comprehensive implementation for interacting with REST APIs.
@@ -52,58 +51,7 @@ const logging_1 = require("@decaf-ts/logging");
52
51
  * Adapter-->>Service: record
53
52
  * Service-->>Client: revert(record)
54
53
  */
55
- class RestService extends logging_1.LoggedClass {
56
- /**
57
- * @description Gets the model class constructor
58
- * @summary Retrieves the model class constructor associated with this service.
59
- * Throws an error if no class definition is found.
60
- * @return {Constructor<M>} The model class constructor
61
- * @throws {InternalError} If no class definition is found
62
- */
63
- get class() {
64
- if (!this._class)
65
- throw new db_decorators_1.InternalError("No class definition found for this repository");
66
- return this._class;
67
- }
68
- get log() {
69
- if (!this.logger)
70
- this.logger = this.adapter["log"].for(this.toString());
71
- return this.logger;
72
- }
73
- /**
74
- * @description Gets the primary key property name
75
- * @summary Retrieves the name of the primary key property for the model.
76
- * If not already determined, it finds the primary key using the model class.
77
- * @return The primary key property name
78
- */
79
- get pk() {
80
- if (!this._pk)
81
- this._pk = (0, db_decorators_1.findPrimaryKey)(new this.class()).id;
82
- return this._pk;
83
- }
84
- /**
85
- * @description Gets the HTTP adapter
86
- * @summary Retrieves the HTTP adapter associated with this service.
87
- * Throws an error if no adapter is found.
88
- * @return {A} The HTTP adapter instance
89
- * @throws {InternalError} If no adapter is found
90
- */
91
- get adapter() {
92
- if (!this._adapter)
93
- throw new db_decorators_1.InternalError("No adapter found for this repository. did you use the @uses decorator or pass it in the constructor?");
94
- return this._adapter;
95
- }
96
- /**
97
- * @description Gets the table name for the model
98
- * @summary Retrieves the table name associated with the model class.
99
- * If not already determined, it gets the table name from the Repository utility.
100
- * @return {string} The table name
101
- */
102
- get tableName() {
103
- if (!this._tableName)
104
- this._tableName = core_1.Repository.table(this.class);
105
- return this._tableName;
106
- }
54
+ class RestService extends RestRepository_1.RestRepository {
107
55
  /**
108
56
  * @description Initializes a new RestService instance
109
57
  * @summary Creates a new service instance with the specified adapter and optional model class.
@@ -112,182 +60,14 @@ class RestService extends logging_1.LoggedClass {
112
60
  * @param {Constructor<M>} [clazz] - Optional constructor for the model class
113
61
  */
114
62
  constructor(adapter, clazz) {
115
- super();
116
- this.observers = [];
117
- this._adapter = adapter;
118
- if (clazz)
119
- this._class = clazz;
120
- }
121
- url(path, queryParams) {
122
- return this.adapter.url(path, queryParams);
123
- }
124
- /**
125
- * @description Creates a new resource
126
- * @summary Creates a new resource in the REST API using the provided model.
127
- * The method prepares the model for the adapter, sends the create request,
128
- * and then converts the response back to a model instance.
129
- * @param {M} model - The model instance to create
130
- * @param {...any[]} args - Additional arguments to pass to the adapter
131
- * @return {Promise<M>} A promise that resolves with the created model instance
132
- */
133
- async create(model, ...args) {
134
- // eslint-disable-next-line prefer-const
135
- let { record, id } = this.adapter.prepare(model, this.pk);
136
- record = await this.adapter.create(this.tableName, id, record, ...args);
137
- return this.adapter.revert(record, this.class, this.pk, id);
138
- }
139
- /**
140
- * @description Retrieves a resource by ID
141
- * @summary Fetches a resource from the REST API using the provided ID.
142
- * The method sends the read request and converts the response to a model instance.
143
- * @param {string|number} id - The identifier of the resource to retrieve
144
- * @param {...any[]} args - Additional arguments to pass to the adapter
145
- * @return {Promise<M>} A promise that resolves with the retrieved model instance
146
- */
147
- async read(id, ...args) {
148
- const m = await this.adapter.read(this.tableName, id, ...args);
149
- return this.adapter.revert(m, this.class, this.pk, id);
150
- }
151
- /**
152
- * @description Updates an existing resource
153
- * @summary Updates an existing resource in the REST API using the provided model.
154
- * The method prepares the model for the adapter, sends the update request,
155
- * and then converts the response back to a model instance.
156
- * @param {M} model - The model instance with updated data
157
- * @param {...any[]} args - Additional arguments to pass to the adapter
158
- * @return {Promise<M>} A promise that resolves with the updated model instance
159
- */
160
- async update(model, ...args) {
161
- // eslint-disable-next-line prefer-const
162
- let { record, id } = this.adapter.prepare(model, this.pk);
163
- record = await this.adapter.update(this.tableName, id, record, ...args);
164
- return this.adapter.revert(record, this.class, this.pk, id);
165
- }
166
- /**
167
- * @description Deletes a resource by ID
168
- * @summary Removes a resource from the REST API using the provided ID.
169
- * The method sends the delete request and converts the response to a model instance.
170
- * @param {string|number} id - The identifier of the resource to delete
171
- * @param {...any[]} args - Additional arguments to pass to the adapter
172
- * @return {Promise<M>} A promise that resolves with the deleted model instance
173
- */
174
- async delete(id, ...args) {
175
- const m = await this.adapter.delete(this.tableName, id, ...args);
176
- return this.adapter.revert(m, this.class, this.pk, id);
177
- }
178
- async request(details) {
179
- return this.adapter.request(details);
180
- }
181
- /**
182
- * @description Creates multiple resources
183
- * @summary Creates multiple resources in the REST API using the provided models.
184
- * The method prepares each model for the adapter, sends a bulk create request,
185
- * and then converts the responses back to model instances.
186
- * @param {M[]} models - The model instances to create
187
- * @param {...any[]} args - Additional arguments to pass to the adapter
188
- * @return {Promise<M[]>} A promise that resolves with an array of created model instances
189
- * @mermaid
190
- * sequenceDiagram
191
- * participant Client
192
- * participant Service as RestService
193
- * participant Adapter as HttpAdapter
194
- * Client->>Service: createAll(models)
195
- * Service->>Adapter: prepare(model, pk) x N
196
- * Service->>Adapter: createAll(table, ids[], records[])
197
- * Adapter-->>Service: records[]
198
- * Service-->>Client: revert(records[])
199
- */
200
- async createAll(models, ...args) {
201
- if (!models.length)
202
- return models;
203
- const prepared = models.map((m) => this.adapter.prepare(m, this.pk));
204
- const ids = prepared.map((p) => p.id);
205
- let records = prepared.map((p) => p.record);
206
- records = await this.adapter.createAll(this.tableName, ids, records, ...args);
207
- return records.map((r, i) => this.adapter.revert(r, this.class, this.pk, ids[i]));
208
- }
209
- /**
210
- * @description Deletes multiple resources by IDs
211
- * @summary Removes multiple resources from the REST API using the provided IDs.
212
- * The method sends a bulk delete request and converts the responses to model instances.
213
- * @param {string[]|number[]} keys - The identifiers of the resources to delete
214
- * @param {...any[]} args - Additional arguments to pass to the adapter
215
- * @return {Promise<M[]>} A promise that resolves with an array of deleted model instances
216
- */
217
- async deleteAll(keys, ...args) {
218
- const results = await this.adapter.deleteAll(this.tableName, keys, ...args);
219
- return results.map((r, i) => this.adapter.revert(r, this.class, this.pk, keys[i]));
220
- }
221
- /**
222
- * @description Retrieves multiple resources by IDs
223
- * @summary Fetches multiple resources from the REST API using the provided IDs.
224
- * The method sends a bulk read request and converts the responses to model instances.
225
- * @param {string[]|number[]} keys - The identifiers of the resources to retrieve
226
- * @param {...any[]} args - Additional arguments to pass to the adapter
227
- * @return {Promise<M[]>} A promise that resolves with an array of retrieved model instances
228
- */
229
- async readAll(keys, ...args) {
230
- const records = await this.adapter.readAll(this.tableName, keys, ...args);
231
- return records.map((r, i) => this.adapter.revert(r, this.class, this.pk, keys[i]));
232
- }
233
- /**
234
- * @description Updates multiple resources
235
- * @summary Updates multiple resources in the REST API using the provided models.
236
- * The method prepares each model for the adapter, sends a bulk update request,
237
- * and then converts the responses back to model instances.
238
- * @param {M[]} models - The model instances with updated data
239
- * @param {...any[]} args - Additional arguments to pass to the adapter
240
- * @return {Promise<M[]>} A promise that resolves with an array of updated model instances
241
- */
242
- async updateAll(models, ...args) {
243
- const records = models.map((m) => this.adapter.prepare(m, this.pk));
244
- const updated = await this.adapter.updateAll(this.tableName, records.map((r) => r.id), records.map((r) => r.record), ...args);
245
- return updated.map((u, i) => this.adapter.revert(u, this.class, this.pk, records[i].id));
246
- }
247
- /**
248
- * @description Registers an observer
249
- * @summary Adds an observer to the list of observers that will be notified of changes.
250
- * Throws an error if the observer is already registered.
251
- * @param {Observer} observer - The observer to register
252
- * @return {void}
253
- * @throws {InternalError} If the observer is already registered
254
- */
255
- observe(observer) {
256
- const index = this.observers.indexOf(observer);
257
- if (index !== -1)
258
- throw new db_decorators_1.InternalError("Observer already registered");
259
- this.observers.push(observer);
260
- }
261
- /**
262
- * @description Unregisters an observer
263
- * @summary Removes an observer from the list of observers.
264
- * Throws an error if the observer is not found.
265
- * @param {Observer} observer - The observer to unregister
266
- * @return {void}
267
- * @throws {InternalError} If the observer is not found
268
- */
269
- unObserve(observer) {
270
- const index = this.observers.indexOf(observer);
271
- if (index === -1)
272
- throw new db_decorators_1.InternalError("Failed to find Observer");
273
- this.observers.splice(index, 1);
274
- }
275
- /**
276
- * @description Notifies all registered observers
277
- * @summary Calls the refresh method on all registered observers to update themselves.
278
- * Any errors during observer refresh are logged as warnings but don't stop the process.
279
- * @param {...any[]} [args] - Optional arguments to pass to the observer refresh method
280
- * @return {Promise<void>} A promise that resolves when all observers have been updated
281
- */
282
- async updateObservers(...args) {
283
- const results = await Promise.allSettled(this.observers.map((o) => o.refresh(...args)));
284
- results.forEach((result, i) => {
285
- if (result.status === "rejected")
286
- console.warn(`Failed to update observable ${this.observers[i]}: ${result.reason}`);
287
- });
63
+ super(adapter, clazz);
64
+ this._overrides = {
65
+ ignoreValidation: true,
66
+ ignoreHandlers: true,
67
+ };
288
68
  }
289
69
  toString() {
290
- return `${this.class.name} rest service`;
70
+ return `${decorator_validation_1.Model.tableName(this.class)} REST service`;
291
71
  }
292
72
  }
293
73
  exports.RestService = RestService;