@decaf-ts/for-http 0.4.5 → 0.5.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/README.md CHANGED
@@ -29,7 +29,7 @@ A lightweight HTTP adapter layer for decaf-ts that enables CRUD-style repositori
29
29
 
30
30
  Documentation available [here](https://decaf-ts.github.io/for-http/)
31
31
 
32
- Minimal size: 6.8 KB kb gzipped
32
+ Minimal size: 7.1 KB kb gzipped
33
33
 
34
34
 
35
35
  # decaf-ts/for-http — Detailed Description
@@ -132,6 +132,30 @@ const config: HttpConfig = { protocol: "https", host: "api.example.com" };
132
132
  const adapter = new AxiosHttpAdapter(config);
133
133
  ```
134
134
 
135
+ ## Simple request helpers and options
136
+
137
+ Description: Use adapter-level `get/post/put/delete` helpers for raw endpoint calls with typed request options.
138
+
139
+ ```ts
140
+ import { AxiosHttpAdapter } from "@decaf-ts/for-http/axios";
141
+ import { HttpConfig, HttpRequestOptions } from "@decaf-ts/for-http";
142
+
143
+ const config: HttpConfig = { protocol: "https", host: "api.example.com" };
144
+ const adapter = new AxiosHttpAdapter(config);
145
+
146
+ const opts: HttpRequestOptions = {
147
+ timeout: 3000,
148
+ headers: { Authorization: "Bearer <token>" },
149
+ includeCredentials: true, // mapped to axios withCredentials
150
+ validateStatus: (status) => status < 500,
151
+ };
152
+
153
+ const users = await adapter.get("/v1/users", opts);
154
+ const created = await adapter.post("/v1/users", { name: "Alice" }, opts);
155
+ const updated = await adapter.put("/v1/users/u1", { name: "Alice A." }, opts);
156
+ const removed = await adapter.delete("/v1/users/u1", opts);
157
+ ```
158
+
135
159
  ## Service: RestService
136
160
 
137
161
  Description: Lightweight, model-centric service that delegates CRUD and bulk operations to the adapter.
@@ -294,6 +318,39 @@ class MyHttpAdapter extends HttpAdapter<HttpConfig, MyClient, MyRequestConfig, M
294
318
  }
295
319
  ```
296
320
 
321
+ ## Task Engine & Migration tips
322
+
323
+ `HttpAdapter` instances slot into `MigrationService.migrateAdapters` just like any other adapter. Provide per-flavour handlers when running migrations so the system can persist the last seen version (a file, another database, or a remote endpoint). When `taskMode` is enabled, spin up a separate `RamAdapter` for the `TaskService` (its alias must never match a migrating adapter), then call `MigrationService.migrateAdapters([...], { taskMode: true, taskService, handlers: {...}})` and use `migration.track()` to wait on each version.
324
+
325
+ ```ts
326
+ const handlers = {
327
+ http: {
328
+ async retrieveLastVersion() {
329
+ return await versionStore.read("http");
330
+ },
331
+ async setCurrentVersion(version: string) {
332
+ await versionStore.write("http", version);
333
+ },
334
+ },
335
+ };
336
+
337
+ const migrations = await MigrationService.migrateAdapters([httpAdapter], {
338
+ flavours: ["http"],
339
+ toVersion: "1.1.0",
340
+ taskMode: true,
341
+ taskService,
342
+ handlers,
343
+ });
344
+ for (const migration of migrations) {
345
+ await migration.track();
346
+ }
347
+ ```
348
+
349
+ `setCurrentVersion` runs after every fully applied version (once at the end when running inline, immediately after each tracked task in `taskMode`), so the recorded `currentVersion` always equals the last completed hop and `retrieveLastVersion` can skip it on restart. Failures leave the version unchanged; call `MigrationService.retry(taskId)` to reset the `TaskModel` to `PENDING`, clear the error/lease metadata, and rerun the pending version without touching already finished ones.
350
+
351
+ Control ordering through `@migration`: the `reference` string is your log-level semver label, `precedence` lets you force ordering between migrations sharing the same version/flavour, `flavour` restricts execution to specific adapters, and `rules` are async predicates that can skip a migration when its prerequisites are missing.
352
+
353
+ ## Constants and Types (axios)
297
354
  ## Constants and Types (axios)
298
355
 
299
356
  Description: Utilities specific to the Axios implementation.
package/dist/for-http.cjs CHANGED
@@ -1,2 +1,2 @@
1
- var e,t;e=this,t=function(e,t,r,s,i,a,n,o,c,d){"use strict";var l,h,u,p,g,f,y;class m extends t.Repository{constructor(e,t){super(e,t),this._overrides=Object.assign({},super._overrides,{allowRawStatements:!1,forcePrepareSimpleQueries:!0,forcePrepareComplexQueries:!0})}url(e,t,r){return this.adapter.url(e,t,r)}async paginateBy(e,r,s={offset:1,limit:10},...a){const{offset:n,bookmark:o,limit:c}=s,{log:d,ctxArgs:l}=(await this.logCtx(a,t.PreparedStatementKeys.PAGE_BY,!0)).for(this.paginateBy);d.verbose(`paginating ${i.Model.tableName(this.class)} with page size ${c}`);const h={direction:r,limit:c};return o&&(h.bookmark=o),this.statement(this.paginateBy.name,e,n,h,...l)}async listBy(e,r,...s){const{log:a,ctxArgs:n}=(await this.logCtx(s,t.PreparedStatementKeys.LIST_BY,!0)).for(this.listBy);return a.verbose(`listing ${i.Model.tableName(this.class)} by ${e} ${r}`),await this.statement(this.listBy.name,e,{direction:r},...n)}async findBy(e,r,...s){const{log:a,ctxArgs:n}=(await this.logCtx(s,t.PreparedStatementKeys.FIND_BY,!0)).for(this.findBy);return a.verbose(`finding ${i.Model.tableName(this.class)} with ${e} ${r}`),await this.statement(this.findBy.name,e,r,{},...n)}async findOneBy(e,r,...s){const{log:a,ctxArgs:n}=(await this.logCtx(s,t.PreparedStatementKeys.FIND_ONE_BY,!0)).for(this.findOneBy);return a.verbose(`finding ${i.Model.tableName(this.class)} with ${e} ${r}`),await this.statement(this.findOneBy.name,e,r,{},...n)}async find(e,r=t.OrderDirection.ASC,...s){const{log:a,ctxArgs:n}=(await this.logCtx(s,t.PreparedStatementKeys.FIND,!0)).for(this.find);return a.verbose(`finding ${i.Model.tableName(this.class)} by default query attributes`),await this.statement(this.find.name,e,r,...n)}async page(e,r=t.OrderDirection.ASC,s={offset:1,limit:10},...a){const{log:n,ctxArgs:o}=(await this.logCtx(a,t.PreparedStatementKeys.PAGE,!0)).for(this.page);return n.verbose(`paging ${i.Model.tableName(this.class)} by default query attributes`),await this.statement(this.page.name,e,r,s,...o)}async statement(e,...r){const{log:s,ctx:i,ctxArgs:a}=(await this.logCtx(r,t.PersistenceKeys.STATEMENT,!0)).for(this.statement),n=a.slice(0,-1),o=n[n.length-1],c="object"!=typeof o||null===o||Array.isArray(o)?void 0:n.pop(),d={class:this.class,args:n,method:e,params:c},l=this.adapter.toRequest(d,i);s.verbose("Executing prepared statement "+e);const h=await this.request(l,...a),u=this.adapter.parseResponse(this.class,e,h);return this.convertStatementResult(e,u,i)}convertStatementResult(e,r,s){return r?e===t.PreparedStatementKeys.FIND||e===t.PreparedStatementKeys.LIST_BY||e===t.PreparedStatementKeys.FIND_BY?Array.isArray(r)?r.map(e=>this.revertRecord(e,s)):r:e===t.PreparedStatementKeys.FIND_ONE_BY?this.revertRecord(r,s):e===t.PreparedStatementKeys.PAGE||e===t.PreparedStatementKeys.PAGE_BY?this.convertPageResult(r,s):r:r}convertPageResult(e,r){if(!e)return e;let s=e;if("string"==typeof s)try{s=t.Paginator.deserialize(s)}catch{return e}return t.Paginator.isSerializedPage(s)?{...s,data:s.data.map(e=>this.revertRecord(e,r))}:e}revertRecord(e,t){if(!e)return e;if(e instanceof this.class)return e;const r=i.Model.pk(this.class),s=i.Model.columnName(this.class,r),a=r??s,n=e[s]??e[a];if(void 0!==n)try{return this.adapter.revert(e,this.class,n,void 0,t)}catch{}return Object.assign(new this.class,e)}async request(e,...r){let i;i=r.length&&r[r.length-1]instanceof t.Context?this.logCtx(r,this.request):(await this.logCtx(r,s.OperationKeys.READ,!0)).for(this.request);const{ctxArgs:a}=i;return this.adapter.request(e,...a)}async countOf(e,...r){const{log:s,ctxArgs:a}=(await this.logCtx(r,t.PreparedStatementKeys.COUNT_OF,!0)).for(this.countOf);s.verbose(`counting ${i.Model.tableName(this.class)}${e?" by "+e:""}`);const n=e?[e,{}]:[{}];return await this.statement(this.countOf.name,...n,...a)}async maxOf(e,...r){const{log:s,ctxArgs:a}=(await this.logCtx(r,t.PreparedStatementKeys.MAX_OF,!0)).for(this.maxOf);return s.verbose(`finding max of ${e} in ${i.Model.tableName(this.class)}`),await this.statement(this.maxOf.name,e,{},...a)}async minOf(e,...r){const{log:s,ctxArgs:a}=(await this.logCtx(r,t.PreparedStatementKeys.MIN_OF,!0)).for(this.minOf);return s.verbose(`finding min of ${e} in ${i.Model.tableName(this.class)}`),await this.statement(this.minOf.name,e,{},...a)}async avgOf(e,...r){const{log:s,ctxArgs:a}=(await this.logCtx(r,t.PreparedStatementKeys.AVG_OF,!0)).for(this.avgOf);return s.verbose(`calculating avg of ${e} in ${i.Model.tableName(this.class)}`),await this.statement(this.avgOf.name,e,{},...a)}async sumOf(e,...r){const{log:s,ctxArgs:a}=(await this.logCtx(r,t.PreparedStatementKeys.SUM_OF,!0)).for(this.sumOf);return s.verbose(`calculating sum of ${e} in ${i.Model.tableName(this.class)}`),await this.statement(this.sumOf.name,e,{},...a)}async distinctOf(e,...r){const{log:s,ctxArgs:a}=(await this.logCtx(r,t.PreparedStatementKeys.DISTINCT_OF,!0)).for(this.distinctOf);return s.verbose(`finding distinct values of ${e} in ${i.Model.tableName(this.class)}`),await this.statement(this.distinctOf.name,e,{},...a)}async groupOf(e,...r){const{log:s,ctxArgs:a}=(await this.logCtx(r,t.PreparedStatementKeys.GROUP_OF,!0)).for(this.groupOf);return s.verbose(`grouping ${i.Model.tableName(this.class)} by ${e}`),await this.statement(this.groupOf.name,e,{},...a)}}a.__decorate([t.prepared(),a.__metadata("design:type",Function),a.__metadata("design:paramtypes",[String,String,void 0]),a.__metadata("design:returntype",Promise)],m.prototype,"find",null),a.__decorate([t.prepared(),a.__metadata("design:type",Function),a.__metadata("design:paramtypes",[String,String,Object,void 0]),a.__metadata("design:returntype",Promise)],m.prototype,"page",null),a.__decorate([t.prepared(),a.__metadata("design:type",Function),a.__metadata("design:paramtypes",[Object,void 0]),a.__metadata("design:returntype",Promise)],m.prototype,"countOf",null),a.__decorate([t.prepared(),a.__metadata("design:type",Function),a.__metadata("design:paramtypes",["function"==typeof(l="undefined"!=typeof K&&K)?l:Object,void 0]),a.__metadata("design:returntype",Promise)],m.prototype,"maxOf",null),a.__decorate([t.prepared(),a.__metadata("design:type",Function),a.__metadata("design:paramtypes",["function"==typeof(h="undefined"!=typeof K&&K)?h:Object,void 0]),a.__metadata("design:returntype",Promise)],m.prototype,"minOf",null),a.__decorate([t.prepared(),a.__metadata("design:type",Function),a.__metadata("design:paramtypes",["function"==typeof(u="undefined"!=typeof K&&K)?u:Object,void 0]),a.__metadata("design:returntype",Promise)],m.prototype,"avgOf",null),a.__decorate([t.prepared(),a.__metadata("design:type",Function),a.__metadata("design:paramtypes",["function"==typeof(p="undefined"!=typeof K&&K)?p:Object,void 0]),a.__metadata("design:returntype",Promise)],m.prototype,"sumOf",null),a.__decorate([t.prepared(),a.__metadata("design:type",Function),a.__metadata("design:paramtypes",["function"==typeof(g="undefined"!=typeof K&&K)?g:Object,void 0]),a.__metadata("design:returntype",Promise)],m.prototype,"distinctOf",null),a.__decorate([t.prepared(),a.__metadata("design:type",Function),a.__metadata("design:paramtypes",["function"==typeof(f="undefined"!=typeof K&&K)?f:Object,void 0]),a.__metadata("design:returntype",Promise)],m.prototype,"groupOf",null);class v extends m{constructor(e,t){super(e,t),this._overrides=Object.assign({},super._overrides,{ignoreValidation:!0,ignoreHandlers:!0,allowRawStatements:!1,forcePrepareSimpleQueries:!0,forcePrepareComplexQueries:!0})}toString(){return i.Model.tableName(this.class)+" REST service"}}class E extends t.Statement{constructor(e,t){super(e,t)}build(){throw new t.UnsupportedError("This method is only called is prepared statements are not used. If so, a dedicated implementation for the native queries used is required")}parseCondition(e,...r){throw new t.UnsupportedError("This method is only called is prepared statements are not used. Is so, a dedicated implementation for the native queries used is required")}}class w extends t.Paginator{constructor(e,t,r,s){super(e,t,r,s)}async pagePrepared(e,...r){const s=t.Repository.forModel(this.clazz,this.adapter.alias),i=this.query,{method:a,args:n,params:o}=i,c=RegExp(`^${t.PreparedStatementKeys.FIND_BY}|${t.PreparedStatementKeys.LIST_BY}`,"gi");if(!a.match(c))throw new t.UnsupportedError(`Method ${a} is not supported for pagination`);c.lastIndex=0;const d=[a.replace(c,t.PreparedStatementKeys.PAGE_BY),...n],l={direction:o.direction,limit:this.size,offset:e,bookmark:this._bookmark};d.push(l);const h=await s.statement(...d,...r);return this.apply(h)}prepare(e){throw new t.UnsupportedError("Raw query access must be implemented by a subclass. only prepared statements are natively available")}page(e=1,...t){return super.page(e,...t)}}class O extends t.ContextualLoggedClass{static{this.cache=new Map}static get(e){if(this.cache.has(e))return this.cache.get(e);throw Error(`Server event connector not found for URL '${e}'. Did you forget to call open()?`)}static open(e,t){if(this.cache.has(e))return this.cache.get(e);const r=new O(e,t);return this.cache.set(e,r),this.cache.get(e)}static close(e){this.cache.has(e)&&this.cache.get(e).close()}static parseReceivedEvent(e){const t=e=>{if("string"!=typeof e)return e;try{return i.Serialization.deserialize(e)}catch{try{return JSON.parse(e)}catch{return e}}};try{const r="string"==typeof e?JSON.parse(e):e;if(!Array.isArray(r)||3>r.length)return null;const[s,i,a,n]=r;if("string"!=typeof s)return null;let o;return o=Array.isArray(n)?n.map(e=>t(e)):t(n),[s,i+"",a,o]}catch{return null}}constructor(e,t){super(),this.url=e,this.headers=t,this.stateLock=new c.Lock,this.ready=!1,this.listeners=new Set}isOpen(){return void 0!==this.es}async withStateLock(e){await this.stateLock.acquire();try{return await Promise.resolve(e())}finally{this.stateLock.release()}}async getOpening(){return this.withStateLock(()=>this.opening)}async setOpening(e){await this.withStateLock(()=>{this.opening=e})}async isReady(){return this.withStateLock(()=>this.ready)}async setReady(e){await this.withStateLock(()=>{this.ready=e})}async getHeaders(){let e=this.headers;return"function"==typeof this.headers&&(e=await Promise.resolve(this.headers())),e||{}}close(e=!1){const t=this.log.for(this.close);if(this.es)if(0>=this.listeners.size||e)try{t.info("Closing EventSource connection for listening URL "+this.url),this.controller?.abort()}finally{this.controller=void 0,this.es=void 0,this.setReady(!1),this.setOpening(void 0),this.listeners.clear(),O.cache.delete(this.url),t.info(`EventSource connection ${this.url} closed and removed from pool`)}else t.warn(`Skipping EventSource connection close ${this.url} \u2014 ${this.listeners.size} active listener(s) remaining.`);else t.debug("Skipping EventSource close \u2014 no open connection to "+this.url)}async startListening(){const e=this.log.for(this.startListening);if(this.es&&await this.isReady())return void e.info(`Listening address ${this.url} is already in the pool and listening. Skipping opening a new connection.`,{url:this.url,listeners:this.listeners.size});const t=await this.getOpening();if(t)return e.debug("Connection open already in progress for "+this.url,{url:this.url,listeners:this.listeners.size}),void await t;const r=(async()=>{e.info("Opening EventSource connection to "+this.url);const t=await this.getHeaders();let r,s;this.es=new o.EventSourcePlus(this.url,{...t&&{headers:t},credentials:"include"}),await this.setReady(!1);const i=new Promise((e,t)=>{r=e,s=t}),a=this;this.controller=this.es.listen({onResponse:async()=>{await a.setReady(!0),e.info(`Connected to ${this.url}. Ready to receive events`),r()},onRequestError:({error:t})=>{e.error("Failed to establish EventSource connection",{url:this.url,error:t}),a.setReady(!1),s(t),a.listeners.forEach(e=>e.onError((t?.message??t)+""))},onResponseError:({response:t})=>{const r=t?.status,i=t?.statusText;e.error("Listening failed with HTTP error response",{url:this.url,status:r,statusText:i});const n=Error(`HTTP ${r??"unknown"} ${i??"error"}`);a.setReady(!1),s(n),a.listeners.forEach(e=>e.onError(n))},onMessage:t=>{if("heartbeat"===t.event)return void e.debug("Refresh connection. Heartbeat received.");const r=t&&"object"==typeof t&&"data"in t?t.data:t,s=O.parseReceivedEvent(r);if(s)for(const t of a.listeners)try{t.onEvent(s)}catch(t){e.error("Listener handler failed on event",{err:t})}else e.warn("Failed to parse SSE message",{url:this.url,raw:r})}}),await i})().finally(()=>{this.setOpening(void 0)});await this.setOpening(r);try{await r}catch(e){throw this.controller=void 0,this.es=void 0,await this.setReady(!1),e}}async ensureListening(){await this.startListening()}addListener(e){const t=this.log.for(this.addListener);return t.info(`Registering listener for connection ${this.url} \u2014 ${this.listeners.size} active listener(s)`),this.listeners.add(e),this.ensureListening().then(()=>{t.info(`Listener registered for connection ${this.url} \u2014 total listener(s): ${this.listeners.size}`)}),()=>this.removeListener(e)}removeListener(e){const t=this.log.for(this.removeListener),r=this.listeners.has(e);t.info(`Unregistering listener for connection ${this.url}. Current active listeners: ${this.listeners.size}`,{listenerFound:r}),r&&(this.listeners.delete(e),t.debug(`Listener unregistered for connection ${this.url} \u2014 total listener(s): ${this.listeners.size}`)),0===this.listeners.size&&(t.info(`No listeners remaining. Closing EventSource connection ${this.url}.`,{url:this.url,listeners:this.listeners.size}),this.close())}}class b extends t.Dispatch{constructor(){super(...arguments),this.initialized=!1,this.listening=!1}async initialize(...e){const{log:r,ctxArgs:s}=(await this.logCtx(e,t.PersistenceKeys.INITIALIZATION,!0)).for(this.initialize);this.adapter?(r.info(`Initializing ${this.adapter}'s event Dispatch, but not listening yet.`),this.initialized=!0,await this.startListening(...s),r.info(`HttpDispatcher initialized for adapter ${this.adapter}.`)):r.verbose("No adapter observed for dispatch; skipping initialization")}async startListening(...e){const{log:t}=this.logCtx(e,this.startListening);if(!this.initialized||!this.adapter)throw t.error("Cannot start listening: dispatcher is not initialized or adapter is missing",{initialized:this.initialized,hasAdapter:!!this.adapter}),Error("Cannot start listening before call initialize()");if(!this.adapter.config.events)return void t.warn("SSe events disabled");this.listening&&t.warn("startListening called but dispatcher is already listening",{adapter:this.adapter+""});const{protocol:r,host:i,eventsListenerPath:a}=this.adapter.config;if(!a)throw t.error("Cannot start listening: no eventsListenerPath specified",{protocol:r,host:i}),Error("No eventsListenerPath specified");const n=new URL(a,`${r}://${i}`).toString();t.info("Opening ServerEventConnector for url: "+n),this.connector=O.open(n,async()=>{if(!this.adapter)throw new s.InternalError("Adapter not initialized");try{return this.adapter.getEventHeaders()}catch(e){throw new s.InternalError("Failed to get event headers: "+e)}}),t.debug("ServerEventConnector opened successfully for url: "+n),this.removeConnectorListener?.(),this.removeConnectorListener=this.connector.addListener({onEvent:async e=>{const[t,r,s,...i]=e,{log:a,ctxArgs:n}=(await this.logCtx(i,r,!0)).for("onEvent");super.updateObservers(t,r,s,...n).catch(e=>a.error("ServerEventConnector failed to updateObservers",e))},onError:e=>{t.error("ServerEventConnector failed to dispatch event",{error:e,listeningUrl:n,adapter:this.adapter+""})}}),await this.connector.ensureListening(),this.listening=!0,t.info(`HttpDispatcher is now listening at ${n}.`)}async close(...e){this.removeConnectorListener?.(),this.removeConnectorListener=void 0,this.connector?.close(),this.listening=!1}}function S(e,t,r,s){const i=s||t.name;e[i]=new Proxy(e[i],{apply:async(e,t,s)=>{let i=e.call(t,...s);return i instanceof Promise&&(i=await i),i=r.call(t,i),i instanceof Promise&&(i=await i),i}})}e.DecafHeaders=void 0,(y=e.DecafHeaders||(e.DecafHeaders={})).PENDING_TASK="x-pending-task",y.CORRELATION_ID="x-correlation-id";class A extends t.Adapter{constructor(e,t,r){super(Object.assign({},e,{headers:void 0===e.headers||e.headers,events:void 0===e.events||e.events}),t,r);const i=this;[this.create,this.read,this.update,this.delete,this.createAll,this.readAll,this.updateAll,this.deleteAll].forEach(e=>{S(this,e,t=>i.parseResponse.call(i,void 0,e.name,t),e.name)}),s.wrapMethodWithContext(this,(...e)=>e,this.request,(e,t)=>{const r=i.config.parsers;return r?(r.forEach(r=>r(e,t)),e):e},this.request.name)}async flags(e,t,r){return super.flags(e,t,Object.assign({headers:r.headers??{}},r))}Dispatch(){return new b}async getEventHeaders(){return this.config.eventHeaderResolver&&await Promise.resolve(this.config.eventHeaderResolver)||{}}repository(){return v}prepare(e,...r){const{log:s}=this.logCtx(r,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[i.Model.pk(e.constructor)]}}revert(e,r,a,...n){const{log:o}=this.logCtx(n,this.revert),c={},d="string"==typeof r?i.Model.build(c,r):new r(c);o.silly(`Rebuilding model ${d.constructor.name} id ${a}`);const l="string"==typeof r?i.Model.get(r):r;if(!l)throw new s.InternalError("Failed to retrieve model constructor for "+r);const h=new l(e),u=e[t.PersistenceKeys.METADATA];return u&&(o.silly(`Passing along ${this.flavour} persistence metadata for ${d.constructor.name} id ${a}: ${u}`),Object.defineProperty(h,t.PersistenceKeys.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:u})),h}toTableName(e){return"string"==typeof e?e:n.toKebabCase(i.Model.tableName(e))}toHeaders(t){const r={};if(this.config.headers){const s=t.getOrUndefined("correlationId");s&&(r[e.DecafHeaders.CORRELATION_ID]=s)}return{...r,...t.getOrUndefined("headers")||{}}}url(e,t,r){r||t&&!Array.isArray(t)&&(r=t,t=[]),e=this.toTableName(e);const s=new URL(`${this.config.protocol}://${this.config.host}/${e}${t&&t.length?"/"+t.join("/"):""}`);return r&&Object.entries(r).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>s.searchParams.append(e,t.toString())):"object"==typeof t?s.searchParams.append(e,JSON.stringify(t)):void 0!==t&&s.searchParams.append(e,t.toString())}),s.toString()}extractIdArgs(e,t){const r=t.toString();if("string"==typeof e)return[r];const s=i.Model.composed(e,i.Model.pk(e));return s?r.split(s.separator):[r]}parseResponse(e,r,s){return e&&t.Paginator.isSerializedPage(s)?Object.assign({},s,{data:s.data.map(t=>new e(t))}):s}raw(e,...t){const{ctxArgs:r,ctx:s}=this.logCtx(t,this.raw),i=this.toRequest(e,s);return this.request(i,...r)}Sequence(e){return Promise.reject(new t.UnsupportedError("Api is not natively available for HttpAdapters. If required, please extends this class"))}Statement(e){return new E(this,e)}Paginator(e,t,r){return new w(this,e,t,r)}parseCondition(e){throw new t.UnsupportedError("Api is not natively available for HttpAdapters. If required, please extends this class")}static parseError(e,...r){const i="string"==typeof e?e:e.message;return i.includes(s.NotFoundError.name)||i.includes("404")?new s.NotFoundError(e):i.includes(s.ConflictError.name)||i.includes("409")?new s.ConflictError(e):i.includes(s.BadRequestError.name)||i.includes("400")?new s.BadRequestError(e):i.includes(s.ValidationError.name)||i.includes("422")?new s.ValidationError(e):i.includes(t.QueryError.name)?new t.QueryError(e):i.includes(t.PagingError.name)?new t.PagingError(e):i.includes(t.UnsupportedError.name)?new t.UnsupportedError(e):i.includes(t.MigrationError.name)?new t.MigrationError(e):i.includes(t.ObserverError.name)?new t.ObserverError(e):i.includes(t.AuthorizationError.name)?new t.AuthorizationError(e):i.includes(t.ForbiddenError.name)?new t.ForbiddenError(e):i.includes(t.ConnectionError.name)?new t.ConnectionError(e):i.includes(s.SerializationError.name)?new s.SerializationError(e):new s.InternalError(e)}static decoration(){super.decoration(),r.Decoration.for(t.PersistenceKeys.QUERY).define({decorator:e=>(i,a,n)=>r.apply(r.methodMetadata(r.Metadata.key(t.PersistenceKeys.QUERY,a),e),t.prepared(),(e,t,r)=>{r.value=new Proxy(r.value,{async apply(e,t,r){const i=t,{log:n,ctxArgs:o}=(await i.logCtx(r,s.OperationKeys.READ,!0)).for(a);return n.verbose("Running prepared statement "+e.name),n.debug("With args: "+JSON.stringify(r,null,2)),t.statement(e.name,...o)}})})(i,a,n)}).apply()}}A.decoration();const P="axios",_=(t,r)=>{if(t.headers&&t.headers[e.DecafHeaders.PENDING_TASK]){let s;try{s=JSON.parse(t.headers[e.DecafHeaders.PENDING_TASK]),Object.entries(s).forEach(([e,t])=>{t.forEach(t=>r.pushPending(e,t))})}catch(s){r.logger.for(_).error(`Failed to parse pending tasks header ${t.headers[e.DecafHeaders.PENDING_TASK]}: ${s}`)}}};class x extends A{constructor(e,t){super(e,P,t)}getClient(){return new d.Axios({baseURL:`${this.config.protocol}://${this.config.host}`})}toRequest(e,r){let s,i;e instanceof t.Context?(i=e,s=void 0):(s=e,i=r);const a={};return i&&(a.headers={...a.headers||{},...this.toHeaders(i)}),s&&(a.method="GET",a.url=this.url(s.class,[t.PersistenceKeys.STATEMENT,s.method,...s.args||[]],s.params)),a}async request(e,...t){let r={};try{const{ctx:e}=this.logCtx(t,this.request);r=this.toRequest(e)}catch(e){}return await this.client.request(Object.assign({},e,r))}parseResponse(e,r,i){if(!i.status&&r!==t.PersistenceKeys.STATEMENT)throw new s.InternalError("this should be impossible");if(i.status>=400)throw this.parseError(i.error||i.status);const a=this.normalizeResponseBody(i);switch(r){case s.BulkCrudOperationKeys.CREATE_ALL:case s.BulkCrudOperationKeys.READ_ALL:case s.BulkCrudOperationKeys.UPDATE_ALL:case s.BulkCrudOperationKeys.DELETE_ALL:case s.OperationKeys.CREATE:case s.OperationKeys.READ:case s.OperationKeys.UPDATE:case s.OperationKeys.DELETE:return a;case t.PreparedStatementKeys.FIND:case t.PreparedStatementKeys.PAGE:case t.PreparedStatementKeys.FIND_BY:case t.PreparedStatementKeys.LIST_BY:case t.PreparedStatementKeys.PAGE_BY:case t.PreparedStatementKeys.FIND_ONE_BY:case t.PersistenceKeys.STATEMENT:return super.parseResponse(e,r,a);case t.PreparedStatementKeys.COUNT_OF:case t.PreparedStatementKeys.MAX_OF:case t.PreparedStatementKeys.MIN_OF:case t.PreparedStatementKeys.AVG_OF:case t.PreparedStatementKeys.SUM_OF:case t.PreparedStatementKeys.DISTINCT_OF:return a;case t.PreparedStatementKeys.GROUP_OF:if(e&&"object"==typeof a&&null!==a){const t={};for(const[r,s]of Object.entries(a))t[r]=Array.isArray(s)?s.map(t=>new e(t)):s;return t}return a;default:return a}}normalizeResponseBody(e){if(!e)return e;const t=void 0!==e.body?e.body:void 0!==e.data?e.data:e;if("string"==typeof t)try{return JSON.parse(t)}catch{return t}return t}async create(e,t,r,...s){const{log:a,ctx:n}=this.logCtx(s,this.create);try{const s=this.url(e,this.extractIdArgs(e,t)),o=this.toRequest(n);return a.debug(`POSTing to ${s} with ${JSON.stringify(r)} and cfg ${JSON.stringify(o)}`),await this.request({url:s,method:"POST",data:JSON.stringify(Object.assign({},r,{[i.ModelKeys.ANCHOR]:e.name})),...o},n)}catch(e){throw this.parseError(e)}}async createAll(e,t,r,...s){const{log:a,ctx:n}=this.logCtx(s,this.createAll);try{const t=this.url(e,["bulk"]),s=this.toRequest(n);return a.debug(`POSTing to ${t} with ${JSON.stringify(r)} and cfg ${JSON.stringify(s)}`),this.request({url:t,method:"POST",data:JSON.stringify(r.map(t=>Object.assign({},t,{[i.ModelKeys.ANCHOR]:e.name}))),...s},n)}catch(e){throw this.parseError(e)}}async read(e,t,...r){const{log:s,ctx:i}=this.logCtx(r,this.read);try{const r=this.url(e,this.extractIdArgs(e,t)),a=this.toRequest(i);return s.debug(`GETing from ${r} and cfg ${JSON.stringify(a)}`),await this.request({url:r,method:"GET",...a},i)}catch(e){throw this.parseError(e)}}async readAll(e,t,...r){const{log:s,ctx:i}=this.logCtx(r,this.readAll);try{const r=this.url(e,["bulk"],{ids:t}),a=this.toRequest(i);return s.debug(`GETing from ${r} and cfg ${JSON.stringify(a)}`),await this.request({url:r,method:"GET",...a},i)}catch(e){throw this.parseError(e)}}async update(e,t,r,...s){const{log:a,ctx:n}=this.logCtx(s,this.update);try{const s=this.url(e,this.extractIdArgs(e,t)),o=this.toRequest(n);return a.debug(`PUTing to ${s} with ${JSON.stringify(r)} and cfg ${JSON.stringify(o)}`),await this.request({url:s,method:"PUT",data:JSON.stringify(Object.assign({},r,{[i.ModelKeys.ANCHOR]:e.name})),...o},n)}catch(e){throw this.parseError(e)}}async updateAll(e,t,r,...s){const{log:a,ctx:n}=this.logCtx(s,this.updateAll);try{const t=this.url(e,["bulk"]),s=this.toRequest(n);return a.debug(`PUTing to ${t} with ${JSON.stringify(r)} and cfg ${JSON.stringify(s)}`),this.request({url:t,method:"PUT",data:JSON.stringify(r.map(t=>Object.assign({},t,{[i.ModelKeys.ANCHOR]:e.name}))),...s},n)}catch(e){throw this.parseError(e)}}async delete(e,t,...r){const{log:s,ctx:i}=this.logCtx(r,this.delete);try{const r=this.url(e,this.extractIdArgs(e,t)),a=this.toRequest(i);return s.debug(`DELETEing from ${r} and cfg ${JSON.stringify(a)}`),await this.request({url:r,method:"DELETE",...a},i)}catch(e){throw this.parseError(e)}}async deleteAll(e,t,...r){const{log:s,ctx:i}=this.logCtx(r,this.delete);try{const r=this.url(e,["bulk"],{ids:t}),a=this.toRequest(i);return s.debug(`DELETEing from ${r} and cfg ${JSON.stringify(a)}`),await this.request({url:r,method:"DELETE",...a},i)}catch(e){throw this.parseError(e)}}parseError(e,...t){return A.parseError(e,...t)}}x.decoration();const N="##VERSION##",R="##PACKAGE##";r.Metadata.registerLibrary(R,N),e.AxiosFlavour=P,e.AxiosHttpAdapter=x,e.HttpAdapter=A,e.HttpPaginator=w,e.HttpStatement=E,e.KeepAliveOperation="keepalive",e.PACKAGE_NAME=R,e.RestRepository=m,e.RestService=v,e.ServerEventConnector=O,e.TaskResponseParser=_,e.VERSION=N,e.suffixMethod=S},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/core"),require("@decaf-ts/decoration"),require("@decaf-ts/db-decorators"),require("@decaf-ts/decorator-validation"),require("tslib"),require("@decaf-ts/logging"),require("event-source-plus"),require("@decaf-ts/transactional-decorators"),require("axios")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/core","@decaf-ts/decoration","@decaf-ts/db-decorators","@decaf-ts/decorator-validation","tslib","@decaf-ts/logging","event-source-plus","@decaf-ts/transactional-decorators","axios"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["for-http"]={},e.decafTsCore,e.decafTsDecoration,e.decafTsDbDecorators,e.decafTsDecoratorValidation,e.tslib,e.decafTsLogging,e.eventSourcePlus,e.decafTsTransactionalDecorators,e.axios);
1
+ var e,t;e=this,t=function(e,t,r,s,i,a,n,o,c,d){"use strict";var l,h,p,u,g,f,y;class m extends t.Repository{constructor(e,t){super(e,t),this._overrides=Object.assign({},super._overrides,{allowRawStatements:!1,forcePrepareSimpleQueries:!0,forcePrepareComplexQueries:!0})}url(e,t,r){return this.adapter.url(e,t,r)}async paginateBy(e,r,s={offset:1,limit:10},...a){const{offset:n,bookmark:o,limit:c}=s,{log:d,ctxArgs:l}=(await this.logCtx(a,t.PreparedStatementKeys.PAGE_BY,!0)).for(this.paginateBy);d.verbose(`paginating ${i.Model.tableName(this.class)} with page size ${c}`);const h={direction:r,limit:c};return o&&(h.bookmark=o),this.statement(this.paginateBy.name,e,n,h,...l)}async listBy(e,r,...s){const{log:a,ctxArgs:n}=(await this.logCtx(s,t.PreparedStatementKeys.LIST_BY,!0)).for(this.listBy);return a.verbose(`listing ${i.Model.tableName(this.class)} by ${e} ${r}`),await this.statement(this.listBy.name,e,{direction:r},...n)}async findBy(e,r,...s){const{log:a,ctxArgs:n}=(await this.logCtx(s,t.PreparedStatementKeys.FIND_BY,!0)).for(this.findBy);return a.verbose(`finding ${i.Model.tableName(this.class)} with ${e} ${r}`),await this.statement(this.findBy.name,e,r,{},...n)}async findOneBy(e,r,...s){const{log:a,ctxArgs:n}=(await this.logCtx(s,t.PreparedStatementKeys.FIND_ONE_BY,!0)).for(this.findOneBy);return a.verbose(`finding ${i.Model.tableName(this.class)} with ${e} ${r}`),await this.statement(this.findOneBy.name,e,r,{},...n)}async find(e,r=t.OrderDirection.ASC,...s){const{log:a,ctxArgs:n}=(await this.logCtx(s,t.PreparedStatementKeys.FIND,!0)).for(this.find);return a.verbose(`finding ${i.Model.tableName(this.class)} by default query attributes`),await this.statement(this.find.name,e,r,...n)}async page(e,r=t.OrderDirection.ASC,s={offset:1,limit:10},...a){const{log:n,ctxArgs:o}=(await this.logCtx(a,t.PreparedStatementKeys.PAGE,!0)).for(this.page);return n.verbose(`paging ${i.Model.tableName(this.class)} by default query attributes`),await this.statement(this.page.name,e,r,s,...o)}async statement(e,...r){const{log:s,ctx:i,ctxArgs:a}=(await this.logCtx(r,t.PersistenceKeys.STATEMENT,!0)).for(this.statement),n=a.slice(0,-1),o=n[n.length-1],c="object"!=typeof o||null===o||Array.isArray(o)?void 0:n.pop(),d={class:this.class,args:n,method:e,params:c},l=this.adapter.toRequest(d,i);s.verbose("Executing prepared statement "+e);const h=await this.request(l,...a),p=this.adapter.parseResponse(this.class,e,h);return this.convertStatementResult(e,p,i)}convertStatementResult(e,r,s){return r?e===t.PreparedStatementKeys.FIND||e===t.PreparedStatementKeys.LIST_BY||e===t.PreparedStatementKeys.FIND_BY?Array.isArray(r)?r.map(e=>this.revertRecord(e,s)):r:e===t.PreparedStatementKeys.FIND_ONE_BY?this.revertRecord(r,s):e===t.PreparedStatementKeys.PAGE||e===t.PreparedStatementKeys.PAGE_BY?this.convertPageResult(r,s):r:r}convertPageResult(e,r){if(!e)return e;let s=e;if("string"==typeof s)try{s=t.Paginator.deserialize(s)}catch{return e}return t.Paginator.isSerializedPage(s)?{...s,data:s.data.map(e=>this.revertRecord(e,r))}:e}revertRecord(e,t){if(!e)return e;if(e instanceof this.class)return e;const r=i.Model.pk(this.class),s=i.Model.columnName(this.class,r),a=r??s,n=e[s]??e[a];if(void 0!==n)try{return this.adapter.revert(e,this.class,n,void 0,t)}catch{}return Object.assign(new this.class,e)}async request(e,...r){let i;i=r.length&&r[r.length-1]instanceof t.Context?this.logCtx(r,this.request):(await this.logCtx(r,s.OperationKeys.READ,!0)).for(this.request);const{ctxArgs:a}=i;return this.adapter.request(e,...a)}async countOf(e,...r){const{log:s,ctxArgs:a}=(await this.logCtx(r,t.PreparedStatementKeys.COUNT_OF,!0)).for(this.countOf);s.verbose(`counting ${i.Model.tableName(this.class)}${e?" by "+e:""}`);const n=e?[e,{}]:[{}];return await this.statement(this.countOf.name,...n,...a)}async maxOf(e,...r){const{log:s,ctxArgs:a}=(await this.logCtx(r,t.PreparedStatementKeys.MAX_OF,!0)).for(this.maxOf);return s.verbose(`finding max of ${e} in ${i.Model.tableName(this.class)}`),await this.statement(this.maxOf.name,e,{},...a)}async minOf(e,...r){const{log:s,ctxArgs:a}=(await this.logCtx(r,t.PreparedStatementKeys.MIN_OF,!0)).for(this.minOf);return s.verbose(`finding min of ${e} in ${i.Model.tableName(this.class)}`),await this.statement(this.minOf.name,e,{},...a)}async avgOf(e,...r){const{log:s,ctxArgs:a}=(await this.logCtx(r,t.PreparedStatementKeys.AVG_OF,!0)).for(this.avgOf);return s.verbose(`calculating avg of ${e} in ${i.Model.tableName(this.class)}`),await this.statement(this.avgOf.name,e,{},...a)}async sumOf(e,...r){const{log:s,ctxArgs:a}=(await this.logCtx(r,t.PreparedStatementKeys.SUM_OF,!0)).for(this.sumOf);return s.verbose(`calculating sum of ${e} in ${i.Model.tableName(this.class)}`),await this.statement(this.sumOf.name,e,{},...a)}async distinctOf(e,...r){const{log:s,ctxArgs:a}=(await this.logCtx(r,t.PreparedStatementKeys.DISTINCT_OF,!0)).for(this.distinctOf);return s.verbose(`finding distinct values of ${e} in ${i.Model.tableName(this.class)}`),await this.statement(this.distinctOf.name,e,{},...a)}async groupOf(e,...r){const{log:s,ctxArgs:a}=(await this.logCtx(r,t.PreparedStatementKeys.GROUP_OF,!0)).for(this.groupOf);return s.verbose(`grouping ${i.Model.tableName(this.class)} by ${e}`),await this.statement(this.groupOf.name,e,{},...a)}}a.__decorate([t.prepared(),a.__metadata("design:type",Function),a.__metadata("design:paramtypes",[String,String,void 0]),a.__metadata("design:returntype",Promise)],m.prototype,"find",null),a.__decorate([t.prepared(),a.__metadata("design:type",Function),a.__metadata("design:paramtypes",[String,String,Object,void 0]),a.__metadata("design:returntype",Promise)],m.prototype,"page",null),a.__decorate([t.prepared(),a.__metadata("design:type",Function),a.__metadata("design:paramtypes",[Object,void 0]),a.__metadata("design:returntype",Promise)],m.prototype,"countOf",null),a.__decorate([t.prepared(),a.__metadata("design:type",Function),a.__metadata("design:paramtypes",["function"==typeof(l="undefined"!=typeof K&&K)?l:Object,void 0]),a.__metadata("design:returntype",Promise)],m.prototype,"maxOf",null),a.__decorate([t.prepared(),a.__metadata("design:type",Function),a.__metadata("design:paramtypes",["function"==typeof(h="undefined"!=typeof K&&K)?h:Object,void 0]),a.__metadata("design:returntype",Promise)],m.prototype,"minOf",null),a.__decorate([t.prepared(),a.__metadata("design:type",Function),a.__metadata("design:paramtypes",["function"==typeof(p="undefined"!=typeof K&&K)?p:Object,void 0]),a.__metadata("design:returntype",Promise)],m.prototype,"avgOf",null),a.__decorate([t.prepared(),a.__metadata("design:type",Function),a.__metadata("design:paramtypes",["function"==typeof(u="undefined"!=typeof K&&K)?u:Object,void 0]),a.__metadata("design:returntype",Promise)],m.prototype,"sumOf",null),a.__decorate([t.prepared(),a.__metadata("design:type",Function),a.__metadata("design:paramtypes",["function"==typeof(g="undefined"!=typeof K&&K)?g:Object,void 0]),a.__metadata("design:returntype",Promise)],m.prototype,"distinctOf",null),a.__decorate([t.prepared(),a.__metadata("design:type",Function),a.__metadata("design:paramtypes",["function"==typeof(f="undefined"!=typeof K&&K)?f:Object,void 0]),a.__metadata("design:returntype",Promise)],m.prototype,"groupOf",null);class v extends m{constructor(e,t){super(e,t),this._overrides=Object.assign({},super._overrides,{ignoreValidation:!0,ignoreHandlers:!0,allowRawStatements:!1,forcePrepareSimpleQueries:!0,forcePrepareComplexQueries:!0})}toString(){return i.Model.tableName(this.class)+" REST service"}}class E extends t.Statement{constructor(e,t){super(e,t)}build(){throw new t.UnsupportedError("This method is only called is prepared statements are not used. If so, a dedicated implementation for the native queries used is required")}parseCondition(e,...r){throw new t.UnsupportedError("This method is only called is prepared statements are not used. Is so, a dedicated implementation for the native queries used is required")}}class w extends t.Paginator{constructor(e,t,r,s){super(e,t,r,s)}async pagePrepared(e,...r){const s=t.Repository.forModel(this.clazz,this.adapter.alias),i=this.query,{method:a,args:n,params:o}=i,c=RegExp(`^${t.PreparedStatementKeys.FIND_BY}|${t.PreparedStatementKeys.LIST_BY}`,"gi");if(!a.match(c))throw new t.UnsupportedError(`Method ${a} is not supported for pagination`);c.lastIndex=0;const d=[a.replace(c,t.PreparedStatementKeys.PAGE_BY),...n],l={direction:o.direction,limit:this.size,offset:e,bookmark:this._bookmark};d.push(l);const h=await s.statement(...d,...r);return this.apply(h)}prepare(e){throw new t.UnsupportedError("Raw query access must be implemented by a subclass. only prepared statements are natively available")}page(e=1,...t){return super.page(e,...t)}}class A extends t.ContextualLoggedClass{static{this.cache=new Map}static get(e){if(this.cache.has(e))return this.cache.get(e);throw Error(`Server event connector not found for URL '${e}'. Did you forget to call open()?`)}static open(e,t){if(this.cache.has(e))return this.cache.get(e);const r=new A(e,t);return this.cache.set(e,r),this.cache.get(e)}static close(e){this.cache.has(e)&&this.cache.get(e).close()}static parseReceivedEvent(e){const t=e=>{if("string"!=typeof e)return e;try{return i.Serialization.deserialize(e)}catch{try{return JSON.parse(e)}catch{return e}}};try{const r="string"==typeof e?JSON.parse(e):e;if(!Array.isArray(r)||3>r.length)return null;const[s,i,a,n]=r;if("string"!=typeof s)return null;let o;return o=Array.isArray(n)?n.map(e=>t(e)):t(n),[s,i+"",a,o]}catch{return null}}constructor(e,t){super(),this.url=e,this.headers=t,this.stateLock=new c.Lock,this.ready=!1,this.listeners=new Set}isOpen(){return void 0!==this.es}async withStateLock(e){await this.stateLock.acquire();try{return await Promise.resolve(e())}finally{this.stateLock.release()}}async setOpening(e){await this.withStateLock(()=>{this.opening=e})}async isReady(){return this.withStateLock(()=>this.ready)}async setReady(e){await this.withStateLock(()=>{this.ready=e})}async getHeaders(){let e=this.headers;return"function"==typeof this.headers&&(e=await Promise.resolve(this.headers())),e||{}}close(e=!1){const t=this.log.for(this.close);if(this.es)if(0>=this.listeners.size||e)try{t.info("Closing EventSource connection for listening URL "+this.url),this.controller?.abort()}finally{this.controller=void 0,this.es=void 0,this.setReady(!1),this.setOpening(void 0),this.listeners.clear(),A.cache.delete(this.url),t.info(`EventSource connection ${this.url} closed and removed from pool`)}else t.warn(`Skipping EventSource connection close ${this.url} \u2014 ${this.listeners.size} active listener(s) remaining.`);else t.debug("Skipping EventSource close \u2014 no open connection to "+this.url)}async startListening(){const e=this.log.for(this.startListening);let t,r,s,i=!1;const a=new Promise((e,t)=>{r=e,s=t});if(await this.withStateLock(()=>{this.es&&this.ready?t=Promise.resolve():this.opening?t=this.opening:(this.ready=!1,this.opening=a,t=a,i=!0)}),!i)return e.debug("Connection open already in progress for "+this.url,{url:this.url,listeners:this.listeners.size}),void await t;(async()=>{e.info("Opening EventSource connection to "+this.url);const t=await this.getHeaders();this.es=new o.EventSourcePlus(this.url,{...t&&{headers:t},credentials:"include"}),await this.setReady(!1);let i=!1;const a=this;this.controller=this.es.listen({onResponse:async()=>{i||(i=!0,await a.setReady(!0),e.info(`Connected to ${this.url}. Ready to receive events`),r())},onRequestError:({error:t})=>{i||(i=!0,e.error("Failed to establish EventSource connection",{url:this.url,error:t}),a.setReady(!1),s(t),a.listeners.forEach(e=>e.onError((t?.message??t)+"")))},onResponseError:({response:t})=>{if(i)return;i=!0;const r=t?.status,n=t?.statusText;e.error("Listening failed with HTTP error response",{url:this.url,status:r,statusText:n});const o=Error(`HTTP ${r??"unknown"} ${n??"error"}`);a.setReady(!1),s(o),a.listeners.forEach(e=>e.onError(o))},onMessage:t=>{if("heartbeat"===t.event)return void e.debug("Refresh connection. Heartbeat received.");const r=t&&"object"==typeof t&&"data"in t?t.data:t,s=A.parseReceivedEvent(r);if(s)for(const t of a.listeners)try{t.onEvent(s)}catch(t){e.error("Listener handler failed on event",{err:t})}else e.warn("Failed to parse SSE message",{url:this.url,raw:r})}})})().catch(async e=>{this.controller=void 0,this.es=void 0,await this.setReady(!1),s(e)});try{await t}finally{await this.setOpening(void 0)}}async ensureListening(){await this.startListening()}addListener(e){const t=this.log.for(this.addListener);return t.info(`Registering listener for connection ${this.url} \u2014 ${this.listeners.size} active listener(s)`),this.listeners.add(e),this.ensureListening().then(()=>{t.info(`Listener registered for connection ${this.url} \u2014 total listener(s): ${this.listeners.size}`)}),()=>this.removeListener(e)}removeListener(e){const t=this.log.for(this.removeListener),r=this.listeners.has(e);t.info(`Unregistering listener for connection ${this.url}. Current active listeners: ${this.listeners.size}`,{listenerFound:r}),r&&(this.listeners.delete(e),t.debug(`Listener unregistered for connection ${this.url} \u2014 total listener(s): ${this.listeners.size}`)),0===this.listeners.size&&(t.info(`No listeners remaining. Closing EventSource connection ${this.url}.`,{url:this.url,listeners:this.listeners.size}),this.close())}}class b extends t.Dispatch{constructor(){super(...arguments),this.initialized=!1,this.listening=!1}async initialize(...e){const{log:r,ctxArgs:s}=(await this.logCtx(e,t.PersistenceKeys.INITIALIZATION,!0)).for(this.initialize);this.adapter?(r.info(`Initializing ${this.adapter}'s event Dispatch, but not listening yet.`),this.initialized=!0,await this.startListening(...s),r.info(`HttpDispatcher initialized for adapter ${this.adapter}.`)):r.verbose("No adapter observed for dispatch; skipping initialization")}async startListening(...e){const{log:t}=this.logCtx(e,this.startListening);if(!this.initialized||!this.adapter)throw t.error("Cannot start listening: dispatcher is not initialized or adapter is missing",{initialized:this.initialized,hasAdapter:!!this.adapter}),Error("Cannot start listening before call initialize()");if(!this.adapter.config.events)return void t.warn("SSe events disabled");this.listening&&t.warn("startListening called but dispatcher is already listening",{adapter:this.adapter+""});const{protocol:r,host:i,eventsListenerPath:a}=this.adapter.config;if(!a)throw t.error("Cannot start listening: no eventsListenerPath specified",{protocol:r,host:i}),Error("No eventsListenerPath specified");const n=new URL(a,`${r}://${i}`).toString();t.info("Opening ServerEventConnector for url: "+n),this.connector=A.open(n,async()=>{if(!this.adapter)throw new s.InternalError("Adapter not initialized");try{return this.adapter.getEventHeaders()}catch(e){throw new s.InternalError("Failed to get event headers: "+e)}}),t.debug("ServerEventConnector opened successfully for url: "+n),this.removeConnectorListener?.(),this.removeConnectorListener=this.connector.addListener({onEvent:async e=>{const[t,r,s,...i]=e,{log:a,ctxArgs:n}=(await this.logCtx(i,r,!0)).for("onEvent");super.updateObservers(t,r,s,...n).catch(e=>a.error("ServerEventConnector failed to updateObservers",e))},onError:e=>{t.error("ServerEventConnector failed to dispatch event",{error:e,listeningUrl:n,adapter:this.adapter+""})}}),await this.connector.ensureListening(),this.listening=!0,t.info(`HttpDispatcher is now listening at ${n}.`)}async close(...e){this.removeConnectorListener?.(),this.removeConnectorListener=void 0,this.connector?.close(),this.listening=!1}}function O(e,t,r,s){const i=s||t.name;e[i]=new Proxy(e[i],{apply:async(e,t,s)=>{let i=e.call(t,...s);return i instanceof Promise&&(i=await i),i=r.call(t,i),i instanceof Promise&&(i=await i),i}})}e.DecafHeaders=void 0,(y=e.DecafHeaders||(e.DecafHeaders={})).PENDING_TASK="x-pending-task",y.CORRELATION_ID="x-correlation-id";class _ extends t.Adapter{constructor(e,t,r){super(Object.assign({},e,{headers:void 0===e.headers||e.headers,events:void 0===e.events||e.events}),t,r);const i=this;[this.create,this.read,this.update,this.delete,this.createAll,this.readAll,this.updateAll,this.deleteAll].forEach(e=>{O(this,e,t=>i.parseResponse.call(i,void 0,e.name,t),e.name)}),s.wrapMethodWithContext(this,(...e)=>e,this.request,(e,t)=>{const r=i.config.parsers;return r?(r.forEach(r=>r(e,t)),e):e},this.request.name)}async flags(e,t,r){return super.flags(e,t,Object.assign({headers:r.headers??{}},r))}Dispatch(){return new b}async getEventHeaders(){return this.config.eventHeaderResolver&&await Promise.resolve(this.config.eventHeaderResolver)||{}}repository(){return v}prepare(e,...r){const{log:s}=this.logCtx(r,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[i.Model.pk(e.constructor)]}}revert(e,r,a,...n){const{log:o}=this.logCtx(n,this.revert),c={},d="string"==typeof r?i.Model.build(c,r):new r(c);o.silly(`Rebuilding model ${d.constructor.name} id ${a}`);const l="string"==typeof r?i.Model.get(r):r;if(!l)throw new s.InternalError("Failed to retrieve model constructor for "+r);const h=new l(e),p=e[t.PersistenceKeys.METADATA];return p&&(o.silly(`Passing along ${this.flavour} persistence metadata for ${d.constructor.name} id ${a}: ${p}`),Object.defineProperty(h,t.PersistenceKeys.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:p})),h}toTableName(e){return"string"==typeof e?e:n.toKebabCase(i.Model.tableName(e))}toHeaders(t){const r={};if(this.config.headers){const s=t.getOrUndefined("correlationId");s&&(r[e.DecafHeaders.CORRELATION_ID]=s)}return{...r,...t.getOrUndefined("headers")||{}}}url(e,t,r){r||t&&!Array.isArray(t)&&(r=t,t=[]),e=this.toTableName(e);const s=new URL(`${this.config.protocol}://${this.config.host}/${e}${t&&t.length?"/"+t.join("/"):""}`);return r&&Object.entries(r).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>s.searchParams.append(e,t.toString())):"object"==typeof t?s.searchParams.append(e,JSON.stringify(t)):void 0!==t&&s.searchParams.append(e,t.toString())}),s.toString()}toHttpResponse(e,t){if(e&&"object"==typeof e&&("code"in e||"error"in e))return e;const r=void 0!==t?t:e;return{code:r&&"number"==typeof r.code?r.code:r&&"number"==typeof r.status?r.status:void 0,data:e,error:e&&"object"==typeof e&&"error"in e?e.error:r&&"object"==typeof r&&"error"in r?r.error:void 0}}async get(e,t,...r){const{ctx:s}=(await this.logCtx(r,this.get.name,!0)).for(this.get);try{const r=await this.request(this.toRequest("GET",e,void 0,t),s),i=this.parseResponse(void 0,"GET",r);return this.toHttpResponse(i,r)}catch(e){throw this.parseError(e)}}async post(e,t,r,...s){const{ctx:i}=(await this.logCtx(s,this.post.name,!0)).for(this.post);try{const s=await this.request(this.toRequest("POST",e,t,r),i),a=this.parseResponse(void 0,"POST",s);return this.toHttpResponse(a,s)}catch(e){throw this.parseError(e)}}async put(e,t,r,...s){const{ctx:i}=(await this.logCtx(s,this.put.name,!0)).for(this.put);try{const s=await this.request(this.toRequest("PUT",e,t,r),i),a=this.parseResponse(void 0,"PUT",s);return this.toHttpResponse(a,s)}catch(e){throw this.parseError(e)}}extractIdArgs(e,t){const r=t.toString();if("string"==typeof e)return[r];const s=i.Model.composed(e,i.Model.pk(e));return s?r.split(s.separator):[r]}parseResponse(e,r,s){return e&&t.Paginator.isSerializedPage(s)?Object.assign({},s,{data:s.data.map(t=>new e(t))}):s}async create(e,t,r,...s){const i=this.url(e,this.extractIdArgs(e,t));return(await this.post(i,JSON.stringify(r),void 0,...s)).data}async createAll(e,t,r,...s){const i=this.url(e,["bulk"]);return(await this.post(i,JSON.stringify(r),void 0,...s)).data}async read(e,t,...r){const s=this.url(e,this.extractIdArgs(e,t));return(await this.get(s,void 0,...r)).data}async readAll(e,t,...r){const s=this.url(e,["bulk"],{ids:t});return(await this.get(s,void 0,...r)).data}async update(e,t,r,...s){const i=this.url(e,this.extractIdArgs(e,t));return(await this.put(i,JSON.stringify(r),void 0,...s)).data}async updateAll(e,t,r,...s){const i=this.url(e,["bulk"]);return(await this.put(i,JSON.stringify(r),void 0,...s)).data}async delete(e,t,...r){const{ctx:i}=(await this.logCtx(r,this.delete.name,!0)).for(this.delete);if(void 0===t||"object"==typeof t&&!Array.isArray(t)){if("string"!=typeof e)throw new s.InternalError("Simple delete(url, options) requires a URL string");try{const r=await this.request(this.toRequest("DELETE",e,void 0,t),i),s=this.parseResponse(void 0,"DELETE",r);return this.toHttpResponse(s,r)}catch(e){throw this.parseError(e)}}const a=t,n=this.url(e,this.extractIdArgs(e,a));return(await this.delete(n,void 0,i)).data}async deleteAll(e,t,...r){const s=this.url(e,["bulk"],{ids:t});return(await this.delete(s,void 0,...r)).data}raw(e,...t){const{ctxArgs:r,ctx:s}=this.logCtx(t,this.raw),i=this.toRequest(e,s);return this.request(i,...r)}Sequence(e){return Promise.reject(new t.UnsupportedError("Api is not natively available for HttpAdapters. If required, please extends this class"))}Statement(e){return new E(this,e)}Paginator(e,t,r){return new w(this,e,t,r)}parseCondition(e){throw new t.UnsupportedError("Api is not natively available for HttpAdapters. If required, please extends this class")}static parseError(e,...r){const i="string"==typeof e?e:e.message;return i.includes(s.NotFoundError.name)||i.includes("404")?new s.NotFoundError(e):i.includes(s.ConflictError.name)||i.includes("409")?new s.ConflictError(e):i.includes(s.BadRequestError.name)||i.includes("400")?new s.BadRequestError(e):i.includes(s.ValidationError.name)||i.includes("422")?new s.ValidationError(e):i.includes(t.QueryError.name)?new t.QueryError(e):i.includes(t.PagingError.name)?new t.PagingError(e):i.includes(t.UnsupportedError.name)?new t.UnsupportedError(e):i.includes(t.MigrationError.name)?new t.MigrationError(e):i.includes(t.ObserverError.name)?new t.ObserverError(e):i.includes(t.AuthorizationError.name)?new t.AuthorizationError(e):i.includes(t.ForbiddenError.name)?new t.ForbiddenError(e):i.includes(t.ConnectionError.name)?new t.ConnectionError(e):i.includes(s.SerializationError.name)?new s.SerializationError(e):new s.InternalError(e)}static decoration(){super.decoration(),r.Decoration.for(t.PersistenceKeys.QUERY).define({decorator:e=>(i,a,n)=>r.apply(r.methodMetadata(r.Metadata.key(t.PersistenceKeys.QUERY,a),e),t.prepared(),(e,t,r)=>{r.value=new Proxy(r.value,{async apply(e,t,r){const i=t,{log:n,ctxArgs:o}=(await i.logCtx(r,s.OperationKeys.READ,!0)).for(a);return n.verbose("Running prepared statement "+e.name),n.debug("With args: "+JSON.stringify(r,null,2)),t.statement(e.name,...o)}})})(i,a,n)}).apply()}}_.decoration();const P="axios",S=(t,r)=>{if(t.headers&&t.headers[e.DecafHeaders.PENDING_TASK]){let s;try{s=JSON.parse(t.headers[e.DecafHeaders.PENDING_TASK]),Object.entries(s).forEach(([e,t])=>{t.forEach(t=>r.pushPending(e,t))})}catch(s){r.logger.for(S).error(`Failed to parse pending tasks header ${t.headers[e.DecafHeaders.PENDING_TASK]}: ${s}`)}}};class x extends _{constructor(e,t){super(e,P,t)}getClient(){return new d.Axios({baseURL:`${this.config.protocol}://${this.config.host}`})}toRequest(e,r,s,i){if("string"==typeof e){const t=Object.assign({method:e,url:r},this.toAxiosRequestOptions(i));return void 0!==s&&(t.data=s),t}let a,n;e instanceof t.Context?(n=e,a=void 0):(a=e,n=r);const o={};return n&&(o.headers={...o.headers||{},...this.toHeaders(n)}),a&&(o.method="GET",o.url=this.url(a.class,[t.PersistenceKeys.STATEMENT,a.method,...a.args||[]],a.params)),o}toAxiosRequestOptions(e){if(!e)return{};const{includeCredentials:t,...r}=e,s=Object.assign({},r);return void 0!==t&&void 0===s.withCredentials&&(s.withCredentials=t),s}async request(e,...t){let r={};try{const{ctx:e}=this.logCtx(t,this.request);r=this.toRequest(e)}catch(e){}return await this.client.request(Object.assign({},e,r))}parseResponse(e,r,i){if(!i?.status&&r!==t.PersistenceKeys.STATEMENT){if(new Set([s.OperationKeys.CREATE,s.OperationKeys.READ,s.OperationKeys.UPDATE,s.OperationKeys.DELETE,s.BulkCrudOperationKeys.CREATE_ALL,s.BulkCrudOperationKeys.READ_ALL,s.BulkCrudOperationKeys.UPDATE_ALL,s.BulkCrudOperationKeys.DELETE_ALL]).has(r+""))return i;throw new s.InternalError("this should be impossible")}if(i.status>=400)throw this.parseError(i.error||i.status);const a=this.normalizeResponseBody(i);switch(r){case s.BulkCrudOperationKeys.CREATE_ALL:case s.BulkCrudOperationKeys.READ_ALL:case s.BulkCrudOperationKeys.UPDATE_ALL:case s.BulkCrudOperationKeys.DELETE_ALL:case s.OperationKeys.CREATE:case s.OperationKeys.READ:case s.OperationKeys.UPDATE:case s.OperationKeys.DELETE:return a;case t.PreparedStatementKeys.FIND:case t.PreparedStatementKeys.PAGE:case t.PreparedStatementKeys.FIND_BY:case t.PreparedStatementKeys.LIST_BY:case t.PreparedStatementKeys.PAGE_BY:case t.PreparedStatementKeys.FIND_ONE_BY:case t.PersistenceKeys.STATEMENT:return super.parseResponse(e,r,a);case t.PreparedStatementKeys.COUNT_OF:case t.PreparedStatementKeys.MAX_OF:case t.PreparedStatementKeys.MIN_OF:case t.PreparedStatementKeys.AVG_OF:case t.PreparedStatementKeys.SUM_OF:case t.PreparedStatementKeys.DISTINCT_OF:return a;case t.PreparedStatementKeys.GROUP_OF:if(e&&"object"==typeof a&&null!==a){const t={};for(const[r,s]of Object.entries(a))t[r]=Array.isArray(s)?s.map(t=>new e(t)):s;return t}return a;default:return a}}normalizeResponseBody(e){if(!e)return e;const t=void 0!==e.body?e.body:void 0!==e.data?e.data:e;if("string"==typeof t)try{return JSON.parse(t)}catch{return t}return t}parseError(e,...t){return _.parseError(e,...t)}}x.decoration();const R="##VERSION##",C="##PACKAGE##";r.Metadata.registerLibrary(C,R),e.AxiosFlavour=P,e.AxiosHttpAdapter=x,e.HttpAdapter=_,e.HttpPaginator=w,e.HttpStatement=E,e.KeepAliveOperation="keepalive",e.PACKAGE_NAME=C,e.RestRepository=m,e.RestService=v,e.ServerEventConnector=A,e.TaskResponseParser=S,e.VERSION=R,e.suffixMethod=O},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/core"),require("@decaf-ts/decoration"),require("@decaf-ts/db-decorators"),require("@decaf-ts/decorator-validation"),require("tslib"),require("@decaf-ts/logging"),require("event-source-plus"),require("@decaf-ts/transactional-decorators"),require("axios")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/core","@decaf-ts/decoration","@decaf-ts/db-decorators","@decaf-ts/decorator-validation","tslib","@decaf-ts/logging","event-source-plus","@decaf-ts/transactional-decorators","axios"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["for-http"]={},e.decafTsCore,e.decafTsDecoration,e.decafTsDbDecorators,e.decafTsDecoratorValidation,e.tslib,e.decafTsLogging,e.eventSourcePlus,e.decafTsTransactionalDecorators,e.axios);
2
2
  //# sourceMappingURL=for-http.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"for-http.cjs","sources":["../src/constants.ts","../src/RestRepository.ts","../src/RestService.ts","../src/HttpStatement.ts","../src/HttpPaginator.ts","../src/event/ServerEventConnector.ts","../src/HttpDispatcher.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,null,null,null,null,null],"names":["DecafHeaders","RestRepository","Repository","constructor","adapter","clazz","super","this","_overrides","Object","assign","allowRawStatements","forcePrepareSimpleQueries","forcePrepareComplexQueries","url","tableName","pathParams","queryParams","paginateBy","key","order","ref","offset","limit","args","bookmark","log","ctxArgs","logCtx","PreparedStatementKeys","PAGE_BY","for","verbose","Model","class","params","direction","statement","name","listBy","LIST_BY","findBy","value","FIND_BY","findOneBy","FIND_ONE_BY","find","OrderDirection","ASC","FIND","page","PAGE","ctx","PersistenceKeys","STATEMENT","argList","slice","lastArg","length","Array","isArray","undefined","pop","query","method","req","toRequest","response","request","parsed","parseResponse","convertStatementResult","result","map","record","revertRecord","convertPageResult","serialization","Paginator","deserialize","isSerializedPage","data","pkAttr","pk","pkKey","columnName","fallback","id","revert","details","contextualizeArgs","Context","OperationKeys","READ","countOf","COUNT_OF","stmtArgs","maxOf","MAX_OF","minOf","MIN_OF","avgOf","AVG_OF","sumOf","SUM_OF","distinctOf","DISTINCT_OF","groupOf","GROUP_OF","__decorate","prepared","prototype","__metadata","_a","K","_b","_c","_d","_e","_f","RestService","ignoreValidation","ignoreHandlers","toString","HttpStatement","Statement","overrides","build","UnsupportedError","parseCondition","condition","HttpPaginator","size","pagePrepared","argz","repo","forModel","alias","regexp","RegExp","match","lastIndex","preparedArgs","replace","preparedParams","_bookmark","push","apply","prepare","rawStatement","ServerEventConnector","ContextualLoggedClass","cache","Map","get","has","Error","open","headers","connector","set","close","parseReceivedEvent","raw","deserializePayload","Serialization","JSON","parse","eventName","operationKey","objectId","rawPayload","payload","item","String","stateLock","Lock","ready","listeners","Set","isOpen","es","withStateLock","fn","acquire","Promise","resolve","release","getOpening","opening","setOpening","isReady","setReady","getHeaders","force","info","controller","abort","clear","delete","warn","debug","startListening","pendingOpen","openPromise","completeOpen","failOpen","EventSourcePlus","credentials","connected","reject","self","listen","onResponse","async","onRequestError","error","forEach","handler","onError","message","onResponseError","status","statusText","err","onMessage","event","onEvent","finally","ensureListening","addListener","handlers","add","then","removeListener","existed","listenerFound","HttpDispatcher","Dispatch","initialized","listening","initialize","INITIALIZATION","hasAdapter","config","events","protocol","host","eventsListenerPath","listeningUrl","URL","InternalError","getEventHeaders","e","removeConnectorListener","operation","updateObservers","catch","suffixMethod","obj","before","suffix","beforeName","Proxy","target","thisArg","argArray","results","call","HttpAdapter","Adapter","flavour","create","read","update","createAll","readAll","updateAll","deleteAll","res","wrapMethodWithContext","parsers","p","flags","model","eventHeaderResolver","repository","METADATA","silly","defineProperty","enumerable","writable","configurable","ob","m","constr","metadata","toTableName","t","toKebabCase","toHeaders","fromCtx","correlationId","getOrUndefined","CORRELATION_ID","join","entries","v","searchParams","append","stringify","extractIdArgs","idStr","composed","split","separator","d","rawInput","Sequence","options","parseError","msg","includes","NotFoundError","ConflictError","BadRequestError","ValidationError","QueryError","PagingError","MigrationError","ObserverError","AuthorizationError","ForbiddenError","ConnectionError","SerializationError","decoration","Decoration","QUERY","define","decorator","prop","descriptor","methodMetadata","Metadata","propertyKey","AxiosFlavour","TaskResponseParser","PENDING_TASK","pending","pushPending","logger","AxiosHttpAdapter","getClient","Axios","baseURL","ctxOrQuery","context","client","body","normalizeResponseBody","BulkCrudOperationKeys","CREATE_ALL","READ_ALL","UPDATE_ALL","DELETE_ALL","CREATE","UPDATE","DELETE","candidate","cfg","ModelKeys","ANCHOR","ids","VERSION","PACKAGE_NAME","registerLibrary"],"mappings":"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"}
