@decaf-ts/for-nest 0.2.31 → 0.2.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/for-nest.cjs CHANGED
@@ -1,2 +1,2 @@
1
- var e,t;e=this,t=function(e,t,r,a,o,s,i,n,c,p,d,l,u,m,h){"use strict";function y(e){var t=Object.create(null);return e&&Object.keys(e).forEach(r=>{if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:()=>e[r]})}}),t.default=e,Object.freeze(t)}var f=y(m);const g="swagger",_={API_OPERATION:g+"/apiOperation",API_RESPONSE:g+"/apiResponse",API_PRODUCES:g+"/apiProduces",API_CONSUMES:g+"/apiConsumes",API_TAGS:g+"/apiUseTags",API_CALLBACKS:g+"/apiCallbacks",API_PARAMETERS:g+"/apiParameters",API_HEADERS:g+"/apiHeaders",API_MODEL_PROPERTIES:g+"/apiModelProperties",API_MODEL_PROPERTIES_ARRAY:g+"/apiModelPropertiesArray",API_SECURITY:g+"/apiSecurity",API_EXCLUDE_ENDPOINT:g+"/apiExcludeEndpoint",API_EXCLUDE_CONTROLLER:g+"/apiExcludeController",API_EXTRA_MODELS:g+"/apiExtraModels",API_EXTENSION:g+"/apiExtension",API_SCHEMA:g+"/apiSchema",API_DEFAULT_GETTER:g+"/apiDefaultGetter",API_LINK:g+"/apiLink"},A=e=>void 0===e;function E(e){if("function"==typeof e)return E(e());if(Array.isArray(e))return e;if("object"!=typeof e)return[];const t=Object.values(e).filter(e=>"number"==typeof e).map(e=>e.toString());return Object.keys(e).filter(e=>!t.includes(e)).map(t=>e[t])}function P(e){return e.filter(i.isString).length>0?"string":"number"}function b(e,t,r=!0){return(a,o)=>{const s=Reflect.getMetadata(_.API_MODEL_PROPERTIES_ARRAY,a)||[],n=":"+o;s.includes(n)||Reflect.defineMetadata(_.API_MODEL_PROPERTIES_ARRAY,[...s,":"+o],a);const c=Reflect.getMetadata(e,a,o);if(c){const s=i.pickBy(t,i.negate(A)),n=r?{...c,...s}:{...s,...c};Reflect.defineMetadata(e,n,a,o)}else{const r=a?.constructor?._OPENAPI_METADATA_FACTORY?.()[o]?.type??Reflect.getMetadata("design:type",a,o);Reflect.defineMetadata(e,{type:r,required:!1,...i.pickBy(t,i.negate(A))},a,o)}}}function O(e={}){return R(e)}function R(e={},t=!0){const[r,a]=((e,t)=>{if(!e)return[e,t];if(t)return[e,t];const r=i.isArray(e);return[r?e[0]:e,r]})(e.type,e.isArray);if((o=e={...e,type:r,isArray:a}).isArray&&"enum"in o&&void 0!==o.enum){e.type="array";const t=E(e.enum);e.items={type:P(t),enum:t},delete e.enum}else if("enum"in e&&void 0!==e.enum){const t=E(e.enum);e.enum=t,e.type=P(t)}var o;return Array.isArray(e.type)&&(e.type="array",e.items={type:"array",items:{type:e.type[0]}}),b(_.API_MODEL_PROPERTIES,e,t)}function v(e,r){const{handler:a,args:o}=t.Metadata.get(e,c.OperationKeys.REFLECT+c.OperationKeys.BLOCK)||{};return!!a&&(a(...o,r)??!1)}function w(e,r,o){const s={GET:[c.OperationKeys.READ,a.Get],POST:[c.OperationKeys.CREATE,a.Post],PUT:[c.OperationKeys.UPDATE,a.Put],PATCH:[c.OperationKeys.UPDATE,a.Patch],DELETE:[c.OperationKeys.DELETE,a.Delete]},[i,p]=s[r];return v(e,i)?t.apply(n.ApiExcludeEndpoint()):t.apply(p(o))}function D(e=[]){const t=e.map(e=>n.ApiParam({name:e.name,description:e.description??"Path parameter: "+e.name,required:e.required??!0,type:e.type??String}));return a.applyDecorators(...t)}const S=a.createParamDecorator((e,t)=>{const r=t.switchToHttp().getRequest().body,o=t.getClass(),s=o.class;if(!s)throw new a.InternalServerErrorException(`ModelConstructor not found on controller ${o.name}. Ensure the controller was created via FromModelController.`);return r?Array.isArray(r)?r.map(e=>new s(e)):new s(r):r}),T=a.createParamDecorator((e,t)=>{const r=t.switchToHttp().getRequest(),a=r?.params??{},o=e??Object.keys(a),s=o.map(e=>a[e]);return{raw:a,valuesInOrder:s,keysInOrder:o}});function C(e=[]){const t=e.map(e=>e.name);return T(t)}const x=a.createParamDecorator((e,t)=>{const r={...t.switchToHttp().getRequest().query??{}};if(void 0!==r.limit){const e=Number(r.limit);Number.isNaN(e)||(r.limit=e)}if(void 0!==r.offset){const e=Number(r.offset);Number.isNaN(e)||(r.offset=e)}if(void 0!==r.bookmark){const e=Number(r.bookmark);r.bookmark=Number.isNaN(e)?r.bookmark:e}return r});function M(e){const t={GET:a.Get,POST:a.Post,PUT:a.Put,PATCH:a.Patch,DELETE:a.Delete}[e];if(!t)throw Error(`Unsupported HTTP verb "${e}". No NestJS decorator mapping was found.`);return t}const I="DecafModuleOptions",F="DecafAdapter",k="DecafRoute",q=Symbol("DecafHandlers"),$=Symbol("DecafAdapterForOptions"),j=Symbol("AUTH_HANDLER"),N="auth:meta",L=Symbol("decaf:context");function K(t){const r="string"==typeof t?t:t.name;return a.applyDecorators(n.ApiBearerAuth(),a.SetMetadata(N,r),a.UseInterceptors(e.AuthInterceptor))}e.AuthInterceptor=class{constructor(e,t){this.reflector=e,this.authHandler=t}async intercept(e,t){const r=this.reflector.get(N,e.getHandler())??this.reflector.get(N,e.getClass());return r&&this.authHandler&&await this.authHandler.authorize(e,r),t.handle()}},e.AuthInterceptor=p.__decorate([a.Injectable(),p.__param(1,a.Optional()),p.__param(1,a.Inject(j)),p.__metadata("design:paramtypes",[d.Reflector,Object])],e.AuthInterceptor);class B{parseRequest(e){const t=e.headers.authorization?.split(" ")[1];return t}async authorize(e,r){const a=e.switchToHttp().getRequest(),i=this.parseRequest(a);if(!i)throw new s.AuthorizationError("Unauthenticated");if(!t.Metadata.get(o.Model.get(r),s.PersistenceKeys.AUTH_ROLE).includes(i))throw new s.AuthorizationError("Missing role: "+i)}}e.DecafRequestContext=class{constructor(e){this.req=e}get request(){return this.req}put(e){let t;try{t=this.ctx.get("overrides")}catch(e){t={}}this._ctx=this.ctx.accumulate({overrides:Object.assign(t,e)})}applyCtx(e){this._ctx=e}get ctx(){if(!this._ctx)throw new c.InternalError("Context not initialized for request");return this._ctx}},e.DecafRequestContext=p.__decorate([a.Injectable({scope:a.Scope.REQUEST}),p.__param(0,a.Inject(d.REQUEST)),p.__metadata("design:paramtypes",[Request])],e.DecafRequestContext),e.DecafHandlerExecutor=class{constructor(e,t){this.handlers=e,this.context=t}async exec(e,t){for(const r of this.handlers)await r.handle(this.context,e,t)}},e.DecafHandlerExecutor=p.__decorate([a.Injectable({scope:a.Scope.REQUEST}),p.__param(0,a.Inject(q)),p.__metadata("design:paramtypes",[Array,e.DecafRequestContext])],e.DecafHandlerExecutor);const U=e=>({name:e,description:e+" parameter for the query",required:!0,type:String});function H(e,t,r,o=!1){const i=M(r),c=(e=>e.split("/").filter(e=>e.startsWith(":")).map(e=>e.slice(1)))(t).map(U),p=[];return"GET"===r&&o&&p.push(n.ApiQuery({name:"direction",required:!1,enum:s.OrderDirection,description:"the sort order when applicable"}),n.ApiQuery({name:"limit",required:!1,description:"limit or page size when applicable"}),n.ApiQuery({name:"offset",required:!1,description:"offset or bookmark when applicable"})),{method:[i(t),...c.map(n.ApiParam),...p,n.ApiOperation({summary:`Retrieve records using according to "${e}".`}),n.ApiOkResponse({description:"Result successfully retrieved."}),n.ApiNoContentResponse({description:"No content returned by the method."})],params:[C(c),a.Query()]}}function G(e,t,r,a){const o=e?.prototype??e;a.method.forEach(e=>e(o,t,r)),a.params?.forEach((e,r)=>e(o,t,r))}function Q(e,t,...r){if(e instanceof s.ModelService)return"function"==typeof e[t]?e[t](...r):e.statement(t,...r);if("function"==typeof e[t])return e[t](...r);throw Error(`Persistence method "${t}" not found on ${e?.constructor?.name}`)}function z(e){return async function(t,r){const a=this.log.for(e);try{a.debug(`Invoking persistence method "${e}" given parameters: ${JSON.stringify(t.valuesInOrder)}`);const{direction:o,limit:s,offset:i}=r;return await Q(this.persistence(),e,...t.valuesInOrder,o,s,i)}catch(t){throw a.error(`Custom query "${e}" failed`,t),t}}}function V(e,t,r){return Object.defineProperty(e.prototype||e,t,{value:r,writable:!1}),Object.getOwnPropertyDescriptor(e.prototype||e,t)}class Y extends s.Service{constructor(e,t){super(t),this.clientContext=e}logCtx(e,t,r=!1,a){const o=this.clientContext.ctx;return e=e.filter(e=>void 0!==e),s.ContextualLoggedClass.logCtx.call(this,t,a||{},r,...e,o)}}class X extends Y{persistence(e){if(!this._persistence)try{this._persistence=s.ModelService.getService(this.class)}catch(e){try{this._persistence=s.Service.get(this.class)}catch(e){this._persistence=s.Repository.forModel(this.class)}}const t=this.clientContext.request[$]||{};return e&&this.clientContext.put(t),e?this._persistence instanceof s.Repository?this._persistence.override(t):this._persistence.for(t):this._persistence}constructor(e,t){super(e,t)}logCtx(e,t,r=!1){const a=this.clientContext.ctx;let o={};try{o=a.get("overrides")}catch(e){}const i=this.persistence(a);let n,c;return i instanceof s.ModelService?n=i.repo.adapter:i instanceof s.Repository?n=i.adapter:i.context&&(n=i),r?n.logCtx(e,t,!0,o).then(e=>e):(c=n.logCtx(e,t,!1,o),c)}}const J=new Map;function W(e,r){if(!s.TransactionOperationKeys.includes(e))return r;const a=(e=>(J.has(e)||J.set(e,new WeakMap),J.get(e)))(e),i=a.get(r);if(i)return i;const n=[c.OperationKeys.UPDATE,c.BulkCrudOperationKeys.UPDATE_ALL].includes(e);class p{}a.set(r,p),Object.defineProperty(p,"name",{value:`${l.toPascalCase(r.name)}${l.toPascalCase(e)}DTO`});const d=(()=>{try{return o.Model.pk(r)}catch{return}})(),u=!!d&&(!!o.Model.pkProps(r)?.generated||te(r,d)),m=Array.from(new Set(t.Metadata.properties(r)||[])),h=new Set(o.Model.relations(r)||[]),y=m.filter(e=>!h.has(e)&&(e===d?n||!u:!te(r,e)));for(const e of y){const t=re(r,e),a=!!t?.[o.ValidationKeys.REQUIRED],s=ae(r,e)??Reflect.getMetadata("design:type",r.prototype,e),i={required:a};s&&(i.type=s),O(i)(p.prototype,e);const n=Reflect.getMetadata("design:type",r.prototype,e)??s;void 0!==n&&Reflect.defineMetadata("design:type",n,p.prototype,e),Object.defineProperty(p.prototype,e,{value:void 0,writable:!0,enumerable:!0,configurable:!0})}for(const a of h){const s=t.Metadata.relations(r,a);if(!s)throw new c.InternalError(`Metadata for relation ${a} not found`);let i=s.class;if("function"!=typeof i||i.name||(i=i()),!i||"function"!=typeof i)throw new c.InternalError(`Type for relation ${a} not found`);if(!o.Model.get(i.name))continue;const d=t.Metadata.validationFor(r,a),l=!!d?.[o.ValidationKeys.LIST],u=!!d?.[o.ValidationKeys.REQUIRED],m=W(e,i);n?ee(p,a,i,m,l,u):Z(p,a,m,l,u)}return p}function Z(e,t,r,a,o){O({type:r,required:o,isArray:a})(e.prototype,t),Reflect.defineMetadata("design:type",a?Array:r,e.prototype,t),Object.defineProperty(e.prototype,t,{value:void 0,writable:!0,enumerable:!0,configurable:!0})}function ee(e,t,r,a,s,i){const n=Reflect.getMetadata(_.API_EXTRA_MODELS,e)||[];n.includes(a)||Reflect.defineMetadata(_.API_EXTRA_MODELS,[...n,a],e);const c="#/components/schemas/"+a.name,p=(e=>{try{const t=o.Model.pkProps(e),r=t?.type;return r===Number||r===BigInt?"integer":"string"}catch{return"string"}})(r),d=[{$ref:c},{type:p}];O(s?{type:"array",required:i,oneOf:d}:{type:Object,required:i,oneOf:d})(e.prototype,t),Reflect.defineMetadata("design:type",s?Array:Object,e.prototype,t),Object.defineProperty(e.prototype,t,{value:void 0,writable:!0,enumerable:!0,configurable:!0})}function te(e,t){let r=e;for(;r&&r!==Object&&r!==Function;){if(o.Model.generated(r,t))return!0;r=Object.getPrototypeOf(r)}return!1}function re(e,r){let a=e;for(;a&&a!==Object&&a!==Function;){const e=t.Metadata.validationFor(a,r);if(e)return e;a=Object.getPrototypeOf(a)}}function ae(e,r){let a=e;for(;a&&a!==Object&&a!==Function;){const e=t.Metadata.type(a,r);if(e)return e;a=Object.getPrototypeOf(a)}}s.Adapter.transformerFor=(e=>{const r="string"==typeof e?e:e.alias;return t.Metadata.innerGet(Symbol.for("transformers"),r)}).bind(s.Adapter),s.Adapter.flavoursToTransform=(()=>{const e=t.Metadata.innerGet(Symbol.for("transformers"));if(e)return Object.keys(e)}).bind(s.Adapter),s.Context.prototype.toResponse=function(e){const t=this.pending();return t&&e.header("x-pending-task",JSON.stringify(t)),e};class oe{static{this.log=l.Logging.for(oe.name)}static getPersistence(e){try{return s.ModelService.getService(e)}catch(t){return s.Repository.forModel(e)}}static createQueryRoutesFromRepository(e,r=s.PersistenceKeys.QUERY){const a=oe.log.for(oe.createQueryRoutesFromRepository),o=e instanceof s.ModelService?e.repo:e,i=o.class,n=t.Metadata.get(o.constructor,t.Metadata.key(s.PersistenceKeys.QUERY))??{},c=t.Metadata.get(e.constructor,t.Metadata.key(k))??{};class p extends X{get class(){throw Error("Method not implemented.")}constructor(e,t){super(e,t)}}for(const[e,t]of Object.entries(c)){const r=[t.path.replace(/^\/+|\/+$/g,"")].filter(e=>e&&e.trim()).join("/"),o=z(e);if(!o){const t=`Invalid or missing handler for model ${i.name} on decorated method ${e}`;throw a.error(t),Error(t)}const s=V(p,e,o);s&&G(p,e,s,H(e,r,t.httpMethod))}for(const[e,t]of Object.entries(n)){const a=[r,e,...(t.fields??[]).map(e=>":"+e)].filter(e=>e&&e.trim()).join("/"),o=V(p,e,z(e));o&&G(p,e,o,H(e,a,"GET",!0))}return p}static create(t){const r=oe.log.for(oe.create),i=o.Model.tableName(t),d=l.toKebabCase(i),u=t.name,m=oe.getPersistence(t),{description:h,getPK:y,apiProperties:f,path:g}=oe.getRouteParametersFromModel(t);r.debug("Creating controller for model: "+u);const _=oe.createQueryRoutesFromRepository(m);let A=class extends _{static get class(){return t}get class(){return t}constructor(e){super(e),this.pk=o.Model.pk(t),r.info(`Registering dynamic controller for model: ${this.class.name} route: /${d}`)}async listBy(e,t){const{ctx:r}=(await this.logCtx([],s.PreparedStatementKeys.LIST_BY,!0)).for(this.listBy);return this.persistence(r).listBy(e,t.direction,r)}async paginateBy(e,t){const{ctx:r}=(await this.logCtx([],s.PreparedStatementKeys.PAGE_BY,!0)).for(this.paginateBy);return this.persistence(r).paginateBy(e,t.direction,t,r)}async find(e,t){const{ctx:r}=(await this.logCtx([],s.PreparedStatementKeys.FIND,!0)).for(this.find),a=t.direction??s.OrderDirection.ASC;return Q(this.persistence(r),this.find.name,e,a,r)}async page(e,t){const{ctx:r}=(await this.logCtx([],s.PreparedStatementKeys.PAGE,!0)).for(this.page),{direction:a=s.OrderDirection.ASC,limit:o,offset:i,bookmark:n}=t,c={offset:i??1,limit:o??10,bookmark:n};return Q(this.persistence(r),this.page.name,e,a,c,r)}async findOneBy(e,t){const{ctx:r}=(await this.logCtx([],s.PreparedStatementKeys.FIND_ONE_BY,!0)).for(this.findOneBy);return this.persistence(r).findOneBy(e,t,r)}async findBy(e,t,r){const{ctx:a}=(await this.logCtx([],s.PreparedStatementKeys.FIND_BY,!0)).for(this.findBy);return this.persistence(a).for(a.toOverrides()).findBy(e,t,a)}async statement(e,t,r){const{ctx:a}=(await this.logCtx([],s.PersistenceKeys.STATEMENT,!0)).for(this.statement),{direction:o,offset:i,limit:n,bookmark:c}=r,p=(t=t.map(e=>("string"==typeof e?parseInt(e):e)||e)).length>1?t[1]:void 0,d=o??p;switch(d&&t.length>1&&(t[1]=d),e){case s.PreparedStatementKeys.FIND:case s.PreparedStatementKeys.FIND_BY:break;case s.PreparedStatementKeys.LIST_BY:t.push(o);break;case s.PreparedStatementKeys.PAGE:case s.PreparedStatementKeys.PAGE_BY:t=[t[0],d,{limit:n,offset:i,bookmark:c}];case s.PreparedStatementKeys.FIND_ONE_BY:case s.PreparedStatementKeys.COUNT_OF:case s.PreparedStatementKeys.MAX_OF:case s.PreparedStatementKeys.MIN_OF:case s.PreparedStatementKeys.AVG_OF:case s.PreparedStatementKeys.SUM_OF:case s.PreparedStatementKeys.DISTINCT_OF:case s.PreparedStatementKeys.GROUP_OF:}return this.persistence(a).statement(e,...t,a)}async createAll(e,r){const{ctx:a,log:o}=(await this.logCtx([],c.BulkCrudOperationKeys.CREATE_ALL,!0)).for(this.createAll);let s;o.verbose("creating new "+u);try{s=await this.persistence(a).createAll(e.map(e=>new t(e)),a)}catch(e){throw o.error("Failed to create new "+u,e),e}return o.info(`created new ${u} with id ${s[this.pk]}`),a.toResponse(r),s}async create(e,t){const{ctx:r,log:a}=(await this.logCtx([],c.OperationKeys.CREATE,!0)).for(this.create);let o;a.verbose("creating new "+u);try{const t=this.persistence(r);o=await t.create(e,r)}catch(e){throw a.error("Failed to create new "+u,e),e}return a.info(`created new ${u} with id ${o[this.pk]}`),r.toResponse(t),o}async readAll(e){const{ctx:t,log:r}=(await this.logCtx([],c.BulkCrudOperationKeys.READ_ALL,!0)).for(this.readAll);let a;try{r.debug(`reading ${e.length} ${u}: ${e}`);const o=this.persistence(t);a=await o.readAll(e,t)}catch(t){throw r.error(`Failed to ${u} with id ${e}`,t),t}return r.info(`read ${a.length} ${u}`),a}async read(e){const{ctx:t,log:r}=(await this.logCtx([],c.OperationKeys.READ,!0)).for(this.read),a=y(...e.valuesInOrder);if(void 0===a)throw new c.ValidationError(`No ${this.pk} provided`);let o;try{r.debug(`reading ${u} with ${this.pk} ${a}`);const e=this.persistence(t);o=await e.read(a,t)}catch(e){throw r.error(`Failed to read ${u} with id ${a}`,e),e}return r.info(`read ${u} with id ${o[this.pk]}`),o}async updateAll(e,t){const{ctx:r,log:a}=(await this.logCtx([],c.BulkCrudOperationKeys.UPDATE_ALL,!0)).for(this.updateAll);let o;try{a.info(`updating ${e.length} ${u}`),o=await this.persistence(r).updateAll(e,r)}catch(e){throw a.error(e),e}return r.toResponse(t),o}async update(e,r,a){const{ctx:o,log:s}=(await this.logCtx([],c.OperationKeys.UPDATE,!0)).for(this.update),i=y(...e.valuesInOrder);if(void 0===i)throw new c.ValidationError(`No ${this.pk} provided`);let n;try{s.info(`updating ${u} with ${this.pk} ${i}`);const e=JSON.parse(JSON.stringify(r)),a=this.persistence(o);n=await a.update(new t({...e,[this.pk]:i}),o)}catch(e){throw s.error(e),e}return o.toResponse(a),n}async deleteAll(e,t){const{ctx:r,log:a}=(await this.logCtx([],c.BulkCrudOperationKeys.DELETE_ALL,!0)).for(this.deleteAll);let o;try{a.debug(`deleting ${e.length} ${u}: ${e}`),o=await this.persistence(r).deleteAll(e,r)}catch(t){throw a.error(`Failed to delete ${u} with id ${e}`,t),t}return a.info(`deleted ${o.length} ${u}`),r.toResponse(t),o}async delete(e,t){const{ctx:r,log:a}=(await this.logCtx([],c.OperationKeys.DELETE,!0)).for(this.delete),o=y(...e.valuesInOrder);if(void 0===o)throw new c.ValidationError(`No ${this.pk} provided`);let s;try{a.debug(`deleting ${u} with ${this.pk} ${o}`),s=await this.persistence(r).delete(o,r)}catch(e){throw a.error(`Failed to delete ${u} with id ${o}`,e),e}return a.info(`deleted ${u} with id ${o}`),r.toResponse(t),s}};return p.__decorate([w(t,"GET","listBy/:key"),n.ApiOperation({summary:`Retrieve ${u} records by query.`}),n.ApiParam({name:"key",description:"the model key to sort by"}),n.ApiQuery({name:"direction",required:!0,enum:s.OrderDirection}),n.ApiOkResponse({description:u+" listed successfully."}),p.__param(0,a.Param("key")),p.__param(1,x()),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"listBy",null),p.__decorate([w(t,"GET","paginateBy/:key/:page"),n.ApiOperation({summary:`Retrieve ${u} records by query.`}),n.ApiParam({name:"key",description:"the model key to sort by"}),n.ApiParam({name:"page",description:"the page to retrieve or the bookmark"}),n.ApiQuery({name:"direction",required:!0,enum:s.OrderDirection,description:"the sort order"}),n.ApiQuery({name:"limit",required:!0,description:"the page size"}),n.ApiQuery({name:"offset",description:"the bookmark when necessary"}),n.ApiOkResponse({description:u+" listed paginated."}),p.__param(0,a.Param("key")),p.__param(1,x()),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"paginateBy",null),p.__decorate([w(t,"GET","find/:value"),n.ApiOperation({summary:`Find ${u} records using the default query attributes.`}),n.ApiParam({name:"value",description:"The string to match against the default query attributes"}),n.ApiQuery({name:"direction",required:!1,enum:s.OrderDirection,description:"the sort order for the matching results"}),n.ApiOkResponse({description:u+" records matching the provided prefix."}),p.__param(0,a.Param("value")),p.__param(1,x()),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"find",null),p.__decorate([w(t,"GET","page/:value"),n.ApiOperation({summary:`Page ${u} records using the default query attributes.`}),n.ApiParam({name:"value",description:"The string to match against the default query attributes"}),n.ApiQuery({name:"direction",required:!1,enum:s.OrderDirection,description:"the sort order for the paged results"}),n.ApiQuery({name:"limit",required:!1,description:"page size"}),n.ApiQuery({name:"offset",required:!1,description:"page number"}),n.ApiQuery({name:"bookmark",required:!1,description:"bookmark for cursor pagination"}),n.ApiOkResponse({description:u+" records paged by the provided prefix."}),p.__param(0,a.Param("value")),p.__param(1,x()),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"page",null),p.__decorate([w(t,"GET","findOneBy/:key"),n.ApiOperation({summary:`Retrieve ${u} records by query.`}),n.ApiParam({name:"key",description:"the model key to sort by"}),n.ApiOkResponse({description:u+" listed found."}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),p.__param(0,a.Param("key")),p.__param(1,a.Param("value")),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"findOneBy",null),p.__decorate([w(t,"GET","findBy/:key/:value"),n.ApiOperation({summary:`Retrieve ${u} records by query.`}),n.ApiParam({name:"key",description:"the model key to compare"}),n.ApiParam({name:"value",description:"the value to match"}),n.ApiQuery({name:"direction",required:!0,enum:s.OrderDirection,description:"the sort order when applicable"}),n.ApiOkResponse({description:u+" listed found."}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),p.__param(0,a.Param("key")),p.__param(1,a.Param("value")),p.__param(2,x()),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String,Object,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"findBy",null),p.__decorate([w(t,"GET","statement/:method/*args"),n.ApiOperation({summary:`Executes a prepared statement on ${u}.`}),n.ApiParam({name:"method",description:"the prepared statement to execute"}),n.ApiParam({name:"args",description:"concatenated list of arguments the prepared statement can accept"}),n.ApiQuery({name:"direction",required:!0,enum:s.OrderDirection,description:"the sort order when applicable"}),n.ApiQuery({name:"limit",required:!0,description:"limit or page size when applicable"}),n.ApiQuery({name:"offset",required:!0,description:"offset or bookmark when applicable"}),n.ApiOkResponse({description:u+" listed found."}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),p.__param(0,a.Param("method")),p.__param(1,a.Param("args")),p.__param(2,x()),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String,Array,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"statement",null),p.__decorate([w(t,"POST","bulk"),n.ApiOperation({summary:`Create a new ${u}.`}),n.ApiBody({description:"Payload for "+u,schema:{type:"array",items:{$ref:n.getSchemaPath(t)}}}),n.ApiCreatedResponse({description:u+" created successfully.",schema:{type:"array",items:{$ref:n.getSchemaPath(t)}}}),n.ApiBadRequestResponse({description:"Payload validation failed."}),n.ApiUnprocessableEntityResponse({description:"Repository rejected the provided payload."}),p.__param(0,S()),p.__param(1,a.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Array,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"createAll",null),p.__decorate([w(t,"POST"),n.ApiOperation({summary:`Create a new ${u}.`}),n.ApiBody({description:"Payload for "+u,type:W(c.OperationKeys.CREATE,t)}),n.ApiCreatedResponse({description:u+" created successfully.",schema:{$ref:n.getSchemaPath(t)}}),n.ApiBadRequestResponse({description:"Payload validation failed."}),n.ApiUnprocessableEntityResponse({description:"Repository rejected the provided payload."}),p.__param(0,S()),p.__param(1,a.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Object,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"create",null),p.__decorate([w(t,"GET","bulk"),n.ApiOperation({summary:`Retrieve a ${u} record by id.`}),n.ApiQuery({name:"ids",required:!0,type:"array"}),n.ApiOkResponse({description:u+" retrieved successfully.",schema:{type:"array",items:{$ref:n.getSchemaPath(t)}}}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),p.__param(0,a.Query("ids")),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Array]),p.__metadata("design:returntype",Promise)],A.prototype,"readAll",null),p.__decorate([w(t,"GET",g),D(f),n.ApiOperation({summary:`Retrieve a ${u} record by id.`}),n.ApiOkResponse({description:u+" retrieved successfully.",schema:{$ref:n.getSchemaPath(t)}}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),p.__param(0,C(f)),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Object]),p.__metadata("design:returntype",Promise)],A.prototype,"read",null),p.__decorate([w(t,"PUT","bulk"),D(f),n.ApiOperation({summary:`Replace an existing ${u} record with a new payload.`}),n.ApiBody({description:"Payload for replace a existing record of "+u,schema:{type:"array",$ref:n.getSchemaPath(W(c.OperationKeys.UPDATE,t))}}),n.ApiOkResponse({description:u+" updated successfully.",schema:{type:"array",items:{$ref:n.getSchemaPath(t)}}}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),n.ApiBadRequestResponse({description:"Payload validation failed."}),p.__param(0,S()),p.__param(1,a.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Array,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"updateAll",null),p.__decorate([w(t,"PUT",g),D(f),n.ApiOperation({summary:`Replace an existing ${u} record with a new payload.`}),n.ApiBody({description:"Payload for replace a existing record of "+u,type:W(c.OperationKeys.UPDATE,t)}),n.ApiOkResponse({description:u+" updated successfully.",schema:{$ref:n.getSchemaPath(t)}}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),n.ApiBadRequestResponse({description:"Payload validation failed."}),p.__param(0,C(f)),p.__param(1,S()),p.__param(2,a.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Object,Object,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"update",null),p.__decorate([w(t,"DELETE","bulk"),D(f),n.ApiOperation({summary:`Retrieve a ${u} record by id.`}),n.ApiQuery({name:"ids",required:!0,type:"array"}),n.ApiOkResponse({description:u+" deleted successfully.",schema:{type:"array",items:{$ref:n.getSchemaPath(t)}}}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),p.__param(0,a.Query("ids")),p.__param(1,a.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Array,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"deleteAll",null),p.__decorate([w(t,"DELETE",g),D(f),n.ApiOperation({summary:`Delete a ${u} record by id.`}),n.ApiOkResponse({description:u+" deleted successfully.",schema:{$ref:n.getSchemaPath(t)}}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),p.__param(0,C(f)),p.__param(1,a.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Object,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"delete",null),A=p.__decorate([a.Controller(d),n.ApiTags(u),n.ApiExtraModels(t),K(t),p.__metadata("design:paramtypes",[e.DecafRequestContext])],A),A}static getRouteParametersFromModel(e){const r=o.Model.pk(e),a=t.Metadata.get(e,t.Metadata.key(c.DBKeys.COMPOSED,r)),s=a?.args??[],i=Array.isArray(s)&&s.length>0?Array.from(new Set([...s])):Array.from(new Set([r])),n=t.Metadata.description(e);return{path:":"+i.join("/:"),description:n,apiProperties:i.map(r=>({name:r,description:t.Metadata.description(e,r),required:!0,type:String})),getPK:(...e)=>a?.separator?e.join(a.separator):e.join("")}}}e.DecafRequestHandlerInterceptor=class{constructor(e,t){this.requestContext=e,this.executor=t}async contextualize(e){const t={headers:e.headers,overrides:{}},r=s.Adapter.flavoursToTransform();if(r)for(const a of r)try{const r=s.Adapter.transformerFor(a),o=await r.from(e);Object.assign(t.overrides,o)}catch(e){throw new c.InternalError("Failed to contextualize request: "+e)}return(new s.Context).accumulate(Object.assign({},s.DefaultAdapterFlags,{logger:l.Logging.get(),timestamp:new Date},t))}async intercept(e,t){const r=e.switchToHttp().getRequest(),a=e.switchToHttp().getResponse(),o=await this.contextualize(r);return this.requestContext.applyCtx(o),await this.executor.exec(r,a),t.handle()}},e.DecafRequestHandlerInterceptor=p.__decorate([a.Injectable({scope:a.Scope.REQUEST}),p.__metadata("design:paramtypes",[e.DecafRequestContext,e.DecafHandlerExecutor])],e.DecafRequestHandlerInterceptor);class se{}function ie(e){return r=>(t.Metadata.set("transformers",e,r),"function"==typeof r?t.metadata("transformers",e)(r):r)}function ne(t){var r;let o=class{static{r=this}static{this.log=l.Logging.for(r.name).for(t)}static createModelServices(e){return e.map(e=>({provide:e.name+"Service",useFactory:()=>s.ModelService.forModel(e)}))}static forRoot(t,a={}){const o=this.log.for(this.forRoot);o.info("Generating controllers for flavour...");const i=s.Adapter.models(t);let n=[];a.autoServices&&(o.info("Auto-services enabled. Initializing service generation."),n=this.createModelServices(i),o.info(`Auto-services completed. ${n.length} services initialized.`));const c=i.map(oe.create);return o.info(`Generated ${c.length} controllers`),{module:r,controllers:c,providers:[{provide:q,useFactory:()=>a.handlers?.map(e=>(o.info("Registered request handler: "+e.name),new e))??[]},e.DecafRequestContext,e.DecafHandlerExecutor,{provide:d.APP_INTERCEPTOR,useClass:e.DecafRequestHandlerInterceptor},...n]}}};return o=r=p.__decorate([a.Module({})],o),Object.assign(o,"name",{value:"DecafModule"+t}),o}t.Decoration.for(r.InjectablesKeys.INJECTABLE).extend({decorator:(e,t)=>(t=t||("object"==typeof e?Object.assign(e,r.DefaultInjectablesConfig):r.DefaultInjectablesConfig),a.Injectable({scope:t.singleton?a.Scope.DEFAULT:a.Scope.REQUEST,durable:!t.singleton||void 0}))}).apply(),t.Decoration.for(r.InjectablesKeys.INJECT).extend({decorator:(e,t)=>(t,r,o)=>a.Inject(e||t)(t,r,o)}).apply(),t.Decoration.for(o.ValidationKeys.REQUIRED).extend(O({required:!0})).apply(),t.Decoration.for(o.ValidationKeys.MAX).extend({decorator:e=>O({maximum:e,required:!1})}).apply(),t.Decoration.for(o.ValidationKeys.MIN).extend({decorator:e=>O({minimum:e,required:!1})}).apply(),t.Decoration.for(o.ValidationKeys.MAX_LENGTH).extend({decorator:e=>O({maxLength:e,required:!1})}).apply(),t.Decoration.for(o.ValidationKeys.MIN_LENGTH).extend({decorator:e=>O({minLength:e,required:!1})}).apply(),t.Decoration.for(o.ValidationKeys.TYPE).extend({decorator:e=>(t,r)=>("function"!=typeof(e=Array.isArray(e)?e[0]:e)||e.name||(e=e()),O({type:e,required:!1})(t,r))}).apply(),t.Decoration.for(o.ValidationKeys.DATE).extend({decorator:e=>O({type:String,format:"date-time",required:!1})}).apply(),t.Decoration.for(o.ValidationKeys.ENUM).extend({decorator:e=>O({enum:Array.isArray(e)?e:Object.values(e),required:!1})}).apply(),t.Decoration.for(o.ValidationKeys.PATTERN).extend({decorator:e=>O({pattern:"string"==typeof e?e:e.source,required:!1})}).apply(),t.Decoration.for(s.PersistenceKeys.COLUMN).extend({decorator:e=>O({name:e,required:!1})}).apply(),t.Decoration.for(t.DecorationKeys.DESCRIPTION).extend({decorator:e=>O({description:e,required:!1})}).apply(),t.Decoration.for(s.PersistenceKeys.AUTH).extend({decorator:K}).apply();class ce extends s.ForbiddenError{constructor(e){super(e,ce.name)}}e.DecafExceptionFilter=class{catch(e,t){const r=t.switchToHttp(),o=r.getResponse(),s=r.getRequest(),i="production"===l.LoggedEnvironment.env;let n;e instanceof a.NotFoundException?n=(e=new a.NotAcceptableException(e.message)).getStatus():e instanceof c.BaseError||(e=new c.InternalError(e.message)),o.status(e.code||n).json({status:e.code||n,error:i?e.name:e.message,timestamp:(new Date).toISOString(),path:s.url,method:s.method})}},e.DecafExceptionFilter=p.__decorate([a.Catch()],e.DecafExceptionFilter);const pe={path:"docs",auth:{type:"http",scheme:"bearer",bearerFormat:"JWT",name:"Authorization",description:"Enter JWT token",in:"header"},topbarBgColor:"#000000"};class de{constructor(e){this.options={...e}}customCSS(){let e="";return this.options.topbarIconPath&&(e+=`.topbar-wrapper { content: url('data:image/png;base64,${this.b64(this.options.topbarIconPath)}'); width: 200px; height: auto; }\n`),e+`\n .topbar-wrapper svg { visibility: hidden; }\n .swagger-ui .topbar { background-color: ${this.options.topbarBgColor||pe.topbarBgColor}; }\n `}getCustomOptions(){const e={};return this.options.faviconPath&&(e.customfavIcon=this.b64(this.options.faviconPath,!0)),{customSiteTitle:this.options.title,...e,customCss:this.customCSS(),swaggerOptions:{persistAuthorization:this.options.persistAuthorization},jsonDocumentUrl:this.options.path?this.options.path+"/spec.json":void 0,yamlDocumentUrl:this.options.path?this.options.path+"/spec.yaml":void 0}}b64(e,t=!1){const r=f.join(this.options.assetsPath||"",e),a=u.readFileSync(r,{encoding:"base64"});return t?"data:image/png;base64,"+a:a}}class le{constructor(e,t){this.app=e,this.options=t}createDocument(){const e=this.options.path?this.options.description+""+`<br><br><a href="${this.options.path}/spec.json">OpenAPI JSON Spec</a> | `+`<a href="${this.options.path}/spec.yaml">OpenAPI YAML Spec</a>`:this.options.description,t=(new n.DocumentBuilder).setTitle(this.options.title).setDescription(e).setVersion(this.options.version||"0.0.1").addBearerAuth(this.options.auth||pe.auth).build();return n.SwaggerModule.createDocument(this.app,t,{extraModels:this.options.extraModels||[]})}setupSwagger(){const e=this.createDocument(),t=new de({title:this.options.title,path:this.options.path||pe.path,persistAuthorization:this.options.persistAuthorization??!0,assetsPath:this.options.assetsPath,faviconPath:this.options.faviconFilePath,topbarIconPath:this.options.topbarIconFilePath,topbarBgColor:this.options.topbarBgColor});n.SwaggerModule.setup(this.options.path||pe.path,this.app,e,{...t.getCustomOptions()})}}var ue;let me=class{static{ue=this}static get persistence(){if(!this._persistence)throw new c.InternalError("Persistence service not initialized");return this._persistence}static get log(){return this._logger||(this._logger=l.Logging.for(ue)),this._logger}constructor(e,t){this.options=e,this.moduleRef=t}static async bootPersistence(e){const t=this.log.for(this.bootPersistence);if(!this._persistence){const r=e.conf.map(([e,t,...r])=>r.pop()?[e,t,...r]:[e,t]);this._persistence=new s.PersistenceService,await this._persistence.boot(r);const a=this._persistence.client;for(let t=0;t<a.length;t++){const r=e.conf[t];let[,,o]=r;if(!o){const e=s.Adapter.transformerFor(a[t].flavour);if(!e)throw new c.InternalError(`No transformer found for flavour ${a[t].flavour}. you should either @requestToContextTransformer or provide a transformer in the config`);o=e instanceof se?e:new e}ie(a[t].flavour)(o)}t.info("persistence layer created successfully!")}return this.persistence.client}static forRoot(e){const t={provide:I,useValue:e},r={useFactory:async e=>ue.bootPersistence(e),provide:F,durable:!0,scope:a.Scope.DEFAULT,inject:[I]};return{module:ue,providers:[r,t],exports:[r]}}async onApplicationShutdown(){const e=ue.log.for(this.onApplicationShutdown),t=this.moduleRef.get(F);for(const r of t)try{r&&(e.info("Shutting down "+r.toString()),await r.shutdown())}catch(t){e.error("Failed to shutdown application",t)}}};me=ue=p.__decorate([a.Global(),a.Module({}),p.__param(0,a.Inject(I)),p.__metadata("design:paramtypes",[Object,d.ModuleRef])],me);const he=Symbol("LISTENING_ADAPTERS_FLAVOURS");var ye,fe,ge;e.EventsController=ye=class extends Y{constructor(e,t){super(e,ye.name),this.adapters=t.map(e=>s.Adapter.get(e))}listen(){const e=l.Logging.for(ye.name);return new h.Observable(t=>{const r=new class{refresh(...e){return Promise.resolve().then(()=>{const r=(e=>{const[t,r,a,o]=e;return[t?.name??t,r,a,Array.isArray(o)?o.map(e=>e.serialize()):o?.serialize()]})(e);t.next({data:r})})}};try{for(const e of this.adapters)e.observe(r)}catch(e){t.error("Failed to observe event: "+(e.message||e))}return()=>{try{for(const e of this.adapters)e.unObserve(r)}catch(t){e.error(t)}}})}listenForModel(e){const t=l.Logging.for(ye.name);return new h.Observable(e=>{const r=new class{refresh(...t){return Promise.resolve().then(()=>{e.next({data:t})})}};try{for(const e of this.adapters)e.observe(r)}catch(t){e.error("Failed to observe event: "+(t.message||t))}return()=>{try{for(const e of this.adapters)e.unObserve(r)}catch(e){t.error(e)}}})}},p.__decorate([a.Sse(),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[]),p.__metadata("design:returntype",h.Observable)],e.EventsController.prototype,"listen",null),p.__decorate([a.Sse("/:model"),p.__param(0,a.Query("model")),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String]),p.__metadata("design:returntype",h.Observable)],e.EventsController.prototype,"listenForModel",null),e.EventsController=ye=p.__decorate([a.Controller(),p.__param(1,a.Inject(he)),p.__metadata("design:paramtypes",[e.DecafRequestContext,Array])],e.EventsController),e.DecafStreamModule=fe=class{static forFlavours(t,r="events"){return{module:fe,controllers:[e.EventsController],imports:[d.RouterModule.register([{path:r.replace(/^\//,""),module:fe}])],providers:[e.DecafRequestContext,{provide:he,useValue:t??[]}]}}},e.DecafStreamModule=fe=p.__decorate([a.Module({})],e.DecafStreamModule),e.DecafModule=ge=class{static async forRootAsync(t){const{autoControllers:r,autoServices:a,handlers:o}=t,s=(await me.bootPersistence(t)).map(e=>e.flavour),i=[me.forRoot(t)];return r&&s.forEach(e=>{i.push(ne(e).forRoot(e,{autoServices:a,handlers:o}))}),t.observerOptions?.enableObserverEvents&&i.push(e.DecafStreamModule.forFlavours(s)),{module:ge,imports:i}}},e.DecafModule=ge=p.__decorate([a.Module({})],e.DecafModule);const _e="##VERSION##",Ae="##PACKAGE##";t.Metadata.registerLibrary(Ae,_e),e.AUTH_HANDLER=j,e.AUTH_META_KEY=N,e.ApiOperationFromModel=w,e.ApiParamsFromModel=D,e.ApiProperty=O,e.Auth=K,e.BulkApiOperationFromModel=(e,r,o)=>{const s={GET:[c.BulkCrudOperationKeys.READ_ALL,a.Get],POST:[c.BulkCrudOperationKeys.CREATE_ALL,a.Post],PUT:[c.BulkCrudOperationKeys.UPDATE_ALL,a.Put],PATCH:[c.BulkCrudOperationKeys.UPDATE_ALL,a.Patch],DELETE:[c.BulkCrudOperationKeys.DELETE_ALL,a.Delete]},[i,p]=s[r];return v(e,i)?t.apply(n.ApiExcludeEndpoint()):t.apply(p(o))},e.CorsError=ce,e.DECAF_ADAPTER_ID=F,e.DECAF_ADAPTER_OPTIONS=$,e.DECAF_CONTEXT_KEY=L,e.DECAF_HANDLERS=q,e.DECAF_MODULE_OPTIONS=I,e.DECAF_ROUTE=k,e.DECORATORS=_,e.DECORATORS_PREFIX=g,e.DecafAuthHandler=B,e.DecafBody=S,e.DecafController=Y,e.DecafModelController=X,e.DecafParams=C,e.DecafQuery=x,e.DecafRoleAuthHandler=class extends B{constructor(){super()}async authorize(e,r){const a=e.switchToHttp().getRequest(),i=this.parseRequest(a);if(!i)throw new s.AuthorizationError("Unauthenticated");const n=t.Metadata.get(o.Model.get(r),s.PersistenceKeys.AUTH_ROLE);if(!n.includes(i))throw new s.AuthorizationError("Missing role: "+i);return n}},e.DtoFor=W,e.FromModelController=oe,e.HttpVerbToDecorator=M,e.NestBootstraper=class{static get logger(){return this._logger||(this._logger=new a.Logger("NestBootstrap")),this._logger}static initialize(e){return this.app=e,this}static enableLogger(e){return this._logger=e||new a.Logger("NestBootstrap"),this.app.useLogger(this._logger),this}static enableCors(e=[],t=["GET","POST","PUT","DELETE"]){const r="*"===e?"*":e.map(e=>e.trim().toLowerCase()),a={origin:(e,t)=>e?"*"===r||Array.isArray(r)&&r.includes(e.toLowerCase())?t(null,!0):void t(new ce(`Origin ${e} not allowed`)):t(null,!0),credentials:!0,methods:t.join(",")};return this.app.enableCors(a),this}static useHelmet(e){try{const t=require("helmet");this.app.use(t(e)),this.logger.log("Helmet middleware enabled successfully.")}catch(e){this.logger.warn("Helmet not installed. Skipping middleware.")}return this}static setupSwagger(e){return new le(this.app,{title:e.title,description:e.description,version:e.version,path:e.path||"api",persistAuthorization:e.persistAuthorization??!0,assetsPath:e.assetsPath,faviconFilePath:e.faviconPath,topbarIconFilePath:e.topbarIconPath,topbarBgColor:e.topbarBgColor}).setupSwagger(),this}static useGlobalPipes(...e){return e.length>0&&this.app.useGlobalPipes(...e),this}static useGlobalFilters(...t){return this.app.useGlobalFilters(...t.length>0?t:[new e.DecafExceptionFilter]),this}static useGlobalInterceptors(...e){return e.length>0&&this.app.useGlobalInterceptors(...e),this}static async start(e=Number(process.env.PORT)||3e3,t=void 0,r=!0){this.app.listen(e,t).then(async()=>{if(r){const e=await this.app.getUrl();this.logger.log("\ud83d\ude80 Application is running at: "+e)}})}},e.PACKAGE_NAME=Ae,e.RequestToContextTransformer=se,e.SwaggerBuilder=le,e.UseDecafFilter=()=>a.UseFilters(new e.DecafExceptionFilter),e.VERSION=_e,e.createApiPropertyDecorator=R,e.createPropertyDecorator=b,e.getEnumType=P,e.getEnumValues=E,e.getModuleFor=ne,e.isOperationBlocked=v,e.isUndefined=A,e.repoForModel=e=>{const t=o.Model.get(e);if(!t)throw new c.InternalError("Failed to find repository for "+e);return s.Repository.forModel(t)},e.requestToContextTransformer=ie},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decoration"),require("@decaf-ts/injectable-decorators"),require("@nestjs/common"),require("@decaf-ts/decorator-validation"),require("@decaf-ts/core"),require("lodash"),require("@nestjs/swagger"),require("@decaf-ts/db-decorators"),require("tslib"),require("@nestjs/core"),require("@decaf-ts/logging"),require("fs"),require("path"),require("rxjs")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decoration","@decaf-ts/injectable-decorators","@nestjs/common","@decaf-ts/decorator-validation","@decaf-ts/core","lodash","@nestjs/swagger","@decaf-ts/db-decorators","tslib","@nestjs/core","@decaf-ts/logging","fs","path","rxjs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["for-nest"]={},e.decafTsDecoration,e.decafTsInjectableDecorators,e.nestjsCommon,e.decafTsDecoratorValidation,e.decafTsCore,e.lodash,e.nestjsSwagger,e.decafTsDbDecorators,e.tslib,e.nestjsCore,e.decafTsLogging,e.fs,e.path,e.rxjs);
1
+ var e,t;e=this,t=function(e,t,r,a,o,s,i,n,c,p,d,l,u,m,h){"use strict";function y(e){var t=Object.create(null);return e&&Object.keys(e).forEach(r=>{if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:()=>e[r]})}}),t.default=e,Object.freeze(t)}var f=y(m);const g="swagger",_={API_OPERATION:g+"/apiOperation",API_RESPONSE:g+"/apiResponse",API_PRODUCES:g+"/apiProduces",API_CONSUMES:g+"/apiConsumes",API_TAGS:g+"/apiUseTags",API_CALLBACKS:g+"/apiCallbacks",API_PARAMETERS:g+"/apiParameters",API_HEADERS:g+"/apiHeaders",API_MODEL_PROPERTIES:g+"/apiModelProperties",API_MODEL_PROPERTIES_ARRAY:g+"/apiModelPropertiesArray",API_SECURITY:g+"/apiSecurity",API_EXCLUDE_ENDPOINT:g+"/apiExcludeEndpoint",API_EXCLUDE_CONTROLLER:g+"/apiExcludeController",API_EXTRA_MODELS:g+"/apiExtraModels",API_EXTENSION:g+"/apiExtension",API_SCHEMA:g+"/apiSchema",API_DEFAULT_GETTER:g+"/apiDefaultGetter",API_LINK:g+"/apiLink"},A=e=>void 0===e;function E(e){if("function"==typeof e)return E(e());if(Array.isArray(e))return e;if("object"!=typeof e)return[];const t=Object.values(e).filter(e=>"number"==typeof e).map(e=>e.toString());return Object.keys(e).filter(e=>!t.includes(e)).map(t=>e[t])}function P(e){return e.filter(i.isString).length>0?"string":"number"}function b(e,t,r=!0){return(a,o)=>{const s=Reflect.getMetadata(_.API_MODEL_PROPERTIES_ARRAY,a)||[],n=":"+o;s.includes(n)||Reflect.defineMetadata(_.API_MODEL_PROPERTIES_ARRAY,[...s,":"+o],a);const c=Reflect.getMetadata(e,a,o);if(c){const s=i.pickBy(t,i.negate(A)),n=r?{...c,...s}:{...s,...c};Reflect.defineMetadata(e,n,a,o)}else{const r=a?.constructor?._OPENAPI_METADATA_FACTORY?.()[o]?.type??Reflect.getMetadata("design:type",a,o);Reflect.defineMetadata(e,{type:r,required:!1,...i.pickBy(t,i.negate(A))},a,o)}}}function O(e={}){return R(e)}function R(e={},t=!0){const[r,a]=((e,t)=>{if(!e)return[e,t];if(t)return[e,t];const r=i.isArray(e);return[r?e[0]:e,r]})(e.type,e.isArray);if((o=e={...e,type:r,isArray:a}).isArray&&"enum"in o&&void 0!==o.enum){e.type="array";const t=E(e.enum);e.items={type:P(t),enum:t},delete e.enum}else if("enum"in e&&void 0!==e.enum){const t=E(e.enum);e.enum=t,e.type=P(t)}var o;return Array.isArray(e.type)&&(e.type="array",e.items={type:"array",items:{type:e.type[0]}}),b(_.API_MODEL_PROPERTIES,e,t)}function v(e,r){const{handler:a,args:o}=t.Metadata.get(e,c.OperationKeys.REFLECT+c.OperationKeys.BLOCK)||{};return!!a&&(a(...o,r)??!1)}function w(e,r,o){const s={GET:[c.OperationKeys.READ,a.Get],POST:[c.OperationKeys.CREATE,a.Post],PUT:[c.OperationKeys.UPDATE,a.Put],PATCH:[c.OperationKeys.UPDATE,a.Patch],DELETE:[c.OperationKeys.DELETE,a.Delete]},[i,p]=s[r];return v(e,i)?t.apply(n.ApiExcludeEndpoint()):t.apply(p(o))}function D(e=[]){const t=e.map(e=>n.ApiParam({name:e.name,description:e.description??"Path parameter: "+e.name,required:e.required??!0,type:e.type??String}));return a.applyDecorators(...t)}const S=a.createParamDecorator((e,t)=>{const r=t.switchToHttp().getRequest().body,o=t.getClass(),s=o.class;if(!s)throw new a.InternalServerErrorException(`ModelConstructor not found on controller ${o.name}. Ensure the controller was created via FromModelController.`);return r?Array.isArray(r)?r.map(e=>new s(e)):new s(r):r}),T=a.createParamDecorator((e,t)=>{const r=t.switchToHttp().getRequest(),a=r?.params??{},o=e??Object.keys(a),s=o.map(e=>a[e]);return{raw:a,valuesInOrder:s,keysInOrder:o}});function C(e=[]){const t=e.map(e=>e.name);return T(t)}const x=a.createParamDecorator((e,t)=>{const r={...t.switchToHttp().getRequest().query??{}};if(void 0!==r.limit){const e=Number(r.limit);Number.isNaN(e)||(r.limit=e)}if(void 0!==r.offset){const e=Number(r.offset);Number.isNaN(e)||(r.offset=e)}if(void 0!==r.bookmark){const e=Number(r.bookmark);r.bookmark=Number.isNaN(e)?r.bookmark:e}return r});function M(e){const t={GET:a.Get,POST:a.Post,PUT:a.Put,PATCH:a.Patch,DELETE:a.Delete}[e];if(!t)throw Error(`Unsupported HTTP verb "${e}". No NestJS decorator mapping was found.`);return t}const I="DecafModuleOptions",F="DecafAdapter",k="DecafRoute",q=Symbol("DecafHandlers"),$=Symbol("DecafAdapterForOptions"),j=Symbol("AUTH_HANDLER"),N="auth:meta",L=Symbol("decaf:context");function K(t){const r="string"==typeof t?t:t.name;return a.applyDecorators(n.ApiBearerAuth(),a.SetMetadata(N,r),a.UseInterceptors(e.AuthInterceptor))}e.AuthInterceptor=class{constructor(e,t){this.reflector=e,this.authHandler=t}async intercept(e,t){const r=this.reflector.get(N,e.getHandler())??this.reflector.get(N,e.getClass());return r&&this.authHandler&&await this.authHandler.authorize(e,r),t.handle()}},e.AuthInterceptor=p.__decorate([a.Injectable(),p.__param(1,a.Optional()),p.__param(1,a.Inject(j)),p.__metadata("design:paramtypes",[d.Reflector,Object])],e.AuthInterceptor);class B{parseRequest(e){const t=e.headers.authorization?.split(" ")[1];return t}async authorize(e,r){const a=e.switchToHttp().getRequest(),i=this.parseRequest(a);if(!i)throw new s.AuthorizationError("Unauthenticated");if(!t.Metadata.get(o.Model.get(r),s.PersistenceKeys.AUTH_ROLE).includes(i))throw new s.AuthorizationError("Missing role: "+i)}}e.DecafRequestContext=class{constructor(e){this.req=e}get request(){return this.req}put(e){let t;try{t=this.ctx.get("overrides")}catch(e){t={}}this._ctx=this.ctx.accumulate({overrides:Object.assign(t,e)})}applyCtx(e){this._ctx=e}get ctx(){if(!this._ctx)throw new c.InternalError("Context not initialized for request");return this._ctx}},e.DecafRequestContext=p.__decorate([a.Injectable({scope:a.Scope.REQUEST}),p.__param(0,a.Inject(d.REQUEST)),p.__metadata("design:paramtypes",[Request])],e.DecafRequestContext),e.DecafHandlerExecutor=class{constructor(e,t){this.handlers=e,this.context=t}async exec(e,t){for(const r of this.handlers)await r.handle(this.context,e,t)}},e.DecafHandlerExecutor=p.__decorate([a.Injectable({scope:a.Scope.REQUEST}),p.__param(0,a.Inject(q)),p.__metadata("design:paramtypes",[Array,e.DecafRequestContext])],e.DecafHandlerExecutor);const U=e=>({name:e,description:e+" parameter for the query",required:!0,type:String});function H(e,t,r,o=!1){const i=M(r),c=(e=>e.split("/").filter(e=>e.startsWith(":")).map(e=>e.slice(1)))(t).map(U),p=[];return"GET"===r&&o&&p.push(n.ApiQuery({name:"direction",required:!1,enum:s.OrderDirection,description:"the sort order when applicable"}),n.ApiQuery({name:"limit",required:!1,description:"limit or page size when applicable"}),n.ApiQuery({name:"offset",required:!1,description:"offset or bookmark when applicable"})),{method:[i(t),...c.map(n.ApiParam),...p,n.ApiOperation({summary:`Retrieve records using according to "${e}".`}),n.ApiOkResponse({description:"Result successfully retrieved."}),n.ApiNoContentResponse({description:"No content returned by the method."})],params:[C(c),a.Query()]}}function G(e,t,r,a){const o=e?.prototype??e;a.method.forEach(e=>e(o,t,r)),a.params?.forEach((e,r)=>e(o,t,r))}function Q(e,t,...r){if(e instanceof s.ModelService)return"function"==typeof e[t]?e[t](...r):e.statement(t,...r);if("function"==typeof e[t])return e[t](...r);throw Error(`Persistence method "${t}" not found on ${e?.constructor?.name}`)}function z(e){return async function(t,r){const a=this.log.for(e);try{a.debug(`Invoking persistence method "${e}" given parameters: ${JSON.stringify(t.valuesInOrder)}`);const{direction:o,limit:s,offset:i}=r;return await Q(this.persistence(),e,...t.valuesInOrder,o,s,i)}catch(t){throw a.error(`Custom query "${e}" failed`,t),t}}}function V(e,t,r){return Object.defineProperty(e.prototype||e,t,{value:r,writable:!1}),Object.getOwnPropertyDescriptor(e.prototype||e,t)}class Y extends s.Service{constructor(e,t){super(t),this.clientContext=e}logCtx(e,t,r=!1,a){const o=this.clientContext.ctx;return e=e.filter(e=>void 0!==e),s.ContextualLoggedClass.logCtx.call(this,t,a||{},r,...e,o)}}class X extends Y{persistence(e){if(!this._persistence)try{this._persistence=s.ModelService.getService(this.class)}catch(e){try{this._persistence=s.Service.get(this.class)}catch(e){this._persistence=s.Repository.forModel(this.class)}}const t=this.clientContext.request[$]||{};return e&&this.clientContext.put(t),e?this._persistence instanceof s.Repository?this._persistence.override(t):this._persistence.for(t):this._persistence}constructor(e,t){super(e,t)}logCtx(e,t,r=!1){const a=this.clientContext.ctx;let o={};try{o=a.get("overrides")}catch(e){}const i=this.persistence(a);let n,c;return i instanceof s.ModelService?n=i.repo.adapter:i instanceof s.Repository?n=i.adapter:i.context&&(n=i),r?n.logCtx(e,t,!0,o).then(e=>e):(c=n.logCtx(e,t,!1,o),c)}}const J=new Map;function W(e,r){if(!s.TransactionOperationKeys.includes(e))return r;const a=(e=>(J.has(e)||J.set(e,new WeakMap),J.get(e)))(e),i=a.get(r);if(i)return i;const n=[c.OperationKeys.UPDATE,c.BulkCrudOperationKeys.UPDATE_ALL].includes(e);class p{}a.set(r,p),Object.defineProperty(p,"name",{value:`${l.toPascalCase(r.name)}${l.toPascalCase(e)}DTO`});const d=(()=>{try{return o.Model.pk(r)}catch{return}})(),u=d?o.Model.pkProps(r):void 0,m=d?Reflect.getMetadata("design:type",r.prototype,d):void 0,h=m===Number||m===BigInt,y=!!u?.generated||!!d&&(o.Model.generatedBySequence(r,d)||te(r,d)||h),f=Array.from(new Set(t.Metadata.properties(r)||[])),g=new Set(o.Model.relations(r)||[]),_=[];for(const e of f)e&&(g.has(e)||e===d&&!n&&y||e!==d&&te(r,e)||_.push(e));for(const e of _){const t=re(r,e),a=!!t?.[o.ValidationKeys.REQUIRED],s=ae(r,e)??Reflect.getMetadata("design:type",r.prototype,e),i={required:a};s&&(i.type=s),O(i)(p.prototype,e);const n=Reflect.getMetadata("design:type",r.prototype,e)??s;void 0!==n&&Reflect.defineMetadata("design:type",n,p.prototype,e),Object.defineProperty(p.prototype,e,{value:void 0,writable:!0,enumerable:!0,configurable:!0})}for(const a of g){const s=t.Metadata.relations(r,a);if(!s)throw new c.InternalError(`Metadata for relation ${a} not found`);let i=s.class;if("function"!=typeof i||i.name||(i=i()),!i||"function"!=typeof i)throw new c.InternalError(`Type for relation ${a} not found`);if(!o.Model.get(i.name))continue;const d=t.Metadata.validationFor(r,a),l=!!d?.[o.ValidationKeys.LIST],u=!!d?.[o.ValidationKeys.REQUIRED],m=W(e,i);n?ee(p,a,i,m,l,u):Z(p,a,m,l,u)}return p}function Z(e,t,r,a,o){O({type:r,required:o,isArray:a})(e.prototype,t),Reflect.defineMetadata("design:type",a?Array:r,e.prototype,t),Object.defineProperty(e.prototype,t,{value:void 0,writable:!0,enumerable:!0,configurable:!0})}function ee(e,t,r,a,s,i){const n=Reflect.getMetadata(_.API_EXTRA_MODELS,e)||[];n.includes(a)||Reflect.defineMetadata(_.API_EXTRA_MODELS,[...n,a],e);const c="#/components/schemas/"+a.name,p=(e=>{try{const t=o.Model.pkProps(e),r=t?.type;return r===Number||r===BigInt?"integer":"string"}catch{return"string"}})(r),d=[{$ref:c},{type:p}];O(s?{type:"array",required:i,oneOf:d}:{type:Object,required:i,oneOf:d})(e.prototype,t),Reflect.defineMetadata("design:type",s?Array:Object,e.prototype,t),Object.defineProperty(e.prototype,t,{value:void 0,writable:!0,enumerable:!0,configurable:!0})}function te(e,t){let r=e;for(;r&&r!==Object&&r!==Function;){if(o.Model.generated(r,t))return!0;r=Object.getPrototypeOf(r)}return!1}function re(e,r){let a=e;for(;a&&a!==Object&&a!==Function;){const e=t.Metadata.validationFor(a,r);if(e)return e;a=Object.getPrototypeOf(a)}}function ae(e,r){let a=e;for(;a&&a!==Object&&a!==Function;){const e=t.Metadata.type(a,r);if(e)return e;a=Object.getPrototypeOf(a)}}s.Adapter.transformerFor=(e=>{const r="string"==typeof e?e:e.alias;return t.Metadata.innerGet(Symbol.for("transformers"),r)}).bind(s.Adapter),s.Adapter.flavoursToTransform=(()=>{const e=t.Metadata.innerGet(Symbol.for("transformers"));if(e)return Object.keys(e)}).bind(s.Adapter),s.Context.prototype.toResponse=function(e){const t=this.pending();return t&&e.header("x-pending-task",JSON.stringify(t)),e};class oe{static{this.log=l.Logging.for(oe.name)}static getPersistence(e){try{return s.ModelService.getService(e)}catch(t){return s.Repository.forModel(e)}}static createQueryRoutesFromRepository(e,r=s.PersistenceKeys.QUERY){const a=oe.log.for(oe.createQueryRoutesFromRepository),o=e instanceof s.ModelService?e.repo:e,i=o.class,n=t.Metadata.get(o.constructor,t.Metadata.key(s.PersistenceKeys.QUERY))??{},c=t.Metadata.get(e.constructor,t.Metadata.key(k))??{};class p extends X{get class(){throw Error("Method not implemented.")}constructor(e,t){super(e,t)}}for(const[e,t]of Object.entries(c)){const r=[t.path.replace(/^\/+|\/+$/g,"")].filter(e=>e&&e.trim()).join("/"),o=z(e);if(!o){const t=`Invalid or missing handler for model ${i.name} on decorated method ${e}`;throw a.error(t),Error(t)}const s=V(p,e,o);s&&G(p,e,s,H(e,r,t.httpMethod))}for(const[e,t]of Object.entries(n)){const a=[r,e,...(t.fields??[]).map(e=>":"+e)].filter(e=>e&&e.trim()).join("/"),o=V(p,e,z(e));o&&G(p,e,o,H(e,a,"GET",!0))}return p}static create(t){const r=oe.log.for(oe.create),i=o.Model.tableName(t),d=l.toKebabCase(i),u=t.name,m=oe.getPersistence(t),{description:h,getPK:y,apiProperties:f,path:g}=oe.getRouteParametersFromModel(t);r.debug("Creating controller for model: "+u);const _=oe.createQueryRoutesFromRepository(m);let A=class extends _{static get class(){return t}get class(){return t}constructor(e){super(e),this.pk=o.Model.pk(t),r.info(`Registering dynamic controller for model: ${this.class.name} route: /${d}`)}async listBy(e,t){const{ctx:r}=(await this.logCtx([],s.PreparedStatementKeys.LIST_BY,!0)).for(this.listBy);return this.persistence(r).listBy(e,t.direction,r)}async paginateBy(e,t){const{ctx:r}=(await this.logCtx([],s.PreparedStatementKeys.PAGE_BY,!0)).for(this.paginateBy);return this.persistence(r).paginateBy(e,t.direction,t,r)}async find(e,t){const{ctx:r}=(await this.logCtx([],s.PreparedStatementKeys.FIND,!0)).for(this.find),a=t.direction??s.OrderDirection.ASC;return Q(this.persistence(r),this.find.name,e,a,r)}async page(e,t){const{ctx:r}=(await this.logCtx([],s.PreparedStatementKeys.PAGE,!0)).for(this.page),{direction:a=s.OrderDirection.ASC,limit:o,offset:i,bookmark:n}=t,c={offset:i??1,limit:o??10,bookmark:n};return Q(this.persistence(r),this.page.name,e,a,c,r)}async findOneBy(e,t){const{ctx:r}=(await this.logCtx([],s.PreparedStatementKeys.FIND_ONE_BY,!0)).for(this.findOneBy);return this.persistence(r).findOneBy(e,t,r)}async findBy(e,t,r){const{ctx:a}=(await this.logCtx([],s.PreparedStatementKeys.FIND_BY,!0)).for(this.findBy);return this.persistence(a).for(a.toOverrides()).findBy(e,t,a)}async statement(e,t,r){const{ctx:a}=(await this.logCtx([],s.PersistenceKeys.STATEMENT,!0)).for(this.statement),{direction:o,offset:i,limit:n,bookmark:c}=r,p=(t=t.map(e=>("string"==typeof e?parseInt(e):e)||e)).length>1?t[1]:void 0,d=o??p;switch(d&&t.length>1&&(t[1]=d),e){case s.PreparedStatementKeys.FIND:case s.PreparedStatementKeys.FIND_BY:break;case s.PreparedStatementKeys.LIST_BY:t.push(o);break;case s.PreparedStatementKeys.PAGE:case s.PreparedStatementKeys.PAGE_BY:t=[t[0],d,{limit:n,offset:i,bookmark:c}];case s.PreparedStatementKeys.FIND_ONE_BY:case s.PreparedStatementKeys.COUNT_OF:case s.PreparedStatementKeys.MAX_OF:case s.PreparedStatementKeys.MIN_OF:case s.PreparedStatementKeys.AVG_OF:case s.PreparedStatementKeys.SUM_OF:case s.PreparedStatementKeys.DISTINCT_OF:case s.PreparedStatementKeys.GROUP_OF:}return this.persistence(a).statement(e,...t,a)}async createAll(e,r){const{ctx:a,log:o}=(await this.logCtx([],c.BulkCrudOperationKeys.CREATE_ALL,!0)).for(this.createAll);let s;o.verbose("creating new "+u);try{s=await this.persistence(a).createAll(e.map(e=>new t(e)),a)}catch(e){throw o.error("Failed to create new "+u,e),e}return o.info(`created new ${u} with id ${s[this.pk]}`),a.toResponse(r),s}async create(e,t){const{ctx:r,log:a}=(await this.logCtx([],c.OperationKeys.CREATE,!0)).for(this.create);let o;a.verbose("creating new "+u);try{const t=this.persistence(r);o=await t.create(e,r)}catch(e){throw a.error("Failed to create new "+u,e),e}return a.info(`created new ${u} with id ${o[this.pk]}`),r.toResponse(t),o}async readAll(e){const{ctx:t,log:r}=(await this.logCtx([],c.BulkCrudOperationKeys.READ_ALL,!0)).for(this.readAll);let a;try{r.debug(`reading ${e.length} ${u}: ${e}`);const o=this.persistence(t);a=await o.readAll(e,t)}catch(t){throw r.error(`Failed to ${u} with id ${e}`,t),t}return r.info(`read ${a.length} ${u}`),a}async read(e){const{ctx:t,log:r}=(await this.logCtx([],c.OperationKeys.READ,!0)).for(this.read),a=y(...e.valuesInOrder);if(void 0===a)throw new c.ValidationError(`No ${this.pk} provided`);let o;try{r.debug(`reading ${u} with ${this.pk} ${a}`);const e=this.persistence(t);o=await e.read(a,t)}catch(e){throw r.error(`Failed to read ${u} with id ${a}`,e),e}return r.info(`read ${u} with id ${o[this.pk]}`),o}async updateAll(e,t){const{ctx:r,log:a}=(await this.logCtx([],c.BulkCrudOperationKeys.UPDATE_ALL,!0)).for(this.updateAll);let o;try{a.info(`updating ${e.length} ${u}`),o=await this.persistence(r).updateAll(e,r)}catch(e){throw a.error(e),e}return r.toResponse(t),o}async update(e,r,a){const{ctx:o,log:s}=(await this.logCtx([],c.OperationKeys.UPDATE,!0)).for(this.update),i=y(...e.valuesInOrder);if(void 0===i)throw new c.ValidationError(`No ${this.pk} provided`);let n;try{s.info(`updating ${u} with ${this.pk} ${i}`);const e=JSON.parse(JSON.stringify(r)),a=this.persistence(o);n=await a.update(new t({...e,[this.pk]:i}),o)}catch(e){throw s.error(e),e}return o.toResponse(a),n}async deleteAll(e,t){const{ctx:r,log:a}=(await this.logCtx([],c.BulkCrudOperationKeys.DELETE_ALL,!0)).for(this.deleteAll);let o;try{a.debug(`deleting ${e.length} ${u}: ${e}`),o=await this.persistence(r).deleteAll(e,r)}catch(t){throw a.error(`Failed to delete ${u} with id ${e}`,t),t}return a.info(`deleted ${o.length} ${u}`),r.toResponse(t),o}async delete(e,t){const{ctx:r,log:a}=(await this.logCtx([],c.OperationKeys.DELETE,!0)).for(this.delete),o=y(...e.valuesInOrder);if(void 0===o)throw new c.ValidationError(`No ${this.pk} provided`);let s;try{a.debug(`deleting ${u} with ${this.pk} ${o}`),s=await this.persistence(r).delete(o,r)}catch(e){throw a.error(`Failed to delete ${u} with id ${o}`,e),e}return a.info(`deleted ${u} with id ${o}`),r.toResponse(t),s}};return p.__decorate([w(t,"GET","listBy/:key"),n.ApiOperation({summary:`Retrieve ${u} records by query.`}),n.ApiParam({name:"key",description:"the model key to sort by"}),n.ApiQuery({name:"direction",required:!0,enum:s.OrderDirection}),n.ApiOkResponse({description:u+" listed successfully."}),p.__param(0,a.Param("key")),p.__param(1,x()),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"listBy",null),p.__decorate([w(t,"GET","paginateBy/:key/:page"),n.ApiOperation({summary:`Retrieve ${u} records by query.`}),n.ApiParam({name:"key",description:"the model key to sort by"}),n.ApiParam({name:"page",description:"the page to retrieve or the bookmark"}),n.ApiQuery({name:"direction",required:!0,enum:s.OrderDirection,description:"the sort order"}),n.ApiQuery({name:"limit",required:!0,description:"the page size"}),n.ApiQuery({name:"offset",description:"the bookmark when necessary"}),n.ApiOkResponse({description:u+" listed paginated."}),p.__param(0,a.Param("key")),p.__param(1,x()),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"paginateBy",null),p.__decorate([w(t,"GET","find/:value"),n.ApiOperation({summary:`Find ${u} records using the default query attributes.`}),n.ApiParam({name:"value",description:"The string to match against the default query attributes"}),n.ApiQuery({name:"direction",required:!1,enum:s.OrderDirection,description:"the sort order for the matching results"}),n.ApiOkResponse({description:u+" records matching the provided prefix."}),p.__param(0,a.Param("value")),p.__param(1,x()),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"find",null),p.__decorate([w(t,"GET","page/:value"),n.ApiOperation({summary:`Page ${u} records using the default query attributes.`}),n.ApiParam({name:"value",description:"The string to match against the default query attributes"}),n.ApiQuery({name:"direction",required:!1,enum:s.OrderDirection,description:"the sort order for the paged results"}),n.ApiQuery({name:"limit",required:!1,description:"page size"}),n.ApiQuery({name:"offset",required:!1,description:"page number"}),n.ApiQuery({name:"bookmark",required:!1,description:"bookmark for cursor pagination"}),n.ApiOkResponse({description:u+" records paged by the provided prefix."}),p.__param(0,a.Param("value")),p.__param(1,x()),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"page",null),p.__decorate([w(t,"GET","findOneBy/:key"),n.ApiOperation({summary:`Retrieve ${u} records by query.`}),n.ApiParam({name:"key",description:"the model key to sort by"}),n.ApiOkResponse({description:u+" listed found."}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),p.__param(0,a.Param("key")),p.__param(1,a.Param("value")),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"findOneBy",null),p.__decorate([w(t,"GET","findBy/:key/:value"),n.ApiOperation({summary:`Retrieve ${u} records by query.`}),n.ApiParam({name:"key",description:"the model key to compare"}),n.ApiParam({name:"value",description:"the value to match"}),n.ApiQuery({name:"direction",required:!0,enum:s.OrderDirection,description:"the sort order when applicable"}),n.ApiOkResponse({description:u+" listed found."}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),p.__param(0,a.Param("key")),p.__param(1,a.Param("value")),p.__param(2,x()),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String,Object,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"findBy",null),p.__decorate([w(t,"GET","statement/:method/*args"),n.ApiOperation({summary:`Executes a prepared statement on ${u}.`}),n.ApiParam({name:"method",description:"the prepared statement to execute"}),n.ApiParam({name:"args",description:"concatenated list of arguments the prepared statement can accept"}),n.ApiQuery({name:"direction",required:!0,enum:s.OrderDirection,description:"the sort order when applicable"}),n.ApiQuery({name:"limit",required:!0,description:"limit or page size when applicable"}),n.ApiQuery({name:"offset",required:!0,description:"offset or bookmark when applicable"}),n.ApiOkResponse({description:u+" listed found."}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),p.__param(0,a.Param("method")),p.__param(1,a.Param("args")),p.__param(2,x()),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String,Array,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"statement",null),p.__decorate([w(t,"POST","bulk"),n.ApiOperation({summary:`Create a new ${u}.`}),n.ApiBody({description:"Payload for "+u,schema:{type:"array",items:{$ref:n.getSchemaPath(t)}}}),n.ApiCreatedResponse({description:u+" created successfully.",schema:{type:"array",items:{$ref:n.getSchemaPath(t)}}}),n.ApiBadRequestResponse({description:"Payload validation failed."}),n.ApiUnprocessableEntityResponse({description:"Repository rejected the provided payload."}),p.__param(0,S()),p.__param(1,a.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Array,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"createAll",null),p.__decorate([w(t,"POST"),n.ApiOperation({summary:`Create a new ${u}.`}),n.ApiBody({description:"Payload for "+u,type:W(c.OperationKeys.CREATE,t)}),n.ApiCreatedResponse({description:u+" created successfully.",schema:{$ref:n.getSchemaPath(t)}}),n.ApiBadRequestResponse({description:"Payload validation failed."}),n.ApiUnprocessableEntityResponse({description:"Repository rejected the provided payload."}),p.__param(0,S()),p.__param(1,a.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Object,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"create",null),p.__decorate([w(t,"GET","bulk"),n.ApiOperation({summary:`Retrieve a ${u} record by id.`}),n.ApiQuery({name:"ids",required:!0,type:"array"}),n.ApiOkResponse({description:u+" retrieved successfully.",schema:{type:"array",items:{$ref:n.getSchemaPath(t)}}}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),p.__param(0,a.Query("ids")),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Array]),p.__metadata("design:returntype",Promise)],A.prototype,"readAll",null),p.__decorate([w(t,"GET",g),D(f),n.ApiOperation({summary:`Retrieve a ${u} record by id.`}),n.ApiOkResponse({description:u+" retrieved successfully.",schema:{$ref:n.getSchemaPath(t)}}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),p.__param(0,C(f)),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Object]),p.__metadata("design:returntype",Promise)],A.prototype,"read",null),p.__decorate([w(t,"PUT","bulk"),D(f),n.ApiOperation({summary:`Replace an existing ${u} record with a new payload.`}),n.ApiBody({description:"Payload for replace a existing record of "+u,schema:{type:"array",$ref:n.getSchemaPath(W(c.OperationKeys.UPDATE,t))}}),n.ApiOkResponse({description:u+" updated successfully.",schema:{type:"array",items:{$ref:n.getSchemaPath(t)}}}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),n.ApiBadRequestResponse({description:"Payload validation failed."}),p.__param(0,S()),p.__param(1,a.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Array,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"updateAll",null),p.__decorate([w(t,"PUT",g),D(f),n.ApiOperation({summary:`Replace an existing ${u} record with a new payload.`}),n.ApiBody({description:"Payload for replace a existing record of "+u,type:W(c.OperationKeys.UPDATE,t)}),n.ApiOkResponse({description:u+" updated successfully.",schema:{$ref:n.getSchemaPath(t)}}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),n.ApiBadRequestResponse({description:"Payload validation failed."}),p.__param(0,C(f)),p.__param(1,S()),p.__param(2,a.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Object,Object,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"update",null),p.__decorate([w(t,"DELETE","bulk"),D(f),n.ApiOperation({summary:`Retrieve a ${u} record by id.`}),n.ApiQuery({name:"ids",required:!0,type:"array"}),n.ApiOkResponse({description:u+" deleted successfully.",schema:{type:"array",items:{$ref:n.getSchemaPath(t)}}}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),p.__param(0,a.Query("ids")),p.__param(1,a.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Array,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"deleteAll",null),p.__decorate([w(t,"DELETE",g),D(f),n.ApiOperation({summary:`Delete a ${u} record by id.`}),n.ApiOkResponse({description:u+" deleted successfully.",schema:{$ref:n.getSchemaPath(t)}}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),p.__param(0,C(f)),p.__param(1,a.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Object,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"delete",null),A=p.__decorate([a.Controller(d),n.ApiTags(u),n.ApiExtraModels(t),K(t),p.__metadata("design:paramtypes",[e.DecafRequestContext])],A),A}static getRouteParametersFromModel(e){const r=o.Model.pk(e),a=t.Metadata.get(e,t.Metadata.key(c.DBKeys.COMPOSED,r)),s=a?.args??[],i=Array.isArray(s)&&s.length>0?Array.from(new Set([...s])):Array.from(new Set([r])),n=t.Metadata.description(e);return{path:":"+i.join("/:"),description:n,apiProperties:i.map(r=>({name:r,description:t.Metadata.description(e,r),required:!0,type:String})),getPK:(...e)=>a?.separator?e.join(a.separator):e.join("")}}}e.DecafRequestHandlerInterceptor=class{constructor(e,t){this.requestContext=e,this.executor=t}async contextualize(e){const t={headers:e.headers,overrides:{}},r=s.Adapter.flavoursToTransform();if(r)for(const a of r)try{const r=s.Adapter.transformerFor(a),o=await r.from(e);Object.assign(t.overrides,o)}catch(e){throw new c.InternalError("Failed to contextualize request: "+e)}return(new s.Context).accumulate(Object.assign({},s.DefaultAdapterFlags,{logger:l.Logging.get(),timestamp:new Date},t))}async intercept(e,t){const r=e.switchToHttp().getRequest(),a=e.switchToHttp().getResponse(),o=await this.contextualize(r);return this.requestContext.applyCtx(o),await this.executor.exec(r,a),t.handle()}},e.DecafRequestHandlerInterceptor=p.__decorate([a.Injectable({scope:a.Scope.REQUEST}),p.__metadata("design:paramtypes",[e.DecafRequestContext,e.DecafHandlerExecutor])],e.DecafRequestHandlerInterceptor);class se{}function ie(e){return r=>(t.Metadata.set("transformers",e,r),"function"==typeof r?t.metadata("transformers",e)(r):r)}function ne(t){var r;let o=class{static{r=this}static{this.log=l.Logging.for(r.name).for(t)}static createModelServices(e){return e.map(e=>({provide:e.name+"Service",useFactory:()=>s.ModelService.forModel(e)}))}static forRoot(t,a={}){const o=this.log.for(this.forRoot);o.info("Generating controllers for flavour...");const i=s.Adapter.models(t);let n=[];a.autoServices&&(o.info("Auto-services enabled. Initializing service generation."),n=this.createModelServices(i),o.info(`Auto-services completed. ${n.length} services initialized.`));const c=i.map(oe.create);return o.info(`Generated ${c.length} controllers`),{module:r,controllers:c,providers:[{provide:q,useFactory:()=>a.handlers?.map(e=>(o.info("Registered request handler: "+e.name),new e))??[]},e.DecafRequestContext,e.DecafHandlerExecutor,{provide:d.APP_INTERCEPTOR,useClass:e.DecafRequestHandlerInterceptor},...n]}}};return o=r=p.__decorate([a.Module({})],o),Object.assign(o,"name",{value:"DecafModule"+t}),o}t.Decoration.for(r.InjectablesKeys.INJECTABLE).extend({decorator:(e,t)=>(t=t||("object"==typeof e?Object.assign(e,r.DefaultInjectablesConfig):r.DefaultInjectablesConfig),a.Injectable({scope:t.singleton?a.Scope.DEFAULT:a.Scope.REQUEST,durable:!t.singleton||void 0}))}).apply(),t.Decoration.for(r.InjectablesKeys.INJECT).extend({decorator:(e,t)=>(t,r,o)=>a.Inject(e||t)(t,r,o)}).apply(),t.Decoration.for(o.ValidationKeys.REQUIRED).extend(O({required:!0})).apply(),t.Decoration.for(o.ValidationKeys.MAX).extend({decorator:e=>O({maximum:e,required:!1})}).apply(),t.Decoration.for(o.ValidationKeys.MIN).extend({decorator:e=>O({minimum:e,required:!1})}).apply(),t.Decoration.for(o.ValidationKeys.MAX_LENGTH).extend({decorator:e=>O({maxLength:e,required:!1})}).apply(),t.Decoration.for(o.ValidationKeys.MIN_LENGTH).extend({decorator:e=>O({minLength:e,required:!1})}).apply(),t.Decoration.for(o.ValidationKeys.TYPE).extend({decorator:e=>(t,r)=>("function"!=typeof(e=Array.isArray(e)?e[0]:e)||e.name||(e=e()),O({type:e,required:!1})(t,r))}).apply(),t.Decoration.for(o.ValidationKeys.DATE).extend({decorator:e=>O({type:String,format:"date-time",required:!1})}).apply(),t.Decoration.for(o.ValidationKeys.ENUM).extend({decorator:e=>O({enum:Array.isArray(e)?e:Object.values(e),required:!1})}).apply(),t.Decoration.for(o.ValidationKeys.PATTERN).extend({decorator:e=>O({pattern:"string"==typeof e?e:e.source,required:!1})}).apply(),t.Decoration.for(s.PersistenceKeys.COLUMN).extend({decorator:e=>O({name:e,required:!1})}).apply(),t.Decoration.for(t.DecorationKeys.DESCRIPTION).extend({decorator:e=>O({description:e,required:!1})}).apply(),t.Decoration.for(s.PersistenceKeys.AUTH).extend({decorator:K}).apply();class ce extends s.ForbiddenError{constructor(e){super(e,ce.name)}}e.DecafExceptionFilter=class{catch(e,t){const r=t.switchToHttp(),o=r.getResponse(),s=r.getRequest(),i="production"===l.LoggedEnvironment.env;let n;e instanceof a.NotFoundException?n=(e=new a.NotAcceptableException(e.message)).getStatus():e instanceof c.BaseError||(e=new c.InternalError(e.message)),o.status(e.code||n).json({status:e.code||n,error:i?e.name:e.message,timestamp:(new Date).toISOString(),path:s.url,method:s.method})}},e.DecafExceptionFilter=p.__decorate([a.Catch()],e.DecafExceptionFilter);const pe={path:"docs",auth:{type:"http",scheme:"bearer",bearerFormat:"JWT",name:"Authorization",description:"Enter JWT token",in:"header"},topbarBgColor:"#000000"};class de{constructor(e){this.options={...e}}customCSS(){let e="";return this.options.topbarIconPath&&(e+=`.topbar-wrapper { content: url('data:image/png;base64,${this.b64(this.options.topbarIconPath)}'); width: 200px; height: auto; }\n`),e+`\n .topbar-wrapper svg { visibility: hidden; }\n .swagger-ui .topbar { background-color: ${this.options.topbarBgColor||pe.topbarBgColor}; }\n `}getCustomOptions(){const e={};return this.options.faviconPath&&(e.customfavIcon=this.b64(this.options.faviconPath,!0)),{customSiteTitle:this.options.title,...e,customCss:this.customCSS(),swaggerOptions:{persistAuthorization:this.options.persistAuthorization},jsonDocumentUrl:this.options.path?this.options.path+"/spec.json":void 0,yamlDocumentUrl:this.options.path?this.options.path+"/spec.yaml":void 0}}b64(e,t=!1){const r=f.join(this.options.assetsPath||"",e),a=u.readFileSync(r,{encoding:"base64"});return t?"data:image/png;base64,"+a:a}}class le{constructor(e,t){this.app=e,this.options=t}createDocument(){const e=this.options.path?this.options.description+""+`<br><br><a href="${this.options.path}/spec.json">OpenAPI JSON Spec</a> | `+`<a href="${this.options.path}/spec.yaml">OpenAPI YAML Spec</a>`:this.options.description,t=(new n.DocumentBuilder).setTitle(this.options.title).setDescription(e).setVersion(this.options.version||"0.0.1").addBearerAuth(this.options.auth||pe.auth).build();return n.SwaggerModule.createDocument(this.app,t,{extraModels:this.options.extraModels||[]})}setupSwagger(){const e=this.createDocument(),t=new de({title:this.options.title,path:this.options.path||pe.path,persistAuthorization:this.options.persistAuthorization??!0,assetsPath:this.options.assetsPath,faviconPath:this.options.faviconFilePath,topbarIconPath:this.options.topbarIconFilePath,topbarBgColor:this.options.topbarBgColor});n.SwaggerModule.setup(this.options.path||pe.path,this.app,e,{...t.getCustomOptions()})}}var ue;let me=class{static{ue=this}static get persistence(){if(!this._persistence)throw new c.InternalError("Persistence service not initialized");return this._persistence}static get log(){return this._logger||(this._logger=l.Logging.for(ue)),this._logger}constructor(e,t){this.options=e,this.moduleRef=t}static async bootPersistence(e){const t=this.log.for(this.bootPersistence);if(!this._persistence){const r=e.conf.map(([e,t,...r])=>r.pop()?[e,t,...r]:[e,t]);this._persistence=new s.PersistenceService,await this._persistence.boot(r);const a=this._persistence.client;for(let t=0;t<a.length;t++){const r=e.conf[t];let[,,o]=r;if(!o){const e=s.Adapter.transformerFor(a[t].flavour);if(!e)throw new c.InternalError(`No transformer found for flavour ${a[t].flavour}. you should either @requestToContextTransformer or provide a transformer in the config`);o=e instanceof se?e:new e}ie(a[t].flavour)(o)}t.info("persistence layer created successfully!")}return this.persistence.client}static forRoot(e){const t={provide:I,useValue:e},r={useFactory:async e=>ue.bootPersistence(e),provide:F,durable:!0,scope:a.Scope.DEFAULT,inject:[I]};return{module:ue,providers:[r,t],exports:[r]}}async onApplicationShutdown(){const e=ue.log.for(this.onApplicationShutdown),t=this.moduleRef.get(F);for(const r of t)try{r&&(e.info("Shutting down "+r.toString()),await r.shutdown())}catch(t){e.error("Failed to shutdown application",t)}}};me=ue=p.__decorate([a.Global(),a.Module({}),p.__param(0,a.Inject(I)),p.__metadata("design:paramtypes",[Object,d.ModuleRef])],me);const he=Symbol("LISTENING_ADAPTERS_FLAVOURS");var ye,fe,ge;e.EventsController=ye=class extends Y{constructor(e,t){super(e,ye.name),this.adapters=t.map(e=>s.Adapter.get(e))}listen(){const e=l.Logging.for(ye.name);return new h.Observable(t=>{const r=new class{refresh(...e){return Promise.resolve().then(()=>{const r=(e=>{const[t,r,a,o]=e;return[t?.name??t,r,a,Array.isArray(o)?o.map(e=>e.serialize()):o?.serialize()]})(e);t.next({data:r})})}};try{for(const e of this.adapters)e.observe(r)}catch(e){t.error("Failed to observe event: "+(e.message||e))}return()=>{try{for(const e of this.adapters)e.unObserve(r)}catch(t){e.error(t)}}})}listenForModel(e){const t=l.Logging.for(ye.name);return new h.Observable(e=>{const r=new class{refresh(...t){return Promise.resolve().then(()=>{e.next({data:t})})}};try{for(const e of this.adapters)e.observe(r)}catch(t){e.error("Failed to observe event: "+(t.message||t))}return()=>{try{for(const e of this.adapters)e.unObserve(r)}catch(e){t.error(e)}}})}},p.__decorate([a.Sse(),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[]),p.__metadata("design:returntype",h.Observable)],e.EventsController.prototype,"listen",null),p.__decorate([a.Sse("/:model"),p.__param(0,a.Query("model")),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String]),p.__metadata("design:returntype",h.Observable)],e.EventsController.prototype,"listenForModel",null),e.EventsController=ye=p.__decorate([a.Controller(),p.__param(1,a.Inject(he)),p.__metadata("design:paramtypes",[e.DecafRequestContext,Array])],e.EventsController),e.DecafStreamModule=fe=class{static forFlavours(t,r="events"){return{module:fe,controllers:[e.EventsController],imports:[d.RouterModule.register([{path:r.replace(/^\//,""),module:fe}])],providers:[e.DecafRequestContext,{provide:he,useValue:t??[]}]}}},e.DecafStreamModule=fe=p.__decorate([a.Module({})],e.DecafStreamModule),e.DecafModule=ge=class{static async forRootAsync(t){const{autoControllers:r,autoServices:a,handlers:o}=t,s=(await me.bootPersistence(t)).map(e=>e.flavour),i=[me.forRoot(t)];return r&&s.forEach(e=>{i.push(ne(e).forRoot(e,{autoServices:a,handlers:o}))}),t.observerOptions?.enableObserverEvents&&i.push(e.DecafStreamModule.forFlavours(s)),{module:ge,imports:i}}},e.DecafModule=ge=p.__decorate([a.Module({})],e.DecafModule);const _e="##VERSION##",Ae="##PACKAGE##";t.Metadata.registerLibrary(Ae,_e),e.AUTH_HANDLER=j,e.AUTH_META_KEY=N,e.ApiOperationFromModel=w,e.ApiParamsFromModel=D,e.ApiProperty=O,e.Auth=K,e.BulkApiOperationFromModel=(e,r,o)=>{const s={GET:[c.BulkCrudOperationKeys.READ_ALL,a.Get],POST:[c.BulkCrudOperationKeys.CREATE_ALL,a.Post],PUT:[c.BulkCrudOperationKeys.UPDATE_ALL,a.Put],PATCH:[c.BulkCrudOperationKeys.UPDATE_ALL,a.Patch],DELETE:[c.BulkCrudOperationKeys.DELETE_ALL,a.Delete]},[i,p]=s[r];return v(e,i)?t.apply(n.ApiExcludeEndpoint()):t.apply(p(o))},e.CorsError=ce,e.DECAF_ADAPTER_ID=F,e.DECAF_ADAPTER_OPTIONS=$,e.DECAF_CONTEXT_KEY=L,e.DECAF_HANDLERS=q,e.DECAF_MODULE_OPTIONS=I,e.DECAF_ROUTE=k,e.DECORATORS=_,e.DECORATORS_PREFIX=g,e.DecafAuthHandler=B,e.DecafBody=S,e.DecafController=Y,e.DecafModelController=X,e.DecafParams=C,e.DecafQuery=x,e.DecafRoleAuthHandler=class extends B{constructor(){super()}async authorize(e,r){const a=e.switchToHttp().getRequest(),i=this.parseRequest(a);if(!i)throw new s.AuthorizationError("Unauthenticated");const n=t.Metadata.get(o.Model.get(r),s.PersistenceKeys.AUTH_ROLE);if(!n.includes(i))throw new s.AuthorizationError("Missing role: "+i);return n}},e.DtoFor=W,e.FromModelController=oe,e.HttpVerbToDecorator=M,e.NestBootstraper=class{static get logger(){return this._logger||(this._logger=new a.Logger("NestBootstrap")),this._logger}static initialize(e){return this.app=e,this}static enableLogger(e){return this._logger=e||new a.Logger("NestBootstrap"),this.app.useLogger(this._logger),this}static enableCors(e=[],t=["GET","POST","PUT","DELETE"]){const r="*"===e?"*":e.map(e=>e.trim().toLowerCase()),a={origin:(e,t)=>e?"*"===r||Array.isArray(r)&&r.includes(e.toLowerCase())?t(null,!0):void t(new ce(`Origin ${e} not allowed`)):t(null,!0),credentials:!0,methods:t.join(",")};return this.app.enableCors(a),this}static useHelmet(e){try{const t=require("helmet");this.app.use(t(e)),this.logger.log("Helmet middleware enabled successfully.")}catch(e){this.logger.warn("Helmet not installed. Skipping middleware.")}return this}static setupSwagger(e){return new le(this.app,{title:e.title,description:e.description,version:e.version,path:e.path||"api",persistAuthorization:e.persistAuthorization??!0,assetsPath:e.assetsPath,faviconFilePath:e.faviconPath,topbarIconFilePath:e.topbarIconPath,topbarBgColor:e.topbarBgColor}).setupSwagger(),this}static useGlobalPipes(...e){return e.length>0&&this.app.useGlobalPipes(...e),this}static useGlobalFilters(...t){return this.app.useGlobalFilters(...t.length>0?t:[new e.DecafExceptionFilter]),this}static useGlobalInterceptors(...e){return e.length>0&&this.app.useGlobalInterceptors(...e),this}static async start(e=Number(process.env.PORT)||3e3,t=void 0,r=!0){this.app.listen(e,t).then(async()=>{if(r){const e=await this.app.getUrl();this.logger.log("\ud83d\ude80 Application is running at: "+e)}})}},e.PACKAGE_NAME=Ae,e.RequestToContextTransformer=se,e.SwaggerBuilder=le,e.UseDecafFilter=()=>a.UseFilters(new e.DecafExceptionFilter),e.VERSION=_e,e.createApiPropertyDecorator=R,e.createPropertyDecorator=b,e.getEnumType=P,e.getEnumValues=E,e.getModuleFor=ne,e.isOperationBlocked=v,e.isUndefined=A,e.repoForModel=e=>{const t=o.Model.get(e);if(!t)throw new c.InternalError("Failed to find repository for "+e);return s.Repository.forModel(t)},e.requestToContextTransformer=ie},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decoration"),require("@decaf-ts/injectable-decorators"),require("@nestjs/common"),require("@decaf-ts/decorator-validation"),require("@decaf-ts/core"),require("lodash"),require("@nestjs/swagger"),require("@decaf-ts/db-decorators"),require("tslib"),require("@nestjs/core"),require("@decaf-ts/logging"),require("fs"),require("path"),require("rxjs")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decoration","@decaf-ts/injectable-decorators","@nestjs/common","@decaf-ts/decorator-validation","@decaf-ts/core","lodash","@nestjs/swagger","@decaf-ts/db-decorators","tslib","@nestjs/core","@decaf-ts/logging","fs","path","rxjs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["for-nest"]={},e.decafTsDecoration,e.decafTsInjectableDecorators,e.nestjsCommon,e.decafTsDecoratorValidation,e.decafTsCore,e.lodash,e.nestjsSwagger,e.decafTsDbDecorators,e.tslib,e.nestjsCore,e.decafTsLogging,e.fs,e.path,e.rxjs);
2
2
  //# sourceMappingURL=for-nest.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"for-nest.cjs","sources":["../src/overrides/constants.ts","../src/overrides/decoration.ts","../src/overrides/helpers.ts","../src/decaf-model/decorators/ApiOperationFromModel.ts","../src/decaf-model/decorators/ApiParamsFromModel.ts","../src/decaf-model/decorators/DecafBody.ts","../src/decaf-model/decorators/DecafParams.ts","../src/decaf-model/decorators/utils.ts","../src/constants.ts","../src/decaf-model/decorators/decorators.ts","../src/interceptors/AuthInterceptor.ts","../src/request/DecafAuthHandler.ts","../src/request/DecafRequestContext.ts","../src/request/DecafHandlerExecutor.ts","../src/decaf-model/utils.ts","../src/controllers.ts","../src/factory/openapi/DtoBuilder.ts","../src/overrides/overrides.ts","../src/decaf-model/FromModelController.ts","../src/interceptors/DecafRequestHandlerInterceptor.ts","../src/interceptors/context.ts","../src/decaf-model/DecafModelModule.ts","../src/decoration.ts","../src/factory/errors/cors.ts","../src/factory/exceptions/DecafErrorFilter.ts","../src/factory/openapi/constants.ts","../src/factory/openapi/SwaggerCustomUI.ts","../src/factory/openapi/SwaggerBuilder.ts","../src/core-module.ts","../src/events-module/constant.ts","../src/events-module/EventsController.ts","../src/events-module/utils.ts","../src/events-module/DecafStreamModule.ts","../src/module.ts","../src/index.ts","../src/factory/NestBootstraper.ts","../src/factory/exceptions/decorators.ts","../src/utils.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["DECORATORS_PREFIX","DECORATORS","API_OPERATION","API_RESPONSE","API_PRODUCES","API_CONSUMES","API_TAGS","API_CALLBACKS","API_PARAMETERS","API_HEADERS","API_MODEL_PROPERTIES","API_MODEL_PROPERTIES_ARRAY","API_SECURITY","API_EXCLUDE_ENDPOINT","API_EXCLUDE_CONTROLLER","API_EXTRA_MODELS","API_EXTENSION","API_SCHEMA","API_DEFAULT_GETTER","API_LINK","isUndefined","obj","getEnumValues","enumType","Array","isArray","numericValues","Object","values","filter","value","map","toString","keys","key","includes","getEnumType","isString","length","createPropertyDecorator","metakey","metadata","overrideExisting","target","propertyKey","properties","Reflect","getMetadata","defineMetadata","existingMetadata","newMetadata","pickBy","negate","metadataToSave","type","constructor","required","ApiProperty","options","createApiPropertyDecorator","input","isArrayFlag","isInputArray","getTypeIsArrayTuple","opts","undefined","enum","enumValues","items","isOperationBlocked","ModelConstructor","op","handler","args","Metadata","get","OperationKeys","REFLECT","BLOCK","ApiOperationFromModel","verb","path","httpToCrud","GET","READ","Get","POST","CREATE","Post","PUT","UPDATE","Put","PATCH","Patch","DELETE","Delete","crudOp","HttpMethodDecorator","apply","ApiExcludeEndpoint","ApiParamsFromModel","props","decorators","p","ApiParamDec","name","description","String","applyDecorators","DecafBody","createParamDecorator","data","ctx","body","switchToHttp","getRequest","controller","getClass","ModelConstr","class","InternalServerErrorException","item","OrderedParams","order","req","original","params","orderList","ordered","k","raw","valuesInOrder","keysInOrder","DecafParams","DecafQuery","_","parsed","query","limit","n","Number","isNaN","offset","bookmark","HttpVerbToDecorator","decorator","Error","DECAF_MODULE_OPTIONS","DECAF_ADAPTER_ID","DECAF_ROUTE","DECAF_HANDLERS","Symbol","DECAF_ADAPTER_OPTIONS","AUTH_HANDLER","AUTH_META_KEY","DECAF_CONTEXT_KEY","Auth","model","resource","ApiBearerAuth","SetMetadata","UseInterceptors","AuthInterceptor","reflector","authHandler","this","intercept","next","modelName","getHandler","authorize","handle","__decorate","Injectable","__param","Optional","Inject","Reflector","DecafAuthHandler","parseRequest","userRole","headers","authorization","split","AuthorizationError","Model","PersistenceKeys","AUTH_ROLE","DecafRequestContext","request","put","record","overrides","e","_ctx","accumulate","assign","applyCtx","InternalError","scope","Scope","REQUEST","Request","DecafHandlerExecutor","handlers","context","exec","res","apiParamSpec","getApiDecorators","methodName","routePath","httpVerb","includeQueryParams","NestHttpRouteDec","apiPathParams","startsWith","slice","extractPathParams","swaggerQueryParams","push","ApiQuery","OrderDirection","method","ApiParam","ApiOperation","summary","ApiOkResponse","ApiNoContentResponse","Query","applyApiDecorators","descriptor","proto","prototype","forEach","d","index","resolvePersistenceMethod","persistence","ModelService","statement","createRouteHandler","async","pathParams","queryParams","log","for","debug","JSON","stringify","direction","error","defineRouteMethod","ControllerClass","defineProperty","writable","getOwnPropertyDescriptor","DecafController","Service","clientContext","super","logCtx","operation","allowCreate","ContextualLoggedClass","call","DecafModelController","_persistence","getService","Repository","forModel","certs","override","contextual","ctxArgs","repo","then","dtoCache","Map","DtoFor","TransactionOperationKeys","cache","has","set","WeakMap","getDtoCache","cached","isUpdateOp","BulkCrudOperationKeys","UPDATE_ALL","DynamicDTO","toPascalCase","pkProp","pk","pkIsGenerated","pkProps","generated","isGeneratedAcrossInheritance","allProps","from","Set","relations","scalarProps","prop","validation","getValidationAcrossInheritance","isRequired","ValidationKeys","REQUIRED","typeHint","getTypeAcrossInheritance","apiOptions","designType","enumerable","configurable","relation","relationMeta","relationType","meta","validationFor","LIST","relationDto","addRelationUpdate","addRelation","DtoClass","extraModels","dtoRef","pkTypeName","pkPropsMetadata","pkType","BigInt","getPkOpenApiType","oneOfItems","$ref","oneOf","current","Function","getPrototypeOf","Adapter","transformerFor","adapter","alias","bind","flavoursToTransform","Context","toResponse","pending","header","FromModelController","Logging","getPersistence","ModelClazz","createQueryRoutesFromRepository","prefix","QUERY","queryMethods","routeMethods","QueryController","entries","replace","segment","trim","join","message","httpMethod","objValues","fields","f","create","tableName","toKebabCase","modelClazzName","getPK","apiProperties","getRouteParametersFromModel","BaseController","DynamicModelController","info","listBy","details","PreparedStatementKeys","LIST_BY","paginateBy","PAGE_BY","find","FIND","ASC","page","PAGE","ref","findOneBy","FIND_ONE_BY","findBy","FIND_BY","toOverrides","STATEMENT","pathDirection","a","parseInt","resolvedDirection","COUNT_OF","MAX_OF","MIN_OF","AVG_OF","SUM_OF","DISTINCT_OF","GROUP_OF","createAll","resp","CREATE_ALL","created","verbose","readAll","ids","READ_ALL","read","routeParams","id","ValidationError","updateAll","updated","update","payload","parse","deleteAll","DELETE_ALL","delete","del","Param","ApiNotFoundResponse","ApiBody","schema","getSchemaPath","ApiCreatedResponse","ApiBadRequestResponse","ApiUnprocessableEntityResponse","Response","passthrough","Controller","ApiTags","ApiExtraModels","composed","DBKeys","COMPOSED","composedKeys","uniqueKeys","separator","DecafRequestHandlerInterceptor","requestContext","executor","contextualize","flags","flavours","flavour","transformer","DefaultAdapterFlags","logger","timestamp","Date","getResponse","RequestToContextTransformer","requestToContextTransformer","getModuleFor","DecafModelModule","DecafModelModule_1","createModelServices","models","provide","useFactory","forRoot","trackedModels","modelServices","autoServices","controllers","module","providers","H","APP_INTERCEPTOR","useClass","Module","Decoration","InjectablesKeys","INJECTABLE","extend","category","cfg","DefaultInjectablesConfig","singleton","DEFAULT","durable","INJECT","MAX","max","maximum","MIN","min","minimum","MAX_LENGTH","maxLength","MIN_LENGTH","minLength","TYPE","DATE","format","ENUM","PATTERN","pat","pattern","source","COLUMN","DecorationKeys","DESCRIPTION","AUTH","CorsError","ForbiddenError","msg","DecafExceptionFilter","exception","host","response","isProduction","LoggedEnvironment","env","statusCode","NotFoundException","NotAcceptableException","getStatus","BaseError","status","code","json","toISOString","url","Catch","SWAGGER_UI_CONSTANTS","auth","scheme","bearerFormat","in","topbarBgColor","SwaggerCustomUI","customCSS","css","topbarIconPath","b64","getCustomOptions","favicon","faviconPath","customSiteTitle","title","customCss","swaggerOptions","persistAuthorization","jsonDocumentUrl","yamlDocumentUrl","file","img","filePath","assetsPath","readFileSync","encoding","SwaggerBuilder","app","createDocument","config","DocumentBuilder","setTitle","setDescription","setVersion","version","addBearerAuth","build","SwaggerModule","setupSwagger","document","swaggerUI","faviconFilePath","topbarIconFilePath","setup","DecafCoreModule","_logger","DecafCoreModule_1","moduleRef","bootPersistence","trimmed","conf","contr","pop","PersistenceService","boot","clients","client","i","c","typeOrmModuleOptions","useValue","inject","onApplicationShutdown","adapters","shutdown","Global","ModuleRef","LISTENING_ADAPTERS_FLAVOURS","EventsController","EventsController_1","listen","Observable","observer","cb","refresh","Promise","resolve","modelConstr","serialize","normalizeEventResponse","observe","unObserve","listenForModel","Sse","DecafStreamModule","DecafStreamModule_1","forFlavours","imports","RouterModule","register","DecafModule","DecafModule_1","forRootAsync","autoControllers","observerOptions","enableObserverEvents","VERSION","PACKAGE_NAME","registerLibrary","roles","Logger","initialize","enableLogger","customLogger","useLogger","enableCors","origins","allowMethods","allowedOrigins","o","toLowerCase","corsOptions","origin","callback","credentials","methods","useHelmet","helmet","require","use","warn","useGlobalPipes","pipes","useGlobalFilters","filters","useGlobalInterceptors","interceptors","start","port","process","PORT","getUrl","UseFilters","m"],"mappings":"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"}
1
+ {"version":3,"file":"for-nest.cjs","sources":["../src/overrides/constants.ts","../src/overrides/decoration.ts","../src/overrides/helpers.ts","../src/decaf-model/decorators/ApiOperationFromModel.ts","../src/decaf-model/decorators/ApiParamsFromModel.ts","../src/decaf-model/decorators/DecafBody.ts","../src/decaf-model/decorators/DecafParams.ts","../src/decaf-model/decorators/utils.ts","../src/constants.ts","../src/decaf-model/decorators/decorators.ts","../src/interceptors/AuthInterceptor.ts","../src/request/DecafAuthHandler.ts","../src/request/DecafRequestContext.ts","../src/request/DecafHandlerExecutor.ts","../src/decaf-model/utils.ts","../src/controllers.ts","../src/factory/openapi/DtoBuilder.ts","../src/overrides/overrides.ts","../src/decaf-model/FromModelController.ts","../src/interceptors/DecafRequestHandlerInterceptor.ts","../src/interceptors/context.ts","../src/decaf-model/DecafModelModule.ts","../src/decoration.ts","../src/factory/errors/cors.ts","../src/factory/exceptions/DecafErrorFilter.ts","../src/factory/openapi/constants.ts","../src/factory/openapi/SwaggerCustomUI.ts","../src/factory/openapi/SwaggerBuilder.ts","../src/core-module.ts","../src/events-module/constant.ts","../src/events-module/EventsController.ts","../src/events-module/utils.ts","../src/events-module/DecafStreamModule.ts","../src/module.ts","../src/index.ts","../src/factory/NestBootstraper.ts","../src/factory/exceptions/decorators.ts","../src/utils.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["DECORATORS_PREFIX","DECORATORS","API_OPERATION","API_RESPONSE","API_PRODUCES","API_CONSUMES","API_TAGS","API_CALLBACKS","API_PARAMETERS","API_HEADERS","API_MODEL_PROPERTIES","API_MODEL_PROPERTIES_ARRAY","API_SECURITY","API_EXCLUDE_ENDPOINT","API_EXCLUDE_CONTROLLER","API_EXTRA_MODELS","API_EXTENSION","API_SCHEMA","API_DEFAULT_GETTER","API_LINK","isUndefined","obj","getEnumValues","enumType","Array","isArray","numericValues","Object","values","filter","value","map","toString","keys","key","includes","getEnumType","isString","length","createPropertyDecorator","metakey","metadata","overrideExisting","target","propertyKey","properties","Reflect","getMetadata","defineMetadata","existingMetadata","newMetadata","pickBy","negate","metadataToSave","type","constructor","required","ApiProperty","options","createApiPropertyDecorator","input","isArrayFlag","isInputArray","getTypeIsArrayTuple","opts","undefined","enum","enumValues","items","isOperationBlocked","ModelConstructor","op","handler","args","Metadata","get","OperationKeys","REFLECT","BLOCK","ApiOperationFromModel","verb","path","httpToCrud","GET","READ","Get","POST","CREATE","Post","PUT","UPDATE","Put","PATCH","Patch","DELETE","Delete","crudOp","HttpMethodDecorator","apply","ApiExcludeEndpoint","ApiParamsFromModel","props","decorators","p","ApiParamDec","name","description","String","applyDecorators","DecafBody","createParamDecorator","data","ctx","body","switchToHttp","getRequest","controller","getClass","ModelConstr","class","InternalServerErrorException","item","OrderedParams","order","req","original","params","orderList","ordered","k","raw","valuesInOrder","keysInOrder","DecafParams","DecafQuery","_","parsed","query","limit","n","Number","isNaN","offset","bookmark","HttpVerbToDecorator","decorator","Error","DECAF_MODULE_OPTIONS","DECAF_ADAPTER_ID","DECAF_ROUTE","DECAF_HANDLERS","Symbol","DECAF_ADAPTER_OPTIONS","AUTH_HANDLER","AUTH_META_KEY","DECAF_CONTEXT_KEY","Auth","model","resource","ApiBearerAuth","SetMetadata","UseInterceptors","AuthInterceptor","reflector","authHandler","this","intercept","next","modelName","getHandler","authorize","handle","__decorate","Injectable","__param","Optional","Inject","Reflector","DecafAuthHandler","parseRequest","userRole","headers","authorization","split","AuthorizationError","Model","PersistenceKeys","AUTH_ROLE","DecafRequestContext","request","put","record","overrides","e","_ctx","accumulate","assign","applyCtx","InternalError","scope","Scope","REQUEST","Request","DecafHandlerExecutor","handlers","context","exec","res","apiParamSpec","getApiDecorators","methodName","routePath","httpVerb","includeQueryParams","NestHttpRouteDec","apiPathParams","startsWith","slice","extractPathParams","swaggerQueryParams","push","ApiQuery","OrderDirection","method","ApiParam","ApiOperation","summary","ApiOkResponse","ApiNoContentResponse","Query","applyApiDecorators","descriptor","proto","prototype","forEach","d","index","resolvePersistenceMethod","persistence","ModelService","statement","createRouteHandler","async","pathParams","queryParams","log","for","debug","JSON","stringify","direction","error","defineRouteMethod","ControllerClass","defineProperty","writable","getOwnPropertyDescriptor","DecafController","Service","clientContext","super","logCtx","operation","allowCreate","ContextualLoggedClass","call","DecafModelController","_persistence","getService","Repository","forModel","certs","override","contextual","ctxArgs","repo","then","dtoCache","Map","DtoFor","TransactionOperationKeys","cache","has","set","WeakMap","getDtoCache","cached","isUpdateOp","BulkCrudOperationKeys","UPDATE_ALL","DynamicDTO","toPascalCase","pkProp","pk","pkPropsMetadata","pkProps","pkDesignType","pkTypeIsNumeric","BigInt","pkIsGenerated","generated","generatedBySequence","isPropertyGeneratedAcrossInheritance","allProps","from","Set","relations","scalarProps","prop","validation","getValidationAcrossInheritance","isRequired","ValidationKeys","REQUIRED","typeHint","getTypeAcrossInheritance","apiOptions","designType","enumerable","configurable","relation","relationMeta","relationType","meta","validationFor","LIST","relationDto","addRelationUpdate","addRelation","DtoClass","extraModels","dtoRef","pkTypeName","pkType","getPkOpenApiType","oneOfItems","$ref","oneOf","current","Function","getPrototypeOf","Adapter","transformerFor","adapter","alias","bind","flavoursToTransform","Context","toResponse","pending","header","FromModelController","Logging","getPersistence","ModelClazz","createQueryRoutesFromRepository","prefix","QUERY","queryMethods","routeMethods","QueryController","entries","replace","segment","trim","join","message","httpMethod","objValues","fields","f","create","tableName","toKebabCase","modelClazzName","getPK","apiProperties","getRouteParametersFromModel","BaseController","DynamicModelController","info","listBy","details","PreparedStatementKeys","LIST_BY","paginateBy","PAGE_BY","find","FIND","ASC","page","PAGE","ref","findOneBy","FIND_ONE_BY","findBy","FIND_BY","toOverrides","STATEMENT","pathDirection","a","parseInt","resolvedDirection","COUNT_OF","MAX_OF","MIN_OF","AVG_OF","SUM_OF","DISTINCT_OF","GROUP_OF","createAll","resp","CREATE_ALL","created","verbose","readAll","ids","READ_ALL","read","routeParams","id","ValidationError","updateAll","updated","update","payload","parse","deleteAll","DELETE_ALL","delete","del","Param","ApiNotFoundResponse","ApiBody","schema","getSchemaPath","ApiCreatedResponse","ApiBadRequestResponse","ApiUnprocessableEntityResponse","Response","passthrough","Controller","ApiTags","ApiExtraModels","composed","DBKeys","COMPOSED","composedKeys","uniqueKeys","separator","DecafRequestHandlerInterceptor","requestContext","executor","contextualize","flags","flavours","flavour","transformer","DefaultAdapterFlags","logger","timestamp","Date","getResponse","RequestToContextTransformer","requestToContextTransformer","getModuleFor","DecafModelModule","DecafModelModule_1","createModelServices","models","provide","useFactory","forRoot","trackedModels","modelServices","autoServices","controllers","module","providers","H","APP_INTERCEPTOR","useClass","Module","Decoration","InjectablesKeys","INJECTABLE","extend","category","cfg","DefaultInjectablesConfig","singleton","DEFAULT","durable","INJECT","MAX","max","maximum","MIN","min","minimum","MAX_LENGTH","maxLength","MIN_LENGTH","minLength","TYPE","DATE","format","ENUM","PATTERN","pat","pattern","source","COLUMN","DecorationKeys","DESCRIPTION","AUTH","CorsError","ForbiddenError","msg","DecafExceptionFilter","exception","host","response","isProduction","LoggedEnvironment","env","statusCode","NotFoundException","NotAcceptableException","getStatus","BaseError","status","code","json","toISOString","url","Catch","SWAGGER_UI_CONSTANTS","auth","scheme","bearerFormat","in","topbarBgColor","SwaggerCustomUI","customCSS","css","topbarIconPath","b64","getCustomOptions","favicon","faviconPath","customSiteTitle","title","customCss","swaggerOptions","persistAuthorization","jsonDocumentUrl","yamlDocumentUrl","file","img","filePath","assetsPath","readFileSync","encoding","SwaggerBuilder","app","createDocument","config","DocumentBuilder","setTitle","setDescription","setVersion","version","addBearerAuth","build","SwaggerModule","setupSwagger","document","swaggerUI","faviconFilePath","topbarIconFilePath","setup","DecafCoreModule","_logger","DecafCoreModule_1","moduleRef","bootPersistence","trimmed","conf","contr","pop","PersistenceService","boot","clients","client","i","c","typeOrmModuleOptions","useValue","inject","onApplicationShutdown","adapters","shutdown","Global","ModuleRef","LISTENING_ADAPTERS_FLAVOURS","EventsController","EventsController_1","listen","Observable","observer","cb","refresh","Promise","resolve","modelConstr","serialize","normalizeEventResponse","observe","unObserve","listenForModel","Sse","DecafStreamModule","DecafStreamModule_1","forFlavours","imports","RouterModule","register","DecafModule","DecafModule_1","forRootAsync","autoControllers","observerOptions","enableObserverEvents","VERSION","PACKAGE_NAME","registerLibrary","roles","Logger","initialize","enableLogger","customLogger","useLogger","enableCors","origins","allowMethods","allowedOrigins","o","toLowerCase","corsOptions","origin","callback","credentials","methods","useHelmet","helmet","require","use","warn","useGlobalPipes","pipes","useGlobalFilters","filters","useGlobalInterceptors","interceptors","start","port","process","PORT","getUrl","UseFilters","m"],"mappings":"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"}