@decaf-ts/for-nest 0.2.1 → 0.2.3

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,i,s,n,c,p,d,l,u,h){"use strict";function m(e){if(e&&e.__esModule)return 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 y=m(h);const f="swagger",g={API_OPERATION:f+"/apiOperation",API_RESPONSE:f+"/apiResponse",API_PRODUCES:f+"/apiProduces",API_CONSUMES:f+"/apiConsumes",API_TAGS:f+"/apiUseTags",API_CALLBACKS:f+"/apiCallbacks",API_PARAMETERS:f+"/apiParameters",API_HEADERS:f+"/apiHeaders",API_MODEL_PROPERTIES:f+"/apiModelProperties",API_MODEL_PROPERTIES_ARRAY:f+"/apiModelPropertiesArray",API_SECURITY:f+"/apiSecurity",API_EXCLUDE_ENDPOINT:f+"/apiExcludeEndpoint",API_EXCLUDE_CONTROLLER:f+"/apiExcludeController",API_EXTRA_MODELS:f+"/apiExtraModels",API_EXTENSION:f+"/apiExtension",API_SCHEMA:f+"/apiSchema",API_DEFAULT_GETTER:f+"/apiDefaultGetter",API_LINK:f+"/apiLink"},_=e=>void 0===e;function A(e){if("function"==typeof e)return A(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 E(e){return e.filter(s.isString).length>0?"string":"number"}function P(e,t,r=!0){return(a,o)=>{const i=Reflect.getMetadata(g.API_MODEL_PROPERTIES_ARRAY,a)||[],n=":"+o;i.includes(n)||Reflect.defineMetadata(g.API_MODEL_PROPERTIES_ARRAY,[...i,":"+o],a);const c=Reflect.getMetadata(e,a,o);if(c){const i=s.pickBy(t,s.negate(_)),n=r?{...c,...i}:{...i,...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,...s.pickBy(t,s.negate(_))},a,o)}}}function b(e={}){return O(e)}function O(e={},t=!0){const[r,a]=((e,t)=>{if(!e)return[e,t];if(t)return[e,t];const r=s.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=A(e.enum);e.items={type:E(t),enum:t},delete e.enum}else if("enum"in e&&void 0!==e.enum){const t=A(e.enum);e.enum=t,e.type=E(t)}var o;return Array.isArray(e.type)&&(e.type="array",e.items={type:"array",items:{type:e.type[0]}}),P(g.API_MODEL_PROPERTIES,e,t)}function R(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 i={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]},[s,p]=i[r];return R(e,s)?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)}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(b({required:!0})).apply(),t.Decoration.for(o.ValidationKeys.MAX).extend({decorator:e=>b({maximum:e})}).apply(),t.Decoration.for(o.ValidationKeys.MIN).extend({decorator:e=>b({minimum:e})}).apply(),t.Decoration.for(o.ValidationKeys.MAX_LENGTH).extend({decorator:e=>b({maxLength:e})}).apply(),t.Decoration.for(o.ValidationKeys.MIN_LENGTH).extend({decorator:e=>b({minLength:e})}).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()),b({type:e})(t,r))}).apply(),t.Decoration.for(o.ValidationKeys.DATE).extend({decorator:e=>b({type:String,format:"date-time"})}).apply(),t.Decoration.for(o.ValidationKeys.ENUM).extend({decorator:e=>b({enum:Array.isArray(e)?e:Object.values(e)})}).apply(),t.Decoration.for(o.ValidationKeys.PATTERN).extend({decorator:e=>b({pattern:"string"==typeof e?e:e.source})}).apply(),t.Decoration.for(i.PersistenceKeys.COLUMN).extend({decorator:e=>b({name:e})}).apply(),t.Decoration.for(t.DecorationKeys.DESCRIPTION).extend({decorator:e=>b({description:e})}).apply();const T=a.createParamDecorator((e,t)=>{const r=t.switchToHttp().getRequest().body,o=t.getClass(),i=o.class;if(!i)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 i(e)):new i(r):r}),v=a.createParamDecorator((e,t)=>{const r=t.switchToHttp().getRequest(),a=r?.params??{},o=e??Object.keys(a),i=o.map(e=>a[e]);return{raw:a,valuesInOrder:i,keysInOrder:o}});function S(e=[]){const t=e.map(e=>e.name);return v(t)}const C=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 x(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",M="DecafAdapter",k="DecafRoute",$=Symbol("DecafHandlers"),F=Symbol("DecafAdapterForOptions"),N=Symbol("AUTH_HANDLER"),L="auth:meta",j="AuthRole",q=Symbol("decaf:context");function B(t){const r="string"==typeof t?t:t.name;return a.applyDecorators(a.SetMetadata(L,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(L,e.getHandler())??this.reflector.get(L,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(N)),p.__metadata("design:paramtypes",[d.Reflector,Object])],e.AuthInterceptor);class K{parseRequest(e){const t=e.headers.authorization?.split(" ")[1];return t}async authorize(e,r){const a=e.switchToHttp().getRequest(),s=this.parseRequest(a);if(!s)throw new i.AuthorizationError("Unauthenticated");if(!t.Metadata.get(o.Model.get(r),j).includes(s))throw new i.AuthorizationError("Missing role: "+s)}}e.DecafRequestContext=class{put(e){this._ctx=this.ctx.accumulate(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})],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.ctx,e,t)}},e.DecafHandlerExecutor=p.__decorate([a.Injectable({scope:a.Scope.REQUEST}),p.__param(0,a.Inject($)),p.__metadata("design:paramtypes",[Array,e.DecafRequestContext])],e.DecafHandlerExecutor);class U{}function H(e){return r=>(t.Metadata.set("transformers",e,r),"function"==typeof r?t.metadata("transformers",e)(r):r)}e.RamTransformer=class{async from(e){const t=e.headers.authorization?e.headers.authorization.split(" ")[1]:void 0;return t?{UUID:t}:{}}},e.RamTransformer=p.__decorate([H("ram")],e.RamTransformer);const G=e=>({name:e,description:e+" parameter for the query",required:!0,type:String});function z(e,t,r,o=!1){const s=x(r),c=(e=>e.split("/").filter(e=>e.startsWith(":")).map(e=>e.slice(1)))(t).map(G),p=[];return"GET"===r&&o&&p.push(n.ApiQuery({name:"direction",required:!1,enum:i.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:[s(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:[S(c),a.Query()]}}function Q(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 V(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:n}=r;return await((e,t,...r)=>{if(e instanceof i.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}`)})(this.persistence(),e,...t.valuesInOrder,o,s,n)}catch(t){throw a.error(`Custom query "${e}" failed`,t),t}}}function Y(e,t,r){return Object.defineProperty(e.prototype||e,t,{value:r,writable:!1}),Object.getOwnPropertyDescriptor(e.prototype||e,t)}class J extends i.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),i.ContextualLoggedClass.logCtx.call(this,t,a||{},r,...e,o)}}class X extends J{persistence(e){if(!this._persistence)try{this._persistence=i.ModelService.getService(this.class)}catch(e){this._persistence=i.Repository.forModel(this.class)}return e?this._persistence instanceof i.Repository?this._persistence.override(e.toOverrides()):this._persistence.for(e.toOverrides()):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 s=this.persistence(a);let n,c;return s instanceof i.ModelService?n=s.repo.adapter:s instanceof i.Repository?n=s.adapter:s.context&&(n=s),r?n.logCtx(e,t,!0,o).then(e=>e):(c=n.logCtx(e,t,!1,o),c)}}function W(e,r){if(!i.TransactionOperationKeys.includes(e))return r;const a=[c.OperationKeys.UPDATE,c.BulkCrudOperationKeys.UPDATE_ALL].includes(e),s=t.Metadata.properties(r)||[],p=o.Model.relations(r)||[];let d=s.filter(e=>o.Model.generated(r,e));a&&(d=d.filter(e=>e!==o.Model.pk(r)));class u extends(n.OmitType(r,d)){}function h(e,t,r){r||(Object.defineProperty(u.prototype,e,{value:r?[t]:t,writable:!0,enumerable:!0,configurable:!0}),Reflect.defineMetadata("design:type",t,u.prototype,e))}Object.defineProperty(u,"name",{value:`${l.toPascalCase(r.name)}${l.toPascalCase(e)}DTO`});for(const a of p){let i=t.Metadata.allowedTypes(r,a);if(i=i?Array.isArray(i)?i[0]:i:void 0,i="function"!=typeof i||i.name?i:i(),!i)throw new c.InternalError(`Type for relation ${a} not found`);if(o.Model.get(i.name)){const s=t.Metadata.validationFor(r,a);h(a,W(e,i),!!s[o.ValidationKeys.LIST])}}return u}class Z{static{this.log=l.Logging.for(Z.name)}static getPersistence(e){try{return i.ModelService.getService(e)}catch(t){return i.Repository.forModel(e)}}static createQueryRoutesFromRepository(e,r=i.PersistenceKeys.QUERY){const a=Z.log.for(Z.createQueryRoutesFromRepository),o=e instanceof i.ModelService?e.repo:e,s=o.class,n=t.Metadata.get(o.constructor,t.Metadata.key(i.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=V(e);if(!o){const t=`Invalid or missing handler for model ${s.name} on decorated method ${e}`;throw a.error(t),Error(t)}const i=Y(p,e,o);i&&Q(p,e,i,z(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=Y(p,e,V(e));o&&Q(p,e,o,z(e,a,"GET",!0))}return p}static create(t){const r=Z.log.for(Z.create),s=o.Model.tableName(t),d=l.toKebabCase(s),u=t.name,h=Z.getPersistence(t),{description:m,getPK:y,apiProperties:f,path:g}=Z.getRouteParametersFromModel(t);r.debug("Creating controller for model: "+u);const _=Z.createQueryRoutesFromRepository(h);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([],i.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([],i.PreparedStatementKeys.PAGE_BY,!0)).for(this.paginateBy);return this.persistence(r).paginateBy(e,t.direction,t,r)}async findOneBy(e,t){const{ctx:r}=(await this.logCtx([],i.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([],i.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([],i.PersistenceKeys.STATEMENT,!0)).for(this.statement),{direction:o,offset:s,limit:n,bookmark:c}=r;switch(t=t.map(e=>("string"==typeof e?parseInt(e):e)||e),e){case i.PreparedStatementKeys.FIND_BY:break;case i.PreparedStatementKeys.LIST_BY:t.push(o);break;case i.PreparedStatementKeys.PAGE_BY:t=[t[0],o,{limit:n,offset:s,bookmark:c}];case i.PreparedStatementKeys.FIND_ONE_BY:}return this.persistence(a).statement(e,...t,a)}async createAll(e){const{ctx:r,log:a}=(await this.logCtx([],c.BulkCrudOperationKeys.CREATE_ALL,!0)).for(this.createAll);let o;a.verbose("creating new "+u);try{o=await this.persistence(r).createAll(e.map(e=>new t(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]}`),o}async create(e){const{ctx:t,log:r}=(await this.logCtx([],c.OperationKeys.CREATE,!0)).for(this.create);let a;r.verbose("creating new "+u);try{a=await this.persistence(t).create(e,t)}catch(e){throw r.error("Failed to create new "+u,e),e}return r.info(`created new ${u} with id ${a[this.pk]}`),a}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}`),a=await this.persistence(t).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}`),o=await this.persistence(t).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){const{ctx:t,log:r}=(await this.logCtx([],c.BulkCrudOperationKeys.UPDATE_ALL,!0)).for(this.updateAll);let a;try{r.info(`updating ${e.length} ${u}`);const o=e.map(e=>JSON.parse(JSON.stringify(e)));a=await this.persistence(t).updateAll(o,t)}catch(e){throw r.error(e),e}return a}async update(e,r){const{ctx:a,log:o}=(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 s;try{o.info(`updating ${u} with ${this.pk} ${i}`);const e=JSON.parse(JSON.stringify(r));s=await this.persistence(a).update(new t({...e,[this.pk]:i}),a)}catch(e){throw o.error(e),e}return s}async deleteAll(e){const{ctx:t,log:r}=(await this.logCtx([],c.BulkCrudOperationKeys.DELETE_ALL,!0)).for(this.deleteAll);let a;try{r.debug(`deleting ${e.length} ${u}: ${e}`),a=await this.persistence(t).deleteAll(e,t)}catch(t){throw r.error(`Failed to delete ${u} with id ${e}`,t),t}return r.info(`deleted ${a.length} ${u}`),a}async delete(e){const{ctx:t,log:r}=(await this.logCtx([],c.OperationKeys.DELETE,!0)).for(this.delete),a=y(...e.valuesInOrder);if(void 0===a)throw new c.ValidationError(`No ${this.pk} provided`);let o;try{r.debug(`deleting ${u} with ${this.pk} ${a}`),o=await this.persistence(t).delete(a,t)}catch(e){throw r.error(`Failed to delete ${u} with id ${a}`,e),e}return r.info(`deleted ${u} with id ${a}`),o}};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:i.OrderDirection}),n.ApiOkResponse({description:u+" listed successfully."}),p.__param(1,C()),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:i.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,C()),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","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:i.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,C()),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:i.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,C()),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,T()),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Array]),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,T()),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[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,S(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",items:{$ref:n.getSchemaPath(t)}}}),n.ApiCreatedResponse({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,T()),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Array]),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,schema:{$ref:n.getSchemaPath(t)}}),n.ApiOkResponse({description:u+" updated successfully."}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),n.ApiBadRequestResponse({description:"Payload validation failed."}),p.__param(0,S(f)),p.__param(1,T()),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[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+" retrieved successfully."}),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,"deleteAll",null),p.__decorate([w(t,"DELETE",g),D(f),n.ApiOperation({summary:`Delete a ${u} record by id.`}),n.ApiOkResponse({description:u+" record deleted successfully."}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),p.__param(0,S(f)),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Object]),p.__metadata("design:returntype",Promise)],A.prototype,"delete",null),A=p.__decorate([a.Controller(d),n.ApiTags(u),n.ApiExtraModels(t),B(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)),i=a?.args??[],s=Array.isArray(i)&&i.length>0?Array.from(new Set([...i])):Array.from(new Set([r])),n=t.Metadata.description(e);return{path:":"+s.join("/:"),description:n,apiProperties:s.map(r=>({name:r,description:t.Metadata.description(e,r),required:!0,type:String})),getPK:(...e)=>a?.separator?e.join(a.separator):e.join("")}}}function ee(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:()=>i.ModelService.forModel(e)}))}static forRoot(t,a={}){const o=this.log.for(this.forRoot);o.info("Generating controllers for flavour...");const s=i.Adapter.models(t);let n=[];a.autoServices&&(o.info("Auto-services enabled. Initializing service generation."),n=this.createModelServices(s),o.info(`Auto-services completed. ${n.length} services initialized.`));const c=s.map(Z.create);return o.info(`Generated ${c.length} controllers`),{module:r,controllers:c,providers:[{provide:$,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}i.Adapter.transformerFor=(e=>{const r="string"==typeof e?e:e.alias;return t.Metadata.innerGet(Symbol.for("transformers"),r)}).bind(i.Adapter),i.Adapter.flavoursToTransform=(()=>{const e=t.Metadata.innerGet(Symbol.for("transformers"));if(e)return Object.keys(e)}).bind(i.Adapter),e.DecafRequestHandlerInterceptor=class{constructor(e,t){this.requestContext=e,this.executor=t}async contextualize(e){const t={headers:e.headers,overrides:{}},r=i.Adapter.flavoursToTransform();if(r)for(const a of r)try{const r=i.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 i.Context).accumulate(Object.assign({},i.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 te extends i.ForbiddenError{constructor(e){super(e,te.name)}}e.DecafExceptionFilter=class{catch(e,t){const r=t.switchToHttp(),a=r.getResponse(),o=r.getRequest(),i="production"===l.LoggedEnvironment.env;e instanceof c.BaseError||(e=new c.InternalError(e.message)),a.status(e.code).json({status:e.code,error:i?e.name:e.message,timestamp:(new Date).toISOString(),path:o.url,method:o.method})}},e.DecafExceptionFilter=p.__decorate([a.Catch()],e.DecafExceptionFilter);const re={title:"Swagger | OpenAPI Specification (OAS)",description:"Standardized format for describing RESTful APIs",version:"0.0.1",path:"docs",faviconFilePath:"",topbarIconFilePath:"",auth:{type:"http",scheme:"bearer",bearerFormat:"JWT",name:"Authorization",description:"Enter JWT token",in:"header"},persistAuthorization:!0,topbarBgColor:"#000000"};class ae{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||re.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=y.join(this.options.assetsPath||"",e),a=u.readFileSync(r,{encoding:"base64"});return t?"data:image/png;base64,"+a:a}}class oe{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||re.auth).build();return n.SwaggerModule.createDocument(this.app,t,{extraModels:this.options.extraModels||[]})}setupSwagger(){const e=this.createDocument(),t=new ae({title:this.options.title,path:this.options.path||re.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||re.path,this.app,e,{...t.getCustomOptions()})}}var ie;let se=class{static{ie=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(ie)),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 i.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=i.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 U?e:new e}H(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=>ie.bootPersistence(e),provide:M,durable:!0,scope:a.Scope.DEFAULT,inject:[I]};return{module:ie,providers:[r,t],exports:[r]}}async onApplicationShutdown(){const e=ie.log.for(this.onApplicationShutdown),t=this.moduleRef.get(M);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)}}};var ne;se=ie=p.__decorate([a.Global(),a.Module({}),p.__param(0,a.Inject(I)),p.__metadata("design:paramtypes",[Object,d.ModuleRef])],se),e.DecafModule=ne=class{static async forRootAsync(e){const{autoControllers:t,autoServices:r,handlers:a}=e,o=(await se.bootPersistence(e)).map(e=>e.flavour),i=[se.forRoot(e)];return t&&o.forEach(e=>{i.push(ee(e).forRoot(e,{autoServices:r,handlers:a}))}),{module:ne,imports:i}}},e.DecafModule=ne=p.__decorate([a.Module({})],e.DecafModule);const ce="##VERSION##",pe="##PACKAGE##";t.Metadata.registerLibrary(pe,ce),e.AUTH_HANDLER=N,e.AUTH_META_KEY=L,e.ApiOperationFromModel=w,e.ApiParamsFromModel=D,e.ApiProperty=b,e.Auth=B,e.AuthRole=j,e.BulkApiOperationFromModel=(e,r,o)=>{const i={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]},[s,p]=i[r];return R(e,s)?t.apply(n.ApiExcludeEndpoint()):t.apply(p(o))},e.CorsError=te,e.DECAF_ADAPTER_ID=M,e.DECAF_ADAPTER_OPTIONS=F,e.DECAF_CONTEXT_KEY=q,e.DECAF_HANDLERS=$,e.DECAF_MODULE_OPTIONS=I,e.DECAF_ROUTE=k,e.DECORATORS=g,e.DECORATORS_PREFIX=f,e.DecafAuthHandler=K,e.DecafBody=T,e.DecafController=J,e.DecafModelController=X,e.DecafParams=S,e.DecafQuery=C,e.DecafRoleAuthHandler=class extends K{constructor(){super()}async authorize(e,r){const a=e.switchToHttp().getRequest(),s=this.parseRequest(a);if(!s)throw new i.AuthorizationError("Unauthenticated");const n=t.Metadata.get(o.Model.get(r),j);if(!n.includes(s))throw new i.AuthorizationError("Missing role: "+s);return n}},e.DtoFor=W,e.FromModelController=Z,e.HttpVerbToDecorator=x,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 te(`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 oe(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=pe,e.Roles=e=>t.metadata(j,e),e.SwaggerBuilder=oe,e.UseDecafFilter=()=>a.UseFilters(new e.DecafExceptionFilter),e.VERSION=ce,e.createApiPropertyDecorator=O,e.createPropertyDecorator=P,e.getEnumType=E,e.getEnumValues=A,e.getModuleFor=ee,e.isOperationBlocked=R,e.isUndefined=_,e.repoForModel=e=>{const t=o.Model.get(e);if(!t)throw new c.InternalError("Failed to find repository for "+e);return i.Repository.forModel(t)},e.route=(e,r)=>{const a=k;return t.Decoration.for(a).define({decorator:()=>(o,i,s)=>{const n={path:r,httpMethod:e,handler:s};return t.apply(t.methodMetadata(t.Metadata.key(a,i),n))(o,i,s)},args:[]}).apply()}},"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")):"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"],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);
1
+ var e,t;e=this,t=function(e,t,r,a,o,i,s,n,c,p,d,l,u,h){"use strict";function m(e){if(e&&e.__esModule)return 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 y=m(h);const f="swagger",g={API_OPERATION:f+"/apiOperation",API_RESPONSE:f+"/apiResponse",API_PRODUCES:f+"/apiProduces",API_CONSUMES:f+"/apiConsumes",API_TAGS:f+"/apiUseTags",API_CALLBACKS:f+"/apiCallbacks",API_PARAMETERS:f+"/apiParameters",API_HEADERS:f+"/apiHeaders",API_MODEL_PROPERTIES:f+"/apiModelProperties",API_MODEL_PROPERTIES_ARRAY:f+"/apiModelPropertiesArray",API_SECURITY:f+"/apiSecurity",API_EXCLUDE_ENDPOINT:f+"/apiExcludeEndpoint",API_EXCLUDE_CONTROLLER:f+"/apiExcludeController",API_EXTRA_MODELS:f+"/apiExtraModels",API_EXTENSION:f+"/apiExtension",API_SCHEMA:f+"/apiSchema",API_DEFAULT_GETTER:f+"/apiDefaultGetter",API_LINK:f+"/apiLink"},_=e=>void 0===e;function A(e){if("function"==typeof e)return A(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 E(e){return e.filter(s.isString).length>0?"string":"number"}function P(e,t,r=!0){return(a,o)=>{const i=Reflect.getMetadata(g.API_MODEL_PROPERTIES_ARRAY,a)||[],n=":"+o;i.includes(n)||Reflect.defineMetadata(g.API_MODEL_PROPERTIES_ARRAY,[...i,":"+o],a);const c=Reflect.getMetadata(e,a,o);if(c){const i=s.pickBy(t,s.negate(_)),n=r?{...c,...i}:{...i,...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,...s.pickBy(t,s.negate(_))},a,o)}}}function b(e={}){return O(e)}function O(e={},t=!0){const[r,a]=((e,t)=>{if(!e)return[e,t];if(t)return[e,t];const r=s.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=A(e.enum);e.items={type:E(t),enum:t},delete e.enum}else if("enum"in e&&void 0!==e.enum){const t=A(e.enum);e.enum=t,e.type=E(t)}var o;return Array.isArray(e.type)&&(e.type="array",e.items={type:"array",items:{type:e.type[0]}}),P(g.API_MODEL_PROPERTIES,e,t)}function R(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 i={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]},[s,p]=i[r];return R(e,s)?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)}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(b({required:!0})).apply(),t.Decoration.for(o.ValidationKeys.MAX).extend({decorator:e=>b({maximum:e})}).apply(),t.Decoration.for(o.ValidationKeys.MIN).extend({decorator:e=>b({minimum:e})}).apply(),t.Decoration.for(o.ValidationKeys.MAX_LENGTH).extend({decorator:e=>b({maxLength:e})}).apply(),t.Decoration.for(o.ValidationKeys.MIN_LENGTH).extend({decorator:e=>b({minLength:e})}).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()),b({type:e})(t,r))}).apply(),t.Decoration.for(o.ValidationKeys.DATE).extend({decorator:e=>b({type:String,format:"date-time"})}).apply(),t.Decoration.for(o.ValidationKeys.ENUM).extend({decorator:e=>b({enum:Array.isArray(e)?e:Object.values(e)})}).apply(),t.Decoration.for(o.ValidationKeys.PATTERN).extend({decorator:e=>b({pattern:"string"==typeof e?e:e.source})}).apply(),t.Decoration.for(i.PersistenceKeys.COLUMN).extend({decorator:e=>b({name:e})}).apply(),t.Decoration.for(t.DecorationKeys.DESCRIPTION).extend({decorator:e=>b({description:e})}).apply();const T=a.createParamDecorator((e,t)=>{const r=t.switchToHttp().getRequest().body,o=t.getClass(),i=o.class;if(!i)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 i(e)):new i(r):r}),v=a.createParamDecorator((e,t)=>{const r=t.switchToHttp().getRequest(),a=r?.params??{},o=e??Object.keys(a),i=o.map(e=>a[e]);return{raw:a,valuesInOrder:i,keysInOrder:o}});function S(e=[]){const t=e.map(e=>e.name);return v(t)}const C=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 x(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",M="DecafAdapter",k="DecafRoute",$=Symbol("DecafHandlers"),F=Symbol("DecafAdapterForOptions"),N=Symbol("AUTH_HANDLER"),L="auth:meta",j="AuthRole",q=Symbol("decaf:context");function B(t){const r="string"==typeof t?t:t.name;return a.applyDecorators(a.SetMetadata(L,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(L,e.getHandler())??this.reflector.get(L,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(N)),p.__metadata("design:paramtypes",[d.Reflector,Object])],e.AuthInterceptor);class K{parseRequest(e){const t=e.headers.authorization?.split(" ")[1];return t}async authorize(e,r){const a=e.switchToHttp().getRequest(),s=this.parseRequest(a);if(!s)throw new i.AuthorizationError("Unauthenticated");if(!t.Metadata.get(o.Model.get(r),j).includes(s))throw new i.AuthorizationError("Missing role: "+s)}}e.DecafRequestContext=class{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})],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.ctx,e,t)}},e.DecafHandlerExecutor=p.__decorate([a.Injectable({scope:a.Scope.REQUEST}),p.__param(0,a.Inject($)),p.__metadata("design:paramtypes",[Array,e.DecafRequestContext])],e.DecafHandlerExecutor);class U{}function H(e){return r=>(t.Metadata.set("transformers",e,r),"function"==typeof r?t.metadata("transformers",e)(r):r)}e.RamTransformer=class{async from(e){const t=e.headers.authorization?e.headers.authorization.split(" ")[1]:void 0;return t?{UUID:t}:{}}},e.RamTransformer=p.__decorate([H("ram")],e.RamTransformer);const G=e=>({name:e,description:e+" parameter for the query",required:!0,type:String});function z(e,t,r,o=!1){const s=x(r),c=(e=>e.split("/").filter(e=>e.startsWith(":")).map(e=>e.slice(1)))(t).map(G),p=[];return"GET"===r&&o&&p.push(n.ApiQuery({name:"direction",required:!1,enum:i.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:[s(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:[S(c),a.Query()]}}function Q(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 V(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:n}=r;return await((e,t,...r)=>{if(e instanceof i.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}`)})(this.persistence(),e,...t.valuesInOrder,o,s,n)}catch(t){throw a.error(`Custom query "${e}" failed`,t),t}}}function Y(e,t,r){return Object.defineProperty(e.prototype||e,t,{value:r,writable:!1}),Object.getOwnPropertyDescriptor(e.prototype||e,t)}class J extends i.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),i.ContextualLoggedClass.logCtx.call(this,t,a||{},r,...e,o)}}class X extends J{persistence(e){if(!this._persistence)try{this._persistence=i.ModelService.getService(this.class)}catch(e){this._persistence=i.Repository.forModel(this.class)}return e?this._persistence instanceof i.Repository?this._persistence.override(e.toOverrides()):this._persistence.for(e.toOverrides()):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 s=this.persistence(a);let n,c;return s instanceof i.ModelService?n=s.repo.adapter:s instanceof i.Repository?n=s.adapter:s.context&&(n=s),r?n.logCtx(e,t,!0,o).then(e=>e):(c=n.logCtx(e,t,!1,o),c)}}function W(e,r){if(!i.TransactionOperationKeys.includes(e))return r;const a=[c.OperationKeys.UPDATE,c.BulkCrudOperationKeys.UPDATE_ALL].includes(e),s=t.Metadata.properties(r)||[],p=o.Model.relations(r)||[];let d=s.filter(e=>o.Model.generated(r,e));a&&(d=d.filter(e=>e!==o.Model.pk(r)));class u extends(n.OmitType(r,d)){}function h(e,t,r){r||(Object.defineProperty(u.prototype,e,{value:r?[t]:t,writable:!0,enumerable:!0,configurable:!0}),Reflect.defineMetadata("design:type",t,u.prototype,e))}Object.defineProperty(u,"name",{value:`${l.toPascalCase(r.name)}${l.toPascalCase(e)}DTO`});for(const a of p){let i=t.Metadata.allowedTypes(r,a);if(i=i?Array.isArray(i)?i[0]:i:void 0,i="function"!=typeof i||i.name?i:i(),!i)throw new c.InternalError(`Type for relation ${a} not found`);if(o.Model.get(i.name)){const s=t.Metadata.validationFor(r,a);h(a,W(e,i),!!s[o.ValidationKeys.LIST])}}return u}class Z{static{this.log=l.Logging.for(Z.name)}static getPersistence(e){try{return i.ModelService.getService(e)}catch(t){return i.Repository.forModel(e)}}static createQueryRoutesFromRepository(e,r=i.PersistenceKeys.QUERY){const a=Z.log.for(Z.createQueryRoutesFromRepository),o=e instanceof i.ModelService?e.repo:e,s=o.class,n=t.Metadata.get(o.constructor,t.Metadata.key(i.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=V(e);if(!o){const t=`Invalid or missing handler for model ${s.name} on decorated method ${e}`;throw a.error(t),Error(t)}const i=Y(p,e,o);i&&Q(p,e,i,z(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=Y(p,e,V(e));o&&Q(p,e,o,z(e,a,"GET",!0))}return p}static create(t){const r=Z.log.for(Z.create),s=o.Model.tableName(t),d=l.toKebabCase(s),u=t.name,h=Z.getPersistence(t),{description:m,getPK:y,apiProperties:f,path:g}=Z.getRouteParametersFromModel(t);r.debug("Creating controller for model: "+u);const _=Z.createQueryRoutesFromRepository(h);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([],i.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([],i.PreparedStatementKeys.PAGE_BY,!0)).for(this.paginateBy);return this.persistence(r).paginateBy(e,t.direction,t,r)}async findOneBy(e,t){const{ctx:r}=(await this.logCtx([],i.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([],i.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([],i.PersistenceKeys.STATEMENT,!0)).for(this.statement),{direction:o,offset:s,limit:n,bookmark:c}=r;switch(t=t.map(e=>("string"==typeof e?parseInt(e):e)||e),e){case i.PreparedStatementKeys.FIND_BY:break;case i.PreparedStatementKeys.LIST_BY:t.push(o);break;case i.PreparedStatementKeys.PAGE_BY:t=[t[0],o,{limit:n,offset:s,bookmark:c}];case i.PreparedStatementKeys.FIND_ONE_BY:}return this.persistence(a).statement(e,...t,a)}async createAll(e){const{ctx:r,log:a}=(await this.logCtx([],c.BulkCrudOperationKeys.CREATE_ALL,!0)).for(this.createAll);let o;a.verbose("creating new "+u);try{o=await this.persistence(r).createAll(e.map(e=>new t(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]}`),o}async create(e){const{ctx:t,log:r}=(await this.logCtx([],c.OperationKeys.CREATE,!0)).for(this.create);let a;r.verbose("creating new "+u);try{a=await this.persistence(t).create(e,t)}catch(e){throw r.error("Failed to create new "+u,e),e}return r.info(`created new ${u} with id ${a[this.pk]}`),a}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}`),a=await this.persistence(t).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}`),o=await this.persistence(t).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){const{ctx:t,log:r}=(await this.logCtx([],c.BulkCrudOperationKeys.UPDATE_ALL,!0)).for(this.updateAll);let a;try{r.info(`updating ${e.length} ${u}`);const o=e.map(e=>JSON.parse(JSON.stringify(e)));a=await this.persistence(t).updateAll(o,t)}catch(e){throw r.error(e),e}return a}async update(e,r){const{ctx:a,log:o}=(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 s;try{o.info(`updating ${u} with ${this.pk} ${i}`);const e=JSON.parse(JSON.stringify(r));s=await this.persistence(a).update(new t({...e,[this.pk]:i}),a)}catch(e){throw o.error(e),e}return s}async deleteAll(e){const{ctx:t,log:r}=(await this.logCtx([],c.BulkCrudOperationKeys.DELETE_ALL,!0)).for(this.deleteAll);let a;try{r.debug(`deleting ${e.length} ${u}: ${e}`),a=await this.persistence(t).deleteAll(e,t)}catch(t){throw r.error(`Failed to delete ${u} with id ${e}`,t),t}return r.info(`deleted ${a.length} ${u}`),a}async delete(e){const{ctx:t,log:r}=(await this.logCtx([],c.OperationKeys.DELETE,!0)).for(this.delete),a=y(...e.valuesInOrder);if(void 0===a)throw new c.ValidationError(`No ${this.pk} provided`);let o;try{r.debug(`deleting ${u} with ${this.pk} ${a}`),o=await this.persistence(t).delete(a,t)}catch(e){throw r.error(`Failed to delete ${u} with id ${a}`,e),e}return r.info(`deleted ${u} with id ${a}`),o}};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:i.OrderDirection}),n.ApiOkResponse({description:u+" listed successfully."}),p.__param(1,C()),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:i.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,C()),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","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:i.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,C()),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:i.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,C()),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,T()),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Array]),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,T()),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[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,S(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",items:{$ref:n.getSchemaPath(t)}}}),n.ApiCreatedResponse({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,T()),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Array]),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,schema:{$ref:n.getSchemaPath(t)}}),n.ApiOkResponse({description:u+" updated successfully."}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),n.ApiBadRequestResponse({description:"Payload validation failed."}),p.__param(0,S(f)),p.__param(1,T()),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[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+" retrieved successfully."}),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,"deleteAll",null),p.__decorate([w(t,"DELETE",g),D(f),n.ApiOperation({summary:`Delete a ${u} record by id.`}),n.ApiOkResponse({description:u+" record deleted successfully."}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),p.__param(0,S(f)),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Object]),p.__metadata("design:returntype",Promise)],A.prototype,"delete",null),A=p.__decorate([a.Controller(d),n.ApiTags(u),n.ApiExtraModels(t),B(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)),i=a?.args??[],s=Array.isArray(i)&&i.length>0?Array.from(new Set([...i])):Array.from(new Set([r])),n=t.Metadata.description(e);return{path:":"+s.join("/:"),description:n,apiProperties:s.map(r=>({name:r,description:t.Metadata.description(e,r),required:!0,type:String})),getPK:(...e)=>a?.separator?e.join(a.separator):e.join("")}}}function ee(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:()=>i.ModelService.forModel(e)}))}static forRoot(t,a={}){const o=this.log.for(this.forRoot);o.info("Generating controllers for flavour...");const s=i.Adapter.models(t);let n=[];a.autoServices&&(o.info("Auto-services enabled. Initializing service generation."),n=this.createModelServices(s),o.info(`Auto-services completed. ${n.length} services initialized.`));const c=s.map(Z.create);return o.info(`Generated ${c.length} controllers`),{module:r,controllers:c,providers:[{provide:$,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}i.Adapter.transformerFor=(e=>{const r="string"==typeof e?e:e.alias;return t.Metadata.innerGet(Symbol.for("transformers"),r)}).bind(i.Adapter),i.Adapter.flavoursToTransform=(()=>{const e=t.Metadata.innerGet(Symbol.for("transformers"));if(e)return Object.keys(e)}).bind(i.Adapter),e.DecafRequestHandlerInterceptor=class{constructor(e,t){this.requestContext=e,this.executor=t}async contextualize(e){const t={headers:e.headers,overrides:{}},r=i.Adapter.flavoursToTransform();if(r)for(const a of r)try{const r=i.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 i.Context).accumulate(Object.assign({},i.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 te extends i.ForbiddenError{constructor(e){super(e,te.name)}}e.DecafExceptionFilter=class{catch(e,t){const r=t.switchToHttp(),a=r.getResponse(),o=r.getRequest(),i="production"===l.LoggedEnvironment.env;e instanceof c.BaseError||(e=new c.InternalError(e.message)),a.status(e.code).json({status:e.code,error:i?e.name:e.message,timestamp:(new Date).toISOString(),path:o.url,method:o.method})}},e.DecafExceptionFilter=p.__decorate([a.Catch()],e.DecafExceptionFilter);const re={title:"Swagger | OpenAPI Specification (OAS)",description:"Standardized format for describing RESTful APIs",version:"0.0.1",path:"docs",faviconFilePath:"",topbarIconFilePath:"",auth:{type:"http",scheme:"bearer",bearerFormat:"JWT",name:"Authorization",description:"Enter JWT token",in:"header"},persistAuthorization:!0,topbarBgColor:"#000000"};class ae{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||re.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=y.join(this.options.assetsPath||"",e),a=u.readFileSync(r,{encoding:"base64"});return t?"data:image/png;base64,"+a:a}}class oe{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||re.auth).build();return n.SwaggerModule.createDocument(this.app,t,{extraModels:this.options.extraModels||[]})}setupSwagger(){const e=this.createDocument(),t=new ae({title:this.options.title,path:this.options.path||re.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||re.path,this.app,e,{...t.getCustomOptions()})}}var ie;let se=class{static{ie=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(ie)),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 i.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=i.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 U?e:new e}H(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=>ie.bootPersistence(e),provide:M,durable:!0,scope:a.Scope.DEFAULT,inject:[I]};return{module:ie,providers:[r,t],exports:[r]}}async onApplicationShutdown(){const e=ie.log.for(this.onApplicationShutdown),t=this.moduleRef.get(M);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)}}};var ne;se=ie=p.__decorate([a.Global(),a.Module({}),p.__param(0,a.Inject(I)),p.__metadata("design:paramtypes",[Object,d.ModuleRef])],se),e.DecafModule=ne=class{static async forRootAsync(e){const{autoControllers:t,autoServices:r,handlers:a}=e,o=(await se.bootPersistence(e)).map(e=>e.flavour),i=[se.forRoot(e)];return t&&o.forEach(e=>{i.push(ee(e).forRoot(e,{autoServices:r,handlers:a}))}),{module:ne,imports:i}}},e.DecafModule=ne=p.__decorate([a.Module({})],e.DecafModule);const ce="##VERSION##",pe="##PACKAGE##";t.Metadata.registerLibrary(pe,ce),e.AUTH_HANDLER=N,e.AUTH_META_KEY=L,e.ApiOperationFromModel=w,e.ApiParamsFromModel=D,e.ApiProperty=b,e.Auth=B,e.AuthRole=j,e.BulkApiOperationFromModel=(e,r,o)=>{const i={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]},[s,p]=i[r];return R(e,s)?t.apply(n.ApiExcludeEndpoint()):t.apply(p(o))},e.CorsError=te,e.DECAF_ADAPTER_ID=M,e.DECAF_ADAPTER_OPTIONS=F,e.DECAF_CONTEXT_KEY=q,e.DECAF_HANDLERS=$,e.DECAF_MODULE_OPTIONS=I,e.DECAF_ROUTE=k,e.DECORATORS=g,e.DECORATORS_PREFIX=f,e.DecafAuthHandler=K,e.DecafBody=T,e.DecafController=J,e.DecafModelController=X,e.DecafParams=S,e.DecafQuery=C,e.DecafRoleAuthHandler=class extends K{constructor(){super()}async authorize(e,r){const a=e.switchToHttp().getRequest(),s=this.parseRequest(a);if(!s)throw new i.AuthorizationError("Unauthenticated");const n=t.Metadata.get(o.Model.get(r),j);if(!n.includes(s))throw new i.AuthorizationError("Missing role: "+s);return n}},e.DtoFor=W,e.FromModelController=Z,e.HttpVerbToDecorator=x,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 te(`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 oe(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=pe,e.Roles=e=>t.metadata(j,e),e.SwaggerBuilder=oe,e.UseDecafFilter=()=>a.UseFilters(new e.DecafExceptionFilter),e.VERSION=ce,e.createApiPropertyDecorator=O,e.createPropertyDecorator=P,e.getEnumType=E,e.getEnumValues=A,e.getModuleFor=ee,e.isOperationBlocked=R,e.isUndefined=_,e.repoForModel=e=>{const t=o.Model.get(e);if(!t)throw new c.InternalError("Failed to find repository for "+e);return i.Repository.forModel(t)},e.route=(e,r)=>{const a=k;return t.Decoration.for(a).define({decorator:()=>(o,i,s)=>{const n={path:r,httpMethod:e,handler:s};return t.apply(t.methodMetadata(t.Metadata.key(a,i),n))(o,i,s)},args:[]}).apply()}},"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")):"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"],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);
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/decoration.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/interceptors/context.ts","../src/request/RamRequestTransformer.ts","../src/decaf-model/utils.ts","../src/controllers.ts","../src/factory/openapi/DtoBuilder.ts","../src/decaf-model/FromModelController.ts","../src/decaf-model/DecafModelModule.ts","../src/overrides/overrides.ts","../src/interceptors/DecafRequestHandlerInterceptor.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/module.ts","../src/index.ts","../src/factory/NestBootstraper.ts","../src/factory/exceptions/decorators.ts","../src/utils.ts","../src/decaf-model/decorators/route.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],"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","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","required","String","applyDecorators","Decoration","for","InjectablesKeys","INJECTABLE","extend","decorator","category","cfg","assign","DefaultInjectablesConfig","Injectable","scope","singleton","Scope","DEFAULT","REQUEST","durable","INJECT","descriptor","Inject","ValidationKeys","REQUIRED","MAX","max","maximum","MIN","min","minimum","MAX_LENGTH","maxLength","MIN_LENGTH","minLength","TYPE","prop","DATE","format","ENUM","PATTERN","pat","pattern","source","PersistenceKeys","COLUMN","DecorationKeys","DESCRIPTION","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","Error","DECAF_MODULE_OPTIONS","DECAF_ADAPTER_ID","DECAF_ROUTE","DECAF_HANDLERS","Symbol","DECAF_ADAPTER_OPTIONS","AUTH_HANDLER","AUTH_META_KEY","AuthRole","DECAF_CONTEXT_KEY","Auth","model","resource","SetMetadata","UseInterceptors","AuthInterceptor","exports","reflector","authHandler","this","intercept","next","modelName","getHandler","authorize","handle","__decorate","__param","Optional","Reflector","DecafAuthHandler","parseRequest","userRole","headers","authorization","split","AuthorizationError","Model","DecafRequestContext","put","record","_ctx","accumulate","applyCtx","InternalError","DecafHandlerExecutor","handlers","context","exec","res","RequestToContextTransformer","requestToContextTransformer","flavour","set","RamTransformer","from","user","UUID","apiParamSpec","getApiDecorators","methodName","routePath","httpVerb","includeQueryParams","NestHttpRouteDec","apiPathParams","startsWith","slice","extractPathParams","swaggerQueryParams","push","ApiQuery","OrderDirection","method","ApiParam","ApiOperation","summary","ApiOkResponse","ApiNoContentResponse","Query","applyApiDecorators","proto","prototype","forEach","d","index","createRouteHandler","async","pathParams","queryParams","log","debug","JSON","stringify","direction","persistence","ModelService","statement","resolvePersistenceMethod","e","error","defineRouteMethod","ControllerClass","defineProperty","writable","getOwnPropertyDescriptor","DecafController","Service","clientContext","super","logCtx","operation","allowCreate","overrides","ContextualLoggedClass","call","DecafModelController","_persistence","getService","Repository","forModel","override","toOverrides","contextual","ctxArgs","repo","then","DtoFor","TransactionOperationKeys","isUpdate","BulkCrudOperationKeys","UPDATE_ALL","relations","exceptions","generated","pk","DynamicDTO","OmitType","addRelation","relation","relationDto","enumerable","configurable","toPascalCase","allowedTypes","meta","validationFor","LIST","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","findOneBy","FIND_ONE_BY","findBy","FIND_BY","STATEMENT","a","parseInt","createAll","CREATE_ALL","created","verbose","readAll","ids","READ_ALL","read","routeParams","id","ValidationError","updateAll","updated","payloads","entry","parse","update","payload","deleteAll","DELETE_ALL","delete","del","Param","ApiNotFoundResponse","ApiBody","schema","$ref","getSchemaPath","ApiCreatedResponse","ApiBadRequestResponse","ApiUnprocessableEntityResponse","Controller","ApiTags","ApiExtraModels","composed","DBKeys","COMPOSED","composedKeys","uniqueKeys","Set","separator","getModuleFor","DecafModelModule","DecafModelModule_1","createModelServices","models","provide","useFactory","forRoot","trackedModels","Adapter","modelServices","autoServices","controllers","module","providers","H","APP_INTERCEPTOR","useClass","DecafRequestHandlerInterceptor","Module","transformerFor","adapter","alias","bind","flavoursToTransform","requestContext","executor","contextualize","flags","flavours","transformer","Context","DefaultAdapterFlags","logger","timestamp","Date","getResponse","CorsError","ForbiddenError","msg","DecafExceptionFilter","exception","host","response","request","isProduction","LoggedEnvironment","env","BaseError","status","code","json","toISOString","url","Catch","SWAGGER_UI_CONSTANTS","title","version","faviconFilePath","topbarIconFilePath","auth","scheme","bearerFormat","in","persistAuthorization","topbarBgColor","SwaggerCustomUI","customCSS","css","topbarIconPath","b64","getCustomOptions","favicon","faviconPath","customSiteTitle","customCss","swaggerOptions","jsonDocumentUrl","yamlDocumentUrl","file","img","filePath","assetsPath","readFileSync","encoding","SwaggerBuilder","app","createDocument","config","DocumentBuilder","setTitle","setDescription","setVersion","addBearerAuth","build","SwaggerModule","extraModels","setupSwagger","document","swaggerUI","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","DecafModule","DecafModule_1","forRootAsync","autoControllers","imports","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","listen","getUrl","UseFilters","m","define","methodMetadata"],"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/decoration.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/interceptors/context.ts","../src/request/RamRequestTransformer.ts","../src/decaf-model/utils.ts","../src/controllers.ts","../src/factory/openapi/DtoBuilder.ts","../src/decaf-model/FromModelController.ts","../src/decaf-model/DecafModelModule.ts","../src/overrides/overrides.ts","../src/interceptors/DecafRequestHandlerInterceptor.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/module.ts","../src/index.ts","../src/factory/NestBootstraper.ts","../src/factory/exceptions/decorators.ts","../src/utils.ts","../src/decaf-model/decorators/route.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],"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","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","required","String","applyDecorators","Decoration","for","InjectablesKeys","INJECTABLE","extend","decorator","category","cfg","assign","DefaultInjectablesConfig","Injectable","scope","singleton","Scope","DEFAULT","REQUEST","durable","INJECT","descriptor","Inject","ValidationKeys","REQUIRED","MAX","max","maximum","MIN","min","minimum","MAX_LENGTH","maxLength","MIN_LENGTH","minLength","TYPE","prop","DATE","format","ENUM","PATTERN","pat","pattern","source","PersistenceKeys","COLUMN","DecorationKeys","DESCRIPTION","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","Error","DECAF_MODULE_OPTIONS","DECAF_ADAPTER_ID","DECAF_ROUTE","DECAF_HANDLERS","Symbol","DECAF_ADAPTER_OPTIONS","AUTH_HANDLER","AUTH_META_KEY","AuthRole","DECAF_CONTEXT_KEY","Auth","model","resource","SetMetadata","UseInterceptors","AuthInterceptor","exports","reflector","authHandler","this","intercept","next","modelName","getHandler","authorize","handle","__decorate","__param","Optional","Reflector","DecafAuthHandler","parseRequest","userRole","headers","authorization","split","AuthorizationError","Model","DecafRequestContext","put","record","overrides","e","_ctx","accumulate","applyCtx","InternalError","DecafHandlerExecutor","handlers","context","exec","res","RequestToContextTransformer","requestToContextTransformer","flavour","set","RamTransformer","from","user","UUID","apiParamSpec","getApiDecorators","methodName","routePath","httpVerb","includeQueryParams","NestHttpRouteDec","apiPathParams","startsWith","slice","extractPathParams","swaggerQueryParams","push","ApiQuery","OrderDirection","method","ApiParam","ApiOperation","summary","ApiOkResponse","ApiNoContentResponse","Query","applyApiDecorators","proto","prototype","forEach","d","index","createRouteHandler","async","pathParams","queryParams","log","debug","JSON","stringify","direction","persistence","ModelService","statement","resolvePersistenceMethod","error","defineRouteMethod","ControllerClass","defineProperty","writable","getOwnPropertyDescriptor","DecafController","Service","clientContext","super","logCtx","operation","allowCreate","ContextualLoggedClass","call","DecafModelController","_persistence","getService","Repository","forModel","override","toOverrides","contextual","ctxArgs","repo","then","DtoFor","TransactionOperationKeys","isUpdate","BulkCrudOperationKeys","UPDATE_ALL","relations","exceptions","generated","pk","DynamicDTO","OmitType","addRelation","relation","relationDto","enumerable","configurable","toPascalCase","allowedTypes","meta","validationFor","LIST","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","findOneBy","FIND_ONE_BY","findBy","FIND_BY","STATEMENT","a","parseInt","createAll","CREATE_ALL","created","verbose","readAll","ids","READ_ALL","read","routeParams","id","ValidationError","updateAll","updated","payloads","entry","parse","update","payload","deleteAll","DELETE_ALL","delete","del","Param","ApiNotFoundResponse","ApiBody","schema","$ref","getSchemaPath","ApiCreatedResponse","ApiBadRequestResponse","ApiUnprocessableEntityResponse","Controller","ApiTags","ApiExtraModels","composed","DBKeys","COMPOSED","composedKeys","uniqueKeys","Set","separator","getModuleFor","DecafModelModule","DecafModelModule_1","createModelServices","models","provide","useFactory","forRoot","trackedModels","Adapter","modelServices","autoServices","controllers","module","providers","H","APP_INTERCEPTOR","useClass","DecafRequestHandlerInterceptor","Module","transformerFor","adapter","alias","bind","flavoursToTransform","requestContext","executor","contextualize","flags","flavours","transformer","Context","DefaultAdapterFlags","logger","timestamp","Date","getResponse","CorsError","ForbiddenError","msg","DecafExceptionFilter","exception","host","response","request","isProduction","LoggedEnvironment","env","BaseError","status","code","json","toISOString","url","Catch","SWAGGER_UI_CONSTANTS","title","version","faviconFilePath","topbarIconFilePath","auth","scheme","bearerFormat","in","persistAuthorization","topbarBgColor","SwaggerCustomUI","customCSS","css","topbarIconPath","b64","getCustomOptions","favicon","faviconPath","customSiteTitle","customCss","swaggerOptions","jsonDocumentUrl","yamlDocumentUrl","file","img","filePath","assetsPath","readFileSync","encoding","SwaggerBuilder","app","createDocument","config","DocumentBuilder","setTitle","setDescription","setVersion","addBearerAuth","build","SwaggerModule","extraModels","setupSwagger","document","swaggerUI","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","DecafModule","DecafModule_1","forRootAsync","autoControllers","imports","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","listen","getUrl","UseFilters","m","define","methodMetadata"],"mappings":"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"}
package/dist/for-nest.js CHANGED
@@ -1,2 +1,2 @@
1
- import{Decoration as e,DecorationKeys as t,Metadata as r,apply as o,methodMetadata as i,metadata as s}from"@decaf-ts/decoration";import{InjectablesKeys as n,DefaultInjectablesConfig as a}from"@decaf-ts/injectable-decorators";import{Injectable as c,Scope as p,Inject as d,Get as l,Post as u,Put as h,Patch as f,Delete as m,applyDecorators as y,createParamDecorator as g,InternalServerErrorException as w,Optional as E,SetMetadata as A,UseInterceptors as b,Query as P,Param as v,Controller as T,Module as R,Catch as O,UseFilters as x,Logger as $,Global as S}from"@nestjs/common";import{ValidationKeys as _,Model as C}from"@decaf-ts/decorator-validation";import{PersistenceKeys as I,AuthorizationError as k,OrderDirection as N,ModelService as D,Service as L,ContextualLoggedClass as F,Repository as j,TransactionOperationKeys as M,PreparedStatementKeys as q,Adapter as B,Context as U,DefaultAdapterFlags as G,ForbiddenError as H,PersistenceService as z}from"@decaf-ts/core";import{isArray as Y,isString as J,pickBy as Q,negate as K}from"lodash";import{ApiExcludeEndpoint as X,ApiParam as V,ApiQuery as W,ApiOperation as Z,ApiOkResponse as ee,ApiNoContentResponse as te,OmitType as re,ApiNotFoundResponse as oe,ApiBody as ie,getSchemaPath as se,ApiCreatedResponse as ne,ApiBadRequestResponse as ae,ApiUnprocessableEntityResponse as ce,ApiTags as pe,ApiExtraModels as de,DocumentBuilder as le,SwaggerModule as ue}from"@nestjs/swagger";import{OperationKeys as he,BulkCrudOperationKeys as fe,InternalError as me,DBKeys as ye,ValidationError as ge,BaseError as we}from"@decaf-ts/db-decorators";import{__decorate as Ee,__param as Ae,__metadata as be}from"tslib";import{Reflector as Pe,APP_INTERCEPTOR as ve,ModuleRef as Te}from"@nestjs/core";import{toPascalCase as Re,Logging as Oe,toKebabCase as xe,LoggedEnvironment as $e}from"@decaf-ts/logging";import{readFileSync as Se}from"fs";import*as _e from"path";const Ce="swagger",Ie={API_OPERATION:Ce+"/apiOperation",API_RESPONSE:Ce+"/apiResponse",API_PRODUCES:Ce+"/apiProduces",API_CONSUMES:Ce+"/apiConsumes",API_TAGS:Ce+"/apiUseTags",API_CALLBACKS:Ce+"/apiCallbacks",API_PARAMETERS:Ce+"/apiParameters",API_HEADERS:Ce+"/apiHeaders",API_MODEL_PROPERTIES:Ce+"/apiModelProperties",API_MODEL_PROPERTIES_ARRAY:Ce+"/apiModelPropertiesArray",API_SECURITY:Ce+"/apiSecurity",API_EXCLUDE_ENDPOINT:Ce+"/apiExcludeEndpoint",API_EXCLUDE_CONTROLLER:Ce+"/apiExcludeController",API_EXTRA_MODELS:Ce+"/apiExtraModels",API_EXTENSION:Ce+"/apiExtension",API_SCHEMA:Ce+"/apiSchema",API_DEFAULT_GETTER:Ce+"/apiDefaultGetter",API_LINK:Ce+"/apiLink"};function ke(e,t){if(!e)return[e,t];if(t)return[e,t];const r=Y(e);return[r?e[0]:e,r]}const Ne=e=>void 0===e;function De(e){if("function"==typeof e)return De(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 Le(e){return e.filter(J).length>0?"string":"number"}function Fe(e,t,r=!0){return(o,i)=>{const s=Reflect.getMetadata(Ie.API_MODEL_PROPERTIES_ARRAY,o)||[],n=":"+i;s.includes(n)||Reflect.defineMetadata(Ie.API_MODEL_PROPERTIES_ARRAY,[...s,":"+i],o);const a=Reflect.getMetadata(e,o,i);if(a){const s=Q(t,K(Ne)),n=r?{...a,...s}:{...s,...a};Reflect.defineMetadata(e,n,o,i)}else{const r=o?.constructor?._OPENAPI_METADATA_FACTORY?.()[i]?.type??Reflect.getMetadata("design:type",o,i);Reflect.defineMetadata(e,{type:r,...Q(t,K(Ne))},o,i)}}}function je(e={}){return Me(e)}function Me(e={},t=!0){const[r,o]=ke(e.type,e.isArray);if((i=e={...e,type:r,isArray:o}).isArray&&"enum"in i&&void 0!==i.enum){e.type="array";const t=De(e.enum);e.items={type:Le(t),enum:t},delete e.enum}else if("enum"in e&&void 0!==e.enum){const t=De(e.enum);e.enum=t,e.type=Le(t)}var i;return Array.isArray(e.type)&&(e.type="array",e.items={type:"array",items:{type:e.type[0]}}),Fe(Ie.API_MODEL_PROPERTIES,e,t)}function qe(e,t){const{handler:o,args:i}=r.get(e,he.REFLECT+he.BLOCK)||{};return!!o&&(o(...i,t)??!1)}function Be(e,t,r){const i={GET:[he.READ,l],POST:[he.CREATE,u],PUT:[he.UPDATE,h],PATCH:[he.UPDATE,f],DELETE:[he.DELETE,m]},[s,n]=i[t];return qe(e,s)?o(X()):o(n(r))}function Ue(e,t,r){const i={GET:[fe.READ_ALL,l],POST:[fe.CREATE_ALL,u],PUT:[fe.UPDATE_ALL,h],PATCH:[fe.UPDATE_ALL,f],DELETE:[fe.DELETE_ALL,m]},[s,n]=i[t];return qe(e,s)?o(X()):o(n(r))}function Ge(e=[]){const t=e.map(e=>V({name:e.name,description:e.description??"Path parameter: "+e.name,required:e.required??!0,type:e.type??String}));return y(...t)}e.for(n.INJECTABLE).extend({decorator:(e,t)=>(t=t||("object"==typeof e?Object.assign(e,a):a),c({scope:t.singleton?p.DEFAULT:p.REQUEST,durable:!t.singleton||void 0}))}).apply(),e.for(n.INJECT).extend({decorator:(e,t)=>(t,r,o)=>d(e||t)(t,r,o)}).apply(),e.for(_.REQUIRED).extend(je({required:!0})).apply(),e.for(_.MAX).extend({decorator:e=>je({maximum:e})}).apply(),e.for(_.MIN).extend({decorator:e=>je({minimum:e})}).apply(),e.for(_.MAX_LENGTH).extend({decorator:e=>je({maxLength:e})}).apply(),e.for(_.MIN_LENGTH).extend({decorator:e=>je({minLength:e})}).apply(),e.for(_.TYPE).extend({decorator:e=>(t,r)=>("function"!=typeof(e=Array.isArray(e)?e[0]:e)||e.name||(e=e()),je({type:e})(t,r))}).apply(),e.for(_.DATE).extend({decorator:e=>je({type:String,format:"date-time"})}).apply(),e.for(_.ENUM).extend({decorator:e=>je({enum:Array.isArray(e)?e:Object.values(e)})}).apply(),e.for(_.PATTERN).extend({decorator:e=>je({pattern:"string"==typeof e?e:e.source})}).apply(),e.for(I.COLUMN).extend({decorator:e=>je({name:e})}).apply(),e.for(t.DESCRIPTION).extend({decorator:e=>je({description:e})}).apply();const He=g((e,t)=>{const r=t.switchToHttp().getRequest().body,o=t.getClass(),i=o.class;if(!i)throw new w(`ModelConstructor not found on controller ${o.name}. Ensure the controller was created via FromModelController.`);return r?Array.isArray(r)?r.map(e=>new i(e)):new i(r):r}),ze=g((e,t)=>{const r=t.switchToHttp().getRequest(),o=r?.params??{},i=e??Object.keys(o),s=i.map(e=>o[e]);return{raw:o,valuesInOrder:s,keysInOrder:i}});function Ye(e=[]){const t=e.map(e=>e.name);return ze(t)}const Je=g((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 Qe(e){const t={GET:l,POST:u,PUT:h,PATCH:f,DELETE:m}[e];if(!t)throw Error(`Unsupported HTTP verb "${e}". No NestJS decorator mapping was found.`);return t}const Ke="DecafModuleOptions",Xe="DecafAdapter",Ve="DecafRoute",We=Symbol("DecafHandlers"),Ze=Symbol("DecafAdapterForOptions"),et=Symbol("AUTH_HANDLER"),tt="auth:meta",rt="AuthRole",ot=Symbol("decaf:context");function it(t,s){const n=Ve;return e.for(n).define({decorator:()=>(e,a,c)=>{const p={path:s,httpMethod:t,handler:c};return o(i(r.key(n,a),p))(e,a,c)},args:[]}).apply()}let st=class{constructor(e,t){this.reflector=e,this.authHandler=t}async intercept(e,t){const r=this.reflector.get(tt,e.getHandler())??this.reflector.get(tt,e.getClass());return r&&this.authHandler&&await this.authHandler.authorize(e,r),t.handle()}};function nt(e){const t="string"==typeof e?e:e.name;return y(A(tt,t),b(st))}st=Ee([c(),Ae(1,E()),Ae(1,d(et)),be("design:paramtypes",[Pe,Object])],st);const at=e=>s(rt,e);class ct{parseRequest(e){const t=e.headers.authorization?.split(" ")[1];return t}async authorize(e,t){const o=e.switchToHttp().getRequest(),i=this.parseRequest(o);if(!i)throw new k("Unauthenticated");if(!r.get(C.get(t),rt).includes(i))throw new k("Missing role: "+i)}}class pt extends ct{constructor(){super()}async authorize(e,t){const o=e.switchToHttp().getRequest(),i=this.parseRequest(o);if(!i)throw new k("Unauthenticated");const s=r.get(C.get(t),rt);if(!s.includes(i))throw new k("Missing role: "+i);return s}}let dt=class{put(e){this._ctx=this.ctx.accumulate(e)}applyCtx(e){this._ctx=e}get ctx(){if(!this._ctx)throw new me("Context not initialized for request");return this._ctx}};dt=Ee([c({scope:p.REQUEST})],dt);let lt=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.ctx,e,t)}};lt=Ee([c({scope:p.REQUEST}),Ae(0,d(We)),be("design:paramtypes",[Array,dt])],lt);class ut{}function ht(e){return t=>(r.set("transformers",e,t),"function"==typeof t?s("transformers",e)(t):t)}let ft=class{async from(e){const t=e.headers.authorization?e.headers.authorization.split(" ")[1]:void 0;return t?{UUID:t}:{}}};ft=Ee([ht("ram")],ft);const mt=e=>({name:e,description:e+" parameter for the query",required:!0,type:String});function yt(e,t,r,o=!1){const i=Qe(r),s=(e=>e.split("/").filter(e=>e.startsWith(":")).map(e=>e.slice(1)))(t).map(mt),n=[];return"GET"===r&&o&&n.push(W({name:"direction",required:!1,enum:N,description:"the sort order when applicable"}),W({name:"limit",required:!1,description:"limit or page size when applicable"}),W({name:"offset",required:!1,description:"offset or bookmark when applicable"})),{method:[i(t),...s.map(V),...n,Z({summary:`Retrieve records using according to "${e}".`}),ee({description:"Result successfully retrieved."}),te({description:"No content returned by the method."})],params:[Ye(s),P()]}}function gt(e,t,r,o){const i=e?.prototype??e;o.method.forEach(e=>e(i,t,r)),o.params?.forEach((e,r)=>e(i,t,r))}function wt(e){return async function(t,r){const o=this.log.for(e);try{o.debug(`Invoking persistence method "${e}" given parameters: ${JSON.stringify(t.valuesInOrder)}`);const{direction:i,limit:s,offset:n}=r;return await((e,t,...r)=>{if(e instanceof D)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}`)})(this.persistence(),e,...t.valuesInOrder,i,s,n)}catch(t){throw o.error(`Custom query "${e}" failed`,t),t}}}function Et(e,t,r){return Object.defineProperty(e.prototype||e,t,{value:r,writable:!1}),Object.getOwnPropertyDescriptor(e.prototype||e,t)}class At extends L{constructor(e,t){super(t),this.clientContext=e}logCtx(e,t,r=!1,o){const i=this.clientContext.ctx;return e=e.filter(e=>void 0!==e),F.logCtx.call(this,t,o||{},r,...e,i)}}class bt extends At{persistence(e){if(!this._persistence)try{this._persistence=D.getService(this.class)}catch(e){this._persistence=j.forModel(this.class)}return e?this._persistence instanceof j?this._persistence.override(e.toOverrides()):this._persistence.for(e.toOverrides()):this._persistence}constructor(e,t){super(e,t)}logCtx(e,t,r=!1){const o=this.clientContext.ctx;let i={};try{i=o.get("overrides")}catch(e){}const s=this.persistence(o);let n,a;return s instanceof D?n=s.repo.adapter:s instanceof j?n=s.adapter:s.context&&(n=s),r?n.logCtx(e,t,!0,i).then(e=>e):(a=n.logCtx(e,t,!1,i),a)}}function Pt(e,t){if(!M.includes(e))return t;const o=[he.UPDATE,fe.UPDATE_ALL].includes(e),i=r.properties(t)||[],s=C.relations(t)||[];let n=i.filter(e=>C.generated(t,e));o&&(n=n.filter(e=>e!==C.pk(t)));class a extends(re(t,n)){}function c(e,t,r){r||(Object.defineProperty(a.prototype,e,{value:r?[t]:t,writable:!0,enumerable:!0,configurable:!0}),Reflect.defineMetadata("design:type",t,a.prototype,e))}Object.defineProperty(a,"name",{value:`${Re(t.name)}${Re(e)}DTO`});for(const o of s){let i=r.allowedTypes(t,o);if(i=i?Array.isArray(i)?i[0]:i:void 0,i="function"!=typeof i||i.name?i:i(),!i)throw new me(`Type for relation ${o} not found`);if(C.get(i.name)){const s=r.validationFor(t,o);c(o,Pt(e,i),!!s[_.LIST])}}return a}class vt{static{this.log=Oe.for(vt.name)}static getPersistence(e){try{return D.getService(e)}catch(t){return j.forModel(e)}}static createQueryRoutesFromRepository(e,t=I.QUERY){const o=vt.log.for(vt.createQueryRoutesFromRepository),i=e instanceof D?e.repo:e,s=i.class,n=r.get(i.constructor,r.key(I.QUERY))??{},a=r.get(e.constructor,r.key(Ve))??{};class c extends bt{get class(){throw Error("Method not implemented.")}constructor(e,t){super(e,t)}}for(const[e,t]of Object.entries(a)){const r=[t.path.replace(/^\/+|\/+$/g,"")].filter(e=>e&&e.trim()).join("/"),i=wt(e);if(!i){const t=`Invalid or missing handler for model ${s.name} on decorated method ${e}`;throw o.error(t),Error(t)}const n=Et(c,e,i);n&&gt(c,e,n,yt(e,r,t.httpMethod))}for(const[e,r]of Object.entries(n)){const o=[t,e,...(r.fields??[]).map(e=>":"+e)].filter(e=>e&&e.trim()).join("/"),i=Et(c,e,wt(e));i&&gt(c,e,i,yt(e,o,"GET",!0))}return c}static create(e){const t=vt.log.for(vt.create),r=C.tableName(e),o=xe(r),i=e.name,s=vt.getPersistence(e),{description:n,getPK:a,apiProperties:c,path:p}=vt.getRouteParametersFromModel(e);t.debug("Creating controller for model: "+i);const d=vt.createQueryRoutesFromRepository(s);let l=class extends d{static get class(){return e}get class(){return e}constructor(r){super(r),this.pk=C.pk(e),t.info(`Registering dynamic controller for model: ${this.class.name} route: /${o}`)}async listBy(e,t){const{ctx:r}=(await this.logCtx([],q.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([],q.PAGE_BY,!0)).for(this.paginateBy);return this.persistence(r).paginateBy(e,t.direction,t,r)}async findOneBy(e,t){const{ctx:r}=(await this.logCtx([],q.FIND_ONE_BY,!0)).for(this.findOneBy);return this.persistence(r).findOneBy(e,t,r)}async findBy(e,t,r){const{ctx:o}=(await this.logCtx([],q.FIND_BY,!0)).for(this.findBy);return this.persistence(o).for(o.toOverrides()).findBy(e,t,o)}async statement(e,t,r){const{ctx:o}=(await this.logCtx([],I.STATEMENT,!0)).for(this.statement),{direction:i,offset:s,limit:n,bookmark:a}=r;switch(t=t.map(e=>("string"==typeof e?parseInt(e):e)||e),e){case q.FIND_BY:break;case q.LIST_BY:t.push(i);break;case q.PAGE_BY:t=[t[0],i,{limit:n,offset:s,bookmark:a}];case q.FIND_ONE_BY:}return this.persistence(o).statement(e,...t,o)}async createAll(t){const{ctx:r,log:o}=(await this.logCtx([],fe.CREATE_ALL,!0)).for(this.createAll);let s;o.verbose("creating new "+i);try{s=await this.persistence(r).createAll(t.map(t=>new e(t)),r)}catch(e){throw o.error("Failed to create new "+i,e),e}return o.info(`created new ${i} with id ${s[this.pk]}`),s}async create(e){const{ctx:t,log:r}=(await this.logCtx([],he.CREATE,!0)).for(this.create);let o;r.verbose("creating new "+i);try{o=await this.persistence(t).create(e,t)}catch(e){throw r.error("Failed to create new "+i,e),e}return r.info(`created new ${i} with id ${o[this.pk]}`),o}async readAll(e){const{ctx:t,log:r}=(await this.logCtx([],fe.READ_ALL,!0)).for(this.readAll);let o;try{r.debug(`reading ${e.length} ${i}: ${e}`),o=await this.persistence(t).readAll(e,t)}catch(t){throw r.error(`Failed to ${i} with id ${e}`,t),t}return r.info(`read ${o.length} ${i}`),o}async read(e){const{ctx:t,log:r}=(await this.logCtx([],he.READ,!0)).for(this.read),o=a(...e.valuesInOrder);if(void 0===o)throw new ge(`No ${this.pk} provided`);let s;try{r.debug(`reading ${i} with ${this.pk} ${o}`),s=await this.persistence(t).read(o,t)}catch(e){throw r.error(`Failed to read ${i} with id ${o}`,e),e}return r.info(`read ${i} with id ${s[this.pk]}`),s}async updateAll(e){const{ctx:t,log:r}=(await this.logCtx([],fe.UPDATE_ALL,!0)).for(this.updateAll);let o;try{r.info(`updating ${e.length} ${i}`);const s=e.map(e=>JSON.parse(JSON.stringify(e)));o=await this.persistence(t).updateAll(s,t)}catch(e){throw r.error(e),e}return o}async update(t,r){const{ctx:o,log:s}=(await this.logCtx([],he.UPDATE,!0)).for(this.update),n=a(...t.valuesInOrder);if(void 0===n)throw new ge(`No ${this.pk} provided`);let c;try{s.info(`updating ${i} with ${this.pk} ${n}`);const t=JSON.parse(JSON.stringify(r));c=await this.persistence(o).update(new e({...t,[this.pk]:n}),o)}catch(e){throw s.error(e),e}return c}async deleteAll(e){const{ctx:t,log:r}=(await this.logCtx([],fe.DELETE_ALL,!0)).for(this.deleteAll);let o;try{r.debug(`deleting ${e.length} ${i}: ${e}`),o=await this.persistence(t).deleteAll(e,t)}catch(t){throw r.error(`Failed to delete ${i} with id ${e}`,t),t}return r.info(`deleted ${o.length} ${i}`),o}async delete(e){const{ctx:t,log:r}=(await this.logCtx([],he.DELETE,!0)).for(this.delete),o=a(...e.valuesInOrder);if(void 0===o)throw new ge(`No ${this.pk} provided`);let s;try{r.debug(`deleting ${i} with ${this.pk} ${o}`),s=await this.persistence(t).delete(o,t)}catch(e){throw r.error(`Failed to delete ${i} with id ${o}`,e),e}return r.info(`deleted ${i} with id ${o}`),s}};return Ee([Be(e,"GET","listBy/:key"),Z({summary:`Retrieve ${i} records by query.`}),V({name:"key",description:"the model key to sort by"}),W({name:"direction",required:!0,enum:N}),ee({description:i+" listed successfully."}),Ae(1,Je()),be("design:type",Function),be("design:paramtypes",[String,Object]),be("design:returntype",Promise)],l.prototype,"listBy",null),Ee([Be(e,"GET","paginateBy/:key/:page"),Z({summary:`Retrieve ${i} records by query.`}),V({name:"key",description:"the model key to sort by"}),V({name:"page",description:"the page to retrieve or the bookmark"}),W({name:"direction",required:!0,enum:N,description:"the sort order"}),W({name:"limit",required:!0,description:"the page size"}),W({name:"offset",description:"the bookmark when necessary"}),ee({description:i+" listed paginated."}),Ae(0,v("key")),Ae(1,Je()),be("design:type",Function),be("design:paramtypes",[String,Object]),be("design:returntype",Promise)],l.prototype,"paginateBy",null),Ee([Be(e,"GET","findOneBy/:key"),Z({summary:`Retrieve ${i} records by query.`}),V({name:"key",description:"the model key to sort by"}),ee({description:i+" listed found."}),oe({description:`No ${i} record matches the provided identifier.`}),Ae(0,v("key")),Ae(1,v("value")),be("design:type",Function),be("design:paramtypes",[String,Object]),be("design:returntype",Promise)],l.prototype,"findOneBy",null),Ee([Be(e,"GET","findBy/:key/:value"),Z({summary:`Retrieve ${i} records by query.`}),V({name:"key",description:"the model key to compare"}),V({name:"value",description:"the value to match"}),W({name:"direction",required:!0,enum:N,description:"the sort order when applicable"}),ee({description:i+" listed found."}),oe({description:`No ${i} record matches the provided identifier.`}),Ae(0,v("key")),Ae(1,v("value")),Ae(2,Je()),be("design:type",Function),be("design:paramtypes",[String,Object,Object]),be("design:returntype",Promise)],l.prototype,"findBy",null),Ee([Be(e,"GET","statement/:method/*args"),Z({summary:`Executes a prepared statement on ${i}.`}),V({name:"method",description:"the prepared statement to execute"}),V({name:"args",description:"concatenated list of arguments the prepared statement can accept"}),W({name:"direction",required:!0,enum:N,description:"the sort order when applicable"}),W({name:"limit",required:!0,description:"limit or page size when applicable"}),W({name:"offset",required:!0,description:"offset or bookmark when applicable"}),ee({description:i+" listed found."}),oe({description:`No ${i} record matches the provided identifier.`}),Ae(0,v("method")),Ae(1,v("args")),Ae(2,Je()),be("design:type",Function),be("design:paramtypes",[String,Array,Object]),be("design:returntype",Promise)],l.prototype,"statement",null),Ee([Be(e,"POST","bulk"),Z({summary:`Create a new ${i}.`}),ie({description:"Payload for "+i,schema:{type:"array",items:{$ref:se(e)}}}),ne({description:i+" created successfully.",schema:{type:"array",items:{$ref:se(e)}}}),ae({description:"Payload validation failed."}),ce({description:"Repository rejected the provided payload."}),Ae(0,He()),be("design:type",Function),be("design:paramtypes",[Array]),be("design:returntype",Promise)],l.prototype,"createAll",null),Ee([Be(e,"POST"),Z({summary:`Create a new ${i}.`}),ie({description:"Payload for "+i,type:Pt(he.CREATE,e)}),ne({description:i+" created successfully.",schema:{$ref:se(e)}}),ae({description:"Payload validation failed."}),ce({description:"Repository rejected the provided payload."}),Ae(0,He()),be("design:type",Function),be("design:paramtypes",[Object]),be("design:returntype",Promise)],l.prototype,"create",null),Ee([Be(e,"GET","bulk"),Z({summary:`Retrieve a ${i} record by id.`}),W({name:"ids",required:!0,type:"array"}),ee({description:i+" retrieved successfully.",schema:{type:"array",items:{$ref:se(e)}}}),oe({description:`No ${i} record matches the provided identifier.`}),Ae(0,P("ids")),be("design:type",Function),be("design:paramtypes",[Array]),be("design:returntype",Promise)],l.prototype,"readAll",null),Ee([Be(e,"GET",p),Ge(c),Z({summary:`Retrieve a ${i} record by id.`}),ee({description:i+" retrieved successfully.",schema:{$ref:se(e)}}),oe({description:`No ${i} record matches the provided identifier.`}),Ae(0,Ye(c)),be("design:type",Function),be("design:paramtypes",[Object]),be("design:returntype",Promise)],l.prototype,"read",null),Ee([Be(e,"PUT","bulk"),Ge(c),Z({summary:`Replace an existing ${i} record with a new payload.`}),ie({description:"Payload for replace a existing record of "+i,schema:{type:"array",items:{$ref:se(e)}}}),ne({description:i+" updated successfully.",schema:{type:"array",items:{$ref:se(e)}}}),oe({description:`No ${i} record matches the provided identifier.`}),ae({description:"Payload validation failed."}),Ae(0,He()),be("design:type",Function),be("design:paramtypes",[Array]),be("design:returntype",Promise)],l.prototype,"updateAll",null),Ee([Be(e,"PUT",p),Ge(c),Z({summary:`Replace an existing ${i} record with a new payload.`}),ie({description:"Payload for replace a existing record of "+i,schema:{$ref:se(e)}}),ee({description:i+" updated successfully."}),oe({description:`No ${i} record matches the provided identifier.`}),ae({description:"Payload validation failed."}),Ae(0,Ye(c)),Ae(1,He()),be("design:type",Function),be("design:paramtypes",[Object,Object]),be("design:returntype",Promise)],l.prototype,"update",null),Ee([Be(e,"DELETE","bulk"),Ge(c),Z({summary:`Retrieve a ${i} record by id.`}),W({name:"ids",required:!0,type:"array"}),ee({description:i+" retrieved successfully."}),oe({description:`No ${i} record matches the provided identifier.`}),Ae(0,P("ids")),be("design:type",Function),be("design:paramtypes",[Array]),be("design:returntype",Promise)],l.prototype,"deleteAll",null),Ee([Be(e,"DELETE",p),Ge(c),Z({summary:`Delete a ${i} record by id.`}),ee({description:i+" record deleted successfully."}),oe({description:`No ${i} record matches the provided identifier.`}),Ae(0,Ye(c)),be("design:type",Function),be("design:paramtypes",[Object]),be("design:returntype",Promise)],l.prototype,"delete",null),l=Ee([T(o),pe(i),de(e),nt(e),be("design:paramtypes",[dt])],l),l}static getRouteParametersFromModel(e){const t=C.pk(e),o=r.get(e,r.key(ye.COMPOSED,t)),i=o?.args??[],s=Array.isArray(i)&&i.length>0?Array.from(new Set([...i])):Array.from(new Set([t])),n=r.description(e);return{path:":"+s.join("/:"),description:n,apiProperties:s.map(t=>({name:t,description:r.description(e,t),required:!0,type:String})),getPK:(...e)=>o?.separator?e.join(o.separator):e.join("")}}}B.transformerFor=(e=>{const t="string"==typeof e?e:e.alias;return r.innerGet(Symbol.for("transformers"),t)}).bind(B),B.flavoursToTransform=(()=>{const e=r.innerGet(Symbol.for("transformers"));if(e)return Object.keys(e)}).bind(B);let Tt=class{constructor(e,t){this.requestContext=e,this.executor=t}async contextualize(e){const t={headers:e.headers,overrides:{}},r=B.flavoursToTransform();if(r)for(const o of r)try{const r=B.transformerFor(o),i=await r.from(e);Object.assign(t.overrides,i)}catch(e){throw new me("Failed to contextualize request: "+e)}return(new U).accumulate(Object.assign({},G,{logger:Oe.get(),timestamp:new Date},t))}async intercept(e,t){const r=e.switchToHttp().getRequest(),o=e.switchToHttp().getResponse(),i=await this.contextualize(r);return this.requestContext.applyCtx(i),await this.executor.exec(r,o),t.handle()}};function Rt(e){var t;let r=class{static{t=this}static{this.log=Oe.for(t.name).for(e)}static createModelServices(e){return e.map(e=>({provide:e.name+"Service",useFactory:()=>D.forModel(e)}))}static forRoot(e,r={}){const o=this.log.for(this.forRoot);o.info("Generating controllers for flavour...");const i=B.models(e);let s=[];r.autoServices&&(o.info("Auto-services enabled. Initializing service generation."),s=this.createModelServices(i),o.info(`Auto-services completed. ${s.length} services initialized.`));const n=i.map(vt.create);return o.info(`Generated ${n.length} controllers`),{module:t,controllers:n,providers:[{provide:We,useFactory:()=>r.handlers?.map(e=>(o.info("Registered request handler: "+e.name),new e))??[]},dt,lt,{provide:ve,useClass:Tt},...s]}}};return r=t=Ee([R({})],r),Object.assign(r,"name",{value:"DecafModule"+e}),r}Tt=Ee([c({scope:p.REQUEST}),be("design:paramtypes",[dt,lt])],Tt);class Ot extends H{constructor(e){super(e,Ot.name)}}let xt=class{catch(e,t){const r=t.switchToHttp(),o=r.getResponse(),i=r.getRequest(),s="production"===$e.env;e instanceof we||(e=new me(e.message)),o.status(e.code).json({status:e.code,error:s?e.name:e.message,timestamp:(new Date).toISOString(),path:i.url,method:i.method})}};function $t(){return x(new xt)}xt=Ee([O()],xt);const St={title:"Swagger | OpenAPI Specification (OAS)",description:"Standardized format for describing RESTful APIs",version:"0.0.1",path:"docs",faviconFilePath:"",topbarIconFilePath:"",auth:{type:"http",scheme:"bearer",bearerFormat:"JWT",name:"Authorization",description:"Enter JWT token",in:"header"},persistAuthorization:!0,topbarBgColor:"#000000"};class _t{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||St.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=_e.join(this.options.assetsPath||"",e),o=Se(r,{encoding:"base64"});return t?"data:image/png;base64,"+o:o}}class Ct{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 le).setTitle(this.options.title).setDescription(e).setVersion(this.options.version||"0.0.1").addBearerAuth(this.options.auth||St.auth).build();return ue.createDocument(this.app,t,{extraModels:this.options.extraModels||[]})}setupSwagger(){const e=this.createDocument(),t=new _t({title:this.options.title,path:this.options.path||St.path,persistAuthorization:this.options.persistAuthorization??!0,assetsPath:this.options.assetsPath,faviconPath:this.options.faviconFilePath,topbarIconPath:this.options.topbarIconFilePath,topbarBgColor:this.options.topbarBgColor});ue.setup(this.options.path||St.path,this.app,e,{...t.getCustomOptions()})}}class It{static get logger(){return this._logger||(this._logger=new $("NestBootstrap")),this._logger}static initialize(e){return this.app=e,this}static enableLogger(e){return this._logger=e||new $("NestBootstrap"),this.app.useLogger(this._logger),this}static enableCors(e=[],t=["GET","POST","PUT","DELETE"]){const r="*"===e?"*":e.map(e=>e.trim().toLowerCase()),o={origin:(e,t)=>e?"*"===r||Array.isArray(r)&&r.includes(e.toLowerCase())?t(null,!0):void t(new Ot(`Origin ${e} not allowed`)):t(null,!0),credentials:!0,methods:t.join(",")};return this.app.enableCors(o),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 Ct(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(...e){return this.app.useGlobalFilters(...e.length>0?e:[new xt]),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)}})}}var kt;let Nt=class{static{kt=this}static get persistence(){if(!this._persistence)throw new me("Persistence service not initialized");return this._persistence}static get log(){return this._logger||(this._logger=Oe.for(kt)),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 z,await this._persistence.boot(r);const o=this._persistence.client;for(let t=0;t<o.length;t++){const r=e.conf[t];let[,,i]=r;if(!i){const e=B.transformerFor(o[t].flavour);if(!e)throw new me(`No transformer found for flavour ${o[t].flavour}. you should either @requestToContextTransformer or provide a transformer in the config`);i=e instanceof ut?e:new e}ht(o[t].flavour)(i)}t.info("persistence layer created successfully!")}return this.persistence.client}static forRoot(e){const t={provide:Ke,useValue:e},r={useFactory:async e=>kt.bootPersistence(e),provide:Xe,durable:!0,scope:p.DEFAULT,inject:[Ke]};return{module:kt,providers:[r,t],exports:[r]}}async onApplicationShutdown(){const e=kt.log.for(this.onApplicationShutdown),t=this.moduleRef.get(Xe);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)}}};var Dt;Nt=kt=Ee([S(),R({}),Ae(0,d(Ke)),be("design:paramtypes",[Object,Te])],Nt);let Lt=Dt=class{static async forRootAsync(e){const{autoControllers:t,autoServices:r,handlers:o}=e,i=(await Nt.bootPersistence(e)).map(e=>e.flavour),s=[Nt.forRoot(e)];return t&&i.forEach(e=>{s.push(Rt(e).forRoot(e,{autoServices:r,handlers:o}))}),{module:Dt,imports:s}}};function Ft(e){const t=C.get(e);if(!t)throw new me("Failed to find repository for "+e);return j.forModel(t)}Lt=Dt=Ee([R({})],Lt);const jt="##VERSION##",Mt="##PACKAGE##";r.registerLibrary(Mt,jt);export{et as AUTH_HANDLER,tt as AUTH_META_KEY,Be as ApiOperationFromModel,Ge as ApiParamsFromModel,je as ApiProperty,nt as Auth,st as AuthInterceptor,rt as AuthRole,Ue as BulkApiOperationFromModel,Ot as CorsError,Xe as DECAF_ADAPTER_ID,Ze as DECAF_ADAPTER_OPTIONS,ot as DECAF_CONTEXT_KEY,We as DECAF_HANDLERS,Ke as DECAF_MODULE_OPTIONS,Ve as DECAF_ROUTE,Ie as DECORATORS,Ce as DECORATORS_PREFIX,ct as DecafAuthHandler,He as DecafBody,At as DecafController,xt as DecafExceptionFilter,lt as DecafHandlerExecutor,bt as DecafModelController,Lt as DecafModule,Ye as DecafParams,Je as DecafQuery,dt as DecafRequestContext,Tt as DecafRequestHandlerInterceptor,pt as DecafRoleAuthHandler,Pt as DtoFor,vt as FromModelController,Qe as HttpVerbToDecorator,It as NestBootstraper,Mt as PACKAGE_NAME,ft as RamTransformer,at as Roles,Ct as SwaggerBuilder,$t as UseDecafFilter,jt as VERSION,Me as createApiPropertyDecorator,Fe as createPropertyDecorator,Le as getEnumType,De as getEnumValues,Rt as getModuleFor,qe as isOperationBlocked,Ne as isUndefined,Ft as repoForModel,it as route};
1
+ import{Decoration as e,DecorationKeys as t,Metadata as r,apply as o,methodMetadata as i,metadata as s}from"@decaf-ts/decoration";import{InjectablesKeys as n,DefaultInjectablesConfig as a}from"@decaf-ts/injectable-decorators";import{Injectable as c,Scope as p,Inject as d,Get as l,Post as u,Put as h,Patch as f,Delete as m,applyDecorators as y,createParamDecorator as g,InternalServerErrorException as w,Optional as E,SetMetadata as A,UseInterceptors as b,Query as P,Param as v,Controller as T,Module as R,Catch as O,UseFilters as x,Logger as $,Global as S}from"@nestjs/common";import{ValidationKeys as _,Model as C}from"@decaf-ts/decorator-validation";import{PersistenceKeys as I,AuthorizationError as k,OrderDirection as N,ModelService as D,Service as L,ContextualLoggedClass as F,Repository as j,TransactionOperationKeys as M,PreparedStatementKeys as q,Adapter as B,Context as U,DefaultAdapterFlags as G,ForbiddenError as H,PersistenceService as z}from"@decaf-ts/core";import{isArray as Y,isString as J,pickBy as Q,negate as K}from"lodash";import{ApiExcludeEndpoint as X,ApiParam as V,ApiQuery as W,ApiOperation as Z,ApiOkResponse as ee,ApiNoContentResponse as te,OmitType as re,ApiNotFoundResponse as oe,ApiBody as ie,getSchemaPath as se,ApiCreatedResponse as ne,ApiBadRequestResponse as ae,ApiUnprocessableEntityResponse as ce,ApiTags as pe,ApiExtraModels as de,DocumentBuilder as le,SwaggerModule as ue}from"@nestjs/swagger";import{OperationKeys as he,BulkCrudOperationKeys as fe,InternalError as me,DBKeys as ye,ValidationError as ge,BaseError as we}from"@decaf-ts/db-decorators";import{__decorate as Ee,__param as Ae,__metadata as be}from"tslib";import{Reflector as Pe,APP_INTERCEPTOR as ve,ModuleRef as Te}from"@nestjs/core";import{toPascalCase as Re,Logging as Oe,toKebabCase as xe,LoggedEnvironment as $e}from"@decaf-ts/logging";import{readFileSync as Se}from"fs";import*as _e from"path";const Ce="swagger",Ie={API_OPERATION:Ce+"/apiOperation",API_RESPONSE:Ce+"/apiResponse",API_PRODUCES:Ce+"/apiProduces",API_CONSUMES:Ce+"/apiConsumes",API_TAGS:Ce+"/apiUseTags",API_CALLBACKS:Ce+"/apiCallbacks",API_PARAMETERS:Ce+"/apiParameters",API_HEADERS:Ce+"/apiHeaders",API_MODEL_PROPERTIES:Ce+"/apiModelProperties",API_MODEL_PROPERTIES_ARRAY:Ce+"/apiModelPropertiesArray",API_SECURITY:Ce+"/apiSecurity",API_EXCLUDE_ENDPOINT:Ce+"/apiExcludeEndpoint",API_EXCLUDE_CONTROLLER:Ce+"/apiExcludeController",API_EXTRA_MODELS:Ce+"/apiExtraModels",API_EXTENSION:Ce+"/apiExtension",API_SCHEMA:Ce+"/apiSchema",API_DEFAULT_GETTER:Ce+"/apiDefaultGetter",API_LINK:Ce+"/apiLink"};function ke(e,t){if(!e)return[e,t];if(t)return[e,t];const r=Y(e);return[r?e[0]:e,r]}const Ne=e=>void 0===e;function De(e){if("function"==typeof e)return De(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 Le(e){return e.filter(J).length>0?"string":"number"}function Fe(e,t,r=!0){return(o,i)=>{const s=Reflect.getMetadata(Ie.API_MODEL_PROPERTIES_ARRAY,o)||[],n=":"+i;s.includes(n)||Reflect.defineMetadata(Ie.API_MODEL_PROPERTIES_ARRAY,[...s,":"+i],o);const a=Reflect.getMetadata(e,o,i);if(a){const s=Q(t,K(Ne)),n=r?{...a,...s}:{...s,...a};Reflect.defineMetadata(e,n,o,i)}else{const r=o?.constructor?._OPENAPI_METADATA_FACTORY?.()[i]?.type??Reflect.getMetadata("design:type",o,i);Reflect.defineMetadata(e,{type:r,...Q(t,K(Ne))},o,i)}}}function je(e={}){return Me(e)}function Me(e={},t=!0){const[r,o]=ke(e.type,e.isArray);if((i=e={...e,type:r,isArray:o}).isArray&&"enum"in i&&void 0!==i.enum){e.type="array";const t=De(e.enum);e.items={type:Le(t),enum:t},delete e.enum}else if("enum"in e&&void 0!==e.enum){const t=De(e.enum);e.enum=t,e.type=Le(t)}var i;return Array.isArray(e.type)&&(e.type="array",e.items={type:"array",items:{type:e.type[0]}}),Fe(Ie.API_MODEL_PROPERTIES,e,t)}function qe(e,t){const{handler:o,args:i}=r.get(e,he.REFLECT+he.BLOCK)||{};return!!o&&(o(...i,t)??!1)}function Be(e,t,r){const i={GET:[he.READ,l],POST:[he.CREATE,u],PUT:[he.UPDATE,h],PATCH:[he.UPDATE,f],DELETE:[he.DELETE,m]},[s,n]=i[t];return qe(e,s)?o(X()):o(n(r))}function Ue(e,t,r){const i={GET:[fe.READ_ALL,l],POST:[fe.CREATE_ALL,u],PUT:[fe.UPDATE_ALL,h],PATCH:[fe.UPDATE_ALL,f],DELETE:[fe.DELETE_ALL,m]},[s,n]=i[t];return qe(e,s)?o(X()):o(n(r))}function Ge(e=[]){const t=e.map(e=>V({name:e.name,description:e.description??"Path parameter: "+e.name,required:e.required??!0,type:e.type??String}));return y(...t)}e.for(n.INJECTABLE).extend({decorator:(e,t)=>(t=t||("object"==typeof e?Object.assign(e,a):a),c({scope:t.singleton?p.DEFAULT:p.REQUEST,durable:!t.singleton||void 0}))}).apply(),e.for(n.INJECT).extend({decorator:(e,t)=>(t,r,o)=>d(e||t)(t,r,o)}).apply(),e.for(_.REQUIRED).extend(je({required:!0})).apply(),e.for(_.MAX).extend({decorator:e=>je({maximum:e})}).apply(),e.for(_.MIN).extend({decorator:e=>je({minimum:e})}).apply(),e.for(_.MAX_LENGTH).extend({decorator:e=>je({maxLength:e})}).apply(),e.for(_.MIN_LENGTH).extend({decorator:e=>je({minLength:e})}).apply(),e.for(_.TYPE).extend({decorator:e=>(t,r)=>("function"!=typeof(e=Array.isArray(e)?e[0]:e)||e.name||(e=e()),je({type:e})(t,r))}).apply(),e.for(_.DATE).extend({decorator:e=>je({type:String,format:"date-time"})}).apply(),e.for(_.ENUM).extend({decorator:e=>je({enum:Array.isArray(e)?e:Object.values(e)})}).apply(),e.for(_.PATTERN).extend({decorator:e=>je({pattern:"string"==typeof e?e:e.source})}).apply(),e.for(I.COLUMN).extend({decorator:e=>je({name:e})}).apply(),e.for(t.DESCRIPTION).extend({decorator:e=>je({description:e})}).apply();const He=g((e,t)=>{const r=t.switchToHttp().getRequest().body,o=t.getClass(),i=o.class;if(!i)throw new w(`ModelConstructor not found on controller ${o.name}. Ensure the controller was created via FromModelController.`);return r?Array.isArray(r)?r.map(e=>new i(e)):new i(r):r}),ze=g((e,t)=>{const r=t.switchToHttp().getRequest(),o=r?.params??{},i=e??Object.keys(o),s=i.map(e=>o[e]);return{raw:o,valuesInOrder:s,keysInOrder:i}});function Ye(e=[]){const t=e.map(e=>e.name);return ze(t)}const Je=g((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 Qe(e){const t={GET:l,POST:u,PUT:h,PATCH:f,DELETE:m}[e];if(!t)throw Error(`Unsupported HTTP verb "${e}". No NestJS decorator mapping was found.`);return t}const Ke="DecafModuleOptions",Xe="DecafAdapter",Ve="DecafRoute",We=Symbol("DecafHandlers"),Ze=Symbol("DecafAdapterForOptions"),et=Symbol("AUTH_HANDLER"),tt="auth:meta",rt="AuthRole",ot=Symbol("decaf:context");function it(t,s){const n=Ve;return e.for(n).define({decorator:()=>(e,a,c)=>{const p={path:s,httpMethod:t,handler:c};return o(i(r.key(n,a),p))(e,a,c)},args:[]}).apply()}let st=class{constructor(e,t){this.reflector=e,this.authHandler=t}async intercept(e,t){const r=this.reflector.get(tt,e.getHandler())??this.reflector.get(tt,e.getClass());return r&&this.authHandler&&await this.authHandler.authorize(e,r),t.handle()}};function nt(e){const t="string"==typeof e?e:e.name;return y(A(tt,t),b(st))}st=Ee([c(),Ae(1,E()),Ae(1,d(et)),be("design:paramtypes",[Pe,Object])],st);const at=e=>s(rt,e);class ct{parseRequest(e){const t=e.headers.authorization?.split(" ")[1];return t}async authorize(e,t){const o=e.switchToHttp().getRequest(),i=this.parseRequest(o);if(!i)throw new k("Unauthenticated");if(!r.get(C.get(t),rt).includes(i))throw new k("Missing role: "+i)}}class pt extends ct{constructor(){super()}async authorize(e,t){const o=e.switchToHttp().getRequest(),i=this.parseRequest(o);if(!i)throw new k("Unauthenticated");const s=r.get(C.get(t),rt);if(!s.includes(i))throw new k("Missing role: "+i);return s}}let dt=class{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 me("Context not initialized for request");return this._ctx}};dt=Ee([c({scope:p.REQUEST})],dt);let lt=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.ctx,e,t)}};lt=Ee([c({scope:p.REQUEST}),Ae(0,d(We)),be("design:paramtypes",[Array,dt])],lt);class ut{}function ht(e){return t=>(r.set("transformers",e,t),"function"==typeof t?s("transformers",e)(t):t)}let ft=class{async from(e){const t=e.headers.authorization?e.headers.authorization.split(" ")[1]:void 0;return t?{UUID:t}:{}}};ft=Ee([ht("ram")],ft);const mt=e=>({name:e,description:e+" parameter for the query",required:!0,type:String});function yt(e,t,r,o=!1){const i=Qe(r),s=(e=>e.split("/").filter(e=>e.startsWith(":")).map(e=>e.slice(1)))(t).map(mt),n=[];return"GET"===r&&o&&n.push(W({name:"direction",required:!1,enum:N,description:"the sort order when applicable"}),W({name:"limit",required:!1,description:"limit or page size when applicable"}),W({name:"offset",required:!1,description:"offset or bookmark when applicable"})),{method:[i(t),...s.map(V),...n,Z({summary:`Retrieve records using according to "${e}".`}),ee({description:"Result successfully retrieved."}),te({description:"No content returned by the method."})],params:[Ye(s),P()]}}function gt(e,t,r,o){const i=e?.prototype??e;o.method.forEach(e=>e(i,t,r)),o.params?.forEach((e,r)=>e(i,t,r))}function wt(e){return async function(t,r){const o=this.log.for(e);try{o.debug(`Invoking persistence method "${e}" given parameters: ${JSON.stringify(t.valuesInOrder)}`);const{direction:i,limit:s,offset:n}=r;return await((e,t,...r)=>{if(e instanceof D)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}`)})(this.persistence(),e,...t.valuesInOrder,i,s,n)}catch(t){throw o.error(`Custom query "${e}" failed`,t),t}}}function Et(e,t,r){return Object.defineProperty(e.prototype||e,t,{value:r,writable:!1}),Object.getOwnPropertyDescriptor(e.prototype||e,t)}class At extends L{constructor(e,t){super(t),this.clientContext=e}logCtx(e,t,r=!1,o){const i=this.clientContext.ctx;return e=e.filter(e=>void 0!==e),F.logCtx.call(this,t,o||{},r,...e,i)}}class bt extends At{persistence(e){if(!this._persistence)try{this._persistence=D.getService(this.class)}catch(e){this._persistence=j.forModel(this.class)}return e?this._persistence instanceof j?this._persistence.override(e.toOverrides()):this._persistence.for(e.toOverrides()):this._persistence}constructor(e,t){super(e,t)}logCtx(e,t,r=!1){const o=this.clientContext.ctx;let i={};try{i=o.get("overrides")}catch(e){}const s=this.persistence(o);let n,a;return s instanceof D?n=s.repo.adapter:s instanceof j?n=s.adapter:s.context&&(n=s),r?n.logCtx(e,t,!0,i).then(e=>e):(a=n.logCtx(e,t,!1,i),a)}}function Pt(e,t){if(!M.includes(e))return t;const o=[he.UPDATE,fe.UPDATE_ALL].includes(e),i=r.properties(t)||[],s=C.relations(t)||[];let n=i.filter(e=>C.generated(t,e));o&&(n=n.filter(e=>e!==C.pk(t)));class a extends(re(t,n)){}function c(e,t,r){r||(Object.defineProperty(a.prototype,e,{value:r?[t]:t,writable:!0,enumerable:!0,configurable:!0}),Reflect.defineMetadata("design:type",t,a.prototype,e))}Object.defineProperty(a,"name",{value:`${Re(t.name)}${Re(e)}DTO`});for(const o of s){let i=r.allowedTypes(t,o);if(i=i?Array.isArray(i)?i[0]:i:void 0,i="function"!=typeof i||i.name?i:i(),!i)throw new me(`Type for relation ${o} not found`);if(C.get(i.name)){const s=r.validationFor(t,o);c(o,Pt(e,i),!!s[_.LIST])}}return a}class vt{static{this.log=Oe.for(vt.name)}static getPersistence(e){try{return D.getService(e)}catch(t){return j.forModel(e)}}static createQueryRoutesFromRepository(e,t=I.QUERY){const o=vt.log.for(vt.createQueryRoutesFromRepository),i=e instanceof D?e.repo:e,s=i.class,n=r.get(i.constructor,r.key(I.QUERY))??{},a=r.get(e.constructor,r.key(Ve))??{};class c extends bt{get class(){throw Error("Method not implemented.")}constructor(e,t){super(e,t)}}for(const[e,t]of Object.entries(a)){const r=[t.path.replace(/^\/+|\/+$/g,"")].filter(e=>e&&e.trim()).join("/"),i=wt(e);if(!i){const t=`Invalid or missing handler for model ${s.name} on decorated method ${e}`;throw o.error(t),Error(t)}const n=Et(c,e,i);n&&gt(c,e,n,yt(e,r,t.httpMethod))}for(const[e,r]of Object.entries(n)){const o=[t,e,...(r.fields??[]).map(e=>":"+e)].filter(e=>e&&e.trim()).join("/"),i=Et(c,e,wt(e));i&&gt(c,e,i,yt(e,o,"GET",!0))}return c}static create(e){const t=vt.log.for(vt.create),r=C.tableName(e),o=xe(r),i=e.name,s=vt.getPersistence(e),{description:n,getPK:a,apiProperties:c,path:p}=vt.getRouteParametersFromModel(e);t.debug("Creating controller for model: "+i);const d=vt.createQueryRoutesFromRepository(s);let l=class extends d{static get class(){return e}get class(){return e}constructor(r){super(r),this.pk=C.pk(e),t.info(`Registering dynamic controller for model: ${this.class.name} route: /${o}`)}async listBy(e,t){const{ctx:r}=(await this.logCtx([],q.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([],q.PAGE_BY,!0)).for(this.paginateBy);return this.persistence(r).paginateBy(e,t.direction,t,r)}async findOneBy(e,t){const{ctx:r}=(await this.logCtx([],q.FIND_ONE_BY,!0)).for(this.findOneBy);return this.persistence(r).findOneBy(e,t,r)}async findBy(e,t,r){const{ctx:o}=(await this.logCtx([],q.FIND_BY,!0)).for(this.findBy);return this.persistence(o).for(o.toOverrides()).findBy(e,t,o)}async statement(e,t,r){const{ctx:o}=(await this.logCtx([],I.STATEMENT,!0)).for(this.statement),{direction:i,offset:s,limit:n,bookmark:a}=r;switch(t=t.map(e=>("string"==typeof e?parseInt(e):e)||e),e){case q.FIND_BY:break;case q.LIST_BY:t.push(i);break;case q.PAGE_BY:t=[t[0],i,{limit:n,offset:s,bookmark:a}];case q.FIND_ONE_BY:}return this.persistence(o).statement(e,...t,o)}async createAll(t){const{ctx:r,log:o}=(await this.logCtx([],fe.CREATE_ALL,!0)).for(this.createAll);let s;o.verbose("creating new "+i);try{s=await this.persistence(r).createAll(t.map(t=>new e(t)),r)}catch(e){throw o.error("Failed to create new "+i,e),e}return o.info(`created new ${i} with id ${s[this.pk]}`),s}async create(e){const{ctx:t,log:r}=(await this.logCtx([],he.CREATE,!0)).for(this.create);let o;r.verbose("creating new "+i);try{o=await this.persistence(t).create(e,t)}catch(e){throw r.error("Failed to create new "+i,e),e}return r.info(`created new ${i} with id ${o[this.pk]}`),o}async readAll(e){const{ctx:t,log:r}=(await this.logCtx([],fe.READ_ALL,!0)).for(this.readAll);let o;try{r.debug(`reading ${e.length} ${i}: ${e}`),o=await this.persistence(t).readAll(e,t)}catch(t){throw r.error(`Failed to ${i} with id ${e}`,t),t}return r.info(`read ${o.length} ${i}`),o}async read(e){const{ctx:t,log:r}=(await this.logCtx([],he.READ,!0)).for(this.read),o=a(...e.valuesInOrder);if(void 0===o)throw new ge(`No ${this.pk} provided`);let s;try{r.debug(`reading ${i} with ${this.pk} ${o}`),s=await this.persistence(t).read(o,t)}catch(e){throw r.error(`Failed to read ${i} with id ${o}`,e),e}return r.info(`read ${i} with id ${s[this.pk]}`),s}async updateAll(e){const{ctx:t,log:r}=(await this.logCtx([],fe.UPDATE_ALL,!0)).for(this.updateAll);let o;try{r.info(`updating ${e.length} ${i}`);const s=e.map(e=>JSON.parse(JSON.stringify(e)));o=await this.persistence(t).updateAll(s,t)}catch(e){throw r.error(e),e}return o}async update(t,r){const{ctx:o,log:s}=(await this.logCtx([],he.UPDATE,!0)).for(this.update),n=a(...t.valuesInOrder);if(void 0===n)throw new ge(`No ${this.pk} provided`);let c;try{s.info(`updating ${i} with ${this.pk} ${n}`);const t=JSON.parse(JSON.stringify(r));c=await this.persistence(o).update(new e({...t,[this.pk]:n}),o)}catch(e){throw s.error(e),e}return c}async deleteAll(e){const{ctx:t,log:r}=(await this.logCtx([],fe.DELETE_ALL,!0)).for(this.deleteAll);let o;try{r.debug(`deleting ${e.length} ${i}: ${e}`),o=await this.persistence(t).deleteAll(e,t)}catch(t){throw r.error(`Failed to delete ${i} with id ${e}`,t),t}return r.info(`deleted ${o.length} ${i}`),o}async delete(e){const{ctx:t,log:r}=(await this.logCtx([],he.DELETE,!0)).for(this.delete),o=a(...e.valuesInOrder);if(void 0===o)throw new ge(`No ${this.pk} provided`);let s;try{r.debug(`deleting ${i} with ${this.pk} ${o}`),s=await this.persistence(t).delete(o,t)}catch(e){throw r.error(`Failed to delete ${i} with id ${o}`,e),e}return r.info(`deleted ${i} with id ${o}`),s}};return Ee([Be(e,"GET","listBy/:key"),Z({summary:`Retrieve ${i} records by query.`}),V({name:"key",description:"the model key to sort by"}),W({name:"direction",required:!0,enum:N}),ee({description:i+" listed successfully."}),Ae(1,Je()),be("design:type",Function),be("design:paramtypes",[String,Object]),be("design:returntype",Promise)],l.prototype,"listBy",null),Ee([Be(e,"GET","paginateBy/:key/:page"),Z({summary:`Retrieve ${i} records by query.`}),V({name:"key",description:"the model key to sort by"}),V({name:"page",description:"the page to retrieve or the bookmark"}),W({name:"direction",required:!0,enum:N,description:"the sort order"}),W({name:"limit",required:!0,description:"the page size"}),W({name:"offset",description:"the bookmark when necessary"}),ee({description:i+" listed paginated."}),Ae(0,v("key")),Ae(1,Je()),be("design:type",Function),be("design:paramtypes",[String,Object]),be("design:returntype",Promise)],l.prototype,"paginateBy",null),Ee([Be(e,"GET","findOneBy/:key"),Z({summary:`Retrieve ${i} records by query.`}),V({name:"key",description:"the model key to sort by"}),ee({description:i+" listed found."}),oe({description:`No ${i} record matches the provided identifier.`}),Ae(0,v("key")),Ae(1,v("value")),be("design:type",Function),be("design:paramtypes",[String,Object]),be("design:returntype",Promise)],l.prototype,"findOneBy",null),Ee([Be(e,"GET","findBy/:key/:value"),Z({summary:`Retrieve ${i} records by query.`}),V({name:"key",description:"the model key to compare"}),V({name:"value",description:"the value to match"}),W({name:"direction",required:!0,enum:N,description:"the sort order when applicable"}),ee({description:i+" listed found."}),oe({description:`No ${i} record matches the provided identifier.`}),Ae(0,v("key")),Ae(1,v("value")),Ae(2,Je()),be("design:type",Function),be("design:paramtypes",[String,Object,Object]),be("design:returntype",Promise)],l.prototype,"findBy",null),Ee([Be(e,"GET","statement/:method/*args"),Z({summary:`Executes a prepared statement on ${i}.`}),V({name:"method",description:"the prepared statement to execute"}),V({name:"args",description:"concatenated list of arguments the prepared statement can accept"}),W({name:"direction",required:!0,enum:N,description:"the sort order when applicable"}),W({name:"limit",required:!0,description:"limit or page size when applicable"}),W({name:"offset",required:!0,description:"offset or bookmark when applicable"}),ee({description:i+" listed found."}),oe({description:`No ${i} record matches the provided identifier.`}),Ae(0,v("method")),Ae(1,v("args")),Ae(2,Je()),be("design:type",Function),be("design:paramtypes",[String,Array,Object]),be("design:returntype",Promise)],l.prototype,"statement",null),Ee([Be(e,"POST","bulk"),Z({summary:`Create a new ${i}.`}),ie({description:"Payload for "+i,schema:{type:"array",items:{$ref:se(e)}}}),ne({description:i+" created successfully.",schema:{type:"array",items:{$ref:se(e)}}}),ae({description:"Payload validation failed."}),ce({description:"Repository rejected the provided payload."}),Ae(0,He()),be("design:type",Function),be("design:paramtypes",[Array]),be("design:returntype",Promise)],l.prototype,"createAll",null),Ee([Be(e,"POST"),Z({summary:`Create a new ${i}.`}),ie({description:"Payload for "+i,type:Pt(he.CREATE,e)}),ne({description:i+" created successfully.",schema:{$ref:se(e)}}),ae({description:"Payload validation failed."}),ce({description:"Repository rejected the provided payload."}),Ae(0,He()),be("design:type",Function),be("design:paramtypes",[Object]),be("design:returntype",Promise)],l.prototype,"create",null),Ee([Be(e,"GET","bulk"),Z({summary:`Retrieve a ${i} record by id.`}),W({name:"ids",required:!0,type:"array"}),ee({description:i+" retrieved successfully.",schema:{type:"array",items:{$ref:se(e)}}}),oe({description:`No ${i} record matches the provided identifier.`}),Ae(0,P("ids")),be("design:type",Function),be("design:paramtypes",[Array]),be("design:returntype",Promise)],l.prototype,"readAll",null),Ee([Be(e,"GET",p),Ge(c),Z({summary:`Retrieve a ${i} record by id.`}),ee({description:i+" retrieved successfully.",schema:{$ref:se(e)}}),oe({description:`No ${i} record matches the provided identifier.`}),Ae(0,Ye(c)),be("design:type",Function),be("design:paramtypes",[Object]),be("design:returntype",Promise)],l.prototype,"read",null),Ee([Be(e,"PUT","bulk"),Ge(c),Z({summary:`Replace an existing ${i} record with a new payload.`}),ie({description:"Payload for replace a existing record of "+i,schema:{type:"array",items:{$ref:se(e)}}}),ne({description:i+" updated successfully.",schema:{type:"array",items:{$ref:se(e)}}}),oe({description:`No ${i} record matches the provided identifier.`}),ae({description:"Payload validation failed."}),Ae(0,He()),be("design:type",Function),be("design:paramtypes",[Array]),be("design:returntype",Promise)],l.prototype,"updateAll",null),Ee([Be(e,"PUT",p),Ge(c),Z({summary:`Replace an existing ${i} record with a new payload.`}),ie({description:"Payload for replace a existing record of "+i,schema:{$ref:se(e)}}),ee({description:i+" updated successfully."}),oe({description:`No ${i} record matches the provided identifier.`}),ae({description:"Payload validation failed."}),Ae(0,Ye(c)),Ae(1,He()),be("design:type",Function),be("design:paramtypes",[Object,Object]),be("design:returntype",Promise)],l.prototype,"update",null),Ee([Be(e,"DELETE","bulk"),Ge(c),Z({summary:`Retrieve a ${i} record by id.`}),W({name:"ids",required:!0,type:"array"}),ee({description:i+" retrieved successfully."}),oe({description:`No ${i} record matches the provided identifier.`}),Ae(0,P("ids")),be("design:type",Function),be("design:paramtypes",[Array]),be("design:returntype",Promise)],l.prototype,"deleteAll",null),Ee([Be(e,"DELETE",p),Ge(c),Z({summary:`Delete a ${i} record by id.`}),ee({description:i+" record deleted successfully."}),oe({description:`No ${i} record matches the provided identifier.`}),Ae(0,Ye(c)),be("design:type",Function),be("design:paramtypes",[Object]),be("design:returntype",Promise)],l.prototype,"delete",null),l=Ee([T(o),pe(i),de(e),nt(e),be("design:paramtypes",[dt])],l),l}static getRouteParametersFromModel(e){const t=C.pk(e),o=r.get(e,r.key(ye.COMPOSED,t)),i=o?.args??[],s=Array.isArray(i)&&i.length>0?Array.from(new Set([...i])):Array.from(new Set([t])),n=r.description(e);return{path:":"+s.join("/:"),description:n,apiProperties:s.map(t=>({name:t,description:r.description(e,t),required:!0,type:String})),getPK:(...e)=>o?.separator?e.join(o.separator):e.join("")}}}B.transformerFor=(e=>{const t="string"==typeof e?e:e.alias;return r.innerGet(Symbol.for("transformers"),t)}).bind(B),B.flavoursToTransform=(()=>{const e=r.innerGet(Symbol.for("transformers"));if(e)return Object.keys(e)}).bind(B);let Tt=class{constructor(e,t){this.requestContext=e,this.executor=t}async contextualize(e){const t={headers:e.headers,overrides:{}},r=B.flavoursToTransform();if(r)for(const o of r)try{const r=B.transformerFor(o),i=await r.from(e);Object.assign(t.overrides,i)}catch(e){throw new me("Failed to contextualize request: "+e)}return(new U).accumulate(Object.assign({},G,{logger:Oe.get(),timestamp:new Date},t))}async intercept(e,t){const r=e.switchToHttp().getRequest(),o=e.switchToHttp().getResponse(),i=await this.contextualize(r);return this.requestContext.applyCtx(i),await this.executor.exec(r,o),t.handle()}};function Rt(e){var t;let r=class{static{t=this}static{this.log=Oe.for(t.name).for(e)}static createModelServices(e){return e.map(e=>({provide:e.name+"Service",useFactory:()=>D.forModel(e)}))}static forRoot(e,r={}){const o=this.log.for(this.forRoot);o.info("Generating controllers for flavour...");const i=B.models(e);let s=[];r.autoServices&&(o.info("Auto-services enabled. Initializing service generation."),s=this.createModelServices(i),o.info(`Auto-services completed. ${s.length} services initialized.`));const n=i.map(vt.create);return o.info(`Generated ${n.length} controllers`),{module:t,controllers:n,providers:[{provide:We,useFactory:()=>r.handlers?.map(e=>(o.info("Registered request handler: "+e.name),new e))??[]},dt,lt,{provide:ve,useClass:Tt},...s]}}};return r=t=Ee([R({})],r),Object.assign(r,"name",{value:"DecafModule"+e}),r}Tt=Ee([c({scope:p.REQUEST}),be("design:paramtypes",[dt,lt])],Tt);class Ot extends H{constructor(e){super(e,Ot.name)}}let xt=class{catch(e,t){const r=t.switchToHttp(),o=r.getResponse(),i=r.getRequest(),s="production"===$e.env;e instanceof we||(e=new me(e.message)),o.status(e.code).json({status:e.code,error:s?e.name:e.message,timestamp:(new Date).toISOString(),path:i.url,method:i.method})}};function $t(){return x(new xt)}xt=Ee([O()],xt);const St={title:"Swagger | OpenAPI Specification (OAS)",description:"Standardized format for describing RESTful APIs",version:"0.0.1",path:"docs",faviconFilePath:"",topbarIconFilePath:"",auth:{type:"http",scheme:"bearer",bearerFormat:"JWT",name:"Authorization",description:"Enter JWT token",in:"header"},persistAuthorization:!0,topbarBgColor:"#000000"};class _t{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||St.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=_e.join(this.options.assetsPath||"",e),o=Se(r,{encoding:"base64"});return t?"data:image/png;base64,"+o:o}}class Ct{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 le).setTitle(this.options.title).setDescription(e).setVersion(this.options.version||"0.0.1").addBearerAuth(this.options.auth||St.auth).build();return ue.createDocument(this.app,t,{extraModels:this.options.extraModels||[]})}setupSwagger(){const e=this.createDocument(),t=new _t({title:this.options.title,path:this.options.path||St.path,persistAuthorization:this.options.persistAuthorization??!0,assetsPath:this.options.assetsPath,faviconPath:this.options.faviconFilePath,topbarIconPath:this.options.topbarIconFilePath,topbarBgColor:this.options.topbarBgColor});ue.setup(this.options.path||St.path,this.app,e,{...t.getCustomOptions()})}}class It{static get logger(){return this._logger||(this._logger=new $("NestBootstrap")),this._logger}static initialize(e){return this.app=e,this}static enableLogger(e){return this._logger=e||new $("NestBootstrap"),this.app.useLogger(this._logger),this}static enableCors(e=[],t=["GET","POST","PUT","DELETE"]){const r="*"===e?"*":e.map(e=>e.trim().toLowerCase()),o={origin:(e,t)=>e?"*"===r||Array.isArray(r)&&r.includes(e.toLowerCase())?t(null,!0):void t(new Ot(`Origin ${e} not allowed`)):t(null,!0),credentials:!0,methods:t.join(",")};return this.app.enableCors(o),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 Ct(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(...e){return this.app.useGlobalFilters(...e.length>0?e:[new xt]),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)}})}}var kt;let Nt=class{static{kt=this}static get persistence(){if(!this._persistence)throw new me("Persistence service not initialized");return this._persistence}static get log(){return this._logger||(this._logger=Oe.for(kt)),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 z,await this._persistence.boot(r);const o=this._persistence.client;for(let t=0;t<o.length;t++){const r=e.conf[t];let[,,i]=r;if(!i){const e=B.transformerFor(o[t].flavour);if(!e)throw new me(`No transformer found for flavour ${o[t].flavour}. you should either @requestToContextTransformer or provide a transformer in the config`);i=e instanceof ut?e:new e}ht(o[t].flavour)(i)}t.info("persistence layer created successfully!")}return this.persistence.client}static forRoot(e){const t={provide:Ke,useValue:e},r={useFactory:async e=>kt.bootPersistence(e),provide:Xe,durable:!0,scope:p.DEFAULT,inject:[Ke]};return{module:kt,providers:[r,t],exports:[r]}}async onApplicationShutdown(){const e=kt.log.for(this.onApplicationShutdown),t=this.moduleRef.get(Xe);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)}}};var Dt;Nt=kt=Ee([S(),R({}),Ae(0,d(Ke)),be("design:paramtypes",[Object,Te])],Nt);let Lt=Dt=class{static async forRootAsync(e){const{autoControllers:t,autoServices:r,handlers:o}=e,i=(await Nt.bootPersistence(e)).map(e=>e.flavour),s=[Nt.forRoot(e)];return t&&i.forEach(e=>{s.push(Rt(e).forRoot(e,{autoServices:r,handlers:o}))}),{module:Dt,imports:s}}};function Ft(e){const t=C.get(e);if(!t)throw new me("Failed to find repository for "+e);return j.forModel(t)}Lt=Dt=Ee([R({})],Lt);const jt="##VERSION##",Mt="##PACKAGE##";r.registerLibrary(Mt,jt);export{et as AUTH_HANDLER,tt as AUTH_META_KEY,Be as ApiOperationFromModel,Ge as ApiParamsFromModel,je as ApiProperty,nt as Auth,st as AuthInterceptor,rt as AuthRole,Ue as BulkApiOperationFromModel,Ot as CorsError,Xe as DECAF_ADAPTER_ID,Ze as DECAF_ADAPTER_OPTIONS,ot as DECAF_CONTEXT_KEY,We as DECAF_HANDLERS,Ke as DECAF_MODULE_OPTIONS,Ve as DECAF_ROUTE,Ie as DECORATORS,Ce as DECORATORS_PREFIX,ct as DecafAuthHandler,He as DecafBody,At as DecafController,xt as DecafExceptionFilter,lt as DecafHandlerExecutor,bt as DecafModelController,Lt as DecafModule,Ye as DecafParams,Je as DecafQuery,dt as DecafRequestContext,Tt as DecafRequestHandlerInterceptor,pt as DecafRoleAuthHandler,Pt as DtoFor,vt as FromModelController,Qe as HttpVerbToDecorator,It as NestBootstraper,Mt as PACKAGE_NAME,ft as RamTransformer,at as Roles,Ct as SwaggerBuilder,$t as UseDecafFilter,jt as VERSION,Me as createApiPropertyDecorator,Fe as createPropertyDecorator,Le as getEnumType,De as getEnumValues,Rt as getModuleFor,qe as isOperationBlocked,Ne as isUndefined,Ft as repoForModel,it as route};
2
2
  //# sourceMappingURL=for-nest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"for-nest.js","sources":["../src/overrides/constants.ts","../src/overrides/helpers.ts","../src/overrides/decoration.ts","../src/decaf-model/decorators/ApiOperationFromModel.ts","../src/decaf-model/decorators/ApiParamsFromModel.ts","../src/decoration.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/route.ts","../src/interceptors/AuthInterceptor.ts","../src/decaf-model/decorators/decorators.ts","../src/request/DecafAuthHandler.ts","../src/request/DecafRequestContext.ts","../src/request/DecafHandlerExecutor.ts","../src/interceptors/context.ts","../src/request/RamRequestTransformer.ts","../src/decaf-model/utils.ts","../src/controllers.ts","../src/factory/openapi/DtoBuilder.ts","../src/decaf-model/FromModelController.ts","../src/overrides/overrides.ts","../src/interceptors/DecafRequestHandlerInterceptor.ts","../src/decaf-model/DecafModelModule.ts","../src/factory/errors/cors.ts","../src/factory/exceptions/DecafErrorFilter.ts","../src/factory/exceptions/decorators.ts","../src/factory/openapi/constants.ts","../src/factory/openapi/SwaggerCustomUI.ts","../src/factory/openapi/SwaggerBuilder.ts","../src/factory/NestBootstraper.ts","../src/core-module.ts","../src/module.ts","../src/utils.ts","../src/index.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],"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","getTypeIsArrayTuple","input","isArrayFlag","isInputArray","isArray","isUndefined","obj","getEnumValues","enumType","Array","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","ApiProperty","options","createApiPropertyDecorator","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","BulkApiOperationFromModel","BulkCrudOperationKeys","READ_ALL","CREATE_ALL","UPDATE_ALL","DELETE_ALL","ApiParamsFromModel","props","decorators","p","ApiParamDec","name","description","required","String","applyDecorators","Decoration","for","InjectablesKeys","INJECTABLE","extend","decorator","category","cfg","assign","DefaultInjectablesConfig","Injectable","scope","singleton","Scope","DEFAULT","REQUEST","durable","INJECT","descriptor","Inject","ValidationKeys","REQUIRED","MAX","max","maximum","MIN","min","minimum","MAX_LENGTH","maxLength","MIN_LENGTH","minLength","TYPE","prop","DATE","format","ENUM","PATTERN","pat","pattern","source","PersistenceKeys","COLUMN","DecorationKeys","DESCRIPTION","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","Error","DECAF_MODULE_OPTIONS","DECAF_ADAPTER_ID","DECAF_ROUTE","DECAF_HANDLERS","Symbol","DECAF_ADAPTER_OPTIONS","AUTH_HANDLER","AUTH_META_KEY","AuthRole","DECAF_CONTEXT_KEY","route","httpMethod","define","methodMetadata","AuthInterceptor","reflector","authHandler","this","intercept","next","modelName","getHandler","authorize","handle","Auth","model","resource","SetMetadata","UseInterceptors","__decorate","__param","Optional","Reflector","Roles","roles","DecafAuthHandler","parseRequest","userRole","headers","authorization","split","AuthorizationError","Model","DecafRoleAuthHandler","super","DecafRequestContext","put","record","_ctx","accumulate","applyCtx","InternalError","DecafHandlerExecutor","handlers","context","exec","res","RequestToContextTransformer","requestToContextTransformer","flavour","set","RamTransformer","from","user","UUID","apiParamSpec","getApiDecorators","methodName","routePath","httpVerb","includeQueryParams","NestHttpRouteDec","apiPathParams","startsWith","slice","extractPathParams","swaggerQueryParams","push","ApiQuery","OrderDirection","method","ApiParam","ApiOperation","summary","ApiOkResponse","ApiNoContentResponse","Query","applyApiDecorators","proto","prototype","forEach","d","index","createRouteHandler","async","pathParams","queryParams","log","debug","JSON","stringify","direction","persistence","ModelService","statement","resolvePersistenceMethod","e","error","defineRouteMethod","ControllerClass","defineProperty","writable","getOwnPropertyDescriptor","DecafController","Service","clientContext","logCtx","operation","allowCreate","overrides","ContextualLoggedClass","call","DecafModelController","_persistence","getService","Repository","forModel","override","toOverrides","contextual","ctxArgs","repo","then","DtoFor","TransactionOperationKeys","isUpdate","relations","exceptions","generated","pk","DynamicDTO","OmitType","addRelation","relation","relationDto","enumerable","configurable","toPascalCase","allowedTypes","meta","validationFor","LIST","FromModelController","Logging","getPersistence","ModelClazz","createQueryRoutesFromRepository","prefix","QUERY","queryMethods","routeMethods","QueryController","entries","replace","segment","trim","join","message","objValues","fields","f","create","tableName","toKebabCase","modelClazzName","getPK","apiProperties","getRouteParametersFromModel","BaseController","DynamicModelController","info","listBy","details","PreparedStatementKeys","LIST_BY","paginateBy","PAGE_BY","findOneBy","FIND_ONE_BY","findBy","FIND_BY","STATEMENT","a","parseInt","createAll","created","verbose","readAll","ids","read","routeParams","id","ValidationError","updateAll","updated","payloads","entry","parse","update","payload","deleteAll","delete","del","Param","ApiNotFoundResponse","ApiBody","schema","$ref","getSchemaPath","ApiCreatedResponse","ApiBadRequestResponse","ApiUnprocessableEntityResponse","Controller","ApiTags","ApiExtraModels","composed","DBKeys","COMPOSED","composedKeys","uniqueKeys","Set","separator","Adapter","transformerFor","adapter","alias","bind","flavoursToTransform","DecafRequestHandlerInterceptor","requestContext","executor","contextualize","flags","flavours","transformer","Context","DefaultAdapterFlags","logger","timestamp","Date","getResponse","getModuleFor","DecafModelModule","DecafModelModule_1","createModelServices","models","provide","useFactory","forRoot","trackedModels","modelServices","autoServices","controllers","module","providers","H","APP_INTERCEPTOR","useClass","Module","CorsError","ForbiddenError","msg","DecafExceptionFilter","exception","host","response","request","isProduction","LoggedEnvironment","env","BaseError","status","code","json","toISOString","url","UseDecafFilter","UseFilters","Catch","SWAGGER_UI_CONSTANTS","title","version","faviconFilePath","topbarIconFilePath","auth","scheme","bearerFormat","in","persistAuthorization","topbarBgColor","SwaggerCustomUI","customCSS","css","topbarIconPath","b64","getCustomOptions","favicon","faviconPath","customSiteTitle","customCss","swaggerOptions","jsonDocumentUrl","yamlDocumentUrl","file","img","filePath","assetsPath","readFileSync","encoding","SwaggerBuilder","app","createDocument","config","DocumentBuilder","setTitle","setDescription","setVersion","addBearerAuth","build","SwaggerModule","extraModels","setupSwagger","document","swaggerUI","setup","NestBootstraper","_logger","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","listen","getUrl","DecafCoreModule","DecafCoreModule_1","moduleRef","bootPersistence","trimmed","conf","contr","pop","PersistenceService","boot","clients","client","i","c","typeOrmModuleOptions","useValue","inject","exports","onApplicationShutdown","adapters","shutdown","Global","ModuleRef","DecafModule","DecafModule_1","forRootAsync","autoControllers","imports","repoForModel","m","VERSION","PACKAGE_NAME","registerLibrary"],"mappings":"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"}