1
+ {"version":3,"file":"for-http.cjs","sources":["../src/constants.ts","../src/RestRepository.ts","../src/RestService.ts","../src/HttpStatement.ts","../src/HttpPaginator.ts","../src/event/ServerEventConnector.ts","../src/HttpDispatcher.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,null,null,null,null,null],"names":["DecafHeaders","RestRepository","Repository","constructor","adapter","clazz","super","this","_overrides","Object","assign","allowRawStatements","forcePrepareSimpleQueries","forcePrepareComplexQueries","url","tableName","pathParams","queryParams","paginateBy","key","order","ref","offset","limit","args","bookmark","log","ctxArgs","logCtx","PreparedStatementKeys","PAGE_BY","for","verbose","Model","class","params","direction","statement","name","listBy","LIST_BY","findBy","value","FIND_BY","findOneBy","FIND_ONE_BY","find","OrderDirection","ASC","FIND","page","PAGE","ctx","PersistenceKeys","STATEMENT","argList","slice","lastArg","length","Array","isArray","undefined","pop","query","method","req","toRequest","response","request","parsed","parseResponse","convertStatementResult","result","map","record","revertRecord","convertPageResult","serialization","Paginator","deserialize","isSerializedPage","data","pkAttr","pk","pkKey","columnName","fallback","id","revert","details","contextualizeArgs","Context","OperationKeys","READ","countOf","COUNT_OF","stmtArgs","maxOf","MAX_OF","minOf","MIN_OF","avgOf","AVG_OF","sumOf","SUM_OF","distinctOf","DISTINCT_OF","groupOf","GROUP_OF","__decorate","prepared","prototype","__metadata","_a","K","_b","_c","_d","_e","_f","RestService","ignoreValidation","ignoreHandlers","toString","HttpStatement","Statement","overrides","build","UnsupportedError","parseCondition","condition","HttpPaginator","size","pagePrepared","argz","repo","forModel","alias","regexp","RegExp","match","lastIndex","preparedArgs","replace","preparedParams","_bookmark","push","apply","prepare","rawStatement","ServerEventConnector","ContextualLoggedClass","cache","Map","get","has","Error","open","headers","connector","set","close","parseReceivedEvent","raw","deserializePayload","Serialization","JSON","parse","eventName","operationKey","objectId","rawPayload","payload","item","String","stateLock","Lock","ready","listeners","Set","isOpen","es","withStateLock","fn","acquire","Promise","resolve","release","setOpening","opening","isReady","setReady","getHeaders","force","info","controller","abort","clear","delete","warn","debug","startListening","openPromise","resolveOpen","rejectOpen","owner","deferredOpen","reject","EventSourcePlus","credentials","settled","self","listen","onResponse","async","onRequestError","error","forEach","handler","onError","message","onResponseError","status","statusText","err","onMessage","event","onEvent","catch","ensureListening","addListener","handlers","add","then","removeListener","existed","listenerFound","HttpDispatcher","Dispatch","initialized","listening","initialize","INITIALIZATION","hasAdapter","config","events","protocol","host","eventsListenerPath","listeningUrl","URL","InternalError","getEventHeaders","e","removeConnectorListener","operation","updateObservers","suffixMethod","obj","before","suffix","beforeName","Proxy","target","thisArg","argArray","results","call","HttpAdapter","Adapter","flavour","create","read","update","createAll","readAll","updateAll","deleteAll","res","wrapMethodWithContext","parsers","p","flags","model","eventHeaderResolver","repository","METADATA","silly","defineProperty","enumerable","writable","configurable","ob","m","constr","metadata","toTableName","t","toKebabCase","toHeaders","fromCtx","correlationId","getOrUndefined","CORRELATION_ID","join","entries","v","searchParams","append","stringify","toHttpResponse","candidate","code","options","parseError","post","put","extractIdArgs","idStr","composed","split","separator","d","ids","tableNameOrUrl","idOrOptions","rawInput","Sequence","msg","includes","NotFoundError","ConflictError","BadRequestError","ValidationError","QueryError","PagingError","MigrationError","ObserverError","AuthorizationError","ForbiddenError","ConnectionError","SerializationError","decoration","Decoration","QUERY","define","decorator","prop","descriptor","methodMetadata","Metadata","propertyKey","AxiosFlavour","TaskResponseParser","PENDING_TASK","pending","pushPending","logger","AxiosHttpAdapter","getClient","Axios","baseURL","ctxOrQueryOrMethod","ctxOrUrl","toAxiosRequestOptions","context","includeCredentials","rest","withCredentials","client","CREATE","UPDATE","DELETE","BulkCrudOperationKeys","CREATE_ALL","READ_ALL","UPDATE_ALL","DELETE_ALL","body","normalizeResponseBody","VERSION","PACKAGE_NAME","registerLibrary"],"mappings":"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"}
package/dist/for-http.js CHANGED
@@ -1,2 +1,2 @@
1
- import{prepared as t,Repository as e,PreparedStatementKeys as s,OrderDirection as i,PersistenceKeys as r,Paginator as n,Context as a,Statement as o,UnsupportedError as c,ContextualLoggedClass as l,Dispatch as h,Adapter as d,QueryError as u,PagingError as g,MigrationError as p,ObserverError as f,AuthorizationError as y,ForbiddenError as m,ConnectionError as w}from"@decaf-ts/core";import{Decoration as v,apply as O,methodMetadata as b,Metadata as E}from"@decaf-ts/decoration";import{OperationKeys as A,InternalError as x,wrapMethodWithContext as S,NotFoundError as $,ConflictError as N,BadRequestError as R,ValidationError as T,SerializationError as C,BulkCrudOperationKeys as P}from"@decaf-ts/db-decorators";import{Model as L,Serialization as _,ModelKeys as I}from"@decaf-ts/decorator-validation";import{__decorate as q,__metadata as D}from"tslib";import{toKebabCase as F}from"@decaf-ts/logging";import{EventSourcePlus as z}from"event-source-plus";import{Lock as k}from"@decaf-ts/transactional-decorators";import{Axios as j}from"axios";var B,U,J,G,H,M,Y;class Q extends e{constructor(t,e){super(t,e),this._overrides=Object.assign({},super._overrides,{allowRawStatements:!1,forcePrepareSimpleQueries:!0,forcePrepareComplexQueries:!0})}url(t,e,s){return this.adapter.url(t,e,s)}async paginateBy(t,e,i={offset:1,limit:10},...r){const{offset:n,bookmark:a,limit:o}=i,{log:c,ctxArgs:l}=(await this.logCtx(r,s.PAGE_BY,!0)).for(this.paginateBy);c.verbose(`paginating ${L.tableName(this.class)} with page size ${o}`);const h={direction:e,limit:o};return a&&(h.bookmark=a),this.statement(this.paginateBy.name,t,n,h,...l)}async listBy(t,e,...i){const{log:r,ctxArgs:n}=(await this.logCtx(i,s.LIST_BY,!0)).for(this.listBy);return r.verbose(`listing ${L.tableName(this.class)} by ${t} ${e}`),await this.statement(this.listBy.name,t,{direction:e},...n)}async findBy(t,e,...i){const{log:r,ctxArgs:n}=(await this.logCtx(i,s.FIND_BY,!0)).for(this.findBy);return r.verbose(`finding ${L.tableName(this.class)} with ${t} ${e}`),await this.statement(this.findBy.name,t,e,{},...n)}async findOneBy(t,e,...i){const{log:r,ctxArgs:n}=(await this.logCtx(i,s.FIND_ONE_BY,!0)).for(this.findOneBy);return r.verbose(`finding ${L.tableName(this.class)} with ${t} ${e}`),await this.statement(this.findOneBy.name,t,e,{},...n)}async find(t,e=i.ASC,...r){const{log:n,ctxArgs:a}=(await this.logCtx(r,s.FIND,!0)).for(this.find);return n.verbose(`finding ${L.tableName(this.class)} by default query attributes`),await this.statement(this.find.name,t,e,...a)}async page(t,e=i.ASC,r={offset:1,limit:10},...n){const{log:a,ctxArgs:o}=(await this.logCtx(n,s.PAGE,!0)).for(this.page);return a.verbose(`paging ${L.tableName(this.class)} by default query attributes`),await this.statement(this.page.name,t,e,r,...o)}async statement(t,...e){const{log:s,ctx:i,ctxArgs:n}=(await this.logCtx(e,r.STATEMENT,!0)).for(this.statement),a=n.slice(0,-1),o=a[a.length-1],c="object"!=typeof o||null===o||Array.isArray(o)?void 0:a.pop(),l={class:this.class,args:a,method:t,params:c},h=this.adapter.toRequest(l,i);s.verbose("Executing prepared statement "+t);const d=await this.request(h,...n),u=this.adapter.parseResponse(this.class,t,d);return this.convertStatementResult(t,u,i)}convertStatementResult(t,e,i){return e?t===s.FIND||t===s.LIST_BY||t===s.FIND_BY?Array.isArray(e)?e.map(t=>this.revertRecord(t,i)):e:t===s.FIND_ONE_BY?this.revertRecord(e,i):t===s.PAGE||t===s.PAGE_BY?this.convertPageResult(e,i):e:e}convertPageResult(t,e){if(!t)return t;let s=t;if("string"==typeof s)try{s=n.deserialize(s)}catch{return t}return n.isSerializedPage(s)?{...s,data:s.data.map(t=>this.revertRecord(t,e))}:t}revertRecord(t,e){if(!t)return t;if(t instanceof this.class)return t;const s=L.pk(this.class),i=L.columnName(this.class,s),r=s??i,n=t[i]??t[r];if(void 0!==n)try{return this.adapter.revert(t,this.class,n,void 0,e)}catch{}return Object.assign(new this.class,t)}async request(t,...e){let s;s=e.length&&e[e.length-1]instanceof a?this.logCtx(e,this.request):(await this.logCtx(e,A.READ,!0)).for(this.request);const{ctxArgs:i}=s;return this.adapter.request(t,...i)}async countOf(t,...e){const{log:i,ctxArgs:r}=(await this.logCtx(e,s.COUNT_OF,!0)).for(this.countOf);i.verbose(`counting ${L.tableName(this.class)}${t?" by "+t:""}`);const n=t?[t,{}]:[{}];return await this.statement(this.countOf.name,...n,...r)}async maxOf(t,...e){const{log:i,ctxArgs:r}=(await this.logCtx(e,s.MAX_OF,!0)).for(this.maxOf);return i.verbose(`finding max of ${t} in ${L.tableName(this.class)}`),await this.statement(this.maxOf.name,t,{},...r)}async minOf(t,...e){const{log:i,ctxArgs:r}=(await this.logCtx(e,s.MIN_OF,!0)).for(this.minOf);return i.verbose(`finding min of ${t} in ${L.tableName(this.class)}`),await this.statement(this.minOf.name,t,{},...r)}async avgOf(t,...e){const{log:i,ctxArgs:r}=(await this.logCtx(e,s.AVG_OF,!0)).for(this.avgOf);return i.verbose(`calculating avg of ${t} in ${L.tableName(this.class)}`),await this.statement(this.avgOf.name,t,{},...r)}async sumOf(t,...e){const{log:i,ctxArgs:r}=(await this.logCtx(e,s.SUM_OF,!0)).for(this.sumOf);return i.verbose(`calculating sum of ${t} in ${L.tableName(this.class)}`),await this.statement(this.sumOf.name,t,{},...r)}async distinctOf(t,...e){const{log:i,ctxArgs:r}=(await this.logCtx(e,s.DISTINCT_OF,!0)).for(this.distinctOf);return i.verbose(`finding distinct values of ${t} in ${L.tableName(this.class)}`),await this.statement(this.distinctOf.name,t,{},...r)}async groupOf(t,...e){const{log:i,ctxArgs:r}=(await this.logCtx(e,s.GROUP_OF,!0)).for(this.groupOf);return i.verbose(`grouping ${L.tableName(this.class)} by ${t}`),await this.statement(this.groupOf.name,t,{},...r)}}q([t(),D("design:type",Function),D("design:paramtypes",[String,String,void 0]),D("design:returntype",Promise)],Q.prototype,"find",null),q([t(),D("design:type",Function),D("design:paramtypes",[String,String,Object,void 0]),D("design:returntype",Promise)],Q.prototype,"page",null),q([t(),D("design:type",Function),D("design:paramtypes",[Object,void 0]),D("design:returntype",Promise)],Q.prototype,"countOf",null),q([t(),D("design:type",Function),D("design:paramtypes",["function"==typeof(B="undefined"!=typeof K&&K)?B:Object,void 0]),D("design:returntype",Promise)],Q.prototype,"maxOf",null),q([t(),D("design:type",Function),D("design:paramtypes",["function"==typeof(U="undefined"!=typeof K&&K)?U:Object,void 0]),D("design:returntype",Promise)],Q.prototype,"minOf",null),q([t(),D("design:type",Function),D("design:paramtypes",["function"==typeof(J="undefined"!=typeof K&&K)?J:Object,void 0]),D("design:returntype",Promise)],Q.prototype,"avgOf",null),q([t(),D("design:type",Function),D("design:paramtypes",["function"==typeof(G="undefined"!=typeof K&&K)?G:Object,void 0]),D("design:returntype",Promise)],Q.prototype,"sumOf",null),q([t(),D("design:type",Function),D("design:paramtypes",["function"==typeof(H="undefined"!=typeof K&&K)?H:Object,void 0]),D("design:returntype",Promise)],Q.prototype,"distinctOf",null),q([t(),D("design:type",Function),D("design:paramtypes",["function"==typeof(M="undefined"!=typeof K&&K)?M:Object,void 0]),D("design:returntype",Promise)],Q.prototype,"groupOf",null);class V extends Q{constructor(t,e){super(t,e),this._overrides=Object.assign({},super._overrides,{ignoreValidation:!0,ignoreHandlers:!0,allowRawStatements:!1,forcePrepareSimpleQueries:!0,forcePrepareComplexQueries:!0})}toString(){return L.tableName(this.class)+" REST service"}}class X extends o{constructor(t,e){super(t,e)}build(){throw new c("This method is only called is prepared statements are not used. If so, a dedicated implementation for the native queries used is required")}parseCondition(t,...e){throw new c("This method is only called is prepared statements are not used. Is so, a dedicated implementation for the native queries used is required")}}class W extends n{constructor(t,e,s,i){super(t,e,s,i)}async pagePrepared(t,...i){const r=e.forModel(this.clazz,this.adapter.alias),n=this.query,{method:a,args:o,params:l}=n,h=RegExp(`^${s.FIND_BY}|${s.LIST_BY}`,"gi");if(!a.match(h))throw new c(`Method ${a} is not supported for pagination`);h.lastIndex=0;const d=[a.replace(h,s.PAGE_BY),...o],u={direction:l.direction,limit:this.size,offset:t,bookmark:this._bookmark};d.push(u);const g=await r.statement(...d,...i);return this.apply(g)}prepare(t){throw new c("Raw query access must be implemented by a subclass. only prepared statements are natively available")}page(t=1,...e){return super.page(t,...e)}}class Z extends l{static{this.cache=new Map}static get(t){if(this.cache.has(t))return this.cache.get(t);throw Error(`Server event connector not found for URL '${t}'. Did you forget to call open()?`)}static open(t,e){if(this.cache.has(t))return this.cache.get(t);const s=new Z(t,e);return this.cache.set(t,s),this.cache.get(t)}static close(t){this.cache.has(t)&&this.cache.get(t).close()}static parseReceivedEvent(t){const e=t=>{if("string"!=typeof t)return t;try{return _.deserialize(t)}catch{try{return JSON.parse(t)}catch{return t}}};try{const s="string"==typeof t?JSON.parse(t):t;if(!Array.isArray(s)||3>s.length)return null;const[i,r,n,a]=s;if("string"!=typeof i)return null;let o;return o=Array.isArray(a)?a.map(t=>e(t)):e(a),[i,r+"",n,o]}catch{return null}}constructor(t,e){super(),this.url=t,this.headers=e,this.stateLock=new k,this.ready=!1,this.listeners=new Set}isOpen(){return void 0!==this.es}async withStateLock(t){await this.stateLock.acquire();try{return await Promise.resolve(t())}finally{this.stateLock.release()}}async getOpening(){return this.withStateLock(()=>this.opening)}async setOpening(t){await this.withStateLock(()=>{this.opening=t})}async isReady(){return this.withStateLock(()=>this.ready)}async setReady(t){await this.withStateLock(()=>{this.ready=t})}async getHeaders(){let t=this.headers;return"function"==typeof this.headers&&(t=await Promise.resolve(this.headers())),t||{}}close(t=!1){const e=this.log.for(this.close);if(this.es)if(0>=this.listeners.size||t)try{e.info("Closing EventSource connection for listening URL "+this.url),this.controller?.abort()}finally{this.controller=void 0,this.es=void 0,this.setReady(!1),this.setOpening(void 0),this.listeners.clear(),Z.cache.delete(this.url),e.info(`EventSource connection ${this.url} closed and removed from pool`)}else e.warn(`Skipping EventSource connection close ${this.url} \u2014 ${this.listeners.size} active listener(s) remaining.`);else e.debug("Skipping EventSource close \u2014 no open connection to "+this.url)}async startListening(){const t=this.log.for(this.startListening);if(this.es&&await this.isReady())return void t.info(`Listening address ${this.url} is already in the pool and listening. Skipping opening a new connection.`,{url:this.url,listeners:this.listeners.size});const e=await this.getOpening();if(e)return t.debug("Connection open already in progress for "+this.url,{url:this.url,listeners:this.listeners.size}),void await e;const s=(async()=>{t.info("Opening EventSource connection to "+this.url);const e=await this.getHeaders();let s,i;this.es=new z(this.url,{...e&&{headers:e},credentials:"include"}),await this.setReady(!1);const r=new Promise((t,e)=>{s=t,i=e}),n=this;this.controller=this.es.listen({onResponse:async()=>{await n.setReady(!0),t.info(`Connected to ${this.url}. Ready to receive events`),s()},onRequestError:({error:e})=>{t.error("Failed to establish EventSource connection",{url:this.url,error:e}),n.setReady(!1),i(e),n.listeners.forEach(t=>t.onError((e?.message??e)+""))},onResponseError:({response:e})=>{const s=e?.status,r=e?.statusText;t.error("Listening failed with HTTP error response",{url:this.url,status:s,statusText:r});const a=Error(`HTTP ${s??"unknown"} ${r??"error"}`);n.setReady(!1),i(a),n.listeners.forEach(t=>t.onError(a))},onMessage:e=>{if("heartbeat"===e.event)return void t.debug("Refresh connection. Heartbeat received.");const s=e&&"object"==typeof e&&"data"in e?e.data:e,i=Z.parseReceivedEvent(s);if(i)for(const e of n.listeners)try{e.onEvent(i)}catch(e){t.error("Listener handler failed on event",{err:e})}else t.warn("Failed to parse SSE message",{url:this.url,raw:s})}}),await r})().finally(()=>{this.setOpening(void 0)});await this.setOpening(s);try{await s}catch(t){throw this.controller=void 0,this.es=void 0,await this.setReady(!1),t}}async ensureListening(){await this.startListening()}addListener(t){const e=this.log.for(this.addListener);return e.info(`Registering listener for connection ${this.url} \u2014 ${this.listeners.size} active listener(s)`),this.listeners.add(t),this.ensureListening().then(()=>{e.info(`Listener registered for connection ${this.url} \u2014 total listener(s): ${this.listeners.size}`)}),()=>this.removeListener(t)}removeListener(t){const e=this.log.for(this.removeListener),s=this.listeners.has(t);e.info(`Unregistering listener for connection ${this.url}. Current active listeners: ${this.listeners.size}`,{listenerFound:s}),s&&(this.listeners.delete(t),e.debug(`Listener unregistered for connection ${this.url} \u2014 total listener(s): ${this.listeners.size}`)),0===this.listeners.size&&(e.info(`No listeners remaining. Closing EventSource connection ${this.url}.`,{url:this.url,listeners:this.listeners.size}),this.close())}}class tt extends h{constructor(){super(...arguments),this.initialized=!1,this.listening=!1}async initialize(...t){const{log:e,ctxArgs:s}=(await this.logCtx(t,r.INITIALIZATION,!0)).for(this.initialize);this.adapter?(e.info(`Initializing ${this.adapter}'s event Dispatch, but not listening yet.`),this.initialized=!0,await this.startListening(...s),e.info(`HttpDispatcher initialized for adapter ${this.adapter}.`)):e.verbose("No adapter observed for dispatch; skipping initialization")}async startListening(...t){const{log:e}=this.logCtx(t,this.startListening);if(!this.initialized||!this.adapter)throw e.error("Cannot start listening: dispatcher is not initialized or adapter is missing",{initialized:this.initialized,hasAdapter:!!this.adapter}),Error("Cannot start listening before call initialize()");if(!this.adapter.config.events)return void e.warn("SSe events disabled");this.listening&&e.warn("startListening called but dispatcher is already listening",{adapter:this.adapter+""});const{protocol:s,host:i,eventsListenerPath:r}=this.adapter.config;if(!r)throw e.error("Cannot start listening: no eventsListenerPath specified",{protocol:s,host:i}),Error("No eventsListenerPath specified");const n=new URL(r,`${s}://${i}`).toString();e.info("Opening ServerEventConnector for url: "+n),this.connector=Z.open(n,async()=>{if(!this.adapter)throw new x("Adapter not initialized");try{return this.adapter.getEventHeaders()}catch(t){throw new x("Failed to get event headers: "+t)}}),e.debug("ServerEventConnector opened successfully for url: "+n),this.removeConnectorListener?.(),this.removeConnectorListener=this.connector.addListener({onEvent:async t=>{const[e,s,i,...r]=t,{log:n,ctxArgs:a}=(await this.logCtx(r,s,!0)).for("onEvent");super.updateObservers(e,s,i,...a).catch(t=>n.error("ServerEventConnector failed to updateObservers",t))},onError:t=>{e.error("ServerEventConnector failed to dispatch event",{error:t,listeningUrl:n,adapter:this.adapter+""})}}),await this.connector.ensureListening(),this.listening=!0,e.info(`HttpDispatcher is now listening at ${n}.`)}async close(...t){this.removeConnectorListener?.(),this.removeConnectorListener=void 0,this.connector?.close(),this.listening=!1}}(t=>{t.PENDING_TASK="x-pending-task",t.CORRELATION_ID="x-correlation-id"})(Y||(Y={}));const et="keepalive";function st(t,e,s,i){const r=i||e.name;t[r]=new Proxy(t[r],{apply:async(t,e,i)=>{let r=t.call(e,...i);return r instanceof Promise&&(r=await r),r=s.call(e,r),r instanceof Promise&&(r=await r),r}})}class it extends d{constructor(t,e,s){super(Object.assign({},t,{headers:void 0===t.headers||t.headers,events:void 0===t.events||t.events}),e,s);const i=this;[this.create,this.read,this.update,this.delete,this.createAll,this.readAll,this.updateAll,this.deleteAll].forEach(t=>{st(this,t,e=>i.parseResponse.call(i,void 0,t.name,e),t.name)}),S(this,(...t)=>t,this.request,(t,e)=>{const s=i.config.parsers;return s?(s.forEach(s=>s(t,e)),t):t},this.request.name)}async flags(t,e,s){return super.flags(t,e,Object.assign({headers:s.headers??{}},s))}Dispatch(){return new tt}async getEventHeaders(){return this.config.eventHeaderResolver&&await Promise.resolve(this.config.eventHeaderResolver)||{}}repository(){return V}prepare(t,...e){const{log:s}=this.logCtx(e,this.prepare),i=Object.assign({},t);return t[r.METADATA]&&(s.silly("Passing along persistence metadata for "+t[r.METADATA]),Object.defineProperty(i,r.METADATA,{enumerable:!1,writable:!1,configurable:!0,value:t[r.METADATA]})),{record:t,id:t[L.pk(t.constructor)]}}revert(t,e,s,...i){const{log:n}=this.logCtx(i,this.revert),a={},o="string"==typeof e?L.build(a,e):new e(a);n.silly(`Rebuilding model ${o.constructor.name} id ${s}`);const c="string"==typeof e?L.get(e):e;if(!c)throw new x("Failed to retrieve model constructor for "+e);const l=new c(t),h=t[r.METADATA];return h&&(n.silly(`Passing along ${this.flavour} persistence metadata for ${o.constructor.name} id ${s}: ${h}`),Object.defineProperty(l,r.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:h})),l}toTableName(t){return"string"==typeof t?t:F(L.tableName(t))}toHeaders(t){const e={};if(this.config.headers){const s=t.getOrUndefined("correlationId");s&&(e[Y.CORRELATION_ID]=s)}return{...e,...t.getOrUndefined("headers")||{}}}url(t,e,s){s||e&&!Array.isArray(e)&&(s=e,e=[]),t=this.toTableName(t);const i=new URL(`${this.config.protocol}://${this.config.host}/${t}${e&&e.length?"/"+e.join("/"):""}`);return s&&Object.entries(s).forEach(([t,e])=>{Array.isArray(e)?e.forEach(e=>i.searchParams.append(t,e.toString())):"object"==typeof e?i.searchParams.append(t,JSON.stringify(e)):void 0!==e&&i.searchParams.append(t,e.toString())}),i.toString()}extractIdArgs(t,e){const s=e.toString();if("string"==typeof t)return[s];const i=L.composed(t,L.pk(t));return i?s.split(i.separator):[s]}parseResponse(t,e,s){return t&&n.isSerializedPage(s)?Object.assign({},s,{data:s.data.map(e=>new t(e))}):s}raw(t,...e){const{ctxArgs:s,ctx:i}=this.logCtx(e,this.raw),r=this.toRequest(t,i);return this.request(r,...s)}Sequence(t){return Promise.reject(new c("Api is not natively available for HttpAdapters. If required, please extends this class"))}Statement(t){return new X(this,t)}Paginator(t,e,s){return new W(this,t,e,s)}parseCondition(t){throw new c("Api is not natively available for HttpAdapters. If required, please extends this class")}static parseError(t,...e){const s="string"==typeof t?t:t.message;return s.includes($.name)||s.includes("404")?new $(t):s.includes(N.name)||s.includes("409")?new N(t):s.includes(R.name)||s.includes("400")?new R(t):s.includes(T.name)||s.includes("422")?new T(t):s.includes(u.name)?new u(t):s.includes(g.name)?new g(t):s.includes(c.name)?new c(t):s.includes(p.name)?new p(t):s.includes(f.name)?new f(t):s.includes(y.name)?new y(t):s.includes(m.name)?new m(t):s.includes(w.name)?new w(t):s.includes(C.name)?new C(t):new x(t)}static decoration(){super.decoration(),v.for(r.QUERY).define({decorator:e=>(s,i,n)=>O(b(E.key(r.QUERY,i),e),t(),(t,e,s)=>{s.value=new Proxy(s.value,{async apply(t,e,s){const r=e,{log:n,ctxArgs:a}=(await r.logCtx(s,A.READ,!0)).for(i);return n.verbose("Running prepared statement "+t.name),n.debug("With args: "+JSON.stringify(s,null,2)),e.statement(t.name,...a)}})})(s,i,n)}).apply()}}it.decoration();const rt="axios",nt=(t,e)=>{if(t.headers&&t.headers[Y.PENDING_TASK]){let s;try{s=JSON.parse(t.headers[Y.PENDING_TASK]),Object.entries(s).forEach(([t,s])=>{s.forEach(s=>e.pushPending(t,s))})}catch(s){e.logger.for(nt).error(`Failed to parse pending tasks header ${t.headers[Y.PENDING_TASK]}: ${s}`)}}};class at extends it{constructor(t,e){super(t,rt,e)}getClient(){return new j({baseURL:`${this.config.protocol}://${this.config.host}`})}toRequest(t,e){let s,i;t instanceof a?(i=t,s=void 0):(s=t,i=e);const n={};return i&&(n.headers={...n.headers||{},...this.toHeaders(i)}),s&&(n.method="GET",n.url=this.url(s.class,[r.STATEMENT,s.method,...s.args||[]],s.params)),n}async request(t,...e){let s={};try{const{ctx:t}=this.logCtx(e,this.request);s=this.toRequest(t)}catch(t){}return await this.client.request(Object.assign({},t,s))}parseResponse(t,e,i){if(!i.status&&e!==r.STATEMENT)throw new x("this should be impossible");if(i.status>=400)throw this.parseError(i.error||i.status);const n=this.normalizeResponseBody(i);switch(e){case P.CREATE_ALL:case P.READ_ALL:case P.UPDATE_ALL:case P.DELETE_ALL:case A.CREATE:case A.READ:case A.UPDATE:case A.DELETE:return n;case s.FIND:case s.PAGE:case s.FIND_BY:case s.LIST_BY:case s.PAGE_BY:case s.FIND_ONE_BY:case r.STATEMENT:return super.parseResponse(t,e,n);case s.COUNT_OF:case s.MAX_OF:case s.MIN_OF:case s.AVG_OF:case s.SUM_OF:case s.DISTINCT_OF:return n;case s.GROUP_OF:if(t&&"object"==typeof n&&null!==n){const e={};for(const[s,i]of Object.entries(n))e[s]=Array.isArray(i)?i.map(e=>new t(e)):i;return e}return n;default:return n}}normalizeResponseBody(t){if(!t)return t;const e=void 0!==t.body?t.body:void 0!==t.data?t.data:t;if("string"==typeof e)try{return JSON.parse(e)}catch{return e}return e}async create(t,e,s,...i){const{log:r,ctx:n}=this.logCtx(i,this.create);try{const i=this.url(t,this.extractIdArgs(t,e)),a=this.toRequest(n);return r.debug(`POSTing to ${i} with ${JSON.stringify(s)} and cfg ${JSON.stringify(a)}`),await this.request({url:i,method:"POST",data:JSON.stringify(Object.assign({},s,{[I.ANCHOR]:t.name})),...a},n)}catch(t){throw this.parseError(t)}}async createAll(t,e,s,...i){const{log:r,ctx:n}=this.logCtx(i,this.createAll);try{const e=this.url(t,["bulk"]),i=this.toRequest(n);return r.debug(`POSTing to ${e} with ${JSON.stringify(s)} and cfg ${JSON.stringify(i)}`),this.request({url:e,method:"POST",data:JSON.stringify(s.map(e=>Object.assign({},e,{[I.ANCHOR]:t.name}))),...i},n)}catch(t){throw this.parseError(t)}}async read(t,e,...s){const{log:i,ctx:r}=this.logCtx(s,this.read);try{const s=this.url(t,this.extractIdArgs(t,e)),n=this.toRequest(r);return i.debug(`GETing from ${s} and cfg ${JSON.stringify(n)}`),await this.request({url:s,method:"GET",...n},r)}catch(t){throw this.parseError(t)}}async readAll(t,e,...s){const{log:i,ctx:r}=this.logCtx(s,this.readAll);try{const s=this.url(t,["bulk"],{ids:e}),n=this.toRequest(r);return i.debug(`GETing from ${s} and cfg ${JSON.stringify(n)}`),await this.request({url:s,method:"GET",...n},r)}catch(t){throw this.parseError(t)}}async update(t,e,s,...i){const{log:r,ctx:n}=this.logCtx(i,this.update);try{const i=this.url(t,this.extractIdArgs(t,e)),a=this.toRequest(n);return r.debug(`PUTing to ${i} with ${JSON.stringify(s)} and cfg ${JSON.stringify(a)}`),await this.request({url:i,method:"PUT",data:JSON.stringify(Object.assign({},s,{[I.ANCHOR]:t.name})),...a},n)}catch(t){throw this.parseError(t)}}async updateAll(t,e,s,...i){const{log:r,ctx:n}=this.logCtx(i,this.updateAll);try{const e=this.url(t,["bulk"]),i=this.toRequest(n);return r.debug(`PUTing to ${e} with ${JSON.stringify(s)} and cfg ${JSON.stringify(i)}`),this.request({url:e,method:"PUT",data:JSON.stringify(s.map(e=>Object.assign({},e,{[I.ANCHOR]:t.name}))),...i},n)}catch(t){throw this.parseError(t)}}async delete(t,e,...s){const{log:i,ctx:r}=this.logCtx(s,this.delete);try{const s=this.url(t,this.extractIdArgs(t,e)),n=this.toRequest(r);return i.debug(`DELETEing from ${s} and cfg ${JSON.stringify(n)}`),await this.request({url:s,method:"DELETE",...n},r)}catch(t){throw this.parseError(t)}}async deleteAll(t,e,...s){const{log:i,ctx:r}=this.logCtx(s,this.delete);try{const s=this.url(t,["bulk"],{ids:e}),n=this.toRequest(r);return i.debug(`DELETEing from ${s} and cfg ${JSON.stringify(n)}`),await this.request({url:s,method:"DELETE",...n},r)}catch(t){throw this.parseError(t)}}parseError(t,...e){return it.parseError(t,...e)}}at.decoration();const ot="##VERSION##",ct="##PACKAGE##";E.registerLibrary(ct,ot);export{rt as AxiosFlavour,at as AxiosHttpAdapter,Y as DecafHeaders,it as HttpAdapter,W as HttpPaginator,X as HttpStatement,et as KeepAliveOperation,ct as PACKAGE_NAME,Q as RestRepository,V as RestService,Z as ServerEventConnector,nt as TaskResponseParser,ot as VERSION,st as suffixMethod};
1
+ import{prepared as t,Repository as e,PreparedStatementKeys as s,OrderDirection as i,PersistenceKeys as r,Paginator as n,Context as a,Statement as o,UnsupportedError as c,ContextualLoggedClass as l,Dispatch as h,Adapter as d,QueryError as u,PagingError as p,MigrationError as g,ObserverError as f,AuthorizationError as y,ForbiddenError as m,ConnectionError as v}from"@decaf-ts/core";import{Decoration as w,apply as A,methodMetadata as b,Metadata as E}from"@decaf-ts/decoration";import{OperationKeys as O,InternalError as x,wrapMethodWithContext as R,NotFoundError as S,ConflictError as T,BadRequestError as L,ValidationError as N,SerializationError as C,BulkCrudOperationKeys as $}from"@decaf-ts/db-decorators";import{Model as P,Serialization as _}from"@decaf-ts/decorator-validation";import{__decorate as I,__metadata as D}from"tslib";import{toKebabCase as q}from"@decaf-ts/logging";import{EventSourcePlus as F}from"event-source-plus";import{Lock as j}from"@decaf-ts/transactional-decorators";import{Axios as z}from"axios";var k,B,U,H,M,G,Y;class J extends e{constructor(t,e){super(t,e),this._overrides=Object.assign({},super._overrides,{allowRawStatements:!1,forcePrepareSimpleQueries:!0,forcePrepareComplexQueries:!0})}url(t,e,s){return this.adapter.url(t,e,s)}async paginateBy(t,e,i={offset:1,limit:10},...r){const{offset:n,bookmark:a,limit:o}=i,{log:c,ctxArgs:l}=(await this.logCtx(r,s.PAGE_BY,!0)).for(this.paginateBy);c.verbose(`paginating ${P.tableName(this.class)} with page size ${o}`);const h={direction:e,limit:o};return a&&(h.bookmark=a),this.statement(this.paginateBy.name,t,n,h,...l)}async listBy(t,e,...i){const{log:r,ctxArgs:n}=(await this.logCtx(i,s.LIST_BY,!0)).for(this.listBy);return r.verbose(`listing ${P.tableName(this.class)} by ${t} ${e}`),await this.statement(this.listBy.name,t,{direction:e},...n)}async findBy(t,e,...i){const{log:r,ctxArgs:n}=(await this.logCtx(i,s.FIND_BY,!0)).for(this.findBy);return r.verbose(`finding ${P.tableName(this.class)} with ${t} ${e}`),await this.statement(this.findBy.name,t,e,{},...n)}async findOneBy(t,e,...i){const{log:r,ctxArgs:n}=(await this.logCtx(i,s.FIND_ONE_BY,!0)).for(this.findOneBy);return r.verbose(`finding ${P.tableName(this.class)} with ${t} ${e}`),await this.statement(this.findOneBy.name,t,e,{},...n)}async find(t,e=i.ASC,...r){const{log:n,ctxArgs:a}=(await this.logCtx(r,s.FIND,!0)).for(this.find);return n.verbose(`finding ${P.tableName(this.class)} by default query attributes`),await this.statement(this.find.name,t,e,...a)}async page(t,e=i.ASC,r={offset:1,limit:10},...n){const{log:a,ctxArgs:o}=(await this.logCtx(n,s.PAGE,!0)).for(this.page);return a.verbose(`paging ${P.tableName(this.class)} by default query attributes`),await this.statement(this.page.name,t,e,r,...o)}async statement(t,...e){const{log:s,ctx:i,ctxArgs:n}=(await this.logCtx(e,r.STATEMENT,!0)).for(this.statement),a=n.slice(0,-1),o=a[a.length-1],c="object"!=typeof o||null===o||Array.isArray(o)?void 0:a.pop(),l={class:this.class,args:a,method:t,params:c},h=this.adapter.toRequest(l,i);s.verbose("Executing prepared statement "+t);const d=await this.request(h,...n),u=this.adapter.parseResponse(this.class,t,d);return this.convertStatementResult(t,u,i)}convertStatementResult(t,e,i){return e?t===s.FIND||t===s.LIST_BY||t===s.FIND_BY?Array.isArray(e)?e.map(t=>this.revertRecord(t,i)):e:t===s.FIND_ONE_BY?this.revertRecord(e,i):t===s.PAGE||t===s.PAGE_BY?this.convertPageResult(e,i):e:e}convertPageResult(t,e){if(!t)return t;let s=t;if("string"==typeof s)try{s=n.deserialize(s)}catch{return t}return n.isSerializedPage(s)?{...s,data:s.data.map(t=>this.revertRecord(t,e))}:t}revertRecord(t,e){if(!t)return t;if(t instanceof this.class)return t;const s=P.pk(this.class),i=P.columnName(this.class,s),r=s??i,n=t[i]??t[r];if(void 0!==n)try{return this.adapter.revert(t,this.class,n,void 0,e)}catch{}return Object.assign(new this.class,t)}async request(t,...e){let s;s=e.length&&e[e.length-1]instanceof a?this.logCtx(e,this.request):(await this.logCtx(e,O.READ,!0)).for(this.request);const{ctxArgs:i}=s;return this.adapter.request(t,...i)}async countOf(t,...e){const{log:i,ctxArgs:r}=(await this.logCtx(e,s.COUNT_OF,!0)).for(this.countOf);i.verbose(`counting ${P.tableName(this.class)}${t?" by "+t:""}`);const n=t?[t,{}]:[{}];return await this.statement(this.countOf.name,...n,...r)}async maxOf(t,...e){const{log:i,ctxArgs:r}=(await this.logCtx(e,s.MAX_OF,!0)).for(this.maxOf);return i.verbose(`finding max of ${t} in ${P.tableName(this.class)}`),await this.statement(this.maxOf.name,t,{},...r)}async minOf(t,...e){const{log:i,ctxArgs:r}=(await this.logCtx(e,s.MIN_OF,!0)).for(this.minOf);return i.verbose(`finding min of ${t} in ${P.tableName(this.class)}`),await this.statement(this.minOf.name,t,{},...r)}async avgOf(t,...e){const{log:i,ctxArgs:r}=(await this.logCtx(e,s.AVG_OF,!0)).for(this.avgOf);return i.verbose(`calculating avg of ${t} in ${P.tableName(this.class)}`),await this.statement(this.avgOf.name,t,{},...r)}async sumOf(t,...e){const{log:i,ctxArgs:r}=(await this.logCtx(e,s.SUM_OF,!0)).for(this.sumOf);return i.verbose(`calculating sum of ${t} in ${P.tableName(this.class)}`),await this.statement(this.sumOf.name,t,{},...r)}async distinctOf(t,...e){const{log:i,ctxArgs:r}=(await this.logCtx(e,s.DISTINCT_OF,!0)).for(this.distinctOf);return i.verbose(`finding distinct values of ${t} in ${P.tableName(this.class)}`),await this.statement(this.distinctOf.name,t,{},...r)}async groupOf(t,...e){const{log:i,ctxArgs:r}=(await this.logCtx(e,s.GROUP_OF,!0)).for(this.groupOf);return i.verbose(`grouping ${P.tableName(this.class)} by ${t}`),await this.statement(this.groupOf.name,t,{},...r)}}I([t(),D("design:type",Function),D("design:paramtypes",[String,String,void 0]),D("design:returntype",Promise)],J.prototype,"find",null),I([t(),D("design:type",Function),D("design:paramtypes",[String,String,Object,void 0]),D("design:returntype",Promise)],J.prototype,"page",null),I([t(),D("design:type",Function),D("design:paramtypes",[Object,void 0]),D("design:returntype",Promise)],J.prototype,"countOf",null),I([t(),D("design:type",Function),D("design:paramtypes",["function"==typeof(k="undefined"!=typeof K&&K)?k:Object,void 0]),D("design:returntype",Promise)],J.prototype,"maxOf",null),I([t(),D("design:type",Function),D("design:paramtypes",["function"==typeof(B="undefined"!=typeof K&&K)?B:Object,void 0]),D("design:returntype",Promise)],J.prototype,"minOf",null),I([t(),D("design:type",Function),D("design:paramtypes",["function"==typeof(U="undefined"!=typeof K&&K)?U:Object,void 0]),D("design:returntype",Promise)],J.prototype,"avgOf",null),I([t(),D("design:type",Function),D("design:paramtypes",["function"==typeof(H="undefined"!=typeof K&&K)?H:Object,void 0]),D("design:returntype",Promise)],J.prototype,"sumOf",null),I([t(),D("design:type",Function),D("design:paramtypes",["function"==typeof(M="undefined"!=typeof K&&K)?M:Object,void 0]),D("design:returntype",Promise)],J.prototype,"distinctOf",null),I([t(),D("design:type",Function),D("design:paramtypes",["function"==typeof(G="undefined"!=typeof K&&K)?G:Object,void 0]),D("design:returntype",Promise)],J.prototype,"groupOf",null);class Q extends J{constructor(t,e){super(t,e),this._overrides=Object.assign({},super._overrides,{ignoreValidation:!0,ignoreHandlers:!0,allowRawStatements:!1,forcePrepareSimpleQueries:!0,forcePrepareComplexQueries:!0})}toString(){return P.tableName(this.class)+" REST service"}}class V extends o{constructor(t,e){super(t,e)}build(){throw new c("This method is only called is prepared statements are not used. If so, a dedicated implementation for the native queries used is required")}parseCondition(t,...e){throw new c("This method is only called is prepared statements are not used. Is so, a dedicated implementation for the native queries used is required")}}class X extends n{constructor(t,e,s,i){super(t,e,s,i)}async pagePrepared(t,...i){const r=e.forModel(this.clazz,this.adapter.alias),n=this.query,{method:a,args:o,params:l}=n,h=RegExp(`^${s.FIND_BY}|${s.LIST_BY}`,"gi");if(!a.match(h))throw new c(`Method ${a} is not supported for pagination`);h.lastIndex=0;const d=[a.replace(h,s.PAGE_BY),...o],u={direction:l.direction,limit:this.size,offset:t,bookmark:this._bookmark};d.push(u);const p=await r.statement(...d,...i);return this.apply(p)}prepare(t){throw new c("Raw query access must be implemented by a subclass. only prepared statements are natively available")}page(t=1,...e){return super.page(t,...e)}}class W extends l{static{this.cache=new Map}static get(t){if(this.cache.has(t))return this.cache.get(t);throw Error(`Server event connector not found for URL '${t}'. Did you forget to call open()?`)}static open(t,e){if(this.cache.has(t))return this.cache.get(t);const s=new W(t,e);return this.cache.set(t,s),this.cache.get(t)}static close(t){this.cache.has(t)&&this.cache.get(t).close()}static parseReceivedEvent(t){const e=t=>{if("string"!=typeof t)return t;try{return _.deserialize(t)}catch{try{return JSON.parse(t)}catch{return t}}};try{const s="string"==typeof t?JSON.parse(t):t;if(!Array.isArray(s)||3>s.length)return null;const[i,r,n,a]=s;if("string"!=typeof i)return null;let o;return o=Array.isArray(a)?a.map(t=>e(t)):e(a),[i,r+"",n,o]}catch{return null}}constructor(t,e){super(),this.url=t,this.headers=e,this.stateLock=new j,this.ready=!1,this.listeners=new Set}isOpen(){return void 0!==this.es}async withStateLock(t){await this.stateLock.acquire();try{return await Promise.resolve(t())}finally{this.stateLock.release()}}async setOpening(t){await this.withStateLock(()=>{this.opening=t})}async isReady(){return this.withStateLock(()=>this.ready)}async setReady(t){await this.withStateLock(()=>{this.ready=t})}async getHeaders(){let t=this.headers;return"function"==typeof this.headers&&(t=await Promise.resolve(this.headers())),t||{}}close(t=!1){const e=this.log.for(this.close);if(this.es)if(0>=this.listeners.size||t)try{e.info("Closing EventSource connection for listening URL "+this.url),this.controller?.abort()}finally{this.controller=void 0,this.es=void 0,this.setReady(!1),this.setOpening(void 0),this.listeners.clear(),W.cache.delete(this.url),e.info(`EventSource connection ${this.url} closed and removed from pool`)}else e.warn(`Skipping EventSource connection close ${this.url} \u2014 ${this.listeners.size} active listener(s) remaining.`);else e.debug("Skipping EventSource close \u2014 no open connection to "+this.url)}async startListening(){const t=this.log.for(this.startListening);let e,s,i,r=!1;const n=new Promise((t,e)=>{s=t,i=e});if(await this.withStateLock(()=>{this.es&&this.ready?e=Promise.resolve():this.opening?e=this.opening:(this.ready=!1,this.opening=n,e=n,r=!0)}),!r)return t.debug("Connection open already in progress for "+this.url,{url:this.url,listeners:this.listeners.size}),void await e;(async()=>{t.info("Opening EventSource connection to "+this.url);const e=await this.getHeaders();this.es=new F(this.url,{...e&&{headers:e},credentials:"include"}),await this.setReady(!1);let r=!1;const n=this;this.controller=this.es.listen({onResponse:async()=>{r||(r=!0,await n.setReady(!0),t.info(`Connected to ${this.url}. Ready to receive events`),s())},onRequestError:({error:e})=>{r||(r=!0,t.error("Failed to establish EventSource connection",{url:this.url,error:e}),n.setReady(!1),i(e),n.listeners.forEach(t=>t.onError((e?.message??e)+"")))},onResponseError:({response:e})=>{if(r)return;r=!0;const s=e?.status,a=e?.statusText;t.error("Listening failed with HTTP error response",{url:this.url,status:s,statusText:a});const o=Error(`HTTP ${s??"unknown"} ${a??"error"}`);n.setReady(!1),i(o),n.listeners.forEach(t=>t.onError(o))},onMessage:e=>{if("heartbeat"===e.event)return void t.debug("Refresh connection. Heartbeat received.");const s=e&&"object"==typeof e&&"data"in e?e.data:e,i=W.parseReceivedEvent(s);if(i)for(const e of n.listeners)try{e.onEvent(i)}catch(e){t.error("Listener handler failed on event",{err:e})}else t.warn("Failed to parse SSE message",{url:this.url,raw:s})}})})().catch(async t=>{this.controller=void 0,this.es=void 0,await this.setReady(!1),i(t)});try{await e}finally{await this.setOpening(void 0)}}async ensureListening(){await this.startListening()}addListener(t){const e=this.log.for(this.addListener);return e.info(`Registering listener for connection ${this.url} \u2014 ${this.listeners.size} active listener(s)`),this.listeners.add(t),this.ensureListening().then(()=>{e.info(`Listener registered for connection ${this.url} \u2014 total listener(s): ${this.listeners.size}`)}),()=>this.removeListener(t)}removeListener(t){const e=this.log.for(this.removeListener),s=this.listeners.has(t);e.info(`Unregistering listener for connection ${this.url}. Current active listeners: ${this.listeners.size}`,{listenerFound:s}),s&&(this.listeners.delete(t),e.debug(`Listener unregistered for connection ${this.url} \u2014 total listener(s): ${this.listeners.size}`)),0===this.listeners.size&&(e.info(`No listeners remaining. Closing EventSource connection ${this.url}.`,{url:this.url,listeners:this.listeners.size}),this.close())}}class Z extends h{constructor(){super(...arguments),this.initialized=!1,this.listening=!1}async initialize(...t){const{log:e,ctxArgs:s}=(await this.logCtx(t,r.INITIALIZATION,!0)).for(this.initialize);this.adapter?(e.info(`Initializing ${this.adapter}'s event Dispatch, but not listening yet.`),this.initialized=!0,await this.startListening(...s),e.info(`HttpDispatcher initialized for adapter ${this.adapter}.`)):e.verbose("No adapter observed for dispatch; skipping initialization")}async startListening(...t){const{log:e}=this.logCtx(t,this.startListening);if(!this.initialized||!this.adapter)throw e.error("Cannot start listening: dispatcher is not initialized or adapter is missing",{initialized:this.initialized,hasAdapter:!!this.adapter}),Error("Cannot start listening before call initialize()");if(!this.adapter.config.events)return void e.warn("SSe events disabled");this.listening&&e.warn("startListening called but dispatcher is already listening",{adapter:this.adapter+""});const{protocol:s,host:i,eventsListenerPath:r}=this.adapter.config;if(!r)throw e.error("Cannot start listening: no eventsListenerPath specified",{protocol:s,host:i}),Error("No eventsListenerPath specified");const n=new URL(r,`${s}://${i}`).toString();e.info("Opening ServerEventConnector for url: "+n),this.connector=W.open(n,async()=>{if(!this.adapter)throw new x("Adapter not initialized");try{return this.adapter.getEventHeaders()}catch(t){throw new x("Failed to get event headers: "+t)}}),e.debug("ServerEventConnector opened successfully for url: "+n),this.removeConnectorListener?.(),this.removeConnectorListener=this.connector.addListener({onEvent:async t=>{const[e,s,i,...r]=t,{log:n,ctxArgs:a}=(await this.logCtx(r,s,!0)).for("onEvent");super.updateObservers(e,s,i,...a).catch(t=>n.error("ServerEventConnector failed to updateObservers",t))},onError:t=>{e.error("ServerEventConnector failed to dispatch event",{error:t,listeningUrl:n,adapter:this.adapter+""})}}),await this.connector.ensureListening(),this.listening=!0,e.info(`HttpDispatcher is now listening at ${n}.`)}async close(...t){this.removeConnectorListener?.(),this.removeConnectorListener=void 0,this.connector?.close(),this.listening=!1}}(t=>{t.PENDING_TASK="x-pending-task",t.CORRELATION_ID="x-correlation-id"})(Y||(Y={}));const tt="keepalive";function et(t,e,s,i){const r=i||e.name;t[r]=new Proxy(t[r],{apply:async(t,e,i)=>{let r=t.call(e,...i);return r instanceof Promise&&(r=await r),r=s.call(e,r),r instanceof Promise&&(r=await r),r}})}class st extends d{constructor(t,e,s){super(Object.assign({},t,{headers:void 0===t.headers||t.headers,events:void 0===t.events||t.events}),e,s);const i=this;[this.create,this.read,this.update,this.delete,this.createAll,this.readAll,this.updateAll,this.deleteAll].forEach(t=>{et(this,t,e=>i.parseResponse.call(i,void 0,t.name,e),t.name)}),R(this,(...t)=>t,this.request,(t,e)=>{const s=i.config.parsers;return s?(s.forEach(s=>s(t,e)),t):t},this.request.name)}async flags(t,e,s){return super.flags(t,e,Object.assign({headers:s.headers??{}},s))}Dispatch(){return new Z}async getEventHeaders(){return this.config.eventHeaderResolver&&await Promise.resolve(this.config.eventHeaderResolver)||{}}repository(){return Q}prepare(t,...e){const{log:s}=this.logCtx(e,this.prepare),i=Object.assign({},t);return t[r.METADATA]&&(s.silly("Passing along persistence metadata for "+t[r.METADATA]),Object.defineProperty(i,r.METADATA,{enumerable:!1,writable:!1,configurable:!0,value:t[r.METADATA]})),{record:t,id:t[P.pk(t.constructor)]}}revert(t,e,s,...i){const{log:n}=this.logCtx(i,this.revert),a={},o="string"==typeof e?P.build(a,e):new e(a);n.silly(`Rebuilding model ${o.constructor.name} id ${s}`);const c="string"==typeof e?P.get(e):e;if(!c)throw new x("Failed to retrieve model constructor for "+e);const l=new c(t),h=t[r.METADATA];return h&&(n.silly(`Passing along ${this.flavour} persistence metadata for ${o.constructor.name} id ${s}: ${h}`),Object.defineProperty(l,r.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:h})),l}toTableName(t){return"string"==typeof t?t:q(P.tableName(t))}toHeaders(t){const e={};if(this.config.headers){const s=t.getOrUndefined("correlationId");s&&(e[Y.CORRELATION_ID]=s)}return{...e,...t.getOrUndefined("headers")||{}}}url(t,e,s){s||e&&!Array.isArray(e)&&(s=e,e=[]),t=this.toTableName(t);const i=new URL(`${this.config.protocol}://${this.config.host}/${t}${e&&e.length?"/"+e.join("/"):""}`);return s&&Object.entries(s).forEach(([t,e])=>{Array.isArray(e)?e.forEach(e=>i.searchParams.append(t,e.toString())):"object"==typeof e?i.searchParams.append(t,JSON.stringify(e)):void 0!==e&&i.searchParams.append(t,e.toString())}),i.toString()}toHttpResponse(t,e){if(t&&"object"==typeof t&&("code"in t||"error"in t))return t;const s=void 0!==e?e:t;return{code:s&&"number"==typeof s.code?s.code:s&&"number"==typeof s.status?s.status:void 0,data:t,error:t&&"object"==typeof t&&"error"in t?t.error:s&&"object"==typeof s&&"error"in s?s.error:void 0}}async get(t,e,...s){const{ctx:i}=(await this.logCtx(s,this.get.name,!0)).for(this.get);try{const s=await this.request(this.toRequest("GET",t,void 0,e),i),r=this.parseResponse(void 0,"GET",s);return this.toHttpResponse(r,s)}catch(t){throw this.parseError(t)}}async post(t,e,s,...i){const{ctx:r}=(await this.logCtx(i,this.post.name,!0)).for(this.post);try{const i=await this.request(this.toRequest("POST",t,e,s),r),n=this.parseResponse(void 0,"POST",i);return this.toHttpResponse(n,i)}catch(t){throw this.parseError(t)}}async put(t,e,s,...i){const{ctx:r}=(await this.logCtx(i,this.put.name,!0)).for(this.put);try{const i=await this.request(this.toRequest("PUT",t,e,s),r),n=this.parseResponse(void 0,"PUT",i);return this.toHttpResponse(n,i)}catch(t){throw this.parseError(t)}}extractIdArgs(t,e){const s=e.toString();if("string"==typeof t)return[s];const i=P.composed(t,P.pk(t));return i?s.split(i.separator):[s]}parseResponse(t,e,s){return t&&n.isSerializedPage(s)?Object.assign({},s,{data:s.data.map(e=>new t(e))}):s}async create(t,e,s,...i){const r=this.url(t,this.extractIdArgs(t,e));return(await this.post(r,JSON.stringify(s),void 0,...i)).data}async createAll(t,e,s,...i){const r=this.url(t,["bulk"]);return(await this.post(r,JSON.stringify(s),void 0,...i)).data}async read(t,e,...s){const i=this.url(t,this.extractIdArgs(t,e));return(await this.get(i,void 0,...s)).data}async readAll(t,e,...s){const i=this.url(t,["bulk"],{ids:e});return(await this.get(i,void 0,...s)).data}async update(t,e,s,...i){const r=this.url(t,this.extractIdArgs(t,e));return(await this.put(r,JSON.stringify(s),void 0,...i)).data}async updateAll(t,e,s,...i){const r=this.url(t,["bulk"]);return(await this.put(r,JSON.stringify(s),void 0,...i)).data}async delete(t,e,...s){const{ctx:i}=(await this.logCtx(s,this.delete.name,!0)).for(this.delete);if(void 0===e||"object"==typeof e&&!Array.isArray(e)){if("string"!=typeof t)throw new x("Simple delete(url, options) requires a URL string");try{const s=await this.request(this.toRequest("DELETE",t,void 0,e),i),r=this.parseResponse(void 0,"DELETE",s);return this.toHttpResponse(r,s)}catch(t){throw this.parseError(t)}}const r=e,n=this.url(t,this.extractIdArgs(t,r));return(await this.delete(n,void 0,i)).data}async deleteAll(t,e,...s){const i=this.url(t,["bulk"],{ids:e});return(await this.delete(i,void 0,...s)).data}raw(t,...e){const{ctxArgs:s,ctx:i}=this.logCtx(e,this.raw),r=this.toRequest(t,i);return this.request(r,...s)}Sequence(t){return Promise.reject(new c("Api is not natively available for HttpAdapters. If required, please extends this class"))}Statement(t){return new V(this,t)}Paginator(t,e,s){return new X(this,t,e,s)}parseCondition(t){throw new c("Api is not natively available for HttpAdapters. If required, please extends this class")}static parseError(t,...e){const s="string"==typeof t?t:t.message;return s.includes(S.name)||s.includes("404")?new S(t):s.includes(T.name)||s.includes("409")?new T(t):s.includes(L.name)||s.includes("400")?new L(t):s.includes(N.name)||s.includes("422")?new N(t):s.includes(u.name)?new u(t):s.includes(p.name)?new p(t):s.includes(c.name)?new c(t):s.includes(g.name)?new g(t):s.includes(f.name)?new f(t):s.includes(y.name)?new y(t):s.includes(m.name)?new m(t):s.includes(v.name)?new v(t):s.includes(C.name)?new C(t):new x(t)}static decoration(){super.decoration(),w.for(r.QUERY).define({decorator:e=>(s,i,n)=>A(b(E.key(r.QUERY,i),e),t(),(t,e,s)=>{s.value=new Proxy(s.value,{async apply(t,e,s){const r=e,{log:n,ctxArgs:a}=(await r.logCtx(s,O.READ,!0)).for(i);return n.verbose("Running prepared statement "+t.name),n.debug("With args: "+JSON.stringify(s,null,2)),e.statement(t.name,...a)}})})(s,i,n)}).apply()}}st.decoration();const it="axios",rt=(t,e)=>{if(t.headers&&t.headers[Y.PENDING_TASK]){let s;try{s=JSON.parse(t.headers[Y.PENDING_TASK]),Object.entries(s).forEach(([t,s])=>{s.forEach(s=>e.pushPending(t,s))})}catch(s){e.logger.for(rt).error(`Failed to parse pending tasks header ${t.headers[Y.PENDING_TASK]}: ${s}`)}}};class nt extends st{constructor(t,e){super(t,it,e)}getClient(){return new z({baseURL:`${this.config.protocol}://${this.config.host}`})}toRequest(t,e,s,i){if("string"==typeof t){const r=Object.assign({method:t,url:e},this.toAxiosRequestOptions(i));return void 0!==s&&(r.data=s),r}let n,o;t instanceof a?(o=t,n=void 0):(n=t,o=e);const c={};return o&&(c.headers={...c.headers||{},...this.toHeaders(o)}),n&&(c.method="GET",c.url=this.url(n.class,[r.STATEMENT,n.method,...n.args||[]],n.params)),c}toAxiosRequestOptions(t){if(!t)return{};const{includeCredentials:e,...s}=t,i=Object.assign({},s);return void 0!==e&&void 0===i.withCredentials&&(i.withCredentials=e),i}async request(t,...e){let s={};try{const{ctx:t}=this.logCtx(e,this.request);s=this.toRequest(t)}catch(t){}return await this.client.request(Object.assign({},t,s))}parseResponse(t,e,i){if(!i?.status&&e!==r.STATEMENT){if(new Set([O.CREATE,O.READ,O.UPDATE,O.DELETE,$.CREATE_ALL,$.READ_ALL,$.UPDATE_ALL,$.DELETE_ALL]).has(e+""))return i;throw new x("this should be impossible")}if(i.status>=400)throw this.parseError(i.error||i.status);const n=this.normalizeResponseBody(i);switch(e){case $.CREATE_ALL:case $.READ_ALL:case $.UPDATE_ALL:case $.DELETE_ALL:case O.CREATE:case O.READ:case O.UPDATE:case O.DELETE:return n;case s.FIND:case s.PAGE:case s.FIND_BY:case s.LIST_BY:case s.PAGE_BY:case s.FIND_ONE_BY:case r.STATEMENT:return super.parseResponse(t,e,n);case s.COUNT_OF:case s.MAX_OF:case s.MIN_OF:case s.AVG_OF:case s.SUM_OF:case s.DISTINCT_OF:return n;case s.GROUP_OF:if(t&&"object"==typeof n&&null!==n){const e={};for(const[s,i]of Object.entries(n))e[s]=Array.isArray(i)?i.map(e=>new t(e)):i;return e}return n;default:return n}}normalizeResponseBody(t){if(!t)return t;const e=void 0!==t.body?t.body:void 0!==t.data?t.data:t;if("string"==typeof e)try{return JSON.parse(e)}catch{return e}return e}parseError(t,...e){return st.parseError(t,...e)}}nt.decoration();const at="##VERSION##",ot="##PACKAGE##";E.registerLibrary(ot,at);export{it as AxiosFlavour,nt as AxiosHttpAdapter,Y as DecafHeaders,st as HttpAdapter,X as HttpPaginator,V as HttpStatement,tt as KeepAliveOperation,ot as PACKAGE_NAME,J as RestRepository,Q as RestService,W as ServerEventConnector,rt as TaskResponseParser,at as VERSION,et as suffixMethod};
2
2
  //# sourceMappingURL=for-http.js.map