@decaf-ts/for-nest 0.1.20 → 0.1.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/for-nest.cjs +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/constants.cjs +2 -1
- package/lib/constants.d.ts +1 -0
- package/lib/constants.js.map +1 -1
- package/lib/decaf-model/FromModelController.cjs +51 -30
- package/lib/decaf-model/FromModelController.d.ts +1 -1
- package/lib/decaf-model/FromModelController.js.map +1 -1
- package/lib/decaf-model/decorators/index.cjs +2 -0
- package/lib/decaf-model/decorators/index.d.ts +2 -0
- package/lib/decaf-model/decorators/index.js.map +1 -1
- package/lib/decaf-model/decorators/route.cjs +25 -0
- package/lib/decaf-model/decorators/route.d.ts +2 -0
- package/lib/decaf-model/decorators/route.js.map +1 -0
- package/lib/decaf-model/decorators/types.d.ts +5 -0
- package/lib/decaf-model/decorators/utils.cjs +28 -0
- package/lib/decaf-model/decorators/utils.d.ts +11 -0
- package/lib/decaf-model/decorators/utils.js.map +1 -0
- package/lib/decaf-model/utils.cjs +26 -6
- package/lib/decaf-model/utils.d.ts +2 -2
- package/lib/decaf-model/utils.js.map +1 -1
- package/lib/esm/constants.d.ts +1 -0
- package/lib/esm/constants.js +1 -0
- package/lib/esm/constants.js.map +1 -1
- package/lib/esm/decaf-model/FromModelController.d.ts +1 -1
- package/lib/esm/decaf-model/FromModelController.js +32 -11
- package/lib/esm/decaf-model/FromModelController.js.map +1 -1
- package/lib/esm/decaf-model/decorators/index.d.ts +2 -0
- package/lib/esm/decaf-model/decorators/index.js +2 -0
- package/lib/esm/decaf-model/decorators/index.js.map +1 -1
- package/lib/esm/decaf-model/decorators/route.d.ts +2 -0
- package/lib/esm/decaf-model/decorators/route.js +22 -0
- package/lib/esm/decaf-model/decorators/route.js.map +1 -0
- package/lib/esm/decaf-model/decorators/types.d.ts +5 -0
- package/lib/esm/decaf-model/decorators/utils.d.ts +11 -0
- package/lib/esm/decaf-model/decorators/utils.js +25 -0
- package/lib/esm/decaf-model/decorators/utils.js.map +1 -0
- package/lib/esm/decaf-model/utils.d.ts +2 -2
- package/lib/esm/decaf-model/utils.js +29 -9
- package/lib/esm/decaf-model/utils.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/dist/for-nest.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e,t;e=this,t=function(e,t,r,a,o,i,s,n,c,p,d,l,u){"use strict";function h(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 m=h(u);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(s.ApiProperty({required:!0})).apply(),t.Decoration.for(o.ValidationKeys.MAX).extend({decorator:e=>s.ApiProperty({maximum:e})}).apply(),t.Decoration.for(o.ValidationKeys.MIN).extend({decorator:e=>s.ApiProperty({minimum:e})}).apply(),t.Decoration.for(o.ValidationKeys.MAX_LENGTH).extend({decorator:e=>s.ApiProperty({maxLength:e})}).apply(),t.Decoration.for(o.ValidationKeys.MIN_LENGTH).extend({decorator:e=>s.ApiProperty({minLength:e})}).apply(),t.Decoration.for(o.ValidationKeys.LIST).extend({decorator:e=>{const t=Array.isArray(e)?e[0]:e;return s.ApiProperty({type:[t]})}}).apply(),t.Decoration.for(o.ValidationKeys.PATTERN).extend({decorator:e=>s.ApiProperty({pattern:"string"==typeof e?e:e.source})}).apply(),t.Decoration.for(i.PersistenceKeys.COLUMN).extend({decorator:e=>s.ApiProperty({name:e})}).apply(),t.Decoration.for(t.DecorationKeys.DESCRIPTION).extend({decorator:e=>s.ApiProperty({description:e})}).apply();const y="DecafModuleOptions",g="DecafAdapter",f=Symbol("DecafHandlers"),_=Symbol("DecafAdapterForOptions"),A=Symbol("AUTH_HANDLER"),b="auth:meta",P="AuthRole";var E;let w=class{static{E=this}static{this._adapterInstance=null}static get log(){return this._logger||(this._logger=p.Logging.for(E)),this._logger}constructor(e,t){this.options=e,this.moduleRef=t}static async createAdapter(e){if(!this._adapterInstance){const t=this.log.for(this.createAdapter);t.info("Creating adapter instance..."),this._adapterInstance=new e.adapter(e.conf,e.alias);try{await this._adapterInstance.initialize()}catch(e){throw t.error("Failed to initialized adapter"),e}t.info("Adapter instance created successfully!")}return this._adapterInstance}static getAdapterInstance(){return this._adapterInstance}static forRoot(e){const t={provide:y,useValue:e},r={useFactory:async e=>E.createAdapter(e),provide:g,durable:!0,scope:a.Scope.DEFAULT,inject:[y]};return{module:E,providers:[r,t],exports:[r]}}async onApplicationShutdown(){const e=E.log.for(this.onApplicationShutdown),t=this.moduleRef.get(g);try{t&&(e.info("Shutting down"),await t.shutdown(),E._adapterInstance=null)}catch(t){e.error("Failed to shutdown application",t)}}};function O(e,r){const{handler:a,args:o}=t.Metadata.get(e,d.OperationKeys.REFLECT+d.OperationKeys.BLOCK)||{};return!!a&&(a(...o,r)??!1)}function R(e,r,o){const i={GET:[d.OperationKeys.READ,a.Get],POST:[d.OperationKeys.CREATE,a.Post],PUT:[d.OperationKeys.UPDATE,a.Put],PATCH:[d.OperationKeys.UPDATE,a.Patch],DELETE:[d.OperationKeys.DELETE,a.Delete]},[n,c]=i[r];return O(e,n)?t.apply(s.ApiExcludeEndpoint()):t.apply(c(o))}function D(e=[]){const t=e.map(e=>s.ApiParam({name:e.name,description:e.description??"Path parameter: "+e.name,required:e.required??!0,type:e.type??String}));return a.applyDecorators(...t)}w=E=n.__decorate([a.Global(),a.Module({}),n.__param(0,a.Inject(y)),n.__metadata("design:paramtypes",[Object,c.ModuleRef])],w);const v=a.createParamDecorator((e,t)=>{const r=t.switchToHttp().getRequest().body,o=t.getClass(),i=o.clazz;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}),S=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 $(e=[]){const t=e.map(e=>e.name);return S(t)}function T(t){const r="string"==typeof t?t:t.name;return a.applyDecorators(a.SetMetadata(b,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(b,e.getHandler())??this.reflector.get(b,e.getClass());return r&&this.authHandler&&await this.authHandler.authorize(e,r),t.handle()}},e.AuthInterceptor=n.__decorate([a.Injectable(),n.__param(1,a.Optional()),n.__param(1,a.Inject(A)),n.__metadata("design:paramtypes",[c.Reflector,Object])],e.AuthInterceptor),e.DecafRequestContext=class{constructor(){this.cache=new Map}set(e,t){this.cache.set(e,t)}get(e){return this.cache.get(e)}},e.DecafRequestContext=n.__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=n.__decorate([a.Injectable({scope:a.Scope.REQUEST}),n.__param(0,a.Inject(f)),n.__metadata("design:paramtypes",[Array,e.DecafRequestContext])],e.DecafHandlerExecutor);const I=e=>({name:e,description:e+" parameter for the query",required:!0,type:String});function k(e,t){const r=(e=>e.split("/").filter(e=>e.startsWith(":")).map(e=>e.slice(1)))(t).map(I);return{method:[a.Get(t),...r.map(s.ApiParam),s.ApiOperation({summary:`Retrieve records using custom query "${e}".`}),s.ApiOkResponse({description:"Results successfully retrieved."}),s.ApiNoContentResponse({description:"No content returned by the query."})],params:[$(r),a.Query()]}}function C(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 F(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 M(e,t,r){return Object.defineProperty(e.prototype||e,t,{value:r,writable:!1}),Object.getOwnPropertyDescriptor(e.prototype||e,t)}class j extends p.LoggedClass{constructor(e){super(),this.clientContext=e}get persistence(){throw Error("Not implemented")}}class x{static{this.log=p.Logging.for(x.name)}static getPersistence(e){try{return i.ModelService.forModel(e)}catch(t){return i.Repository.forModel(e)}}static createQueryRoutesFromRepository(e,r=i.PersistenceKeys.QUERY){const a=e.class,o=t.Metadata.get(e.constructor,t.Metadata.key(i.PersistenceKeys.QUERY))??{};class s extends j{constructor(e){super(e),this._persistence=x.getPersistence(a)}get persistence(){const e=this.clientContext.get(_);return e?this._persistence.for(e):this._persistence}}for(const[e,t]of Object.entries(o)){const a=[r,e,...(t.fields??[]).map(e=>":"+e)].filter(e=>e&&e.trim()).join("/"),o=M(s,e,F(e));o&&C(s,e,o,k(e,a))}return s}static create(t){const r=x.log.for(x.create),c=o.Model.tableName(t),l=p.toKebabCase(c),u=t.name,h=x.getPersistence(t),{description:m,getPK:y,apiProperties:g,path:f}=x.getRouteParametersFromModel(t);r.debug("Creating controller for model: "+u);const _=x.createQueryRoutesFromRepository(h instanceof i.ModelService?h.repo:h);let A=class extends _{static{this.clazz=t}constructor(e){super(e),this.pk=o.Model.pk(t),r.info(`Registering dynamic controller for model: ${u} route: /${l}`)}async listBy(e,t){return this.persistence.listBy(e,t.direction)}async paginateBy(e,t){return this.persistence.paginateBy(e,t.direction,t)}async findOneBy(e,t){return this.persistence.findOneBy(e,t)}async findBy(e,t,r){return this.persistence.findBy(e,t)}async statement(e,t,r){const{direction:a,offset:o,limit:s,bookmark:n}=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:s,offset:o,bookmark:n}];case i.PreparedStatementKeys.FIND_ONE_BY:}return this.persistence.statement(e,...t)}async createAll(e){const r=this.log.for(this.createAll);let a;r.verbose("creating new "+u);try{a=await this.persistence.createAll(e.map(e=>new t(e)))}catch(e){throw r.error("Failed to create new "+u,e),e}return r.info(`created new ${u} with id ${a[this.pk]}`),a}async create(e){const t=this.log.for(this.create);let r;t.verbose("creating new "+u);try{r=await this.persistence.create(e)}catch(e){throw t.error("Failed to create new "+u,e),e}return t.info(`created new ${u} with id ${r[this.pk]}`),r}async readAll(e){const t=this.log.for(this.readAll);let r;try{t.debug(`reading ${e.length} ${u}: ${e}`),r=await this.persistence.readAll(e)}catch(r){throw t.error(`Failed to ${u} with id ${e}`,r),r}return t.info(`read ${r.length} ${u}`),r}async read(e){const t=y(...e.valuesInOrder);if(void 0===t)throw new d.ValidationError(`No ${this.pk} provided`);const r=this.log.for(this.read);let a;try{r.debug(`reading ${u} with ${this.pk} ${t}`),a=await this.persistence.read(t)}catch(e){throw r.error(`Failed to read ${u} with id ${t}`,e),e}return r.info(`read ${u} with id ${a[this.pk]}`),a}async updateAll(e){const t=this.log.for(this.updateAll);let r;try{t.info(`updating ${e.length} ${u}`),r=await this.persistence.updateAll(e)}catch(e){throw t.error(e),e}return r}async update(e,r){const a=this.log.for(this.update),o=y(...e.valuesInOrder);if(void 0===o)throw new d.ValidationError(`No ${this.pk} provided`);let i;try{a.info(`updating ${u} with ${this.pk} ${o}`),i=await this.persistence.update(new t({...r,[this.pk]:o}))}catch(e){throw a.error(e),e}return i}async deleteAll(e){const t=this.log.for(this.deleteAll);let r;try{t.debug(`deleting ${e.length} ${u}: ${e}`),r=await this.persistence.deleteAll(e)}catch(r){throw t.error(`Failed to delete ${u} with id ${e}`,r),r}return t.info(`deleted ${r.length} ${u}`),r}async delete(e){const t=this.log.for(this.delete),r=y(...e.valuesInOrder);if(void 0===r)throw new d.ValidationError(`No ${this.pk} provided`);let a;try{t.debug(`deleting ${u} with ${this.pk} ${r}`),a=await this.persistence.delete(r)}catch(e){throw t.error(`Failed to delete ${u} with id ${r}`,e),e}return t.info(`deleted ${u} with id ${r}`),a}};return n.__decorate([R(t,"GET","listBy/:key"),s.ApiOperation({summary:`Retrieve ${u} records by query.`}),s.ApiParam({name:"key",description:"the model key to sort by"}),s.ApiQuery({name:"direction",required:!0,enum:i.OrderDirection}),s.ApiOkResponse({description:u+" listed successfully."}),n.__param(1,a.Query()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[String,Object]),n.__metadata("design:returntype",Promise)],A.prototype,"listBy",null),n.__decorate([R(t,"GET","paginateBy/:key/:page"),s.ApiOperation({summary:`Retrieve ${u} records by query.`}),s.ApiParam({name:"key",description:"the model key to sort by"}),s.ApiParam({name:"page",description:"the page to retrieve or the bookmark"}),s.ApiQuery({name:"direction",required:!0,enum:i.OrderDirection,description:"the sort order"}),s.ApiQuery({name:"limit",required:!0,description:"the page size"}),s.ApiQuery({name:"offset",description:"the bookmark when necessary"}),s.ApiOkResponse({description:u+" listed paginated."}),n.__param(0,a.Param("key")),n.__param(1,a.Query()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[String,Object]),n.__metadata("design:returntype",Promise)],A.prototype,"paginateBy",null),n.__decorate([R(t,"GET","findOneBy/:key"),s.ApiOperation({summary:`Retrieve ${u} records by query.`}),s.ApiParam({name:"key",description:"the model key to sort by"}),s.ApiOkResponse({description:u+" listed found."}),s.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),n.__param(0,a.Param("key")),n.__param(1,a.Param("value")),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[String,Object]),n.__metadata("design:returntype",Promise)],A.prototype,"findOneBy",null),n.__decorate([R(t,"GET","findBy/:key/:value"),s.ApiOperation({summary:`Retrieve ${u} records by query.`}),s.ApiParam({name:"key",description:"the model key to compare"}),s.ApiParam({name:"value",description:"the value to match"}),s.ApiQuery({name:"direction",required:!0,enum:i.OrderDirection,description:"the sort order when applicable"}),s.ApiOkResponse({description:u+" listed found."}),s.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),n.__param(0,a.Param("key")),n.__param(1,a.Param("value")),n.__param(2,a.Query()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[String,Object,Object]),n.__metadata("design:returntype",Promise)],A.prototype,"findBy",null),n.__decorate([R(t,"GET","statement/:method/*args"),s.ApiOperation({summary:`Executes a prepared statement on ${u}.`}),s.ApiParam({name:"method",description:"the prepared statement to execute"}),s.ApiParam({name:"args",description:"concatenated list of arguments the prepared statement can accept"}),s.ApiQuery({name:"direction",required:!0,enum:i.OrderDirection,description:"the sort order when applicable"}),s.ApiQuery({name:"limit",required:!0,description:"limit or page size when applicable"}),s.ApiQuery({name:"offset",required:!0,description:"offset or bookmark when applicable"}),s.ApiOkResponse({description:u+" listed found."}),s.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),n.__param(0,a.Param("method")),n.__param(1,a.Param("args")),n.__param(2,a.Query()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[String,Array,Object]),n.__metadata("design:returntype",Promise)],A.prototype,"statement",null),n.__decorate([R(t,"POST","bulk"),s.ApiOperation({summary:`Create a new ${u}.`}),s.ApiBody({description:"Payload for "+u,schema:{type:"array",items:{$ref:s.getSchemaPath(t)}}}),s.ApiCreatedResponse({description:`x ${u} created successfully.`}),s.ApiBadRequestResponse({description:"Payload validation failed."}),s.ApiUnprocessableEntityResponse({description:"Repository rejected the provided payload."}),n.__param(0,v()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Array]),n.__metadata("design:returntype",Promise)],A.prototype,"createAll",null),n.__decorate([R(t,"POST"),s.ApiOperation({summary:`Create a new ${u}.`}),s.ApiBody({description:"Payload for "+u,schema:{$ref:s.getSchemaPath(t)}}),s.ApiCreatedResponse({description:u+" created successfully."}),s.ApiBadRequestResponse({description:"Payload validation failed."}),s.ApiUnprocessableEntityResponse({description:"Repository rejected the provided payload."}),n.__param(0,v()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object]),n.__metadata("design:returntype",Promise)],A.prototype,"create",null),n.__decorate([R(t,"GET","bulk"),s.ApiOperation({summary:`Retrieve a ${u} record by id.`}),s.ApiQuery({name:"ids",required:!0,type:"array"}),s.ApiOkResponse({description:u+" retrieved successfully."}),s.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),n.__param(0,a.Query("ids")),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Array]),n.__metadata("design:returntype",Promise)],A.prototype,"readAll",null),n.__decorate([R(t,"GET",f),D(g),s.ApiOperation({summary:`Retrieve a ${u} record by id.`}),s.ApiOkResponse({description:u+" retrieved successfully."}),s.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),n.__param(0,$(g)),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object]),n.__metadata("design:returntype",Promise)],A.prototype,"read",null),n.__decorate([R(t,"PUT","bulk"),D(g),s.ApiOperation({summary:`Replace an existing ${u} record with a new payload.`}),s.ApiBody({description:"Payload for replace a existing record of "+u,schema:{type:"array",items:{$ref:s.getSchemaPath(t)}}}),s.ApiOkResponse({description:t+" record replaced successfully."}),s.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),s.ApiBadRequestResponse({description:"Payload validation failed."}),n.__param(0,v()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Array]),n.__metadata("design:returntype",Promise)],A.prototype,"updateAll",null),n.__decorate([R(t,"PUT",f),D(g),s.ApiOperation({summary:`Replace an existing ${u} record with a new payload.`}),s.ApiBody({description:"Payload for replace a existing record of "+u,schema:{$ref:s.getSchemaPath(t)}}),s.ApiOkResponse({description:t+" record replaced successfully."}),s.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),s.ApiBadRequestResponse({description:"Payload validation failed."}),n.__param(0,$(g)),n.__param(1,v()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object,Object]),n.__metadata("design:returntype",Promise)],A.prototype,"update",null),n.__decorate([R(t,"DELETE","bulk"),D(g),s.ApiOperation({summary:`Retrieve a ${u} record by id.`}),s.ApiQuery({name:"ids",required:!0,type:"array"}),s.ApiOkResponse({description:u+" retrieved successfully."}),s.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),n.__param(0,a.Query("ids")),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Array]),n.__metadata("design:returntype",Promise)],A.prototype,"deleteAll",null),n.__decorate([R(t,"DELETE",f),D(g),s.ApiOperation({summary:`Delete a ${u} record by id.`}),s.ApiOkResponse({description:u+" record deleted successfully."}),s.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),n.__param(0,$(g)),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object]),n.__metadata("design:returntype",Promise)],A.prototype,"delete",null),A=n.__decorate([a.Controller(l),s.ApiTags(u),s.ApiExtraModels(t),T(t),n.__metadata("design:paramtypes",[e.DecafRequestContext])],A),A}static getRouteParametersFromModel(e){const r=o.Model.pk(e),a=t.Metadata.get(e,t.Metadata.key(d.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("")}}}var q,B;e.DecafRequestHandlerInterceptor=class{constructor(e){this.executor=e}async intercept(e,t){const r=e.switchToHttp().getRequest(),a=e.switchToHttp().getResponse();return await this.executor.exec(r,a),t.handle()}},e.DecafRequestHandlerInterceptor=n.__decorate([a.Injectable({scope:a.Scope.REQUEST}),n.__metadata("design:paramtypes",[e.DecafHandlerExecutor])],e.DecafRequestHandlerInterceptor),e.DecafModelModule=class{static{q=this}static{this.log=p.Logging.for(q.name)}static createModelServices(e){return e.map(e=>({provide:e.name+"Service",useFactory:()=>i.ModelService.forModel(e)}))}static forRoot(t,r={}){const a=this.log.for(this.forRoot);a.info("Generating controllers for flavour...");const o=i.Adapter.models(t);let s=[];r.autoServices&&(a.info("Auto-services enabled. Initializing service generation."),s=this.createModelServices(o),a.info(`Auto-services completed. ${s.length} services initialized.`));const n=o.map(x.create);return a.info(`Generated ${n.length} controllers`),{module:q,controllers:n,providers:[{provide:f,useFactory:()=>r.handlers?.map(e=>(a.info("Registered request handler: "+e.name),new e))??[]},e.DecafRequestContext,e.DecafHandlerExecutor,{provide:c.APP_INTERCEPTOR,useClass:e.DecafRequestHandlerInterceptor},...s]}}},e.DecafModelModule=q=n.__decorate([a.Module({})],e.DecafModelModule),e.DecafModule=B=class{static async forRootAsync(t){const{autoControllers:r,autoServices:a,handlers:o}=t,i=(await w.createAdapter(t)).flavour,s=[w.forRoot(t)];return r&&s.push(e.DecafModelModule.forRoot(i,{autoServices:a,handlers:o})),{module:B,imports:s}}},e.DecafModule=B=n.__decorate([a.Module({})],e.DecafModule);class N extends i.ForbiddenError{constructor(e){super(e,N.name)}}e.DecafExceptionFilter=class{catch(e,t){const r=t.switchToHttp(),a=r.getResponse(),o=r.getRequest(),i="production"===p.LoggedEnvironment.env;e instanceof d.BaseError||(e=new d.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=n.__decorate([a.Catch()],e.DecafExceptionFilter);const L={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 K{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||L.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=m.join(this.options.assetsPath||"",e),a=l.readFileSync(r,{encoding:"base64"});return t?"data:image/png;base64,"+a:a}}class H{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 s.DocumentBuilder).setTitle(this.options.title).setDescription(e).setVersion(this.options.version||"0.0.1").addBearerAuth(this.options.auth||L.auth).build();return s.SwaggerModule.createDocument(this.app,t,{extraModels:this.options.extraModels||[]})}setupSwagger(){const e=this.createDocument(),t=new K({title:this.options.title,path:this.options.path||L.path,persistAuthorization:this.options.persistAuthorization??!0,assetsPath:this.options.assetsPath,faviconPath:this.options.faviconFilePath,topbarIconPath:this.options.topbarIconFilePath,topbarBgColor:this.options.topbarBgColor});s.SwaggerModule.setup(this.options.path||L.path,this.app,e,{...t.getCustomOptions()})}}const U="##VERSION##",G="##PACKAGE##";t.Metadata.registerLibrary(G,U),e.AUTH_HANDLER=A,e.AUTH_META_KEY=b,e.ApiOperationFromModel=R,e.ApiParamsFromModel=D,e.Auth=T,e.AuthRole=P,e.BulkApiOperationFromModel=(e,r,o)=>{const i={GET:[d.BulkCrudOperationKeys.READ_ALL,a.Get],POST:[d.BulkCrudOperationKeys.CREATE_ALL,a.Post],PUT:[d.BulkCrudOperationKeys.UPDATE_ALL,a.Put],PATCH:[d.BulkCrudOperationKeys.UPDATE_ALL,a.Patch],DELETE:[d.BulkCrudOperationKeys.DELETE_ALL,a.Delete]},[n,c]=i[r];return O(e,n)?t.apply(s.ApiExcludeEndpoint()):t.apply(c(o))},e.CorsError=N,e.DECAF_ADAPTER_ID=g,e.DECAF_ADAPTER_OPTIONS=_,e.DECAF_HANDLERS=f,e.DECAF_MODULE_OPTIONS=y,e.DecafBody=v,e.DecafParams=$,e.FromModelController=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 N(`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 H(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=G,e.Roles=e=>t.metadata(P,e),e.SwaggerBuilder=H,e.UseDecafFilter=()=>a.UseFilters(new e.DecafExceptionFilter),e.VERSION=U,e.isOperationBlocked=O,e.repoForModel=e=>{const t=o.Model.get(e);if(!t)throw new d.InternalError("Failed to find repository for "+e);return i.Repository.forModel(t)}},"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("@nestjs/swagger"),require("tslib"),require("@nestjs/core"),require("@decaf-ts/logging"),require("@decaf-ts/db-decorators"),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","@nestjs/swagger","tslib","@nestjs/core","@decaf-ts/logging","@decaf-ts/db-decorators","fs","path"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["for-nest"]={},e.decafTsDecoration,e.decafTsInjectableDecorators,e.nestjsCommon,e.decafTsDecoratorValidation,e.decafTsCore,e.nestjsSwagger,e.tslib,e.nestjsCore,e.decafTsLogging,e.decafTsDbDecorators,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){"use strict";function h(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 m=h(u);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(s.ApiProperty({required:!0})).apply(),t.Decoration.for(o.ValidationKeys.MAX).extend({decorator:e=>s.ApiProperty({maximum:e})}).apply(),t.Decoration.for(o.ValidationKeys.MIN).extend({decorator:e=>s.ApiProperty({minimum:e})}).apply(),t.Decoration.for(o.ValidationKeys.MAX_LENGTH).extend({decorator:e=>s.ApiProperty({maxLength:e})}).apply(),t.Decoration.for(o.ValidationKeys.MIN_LENGTH).extend({decorator:e=>s.ApiProperty({minLength:e})}).apply(),t.Decoration.for(o.ValidationKeys.LIST).extend({decorator:e=>{const t=Array.isArray(e)?e[0]:e;return s.ApiProperty({type:[t]})}}).apply(),t.Decoration.for(o.ValidationKeys.PATTERN).extend({decorator:e=>s.ApiProperty({pattern:"string"==typeof e?e:e.source})}).apply(),t.Decoration.for(i.PersistenceKeys.COLUMN).extend({decorator:e=>s.ApiProperty({name:e})}).apply(),t.Decoration.for(t.DecorationKeys.DESCRIPTION).extend({decorator:e=>s.ApiProperty({description:e})}).apply();const y="DecafModuleOptions",g="DecafAdapter",f="DecafRoute",_=Symbol("DecafHandlers"),A=Symbol("DecafAdapterForOptions"),b=Symbol("AUTH_HANDLER"),P="auth:meta",E="AuthRole";var w;let O=class{static{w=this}static{this._adapterInstance=null}static get log(){return this._logger||(this._logger=p.Logging.for(w)),this._logger}constructor(e,t){this.options=e,this.moduleRef=t}static async createAdapter(e){if(!this._adapterInstance){const t=this.log.for(this.createAdapter);t.info("Creating adapter instance..."),this._adapterInstance=new e.adapter(e.conf,e.alias);try{await this._adapterInstance.initialize()}catch(e){throw t.error("Failed to initialized adapter"),e}t.info("Adapter instance created successfully!")}return this._adapterInstance}static getAdapterInstance(){return this._adapterInstance}static forRoot(e){const t={provide:y,useValue:e},r={useFactory:async e=>w.createAdapter(e),provide:g,durable:!0,scope:a.Scope.DEFAULT,inject:[y]};return{module:w,providers:[r,t],exports:[r]}}async onApplicationShutdown(){const e=w.log.for(this.onApplicationShutdown),t=this.moduleRef.get(g);try{t&&(e.info("Shutting down"),await t.shutdown(),w._adapterInstance=null)}catch(t){e.error("Failed to shutdown application",t)}}};function R(e,r){const{handler:a,args:o}=t.Metadata.get(e,d.OperationKeys.REFLECT+d.OperationKeys.BLOCK)||{};return!!a&&(a(...o,r)??!1)}function D(e,r,o){const i={GET:[d.OperationKeys.READ,a.Get],POST:[d.OperationKeys.CREATE,a.Post],PUT:[d.OperationKeys.UPDATE,a.Put],PATCH:[d.OperationKeys.UPDATE,a.Patch],DELETE:[d.OperationKeys.DELETE,a.Delete]},[n,c]=i[r];return R(e,n)?t.apply(s.ApiExcludeEndpoint()):t.apply(c(o))}function v(e=[]){const t=e.map(e=>s.ApiParam({name:e.name,description:e.description??"Path parameter: "+e.name,required:e.required??!0,type:e.type??String}));return a.applyDecorators(...t)}O=w=n.__decorate([a.Global(),a.Module({}),n.__param(0,a.Inject(y)),n.__metadata("design:paramtypes",[Object,c.ModuleRef])],O);const T=a.createParamDecorator((e,t)=>{const r=t.switchToHttp().getRequest().body,o=t.getClass(),i=o.clazz;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}),S=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 $(e=[]){const t=e.map(e=>e.name);return S(t)}function I(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}function k(t){const r="string"==typeof t?t:t.name;return a.applyDecorators(a.SetMetadata(P,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(P,e.getHandler())??this.reflector.get(P,e.getClass());return r&&this.authHandler&&await this.authHandler.authorize(e,r),t.handle()}},e.AuthInterceptor=n.__decorate([a.Injectable(),n.__param(1,a.Optional()),n.__param(1,a.Inject(b)),n.__metadata("design:paramtypes",[c.Reflector,Object])],e.AuthInterceptor),e.DecafRequestContext=class{constructor(){this.cache=new Map}set(e,t){this.cache.set(e,t)}get(e){return this.cache.get(e)}},e.DecafRequestContext=n.__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=n.__decorate([a.Injectable({scope:a.Scope.REQUEST}),n.__param(0,a.Inject(_)),n.__metadata("design:paramtypes",[Array,e.DecafRequestContext])],e.DecafHandlerExecutor);const C=e=>({name:e,description:e+" parameter for the query",required:!0,type:String});function F(e,t,r,o=!1){const n=I(r),c=(e=>e.split("/").filter(e=>e.startsWith(":")).map(e=>e.slice(1)))(t).map(C),p=[];return"GET"===r&&o&&p.push(s.ApiQuery({name:"direction",required:!1,enum:i.OrderDirection,description:"the sort order when applicable"}),s.ApiQuery({name:"limit",required:!1,description:"limit or page size when applicable"}),s.ApiQuery({name:"offset",required:!1,description:"offset or bookmark when applicable"})),{method:[n(t),...c.map(s.ApiParam),...p,s.ApiOperation({summary:`Retrieve records using according to "${e}".`}),s.ApiOkResponse({description:"Result successfully retrieved."}),s.ApiNoContentResponse({description:"No content returned by the method."})],params:[$(c),a.Query()]}}function M(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 j(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 x(e,t,r){return Object.defineProperty(e.prototype||e,t,{value:r,writable:!1}),Object.getOwnPropertyDescriptor(e.prototype||e,t)}class q extends p.LoggedClass{constructor(e){super(),this.clientContext=e}get persistence(){throw Error("Not implemented")}}class N{static{this.log=p.Logging.for(N.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=N.log.for(N.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(f))??{};class p extends q{constructor(e){super(e),this._persistence=N.getPersistence(s)}get persistence(){const e=this.clientContext.get(A);return e?this._persistence.for(e):this._persistence}}for(const[e,t]of Object.entries(c)){const r=[t.path.replace(/^\/+|\/+$/g,"")].filter(e=>e&&e.trim()).join("/"),o=j(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=x(p,e,o);i&&M(p,e,i,F(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=x(p,e,j(e));o&&M(p,e,o,F(e,a,"GET",!0))}return p}static create(t){const r=N.log.for(N.create),c=o.Model.tableName(t),l=p.toKebabCase(c),u=t.name,h=N.getPersistence(t),{description:m,getPK:y,apiProperties:g,path:f}=N.getRouteParametersFromModel(t);r.debug("Creating controller for model: "+u);const _=N.createQueryRoutesFromRepository(h);let A=class extends _{static{this.clazz=t}constructor(e){super(e),this.pk=o.Model.pk(t),r.info(`Registering dynamic controller for model: ${u} route: /${l}`)}async listBy(e,t){return this.persistence.listBy(e,t.direction)}async paginateBy(e,t){return this.persistence.paginateBy(e,t.direction,t)}async findOneBy(e,t){return this.persistence.findOneBy(e,t)}async findBy(e,t,r){return this.persistence.findBy(e,t)}async statement(e,t,r){const{direction:a,offset:o,limit:s,bookmark:n}=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:s,offset:o,bookmark:n}];case i.PreparedStatementKeys.FIND_ONE_BY:}return this.persistence.statement(e,...t)}async createAll(e){const r=this.log.for(this.createAll);let a;r.verbose("creating new "+u);try{a=await this.persistence.createAll(e.map(e=>new t(e)))}catch(e){throw r.error("Failed to create new "+u,e),e}return r.info(`created new ${u} with id ${a[this.pk]}`),a}async create(e){const t=this.log.for(this.create);let r;t.verbose("creating new "+u);try{r=await this.persistence.create(e)}catch(e){throw t.error("Failed to create new "+u,e),e}return t.info(`created new ${u} with id ${r[this.pk]}`),r}async readAll(e){const t=this.log.for(this.readAll);let r;try{t.debug(`reading ${e.length} ${u}: ${e}`),r=await this.persistence.readAll(e)}catch(r){throw t.error(`Failed to ${u} with id ${e}`,r),r}return t.info(`read ${r.length} ${u}`),r}async read(e){const t=y(...e.valuesInOrder);if(void 0===t)throw new d.ValidationError(`No ${this.pk} provided`);const r=this.log.for(this.read);let a;try{r.debug(`reading ${u} with ${this.pk} ${t}`),a=await this.persistence.read(t)}catch(e){throw r.error(`Failed to read ${u} with id ${t}`,e),e}return r.info(`read ${u} with id ${a[this.pk]}`),a}async updateAll(e){const t=this.log.for(this.updateAll);let r;try{t.info(`updating ${e.length} ${u}`),r=await this.persistence.updateAll(e)}catch(e){throw t.error(e),e}return r}async update(e,r){const a=this.log.for(this.update),o=y(...e.valuesInOrder);if(void 0===o)throw new d.ValidationError(`No ${this.pk} provided`);let i;try{a.info(`updating ${u} with ${this.pk} ${o}`),i=await this.persistence.update(new t({...r,[this.pk]:o}))}catch(e){throw a.error(e),e}return i}async deleteAll(e){const t=this.log.for(this.deleteAll);let r;try{t.debug(`deleting ${e.length} ${u}: ${e}`),r=await this.persistence.deleteAll(e)}catch(r){throw t.error(`Failed to delete ${u} with id ${e}`,r),r}return t.info(`deleted ${r.length} ${u}`),r}async delete(e){const t=this.log.for(this.delete),r=y(...e.valuesInOrder);if(void 0===r)throw new d.ValidationError(`No ${this.pk} provided`);let a;try{t.debug(`deleting ${u} with ${this.pk} ${r}`),a=await this.persistence.delete(r)}catch(e){throw t.error(`Failed to delete ${u} with id ${r}`,e),e}return t.info(`deleted ${u} with id ${r}`),a}};return n.__decorate([D(t,"GET","listBy/:key"),s.ApiOperation({summary:`Retrieve ${u} records by query.`}),s.ApiParam({name:"key",description:"the model key to sort by"}),s.ApiQuery({name:"direction",required:!0,enum:i.OrderDirection}),s.ApiOkResponse({description:u+" listed successfully."}),n.__param(1,a.Query()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[String,Object]),n.__metadata("design:returntype",Promise)],A.prototype,"listBy",null),n.__decorate([D(t,"GET","paginateBy/:key/:page"),s.ApiOperation({summary:`Retrieve ${u} records by query.`}),s.ApiParam({name:"key",description:"the model key to sort by"}),s.ApiParam({name:"page",description:"the page to retrieve or the bookmark"}),s.ApiQuery({name:"direction",required:!0,enum:i.OrderDirection,description:"the sort order"}),s.ApiQuery({name:"limit",required:!0,description:"the page size"}),s.ApiQuery({name:"offset",description:"the bookmark when necessary"}),s.ApiOkResponse({description:u+" listed paginated."}),n.__param(0,a.Param("key")),n.__param(1,a.Query()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[String,Object]),n.__metadata("design:returntype",Promise)],A.prototype,"paginateBy",null),n.__decorate([D(t,"GET","findOneBy/:key"),s.ApiOperation({summary:`Retrieve ${u} records by query.`}),s.ApiParam({name:"key",description:"the model key to sort by"}),s.ApiOkResponse({description:u+" listed found."}),s.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),n.__param(0,a.Param("key")),n.__param(1,a.Param("value")),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[String,Object]),n.__metadata("design:returntype",Promise)],A.prototype,"findOneBy",null),n.__decorate([D(t,"GET","findBy/:key/:value"),s.ApiOperation({summary:`Retrieve ${u} records by query.`}),s.ApiParam({name:"key",description:"the model key to compare"}),s.ApiParam({name:"value",description:"the value to match"}),s.ApiQuery({name:"direction",required:!0,enum:i.OrderDirection,description:"the sort order when applicable"}),s.ApiOkResponse({description:u+" listed found."}),s.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),n.__param(0,a.Param("key")),n.__param(1,a.Param("value")),n.__param(2,a.Query()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[String,Object,Object]),n.__metadata("design:returntype",Promise)],A.prototype,"findBy",null),n.__decorate([D(t,"GET","statement/:method/*args"),s.ApiOperation({summary:`Executes a prepared statement on ${u}.`}),s.ApiParam({name:"method",description:"the prepared statement to execute"}),s.ApiParam({name:"args",description:"concatenated list of arguments the prepared statement can accept"}),s.ApiQuery({name:"direction",required:!0,enum:i.OrderDirection,description:"the sort order when applicable"}),s.ApiQuery({name:"limit",required:!0,description:"limit or page size when applicable"}),s.ApiQuery({name:"offset",required:!0,description:"offset or bookmark when applicable"}),s.ApiOkResponse({description:u+" listed found."}),s.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),n.__param(0,a.Param("method")),n.__param(1,a.Param("args")),n.__param(2,a.Query()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[String,Array,Object]),n.__metadata("design:returntype",Promise)],A.prototype,"statement",null),n.__decorate([D(t,"POST","bulk"),s.ApiOperation({summary:`Create a new ${u}.`}),s.ApiBody({description:"Payload for "+u,schema:{type:"array",items:{$ref:s.getSchemaPath(t)}}}),s.ApiCreatedResponse({description:`x ${u} created successfully.`}),s.ApiBadRequestResponse({description:"Payload validation failed."}),s.ApiUnprocessableEntityResponse({description:"Repository rejected the provided payload."}),n.__param(0,T()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Array]),n.__metadata("design:returntype",Promise)],A.prototype,"createAll",null),n.__decorate([D(t,"POST"),s.ApiOperation({summary:`Create a new ${u}.`}),s.ApiBody({description:"Payload for "+u,schema:{$ref:s.getSchemaPath(t)}}),s.ApiCreatedResponse({description:u+" created successfully."}),s.ApiBadRequestResponse({description:"Payload validation failed."}),s.ApiUnprocessableEntityResponse({description:"Repository rejected the provided payload."}),n.__param(0,T()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object]),n.__metadata("design:returntype",Promise)],A.prototype,"create",null),n.__decorate([D(t,"GET","bulk"),s.ApiOperation({summary:`Retrieve a ${u} record by id.`}),s.ApiQuery({name:"ids",required:!0,type:"array"}),s.ApiOkResponse({description:u+" retrieved successfully."}),s.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),n.__param(0,a.Query("ids")),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Array]),n.__metadata("design:returntype",Promise)],A.prototype,"readAll",null),n.__decorate([D(t,"GET",f),v(g),s.ApiOperation({summary:`Retrieve a ${u} record by id.`}),s.ApiOkResponse({description:u+" retrieved successfully."}),s.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),n.__param(0,$(g)),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object]),n.__metadata("design:returntype",Promise)],A.prototype,"read",null),n.__decorate([D(t,"PUT","bulk"),v(g),s.ApiOperation({summary:`Replace an existing ${u} record with a new payload.`}),s.ApiBody({description:"Payload for replace a existing record of "+u,schema:{type:"array",items:{$ref:s.getSchemaPath(t)}}}),s.ApiOkResponse({description:t+" record replaced successfully."}),s.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),s.ApiBadRequestResponse({description:"Payload validation failed."}),n.__param(0,T()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Array]),n.__metadata("design:returntype",Promise)],A.prototype,"updateAll",null),n.__decorate([D(t,"PUT",f),v(g),s.ApiOperation({summary:`Replace an existing ${u} record with a new payload.`}),s.ApiBody({description:"Payload for replace a existing record of "+u,schema:{$ref:s.getSchemaPath(t)}}),s.ApiOkResponse({description:t+" record replaced successfully."}),s.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),s.ApiBadRequestResponse({description:"Payload validation failed."}),n.__param(0,$(g)),n.__param(1,T()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object,Object]),n.__metadata("design:returntype",Promise)],A.prototype,"update",null),n.__decorate([D(t,"DELETE","bulk"),v(g),s.ApiOperation({summary:`Retrieve a ${u} record by id.`}),s.ApiQuery({name:"ids",required:!0,type:"array"}),s.ApiOkResponse({description:u+" retrieved successfully."}),s.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),n.__param(0,a.Query("ids")),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Array]),n.__metadata("design:returntype",Promise)],A.prototype,"deleteAll",null),n.__decorate([D(t,"DELETE",f),v(g),s.ApiOperation({summary:`Delete a ${u} record by id.`}),s.ApiOkResponse({description:u+" record deleted successfully."}),s.ApiNotFoundResponse({description:`No ${u} record matches the provided identifier.`}),n.__param(0,$(g)),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object]),n.__metadata("design:returntype",Promise)],A.prototype,"delete",null),A=n.__decorate([a.Controller(l),s.ApiTags(u),s.ApiExtraModels(t),k(t),n.__metadata("design:paramtypes",[e.DecafRequestContext])],A),A}static getRouteParametersFromModel(e){const r=o.Model.pk(e),a=t.Metadata.get(e,t.Metadata.key(d.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("")}}}var B,L;e.DecafRequestHandlerInterceptor=class{constructor(e){this.executor=e}async intercept(e,t){const r=e.switchToHttp().getRequest(),a=e.switchToHttp().getResponse();return await this.executor.exec(r,a),t.handle()}},e.DecafRequestHandlerInterceptor=n.__decorate([a.Injectable({scope:a.Scope.REQUEST}),n.__metadata("design:paramtypes",[e.DecafHandlerExecutor])],e.DecafRequestHandlerInterceptor),e.DecafModelModule=class{static{B=this}static{this.log=p.Logging.for(B.name)}static createModelServices(e){return e.map(e=>({provide:e.name+"Service",useFactory:()=>i.ModelService.forModel(e)}))}static forRoot(t,r={}){const a=this.log.for(this.forRoot);a.info("Generating controllers for flavour...");const o=i.Adapter.models(t);let s=[];r.autoServices&&(a.info("Auto-services enabled. Initializing service generation."),s=this.createModelServices(o),a.info(`Auto-services completed. ${s.length} services initialized.`));const n=o.map(N.create);return a.info(`Generated ${n.length} controllers`),{module:B,controllers:n,providers:[{provide:_,useFactory:()=>r.handlers?.map(e=>(a.info("Registered request handler: "+e.name),new e))??[]},e.DecafRequestContext,e.DecafHandlerExecutor,{provide:c.APP_INTERCEPTOR,useClass:e.DecafRequestHandlerInterceptor},...s]}}},e.DecafModelModule=B=n.__decorate([a.Module({})],e.DecafModelModule),e.DecafModule=L=class{static async forRootAsync(t){const{autoControllers:r,autoServices:a,handlers:o}=t,i=(await O.createAdapter(t)).flavour,s=[O.forRoot(t)];return r&&s.push(e.DecafModelModule.forRoot(i,{autoServices:a,handlers:o})),{module:L,imports:s}}},e.DecafModule=L=n.__decorate([a.Module({})],e.DecafModule);class K extends i.ForbiddenError{constructor(e){super(e,K.name)}}e.DecafExceptionFilter=class{catch(e,t){const r=t.switchToHttp(),a=r.getResponse(),o=r.getRequest(),i="production"===p.LoggedEnvironment.env;e instanceof d.BaseError||(e=new d.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=n.__decorate([a.Catch()],e.DecafExceptionFilter);const H={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 U{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||H.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=m.join(this.options.assetsPath||"",e),a=l.readFileSync(r,{encoding:"base64"});return t?"data:image/png;base64,"+a:a}}class G{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 s.DocumentBuilder).setTitle(this.options.title).setDescription(e).setVersion(this.options.version||"0.0.1").addBearerAuth(this.options.auth||H.auth).build();return s.SwaggerModule.createDocument(this.app,t,{extraModels:this.options.extraModels||[]})}setupSwagger(){const e=this.createDocument(),t=new U({title:this.options.title,path:this.options.path||H.path,persistAuthorization:this.options.persistAuthorization??!0,assetsPath:this.options.assetsPath,faviconPath:this.options.faviconFilePath,topbarIconPath:this.options.topbarIconFilePath,topbarBgColor:this.options.topbarBgColor});s.SwaggerModule.setup(this.options.path||H.path,this.app,e,{...t.getCustomOptions()})}}const Q="##VERSION##",z="##PACKAGE##";t.Metadata.registerLibrary(z,Q),e.AUTH_HANDLER=b,e.AUTH_META_KEY=P,e.ApiOperationFromModel=D,e.ApiParamsFromModel=v,e.Auth=k,e.AuthRole=E,e.BulkApiOperationFromModel=(e,r,o)=>{const i={GET:[d.BulkCrudOperationKeys.READ_ALL,a.Get],POST:[d.BulkCrudOperationKeys.CREATE_ALL,a.Post],PUT:[d.BulkCrudOperationKeys.UPDATE_ALL,a.Put],PATCH:[d.BulkCrudOperationKeys.UPDATE_ALL,a.Patch],DELETE:[d.BulkCrudOperationKeys.DELETE_ALL,a.Delete]},[n,c]=i[r];return R(e,n)?t.apply(s.ApiExcludeEndpoint()):t.apply(c(o))},e.CorsError=K,e.DECAF_ADAPTER_ID=g,e.DECAF_ADAPTER_OPTIONS=A,e.DECAF_HANDLERS=_,e.DECAF_MODULE_OPTIONS=y,e.DECAF_ROUTE=f,e.DecafBody=T,e.DecafParams=$,e.FromModelController=N,e.HttpVerbToDecorator=I,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 K(`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 G(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=z,e.Roles=e=>t.metadata(E,e),e.SwaggerBuilder=G,e.UseDecafFilter=()=>a.UseFilters(new e.DecafExceptionFilter),e.VERSION=Q,e.isOperationBlocked=R,e.repoForModel=e=>{const t=o.Model.get(e);if(!t)throw new d.InternalError("Failed to find repository for "+e);return i.Repository.forModel(t)},e.route=(e,r)=>{const a=f;return t.Decoration.for(a).define({decorator:()=>(o,i,s)=>{const n={path:r,httpMethod:e,handler:s};return t.apply(t.methodMetadata(t.Metadata.key(a,i),n))(o,i,s)},args:[]}).apply()}},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decoration"),require("@decaf-ts/injectable-decorators"),require("@nestjs/common"),require("@decaf-ts/decorator-validation"),require("@decaf-ts/core"),require("@nestjs/swagger"),require("tslib"),require("@nestjs/core"),require("@decaf-ts/logging"),require("@decaf-ts/db-decorators"),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","@nestjs/swagger","tslib","@nestjs/core","@decaf-ts/logging","@decaf-ts/db-decorators","fs","path"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["for-nest"]={},e.decafTsDecoration,e.decafTsInjectableDecorators,e.nestjsCommon,e.decafTsDecoratorValidation,e.decafTsCore,e.nestjsSwagger,e.tslib,e.nestjsCore,e.decafTsLogging,e.decafTsDbDecorators,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/decoration.ts","../src/constants.ts","../src/core-module.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/decorators.ts","../src/interceptors/AuthInterceptor.ts","../src/request/DecafRequestContext.ts","../src/request/DecafHandlerExecutor.ts","../src/decaf-model/utils.ts","../src/decaf-model/types.ts","../src/decaf-model/FromModelController.ts","../src/interceptors/DecafRequestHandlerInterceptor.ts","../src/decaf-model/DecafModelModule.ts","../src/module.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/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],"names":["Decoration","for","InjectablesKeys","INJECTABLE","extend","decorator","category","cfg","Object","assign","DefaultInjectablesConfig","Injectable","scope","singleton","Scope","DEFAULT","REQUEST","durable","undefined","apply","INJECT","target","propertyKey","descriptor","Inject","ValidationKeys","REQUIRED","ApiProperty","required","MAX","max","maximum","MIN","min","minimum","MAX_LENGTH","maxLength","MIN_LENGTH","minLength","LIST","clazz","c","Array","isArray","type","PATTERN","pat","pattern","source","PersistenceKeys","COLUMN","name","DecorationKeys","DESCRIPTION","description","DECAF_MODULE_OPTIONS","DECAF_ADAPTER_ID","DECAF_HANDLERS","Symbol","DECAF_ADAPTER_OPTIONS","AUTH_HANDLER","AUTH_META_KEY","AuthRole","DecafCoreModule","this","_adapterInstance","log","_logger","Logging","DecafCoreModule_1","constructor","options","moduleRef","createAdapter","info","adapter","conf","alias","initialize","e","error","getAdapterInstance","forRoot","typeOrmModuleOptions","provide","useValue","useFactory","async","opts","inject","module","providers","exports","onApplicationShutdown","get","shutdown","isOperationBlocked","ModelConstructor","op","handler","args","Metadata","OperationKeys","REFLECT","BLOCK","ApiOperationFromModel","verb","path","httpToCrud","GET","READ","Get","POST","CREATE","Post","PUT","UPDATE","Put","PATCH","Patch","DELETE","Delete","crudOp","HttpMethodDecorator","ApiExcludeEndpoint","ApiParamsFromModel","props","decorators","map","p","ApiParamDec","String","applyDecorators","__decorate","Global","Module","__param","ModuleRef","DecafBody","createParamDecorator","data","ctx","body","switchToHttp","getRequest","controller","getClass","ModelConstr","InternalServerErrorException","item","OrderedParams","order","req","original","params","orderList","keys","ordered","k","raw","valuesInOrder","keysInOrder","DecafParams","Auth","model","resource","SetMetadata","UseInterceptors","AuthInterceptor","reflector","authHandler","intercept","next","modelName","getHandler","authorize","handle","Optional","Reflector","DecafRequestContext","cache","Map","set","key","value","DecafHandlerExecutor","handlers","context","exec","res","apiParamSpec","getApiDecorators","methodName","routePath","apiPathParams","split","filter","startsWith","slice","extractPathParams","method","ApiParam","ApiOperation","summary","ApiOkResponse","ApiNoContentResponse","Query","applyApiDecorators","proto","prototype","forEach","d","index","createRouteHandler","pathParams","queryParams","debug","JSON","stringify","direction","limit","offset","persistence","ModelService","statement","Error","resolvePersistenceMethod","defineRouteMethod","ControllerClass","defineProperty","writable","getOwnPropertyDescriptor","AbstractQueryController","LoggedClass","clientContext","super","FromModelController","getPersistence","ModelClazz","forModel","Repository","createQueryRoutesFromRepository","prefix","QUERY","class","methodQueries","QueryController","_persistence","adapterOptions","objValues","entries","fields","f","segment","trim","join","create","tableName","Model","toKebabCase","modelClazzName","getPK","apiProperties","getRouteParametersFromModel","BaseController","repo","DynamicModelController","pk","listBy","details","paginateBy","findOneBy","findBy","bookmark","a","parseInt","PreparedStatementKeys","FIND_BY","LIST_BY","push","PAGE_BY","FIND_ONE_BY","createAll","created","verbose","readAll","ids","read","length","routeParams","id","ValidationError","updateAll","updated","update","deleteAll","delete","del","ApiQuery","enum","OrderDirection","Param","ApiNotFoundResponse","ApiBody","schema","items","$ref","getSchemaPath","ApiCreatedResponse","ApiBadRequestResponse","ApiUnprocessableEntityResponse","Controller","ApiTags","ApiExtraModels","composed","DBKeys","COMPOSED","composedKeys","uniqueKeys","from","Set","separator","DecafRequestHandlerInterceptor","executor","getResponse","DecafModelModule","DecafModelModule_1","createModelServices","models","flavour","trackedModels","Adapter","modelServices","autoServices","controllers","H","APP_INTERCEPTOR","useClass","DecafModule","DecafModule_1","forRootAsync","autoControllers","imports","CorsError","ForbiddenError","msg","DecafExceptionFilter","exception","host","response","request","isProduction","LoggedEnvironment","env","BaseError","InternalError","message","status","code","json","timestamp","Date","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","VERSION","PACKAGE_NAME","registerLibrary","BulkCrudOperationKeys","READ_ALL","CREATE_ALL","UPDATE_ALL","DELETE_ALL","logger","Logger","enableLogger","customLogger","useLogger","enableCors","origins","allowMethods","allowedOrigins","o","toLowerCase","corsOptions","origin","callback","includes","credentials","methods","useHelmet","helmet","require","use","warn","useGlobalPipes","pipes","useGlobalFilters","filters","useGlobalInterceptors","interceptors","start","port","Number","process","PORT","listen","then","getUrl","roles","metadata","UseFilters","m"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"for-nest.cjs","sources":["../src/decoration.ts","../src/constants.ts","../src/core-module.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/decaf-model/decorators/decorators.ts","../src/interceptors/AuthInterceptor.ts","../src/request/DecafRequestContext.ts","../src/request/DecafHandlerExecutor.ts","../src/decaf-model/utils.ts","../src/decaf-model/types.ts","../src/decaf-model/FromModelController.ts","../src/interceptors/DecafRequestHandlerInterceptor.ts","../src/decaf-model/DecafModelModule.ts","../src/module.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/index.ts","../src/factory/NestBootstraper.ts","../src/factory/exceptions/decorators.ts","../src/utils.ts","../src/decaf-model/decorators/route.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["Decoration","for","InjectablesKeys","INJECTABLE","extend","decorator","category","cfg","Object","assign","DefaultInjectablesConfig","Injectable","scope","singleton","Scope","DEFAULT","REQUEST","durable","undefined","apply","INJECT","target","propertyKey","descriptor","Inject","ValidationKeys","REQUIRED","ApiProperty","required","MAX","max","maximum","MIN","min","minimum","MAX_LENGTH","maxLength","MIN_LENGTH","minLength","LIST","clazz","c","Array","isArray","type","PATTERN","pat","pattern","source","PersistenceKeys","COLUMN","name","DecorationKeys","DESCRIPTION","description","DECAF_MODULE_OPTIONS","DECAF_ADAPTER_ID","DECAF_ROUTE","DECAF_HANDLERS","Symbol","DECAF_ADAPTER_OPTIONS","AUTH_HANDLER","AUTH_META_KEY","AuthRole","DecafCoreModule","this","_adapterInstance","log","_logger","Logging","DecafCoreModule_1","constructor","options","moduleRef","createAdapter","info","adapter","conf","alias","initialize","e","error","getAdapterInstance","forRoot","typeOrmModuleOptions","provide","useValue","useFactory","async","opts","inject","module","providers","exports","onApplicationShutdown","get","shutdown","isOperationBlocked","ModelConstructor","op","handler","args","Metadata","OperationKeys","REFLECT","BLOCK","ApiOperationFromModel","verb","path","httpToCrud","GET","READ","Get","POST","CREATE","Post","PUT","UPDATE","Put","PATCH","Patch","DELETE","Delete","crudOp","HttpMethodDecorator","ApiExcludeEndpoint","ApiParamsFromModel","props","decorators","map","p","ApiParamDec","String","applyDecorators","__decorate","Global","Module","__param","ModuleRef","DecafBody","createParamDecorator","data","ctx","body","switchToHttp","getRequest","controller","getClass","ModelConstr","InternalServerErrorException","item","OrderedParams","order","req","original","params","orderList","keys","ordered","k","raw","valuesInOrder","keysInOrder","DecafParams","HttpVerbToDecorator","Error","Auth","model","resource","SetMetadata","UseInterceptors","AuthInterceptor","reflector","authHandler","intercept","next","modelName","getHandler","authorize","handle","Optional","Reflector","DecafRequestContext","cache","Map","set","key","value","DecafHandlerExecutor","handlers","context","exec","res","apiParamSpec","getApiDecorators","methodName","routePath","httpVerb","includeQueryParams","NestHttpRouteDec","apiPathParams","split","filter","startsWith","slice","extractPathParams","swaggerQueryParams","push","ApiQuery","enum","OrderDirection","method","ApiParam","ApiOperation","summary","ApiOkResponse","ApiNoContentResponse","Query","applyApiDecorators","proto","prototype","forEach","d","index","createRouteHandler","pathParams","queryParams","debug","JSON","stringify","direction","limit","offset","persistence","ModelService","statement","resolvePersistenceMethod","defineRouteMethod","ControllerClass","defineProperty","writable","getOwnPropertyDescriptor","AbstractQueryController","LoggedClass","clientContext","super","FromModelController","getPersistence","ModelClazz","getService","Repository","forModel","createQueryRoutesFromRepository","prefix","QUERY","repo","class","queryMethods","routeMethods","QueryController","_persistence","adapterOptions","entries","replace","segment","trim","join","message","httpMethod","objValues","fields","f","create","tableName","Model","toKebabCase","modelClazzName","getPK","apiProperties","getRouteParametersFromModel","BaseController","DynamicModelController","pk","listBy","details","paginateBy","findOneBy","findBy","bookmark","a","parseInt","PreparedStatementKeys","FIND_BY","LIST_BY","PAGE_BY","FIND_ONE_BY","createAll","created","verbose","readAll","ids","read","length","routeParams","id","ValidationError","updateAll","updated","update","deleteAll","delete","del","Param","ApiNotFoundResponse","ApiBody","schema","items","$ref","getSchemaPath","ApiCreatedResponse","ApiBadRequestResponse","ApiUnprocessableEntityResponse","Controller","ApiTags","ApiExtraModels","composed","DBKeys","COMPOSED","composedKeys","uniqueKeys","from","Set","separator","DecafRequestHandlerInterceptor","executor","getResponse","DecafModelModule","DecafModelModule_1","createModelServices","models","flavour","trackedModels","Adapter","modelServices","autoServices","controllers","H","APP_INTERCEPTOR","useClass","DecafModule","DecafModule_1","forRootAsync","autoControllers","imports","CorsError","ForbiddenError","msg","DecafExceptionFilter","exception","host","response","request","isProduction","LoggedEnvironment","env","BaseError","InternalError","status","code","json","timestamp","Date","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","VERSION","PACKAGE_NAME","registerLibrary","BulkCrudOperationKeys","READ_ALL","CREATE_ALL","UPDATE_ALL","DELETE_ALL","logger","Logger","enableLogger","customLogger","useLogger","enableCors","origins","allowMethods","allowedOrigins","o","toLowerCase","corsOptions","origin","callback","includes","credentials","methods","useHelmet","helmet","require","use","warn","useGlobalPipes","pipes","useGlobalFilters","filters","useGlobalInterceptors","interceptors","start","port","Number","process","PORT","listen","then","getUrl","roles","metadata","UseFilters","m","define","obj","prop","methodMetadata"],"mappings":"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"}
|
package/dist/for-nest.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Decoration as e,DecorationKeys as t,Metadata as r,apply as i,metadata as o}from"@decaf-ts/decoration";import{InjectablesKeys as s,DefaultInjectablesConfig as n}from"@decaf-ts/injectable-decorators";import{Injectable as a,Scope as c,Inject as p,Global as d,Module as l,Get as h,Post as u,Put as m,Patch as y,Delete as g,applyDecorators as f,createParamDecorator as w,InternalServerErrorException as b,Optional as v,SetMetadata as A,UseInterceptors as $,Query as P,Param as E,Controller as T,Catch as O,UseFilters as S,Logger as R}from"@nestjs/common";import{ValidationKeys as k,Model as F}from"@decaf-ts/decorator-validation";import{PersistenceKeys as I,ModelService as C,Repository as x,PreparedStatementKeys as j,OrderDirection as L,Adapter as D,ForbiddenError as N}from"@decaf-ts/core";import{ApiProperty as B,ApiExcludeEndpoint as _,ApiParam as q,ApiOperation as U,ApiOkResponse as G,ApiNoContentResponse as z,ApiQuery as M,ApiNotFoundResponse as H,ApiBody as Q,getSchemaPath as Y,ApiCreatedResponse as J,ApiBadRequestResponse as K,ApiUnprocessableEntityResponse as V,ApiTags as W,ApiExtraModels as X,DocumentBuilder as Z,SwaggerModule as ee}from"@nestjs/swagger";import{__decorate as te,__param as re,__metadata as ie}from"tslib";import{ModuleRef as oe,Reflector as se,APP_INTERCEPTOR as ne}from"@nestjs/core";import{Logging as ae,LoggedClass as ce,toKebabCase as pe,LoggedEnvironment as de}from"@decaf-ts/logging";import{OperationKeys as le,BulkCrudOperationKeys as he,ValidationError as ue,DBKeys as me,InternalError as ye,BaseError as ge}from"@decaf-ts/db-decorators";import{readFileSync as fe}from"fs";import*as we from"path";e.for(s.INJECTABLE).extend({decorator:(e,t)=>(t=t||("object"==typeof e?Object.assign(e,n):n),a({scope:t.singleton?c.DEFAULT:c.REQUEST,durable:!t.singleton||void 0}))}).apply(),e.for(s.INJECT).extend({decorator:(e,t)=>(t,r,i)=>p(e||t)(t,r,i)}).apply(),e.for(k.REQUIRED).extend(B({required:!0})).apply(),e.for(k.MAX).extend({decorator:e=>B({maximum:e})}).apply(),e.for(k.MIN).extend({decorator:e=>B({minimum:e})}).apply(),e.for(k.MAX_LENGTH).extend({decorator:e=>B({maxLength:e})}).apply(),e.for(k.MIN_LENGTH).extend({decorator:e=>B({minLength:e})}).apply(),e.for(k.LIST).extend({decorator:e=>{const t=Array.isArray(e)?e[0]:e;return B({type:[t]})}}).apply(),e.for(k.PATTERN).extend({decorator:e=>B({pattern:"string"==typeof e?e:e.source})}).apply(),e.for(I.COLUMN).extend({decorator:e=>B({name:e})}).apply(),e.for(t.DESCRIPTION).extend({decorator:e=>B({description:e})}).apply();const be="DecafModuleOptions",ve="DecafAdapter",Ae=Symbol("DecafHandlers"),$e=Symbol("DecafAdapterForOptions"),Pe=Symbol("AUTH_HANDLER"),Ee="auth:meta",Te="AuthRole";var Oe;let Se=class{static{Oe=this}static{this._adapterInstance=null}static get log(){return this._logger||(this._logger=ae.for(Oe)),this._logger}constructor(e,t){this.options=e,this.moduleRef=t}static async createAdapter(e){if(!this._adapterInstance){const t=this.log.for(this.createAdapter);t.info("Creating adapter instance..."),this._adapterInstance=new e.adapter(e.conf,e.alias);try{await this._adapterInstance.initialize()}catch(e){throw t.error("Failed to initialized adapter"),e}t.info("Adapter instance created successfully!")}return this._adapterInstance}static getAdapterInstance(){return this._adapterInstance}static forRoot(e){const t={provide:be,useValue:e},r={useFactory:async e=>Oe.createAdapter(e),provide:ve,durable:!0,scope:c.DEFAULT,inject:[be]};return{module:Oe,providers:[r,t],exports:[r]}}async onApplicationShutdown(){const e=Oe.log.for(this.onApplicationShutdown),t=this.moduleRef.get(ve);try{t&&(e.info("Shutting down"),await t.shutdown(),Oe._adapterInstance=null)}catch(t){e.error("Failed to shutdown application",t)}}};function Re(e,t){const{handler:i,args:o}=r.get(e,le.REFLECT+le.BLOCK)||{};return!!i&&(i(...o,t)??!1)}function ke(e,t,r){const o={GET:[le.READ,h],POST:[le.CREATE,u],PUT:[le.UPDATE,m],PATCH:[le.UPDATE,y],DELETE:[le.DELETE,g]},[s,n]=o[t];return Re(e,s)?i(_()):i(n(r))}function Fe(e,t,r){const o={GET:[he.READ_ALL,h],POST:[he.CREATE_ALL,u],PUT:[he.UPDATE_ALL,m],PATCH:[he.UPDATE_ALL,y],DELETE:[he.DELETE_ALL,g]},[s,n]=o[t];return Re(e,s)?i(_()):i(n(r))}function Ie(e=[]){const t=e.map(e=>q({name:e.name,description:e.description??"Path parameter: "+e.name,required:e.required??!0,type:e.type??String}));return f(...t)}Se=Oe=te([d(),l({}),re(0,p(be)),ie("design:paramtypes",[Object,oe])],Se);const Ce=w((e,t)=>{const r=t.switchToHttp().getRequest().body,i=t.getClass(),o=i.clazz;if(!o)throw new b(`ModelConstructor not found on controller ${i.name}. Ensure the controller was created via FromModelController.`);return r?Array.isArray(r)?r.map(e=>new o(e)):new o(r):r}),xe=w((e,t)=>{const r=t.switchToHttp().getRequest(),i=r?.params??{},o=e??Object.keys(i),s=o.map(e=>i[e]);return{raw:i,valuesInOrder:s,keysInOrder:o}});function je(e=[]){const t=e.map(e=>e.name);return xe(t)}let Le=class{constructor(e,t){this.reflector=e,this.authHandler=t}async intercept(e,t){const r=this.reflector.get(Ee,e.getHandler())??this.reflector.get(Ee,e.getClass());return r&&this.authHandler&&await this.authHandler.authorize(e,r),t.handle()}};function De(e){const t="string"==typeof e?e:e.name;return f(A(Ee,t),$(Le))}Le=te([a(),re(1,v()),re(1,p(Pe)),ie("design:paramtypes",[se,Object])],Le);const Ne=e=>o(Te,e);let Be=class{constructor(){this.cache=new Map}set(e,t){this.cache.set(e,t)}get(e){return this.cache.get(e)}};Be=te([a({scope:c.REQUEST})],Be);let _e=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=te([a({scope:c.REQUEST}),re(0,p(Ae)),ie("design:paramtypes",[Array,Be])],_e);const qe=e=>({name:e,description:e+" parameter for the query",required:!0,type:String});function Ue(e,t){const r=(e=>e.split("/").filter(e=>e.startsWith(":")).map(e=>e.slice(1)))(t).map(qe);return{method:[h(t),...r.map(q),U({summary:`Retrieve records using custom query "${e}".`}),G({description:"Results successfully retrieved."}),z({description:"No content returned by the query."})],params:[je(r),P()]}}function Ge(e,t,r,i){const o=e?.prototype??e;i.method.forEach(e=>e(o,t,r)),i.params?.forEach((e,r)=>e(o,t,r))}function ze(e){return async function(t,r){const i=this.log.for(e);try{i.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 C)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 i.error(`Custom query "${e}" failed`,t),t}}}function Me(e,t,r){return Object.defineProperty(e.prototype||e,t,{value:r,writable:!1}),Object.getOwnPropertyDescriptor(e.prototype||e,t)}class He extends ce{constructor(e){super(),this.clientContext=e}get persistence(){throw Error("Not implemented")}}class Qe{static{this.log=ae.for(Qe.name)}static getPersistence(e){try{return C.forModel(e)}catch(t){return x.forModel(e)}}static createQueryRoutesFromRepository(e,t=I.QUERY){const i=e.class,o=r.get(e.constructor,r.key(I.QUERY))??{};class s extends He{constructor(e){super(e),this._persistence=Qe.getPersistence(i)}get persistence(){const e=this.clientContext.get($e);return e?this._persistence.for(e):this._persistence}}for(const[e,r]of Object.entries(o)){const i=[t,e,...(r.fields??[]).map(e=>":"+e)].filter(e=>e&&e.trim()).join("/"),o=Me(s,e,ze(e));o&&Ge(s,e,o,Ue(e,i))}return s}static create(e){const t=Qe.log.for(Qe.create),r=F.tableName(e),i=pe(r),o=e.name,s=Qe.getPersistence(e),{description:n,getPK:a,apiProperties:c,path:p}=Qe.getRouteParametersFromModel(e);t.debug("Creating controller for model: "+o);const d=Qe.createQueryRoutesFromRepository(s instanceof C?s.repo:s);let l=class extends d{static{this.clazz=e}constructor(r){super(r),this.pk=F.pk(e),t.info(`Registering dynamic controller for model: ${o} route: /${i}`)}async listBy(e,t){return this.persistence.listBy(e,t.direction)}async paginateBy(e,t){return this.persistence.paginateBy(e,t.direction,t)}async findOneBy(e,t){return this.persistence.findOneBy(e,t)}async findBy(e,t,r){return this.persistence.findBy(e,t)}async statement(e,t,r){const{direction:i,offset:o,limit:s,bookmark:n}=r;switch(t=t.map(e=>("string"==typeof e?parseInt(e):e)||e),e){case j.FIND_BY:break;case j.LIST_BY:t.push(i);break;case j.PAGE_BY:t=[t[0],i,{limit:s,offset:o,bookmark:n}];case j.FIND_ONE_BY:}return this.persistence.statement(e,...t)}async createAll(t){const r=this.log.for(this.createAll);let i;r.verbose("creating new "+o);try{i=await this.persistence.createAll(t.map(t=>new e(t)))}catch(e){throw r.error("Failed to create new "+o,e),e}return r.info(`created new ${o} with id ${i[this.pk]}`),i}async create(e){const t=this.log.for(this.create);let r;t.verbose("creating new "+o);try{r=await this.persistence.create(e)}catch(e){throw t.error("Failed to create new "+o,e),e}return t.info(`created new ${o} with id ${r[this.pk]}`),r}async readAll(e){const t=this.log.for(this.readAll);let r;try{t.debug(`reading ${e.length} ${o}: ${e}`),r=await this.persistence.readAll(e)}catch(r){throw t.error(`Failed to ${o} with id ${e}`,r),r}return t.info(`read ${r.length} ${o}`),r}async read(e){const t=a(...e.valuesInOrder);if(void 0===t)throw new ue(`No ${this.pk} provided`);const r=this.log.for(this.read);let i;try{r.debug(`reading ${o} with ${this.pk} ${t}`),i=await this.persistence.read(t)}catch(e){throw r.error(`Failed to read ${o} with id ${t}`,e),e}return r.info(`read ${o} with id ${i[this.pk]}`),i}async updateAll(e){const t=this.log.for(this.updateAll);let r;try{t.info(`updating ${e.length} ${o}`),r=await this.persistence.updateAll(e)}catch(e){throw t.error(e),e}return r}async update(t,r){const i=this.log.for(this.update),s=a(...t.valuesInOrder);if(void 0===s)throw new ue(`No ${this.pk} provided`);let n;try{i.info(`updating ${o} with ${this.pk} ${s}`),n=await this.persistence.update(new e({...r,[this.pk]:s}))}catch(e){throw i.error(e),e}return n}async deleteAll(e){const t=this.log.for(this.deleteAll);let r;try{t.debug(`deleting ${e.length} ${o}: ${e}`),r=await this.persistence.deleteAll(e)}catch(r){throw t.error(`Failed to delete ${o} with id ${e}`,r),r}return t.info(`deleted ${r.length} ${o}`),r}async delete(e){const t=this.log.for(this.delete),r=a(...e.valuesInOrder);if(void 0===r)throw new ue(`No ${this.pk} provided`);let i;try{t.debug(`deleting ${o} with ${this.pk} ${r}`),i=await this.persistence.delete(r)}catch(e){throw t.error(`Failed to delete ${o} with id ${r}`,e),e}return t.info(`deleted ${o} with id ${r}`),i}};return te([ke(e,"GET","listBy/:key"),U({summary:`Retrieve ${o} records by query.`}),q({name:"key",description:"the model key to sort by"}),M({name:"direction",required:!0,enum:L}),G({description:o+" listed successfully."}),re(1,P()),ie("design:type",Function),ie("design:paramtypes",[String,Object]),ie("design:returntype",Promise)],l.prototype,"listBy",null),te([ke(e,"GET","paginateBy/:key/:page"),U({summary:`Retrieve ${o} records by query.`}),q({name:"key",description:"the model key to sort by"}),q({name:"page",description:"the page to retrieve or the bookmark"}),M({name:"direction",required:!0,enum:L,description:"the sort order"}),M({name:"limit",required:!0,description:"the page size"}),M({name:"offset",description:"the bookmark when necessary"}),G({description:o+" listed paginated."}),re(0,E("key")),re(1,P()),ie("design:type",Function),ie("design:paramtypes",[String,Object]),ie("design:returntype",Promise)],l.prototype,"paginateBy",null),te([ke(e,"GET","findOneBy/:key"),U({summary:`Retrieve ${o} records by query.`}),q({name:"key",description:"the model key to sort by"}),G({description:o+" listed found."}),H({description:`No ${o} record matches the provided identifier.`}),re(0,E("key")),re(1,E("value")),ie("design:type",Function),ie("design:paramtypes",[String,Object]),ie("design:returntype",Promise)],l.prototype,"findOneBy",null),te([ke(e,"GET","findBy/:key/:value"),U({summary:`Retrieve ${o} records by query.`}),q({name:"key",description:"the model key to compare"}),q({name:"value",description:"the value to match"}),M({name:"direction",required:!0,enum:L,description:"the sort order when applicable"}),G({description:o+" listed found."}),H({description:`No ${o} record matches the provided identifier.`}),re(0,E("key")),re(1,E("value")),re(2,P()),ie("design:type",Function),ie("design:paramtypes",[String,Object,Object]),ie("design:returntype",Promise)],l.prototype,"findBy",null),te([ke(e,"GET","statement/:method/*args"),U({summary:`Executes a prepared statement on ${o}.`}),q({name:"method",description:"the prepared statement to execute"}),q({name:"args",description:"concatenated list of arguments the prepared statement can accept"}),M({name:"direction",required:!0,enum:L,description:"the sort order when applicable"}),M({name:"limit",required:!0,description:"limit or page size when applicable"}),M({name:"offset",required:!0,description:"offset or bookmark when applicable"}),G({description:o+" listed found."}),H({description:`No ${o} record matches the provided identifier.`}),re(0,E("method")),re(1,E("args")),re(2,P()),ie("design:type",Function),ie("design:paramtypes",[String,Array,Object]),ie("design:returntype",Promise)],l.prototype,"statement",null),te([ke(e,"POST","bulk"),U({summary:`Create a new ${o}.`}),Q({description:"Payload for "+o,schema:{type:"array",items:{$ref:Y(e)}}}),J({description:`x ${o} created successfully.`}),K({description:"Payload validation failed."}),V({description:"Repository rejected the provided payload."}),re(0,Ce()),ie("design:type",Function),ie("design:paramtypes",[Array]),ie("design:returntype",Promise)],l.prototype,"createAll",null),te([ke(e,"POST"),U({summary:`Create a new ${o}.`}),Q({description:"Payload for "+o,schema:{$ref:Y(e)}}),J({description:o+" created successfully."}),K({description:"Payload validation failed."}),V({description:"Repository rejected the provided payload."}),re(0,Ce()),ie("design:type",Function),ie("design:paramtypes",[Object]),ie("design:returntype",Promise)],l.prototype,"create",null),te([ke(e,"GET","bulk"),U({summary:`Retrieve a ${o} record by id.`}),M({name:"ids",required:!0,type:"array"}),G({description:o+" retrieved successfully."}),H({description:`No ${o} record matches the provided identifier.`}),re(0,P("ids")),ie("design:type",Function),ie("design:paramtypes",[Array]),ie("design:returntype",Promise)],l.prototype,"readAll",null),te([ke(e,"GET",p),Ie(c),U({summary:`Retrieve a ${o} record by id.`}),G({description:o+" retrieved successfully."}),H({description:`No ${o} record matches the provided identifier.`}),re(0,je(c)),ie("design:type",Function),ie("design:paramtypes",[Object]),ie("design:returntype",Promise)],l.prototype,"read",null),te([ke(e,"PUT","bulk"),Ie(c),U({summary:`Replace an existing ${o} record with a new payload.`}),Q({description:"Payload for replace a existing record of "+o,schema:{type:"array",items:{$ref:Y(e)}}}),G({description:e+" record replaced successfully."}),H({description:`No ${o} record matches the provided identifier.`}),K({description:"Payload validation failed."}),re(0,Ce()),ie("design:type",Function),ie("design:paramtypes",[Array]),ie("design:returntype",Promise)],l.prototype,"updateAll",null),te([ke(e,"PUT",p),Ie(c),U({summary:`Replace an existing ${o} record with a new payload.`}),Q({description:"Payload for replace a existing record of "+o,schema:{$ref:Y(e)}}),G({description:e+" record replaced successfully."}),H({description:`No ${o} record matches the provided identifier.`}),K({description:"Payload validation failed."}),re(0,je(c)),re(1,Ce()),ie("design:type",Function),ie("design:paramtypes",[Object,Object]),ie("design:returntype",Promise)],l.prototype,"update",null),te([ke(e,"DELETE","bulk"),Ie(c),U({summary:`Retrieve a ${o} record by id.`}),M({name:"ids",required:!0,type:"array"}),G({description:o+" retrieved successfully."}),H({description:`No ${o} record matches the provided identifier.`}),re(0,P("ids")),ie("design:type",Function),ie("design:paramtypes",[Array]),ie("design:returntype",Promise)],l.prototype,"deleteAll",null),te([ke(e,"DELETE",p),Ie(c),U({summary:`Delete a ${o} record by id.`}),G({description:o+" record deleted successfully."}),H({description:`No ${o} record matches the provided identifier.`}),re(0,je(c)),ie("design:type",Function),ie("design:paramtypes",[Object]),ie("design:returntype",Promise)],l.prototype,"delete",null),l=te([T(i),W(o),X(e),De(e),ie("design:paramtypes",[Be])],l),l}static getRouteParametersFromModel(e){const t=F.pk(e),i=r.get(e,r.key(me.COMPOSED,t)),o=i?.args??[],s=Array.isArray(o)&&o.length>0?Array.from(new Set([...o])):Array.from(new Set([t])),n=r.description(e);return{path:":"+s.join("/:"),description:n,apiProperties:s.map(t=>({name:t,description:r.description(e,t),required:!0,type:String})),getPK:(...e)=>i?.separator?e.join(i.separator):e.join("")}}}let Ye=class{constructor(e){this.executor=e}async intercept(e,t){const r=e.switchToHttp().getRequest(),i=e.switchToHttp().getResponse();return await this.executor.exec(r,i),t.handle()}};var Je;Ye=te([a({scope:c.REQUEST}),ie("design:paramtypes",[_e])],Ye);let Ke=class{static{Je=this}static{this.log=ae.for(Je.name)}static createModelServices(e){return e.map(e=>({provide:e.name+"Service",useFactory:()=>C.forModel(e)}))}static forRoot(e,t={}){const r=this.log.for(this.forRoot);r.info("Generating controllers for flavour...");const i=D.models(e);let o=[];t.autoServices&&(r.info("Auto-services enabled. Initializing service generation."),o=this.createModelServices(i),r.info(`Auto-services completed. ${o.length} services initialized.`));const s=i.map(Qe.create);return r.info(`Generated ${s.length} controllers`),{module:Je,controllers:s,providers:[{provide:Ae,useFactory:()=>t.handlers?.map(e=>(r.info("Registered request handler: "+e.name),new e))??[]},Be,_e,{provide:ne,useClass:Ye},...o]}}};var Ve;Ke=Je=te([l({})],Ke);let We=Ve=class{static async forRootAsync(e){const{autoControllers:t,autoServices:r,handlers:i}=e,o=(await Se.createAdapter(e)).flavour,s=[Se.forRoot(e)];return t&&s.push(Ke.forRoot(o,{autoServices:r,handlers:i})),{module:Ve,imports:s}}};function Xe(e){const t=F.get(e);if(!t)throw new ye("Failed to find repository for "+e);return x.forModel(t)}We=Ve=te([l({})],We);class Ze extends N{constructor(e){super(e,Ze.name)}}let et=class{catch(e,t){const r=t.switchToHttp(),i=r.getResponse(),o=r.getRequest(),s="production"===de.env;e instanceof ge||(e=new ye(e.message)),i.status(e.code).json({status:e.code,error:s?e.name:e.message,timestamp:(new Date).toISOString(),path:o.url,method:o.method})}};function tt(){return S(new et)}et=te([O()],et);const rt={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 it{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||rt.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=we.join(this.options.assetsPath||"",e),i=fe(r,{encoding:"base64"});return t?"data:image/png;base64,"+i:i}}class ot{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 Z).setTitle(this.options.title).setDescription(e).setVersion(this.options.version||"0.0.1").addBearerAuth(this.options.auth||rt.auth).build();return ee.createDocument(this.app,t,{extraModels:this.options.extraModels||[]})}setupSwagger(){const e=this.createDocument(),t=new it({title:this.options.title,path:this.options.path||rt.path,persistAuthorization:this.options.persistAuthorization??!0,assetsPath:this.options.assetsPath,faviconPath:this.options.faviconFilePath,topbarIconPath:this.options.topbarIconFilePath,topbarBgColor:this.options.topbarBgColor});ee.setup(this.options.path||rt.path,this.app,e,{...t.getCustomOptions()})}}class st{static get logger(){return this._logger||(this._logger=new R("NestBootstrap")),this._logger}static initialize(e){return this.app=e,this}static enableLogger(e){return this._logger=e||new R("NestBootstrap"),this.app.useLogger(this._logger),this}static enableCors(e=[],t=["GET","POST","PUT","DELETE"]){const r="*"===e?"*":e.map(e=>e.trim().toLowerCase()),i={origin:(e,t)=>e?"*"===r||Array.isArray(r)&&r.includes(e.toLowerCase())?t(null,!0):void t(new Ze(`Origin ${e} not allowed`)):t(null,!0),credentials:!0,methods:t.join(",")};return this.app.enableCors(i),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 ot(this.app,{title:e.title,description:e.description,version:e.version,path:e.path||"api",persistAuthorization:e.persistAuthorization??!0,assetsPath:e.assetsPath,faviconFilePath:e.faviconPath,topbarIconFilePath:e.topbarIconPath,topbarBgColor:e.topbarBgColor}).setupSwagger(),this}static useGlobalPipes(...e){return e.length>0&&this.app.useGlobalPipes(...e),this}static useGlobalFilters(...e){return this.app.useGlobalFilters(...e.length>0?e:[new et]),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)}})}}const nt="##VERSION##",at="##PACKAGE##";r.registerLibrary(at,nt);export{Pe as AUTH_HANDLER,Ee as AUTH_META_KEY,ke as ApiOperationFromModel,Ie as ApiParamsFromModel,De as Auth,Le as AuthInterceptor,Te as AuthRole,Fe as BulkApiOperationFromModel,Ze as CorsError,ve as DECAF_ADAPTER_ID,$e as DECAF_ADAPTER_OPTIONS,Ae as DECAF_HANDLERS,be as DECAF_MODULE_OPTIONS,Ce as DecafBody,et as DecafExceptionFilter,_e as DecafHandlerExecutor,Ke as DecafModelModule,We as DecafModule,je as DecafParams,Be as DecafRequestContext,Ye as DecafRequestHandlerInterceptor,Qe as FromModelController,st as NestBootstraper,at as PACKAGE_NAME,Ne as Roles,ot as SwaggerBuilder,tt as UseDecafFilter,nt as VERSION,Re as isOperationBlocked,Xe as repoForModel};
|
|
1
|
+
import{Decoration as e,DecorationKeys as t,Metadata as r,apply as o,methodMetadata as i,metadata as s}from"@decaf-ts/decoration";import{InjectablesKeys as n,DefaultInjectablesConfig as a}from"@decaf-ts/injectable-decorators";import{Injectable as c,Scope as p,Inject as d,Global as l,Module as h,Get as u,Post as m,Put as y,Patch as g,Delete as f,applyDecorators as w,createParamDecorator as b,InternalServerErrorException as v,Optional as A,SetMetadata as $,UseInterceptors as E,Query as P,Param as T,Controller as S,Catch as O,UseFilters as R,Logger as k}from"@nestjs/common";import{ValidationKeys as F,Model as I}from"@decaf-ts/decorator-validation";import{PersistenceKeys as C,OrderDirection as j,ModelService as x,Repository as L,PreparedStatementKeys as D,Adapter as N,ForbiddenError as B}from"@decaf-ts/core";import{ApiProperty as _,ApiExcludeEndpoint as q,ApiParam as G,ApiQuery as U,ApiOperation as z,ApiOkResponse as M,ApiNoContentResponse as H,ApiNotFoundResponse as Q,ApiBody as J,getSchemaPath as Y,ApiCreatedResponse as K,ApiBadRequestResponse as V,ApiUnprocessableEntityResponse as W,ApiTags as X,ApiExtraModels as Z,DocumentBuilder as ee,SwaggerModule as te}from"@nestjs/swagger";import{__decorate as re,__param as oe,__metadata as ie}from"tslib";import{ModuleRef as se,Reflector as ne,APP_INTERCEPTOR as ae}from"@nestjs/core";import{Logging as ce,LoggedClass as pe,toKebabCase as de,LoggedEnvironment as le}from"@decaf-ts/logging";import{OperationKeys as he,BulkCrudOperationKeys as ue,ValidationError as me,DBKeys as ye,InternalError as ge,BaseError as fe}from"@decaf-ts/db-decorators";import{readFileSync as we}from"fs";import*as be from"path";e.for(n.INJECTABLE).extend({decorator:(e,t)=>(t=t||("object"==typeof e?Object.assign(e,a):a),c({scope:t.singleton?p.DEFAULT:p.REQUEST,durable:!t.singleton||void 0}))}).apply(),e.for(n.INJECT).extend({decorator:(e,t)=>(t,r,o)=>d(e||t)(t,r,o)}).apply(),e.for(F.REQUIRED).extend(_({required:!0})).apply(),e.for(F.MAX).extend({decorator:e=>_({maximum:e})}).apply(),e.for(F.MIN).extend({decorator:e=>_({minimum:e})}).apply(),e.for(F.MAX_LENGTH).extend({decorator:e=>_({maxLength:e})}).apply(),e.for(F.MIN_LENGTH).extend({decorator:e=>_({minLength:e})}).apply(),e.for(F.LIST).extend({decorator:e=>{const t=Array.isArray(e)?e[0]:e;return _({type:[t]})}}).apply(),e.for(F.PATTERN).extend({decorator:e=>_({pattern:"string"==typeof e?e:e.source})}).apply(),e.for(C.COLUMN).extend({decorator:e=>_({name:e})}).apply(),e.for(t.DESCRIPTION).extend({decorator:e=>_({description:e})}).apply();const ve="DecafModuleOptions",Ae="DecafAdapter",$e="DecafRoute",Ee=Symbol("DecafHandlers"),Pe=Symbol("DecafAdapterForOptions"),Te=Symbol("AUTH_HANDLER"),Se="auth:meta",Oe="AuthRole";var Re;let ke=class{static{Re=this}static{this._adapterInstance=null}static get log(){return this._logger||(this._logger=ce.for(Re)),this._logger}constructor(e,t){this.options=e,this.moduleRef=t}static async createAdapter(e){if(!this._adapterInstance){const t=this.log.for(this.createAdapter);t.info("Creating adapter instance..."),this._adapterInstance=new e.adapter(e.conf,e.alias);try{await this._adapterInstance.initialize()}catch(e){throw t.error("Failed to initialized adapter"),e}t.info("Adapter instance created successfully!")}return this._adapterInstance}static getAdapterInstance(){return this._adapterInstance}static forRoot(e){const t={provide:ve,useValue:e},r={useFactory:async e=>Re.createAdapter(e),provide:Ae,durable:!0,scope:p.DEFAULT,inject:[ve]};return{module:Re,providers:[r,t],exports:[r]}}async onApplicationShutdown(){const e=Re.log.for(this.onApplicationShutdown),t=this.moduleRef.get(Ae);try{t&&(e.info("Shutting down"),await t.shutdown(),Re._adapterInstance=null)}catch(t){e.error("Failed to shutdown application",t)}}};function Fe(e,t){const{handler:o,args:i}=r.get(e,he.REFLECT+he.BLOCK)||{};return!!o&&(o(...i,t)??!1)}function Ie(e,t,r){const i={GET:[he.READ,u],POST:[he.CREATE,m],PUT:[he.UPDATE,y],PATCH:[he.UPDATE,g],DELETE:[he.DELETE,f]},[s,n]=i[t];return Fe(e,s)?o(q()):o(n(r))}function Ce(e,t,r){const i={GET:[ue.READ_ALL,u],POST:[ue.CREATE_ALL,m],PUT:[ue.UPDATE_ALL,y],PATCH:[ue.UPDATE_ALL,g],DELETE:[ue.DELETE_ALL,f]},[s,n]=i[t];return Fe(e,s)?o(q()):o(n(r))}function je(e=[]){const t=e.map(e=>G({name:e.name,description:e.description??"Path parameter: "+e.name,required:e.required??!0,type:e.type??String}));return w(...t)}ke=Re=re([l(),h({}),oe(0,d(ve)),ie("design:paramtypes",[Object,se])],ke);const xe=b((e,t)=>{const r=t.switchToHttp().getRequest().body,o=t.getClass(),i=o.clazz;if(!i)throw new v(`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}),Le=b((e,t)=>{const r=t.switchToHttp().getRequest(),o=r?.params??{},i=e??Object.keys(o),s=i.map(e=>o[e]);return{raw:o,valuesInOrder:s,keysInOrder:i}});function De(e=[]){const t=e.map(e=>e.name);return Le(t)}function Ne(e){const t={GET:u,POST:m,PUT:y,PATCH:g,DELETE:f}[e];if(!t)throw Error(`Unsupported HTTP verb "${e}". No NestJS decorator mapping was found.`);return t}function Be(t,s){const n=$e;return e.for(n).define({decorator:()=>(e,a,c)=>{const p={path:s,httpMethod:t,handler:c};return o(i(r.key(n,a),p))(e,a,c)},args:[]}).apply()}let _e=class{constructor(e,t){this.reflector=e,this.authHandler=t}async intercept(e,t){const r=this.reflector.get(Se,e.getHandler())??this.reflector.get(Se,e.getClass());return r&&this.authHandler&&await this.authHandler.authorize(e,r),t.handle()}};function qe(e){const t="string"==typeof e?e:e.name;return w($(Se,t),E(_e))}_e=re([c(),oe(1,A()),oe(1,d(Te)),ie("design:paramtypes",[ne,Object])],_e);const Ge=e=>s(Oe,e);let Ue=class{constructor(){this.cache=new Map}set(e,t){this.cache.set(e,t)}get(e){return this.cache.get(e)}};Ue=re([c({scope:p.REQUEST})],Ue);let ze=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)}};ze=re([c({scope:p.REQUEST}),oe(0,d(Ee)),ie("design:paramtypes",[Array,Ue])],ze);const Me=e=>({name:e,description:e+" parameter for the query",required:!0,type:String});function He(e,t,r,o=!1){const i=Ne(r),s=(e=>e.split("/").filter(e=>e.startsWith(":")).map(e=>e.slice(1)))(t).map(Me),n=[];return"GET"===r&&o&&n.push(U({name:"direction",required:!1,enum:j,description:"the sort order when applicable"}),U({name:"limit",required:!1,description:"limit or page size when applicable"}),U({name:"offset",required:!1,description:"offset or bookmark when applicable"})),{method:[i(t),...s.map(G),...n,z({summary:`Retrieve records using according to "${e}".`}),M({description:"Result successfully retrieved."}),H({description:"No content returned by the method."})],params:[De(s),P()]}}function Qe(e,t,r,o){const i=e?.prototype??e;o.method.forEach(e=>e(i,t,r)),o.params?.forEach((e,r)=>e(i,t,r))}function Je(e){return async function(t,r){const o=this.log.for(e);try{o.debug(`Invoking persistence method "${e}" given parameters: ${JSON.stringify(t.valuesInOrder)}`);const{direction:i,limit:s,offset:n}=r;return await((e,t,...r)=>{if(e instanceof x)return"function"==typeof e[t]?e[t](...r):e.statement(t,...r);if("function"==typeof e[t])return e[t](...r);throw Error(`Persistence method "${t}" not found on ${e?.constructor?.name}`)})(this.persistence,e,...t.valuesInOrder,i,s,n)}catch(t){throw o.error(`Custom query "${e}" failed`,t),t}}}function Ye(e,t,r){return Object.defineProperty(e.prototype||e,t,{value:r,writable:!1}),Object.getOwnPropertyDescriptor(e.prototype||e,t)}class Ke extends pe{constructor(e){super(),this.clientContext=e}get persistence(){throw Error("Not implemented")}}class Ve{static{this.log=ce.for(Ve.name)}static getPersistence(e){try{return x.getService(e)}catch(t){return L.forModel(e)}}static createQueryRoutesFromRepository(e,t=C.QUERY){const o=Ve.log.for(Ve.createQueryRoutesFromRepository),i=e instanceof x?e.repo:e,s=i.class,n=r.get(i.constructor,r.key(C.QUERY))??{},a=r.get(e.constructor,r.key($e))??{};class c extends Ke{constructor(e){super(e),this._persistence=Ve.getPersistence(s)}get persistence(){const e=this.clientContext.get(Pe);return e?this._persistence.for(e):this._persistence}}for(const[e,t]of Object.entries(a)){const r=[t.path.replace(/^\/+|\/+$/g,"")].filter(e=>e&&e.trim()).join("/"),i=Je(e);if(!i){const t=`Invalid or missing handler for model ${s.name} on decorated method ${e}`;throw o.error(t),Error(t)}const n=Ye(c,e,i);n&&Qe(c,e,n,He(e,r,t.httpMethod))}for(const[e,r]of Object.entries(n)){const o=[t,e,...(r.fields??[]).map(e=>":"+e)].filter(e=>e&&e.trim()).join("/"),i=Ye(c,e,Je(e));i&&Qe(c,e,i,He(e,o,"GET",!0))}return c}static create(e){const t=Ve.log.for(Ve.create),r=I.tableName(e),o=de(r),i=e.name,s=Ve.getPersistence(e),{description:n,getPK:a,apiProperties:c,path:p}=Ve.getRouteParametersFromModel(e);t.debug("Creating controller for model: "+i);const d=Ve.createQueryRoutesFromRepository(s);let l=class extends d{static{this.clazz=e}constructor(r){super(r),this.pk=I.pk(e),t.info(`Registering dynamic controller for model: ${i} route: /${o}`)}async listBy(e,t){return this.persistence.listBy(e,t.direction)}async paginateBy(e,t){return this.persistence.paginateBy(e,t.direction,t)}async findOneBy(e,t){return this.persistence.findOneBy(e,t)}async findBy(e,t,r){return this.persistence.findBy(e,t)}async statement(e,t,r){const{direction:o,offset:i,limit:s,bookmark:n}=r;switch(t=t.map(e=>("string"==typeof e?parseInt(e):e)||e),e){case D.FIND_BY:break;case D.LIST_BY:t.push(o);break;case D.PAGE_BY:t=[t[0],o,{limit:s,offset:i,bookmark:n}];case D.FIND_ONE_BY:}return this.persistence.statement(e,...t)}async createAll(t){const r=this.log.for(this.createAll);let o;r.verbose("creating new "+i);try{o=await this.persistence.createAll(t.map(t=>new e(t)))}catch(e){throw r.error("Failed to create new "+i,e),e}return r.info(`created new ${i} with id ${o[this.pk]}`),o}async create(e){const t=this.log.for(this.create);let r;t.verbose("creating new "+i);try{r=await this.persistence.create(e)}catch(e){throw t.error("Failed to create new "+i,e),e}return t.info(`created new ${i} with id ${r[this.pk]}`),r}async readAll(e){const t=this.log.for(this.readAll);let r;try{t.debug(`reading ${e.length} ${i}: ${e}`),r=await this.persistence.readAll(e)}catch(r){throw t.error(`Failed to ${i} with id ${e}`,r),r}return t.info(`read ${r.length} ${i}`),r}async read(e){const t=a(...e.valuesInOrder);if(void 0===t)throw new me(`No ${this.pk} provided`);const r=this.log.for(this.read);let o;try{r.debug(`reading ${i} with ${this.pk} ${t}`),o=await this.persistence.read(t)}catch(e){throw r.error(`Failed to read ${i} with id ${t}`,e),e}return r.info(`read ${i} with id ${o[this.pk]}`),o}async updateAll(e){const t=this.log.for(this.updateAll);let r;try{t.info(`updating ${e.length} ${i}`),r=await this.persistence.updateAll(e)}catch(e){throw t.error(e),e}return r}async update(t,r){const o=this.log.for(this.update),s=a(...t.valuesInOrder);if(void 0===s)throw new me(`No ${this.pk} provided`);let n;try{o.info(`updating ${i} with ${this.pk} ${s}`),n=await this.persistence.update(new e({...r,[this.pk]:s}))}catch(e){throw o.error(e),e}return n}async deleteAll(e){const t=this.log.for(this.deleteAll);let r;try{t.debug(`deleting ${e.length} ${i}: ${e}`),r=await this.persistence.deleteAll(e)}catch(r){throw t.error(`Failed to delete ${i} with id ${e}`,r),r}return t.info(`deleted ${r.length} ${i}`),r}async delete(e){const t=this.log.for(this.delete),r=a(...e.valuesInOrder);if(void 0===r)throw new me(`No ${this.pk} provided`);let o;try{t.debug(`deleting ${i} with ${this.pk} ${r}`),o=await this.persistence.delete(r)}catch(e){throw t.error(`Failed to delete ${i} with id ${r}`,e),e}return t.info(`deleted ${i} with id ${r}`),o}};return re([Ie(e,"GET","listBy/:key"),z({summary:`Retrieve ${i} records by query.`}),G({name:"key",description:"the model key to sort by"}),U({name:"direction",required:!0,enum:j}),M({description:i+" listed successfully."}),oe(1,P()),ie("design:type",Function),ie("design:paramtypes",[String,Object]),ie("design:returntype",Promise)],l.prototype,"listBy",null),re([Ie(e,"GET","paginateBy/:key/:page"),z({summary:`Retrieve ${i} records by query.`}),G({name:"key",description:"the model key to sort by"}),G({name:"page",description:"the page to retrieve or the bookmark"}),U({name:"direction",required:!0,enum:j,description:"the sort order"}),U({name:"limit",required:!0,description:"the page size"}),U({name:"offset",description:"the bookmark when necessary"}),M({description:i+" listed paginated."}),oe(0,T("key")),oe(1,P()),ie("design:type",Function),ie("design:paramtypes",[String,Object]),ie("design:returntype",Promise)],l.prototype,"paginateBy",null),re([Ie(e,"GET","findOneBy/:key"),z({summary:`Retrieve ${i} records by query.`}),G({name:"key",description:"the model key to sort by"}),M({description:i+" listed found."}),Q({description:`No ${i} record matches the provided identifier.`}),oe(0,T("key")),oe(1,T("value")),ie("design:type",Function),ie("design:paramtypes",[String,Object]),ie("design:returntype",Promise)],l.prototype,"findOneBy",null),re([Ie(e,"GET","findBy/:key/:value"),z({summary:`Retrieve ${i} records by query.`}),G({name:"key",description:"the model key to compare"}),G({name:"value",description:"the value to match"}),U({name:"direction",required:!0,enum:j,description:"the sort order when applicable"}),M({description:i+" listed found."}),Q({description:`No ${i} record matches the provided identifier.`}),oe(0,T("key")),oe(1,T("value")),oe(2,P()),ie("design:type",Function),ie("design:paramtypes",[String,Object,Object]),ie("design:returntype",Promise)],l.prototype,"findBy",null),re([Ie(e,"GET","statement/:method/*args"),z({summary:`Executes a prepared statement on ${i}.`}),G({name:"method",description:"the prepared statement to execute"}),G({name:"args",description:"concatenated list of arguments the prepared statement can accept"}),U({name:"direction",required:!0,enum:j,description:"the sort order when applicable"}),U({name:"limit",required:!0,description:"limit or page size when applicable"}),U({name:"offset",required:!0,description:"offset or bookmark when applicable"}),M({description:i+" listed found."}),Q({description:`No ${i} record matches the provided identifier.`}),oe(0,T("method")),oe(1,T("args")),oe(2,P()),ie("design:type",Function),ie("design:paramtypes",[String,Array,Object]),ie("design:returntype",Promise)],l.prototype,"statement",null),re([Ie(e,"POST","bulk"),z({summary:`Create a new ${i}.`}),J({description:"Payload for "+i,schema:{type:"array",items:{$ref:Y(e)}}}),K({description:`x ${i} created successfully.`}),V({description:"Payload validation failed."}),W({description:"Repository rejected the provided payload."}),oe(0,xe()),ie("design:type",Function),ie("design:paramtypes",[Array]),ie("design:returntype",Promise)],l.prototype,"createAll",null),re([Ie(e,"POST"),z({summary:`Create a new ${i}.`}),J({description:"Payload for "+i,schema:{$ref:Y(e)}}),K({description:i+" created successfully."}),V({description:"Payload validation failed."}),W({description:"Repository rejected the provided payload."}),oe(0,xe()),ie("design:type",Function),ie("design:paramtypes",[Object]),ie("design:returntype",Promise)],l.prototype,"create",null),re([Ie(e,"GET","bulk"),z({summary:`Retrieve a ${i} record by id.`}),U({name:"ids",required:!0,type:"array"}),M({description:i+" retrieved successfully."}),Q({description:`No ${i} record matches the provided identifier.`}),oe(0,P("ids")),ie("design:type",Function),ie("design:paramtypes",[Array]),ie("design:returntype",Promise)],l.prototype,"readAll",null),re([Ie(e,"GET",p),je(c),z({summary:`Retrieve a ${i} record by id.`}),M({description:i+" retrieved successfully."}),Q({description:`No ${i} record matches the provided identifier.`}),oe(0,De(c)),ie("design:type",Function),ie("design:paramtypes",[Object]),ie("design:returntype",Promise)],l.prototype,"read",null),re([Ie(e,"PUT","bulk"),je(c),z({summary:`Replace an existing ${i} record with a new payload.`}),J({description:"Payload for replace a existing record of "+i,schema:{type:"array",items:{$ref:Y(e)}}}),M({description:e+" record replaced successfully."}),Q({description:`No ${i} record matches the provided identifier.`}),V({description:"Payload validation failed."}),oe(0,xe()),ie("design:type",Function),ie("design:paramtypes",[Array]),ie("design:returntype",Promise)],l.prototype,"updateAll",null),re([Ie(e,"PUT",p),je(c),z({summary:`Replace an existing ${i} record with a new payload.`}),J({description:"Payload for replace a existing record of "+i,schema:{$ref:Y(e)}}),M({description:e+" record replaced successfully."}),Q({description:`No ${i} record matches the provided identifier.`}),V({description:"Payload validation failed."}),oe(0,De(c)),oe(1,xe()),ie("design:type",Function),ie("design:paramtypes",[Object,Object]),ie("design:returntype",Promise)],l.prototype,"update",null),re([Ie(e,"DELETE","bulk"),je(c),z({summary:`Retrieve a ${i} record by id.`}),U({name:"ids",required:!0,type:"array"}),M({description:i+" retrieved successfully."}),Q({description:`No ${i} record matches the provided identifier.`}),oe(0,P("ids")),ie("design:type",Function),ie("design:paramtypes",[Array]),ie("design:returntype",Promise)],l.prototype,"deleteAll",null),re([Ie(e,"DELETE",p),je(c),z({summary:`Delete a ${i} record by id.`}),M({description:i+" record deleted successfully."}),Q({description:`No ${i} record matches the provided identifier.`}),oe(0,De(c)),ie("design:type",Function),ie("design:paramtypes",[Object]),ie("design:returntype",Promise)],l.prototype,"delete",null),l=re([S(o),X(i),Z(e),qe(e),ie("design:paramtypes",[Ue])],l),l}static getRouteParametersFromModel(e){const t=I.pk(e),o=r.get(e,r.key(ye.COMPOSED,t)),i=o?.args??[],s=Array.isArray(i)&&i.length>0?Array.from(new Set([...i])):Array.from(new Set([t])),n=r.description(e);return{path:":"+s.join("/:"),description:n,apiProperties:s.map(t=>({name:t,description:r.description(e,t),required:!0,type:String})),getPK:(...e)=>o?.separator?e.join(o.separator):e.join("")}}}let We=class{constructor(e){this.executor=e}async intercept(e,t){const r=e.switchToHttp().getRequest(),o=e.switchToHttp().getResponse();return await this.executor.exec(r,o),t.handle()}};var Xe;We=re([c({scope:p.REQUEST}),ie("design:paramtypes",[ze])],We);let Ze=class{static{Xe=this}static{this.log=ce.for(Xe.name)}static createModelServices(e){return e.map(e=>({provide:e.name+"Service",useFactory:()=>x.forModel(e)}))}static forRoot(e,t={}){const r=this.log.for(this.forRoot);r.info("Generating controllers for flavour...");const o=N.models(e);let i=[];t.autoServices&&(r.info("Auto-services enabled. Initializing service generation."),i=this.createModelServices(o),r.info(`Auto-services completed. ${i.length} services initialized.`));const s=o.map(Ve.create);return r.info(`Generated ${s.length} controllers`),{module:Xe,controllers:s,providers:[{provide:Ee,useFactory:()=>t.handlers?.map(e=>(r.info("Registered request handler: "+e.name),new e))??[]},Ue,ze,{provide:ae,useClass:We},...i]}}};var et;Ze=Xe=re([h({})],Ze);let tt=et=class{static async forRootAsync(e){const{autoControllers:t,autoServices:r,handlers:o}=e,i=(await ke.createAdapter(e)).flavour,s=[ke.forRoot(e)];return t&&s.push(Ze.forRoot(i,{autoServices:r,handlers:o})),{module:et,imports:s}}};function rt(e){const t=I.get(e);if(!t)throw new ge("Failed to find repository for "+e);return L.forModel(t)}tt=et=re([h({})],tt);class ot extends B{constructor(e){super(e,ot.name)}}let it=class{catch(e,t){const r=t.switchToHttp(),o=r.getResponse(),i=r.getRequest(),s="production"===le.env;e instanceof fe||(e=new ge(e.message)),o.status(e.code).json({status:e.code,error:s?e.name:e.message,timestamp:(new Date).toISOString(),path:i.url,method:i.method})}};function st(){return R(new it)}it=re([O()],it);const nt={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 at{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||nt.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=be.join(this.options.assetsPath||"",e),o=we(r,{encoding:"base64"});return t?"data:image/png;base64,"+o:o}}class ct{constructor(e,t){this.app=e,this.options=t}createDocument(){const e=this.options.path?this.options.description+""+`<br><br><a href="${this.options.path}/spec.json">OpenAPI JSON Spec</a> | `+`<a href="${this.options.path}/spec.yaml">OpenAPI YAML Spec</a>`:this.options.description,t=(new ee).setTitle(this.options.title).setDescription(e).setVersion(this.options.version||"0.0.1").addBearerAuth(this.options.auth||nt.auth).build();return te.createDocument(this.app,t,{extraModels:this.options.extraModels||[]})}setupSwagger(){const e=this.createDocument(),t=new at({title:this.options.title,path:this.options.path||nt.path,persistAuthorization:this.options.persistAuthorization??!0,assetsPath:this.options.assetsPath,faviconPath:this.options.faviconFilePath,topbarIconPath:this.options.topbarIconFilePath,topbarBgColor:this.options.topbarBgColor});te.setup(this.options.path||nt.path,this.app,e,{...t.getCustomOptions()})}}class pt{static get logger(){return this._logger||(this._logger=new k("NestBootstrap")),this._logger}static initialize(e){return this.app=e,this}static enableLogger(e){return this._logger=e||new k("NestBootstrap"),this.app.useLogger(this._logger),this}static enableCors(e=[],t=["GET","POST","PUT","DELETE"]){const r="*"===e?"*":e.map(e=>e.trim().toLowerCase()),o={origin:(e,t)=>e?"*"===r||Array.isArray(r)&&r.includes(e.toLowerCase())?t(null,!0):void t(new ot(`Origin ${e} not allowed`)):t(null,!0),credentials:!0,methods:t.join(",")};return this.app.enableCors(o),this}static useHelmet(e){try{const t=require("helmet");this.app.use(t(e)),this.logger.log("Helmet middleware enabled successfully.")}catch(e){this.logger.warn("Helmet not installed. Skipping middleware.")}return this}static setupSwagger(e){return new ct(this.app,{title:e.title,description:e.description,version:e.version,path:e.path||"api",persistAuthorization:e.persistAuthorization??!0,assetsPath:e.assetsPath,faviconFilePath:e.faviconPath,topbarIconFilePath:e.topbarIconPath,topbarBgColor:e.topbarBgColor}).setupSwagger(),this}static useGlobalPipes(...e){return e.length>0&&this.app.useGlobalPipes(...e),this}static useGlobalFilters(...e){return this.app.useGlobalFilters(...e.length>0?e:[new it]),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)}})}}const dt="##VERSION##",lt="##PACKAGE##";r.registerLibrary(lt,dt);export{Te as AUTH_HANDLER,Se as AUTH_META_KEY,Ie as ApiOperationFromModel,je as ApiParamsFromModel,qe as Auth,_e as AuthInterceptor,Oe as AuthRole,Ce as BulkApiOperationFromModel,ot as CorsError,Ae as DECAF_ADAPTER_ID,Pe as DECAF_ADAPTER_OPTIONS,Ee as DECAF_HANDLERS,ve as DECAF_MODULE_OPTIONS,$e as DECAF_ROUTE,xe as DecafBody,it as DecafExceptionFilter,ze as DecafHandlerExecutor,Ze as DecafModelModule,tt as DecafModule,De as DecafParams,Ue as DecafRequestContext,We as DecafRequestHandlerInterceptor,Ve as FromModelController,Ne as HttpVerbToDecorator,pt as NestBootstraper,lt as PACKAGE_NAME,Ge as Roles,ct as SwaggerBuilder,st as UseDecafFilter,dt as VERSION,Fe as isOperationBlocked,rt as repoForModel,Be as route};
|
|
2
2
|
//# sourceMappingURL=for-nest.js.map
|
package/dist/for-nest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"for-nest.js","sources":["../src/decoration.ts","../src/constants.ts","../src/core-module.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/interceptors/AuthInterceptor.ts","../src/decaf-model/decorators/decorators.ts","../src/request/DecafRequestContext.ts","../src/request/DecafHandlerExecutor.ts","../src/decaf-model/utils.ts","../src/decaf-model/types.ts","../src/decaf-model/FromModelController.ts","../src/interceptors/DecafRequestHandlerInterceptor.ts","../src/decaf-model/DecafModelModule.ts","../src/module.ts","../src/utils.ts","../src/factory/errors/cors.ts","../src/factory/exceptions/DecafErrorFilter.ts","../src/factory/exceptions/decorators.ts","../src/factory/openapi/constants.ts","../src/factory/openapi/SwaggerCustomUI.ts","../src/factory/openapi/SwaggerBuilder.ts","../src/factory/NestBootstraper.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["Decoration","for","InjectablesKeys","INJECTABLE","extend","decorator","category","cfg","Object","assign","DefaultInjectablesConfig","Injectable","scope","singleton","Scope","DEFAULT","REQUEST","durable","undefined","apply","INJECT","target","propertyKey","descriptor","Inject","ValidationKeys","REQUIRED","ApiProperty","required","MAX","max","maximum","MIN","min","minimum","MAX_LENGTH","maxLength","MIN_LENGTH","minLength","LIST","clazz","c","Array","isArray","type","PATTERN","pat","pattern","source","PersistenceKeys","COLUMN","name","DecorationKeys","DESCRIPTION","description","DECAF_MODULE_OPTIONS","DECAF_ADAPTER_ID","DECAF_HANDLERS","Symbol","DECAF_ADAPTER_OPTIONS","AUTH_HANDLER","AUTH_META_KEY","AuthRole","DecafCoreModule","this","_adapterInstance","log","_logger","Logging","DecafCoreModule_1","constructor","options","moduleRef","createAdapter","info","adapter","conf","alias","initialize","e","error","getAdapterInstance","forRoot","typeOrmModuleOptions","provide","useValue","useFactory","async","opts","inject","module","providers","exports","onApplicationShutdown","get","shutdown","isOperationBlocked","ModelConstructor","op","handler","args","Metadata","OperationKeys","REFLECT","BLOCK","ApiOperationFromModel","verb","path","httpToCrud","GET","READ","Get","POST","CREATE","Post","PUT","UPDATE","Put","PATCH","Patch","DELETE","Delete","crudOp","HttpMethodDecorator","ApiExcludeEndpoint","BulkApiOperationFromModel","BulkCrudOperationKeys","READ_ALL","CREATE_ALL","UPDATE_ALL","DELETE_ALL","ApiParamsFromModel","props","decorators","map","p","ApiParamDec","String","applyDecorators","__decorate","Global","Module","__param","ModuleRef","DecafBody","createParamDecorator","data","ctx","body","switchToHttp","getRequest","controller","getClass","ModelConstr","InternalServerErrorException","item","OrderedParams","order","req","original","params","orderList","keys","ordered","k","raw","valuesInOrder","keysInOrder","DecafParams","AuthInterceptor","reflector","authHandler","intercept","next","modelName","getHandler","authorize","handle","Auth","model","resource","SetMetadata","UseInterceptors","Optional","Reflector","Roles","roles","metadata","DecafRequestContext","cache","Map","set","key","value","DecafHandlerExecutor","handlers","context","exec","res","apiParamSpec","getApiDecorators","methodName","routePath","apiPathParams","split","filter","startsWith","slice","extractPathParams","method","ApiParam","ApiOperation","summary","ApiOkResponse","ApiNoContentResponse","Query","applyApiDecorators","proto","prototype","forEach","d","index","createRouteHandler","pathParams","queryParams","debug","JSON","stringify","direction","limit","offset","persistence","ModelService","statement","Error","resolvePersistenceMethod","defineRouteMethod","ControllerClass","defineProperty","writable","getOwnPropertyDescriptor","AbstractQueryController","LoggedClass","clientContext","super","FromModelController","getPersistence","ModelClazz","forModel","Repository","createQueryRoutesFromRepository","prefix","QUERY","class","methodQueries","QueryController","_persistence","adapterOptions","objValues","entries","fields","f","segment","trim","join","create","tableName","Model","toKebabCase","modelClazzName","getPK","apiProperties","getRouteParametersFromModel","BaseController","repo","DynamicModelController","pk","listBy","details","paginateBy","findOneBy","findBy","bookmark","a","parseInt","PreparedStatementKeys","FIND_BY","LIST_BY","push","PAGE_BY","FIND_ONE_BY","createAll","created","verbose","readAll","ids","read","length","routeParams","id","ValidationError","updateAll","updated","update","deleteAll","delete","del","ApiQuery","enum","OrderDirection","Param","ApiNotFoundResponse","ApiBody","schema","items","$ref","getSchemaPath","ApiCreatedResponse","ApiBadRequestResponse","ApiUnprocessableEntityResponse","Controller","ApiTags","ApiExtraModels","composed","DBKeys","COMPOSED","composedKeys","uniqueKeys","from","Set","separator","DecafRequestHandlerInterceptor","executor","getResponse","DecafModelModule","DecafModelModule_1","createModelServices","models","flavour","trackedModels","Adapter","modelServices","autoServices","controllers","H","APP_INTERCEPTOR","useClass","DecafModule","DecafModule_1","forRootAsync","autoControllers","imports","repoForModel","m","InternalError","CorsError","ForbiddenError","msg","DecafExceptionFilter","exception","host","response","request","isProduction","LoggedEnvironment","env","BaseError","message","status","code","json","timestamp","Date","toISOString","url","UseDecafFilter","UseFilters","Catch","SWAGGER_UI_CONSTANTS","title","version","faviconFilePath","topbarIconFilePath","auth","scheme","bearerFormat","in","persistAuthorization","topbarBgColor","SwaggerCustomUI","customCSS","css","topbarIconPath","b64","getCustomOptions","favicon","faviconPath","customSiteTitle","customCss","swaggerOptions","jsonDocumentUrl","yamlDocumentUrl","file","img","filePath","assetsPath","readFileSync","encoding","SwaggerBuilder","app","createDocument","config","DocumentBuilder","setTitle","setDescription","setVersion","addBearerAuth","build","SwaggerModule","extraModels","setupSwagger","document","swaggerUI","setup","NestBootstraper","logger","Logger","enableLogger","customLogger","useLogger","enableCors","origins","allowMethods","allowedOrigins","o","toLowerCase","corsOptions","origin","callback","includes","credentials","methods","useHelmet","helmet","require","use","warn","useGlobalPipes","pipes","useGlobalFilters","filters","useGlobalInterceptors","interceptors","start","port","Number","process","PORT","listen","then","getUrl","VERSION","PACKAGE_NAME","registerLibrary"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"for-nest.js","sources":["../src/decoration.ts","../src/constants.ts","../src/core-module.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/decaf-model/decorators/route.ts","../src/interceptors/AuthInterceptor.ts","../src/decaf-model/decorators/decorators.ts","../src/request/DecafRequestContext.ts","../src/request/DecafHandlerExecutor.ts","../src/decaf-model/utils.ts","../src/decaf-model/types.ts","../src/decaf-model/FromModelController.ts","../src/interceptors/DecafRequestHandlerInterceptor.ts","../src/decaf-model/DecafModelModule.ts","../src/module.ts","../src/utils.ts","../src/factory/errors/cors.ts","../src/factory/exceptions/DecafErrorFilter.ts","../src/factory/exceptions/decorators.ts","../src/factory/openapi/constants.ts","../src/factory/openapi/SwaggerCustomUI.ts","../src/factory/openapi/SwaggerBuilder.ts","../src/factory/NestBootstraper.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["Decoration","for","InjectablesKeys","INJECTABLE","extend","decorator","category","cfg","Object","assign","DefaultInjectablesConfig","Injectable","scope","singleton","Scope","DEFAULT","REQUEST","durable","undefined","apply","INJECT","target","propertyKey","descriptor","Inject","ValidationKeys","REQUIRED","ApiProperty","required","MAX","max","maximum","MIN","min","minimum","MAX_LENGTH","maxLength","MIN_LENGTH","minLength","LIST","clazz","c","Array","isArray","type","PATTERN","pat","pattern","source","PersistenceKeys","COLUMN","name","DecorationKeys","DESCRIPTION","description","DECAF_MODULE_OPTIONS","DECAF_ADAPTER_ID","DECAF_ROUTE","DECAF_HANDLERS","Symbol","DECAF_ADAPTER_OPTIONS","AUTH_HANDLER","AUTH_META_KEY","AuthRole","DecafCoreModule","this","_adapterInstance","log","_logger","Logging","DecafCoreModule_1","constructor","options","moduleRef","createAdapter","info","adapter","conf","alias","initialize","e","error","getAdapterInstance","forRoot","typeOrmModuleOptions","provide","useValue","useFactory","async","opts","inject","module","providers","exports","onApplicationShutdown","get","shutdown","isOperationBlocked","ModelConstructor","op","handler","args","Metadata","OperationKeys","REFLECT","BLOCK","ApiOperationFromModel","verb","path","httpToCrud","GET","READ","Get","POST","CREATE","Post","PUT","UPDATE","Put","PATCH","Patch","DELETE","Delete","crudOp","HttpMethodDecorator","ApiExcludeEndpoint","BulkApiOperationFromModel","BulkCrudOperationKeys","READ_ALL","CREATE_ALL","UPDATE_ALL","DELETE_ALL","ApiParamsFromModel","props","decorators","map","p","ApiParamDec","String","applyDecorators","__decorate","Global","Module","__param","ModuleRef","DecafBody","createParamDecorator","data","ctx","body","switchToHttp","getRequest","controller","getClass","ModelConstr","InternalServerErrorException","item","OrderedParams","order","req","original","params","orderList","keys","ordered","k","raw","valuesInOrder","keysInOrder","DecafParams","HttpVerbToDecorator","Error","route","httpMethod","key","define","obj","prop","methodMetadata","AuthInterceptor","reflector","authHandler","intercept","next","modelName","getHandler","authorize","handle","Auth","model","resource","SetMetadata","UseInterceptors","Optional","Reflector","Roles","roles","metadata","DecafRequestContext","cache","Map","set","value","DecafHandlerExecutor","handlers","context","exec","res","apiParamSpec","getApiDecorators","methodName","routePath","httpVerb","includeQueryParams","NestHttpRouteDec","apiPathParams","split","filter","startsWith","slice","extractPathParams","swaggerQueryParams","push","ApiQuery","enum","OrderDirection","method","ApiParam","ApiOperation","summary","ApiOkResponse","ApiNoContentResponse","Query","applyApiDecorators","proto","prototype","forEach","d","index","createRouteHandler","pathParams","queryParams","debug","JSON","stringify","direction","limit","offset","persistence","ModelService","statement","resolvePersistenceMethod","defineRouteMethod","ControllerClass","defineProperty","writable","getOwnPropertyDescriptor","AbstractQueryController","LoggedClass","clientContext","super","FromModelController","getPersistence","ModelClazz","getService","Repository","forModel","createQueryRoutesFromRepository","prefix","QUERY","repo","class","queryMethods","routeMethods","QueryController","_persistence","adapterOptions","entries","replace","segment","trim","join","message","objValues","fields","f","create","tableName","Model","toKebabCase","modelClazzName","getPK","apiProperties","getRouteParametersFromModel","BaseController","DynamicModelController","pk","listBy","details","paginateBy","findOneBy","findBy","bookmark","a","parseInt","PreparedStatementKeys","FIND_BY","LIST_BY","PAGE_BY","FIND_ONE_BY","createAll","created","verbose","readAll","ids","read","length","routeParams","id","ValidationError","updateAll","updated","update","deleteAll","delete","del","Param","ApiNotFoundResponse","ApiBody","schema","items","$ref","getSchemaPath","ApiCreatedResponse","ApiBadRequestResponse","ApiUnprocessableEntityResponse","Controller","ApiTags","ApiExtraModels","composed","DBKeys","COMPOSED","composedKeys","uniqueKeys","from","Set","separator","DecafRequestHandlerInterceptor","executor","getResponse","DecafModelModule","DecafModelModule_1","createModelServices","models","flavour","trackedModels","Adapter","modelServices","autoServices","controllers","H","APP_INTERCEPTOR","useClass","DecafModule","DecafModule_1","forRootAsync","autoControllers","imports","repoForModel","m","InternalError","CorsError","ForbiddenError","msg","DecafExceptionFilter","exception","host","response","request","isProduction","LoggedEnvironment","env","BaseError","status","code","json","timestamp","Date","toISOString","url","UseDecafFilter","UseFilters","Catch","SWAGGER_UI_CONSTANTS","title","version","faviconFilePath","topbarIconFilePath","auth","scheme","bearerFormat","in","persistAuthorization","topbarBgColor","SwaggerCustomUI","customCSS","css","topbarIconPath","b64","getCustomOptions","favicon","faviconPath","customSiteTitle","customCss","swaggerOptions","jsonDocumentUrl","yamlDocumentUrl","file","img","filePath","assetsPath","readFileSync","encoding","SwaggerBuilder","app","createDocument","config","DocumentBuilder","setTitle","setDescription","setVersion","addBearerAuth","build","SwaggerModule","extraModels","setupSwagger","document","swaggerUI","setup","NestBootstraper","logger","Logger","enableLogger","customLogger","useLogger","enableCors","origins","allowMethods","allowedOrigins","o","toLowerCase","corsOptions","origin","callback","includes","credentials","methods","useHelmet","helmet","require","use","warn","useGlobalPipes","pipes","useGlobalFilters","filters","useGlobalInterceptors","interceptors","start","port","Number","process","PORT","listen","then","getUrl","VERSION","PACKAGE_NAME","registerLibrary"],"mappings":"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"}
|