1
+ {"version":3,"file":"for-nest.js","sources":["../src/overrides/constants.ts","../src/overrides/helpers.ts","../src/overrides/decoration.ts","../src/decaf-model/decorators/ApiOperationFromModel.ts","../src/decaf-model/decorators/ApiParamsFromModel.ts","../src/decoration.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/route.ts","../src/interceptors/AuthInterceptor.ts","../src/decaf-model/decorators/decorators.ts","../src/request/DecafAuthHandler.ts","../src/request/DecafRequestContext.ts","../src/request/DecafHandlerExecutor.ts","../src/interceptors/context.ts","../src/request/RamRequestTransformer.ts","../src/decaf-model/utils.ts","../src/controllers.ts","../src/factory/openapi/DtoBuilder.ts","../src/decaf-model/FromModelController.ts","../src/overrides/overrides.ts","../src/interceptors/DecafRequestHandlerInterceptor.ts","../src/decaf-model/DecafModelModule.ts","../src/factory/errors/cors.ts","../src/factory/exceptions/DecafErrorFilter.ts","../src/factory/exceptions/decorators.ts","../src/factory/openapi/constants.ts","../src/factory/openapi/SwaggerCustomUI.ts","../src/factory/openapi/SwaggerBuilder.ts","../src/factory/NestBootstraper.ts","../src/core-module.ts","../src/module.ts","../src/utils.ts","../src/index.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],"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","getTypeIsArrayTuple","input","isArrayFlag","isInputArray","isArray","isUndefined","obj","getEnumValues","enumType","Array","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","ApiProperty","options","createApiPropertyDecorator","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","BulkApiOperationFromModel","BulkCrudOperationKeys","READ_ALL","CREATE_ALL","UPDATE_ALL","DELETE_ALL","ApiParamsFromModel","props","decorators","p","ApiParamDec","name","description","required","String","applyDecorators","Decoration","for","InjectablesKeys","INJECTABLE","extend","decorator","category","cfg","assign","DefaultInjectablesConfig","Injectable","scope","singleton","Scope","DEFAULT","REQUEST","durable","INJECT","descriptor","Inject","ValidationKeys","REQUIRED","MAX","max","maximum","MIN","min","minimum","MAX_LENGTH","maxLength","MIN_LENGTH","minLength","TYPE","prop","DATE","format","ENUM","PATTERN","pat","pattern","source","PersistenceKeys","COLUMN","DecorationKeys","DESCRIPTION","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","Error","DECAF_MODULE_OPTIONS","DECAF_ADAPTER_ID","DECAF_ROUTE","DECAF_HANDLERS","Symbol","DECAF_ADAPTER_OPTIONS","AUTH_HANDLER","AUTH_META_KEY","AuthRole","DECAF_CONTEXT_KEY","route","httpMethod","define","methodMetadata","AuthInterceptor","reflector","authHandler","this","intercept","next","modelName","getHandler","authorize","handle","Auth","model","resource","SetMetadata","UseInterceptors","__decorate","__param","Optional","Reflector","Roles","roles","DecafAuthHandler","parseRequest","userRole","headers","authorization","split","AuthorizationError","Model","DecafRoleAuthHandler","super","DecafRequestContext","put","record","overrides","e","_ctx","accumulate","applyCtx","InternalError","DecafHandlerExecutor","handlers","context","exec","res","RequestToContextTransformer","requestToContextTransformer","flavour","set","RamTransformer","from","user","UUID","apiParamSpec","getApiDecorators","methodName","routePath","httpVerb","includeQueryParams","NestHttpRouteDec","apiPathParams","startsWith","slice","extractPathParams","swaggerQueryParams","push","ApiQuery","OrderDirection","method","ApiParam","ApiOperation","summary","ApiOkResponse","ApiNoContentResponse","Query","applyApiDecorators","proto","prototype","forEach","d","index","createRouteHandler","async","pathParams","queryParams","log","debug","JSON","stringify","direction","persistence","ModelService","statement","resolvePersistenceMethod","error","defineRouteMethod","ControllerClass","defineProperty","writable","getOwnPropertyDescriptor","DecafController","Service","clientContext","logCtx","operation","allowCreate","ContextualLoggedClass","call","DecafModelController","_persistence","getService","Repository","forModel","override","toOverrides","contextual","ctxArgs","repo","then","DtoFor","TransactionOperationKeys","isUpdate","relations","exceptions","generated","pk","DynamicDTO","OmitType","addRelation","relation","relationDto","enumerable","configurable","toPascalCase","allowedTypes","meta","validationFor","LIST","FromModelController","Logging","getPersistence","ModelClazz","createQueryRoutesFromRepository","prefix","QUERY","queryMethods","routeMethods","QueryController","entries","replace","segment","trim","join","message","objValues","fields","f","create","tableName","toKebabCase","modelClazzName","getPK","apiProperties","getRouteParametersFromModel","BaseController","DynamicModelController","info","listBy","details","PreparedStatementKeys","LIST_BY","paginateBy","PAGE_BY","findOneBy","FIND_ONE_BY","findBy","FIND_BY","STATEMENT","a","parseInt","createAll","created","verbose","readAll","ids","read","routeParams","id","ValidationError","updateAll","updated","payloads","entry","parse","update","payload","deleteAll","delete","del","Param","ApiNotFoundResponse","ApiBody","schema","$ref","getSchemaPath","ApiCreatedResponse","ApiBadRequestResponse","ApiUnprocessableEntityResponse","Controller","ApiTags","ApiExtraModels","composed","DBKeys","COMPOSED","composedKeys","uniqueKeys","Set","separator","Adapter","transformerFor","adapter","alias","bind","flavoursToTransform","DecafRequestHandlerInterceptor","requestContext","executor","contextualize","flags","flavours","transformer","Context","DefaultAdapterFlags","logger","timestamp","Date","getResponse","getModuleFor","DecafModelModule","DecafModelModule_1","createModelServices","models","provide","useFactory","forRoot","trackedModels","modelServices","autoServices","controllers","module","providers","H","APP_INTERCEPTOR","useClass","Module","CorsError","ForbiddenError","msg","DecafExceptionFilter","exception","host","response","request","isProduction","LoggedEnvironment","env","BaseError","status","code","json","toISOString","url","UseDecafFilter","UseFilters","Catch","SWAGGER_UI_CONSTANTS","title","version","faviconFilePath","topbarIconFilePath","auth","scheme","bearerFormat","in","persistAuthorization","topbarBgColor","SwaggerCustomUI","customCSS","css","topbarIconPath","b64","getCustomOptions","favicon","faviconPath","customSiteTitle","customCss","swaggerOptions","jsonDocumentUrl","yamlDocumentUrl","file","img","filePath","assetsPath","readFileSync","encoding","SwaggerBuilder","app","createDocument","config","DocumentBuilder","setTitle","setDescription","setVersion","addBearerAuth","build","SwaggerModule","extraModels","setupSwagger","document","swaggerUI","setup","NestBootstraper","_logger","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","listen","getUrl","DecafCoreModule","DecafCoreModule_1","moduleRef","bootPersistence","trimmed","conf","contr","pop","PersistenceService","boot","clients","client","i","c","typeOrmModuleOptions","useValue","inject","exports","onApplicationShutdown","adapters","shutdown","Global","ModuleRef","DecafModule","DecafModule_1","forRootAsync","autoControllers","imports","repoForModel","m","VERSION","PACKAGE_NAME","registerLibrary"],"mappings":"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"}
@@ -13,4 +13,4 @@ export type DecafServerFlags<LOG extends Logger = Logger> = AdapterFlags<LOG> &
13
13
  headers: Record<string, any>;
14
14
  overrides: Record<string, any>;
15
15
  };
16
- export type DecafServerContext = Context<DecafServerFlags>;
16
+ export type DecafServerCtx = Context<DecafServerFlags>;
@@ -1,15 +1,15 @@
1
1
  import { Context, ContextOf, ContextualizedArgs, FlagsOf, MaybeContextualArg, MethodOrOperation, ModelService, Repo, Service } from "@decaf-ts/core";
2
- import { DecafServerContext } from "./constants";
2
+ import { DecafServerCtx } from "./constants";
3
3
  import { Model, ModelConstructor } from "@decaf-ts/decorator-validation";
4
4
  import { DecafRequestContext } from "./request/DecafRequestContext";
5
- export declare abstract class DecafController<CONTEXT extends DecafServerContext> extends Service<CONTEXT> {
5
+ export declare abstract class DecafController<CONTEXT extends DecafServerCtx> extends Service<CONTEXT> {
6
6
  protected readonly clientContext: DecafRequestContext;
7
7
  protected constructor(clientContext: DecafRequestContext, name: string);
8
8
  protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<CONTEXT, ARGS>, operation: METHOD): ContextualizedArgs<CONTEXT, ARGS, METHOD extends string ? true : false>;
9
9
  protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<CONTEXT, ARGS>, operation: METHOD, allowCreate: false, overrides?: Partial<FlagsOf<CONTEXT>>): ContextualizedArgs<CONTEXT, ARGS, METHOD extends string ? true : false>;
10
10
  protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<CONTEXT, ARGS>, operation: METHOD, allowCreate: true, overrides?: Partial<FlagsOf<CONTEXT>>): Promise<ContextualizedArgs<CONTEXT, ARGS, METHOD extends string ? true : false>>;
