@decaf-ts/for-nest 0.2.13 → 0.2.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/for-nest.cjs +1 -1
- package/dist/for-nest.cjs.map +1 -1
- package/dist/for-nest.js +1 -1
- package/dist/for-nest.js.map +1 -1
- package/lib/decaf-model/FromModelController.cjs +156 -0
- package/lib/decaf-model/FromModelController.js.map +1 -1
- package/lib/esm/decaf-model/FromModelController.js +156 -0
- package/lib/esm/decaf-model/FromModelController.js.map +1 -1
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
package/dist/for-nest.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e,t;e=this,t=function(e,t,r,o,a,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 o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{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(o,a)=>{const i=Reflect.getMetadata(g.API_MODEL_PROPERTIES_ARRAY,o)||[],n=":"+a;i.includes(n)||Reflect.defineMetadata(g.API_MODEL_PROPERTIES_ARRAY,[...i,":"+a],o);const c=Reflect.getMetadata(e,o,a);if(c){const i=s.pickBy(t,s.negate(_)),n=r?{...c,...i}:{...i,...c};Reflect.defineMetadata(e,n,o,a)}else{const r=o?.constructor?._OPENAPI_METADATA_FACTORY?.()[a]?.type??Reflect.getMetadata("design:type",o,a);Reflect.defineMetadata(e,{type:r,...s.pickBy(t,s.negate(_))},o,a)}}}function b(e={}){return O(e)}function O(e={},t=!0){const[r,o]=((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((a=e={...e,type:r,isArray:o}).isArray&&"enum"in a&&void 0!==a.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 a;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:o,args:a}=t.Metadata.get(e,c.OperationKeys.REFLECT+c.OperationKeys.BLOCK)||{};return!!o&&(o(...a,r)??!1)}function w(e,r,a){const i={GET:[c.OperationKeys.READ,o.Get],POST:[c.OperationKeys.CREATE,o.Post],PUT:[c.OperationKeys.UPDATE,o.Put],PATCH:[c.OperationKeys.UPDATE,o.Patch],DELETE:[c.OperationKeys.DELETE,o.Delete]},[s,p]=i[r];return R(e,s)?t.apply(n.ApiExcludeEndpoint()):t.apply(p(a))}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 o.applyDecorators(...t)}const T=o.createParamDecorator((e,t)=>{const r=t.switchToHttp().getRequest().body,a=t.getClass(),i=a.class;if(!i)throw new o.InternalServerErrorException(`ModelConstructor not found on controller ${a.name}. Ensure the controller was created via FromModelController.`);return r?Array.isArray(r)?r.map(e=>new i(e)):new i(r):r}),v=o.createParamDecorator((e,t)=>{const r=t.switchToHttp().getRequest(),o=r?.params??{},a=e??Object.keys(o),i=a.map(e=>o[e]);return{raw:o,valuesInOrder:i,keysInOrder:a}});function S(e=[]){const t=e.map(e=>e.name);return v(t)}const C=o.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:o.Get,POST:o.Post,PUT:o.Put,PATCH:o.Patch,DELETE:o.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"),j="auth:meta",L=Symbol("decaf:context");function q(t){const r="string"==typeof t?t:t.name;return o.applyDecorators(n.ApiBearerAuth(),o.SetMetadata(j,r),o.UseInterceptors(e.AuthInterceptor))}e.AuthInterceptor=class{constructor(e,t){this.reflector=e,this.authHandler=t}async intercept(e,t){const r=this.reflector.get(j,e.getHandler())??this.reflector.get(j,e.getClass());return r&&this.authHandler&&await this.authHandler.authorize(e,r),t.handle()}},e.AuthInterceptor=p.__decorate([o.Injectable(),p.__param(1,o.Optional()),p.__param(1,o.Inject(N)),p.__metadata("design:paramtypes",[d.Reflector,Object])],e.AuthInterceptor);class B{parseRequest(e){const t=e.headers.authorization?.split(" ")[1];return t}async authorize(e,r){const o=e.switchToHttp().getRequest(),s=this.parseRequest(o);if(!s)throw new i.AuthorizationError("Unauthenticated");if(!t.Metadata.get(a.Model.get(r),i.PersistenceKeys.AUTH_ROLE).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([o.Injectable({scope:o.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,e,t)}},e.DecafHandlerExecutor=p.__decorate([o.Injectable({scope:o.Scope.REQUEST}),p.__param(0,o.Inject($)),p.__metadata("design:paramtypes",[Array,e.DecafRequestContext])],e.DecafHandlerExecutor);const K=e=>({name:e,description:e+" parameter for the query",required:!0,type:String});function U(e,t,r,a=!1){const s=x(r),c=(e=>e.split("/").filter(e=>e.startsWith(":")).map(e=>e.slice(1)))(t).map(K),p=[];return"GET"===r&&a&&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),o.Query()]}}function H(e,t,r,o){const a=e?.prototype??e;o.method.forEach(e=>e(a,t,r)),o.params?.forEach((e,r)=>e(a,t,r))}function G(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:a,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,a,s,n)}catch(t){throw o.error(`Custom query "${e}" failed`,t),t}}}function z(e,t,r){return Object.defineProperty(e.prototype||e,t,{value:r,writable:!1}),Object.getOwnPropertyDescriptor(e.prototype||e,t)}class Q extends i.Service{constructor(e,t){super(t),this.clientContext=e}logCtx(e,t,r=!1,o){const a=this.clientContext.ctx;return e=e.filter(e=>void 0!==e),i.ContextualLoggedClass.logCtx.call(this,t,o||{},r,...e,a)}}class V extends Q{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 o=this.clientContext.ctx;let a={};try{a=o.get("overrides")}catch(e){}const s=this.persistence(o);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,a).then(e=>e):(c=n.logCtx(e,t,!1,a),c)}}function Y(e,r){if(!i.TransactionOperationKeys.includes(e))return r;const o=[c.OperationKeys.UPDATE,c.BulkCrudOperationKeys.UPDATE_ALL].includes(e),s=t.Metadata.properties(r)||[],p=a.Model.relations(r)||[];let d=s.filter(e=>a.Model.generated(r,e));o&&(d=d.filter(e=>e!==a.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 o of p){let i=t.Metadata.allowedTypes(r,o);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 ${o} not found`);if(a.Model.get(i.name)){const s=t.Metadata.validationFor(r,o);h(o,Y(e,i),!!s[a.ValidationKeys.LIST])}}return u}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),i.Context.prototype.toResponse=function(e){const t=this.pending();return t&&e.header("x-pending-task",JSON.stringify(t)),e};class J{static{this.log=l.Logging.for(J.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 o=J.log.for(J.createQueryRoutesFromRepository),a=e instanceof i.ModelService?e.repo:e,s=a.class,n=t.Metadata.get(a.constructor,t.Metadata.key(i.PersistenceKeys.QUERY))??{},c=t.Metadata.get(e.constructor,t.Metadata.key(k))??{};class p extends V{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("/"),a=G(e);if(!a){const t=`Invalid or missing handler for model ${s.name} on decorated method ${e}`;throw o.error(t),Error(t)}const i=z(p,e,a);i&&H(p,e,i,U(e,r,t.httpMethod))}for(const[e,t]of Object.entries(n)){const o=[r,e,...(t.fields??[]).map(e=>":"+e)].filter(e=>e&&e.trim()).join("/"),a=z(p,e,G(e));a&&H(p,e,a,U(e,o,"GET",!0))}return p}static create(t){const r=J.log.for(J.create),s=a.Model.tableName(t),d=l.toKebabCase(s),u=t.name,h=J.getPersistence(t),{description:m,getPK:y,apiProperties:f,path:g}=J.getRouteParametersFromModel(t);r.debug("Creating controller for model: "+u);const _=J.createQueryRoutesFromRepository(h);let A=class extends _{static get class(){return t}get class(){return t}constructor(e){super(e),this.pk=a.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:o}=(await this.logCtx([],i.PreparedStatementKeys.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.PersistenceKeys.STATEMENT,!0)).for(this.statement),{direction:a,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(a);break;case i.PreparedStatementKeys.PAGE_BY:t=[t[0],a,{limit:n,offset:s,bookmark:c}];case i.PreparedStatementKeys.FIND_ONE_BY:}return this.persistence(o).statement(e,...t,o)}async createAll(e,r){const{ctx:o,log:a}=(await this.logCtx([],c.BulkCrudOperationKeys.CREATE_ALL,!0)).for(this.createAll);let i;a.verbose("creating new "+u);try{i=await this.persistence(o).createAll(e.map(e=>new t(e)),o)}catch(e){throw a.error("Failed to create new "+u,e),e}return a.info(`created new ${u} with id ${i[this.pk]}`),o.toResponse(r),i}async create(e,t){const{ctx:r,log:o}=(await this.logCtx([],c.OperationKeys.CREATE,!0)).for(this.create);let a;o.verbose("creating new "+u);try{const t=this.persistence(r);a=await t.create(e,r)}catch(e){throw o.error("Failed to create new "+u,e),e}return o.info(`created new ${u} with id ${a[this.pk]}`),r.toResponse(t),a}async readAll(e){const{ctx:t,log:r}=(await this.logCtx([],c.BulkCrudOperationKeys.READ_ALL,!0)).for(this.readAll);let o;try{r.debug(`reading ${e.length} ${u}: ${e}`);const a=this.persistence(t);o=await a.readAll(e,t)}catch(t){throw r.error(`Failed to ${u} with id ${e}`,t),t}return r.info(`read ${o.length} ${u}`),o}async read(e){const{ctx:t,log:r}=(await this.logCtx([],c.OperationKeys.READ,!0)).for(this.read),o=y(...e.valuesInOrder);if(void 0===o)throw new c.ValidationError(`No ${this.pk} provided`);let a;try{r.debug(`reading ${u} with ${this.pk} ${o}`);const e=this.persistence(t);a=await e.read(o,t)}catch(e){throw r.error(`Failed to read ${u} with id ${o}`,e),e}return r.info(`read ${u} with id ${a[this.pk]}`),a}async updateAll(e,t){const{ctx:r,log:o}=(await this.logCtx([],c.BulkCrudOperationKeys.UPDATE_ALL,!0)).for(this.updateAll);let a;try{o.info(`updating ${e.length} ${u}`),a=await this.persistence(r).updateAll(e,r)}catch(e){throw o.error(e),e}return r.toResponse(t),a}async update(e,r,o){const{ctx:a,log:i}=(await this.logCtx([],c.OperationKeys.UPDATE,!0)).for(this.update),s=y(...e.valuesInOrder);if(void 0===s)throw new c.ValidationError(`No ${this.pk} provided`);let n;try{i.info(`updating ${u} with ${this.pk} ${s}`);const e=JSON.parse(JSON.stringify(r)),o=this.persistence(a);n=await o.update(new t({...e,[this.pk]:s}),a)}catch(e){throw i.error(e),e}return a.toResponse(o),n}async deleteAll(e,t){const{ctx:r,log:o}=(await this.logCtx([],c.BulkCrudOperationKeys.DELETE_ALL,!0)).for(this.deleteAll);let a;try{o.debug(`deleting ${e.length} ${u}: ${e}`),a=await this.persistence(r).deleteAll(e,r)}catch(t){throw o.error(`Failed to delete ${u} with id ${e}`,t),t}return o.info(`deleted ${a.length} ${u}`),r.toResponse(t),a}async delete(e,t){const{ctx:r,log:o}=(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 i;try{o.debug(`deleting ${u} with ${this.pk} ${a}`),i=await this.persistence(r).delete(a,r)}catch(e){throw o.error(`Failed to delete ${u} with id ${a}`,e),e}return o.info(`deleted ${u} with id ${a}`),r.toResponse(t),i}};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,o.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,o.Param("key")),p.__param(1,o.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,o.Param("key")),p.__param(1,o.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,o.Param("method")),p.__param(1,o.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.__param(1,o.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Array,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"createAll",null),p.__decorate([w(t,"POST"),n.ApiOperation({summary:`Create a new ${u}.`}),n.ApiBody({description:"Payload for "+u,type:Y(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.__param(1,o.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Object,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"create",null),p.__decorate([w(t,"GET","bulk"),n.ApiOperation({summary:`Retrieve a ${u} record by id.`}),n.ApiQuery({name:"ids",required:!0,type:"array"}),n.ApiOkResponse({description:u+" retrieved successfully.",schema:{type:"array",items:{$ref:n.getSchemaPath(t)}}}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),p.__param(0,o.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.__param(1,o.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Array,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"updateAll",null),p.__decorate([w(t,"PUT",g),D(f),n.ApiOperation({summary:`Replace an existing ${u} record with a new payload.`}),n.ApiBody({description:"Payload for replace a existing record of "+u,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.__param(2,o.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Object,Object,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"update",null),p.__decorate([w(t,"DELETE","bulk"),D(f),n.ApiOperation({summary:`Retrieve a ${u} record by id.`}),n.ApiQuery({name:"ids",required:!0,type:"array"}),n.ApiOkResponse({description:u+" retrieved successfully."}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),p.__param(0,o.Query("ids")),p.__param(1,o.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Array,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"deleteAll",null),p.__decorate([w(t,"DELETE",g),D(f),n.ApiOperation({summary:`Delete a ${u} record by id.`}),n.ApiOkResponse({description:u+" record deleted successfully."}),n.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),p.__param(0,S(f)),p.__param(1,o.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Object,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"delete",null),A=p.__decorate([o.Controller(d),n.ApiTags(u),n.ApiExtraModels(t),q(t),p.__metadata("design:paramtypes",[e.DecafRequestContext])],A),A}static getRouteParametersFromModel(e){const r=a.Model.pk(e),o=t.Metadata.get(e,t.Metadata.key(c.DBKeys.COMPOSED,r)),i=o?.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)=>o?.separator?e.join(o.separator):e.join("")}}}e.DecafRequestHandlerInterceptor=class{constructor(e,t){this.requestContext=e,this.executor=t}async contextualize(e){const t={headers:e.headers,overrides:{}},r=i.Adapter.flavoursToTransform();if(r)for(const o of r)try{const r=i.Adapter.transformerFor(o),a=await r.from(e);Object.assign(t.overrides,a)}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(),o=e.switchToHttp().getResponse(),a=await this.contextualize(r);return this.requestContext.applyCtx(a),await this.executor.exec(r,o),t.handle()}},e.DecafRequestHandlerInterceptor=p.__decorate([o.Injectable({scope:o.Scope.REQUEST}),p.__metadata("design:paramtypes",[e.DecafRequestContext,e.DecafHandlerExecutor])],e.DecafRequestHandlerInterceptor);class X{}function W(e){return r=>(t.Metadata.set("transformers",e,r),"function"==typeof r?t.metadata("transformers",e)(r):r)}function Z(t){var r;let a=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,o={}){const a=this.log.for(this.forRoot);a.info("Generating controllers for flavour...");const s=i.Adapter.models(t);let n=[];o.autoServices&&(a.info("Auto-services enabled. Initializing service generation."),n=this.createModelServices(s),a.info(`Auto-services completed. ${n.length} services initialized.`));const c=s.map(J.create);return a.info(`Generated ${c.length} controllers`),{module:r,controllers:c,providers:[{provide:$,useFactory:()=>o.handlers?.map(e=>(a.info("Registered request handler: "+e.name),new e))??[]},e.DecafRequestContext,e.DecafHandlerExecutor,{provide:d.APP_INTERCEPTOR,useClass:e.DecafRequestHandlerInterceptor},...n]}}};return a=r=p.__decorate([o.Module({})],a),Object.assign(a,"name",{value:"DecafModule"+t}),a}t.Decoration.for(r.InjectablesKeys.INJECTABLE).extend({decorator:(e,t)=>(t=t||("object"==typeof e?Object.assign(e,r.DefaultInjectablesConfig):r.DefaultInjectablesConfig),o.Injectable({scope:t.singleton?o.Scope.DEFAULT:o.Scope.REQUEST,durable:!t.singleton||void 0}))}).apply(),t.Decoration.for(r.InjectablesKeys.INJECT).extend({decorator:(e,t)=>(t,r,a)=>o.Inject(e||t)(t,r,a)}).apply(),t.Decoration.for(a.ValidationKeys.REQUIRED).extend(b({required:!0})).apply(),t.Decoration.for(a.ValidationKeys.MAX).extend({decorator:e=>b({maximum:e})}).apply(),t.Decoration.for(a.ValidationKeys.MIN).extend({decorator:e=>b({minimum:e})}).apply(),t.Decoration.for(a.ValidationKeys.MAX_LENGTH).extend({decorator:e=>b({maxLength:e})}).apply(),t.Decoration.for(a.ValidationKeys.MIN_LENGTH).extend({decorator:e=>b({minLength:e})}).apply(),t.Decoration.for(a.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(a.ValidationKeys.DATE).extend({decorator:e=>b({type:String,format:"date-time"})}).apply(),t.Decoration.for(a.ValidationKeys.ENUM).extend({decorator:e=>b({enum:Array.isArray(e)?e:Object.values(e)})}).apply(),t.Decoration.for(a.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(),t.Decoration.for(i.PersistenceKeys.AUTH).extend({decorator:q}).apply();class ee extends i.ForbiddenError{constructor(e){super(e,ee.name)}}e.DecafExceptionFilter=class{catch(e,t){const r=t.switchToHttp(),o=r.getResponse(),a=r.getRequest(),i="production"===l.LoggedEnvironment.env;e instanceof c.BaseError||(e=new c.InternalError(e.message)),o.status(e.code).json({status:e.code,error:i?e.name:e.message,timestamp:(new Date).toISOString(),path:a.url,method:a.method})}},e.DecafExceptionFilter=p.__decorate([o.Catch()],e.DecafExceptionFilter);const te={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 re{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||te.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),o=u.readFileSync(r,{encoding:"base64"});return t?"data:image/png;base64,"+o:o}}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||te.auth).build();return n.SwaggerModule.createDocument(this.app,t,{extraModels:this.options.extraModels||[]})}setupSwagger(){const e=this.createDocument(),t=new re({title:this.options.title,path:this.options.path||te.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||te.path,this.app,e,{...t.getCustomOptions()})}}var ae;let ie=class{static{ae=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(ae)),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 o=this._persistence.client;for(let t=0;t<o.length;t++){const r=e.conf[t];let[,,a]=r;if(!a){const e=i.Adapter.transformerFor(o[t].flavour);if(!e)throw new c.InternalError(`No transformer found for flavour ${o[t].flavour}. you should either @requestToContextTransformer or provide a transformer in the config`);a=e instanceof X?e:new e}W(o[t].flavour)(a)}t.info("persistence layer created successfully!")}return this.persistence.client}static forRoot(e){const t={provide:I,useValue:e},r={useFactory:async e=>ae.bootPersistence(e),provide:M,durable:!0,scope:o.Scope.DEFAULT,inject:[I]};return{module:ae,providers:[r,t],exports:[r]}}async onApplicationShutdown(){const e=ae.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 se;ie=ae=p.__decorate([o.Global(),o.Module({}),p.__param(0,o.Inject(I)),p.__metadata("design:paramtypes",[Object,d.ModuleRef])],ie),e.DecafModule=se=class{static async forRootAsync(e){const{autoControllers:t,autoServices:r,handlers:o}=e,a=(await ie.bootPersistence(e)).map(e=>e.flavour),i=[ie.forRoot(e)];return t&&a.forEach(e=>{i.push(Z(e).forRoot(e,{autoServices:r,handlers:o}))}),{module:se,imports:i}}},e.DecafModule=se=p.__decorate([o.Module({})],e.DecafModule);const ne="##VERSION##",ce="##PACKAGE##";t.Metadata.registerLibrary(ce,ne),e.AUTH_HANDLER=N,e.AUTH_META_KEY=j,e.ApiOperationFromModel=w,e.ApiParamsFromModel=D,e.ApiProperty=b,e.Auth=q,e.BulkApiOperationFromModel=(e,r,a)=>{const i={GET:[c.BulkCrudOperationKeys.READ_ALL,o.Get],POST:[c.BulkCrudOperationKeys.CREATE_ALL,o.Post],PUT:[c.BulkCrudOperationKeys.UPDATE_ALL,o.Put],PATCH:[c.BulkCrudOperationKeys.UPDATE_ALL,o.Patch],DELETE:[c.BulkCrudOperationKeys.DELETE_ALL,o.Delete]},[s,p]=i[r];return R(e,s)?t.apply(n.ApiExcludeEndpoint()):t.apply(p(a))},e.CorsError=ee,e.DECAF_ADAPTER_ID=M,e.DECAF_ADAPTER_OPTIONS=F,e.DECAF_CONTEXT_KEY=L,e.DECAF_HANDLERS=$,e.DECAF_MODULE_OPTIONS=I,e.DECAF_ROUTE=k,e.DECORATORS=g,e.DECORATORS_PREFIX=f,e.DecafAuthHandler=B,e.DecafBody=T,e.DecafController=Q,e.DecafModelController=V,e.DecafParams=S,e.DecafQuery=C,e.DecafRoleAuthHandler=class extends B{constructor(){super()}async authorize(e,r){const o=e.switchToHttp().getRequest(),s=this.parseRequest(o);if(!s)throw new i.AuthorizationError("Unauthenticated");const n=t.Metadata.get(a.Model.get(r),i.PersistenceKeys.AUTH_ROLE);if(!n.includes(s))throw new i.AuthorizationError("Missing role: "+s);return n}},e.DtoFor=Y,e.FromModelController=J,e.HttpVerbToDecorator=x,e.NestBootstraper=class{static get logger(){return this._logger||(this._logger=new o.Logger("NestBootstrap")),this._logger}static initialize(e){return this.app=e,this}static enableLogger(e){return this._logger=e||new o.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()),o={origin:(e,t)=>e?"*"===r||Array.isArray(r)&&r.includes(e.toLowerCase())?t(null,!0):void t(new ee(`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 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=ce,e.RequestToContextTransformer=X,e.SwaggerBuilder=oe,e.UseDecafFilter=()=>o.UseFilters(new e.DecafExceptionFilter),e.VERSION=ne,e.createApiPropertyDecorator=O,e.createPropertyDecorator=P,e.getEnumType=E,e.getEnumValues=A,e.getModuleFor=Z,e.isOperationBlocked=R,e.isUndefined=_,e.repoForModel=e=>{const t=a.Model.get(e);if(!t)throw new c.InternalError("Failed to find repository for "+e);return i.Repository.forModel(t)},e.requestToContextTransformer=W},"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,m){"use strict";function f(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 h=f(m);const y="swagger",g={API_OPERATION:y+"/apiOperation",API_RESPONSE:y+"/apiResponse",API_PRODUCES:y+"/apiProduces",API_CONSUMES:y+"/apiConsumes",API_TAGS:y+"/apiUseTags",API_CALLBACKS:y+"/apiCallbacks",API_PARAMETERS:y+"/apiParameters",API_HEADERS:y+"/apiHeaders",API_MODEL_PROPERTIES:y+"/apiModelProperties",API_MODEL_PROPERTIES_ARRAY:y+"/apiModelPropertiesArray",API_SECURITY:y+"/apiSecurity",API_EXCLUDE_ENDPOINT:y+"/apiExcludeEndpoint",API_EXCLUDE_CONTROLLER:y+"/apiExcludeController",API_EXTRA_MODELS:y+"/apiExtraModels",API_EXTENSION:y+"/apiExtension",API_SCHEMA:y+"/apiSchema",API_DEFAULT_GETTER:y+"/apiDefaultGetter",API_LINK:y+"/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 O(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 E(e={}){return b(e)}function b(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:O(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=O(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 T(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 w(e=[]){const t=e.map((e=>n.ApiParam({name:e.name,description:e.description??"Path parameter: "+e.name,required:e.required??!0,type:e.type??String})));return a.applyDecorators(...t)}const S=a.createParamDecorator(((e,t)=>{const r=t.switchToHttp().getRequest().body,o=t.getClass(),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 D(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 F="DecafModuleOptions",I="DecafAdapter",M="DecafRoute",$=Symbol("DecafHandlers"),k=Symbol("DecafAdapterForOptions"),N=Symbol("AUTH_HANDLER"),K="auth:meta",j=Symbol("decaf:context");function L(t){const r="string"==typeof t?t:t.name;return a.applyDecorators(n.ApiBearerAuth(),a.SetMetadata(K,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(K,e.getHandler())??this.reflector.get(K,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 q{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),i.PersistenceKeys.AUTH_ROLE).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,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);const B=e=>({name:e,description:e+" parameter for the query",required:!0,type:String});function U(e,t,r,o=!1){const s=x(r),c=(e=>e.split("/").filter((e=>e.startsWith(":"))).map((e=>e.slice(1))))(t).map(B),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:[D(c),a.Query()]}}function G(e,t,r,a){const o=e?.prototype??e;a.method.forEach((e=>e(o,t,r))),a.params?.forEach(((e,r)=>e(o,t,r)))}function H(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 z(e,t,r){return Object.defineProperty(e.prototype||e,t,{value:r,writable:!1}),Object.getOwnPropertyDescriptor(e.prototype||e,t)}class Q 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 V extends Q{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 Y(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 m(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);m(a,Y(e,i),!!s[o.ValidationKeys.LIST])}}return u}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),i.Context.prototype.toResponse=function(e){const t=this.pending();return t&&e.header("x-pending-task",JSON.stringify(t)),e};class X{static{this.log=l.Logging.for(X.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=X.log.for(X.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(M))??{};class p extends V{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=H(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=z(p,e,o);i&&G(p,e,i,U(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=z(p,e,H(e));o&&G(p,e,o,U(e,a,"GET",!0))}return p}static create(t){const r=X.log.for(X.create),s=o.Model.tableName(t),d=l.toKebabCase(s),u=t.name,m=X.getPersistence(t),{description:f,getPK:h,apiProperties:y,path:g}=X.getRouteParametersFromModel(t);r.debug("Creating controller for model: "+u);const _=X.createQueryRoutesFromRepository(m);let A=class extends _{static get class(){return t}get class(){return t}constructor(e){super(e),this.pk=o.Model.pk(t),r.info(`Registering dynamic controller for model: ${this.class.name} route: /${d}`)}async listBy(e,t){const{ctx:r}=(await this.logCtx([],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:case i.PreparedStatementKeys.COUNT_OF:case i.PreparedStatementKeys.MAX_OF:case i.PreparedStatementKeys.MIN_OF:case i.PreparedStatementKeys.AVG_OF:case i.PreparedStatementKeys.SUM_OF:case i.PreparedStatementKeys.DISTINCT_OF:case i.PreparedStatementKeys.GROUP_OF:}return this.persistence(a).statement(e,...t,a)}async countOf(){const{ctx:e}=(await this.logCtx([],i.PreparedStatementKeys.COUNT_OF,!0)).for(this.countOf);return this.persistence(e).statement(i.PreparedStatementKeys.COUNT_OF,e)}async countOfField(e){const{ctx:t}=(await this.logCtx([],i.PreparedStatementKeys.COUNT_OF,!0)).for(this.countOfField);return this.persistence(t).statement(i.PreparedStatementKeys.COUNT_OF,e,t)}async maxOf(e){const{ctx:t}=(await this.logCtx([],i.PreparedStatementKeys.MAX_OF,!0)).for(this.maxOf);return this.persistence(t).statement(i.PreparedStatementKeys.MAX_OF,e,t)}async minOf(e){const{ctx:t}=(await this.logCtx([],i.PreparedStatementKeys.MIN_OF,!0)).for(this.minOf);return this.persistence(t).statement(i.PreparedStatementKeys.MIN_OF,e,t)}async avgOf(e){const{ctx:t}=(await this.logCtx([],i.PreparedStatementKeys.AVG_OF,!0)).for(this.avgOf);return this.persistence(t).statement(i.PreparedStatementKeys.AVG_OF,e,t)}async sumOf(e){const{ctx:t}=(await this.logCtx([],i.PreparedStatementKeys.SUM_OF,!0)).for(this.sumOf);return this.persistence(t).statement(i.PreparedStatementKeys.SUM_OF,e,t)}async distinctOf(e){const{ctx:t}=(await this.logCtx([],i.PreparedStatementKeys.DISTINCT_OF,!0)).for(this.distinctOf);return this.persistence(t).statement(i.PreparedStatementKeys.DISTINCT_OF,e,t)}async groupOf(e){const{ctx:t}=(await this.logCtx([],i.PreparedStatementKeys.GROUP_OF,!0)).for(this.groupOf);return this.persistence(t).statement(i.PreparedStatementKeys.GROUP_OF,e,t)}async createAll(e,r){const{ctx:a,log:o}=(await this.logCtx([],c.BulkCrudOperationKeys.CREATE_ALL,!0)).for(this.createAll);let i;o.verbose("creating new "+u);try{i=await this.persistence(a).createAll(e.map((e=>new t(e))),a)}catch(e){throw o.error("Failed to create new "+u,e),e}return o.info(`created new ${u} with id ${i[this.pk]}`),a.toResponse(r),i}async create(e,t){const{ctx:r,log:a}=(await this.logCtx([],c.OperationKeys.CREATE,!0)).for(this.create);let o;a.verbose("creating new "+u);try{const t=this.persistence(r);o=await t.create(e,r)}catch(e){throw a.error("Failed to create new "+u,e),e}return a.info(`created new ${u} with id ${o[this.pk]}`),r.toResponse(t),o}async readAll(e){const{ctx:t,log:r}=(await this.logCtx([],c.BulkCrudOperationKeys.READ_ALL,!0)).for(this.readAll);let a;try{r.debug(`reading ${e.length} ${u}: ${e}`);const o=this.persistence(t);a=await o.readAll(e,t)}catch(t){throw r.error(`Failed to ${u} with id ${e}`,t),t}return r.info(`read ${a.length} ${u}`),a}async read(e){const{ctx:t,log:r}=(await this.logCtx([],c.OperationKeys.READ,!0)).for(this.read),a=h(...e.valuesInOrder);if(void 0===a)throw new c.ValidationError(`No ${this.pk} provided`);let o;try{r.debug(`reading ${u} with ${this.pk} ${a}`);const e=this.persistence(t);o=await e.read(a,t)}catch(e){throw r.error(`Failed to read ${u} with id ${a}`,e),e}return r.info(`read ${u} with id ${o[this.pk]}`),o}async updateAll(e,t){const{ctx:r,log:a}=(await this.logCtx([],c.BulkCrudOperationKeys.UPDATE_ALL,!0)).for(this.updateAll);let o;try{a.info(`updating ${e.length} ${u}`),o=await this.persistence(r).updateAll(e,r)}catch(e){throw a.error(e),e}return r.toResponse(t),o}async update(e,r,a){const{ctx:o,log:i}=(await this.logCtx([],c.OperationKeys.UPDATE,!0)).for(this.update),s=h(...e.valuesInOrder);if(void 0===s)throw new c.ValidationError(`No ${this.pk} provided`);let n;try{i.info(`updating ${u} with ${this.pk} ${s}`);const e=JSON.parse(JSON.stringify(r)),a=this.persistence(o);n=await a.update(new t({...e,[this.pk]:s}),o)}catch(e){throw i.error(e),e}return o.toResponse(a),n}async deleteAll(e,t){const{ctx:r,log:a}=(await this.logCtx([],c.BulkCrudOperationKeys.DELETE_ALL,!0)).for(this.deleteAll);let o;try{a.debug(`deleting ${e.length} ${u}: ${e}`),o=await this.persistence(r).deleteAll(e,r)}catch(t){throw a.error(`Failed to delete ${u} with id ${e}`,t),t}return a.info(`deleted ${o.length} ${u}`),r.toResponse(t),o}async delete(e,t){const{ctx:r,log:a}=(await this.logCtx([],c.OperationKeys.DELETE,!0)).for(this.delete),o=h(...e.valuesInOrder);if(void 0===o)throw new c.ValidationError(`No ${this.pk} provided`);let i;try{a.debug(`deleting ${u} with ${this.pk} ${o}`),i=await this.persistence(r).delete(o,r)}catch(e){throw a.error(`Failed to delete ${u} with id ${o}`,e),e}return a.info(`deleted ${u} with id ${o}`),r.toResponse(t),i}};return p.__decorate([T(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([T(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([T(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([T(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([T(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([T(t,"GET","countOf"),n.ApiOperation({summary:`Count all ${u} records.`}),n.ApiOkResponse({description:`Count of ${u} records.`,type:Number}),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[]),p.__metadata("design:returntype",Promise)],A.prototype,"countOf",null),p.__decorate([T(t,"GET","countOf/:field"),n.ApiOperation({summary:`Count ${u} records by field.`}),n.ApiParam({name:"field",description:"The field to count"}),n.ApiOkResponse({description:`Count of ${u} records.`,type:Number}),p.__param(0,a.Param("field")),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String]),p.__metadata("design:returntype",Promise)],A.prototype,"countOfField",null),p.__decorate([T(t,"GET","maxOf/:field"),n.ApiOperation({summary:`Find maximum value of a field in ${u}.`}),n.ApiParam({name:"field",description:"The field to find max of"}),n.ApiOkResponse({description:`Maximum value of the field in ${u}.`}),p.__param(0,a.Param("field")),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String]),p.__metadata("design:returntype",Promise)],A.prototype,"maxOf",null),p.__decorate([T(t,"GET","minOf/:field"),n.ApiOperation({summary:`Find minimum value of a field in ${u}.`}),n.ApiParam({name:"field",description:"The field to find min of"}),n.ApiOkResponse({description:`Minimum value of the field in ${u}.`}),p.__param(0,a.Param("field")),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String]),p.__metadata("design:returntype",Promise)],A.prototype,"minOf",null),p.__decorate([T(t,"GET","avgOf/:field"),n.ApiOperation({summary:`Calculate average of a field in ${u}.`}),n.ApiParam({name:"field",description:"The field to calculate average of"}),n.ApiOkResponse({description:`Average value of the field in ${u}.`,type:Number}),p.__param(0,a.Param("field")),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String]),p.__metadata("design:returntype",Promise)],A.prototype,"avgOf",null),p.__decorate([T(t,"GET","sumOf/:field"),n.ApiOperation({summary:`Calculate sum of a field in ${u}.`}),n.ApiParam({name:"field",description:"The field to calculate sum of"}),n.ApiOkResponse({description:`Sum of the field in ${u}.`,type:Number}),p.__param(0,a.Param("field")),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String]),p.__metadata("design:returntype",Promise)],A.prototype,"sumOf",null),p.__decorate([T(t,"GET","distinctOf/:field"),n.ApiOperation({summary:`Find distinct values of a field in ${u}.`}),n.ApiParam({name:"field",description:"The field to find distinct values of"}),n.ApiOkResponse({description:`Distinct values of the field in ${u}.`,type:[String]}),p.__param(0,a.Param("field")),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String]),p.__metadata("design:returntype",Promise)],A.prototype,"distinctOf",null),p.__decorate([T(t,"GET","groupOf/:field"),n.ApiOperation({summary:`Group ${u} records by a field.`}),n.ApiParam({name:"field",description:"The field to group by"}),n.ApiOkResponse({description:u+" records grouped by the field."}),p.__param(0,a.Param("field")),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[String]),p.__metadata("design:returntype",Promise)],A.prototype,"groupOf",null),p.__decorate([T(t,"POST","bulk"),n.ApiOperation({summary:`Create a new ${u}.`}),n.ApiBody({description:"Payload for "+u,schema:{type:"array",items:{$ref:n.getSchemaPath(t)}}}),n.ApiCreatedResponse({description:u+" created successfully.",schema:{type:"array",items:{$ref:n.getSchemaPath(t)}}}),n.ApiBadRequestResponse({description:"Payload validation failed."}),n.ApiUnprocessableEntityResponse({description:"Repository rejected the provided payload."}),p.__param(0,S()),p.__param(1,a.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Array,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"createAll",null),p.__decorate([T(t,"POST"),n.ApiOperation({summary:`Create a new ${u}.`}),n.ApiBody({description:"Payload for "+u,type:Y(c.OperationKeys.CREATE,t)}),n.ApiCreatedResponse({description:u+" created successfully.",schema:{$ref:n.getSchemaPath(t)}}),n.ApiBadRequestResponse({description:"Payload validation failed."}),n.ApiUnprocessableEntityResponse({description:"Repository rejected the provided payload."}),p.__param(0,S()),p.__param(1,a.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Object,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"create",null),p.__decorate([T(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([T(t,"GET",g),w(y),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,D(y)),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Object]),p.__metadata("design:returntype",Promise)],A.prototype,"read",null),p.__decorate([T(t,"PUT","bulk"),w(y),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,S()),p.__param(1,a.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Array,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"updateAll",null),p.__decorate([T(t,"PUT",g),w(y),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,D(y)),p.__param(1,S()),p.__param(2,a.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Object,Object,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"update",null),p.__decorate([T(t,"DELETE","bulk"),w(y),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.__param(1,a.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Array,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"deleteAll",null),p.__decorate([T(t,"DELETE",g),w(y),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,D(y)),p.__param(1,a.Response({passthrough:!0})),p.__metadata("design:type",Function),p.__metadata("design:paramtypes",[Object,Object]),p.__metadata("design:returntype",Promise)],A.prototype,"delete",null),A=p.__decorate([a.Controller(d),n.ApiTags(u),n.ApiExtraModels(t),L(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("")}}}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 J{}function W(e){return r=>(t.Metadata.set("transformers",e,r),"function"==typeof r?t.metadata("transformers",e)(r):r)}function Z(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(X.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}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(E({required:!0})).apply(),t.Decoration.for(o.ValidationKeys.MAX).extend({decorator:e=>E({maximum:e})}).apply(),t.Decoration.for(o.ValidationKeys.MIN).extend({decorator:e=>E({minimum:e})}).apply(),t.Decoration.for(o.ValidationKeys.MAX_LENGTH).extend({decorator:e=>E({maxLength:e})}).apply(),t.Decoration.for(o.ValidationKeys.MIN_LENGTH).extend({decorator:e=>E({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()),E({type:e})(t,r))}).apply(),t.Decoration.for(o.ValidationKeys.DATE).extend({decorator:e=>E({type:String,format:"date-time"})}).apply(),t.Decoration.for(o.ValidationKeys.ENUM).extend({decorator:e=>E({enum:Array.isArray(e)?e:Object.values(e)})}).apply(),t.Decoration.for(o.ValidationKeys.PATTERN).extend({decorator:e=>E({pattern:"string"==typeof e?e:e.source})}).apply(),t.Decoration.for(i.PersistenceKeys.COLUMN).extend({decorator:e=>E({name:e})}).apply(),t.Decoration.for(t.DecorationKeys.DESCRIPTION).extend({decorator:e=>E({description:e})}).apply(),t.Decoration.for(i.PersistenceKeys.AUTH).extend({decorator:L}).apply();class ee extends i.ForbiddenError{constructor(e){super(e,ee.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 te={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 re{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||te.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=h.join(this.options.assetsPath||"",e),a=u.readFileSync(r,{encoding:"base64"});return t?"data:image/png;base64,"+a:a}}class ae{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||te.auth).build();return n.SwaggerModule.createDocument(this.app,t,{extraModels:this.options.extraModels||[]})}setupSwagger(){const e=this.createDocument(),t=new re({title:this.options.title,path:this.options.path||te.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||te.path,this.app,e,{...t.getCustomOptions()})}}var oe;let ie=class{static{oe=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(oe)),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 J?e:new e}W(a[t].flavour)(o)}t.info("persistence layer created successfully!")}return this.persistence.client}static forRoot(e){const t={provide:F,useValue:e},r={useFactory:async e=>oe.bootPersistence(e),provide:I,durable:!0,scope:a.Scope.DEFAULT,inject:[F]};return{module:oe,providers:[r,t],exports:[r]}}async onApplicationShutdown(){const e=oe.log.for(this.onApplicationShutdown),t=this.moduleRef.get(I);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 se;ie=oe=p.__decorate([a.Global(),a.Module({}),p.__param(0,a.Inject(F)),p.__metadata("design:paramtypes",[Object,d.ModuleRef])],ie),e.DecafModule=se=class{static async forRootAsync(e){const{autoControllers:t,autoServices:r,handlers:a}=e,o=(await ie.bootPersistence(e)).map((e=>e.flavour)),i=[ie.forRoot(e)];return t&&o.forEach((e=>{i.push(Z(e).forRoot(e,{autoServices:r,handlers:a}))})),{module:se,imports:i}}},e.DecafModule=se=p.__decorate([a.Module({})],e.DecafModule);const ne="##VERSION##",ce="##PACKAGE##";t.Metadata.registerLibrary(ce,ne),e.AUTH_HANDLER=N,e.AUTH_META_KEY=K,e.ApiOperationFromModel=T,e.ApiParamsFromModel=w,e.ApiProperty=E,e.Auth=L,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=ee,e.DECAF_ADAPTER_ID=I,e.DECAF_ADAPTER_OPTIONS=k,e.DECAF_CONTEXT_KEY=j,e.DECAF_HANDLERS=$,e.DECAF_MODULE_OPTIONS=F,e.DECAF_ROUTE=M,e.DECORATORS=g,e.DECORATORS_PREFIX=y,e.DecafAuthHandler=q,e.DecafBody=S,e.DecafController=Q,e.DecafModelController=V,e.DecafParams=D,e.DecafQuery=C,e.DecafRoleAuthHandler=class extends q{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),i.PersistenceKeys.AUTH_ROLE);if(!n.includes(s))throw new i.AuthorizationError("Missing role: "+s);return n}},e.DtoFor=Y,e.FromModelController=X,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 ee(`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 ae(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=ce,e.RequestToContextTransformer=J,e.SwaggerBuilder=ae,e.UseDecafFilter=()=>a.UseFilters(new e.DecafExceptionFilter),e.VERSION=ne,e.createApiPropertyDecorator=b,e.createPropertyDecorator=P,e.getEnumType=O,e.getEnumValues=A,e.getModuleFor=Z,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.requestToContextTransformer=W},"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
|
package/dist/for-nest.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"for-nest.cjs","sources":["../src/overrides/constants.ts","../src/overrides/decoration.ts","../src/overrides/helpers.ts","../src/decaf-model/decorators/ApiOperationFromModel.ts","../src/decaf-model/decorators/ApiParamsFromModel.ts","../src/decaf-model/decorators/DecafBody.ts","../src/decaf-model/decorators/DecafParams.ts","../src/decaf-model/decorators/utils.ts","../src/constants.ts","../src/decaf-model/decorators/decorators.ts","../src/interceptors/AuthInterceptor.ts","../src/request/DecafAuthHandler.ts","../src/request/DecafRequestContext.ts","../src/request/DecafHandlerExecutor.ts","../src/decaf-model/utils.ts","../src/controllers.ts","../src/factory/openapi/DtoBuilder.ts","../src/overrides/overrides.ts","../src/decaf-model/FromModelController.ts","../src/interceptors/DecafRequestHandlerInterceptor.ts","../src/interceptors/context.ts","../src/decaf-model/DecafModelModule.ts","../src/decoration.ts","../src/factory/errors/cors.ts","../src/factory/exceptions/DecafErrorFilter.ts","../src/factory/openapi/constants.ts","../src/factory/openapi/SwaggerCustomUI.ts","../src/factory/openapi/SwaggerBuilder.ts","../src/core-module.ts","../src/module.ts","../src/index.ts","../src/factory/NestBootstraper.ts","../src/factory/exceptions/decorators.ts","../src/utils.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"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","DecafBody","createParamDecorator","data","ctx","body","switchToHttp","getRequest","controller","getClass","ModelConstr","class","InternalServerErrorException","item","OrderedParams","order","req","original","params","orderList","ordered","k","raw","valuesInOrder","keysInOrder","DecafParams","DecafQuery","_","parsed","query","limit","n","Number","isNaN","offset","bookmark","HttpVerbToDecorator","decorator","Error","DECAF_MODULE_OPTIONS","DECAF_ADAPTER_ID","DECAF_ROUTE","DECAF_HANDLERS","Symbol","DECAF_ADAPTER_OPTIONS","AUTH_HANDLER","AUTH_META_KEY","DECAF_CONTEXT_KEY","Auth","model","resource","ApiBearerAuth","SetMetadata","UseInterceptors","AuthInterceptor","exports","reflector","authHandler","this","intercept","next","modelName","getHandler","authorize","handle","__decorate","Injectable","__param","Optional","Inject","Reflector","DecafAuthHandler","parseRequest","userRole","headers","authorization","split","AuthorizationError","Model","PersistenceKeys","AUTH_ROLE","DecafRequestContext","put","record","overrides","e","_ctx","accumulate","assign","applyCtx","InternalError","scope","Scope","REQUEST","DecafHandlerExecutor","handlers","context","exec","res","apiParamSpec","getApiDecorators","methodName","routePath","httpVerb","includeQueryParams","NestHttpRouteDec","apiPathParams","startsWith","slice","extractPathParams","swaggerQueryParams","push","ApiQuery","OrderDirection","method","ApiParam","ApiOperation","summary","ApiOkResponse","ApiNoContentResponse","Query","applyApiDecorators","descriptor","proto","prototype","forEach","d","index","createRouteHandler","async","pathParams","queryParams","log","for","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","ValidationKeys","LIST","Adapter","transformerFor","adapter","alias","bind","flavoursToTransform","core$1","Context","toResponse","pending","header","FromModelController","Logging","getPersistence","ModelClazz","createQueryRoutesFromRepository","prefix","QUERY","queryMethods","routeMethods","QueryController","entries","replace","segment","trim","join","message","httpMethod","objValues","fields","f","create","tableName","toKebabCase","modelClazzName","getPK","apiProperties","getRouteParametersFromModel","BaseController","DynamicModelController","info","listBy","details","PreparedStatementKeys","LIST_BY","paginateBy","PAGE_BY","findOneBy","FIND_ONE_BY","findBy","FIND_BY","STATEMENT","a","parseInt","createAll","resp","CREATE_ALL","created","verbose","readAll","ids","READ_ALL","read","routeParams","id","ValidationError","updateAll","updated","update","payload","parse","deleteAll","DELETE_ALL","delete","del","Param","ApiNotFoundResponse","ApiBody","schema","$ref","getSchemaPath","ApiCreatedResponse","ApiBadRequestResponse","ApiUnprocessableEntityResponse","Response","passthrough","Controller","ApiTags","ApiExtraModels","composed","DBKeys","COMPOSED","composedKeys","uniqueKeys","from","Set","separator","DecafRequestHandlerInterceptor","requestContext","executor","contextualize","flags","flavours","flavour","transformer","DefaultAdapterFlags","logger","timestamp","Date","getResponse","RequestToContextTransformer","requestToContextTransformer","set","getModuleFor","DecafModelModule","DecafModelModule_1","createModelServices","models","provide","useFactory","forRoot","trackedModels","modelServices","autoServices","controllers","module","providers","H","APP_INTERCEPTOR","useClass","Module","Decoration","InjectablesKeys","INJECTABLE","extend","category","cfg","DefaultInjectablesConfig","singleton","DEFAULT","durable","INJECT","REQUIRED","MAX","max","maximum","MIN","min","minimum","MAX_LENGTH","maxLength","MIN_LENGTH","minLength","TYPE","prop","DATE","format","ENUM","PATTERN","pat","pattern","source","COLUMN","DecorationKeys","DESCRIPTION","AUTH","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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"for-nest.cjs","sources":["../src/overrides/constants.ts","../src/overrides/decoration.ts","../src/overrides/helpers.ts","../src/decaf-model/decorators/ApiOperationFromModel.ts","../src/decaf-model/decorators/ApiParamsFromModel.ts","../src/decaf-model/decorators/DecafBody.ts","../src/decaf-model/decorators/DecafParams.ts","../src/decaf-model/decorators/utils.ts","../src/constants.ts","../src/decaf-model/decorators/decorators.ts","../src/interceptors/AuthInterceptor.ts","../src/request/DecafAuthHandler.ts","../src/request/DecafRequestContext.ts","../src/request/DecafHandlerExecutor.ts","../src/decaf-model/utils.ts","../src/controllers.ts","../src/factory/openapi/DtoBuilder.ts","../src/overrides/overrides.ts","../src/decaf-model/FromModelController.ts","../src/interceptors/DecafRequestHandlerInterceptor.ts","../src/interceptors/context.ts","../src/decaf-model/DecafModelModule.ts","../src/decoration.ts","../src/factory/errors/cors.ts","../src/factory/exceptions/DecafErrorFilter.ts","../src/factory/openapi/constants.ts","../src/factory/openapi/SwaggerCustomUI.ts","../src/factory/openapi/SwaggerBuilder.ts","../src/core-module.ts","../src/module.ts","../src/index.ts","../src/factory/NestBootstraper.ts","../src/factory/exceptions/decorators.ts","../src/utils.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"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","DecafBody","createParamDecorator","data","ctx","body","switchToHttp","getRequest","controller","getClass","ModelConstr","class","InternalServerErrorException","item","OrderedParams","order","req","original","params","orderList","ordered","k","raw","valuesInOrder","keysInOrder","DecafParams","DecafQuery","_","parsed","query","limit","n","Number","isNaN","offset","bookmark","HttpVerbToDecorator","decorator","Error","DECAF_MODULE_OPTIONS","DECAF_ADAPTER_ID","DECAF_ROUTE","DECAF_HANDLERS","Symbol","DECAF_ADAPTER_OPTIONS","AUTH_HANDLER","AUTH_META_KEY","DECAF_CONTEXT_KEY","Auth","model","resource","ApiBearerAuth","SetMetadata","UseInterceptors","AuthInterceptor","exports","reflector","authHandler","this","intercept","next","modelName","getHandler","authorize","handle","__decorate","Injectable","__param","Optional","Inject","Reflector","DecafAuthHandler","parseRequest","userRole","headers","authorization","split","AuthorizationError","Model","PersistenceKeys","AUTH_ROLE","DecafRequestContext","put","record","overrides","e","_ctx","accumulate","assign","applyCtx","InternalError","scope","Scope","REQUEST","DecafHandlerExecutor","handlers","context","exec","res","apiParamSpec","getApiDecorators","methodName","routePath","httpVerb","includeQueryParams","NestHttpRouteDec","apiPathParams","startsWith","slice","extractPathParams","swaggerQueryParams","push","ApiQuery","OrderDirection","method","ApiParam","ApiOperation","summary","ApiOkResponse","ApiNoContentResponse","Query","applyApiDecorators","descriptor","proto","prototype","forEach","d","index","createRouteHandler","async","pathParams","queryParams","log","for","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","ValidationKeys","LIST","Adapter","transformerFor","adapter","alias","bind","flavoursToTransform","core$1","Context","toResponse","pending","header","FromModelController","Logging","getPersistence","ModelClazz","createQueryRoutesFromRepository","prefix","QUERY","queryMethods","routeMethods","QueryController","entries","replace","segment","trim","join","message","httpMethod","objValues","fields","f","create","tableName","toKebabCase","modelClazzName","getPK","apiProperties","getRouteParametersFromModel","BaseController","DynamicModelController","info","listBy","details","PreparedStatementKeys","LIST_BY","paginateBy","PAGE_BY","findOneBy","FIND_ONE_BY","findBy","FIND_BY","STATEMENT","a","parseInt","COUNT_OF","MAX_OF","MIN_OF","AVG_OF","SUM_OF","DISTINCT_OF","GROUP_OF","countOf","countOfField","field","maxOf","minOf","avgOf","sumOf","distinctOf","groupOf","createAll","resp","CREATE_ALL","created","verbose","readAll","ids","READ_ALL","read","routeParams","id","ValidationError","updateAll","updated","update","payload","parse","deleteAll","DELETE_ALL","delete","del","Param","ApiNotFoundResponse","ApiBody","schema","$ref","getSchemaPath","ApiCreatedResponse","ApiBadRequestResponse","ApiUnprocessableEntityResponse","Response","passthrough","Controller","ApiTags","ApiExtraModels","composed","DBKeys","COMPOSED","composedKeys","uniqueKeys","from","Set","separator","DecafRequestHandlerInterceptor","requestContext","executor","contextualize","flags","flavours","flavour","transformer","DefaultAdapterFlags","logger","timestamp","Date","getResponse","RequestToContextTransformer","requestToContextTransformer","set","getModuleFor","DecafModelModule","DecafModelModule_1","createModelServices","models","provide","useFactory","forRoot","trackedModels","modelServices","autoServices","controllers","module","providers","H","APP_INTERCEPTOR","useClass","Module","Decoration","InjectablesKeys","INJECTABLE","extend","category","cfg","DefaultInjectablesConfig","singleton","DEFAULT","durable","INJECT","REQUIRED","MAX","max","maximum","MIN","min","minimum","MAX_LENGTH","maxLength","MIN_LENGTH","minLength","TYPE","prop","DATE","format","ENUM","PATTERN","pat","pattern","source","COLUMN","DecorationKeys","DESCRIPTION","AUTH","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"],"mappings":"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"}
|