11
11
  }
12
- export declare abstract class DecafModelController<M extends Model<boolean>, C extends DecafServerContext = DecafServerContext> extends DecafController<C> {
12
+ export declare abstract class DecafModelController<M extends Model<boolean>, C extends DecafServerCtx = DecafServerCtx> extends DecafController<C> {
13
13
  private _persistence?;
14
14
  abstract get class(): ModelConstructor<M>;
15
15
  persistence(ctx?: Context<any>): Repo<M> | ModelService<M>;
@@ -13,4 +13,4 @@ export type DecafServerFlags<LOG extends Logger = Logger> = AdapterFlags<LOG> &
13
13
  headers: Record<string, any>;
14
14
  overrides: Record<string, any>;
15
15
  };
16
- export type DecafServerContext = Context<DecafServerFlags>;
16
+ export type DecafServerCtx = Context<DecafServerFlags>;
@@ -1,15 +1,15 @@
1
1
  import { Context, ContextOf, ContextualizedArgs, FlagsOf, MaybeContextualArg, MethodOrOperation, ModelService, Repo, Service } from "@decaf-ts/core";
2
- import { DecafServerContext } from "./constants";
2
+ import { DecafServerCtx } from "./constants";
3
3
  import { Model, ModelConstructor } from "@decaf-ts/decorator-validation";
4
4
  import { DecafRequestContext } from "./request/DecafRequestContext";
5
- export declare abstract class DecafController<CONTEXT extends DecafServerContext> extends Service<CONTEXT> {
5
+ export declare abstract class DecafController<CONTEXT extends DecafServerCtx> extends Service<CONTEXT> {
6
6
  protected readonly clientContext: DecafRequestContext;
7
7
  protected constructor(clientContext: DecafRequestContext, name: string);
8
8
  protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<CONTEXT, ARGS>, operation: METHOD): ContextualizedArgs<CONTEXT, ARGS, METHOD extends string ? true : false>;
9
9
  protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<CONTEXT, ARGS>, operation: METHOD, allowCreate: false, overrides?: Partial<FlagsOf<CONTEXT>>): ContextualizedArgs<CONTEXT, ARGS, METHOD extends string ? true : false>;
10
10
  protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<CONTEXT, ARGS>, operation: METHOD, allowCreate: true, overrides?: Partial<FlagsOf<CONTEXT>>): Promise<ContextualizedArgs<CONTEXT, ARGS, METHOD extends string ? true : false>>;
11
11
  }
12
- export declare abstract class DecafModelController<M extends Model<boolean>, C extends DecafServerContext = DecafServerContext> extends DecafController<C> {
12
+ export declare abstract class DecafModelController<M extends Model<boolean>, C extends DecafServerCtx = DecafServerCtx> extends DecafController<C> {
13
13
  private _persistence?;
14
14
  abstract get class(): ModelConstructor<M>;
15
15
  persistence(ctx?: Context<any>): Repo<M> | ModelService<M>;
@@ -37,5 +37,5 @@ export * from "./utils";
37
37
  * @constant
38
38
  * @type {string}
39
39
  */
40
- export declare const VERSION = "0.2.0";
40
+ export declare const VERSION = "0.2.2";
41
41
  export declare const PACKAGE_NAME = "@decaf-ts/for-nest";
package/lib/esm/index.js CHANGED
@@ -38,7 +38,7 @@ export * from "./utils.js";
38
38
  * @constant
39
39
  * @type {string}
40
40
  */
41
- export const VERSION = "0.2.0";
41
+ export const VERSION = "0.2.2";
42
42
  export const PACKAGE_NAME = "@decaf-ts/for-nest";
43
43
  Metadata.registerLibrary(PACKAGE_NAME, VERSION);
44
44
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
1
  import { CallHandler, ExecutionContext, NestInterceptor } from "@nestjs/common";
2
2
  import { DecafHandlerExecutor, DecafRequestContext } from "../request";
3
- import { DecafServerContext } from "../constants";
3
+ import { DecafServerCtx } from "../constants";
4
4
  import "../overrides";
5
5
  /**
6
6
  * @description
@@ -52,6 +52,6 @@ export declare class DecafRequestHandlerInterceptor implements NestInterceptor {
52
52
  protected readonly requestContext: DecafRequestContext;
53
53
  protected readonly executor: DecafHandlerExecutor;
54
54
  constructor(requestContext: DecafRequestContext, executor: DecafHandlerExecutor);
55
- protected contextualize(req: any): Promise<DecafServerContext>;
55
+ protected contextualize(req: any): Promise<DecafServerCtx>;
56
56
  intercept(context: ExecutionContext, next: CallHandler): Promise<import("rxjs").Observable<any>>;
57
57
  }
@@ -1,6 +1,6 @@
1
- import { DecafServerContext } from "../constants";
1
+ import { DecafServerCtx } from "../constants";
2
2
  import { FlagsOf } from "@decaf-ts/core";
3
- export declare abstract class RequestToContextTransformer<C extends DecafServerContext> {
3
+ export declare abstract class RequestToContextTransformer<C extends DecafServerCtx> {
4
4
  abstract from(req: any, ...args: any[]): Promise<FlagsOf<C>>;
5
5
  }
6
6
  export declare function requestToContextTransformer(flavour: string): (original: any) => any;
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/interceptors/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,OAAgB,2BAA2B;CAIhD;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAe;IACzD,OAAO,SAAS,2BAA2B,CAAC,QAAa;QACvD,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,OAAO,QAAQ,KAAK,UAAU;YAChC,OAAO,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/interceptors/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,OAAgB,2BAA2B;CAEhD;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAe;IACzD,OAAO,SAAS,2BAA2B,CAAC,QAAa;QACvD,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,OAAO,QAAQ,KAAK,UAAU;YAChC,OAAO,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
- import { DecafServerContext } from "../constants";
1
+ import { DecafServerCtx } from "../constants";
2
2
  /**
3
3
  * @description
4
4
  * Request-scoped context used to store arbitrary values for the duration of a single request.
@@ -20,7 +20,7 @@ import { DecafServerContext } from "../constants";
20
20
  * const tenantId = context.get<string>("tenantId");
21
21
  * ```
22
22
  */
23
- export declare class DecafRequestContext<C extends DecafServerContext = DecafServerContext> {
23
+ export declare class DecafRequestContext<C extends DecafServerCtx = DecafServerCtx> {
24
24
  private _ctx?;
25
25
  put(record: Record<any, any>): void;
26
26
  applyCtx(ctx: C): void;
@@ -29,7 +29,17 @@ import { InternalError } from "@decaf-ts/db-decorators";
29
29
  */
30
30
  let DecafRequestContext = class DecafRequestContext {
31
31
  put(record) {
32
- this._ctx = this.ctx.accumulate(record);
32
+ let overrides;
33
+ try {
34
+ overrides = this.ctx.get("overrides");
35
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
36
+ }
37
+ catch (e) {
38
+ overrides = {};
39
+ }
40
+ this._ctx = this.ctx.accumulate({
41
+ overrides: Object.assign(overrides, record),
42
+ });
33
43
  }
34
44
  applyCtx(ctx) {
35
45
  this._ctx = ctx;
@@ -1 +1 @@
1
- {"version":3,"file":"DecafRequestContext.js","sourceRoot":"","sources":["../../../src/request/DecafRequestContext.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;GAoBG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAK9B,GAAG,CAAC,MAAwB;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAQ,CAAC;IACjD,CAAC;IAED,QAAQ,CAAC,GAAM;QACb,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED,IAAI,GAAG;QACL,IAAI,CAAC,IAAI,CAAC,IAAI;YACZ,MAAM,IAAI,aAAa,CAAC,qCAAqC,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF,CAAA;AAlBY,mBAAmB;IAD/B,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;GACxB,mBAAmB,CAkB/B"}
1
+ {"version":3,"file":"DecafRequestContext.js","sourceRoot":"","sources":["../../../src/request/DecafRequestContext.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;GAoBG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAG9B,GAAG,CAAC,MAAwB;QAC1B,IAAI,SAAc,CAAC;QACnB,IAAI,CAAC;YACH,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACtC,6DAA6D;QAC/D,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,SAAS,GAAG,EAAE,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC;SAC5C,CAAQ,CAAC;IACZ,CAAC;IAED,QAAQ,CAAC,GAAM;QACb,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED,IAAI,GAAG;QACL,IAAI,CAAC,IAAI,CAAC,IAAI;YACZ,MAAM,IAAI,aAAa,CAAC,qCAAqC,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF,CAAA;AA1BY,mBAAmB;IAD/B,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;GACxB,mBAAmB,CA0B/B"}
@@ -1,13 +1,13 @@
1
1
  import { Adapter, ConfigOf, ContextOf } from "@decaf-ts/core";
2
2
  import { Constructor } from "@decaf-ts/decoration";
3
3
  import { ExecutionContext, Type } from "@nestjs/common";
4
- import { DecafServerContext } from "./constants";
4
+ import { DecafServerCtx } from "./constants";
5
5
  import { RequestToContextTransformer } from "./interceptors/context";
6
6
  export interface RequestContextAccessor {
7
7
  set(key: string | symbol, value: any): void;
8
8
  get<T = any>(key: string | symbol): T | undefined;
9
9
  }
10
- export interface DecafRequestHandler<C extends DecafServerContext = DecafServerContext> {
10
+ export interface DecafRequestHandler<C extends DecafServerCtx = DecafServerCtx> {
11
11
  handle(context: C, req: Request, res: Response): Promise<void>;
12
12
  }
13
13
  /**
package/lib/index.cjs CHANGED
@@ -55,7 +55,7 @@ __exportStar(require("./utils.cjs"), exports);
55
55
  * @constant
56
56
  * @type {string}
57
57
  */
58
- exports.VERSION = "0.2.0";
58
+ exports.VERSION = "0.2.2";
59
59
  exports.PACKAGE_NAME = "@decaf-ts/for-nest";
60
60
  decoration_1.Metadata.registerLibrary(exports.PACKAGE_NAME, exports.VERSION);
61
61
  //# sourceMappingURL=index.js.map
package/lib/index.d.ts CHANGED
@@ -37,5 +37,5 @@ export * from "./utils";
37
37
  * @constant
38
38
  * @type {string}
39
39
  */
40
- export declare const VERSION = "0.2.0";
40
+ export declare const VERSION = "0.2.2";
41
41
  export declare const PACKAGE_NAME = "@decaf-ts/for-nest";
@@ -1,6 +1,6 @@
1
1
  import { CallHandler, ExecutionContext, NestInterceptor } from "@nestjs/common";
2
2
  import { DecafHandlerExecutor, DecafRequestContext } from "../request";
3
- import { DecafServerContext } from "../constants";
3
+ import { DecafServerCtx } from "../constants";
4
4
  import "../overrides";
5
5
  /**
6
6
  * @description
@@ -52,6 +52,6 @@ export declare class DecafRequestHandlerInterceptor implements NestInterceptor {
52
52
  protected readonly requestContext: DecafRequestContext;
53
53
  protected readonly executor: DecafHandlerExecutor;
54
54
  constructor(requestContext: DecafRequestContext, executor: DecafHandlerExecutor);
55
- protected contextualize(req: any): Promise<DecafServerContext>;
55
+ protected contextualize(req: any): Promise<DecafServerCtx>;
56
56
  intercept(context: ExecutionContext, next: CallHandler): Promise<import("rxjs").Observable<any>>;
57
57
  }
@@ -1,6 +1,6 @@
1
- import { DecafServerContext } from "../constants";
1
+ import { DecafServerCtx } from "../constants";
2
2
  import { FlagsOf } from "@decaf-ts/core";
3
- export declare abstract class RequestToContextTransformer<C extends DecafServerContext> {
3
+ export declare abstract class RequestToContextTransformer<C extends DecafServerCtx> {
4
4
  abstract from(req: any, ...args: any[]): Promise<FlagsOf<C>>;
5
5
  }
6
6
  export declare function requestToContextTransformer(flavour: string): (original: any) => any;
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/interceptors/context.ts"],"names":[],"mappings":";;;AAUA,kEAOC;AAfD,qDAA0D;AAE1D,MAAsB,2BAA2B;CAIhD;AAJD,kEAIC;AAED,SAAgB,2BAA2B,CAAC,OAAe;IACzD,OAAO,SAAS,2BAA2B,CAAC,QAAa;QACvD,qBAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,OAAO,QAAQ,KAAK,UAAU;YAChC,OAAO,IAAA,qBAAQ,EAAC,cAAc,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/interceptors/context.ts"],"names":[],"mappings":";;;AAQA,kEAOC;AAbD,qDAA0D;AAE1D,MAAsB,2BAA2B;CAEhD;AAFD,kEAEC;AAED,SAAgB,2BAA2B,CAAC,OAAe;IACzD,OAAO,SAAS,2BAA2B,CAAC,QAAa;QACvD,qBAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,OAAO,QAAQ,KAAK,UAAU;YAChC,OAAO,IAAA,qBAAQ,EAAC,cAAc,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC"}
@@ -32,7 +32,17 @@ const db_decorators_1 = require("@decaf-ts/db-decorators");
32
32
  */
33
33
  let DecafRequestContext = class DecafRequestContext {
34
34
  put(record) {
35
- this._ctx = this.ctx.accumulate(record);
35
+ let overrides;
36
+ try {
37
+ overrides = this.ctx.get("overrides");
38
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
39
+ }
40
+ catch (e) {
41
+ overrides = {};
42
+ }
43
+ this._ctx = this.ctx.accumulate({
44
+ overrides: Object.assign(overrides, record),
45
+ });
36
46
  }
37
47
  applyCtx(ctx) {
38
48
  this._ctx = ctx;
@@ -1,4 +1,4 @@
1
- import { DecafServerContext } from "../constants";
1
+ import { DecafServerCtx } from "../constants";
2
2
  /**
3
3
  * @description
4
4
  * Request-scoped context used to store arbitrary values for the duration of a single request.
@@ -20,7 +20,7 @@ import { DecafServerContext } from "../constants";
20
20
  * const tenantId = context.get<string>("tenantId");
21
21
  * ```
22
22
  */
23
- export declare class DecafRequestContext<C extends DecafServerContext = DecafServerContext> {
23
+ export declare class DecafRequestContext<C extends DecafServerCtx = DecafServerCtx> {
24
24
  private _ctx?;
25
25
  put(record: Record<any, any>): void;
26
26
  applyCtx(ctx: C): void;
@@ -1 +1 @@
1
- {"version":3,"file":"DecafRequestContext.js","sourceRoot":"","sources":["../../src/request/DecafRequestContext.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAmD;AAEnD,2DAAwD;AAExD;;;;;;;;;;;;;;;;;;;;GAoBG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAK9B,GAAG,CAAC,MAAwB;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAQ,CAAC;IACjD,CAAC;IAED,QAAQ,CAAC,GAAM;QACb,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED,IAAI,GAAG;QACL,IAAI,CAAC,IAAI,CAAC,IAAI;YACZ,MAAM,IAAI,6BAAa,CAAC,qCAAqC,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF,CAAA;AAlBY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,EAAC,EAAE,KAAK,EAAE,cAAK,CAAC,OAAO,EAAE,CAAC;GACxB,mBAAmB,CAkB/B"}
1
+ {"version":3,"file":"DecafRequestContext.js","sourceRoot":"","sources":["../../src/request/DecafRequestContext.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAmD;AAEnD,2DAAwD;AAExD;;;;;;;;;;;;;;;;;;;;GAoBG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAG9B,GAAG,CAAC,MAAwB;QAC1B,IAAI,SAAc,CAAC;QACnB,IAAI,CAAC;YACH,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACtC,6DAA6D;QAC/D,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,SAAS,GAAG,EAAE,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC;SAC5C,CAAQ,CAAC;IACZ,CAAC;IAED,QAAQ,CAAC,GAAM;QACb,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED,IAAI,GAAG;QACL,IAAI,CAAC,IAAI,CAAC,IAAI;YACZ,MAAM,IAAI,6BAAa,CAAC,qCAAqC,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF,CAAA;AA1BY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,EAAC,EAAE,KAAK,EAAE,cAAK,CAAC,OAAO,EAAE,CAAC;GACxB,mBAAmB,CA0B/B"}
package/lib/types.d.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  import { Adapter, ConfigOf, ContextOf } from "@decaf-ts/core";
2
2
  import { Constructor } from "@decaf-ts/decoration";
3
3
  import { ExecutionContext, Type } from "@nestjs/common";
4
- import { DecafServerContext } from "./constants";
4
+ import { DecafServerCtx } from "./constants";
5
5
  import { RequestToContextTransformer } from "./interceptors/context";
6
6
  export interface RequestContextAccessor {
7
7
  set(key: string | symbol, value: any): void;
8
8
  get<T = any>(key: string | symbol): T | undefined;
9
9
  }
10
- export interface DecafRequestHandler<C extends DecafServerContext = DecafServerContext> {
10
+ export interface DecafRequestHandler<C extends DecafServerCtx = DecafServerCtx> {
11
11
  handle(context: C, req: Request, res: Response): Promise<void>;
12
12
  }
13
13
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decaf-ts/for-nest",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "NestJS decaf integration",
5
5
  "type": "module",
6
6
  "exports": {