@decaf-ts/for-nest 0.1.0 → 0.1.2
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 +3 -1
- package/lib/constants.d.ts +2 -0
- package/lib/constants.js.map +1 -1
- package/lib/core-module.d.ts +3 -3
- package/lib/core-module.js.map +1 -1
- package/lib/decaf-model/DecafModelModule.cjs +22 -3
- package/lib/decaf-model/DecafModelModule.d.ts +3 -2
- package/lib/decaf-model/DecafModelModule.js.map +1 -1
- package/lib/decaf-model/FromModelController.cjs +69 -17
- package/lib/decaf-model/FromModelController.d.ts +49 -0
- package/lib/decaf-model/FromModelController.js.map +1 -1
- package/lib/esm/constants.d.ts +2 -0
- package/lib/esm/constants.js +2 -0
- package/lib/esm/constants.js.map +1 -1
- package/lib/esm/core-module.d.ts +3 -3
- package/lib/esm/core-module.js.map +1 -1
- package/lib/esm/decaf-model/DecafModelModule.d.ts +3 -2
- package/lib/esm/decaf-model/DecafModelModule.js +22 -3
- package/lib/esm/decaf-model/DecafModelModule.js.map +1 -1
- package/lib/esm/decaf-model/FromModelController.d.ts +49 -0
- package/lib/esm/decaf-model/FromModelController.js +69 -17
- package/lib/esm/decaf-model/FromModelController.js.map +1 -1
- package/lib/esm/index.d.ts +3 -2
- package/lib/esm/index.js +3 -2
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/interceptors/DecafRequestHandlerInterceptor.d.ts +53 -0
- package/lib/esm/interceptors/DecafRequestHandlerInterceptor.js +73 -0
- package/lib/esm/interceptors/DecafRequestHandlerInterceptor.js.map +1 -0
- package/lib/esm/interceptors/index.d.ts +1 -0
- package/lib/esm/interceptors/index.js +2 -0
- package/lib/esm/interceptors/index.js.map +1 -0
- package/lib/esm/module.js +1 -1
- package/lib/esm/module.js.map +1 -1
- package/lib/esm/request/DecafHandlerExecutor.d.ts +52 -0
- package/lib/esm/request/DecafHandlerExecutor.js +77 -0
- package/lib/esm/request/DecafHandlerExecutor.js.map +1 -0
- package/lib/esm/request/DecafRequestContext.d.ts +26 -0
- package/lib/esm/request/DecafRequestContext.js +44 -0
- package/lib/esm/request/DecafRequestContext.js.map +1 -0
- package/lib/esm/request/index.d.ts +2 -0
- package/lib/esm/request/index.js +3 -0
- package/lib/esm/request/index.js.map +1 -0
- package/lib/esm/types.d.ts +10 -1
- package/lib/esm/utils.d.ts +1 -1
- package/lib/index.cjs +3 -2
- package/lib/index.d.ts +3 -2
- package/lib/index.js.map +1 -1
- package/lib/interceptors/DecafRequestHandlerInterceptor.cjs +76 -0
- package/lib/interceptors/DecafRequestHandlerInterceptor.d.ts +53 -0
- package/lib/interceptors/DecafRequestHandlerInterceptor.js.map +1 -0
- package/lib/interceptors/index.cjs +18 -0
- package/lib/interceptors/index.d.ts +1 -0
- package/lib/interceptors/index.js.map +1 -0
- package/lib/module.cjs +1 -1
- package/lib/module.js.map +1 -1
- package/lib/request/DecafHandlerExecutor.cjs +80 -0
- package/lib/request/DecafHandlerExecutor.d.ts +52 -0
- package/lib/request/DecafHandlerExecutor.js.map +1 -0
- package/lib/request/DecafRequestContext.cjs +47 -0
- package/lib/request/DecafRequestContext.d.ts +26 -0
- package/lib/request/DecafRequestContext.js.map +1 -0
- package/lib/request/index.cjs +19 -0
- package/lib/request/index.d.ts +2 -0
- package/lib/request/index.js.map +1 -0
- package/lib/types.d.ts +10 -1
- package/lib/utils.d.ts +1 -1
- package/package.json +1 -1
- package/lib/RepoFactory.cjs +0 -27
- package/lib/RepoFactory.d.ts +0 -6
- package/lib/RepoFactory.js.map +0 -1
- package/lib/esm/RepoFactory.d.ts +0 -6
- package/lib/esm/RepoFactory.js +0 -24
- package/lib/esm/RepoFactory.js.map +0 -1
package/dist/for-nest.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var t,e;t=this,e=function(t,e,o,r,s,a,i,n,c,p,d,l,u,h){"use strict";function g(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach(o=>{if("default"!==o){var r=Object.getOwnPropertyDescriptor(t,o);Object.defineProperty(e,o,r.get?r:{enumerable:!0,get:()=>t[o]})}}),e.default=t,Object.freeze(e)}var m=g(h);e.Decoration.for(o.InjectablesKeys.INJECTABLE).extend({decorator:(t,e)=>r.Injectable({scope:e.singleton?r.Scope.DEFAULT:r.Scope.REQUEST,durable:!e.singleton||void 0})}).apply(),e.Decoration.for(o.InjectablesKeys.INJECT).extend({decorator:(t,e)=>(e,o,s)=>r.Inject(t||e)(e,o,s)}).apply(),e.Decoration.for(s.ValidationKeys.REQUIRED).extend(i.ApiProperty({required:!0})).apply(),e.Decoration.for(s.ValidationKeys.MAX).extend({decorator:t=>i.ApiProperty({maximum:t})}).apply(),e.Decoration.for(s.ValidationKeys.MIN).extend({decorator:t=>i.ApiProperty({minimum:t})}).apply(),e.Decoration.for(s.ValidationKeys.MAX_LENGTH).extend({decorator:t=>i.ApiProperty({maxLength:t})}).apply(),e.Decoration.for(s.ValidationKeys.MIN_LENGTH).extend({decorator:t=>i.ApiProperty({minLength:t})}).apply(),e.Decoration.for(s.ValidationKeys.LIST).extend({decorator:t=>{const e=Array.isArray(t)?t[0]:t;return i.ApiProperty({type:[e]})}}).apply(),e.Decoration.for(s.ValidationKeys.PATTERN).extend({decorator:t=>i.ApiProperty({pattern:"string"==typeof t?t:t.source})}).apply(),e.Decoration.for(a.PersistenceKeys.COLUMN).extend({decorator:t=>i.ApiProperty({name:t})}).apply(),e.Decoration.for(e.DecorationKeys.DESCRIPTION).extend({decorator:t=>i.ApiProperty({description:t})}).apply();const f="DecafModuleOptions",y="DecafAdapter";var E;let _=class{static{E=this}static{this._adapterInstance=null}static get log(){return this._logger||(this._logger=p.Logging.for(E)),this._logger}constructor(t,e){this.options=t,this.moduleRef=e}static async createAdapter(t){if(!this._adapterInstance){const e=this.log.for(this.createAdapter);e.info("Creating adapter instance..."),this._adapterInstance=new t.adapter(t.conf,t.alias),e.info("Adapter instance created successfully!")}return this._adapterInstance}static getAdapterInstance(){return this._adapterInstance}static forRoot(t){const e={provide:f,useValue:t},o={useFactory:async t=>E.createAdapter(t),provide:y,durable:!0,scope:r.Scope.DEFAULT,inject:[f]};return{module:E,providers:[o,e],exports:[o]}}async onApplicationShutdown(){const t=E.log.for(this.onApplicationShutdown),e=this.moduleRef.get(y);try{e&&(t.info("Shutting down"),await e.shutdown(),E._adapterInstance=null)}catch(e){t.error("Failed to shutdown application",e)}}};function A(t,o){const{handler:r,args:s}=e.Metadata.get(t,l.OperationKeys.REFLECT+l.OperationKeys.BLOCK)||{};return!!r&&(r(...s,o)??!1)}function b(t,e,o){const s={GET:[l.OperationKeys.READ,r.Get],POST:[l.OperationKeys.CREATE,r.Post],PUT:[l.OperationKeys.UPDATE,r.Put],PATCH:[l.OperationKeys.UPDATE,r.Patch],DELETE:[l.OperationKeys.DELETE,r.Delete]},[a,n]=s[e];return A(t,a)?d.apply(i.ApiExcludeEndpoint()):d.apply(n(o))}function R(t=[]){const e=t.map(t=>i.ApiParam({name:t.name,description:t.description??"Path parameter: "+t.name,required:t.required??!0,type:t.type??String}));return r.applyDecorators(...e)}_=E=n.__decorate([r.Global(),r.Module({}),n.__param(0,r.Inject(f)),n.__metadata("design:paramtypes",[Object,c.ModuleRef])],_);const w=r.createParamDecorator((t,e)=>{const o=e.switchToHttp().getRequest(),r=o?.params??{},s=t??Object.keys(r),a=s.map(t=>r[t]);return{original:r,ordered:a,order:s}});function P(t=[]){const e=t.map(t=>t.name);return w(e)}t.RepoFactory=class{for(t){if(!(t="string"==typeof t?s.Model.get(t):t))throw new l.InternalError("Failed to find repository for "+t);return a.Repository.forModel(t)}},t.RepoFactory=n.__decorate([r.Injectable()],t.RepoFactory);class O{static{this.log=p.Logging.for(O.name)}static create(e){const o=O.log.for(O.create),c=a.Repository.table(e),d=p.toKebabCase(c),l=e.name,{description:u,apiProperties:h,path:g}=O.getRouteParametersFromModel(e);o.debug("Creating controller for model: "+l);let m=class extends p.LoggedClass{constructor(t){super(),this.repoFactory=t,o.info(`Registering dynamic controller for model: ${l} route: /${d}`);try{this.repo=this.repoFactory.for(e.name),this.pk=this.repo.pk}catch(t){this.log.error(`Failed to initialize repository for model "${e.name}".`,t)}}async create(t){const e=this.log.for(this.create);let o;e.verbose("creating new "+l);try{o=await this.repo.create(t)}catch(t){throw e.error("Failed to create new "+l,t),t}return e.info(`created new ${l} with id ${o[this.pk]}`),o}async read(t){const{id:e}=t,o=this.log.for(this.read);let r;try{o.debug(`reading ${l} with ${this.pk} ${e}`),r=await this.repo.read(e)}catch(t){throw o.error(`Failed to read ${l} with id ${e}`,t),t}return o.info(`read ${l} with id ${r[this.pk]}`),r}async query(t){const e=this.log.for(this.read);let o;try{e.debug(`Querying ${l} using method "${t}"`),o=await this.repo[t]()}catch(o){throw e.error(`Failed to query ${l} using method "${t}"`,o),o}return e.info(`Successfully queried ${l} using method "${t}"`),o}async update(t,e){const o=this.log.for(this.update);let r;try{o.info(`updating ${l} with ${this.pk} ${e[this.pk]}`),r=await this.repo.create(e)}catch(t){throw o.error(t),t}return r}async delete(t){const e=this.log.for(this.delete);let o;try{e.debug(`deleting ${l} with ${this.pk} ${t}`),o=await this.repo.read("id")}catch(t){throw e.error(`Failed to delete ${l} with id id`,t),t}return e.info(`deleted ${l} with id ${o[this.pk]}`),o}};return n.__decorate([b(e,"POST"),i.ApiOperation({summary:`Create a new ${l}.`}),i.ApiBody({description:"Payload for "+l,schema:{$ref:i.getSchemaPath(e)}}),i.ApiCreatedResponse({description:l+" created successfully."}),i.ApiBadRequestResponse({description:"Payload validation failed."}),i.ApiUnprocessableEntityResponse({description:"Repository rejected the provided payload."}),n.__param(0,r.Body()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object]),n.__metadata("design:returntype",Promise)],m.prototype,"create",null),n.__decorate([b(e,"GET",g),R(h),i.ApiOperation({summary:`Retrieve a ${l} record by id.`}),i.ApiOkResponse({description:l+" retrieved successfully."}),i.ApiNotFoundResponse({description:`No ${l} record matches the provided identifier.`}),n.__param(0,r.Param()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object]),n.__metadata("design:returntype",Promise)],m.prototype,"read",null),n.__decorate([b(e,"GET","query/:method"),i.ApiOperation({summary:`Retrieve ${l} records by query.`}),i.ApiParam({name:"method",description:"Query method to be called"}),i.ApiOkResponse({description:l+" retrieved successfully."}),i.ApiNotFoundResponse({description:`No ${l} records matches the query.`}),n.__param(0,r.Param("method")),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[String]),n.__metadata("design:returntype",Promise)],m.prototype,"query",null),n.__decorate([b(e,"PUT",g),R(h),i.ApiOperation({summary:`Replace an existing ${l} record with a new payload.`}),i.ApiBody({description:"Payload for replace a existing record of "+l,schema:{$ref:i.getSchemaPath(e)}}),i.ApiOkResponse({description:e+" record replaced successfully."}),i.ApiNotFoundResponse({description:`No ${l} record matches the provided identifier.`}),i.ApiBadRequestResponse({description:"Payload validation failed."}),n.__param(0,P(h)),n.__param(1,r.Body()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object,s.Model]),n.__metadata("design:returntype",Promise)],m.prototype,"update",null),n.__decorate([b(e,"DELETE",g),R(h),i.ApiOperation({summary:`Delete a ${l} record by id.`}),i.ApiOkResponse({description:l+" record deleted successfully."}),i.ApiNotFoundResponse({description:`No ${l} record matches the provided identifier.`}),n.__param(0,P(h)),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object]),n.__metadata("design:returntype",Promise)],m.prototype,"delete",null),m=n.__decorate([r.Controller(d),i.ApiTags(l),i.ApiExtraModels(e),n.__metadata("design:paramtypes",[t.RepoFactory])],m),m}static getRouteParametersFromModel(t){const o=new t({}),r=s.Model.pk(t),a=l.DBKeys.COMPOSED,i=Reflect.getMetadata(a,o,r)?.args??[],n=Array.isArray(i)&&i.length>0?[...i]:[r],c=e.Metadata.description(t),p=Array.from(new Set(n)),d=p.map(t=>":"+t).join("/");return{description:c,apiProperties:p.map(o=>({name:o,description:e.Metadata.description(t,o),required:!0,type:String})),path:d}}}var F,T;t.DecafModelModule=class{static{F=this}static{this.log=p.Logging.for(F.name)}static forRoot(e){const o=this.log.for(this.forRoot);o.info("Generating controllers for flavour...");const r=a.Adapter.models(e).map(O.create);return o.info(`Generated ${r.length} controllers`),{module:F,controllers:r,providers:[t.RepoFactory]}}},t.DecafModelModule=F=n.__decorate([r.Module({})],t.DecafModelModule),t.DecafModule=T=class{static async forRootAsync(e){const{autoControllers:o}=e,r=(await _.createAdapter(e)).flavour,s=[_.forRoot(e)];return o&&s.push(t.DecafModelModule.forRoot(r)),{module:T,imports:s}}},t.DecafModule=T=n.__decorate([r.Module({})],t.DecafModule);class D extends a.ForbiddenError{constructor(t){super(t,D.name)}}class C{constructor(t,e){const o=e?.status??r.HttpStatus.INTERNAL_SERVER_ERROR,s=e?.message??"Internal Server Error",a=(e?.error??r.HttpStatus[o]??"HTTP_EXCEPTION").toString().toUpperCase();Object.assign(this,{status:o,message:s,error:a,timestamp:(new Date).toISOString(),path:t.url,method:t.method})}}class S extends Error{constructor(t="Unauthorized"){super(t),this.name="AuthorizationError",this.status=401,this.code="UNAUTHORIZED",Object.setPrototypeOf(this,S.prototype)}}t.AuthorizationExceptionFilter=class{catch(t,e){const o=e.switchToHttp(),s=o.getRequest(),a=o.getResponse(),i=new C(s,{error:"UNAUTHORIZED",status:r.HttpStatus.UNAUTHORIZED,message:t.message});a.status(r.HttpStatus.UNAUTHORIZED).json(i)}},t.AuthorizationExceptionFilter=n.__decorate([r.Catch(S)],t.AuthorizationExceptionFilter);class I extends Error{constructor(t="Conflict"){super(t),this.name="ConflictError",this.status=409,this.code="CONFLICT",Object.setPrototypeOf(this,I.prototype)}}t.ConflictExceptionFilter=class{catch(t,e){const o=e.switchToHttp(),s=o.getResponse(),a=o.getRequest(),i=new C(a,{status:r.HttpStatus.CONFLICT,message:t.message,error:"CONFLICT"});s.status(i.status).json(i)}},t.ConflictExceptionFilter=n.__decorate([r.Catch(I)],t.ConflictExceptionFilter),t.GlobalExceptionFilter=class{catch(t,e){const o=e.switchToHttp(),s=o.getRequest(),a=o.getResponse();let i,n=r.HttpStatus.INTERNAL_SERVER_ERROR,c="Internal Server Error";if(t instanceof r.HttpException){const e=t.getResponse();n=t.getStatus(),c=(e?.message||t.message)??c,i=e?.error??t.name}else t instanceof Error&&(c=t.message,i=t.name);const p=new C(s,{status:n,message:c,error:i});a.status(p.status).json(p)}},t.GlobalExceptionFilter=n.__decorate([r.Catch()],t.GlobalExceptionFilter),t.HttpExceptionFilter=class{catch(t,e){const o=e.switchToHttp(),r=o.getResponse(),s=o.getRequest(),a=t.getStatus(),i=new C(s,{status:a,message:t.message,error:t.name});r.status(i.status).json(i)}},t.HttpExceptionFilter=n.__decorate([r.Catch(r.HttpException)],t.HttpExceptionFilter);class x extends Error{constructor(t="Resource not found"){super(t),this.name="NotFoundError",this.status=404,this.code="NOT_FOUND",Object.setPrototypeOf(this,x.prototype)}}t.NotFoundExceptionFilter=class{catch(t,e){const o=e.switchToHttp(),s=o.getResponse(),a=o.getRequest(),i=new C(a,{status:r.HttpStatus.NOT_FOUND,message:t.message,error:"NOT_FOUND"});s.status(i.status).json(i)}},t.NotFoundExceptionFilter=n.__decorate([r.Catch(x)],t.NotFoundExceptionFilter);class N extends Error{constructor(t="Validation failed"){super(t),this.name="ValidationError",this.status=422,this.code="VALIDATION_ERROR",Object.setPrototypeOf(this,N.prototype)}}t.ValidationExceptionFilter=class{catch(t,e){const o=e.switchToHttp(),s=o.getResponse(),a=o.getRequest(),i=new C(a,{status:r.HttpStatus.UNPROCESSABLE_ENTITY,message:t.message,error:"VALIDATION_ERROR"});s.status(i.status).json(i)}},t.ValidationExceptionFilter=n.__decorate([r.Catch(N)],t.ValidationExceptionFilter);const j={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 M{constructor(t){this.options={...t}}customCSS(){let t="";return this.options.topbarIconPath&&(t+=`.topbar-wrapper { content: url('data:image/png;base64,${this.b64(this.options.topbarIconPath)}'); width: 200px; height: auto; }\n`),t+`\n .topbar-wrapper svg { visibility: hidden; }\n .swagger-ui .topbar { background-color: ${this.options.topbarBgColor||j.topbarBgColor}; }\n `}getCustomOptions(){const t={};return this.options.faviconPath&&(t.customfavIcon=this.b64(this.options.faviconPath,!0)),{customSiteTitle:this.options.title,...t,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(t,e=!1){const o=m.join(this.options.assetsPath||"",t),r=u.readFileSync(o,{encoding:"base64"});return e?"data:image/png;base64,"+r:r}}class v{constructor(t,e){this.app=t,this.options=e}createDocument(){const t=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,e=(new i.DocumentBuilder).setTitle(this.options.title).setDescription(t).setVersion(this.options.version||"0.0.1").addBearerAuth(this.options.auth||j.auth).build();return i.SwaggerModule.createDocument(this.app,e,{extraModels:this.options.extraModels||[]})}setupSwagger(){const t=this.createDocument(),e=new M({title:this.options.title,path:this.options.path||j.path,persistAuthorization:this.options.persistAuthorization??!0,assetsPath:this.options.assetsPath,faviconPath:this.options.faviconFilePath,topbarIconPath:this.options.topbarIconFilePath,topbarBgColor:this.options.topbarBgColor});i.SwaggerModule.setup(this.options.path||j.path,this.app,t,{...e.getCustomOptions()})}}const $="##VERSION##",L="##PACKAGE##";e.Metadata.registerLibrary(L,$),t.ApiOperationFromModel=b,t.ApiParamsFromModel=R,t.AuthorizationError=S,t.ConflictError=I,t.CorsError=D,t.DECAF_ADAPTER_ID=y,t.DECAF_MODULE_OPTIONS=f,t.DecafParams=P,t.FromModelController=O,t.HttpResponseError=C,t.NestBootstraper=class{static get logger(){return this._logger||(this._logger=new r.Logger("NestBootstrap")),this._logger}static initialize(t){return this.app=t,this}static enableLogger(t){return this._logger=t||new r.Logger("NestBootstrap"),this.app.useLogger(this._logger),this}static enableCors(t=[],e=["GET","POST","PUT","DELETE"]){const o="*"===t?"*":t.map(t=>t.trim().toLowerCase()),r={origin:(t,e)=>t?"*"===o||Array.isArray(o)&&o.includes(t.toLowerCase())?e(null,!0):void e(new D(`Origin ${t} not allowed`)):e(null,!0),credentials:!0,methods:e.join(",")};return this.app.enableCors(r),this}static useHelmet(t){try{const e=require("helmet");this.app.use(e(t)),this.logger.log("Helmet middleware enabled successfully.")}catch(t){this.logger.warn("Helmet not installed. Skipping middleware.")}return this}static setupSwagger(t){return new v(this.app,{title:t.title,description:t.description,version:t.version,path:t.path||"api",persistAuthorization:t.persistAuthorization??!0,assetsPath:t.assetsPath,faviconFilePath:t.faviconPath,topbarIconFilePath:t.topbarIconPath,topbarBgColor:t.topbarBgColor}).setupSwagger(),this}static useGlobalPipes(...t){return t.length>0&&this.app.useGlobalPipes(...t),this}static useGlobalFilters(...e){const o=[new t.HttpExceptionFilter,new t.ValidationExceptionFilter,new t.NotFoundExceptionFilter,new t.ConflictExceptionFilter,new t.AuthorizationExceptionFilter,new t.GlobalExceptionFilter];return this.app.useGlobalFilters(...e.length>0?e:o),this}static useGlobalInterceptors(...t){return t.length>0&&this.app.useGlobalInterceptors(...t),this}static async start(t=Number(process.env.PORT)||3e3,e=void 0,o=!0){this.app.listen(t,e).then(async()=>{if(o){const t=await this.app.getUrl();this.logger.log("\ud83d\ude80 Application is running at: "+t)}})}},t.NotFoundError=x,t.PACKAGE_NAME=L,t.SwaggerBuilder=v,t.VERSION=$,t.ValidationError=N,t.isOperationBlocked=A,t.repoForModel=t=>{const e=s.Model.get(t);if(!e)throw new l.InternalError("Failed to find repository for "+t);return a.Repository.forModel(e)}},"object"==typeof exports&&"undefined"!=typeof module?e(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/reflection"),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/reflection","@decaf-ts/db-decorators","fs","path"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["for-nest"]={},t.decafTsDecoration,t.decafTsInjectableDecorators,t.nestjsCommon,t.decafTsDecoratorValidation,t.decafTsCore,t.nestjsSwagger,t.tslib,t.nestjsCore,t.decafTsLogging,t.decafTsReflection,t.decafTsDbDecorators,t.fs,t.path);
|
|
1
|
+
var t,e;t=this,e=function(t,e,o,r,s,a,i,n,c,p,d,l,u,h){"use strict";function g(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach(o=>{if("default"!==o){var r=Object.getOwnPropertyDescriptor(t,o);Object.defineProperty(e,o,r.get?r:{enumerable:!0,get:()=>t[o]})}}),e.default=t,Object.freeze(e)}var m=g(h);e.Decoration.for(o.InjectablesKeys.INJECTABLE).extend({decorator:(t,e)=>r.Injectable({scope:e.singleton?r.Scope.DEFAULT:r.Scope.REQUEST,durable:!e.singleton||void 0})}).apply(),e.Decoration.for(o.InjectablesKeys.INJECT).extend({decorator:(t,e)=>(e,o,s)=>r.Inject(t||e)(e,o,s)}).apply(),e.Decoration.for(s.ValidationKeys.REQUIRED).extend(i.ApiProperty({required:!0})).apply(),e.Decoration.for(s.ValidationKeys.MAX).extend({decorator:t=>i.ApiProperty({maximum:t})}).apply(),e.Decoration.for(s.ValidationKeys.MIN).extend({decorator:t=>i.ApiProperty({minimum:t})}).apply(),e.Decoration.for(s.ValidationKeys.MAX_LENGTH).extend({decorator:t=>i.ApiProperty({maxLength:t})}).apply(),e.Decoration.for(s.ValidationKeys.MIN_LENGTH).extend({decorator:t=>i.ApiProperty({minLength:t})}).apply(),e.Decoration.for(s.ValidationKeys.LIST).extend({decorator:t=>{const e=Array.isArray(t)?t[0]:t;return i.ApiProperty({type:[e]})}}).apply(),e.Decoration.for(s.ValidationKeys.PATTERN).extend({decorator:t=>i.ApiProperty({pattern:"string"==typeof t?t:t.source})}).apply(),e.Decoration.for(a.PersistenceKeys.COLUMN).extend({decorator:t=>i.ApiProperty({name:t})}).apply(),e.Decoration.for(e.DecorationKeys.DESCRIPTION).extend({decorator:t=>i.ApiProperty({description:t})}).apply();const f="DecafModuleOptions",y="DecafAdapter",E=Symbol("DecafHandlers"),_=Symbol("DecafAdapterForOptions");var A;let R=class{static{A=this}static{this._adapterInstance=null}static get log(){return this._logger||(this._logger=p.Logging.for(A)),this._logger}constructor(t,e){this.options=t,this.moduleRef=e}static async createAdapter(t){if(!this._adapterInstance){const e=this.log.for(this.createAdapter);e.info("Creating adapter instance..."),this._adapterInstance=new t.adapter(t.conf,t.alias),e.info("Adapter instance created successfully!")}return this._adapterInstance}static getAdapterInstance(){return this._adapterInstance}static forRoot(t){const e={provide:f,useValue:t},o={useFactory:async t=>A.createAdapter(t),provide:y,durable:!0,scope:r.Scope.DEFAULT,inject:[f]};return{module:A,providers:[o,e],exports:[o]}}async onApplicationShutdown(){const t=A.log.for(this.onApplicationShutdown),e=this.moduleRef.get(y);try{e&&(t.info("Shutting down"),await e.shutdown(),A._adapterInstance=null)}catch(e){t.error("Failed to shutdown application",e)}}};function b(t,o){const{handler:r,args:s}=e.Metadata.get(t,l.OperationKeys.REFLECT+l.OperationKeys.BLOCK)||{};return!!r&&(r(...s,o)??!1)}function P(t,e,o){const s={GET:[l.OperationKeys.READ,r.Get],POST:[l.OperationKeys.CREATE,r.Post],PUT:[l.OperationKeys.UPDATE,r.Put],PATCH:[l.OperationKeys.UPDATE,r.Patch],DELETE:[l.OperationKeys.DELETE,r.Delete]},[a,n]=s[e];return b(t,a)?d.apply(i.ApiExcludeEndpoint()):d.apply(n(o))}function w(t=[]){const e=t.map(t=>i.ApiParam({name:t.name,description:t.description??"Path parameter: "+t.name,required:t.required??!0,type:t.type??String}));return r.applyDecorators(...e)}R=A=n.__decorate([r.Global(),r.Module({}),n.__param(0,r.Inject(f)),n.__metadata("design:paramtypes",[Object,c.ModuleRef])],R);const O=r.createParamDecorator((t,e)=>{const o=e.switchToHttp().getRequest(),r=o?.params??{},s=t??Object.keys(r),a=s.map(t=>r[t]);return{original:r,ordered:a,order:s}});function D(t=[]){const e=t.map(t=>t.name);return O(e)}t.DecafRequestContext=class{constructor(){this.cache=new Map}set(t,e){this.cache.set(t,e)}get(t){return this.cache.get(t)}},t.DecafRequestContext=n.__decorate([r.Injectable({scope:r.Scope.REQUEST})],t.DecafRequestContext),t.DecafHandlerExecutor=class{constructor(t,e){this.handlers=t,this.context=e}async exec(t){for(const e of this.handlers)await e.handle(this.context,t)}},t.DecafHandlerExecutor=n.__decorate([r.Injectable({scope:r.Scope.REQUEST}),n.__param(0,r.Inject(E)),n.__metadata("design:paramtypes",[Array,t.DecafRequestContext])],t.DecafHandlerExecutor);class T{static{this.log=p.Logging.for(T.name)}static create(e){const o=T.log.for(T.create),c=s.Model.tableName(e),d=p.toKebabCase(c),l=e.name,{description:u,apiProperties:h,path:g}=T.getRouteParametersFromModel(e);o.debug("Creating controller for model: "+l);let m=class extends p.LoggedClass{constructor(t){super(),this.clientContext=t,this.pk=s.Model.pk(e),o.info(`Registering dynamic controller for model: ${l} route: /${d}`)}get repository(){this._repo||(this._repo=a.Repository.forModel(e));const t=this.clientContext.get(_);return t?this._repo.for(t):this._repo}async create(t){const e=this.log.for(this.create);let o;e.verbose("creating new "+l);try{o=await this.repository.create(t)}catch(t){throw e.error("Failed to create new "+l,t),t}return e.info(`created new ${l} with id ${o[this.pk]}`),o}async read(t){const{id:e}=t,o=this.log.for(this.read);let r;try{o.debug(`reading ${l} with ${this.pk} ${e}`),r=await this.repository.read(e)}catch(t){throw o.error(`Failed to read ${l} with id ${e}`,t),t}return o.info(`read ${l} with id ${r[this.pk]}`),r}async query(t){const e=this.log.for(this.read);let o;try{e.debug(`Querying ${l} using method "${t}"`),o=await this.repository[t]()}catch(o){throw e.error(`Failed to query ${l} using method "${t}"`,o),o}return e.info(`Successfully queried ${l} using method "${t}"`),o}async update(t,e){const o=this.log.for(this.update);let r;try{o.info(`updating ${l} with ${this.pk} ${e[this.pk]}`),r=await this.repository.create(e)}catch(t){throw o.error(t),t}return r}async delete(t){const e=this.log.for(this.delete);let o;try{e.debug(`deleting ${l} with ${this.pk} ${t}`),o=await this.repository.read("id")}catch(t){throw e.error(`Failed to delete ${l} with id id`,t),t}return e.info(`deleted ${l} with id ${o[this.pk]}`),o}};return n.__decorate([P(e,"POST"),i.ApiOperation({summary:`Create a new ${l}.`}),i.ApiBody({description:"Payload for "+l,schema:{$ref:i.getSchemaPath(e)}}),i.ApiCreatedResponse({description:l+" created successfully."}),i.ApiBadRequestResponse({description:"Payload validation failed."}),i.ApiUnprocessableEntityResponse({description:"Repository rejected the provided payload."}),n.__param(0,r.Body()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object]),n.__metadata("design:returntype",Promise)],m.prototype,"create",null),n.__decorate([P(e,"GET",g),w(h),i.ApiOperation({summary:`Retrieve a ${l} record by id.`}),i.ApiOkResponse({description:l+" retrieved successfully."}),i.ApiNotFoundResponse({description:`No ${l} record matches the provided identifier.`}),n.__param(0,r.Param()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object]),n.__metadata("design:returntype",Promise)],m.prototype,"read",null),n.__decorate([P(e,"GET","query/:method"),i.ApiOperation({summary:`Retrieve ${l} records by query.`}),i.ApiParam({name:"method",description:"Query method to be called"}),i.ApiOkResponse({description:l+" retrieved successfully."}),i.ApiNotFoundResponse({description:`No ${l} records matches the query.`}),n.__param(0,r.Param("method")),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[String]),n.__metadata("design:returntype",Promise)],m.prototype,"query",null),n.__decorate([P(e,"PUT",g),w(h),i.ApiOperation({summary:`Replace an existing ${l} record with a new payload.`}),i.ApiBody({description:"Payload for replace a existing record of "+l,schema:{$ref:i.getSchemaPath(e)}}),i.ApiOkResponse({description:e+" record replaced successfully."}),i.ApiNotFoundResponse({description:`No ${l} record matches the provided identifier.`}),i.ApiBadRequestResponse({description:"Payload validation failed."}),n.__param(0,D(h)),n.__param(1,r.Body()),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object,s.Model]),n.__metadata("design:returntype",Promise)],m.prototype,"update",null),n.__decorate([P(e,"DELETE",g),w(h),i.ApiOperation({summary:`Delete a ${l} record by id.`}),i.ApiOkResponse({description:l+" record deleted successfully."}),i.ApiNotFoundResponse({description:`No ${l} record matches the provided identifier.`}),n.__param(0,D(h)),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object]),n.__metadata("design:returntype",Promise)],m.prototype,"delete",null),m=n.__decorate([r.Controller(d),i.ApiTags(l),i.ApiExtraModels(e),n.__metadata("design:paramtypes",[t.DecafRequestContext])],m),m}static getRouteParametersFromModel(t){const o=new t({}),r=s.Model.pk(t),a=l.DBKeys.COMPOSED,i=Reflect.getMetadata(a,o,r)?.args??[],n=Array.isArray(i)&&i.length>0?[...i]:[r],c=e.Metadata.description(t),p=Array.from(new Set(n)),d=p.map(t=>":"+t).join("/");return{description:c,apiProperties:p.map(o=>({name:o,description:e.Metadata.description(t,o),required:!0,type:String})),path:d}}}var F,C;t.DecafRequestHandlerInterceptor=class{constructor(t){this.executor=t}async intercept(t,e){const o=t.switchToHttp().getRequest();return await this.executor.exec(o),e.handle()}},t.DecafRequestHandlerInterceptor=n.__decorate([r.Injectable({scope:r.Scope.REQUEST}),n.__metadata("design:paramtypes",[t.DecafHandlerExecutor])],t.DecafRequestHandlerInterceptor),t.DecafModelModule=class{static{F=this}static{this.log=p.Logging.for(F.name)}static forRoot(e,o=[]){const r=this.log.for(this.forRoot);r.info("Generating controllers for flavour...");const s=a.Adapter.models(e).map(T.create);return r.info(`Generated ${s.length} controllers`),{module:F,controllers:s,providers:[{provide:E,useFactory:()=>o.map(t=>(r.info("Registered request handler: "+t.name),new t))},t.DecafRequestContext,t.DecafHandlerExecutor,{provide:c.APP_INTERCEPTOR,useClass:t.DecafRequestHandlerInterceptor}]}}},t.DecafModelModule=F=n.__decorate([r.Module({})],t.DecafModelModule),t.DecafModule=C=class{static async forRootAsync(e){const{autoControllers:o}=e,r=(await R.createAdapter(e)).flavour,s=[R.forRoot(e)];return o&&s.push(t.DecafModelModule.forRoot(r,e.handlers)),{module:C,imports:s}}},t.DecafModule=C=n.__decorate([r.Module({})],t.DecafModule);class x extends a.ForbiddenError{constructor(t){super(t,x.name)}}class S{constructor(t,e){const o=e?.status??r.HttpStatus.INTERNAL_SERVER_ERROR,s=e?.message??"Internal Server Error",a=(e?.error??r.HttpStatus[o]??"HTTP_EXCEPTION").toString().toUpperCase();Object.assign(this,{status:o,message:s,error:a,timestamp:(new Date).toISOString(),path:t.url,method:t.method})}}class I extends Error{constructor(t="Unauthorized"){super(t),this.name="AuthorizationError",this.status=401,this.code="UNAUTHORIZED",Object.setPrototypeOf(this,I.prototype)}}t.AuthorizationExceptionFilter=class{catch(t,e){const o=e.switchToHttp(),s=o.getRequest(),a=o.getResponse(),i=new S(s,{error:"UNAUTHORIZED",status:r.HttpStatus.UNAUTHORIZED,message:t.message});a.status(r.HttpStatus.UNAUTHORIZED).json(i)}},t.AuthorizationExceptionFilter=n.__decorate([r.Catch(I)],t.AuthorizationExceptionFilter);class N extends Error{constructor(t="Conflict"){super(t),this.name="ConflictError",this.status=409,this.code="CONFLICT",Object.setPrototypeOf(this,N.prototype)}}t.ConflictExceptionFilter=class{catch(t,e){const o=e.switchToHttp(),s=o.getResponse(),a=o.getRequest(),i=new S(a,{status:r.HttpStatus.CONFLICT,message:t.message,error:"CONFLICT"});s.status(i.status).json(i)}},t.ConflictExceptionFilter=n.__decorate([r.Catch(N)],t.ConflictExceptionFilter),t.GlobalExceptionFilter=class{catch(t,e){const o=e.switchToHttp(),s=o.getRequest(),a=o.getResponse();let i,n=r.HttpStatus.INTERNAL_SERVER_ERROR,c="Internal Server Error";if(t instanceof r.HttpException){const e=t.getResponse();n=t.getStatus(),c=(e?.message||t.message)??c,i=e?.error??t.name}else t instanceof Error&&(c=t.message,i=t.name);const p=new S(s,{status:n,message:c,error:i});a.status(p.status).json(p)}},t.GlobalExceptionFilter=n.__decorate([r.Catch()],t.GlobalExceptionFilter),t.HttpExceptionFilter=class{catch(t,e){const o=e.switchToHttp(),r=o.getResponse(),s=o.getRequest(),a=t.getStatus(),i=new S(s,{status:a,message:t.message,error:t.name});r.status(i.status).json(i)}},t.HttpExceptionFilter=n.__decorate([r.Catch(r.HttpException)],t.HttpExceptionFilter);class j extends Error{constructor(t="Resource not found"){super(t),this.name="NotFoundError",this.status=404,this.code="NOT_FOUND",Object.setPrototypeOf(this,j.prototype)}}t.NotFoundExceptionFilter=class{catch(t,e){const o=e.switchToHttp(),s=o.getResponse(),a=o.getRequest(),i=new S(a,{status:r.HttpStatus.NOT_FOUND,message:t.message,error:"NOT_FOUND"});s.status(i.status).json(i)}},t.NotFoundExceptionFilter=n.__decorate([r.Catch(j)],t.NotFoundExceptionFilter);class M extends Error{constructor(t="Validation failed"){super(t),this.name="ValidationError",this.status=422,this.code="VALIDATION_ERROR",Object.setPrototypeOf(this,M.prototype)}}t.ValidationExceptionFilter=class{catch(t,e){const o=e.switchToHttp(),s=o.getResponse(),a=o.getRequest(),i=new S(a,{status:r.HttpStatus.UNPROCESSABLE_ENTITY,message:t.message,error:"VALIDATION_ERROR"});s.status(i.status).json(i)}},t.ValidationExceptionFilter=n.__decorate([r.Catch(M)],t.ValidationExceptionFilter);const v={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 q{constructor(t){this.options={...t}}customCSS(){let t="";return this.options.topbarIconPath&&(t+=`.topbar-wrapper { content: url('data:image/png;base64,${this.b64(this.options.topbarIconPath)}'); width: 200px; height: auto; }\n`),t+`\n .topbar-wrapper svg { visibility: hidden; }\n .swagger-ui .topbar { background-color: ${this.options.topbarBgColor||v.topbarBgColor}; }\n `}getCustomOptions(){const t={};return this.options.faviconPath&&(t.customfavIcon=this.b64(this.options.faviconPath,!0)),{customSiteTitle:this.options.title,...t,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(t,e=!1){const o=m.join(this.options.assetsPath||"",t),r=u.readFileSync(o,{encoding:"base64"});return e?"data:image/png;base64,"+r:r}}class H{constructor(t,e){this.app=t,this.options=e}createDocument(){const t=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,e=(new i.DocumentBuilder).setTitle(this.options.title).setDescription(t).setVersion(this.options.version||"0.0.1").addBearerAuth(this.options.auth||v.auth).build();return i.SwaggerModule.createDocument(this.app,e,{extraModels:this.options.extraModels||[]})}setupSwagger(){const t=this.createDocument(),e=new q({title:this.options.title,path:this.options.path||v.path,persistAuthorization:this.options.persistAuthorization??!0,assetsPath:this.options.assetsPath,faviconPath:this.options.faviconFilePath,topbarIconPath:this.options.topbarIconFilePath,topbarBgColor:this.options.topbarBgColor});i.SwaggerModule.setup(this.options.path||v.path,this.app,t,{...e.getCustomOptions()})}}const $="##VERSION##",L="##PACKAGE##";e.Metadata.registerLibrary(L,$),t.ApiOperationFromModel=P,t.ApiParamsFromModel=w,t.AuthorizationError=I,t.ConflictError=N,t.CorsError=x,t.DECAF_ADAPTER_ID=y,t.DECAF_ADAPTER_OPTIONS=_,t.DECAF_HANDLERS=E,t.DECAF_MODULE_OPTIONS=f,t.DecafParams=D,t.FromModelController=T,t.HttpResponseError=S,t.NestBootstraper=class{static get logger(){return this._logger||(this._logger=new r.Logger("NestBootstrap")),this._logger}static initialize(t){return this.app=t,this}static enableLogger(t){return this._logger=t||new r.Logger("NestBootstrap"),this.app.useLogger(this._logger),this}static enableCors(t=[],e=["GET","POST","PUT","DELETE"]){const o="*"===t?"*":t.map(t=>t.trim().toLowerCase()),r={origin:(t,e)=>t?"*"===o||Array.isArray(o)&&o.includes(t.toLowerCase())?e(null,!0):void e(new x(`Origin ${t} not allowed`)):e(null,!0),credentials:!0,methods:e.join(",")};return this.app.enableCors(r),this}static useHelmet(t){try{const e=require("helmet");this.app.use(e(t)),this.logger.log("Helmet middleware enabled successfully.")}catch(t){this.logger.warn("Helmet not installed. Skipping middleware.")}return this}static setupSwagger(t){return new H(this.app,{title:t.title,description:t.description,version:t.version,path:t.path||"api",persistAuthorization:t.persistAuthorization??!0,assetsPath:t.assetsPath,faviconFilePath:t.faviconPath,topbarIconFilePath:t.topbarIconPath,topbarBgColor:t.topbarBgColor}).setupSwagger(),this}static useGlobalPipes(...t){return t.length>0&&this.app.useGlobalPipes(...t),this}static useGlobalFilters(...e){const o=[new t.HttpExceptionFilter,new t.ValidationExceptionFilter,new t.NotFoundExceptionFilter,new t.ConflictExceptionFilter,new t.AuthorizationExceptionFilter,new t.GlobalExceptionFilter];return this.app.useGlobalFilters(...e.length>0?e:o),this}static useGlobalInterceptors(...t){return t.length>0&&this.app.useGlobalInterceptors(...t),this}static async start(t=Number(process.env.PORT)||3e3,e=void 0,o=!0){this.app.listen(t,e).then(async()=>{if(o){const t=await this.app.getUrl();this.logger.log("\ud83d\ude80 Application is running at: "+t)}})}},t.NotFoundError=j,t.PACKAGE_NAME=L,t.SwaggerBuilder=H,t.VERSION=$,t.ValidationError=M,t.isOperationBlocked=b,t.repoForModel=t=>{const e=s.Model.get(t);if(!e)throw new l.InternalError("Failed to find repository for "+t);return a.Repository.forModel(e)}},"object"==typeof exports&&"undefined"!=typeof module?e(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/reflection"),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/reflection","@decaf-ts/db-decorators","fs","path"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["for-nest"]={},t.decafTsDecoration,t.decafTsInjectableDecorators,t.nestjsCommon,t.decafTsDecoratorValidation,t.decafTsCore,t.nestjsSwagger,t.tslib,t.nestjsCore,t.decafTsLogging,t.decafTsReflection,t.decafTsDbDecorators,t.fs,t.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/DecafParams.ts","../src/RepoFactory.ts","../src/decaf-model/FromModelController.ts","../src/decaf-model/DecafModelModule.ts","../src/module.ts","../src/factory/errors/cors.ts","../src/factory/exceptions/HttpResponseError.ts","../src/factory/exceptions/AuthorizationExceptionFilter.ts","../src/factory/exceptions/ConflictExceptionFilter.ts","../src/factory/exceptions/GlobalExceptionFilter.ts","../src/factory/exceptions/HttpExceptionFilter.ts","../src/factory/exceptions/NotFoundExceptionFilter.ts","../src/factory/exceptions/ValidationExceptionFilter.ts","../src/factory/openapi/constants.ts","../src/factory/openapi/SwaggerCustomUI.ts","../src/factory/openapi/SwaggerBuilder.ts","../src/index.ts","../src/factory/NestBootstraper.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],"names":["Decoration","for","InjectablesKeys","INJECTABLE","extend","decorator","category","cfg","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","DecafCoreModule","this","_adapterInstance","log","_logger","Logging","DecafCoreModule_1","constructor","options","moduleRef","createAdapter","info","adapter","conf","alias","getAdapterInstance","forRoot","typeOrmModuleOptions","provide","useValue","useFactory","async","opts","inject","module","providers","exports","onApplicationShutdown","get","shutdown","e","error","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","OrderedParams","createParamDecorator","order","ctx","req","switchToHttp","getRequest","original","params","orderList","Object","keys","ordered","k","DecafParams","RepoFactory","model","Model","InternalError","Repository","forModel","FromModelController","create","ModelClazz","tableName","table","routePath","toKebabCase","modelClazzName","apiProperties","getRouteParametersFromModel","debug","DynamicModelController","LoggedClass","repoFactory","super","repo","pk","data","created","verbose","read","pathParams","id","query","method","results","update","routeParams","body","updated","delete","ApiOperation","summary","ApiBody","schema","$ref","getSchemaPath","ApiCreatedResponse","ApiBadRequestResponse","ApiUnprocessableEntityResponse","Body","prototype","ApiOkResponse","ApiNotFoundResponse","Param","ApiParam","Controller","ApiTags","ApiExtraModels","instance","composedKeyMetaKey","DBKeys","COMPOSED","composedKeys","Reflect","getMetadata","keysToReturn","length","uniqueKeys","from","Set","key","join","DecafModelModule","DecafModelModule_1","flavour","controllers","Adapter","models","DecafModule","DecafModule_1","forRootAsync","autoControllers","imports","push","CorsError","ForbiddenError","msg","HttpResponseError","request","responseError","status","HttpStatus","INTERNAL_SERVER_ERROR","message","toString","toUpperCase","assign","timestamp","Date","toISOString","url","AuthorizationError","Error","code","setPrototypeOf","AuthorizationExceptionFilter","exception","host","response","getResponse","httpResponseError","UNAUTHORIZED","json","Catch","ConflictError","ConflictExceptionFilter","CONFLICT","GlobalExceptionFilter","HttpException","res","getStatus","HttpExceptionFilter","NotFoundError","NotFoundExceptionFilter","NOT_FOUND","ValidationError","ValidationExceptionFilter","UNPROCESSABLE_ENTITY","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","logger","Logger","initialize","enableLogger","customLogger","useLogger","enableCors","origins","allowMethods","allowedOrigins","o","trim","toLowerCase","corsOptions","origin","callback","includes","credentials","methods","useHelmet","helmet","require","use","warn","useGlobalPipes","pipes","useGlobalFilters","filters","defaultFilters","useGlobalInterceptors","interceptors","start","port","Number","process","env","PORT","listen","then","getUrl","m"],"mappings":"qVAWAA,EAAAA,WAAWC,IAAIC,EAAeA,gBAACC,YAC5BC,OAAO,CACNC,UAAW,CACTC,EACAC,IAEOC,aAAW,CAChBC,MAAOF,EAAIG,UAAYC,EAAKA,MAACC,QAAUD,EAAKA,MAACE,QAC7CC,SAASP,EAAIG,gBAAYK,MAI9BC,QAEHhB,EAAAA,WAAWC,IAAIC,EAAeA,gBAACe,QAC5Bb,OAAO,CACNC,UAAW,CACTC,EAEAC,IAEO,CACLW,EACAC,EACAC,IAEOC,EAAAA,OAAOf,GAAaY,EAApBG,CACLH,EACAC,EACAC,KAKPJ,QAEHhB,EAAAA,WAAWC,IAAIqB,EAAcA,eAACC,UAC3BnB,OACCoB,EAAAA,YAAY,CACVC,UAAU,KAGbT,QAEHhB,EAAAA,WAAWC,IAAIqB,EAAcA,eAACI,KAC3BtB,OAAO,CACNC,UAA2BsB,GAClBH,cAAY,CAAEI,QAASD,MAGjCX,QAEHhB,EAAAA,WAAWC,IAAIqB,EAAcA,eAACO,KAC3BzB,OAAO,CACNC,UAA2ByB,GAClBN,cAAY,CAAEO,QAASD,MAGjCd,QAEHhB,EAAAA,WAAWC,IAAIqB,EAAcA,eAACU,YAC3B5B,OAAO,CACNC,UAAiCsB,GACxBH,cAAY,CAAES,UAAWN,MAGnCX,QAEHhB,EAAAA,WAAWC,IAAIqB,EAAcA,eAACY,YAC3B9B,OAAO,CACNC,UAAiCyB,GACxBN,cAAY,CAAEW,UAAWL,MAGnCd,QAkBHhB,EAAAA,WAAWC,IAAIqB,EAAcA,eAACc,MAC3BhC,OAAO,CACNC,UACEgC,IAKA,MAAMC,EAAIC,MAAMC,QAAQH,GAASA,EAAM,GAAKA,EAC5C,OAAOb,EAAWA,YAAC,CAAEiB,KAAM,CAACH,IAC7B,IAEFtB,QAYHhB,EAAAA,WAAWC,IAAIqB,EAAcA,eAACoB,SAC3BtC,OAAO,CACNC,UAA+BsC,GACtBnB,cAAY,CACjBoB,QAAwB,iBAARD,EAAmBA,EAAMA,EAAIE,WAIlD7B,QAEHhB,EAAAA,WAAWC,IAAI6C,EAAeA,gBAACC,QAC5B3C,OAAO,CACNC,UAA8B2C,GACrBxB,cAAY,CACjBwB,KAAMA,MAIXhC,QAEHhB,EAAAA,WAAWC,IAAIgD,EAAcA,eAACC,aAC3B9C,OAAO,CACNC,UAAmC8C,GAC1B3B,cAAY,CACjB2B,YAAaA,MAIlBnC,QC3JU,MAAAoC,EAAuB,qBACvBC,EAAmB,qBCgBzB,IAAMC,EAAN,2BAMUC,KAAgBC,iBAC7B,IAAK,CAEG,cAAWC,GAEnB,OADKF,KAAKG,UAASH,KAAKG,QAAUC,EAAAA,QAAQ1D,IAAI2D,IACvCL,KAAKG,OACb,CAED,WAAAG,CAEmBC,EACAC,GADAR,KAAOO,QAAPA,EACAP,KAASQ,UAATA,CACf,CAEJ,0BAAaC,CACXF,GAEA,IAAKP,KAAKC,iBAAkB,CAC1B,MAAMC,EAAMF,KAAKE,IAAIxD,IAAIsD,KAAKS,eAC9BP,EAAIQ,KAAK,gCACTV,KAAKC,iBAAmB,IAAIM,EAAQI,QAAQJ,EAAQK,KAAML,EAAQM,OAClEX,EAAIQ,KAAK,yCACV,CACD,OAAOV,KAAKC,gBACb,CAED,yBAAOa,GACL,OAAOd,KAAKC,gBACb,CAED,cAAOc,CAAQR,GACb,MAAMS,EAAuB,CAC3BC,QAASpB,EACTqB,SAAUX,GAGNI,EAAgC,CACpCQ,WAAYC,MAAOC,GACVhB,EAAgBI,cAAcY,GAEvCJ,QAASnB,EACTvC,SAAS,EACTL,MAAOE,EAAKA,MAACC,QACbiE,OAAQ,CAACzB,IAMX,MAAO,CACL0B,OAAQlB,EACRmB,UALgB,CAACb,EAASK,GAM1BS,QALc,CAACd,GAOlB,CAED,2BAAMe,GACJ,MAAMxB,EAAMG,EAAgBH,IAAIxD,IAAIsD,KAAK0B,uBACnCf,EAAUX,KAAKQ,UAAUmB,IAAa7B,GAC5C,IACMa,IACFT,EAAIQ,KAAK,uBACHC,EAAQiB,WACdvB,EAAgBJ,iBAAmB,KAEtC,CAAC,MAAO4B,GACP3B,EAAI4B,MAAM,iCAAkCD,EAC7C,CACF,GC3Ea,SAAAE,EACdC,EACAC,GAEA,MAAMC,QAAEA,EAAOC,KAAEA,GAAUC,EAAAA,SAAST,IAClCK,EACAK,EAAaA,cAACC,QAAUD,EAAaA,cAACE,QACnC,CAAE,EASP,QAAQL,IAAmBA,KAAWC,EAAMF,KAAO,EACrD,UAUgBO,EACdR,EACAS,EACAC,GAEA,MAAMC,EAGF,CACFC,IAAK,CAACP,EAAAA,cAAcQ,KAAMC,OAC1BC,KAAM,CAACV,EAAAA,cAAcW,OAAQC,QAC7BC,IAAK,CAACb,EAAAA,cAAcc,OAAQC,OAC5BC,MAAO,CAAChB,EAAAA,cAAcc,OAAQG,SAC9BC,OAAQ,CAAClB,EAAAA,cAAckB,OAAQC,YAG1BC,EAAQC,GAAuBf,EAAWF,GACjD,OAAOV,EAAmBC,EAAkByB,GACxChG,EAAKA,MAACkG,EAAkBA,sBACxBlG,QAAMiG,EAAoBhB,GAChC,CChDgB,SAAAkB,EACdC,EAAoB,IAEpB,MAAMC,EAAaD,EAAME,IAAKC,GAC5BC,EAAAA,SAAY,CACVxE,KAAMuE,EAAEvE,KACRG,YAAaoE,EAAEpE,aAAe,mBAAmBoE,EAAEvE,KACnDvB,SAAU8F,EAAE9F,WAAY,EAExBgB,KAAM8E,EAAE9E,MAAQgF,UAGpB,OAAOC,EAAeA,mBAAIL,EAC5B,CFXa/D,EAAeM,EAAA+D,EAAAA,WAAA,CAF3BC,WACAC,EAAAA,OAAO,CAAA,GAgBHC,EAAAA,QAAA,EAAAzG,SAAO+B,6CAEoB2E,EAASA,aAjB5BzE,GGFb,MAAM0E,EAAgBC,EAAoBA,qBACxC,CAACC,EAA6BC,KAC5B,MAAMC,EAAMD,EAAIE,eAAeC,aACzBC,EAAYH,GAAKI,QAAU,CAAE,EAC7BC,EAAYP,GAASQ,OAAOC,KAAKJ,GACjCK,EAAUH,EAAUnB,IAAKuB,GAAMN,EAASM,IAC9C,MAAO,CAAEN,WAAUK,UAASV,MAAOO,KAUvB,SAAAK,EAAY1B,EAAoB,IAC9C,MAAMc,EAAQd,EAAME,IAAKC,GAAMA,EAAEvE,MACjC,OAAOgF,EAAcE,EACvB,CC3BwBlD,EAAA+D,YAAjB,MACL,IAAqBC,GAEnB,KADAA,EAAyB,iBAAVA,EAAsBC,EAAKA,MAAC/D,IAAI8D,GAAiBA,GAE9D,MAAM,IAAIE,EAAAA,cAAc,iCAAiCF,GAE3D,OAAOG,EAAUA,WAACC,SAASJ,EAC5B,GAPqBhE,EAAA+D,YAAApB,aAAA,CADvBnH,gBACYuI,qBCoBAM,SACa9F,KAAGE,IAAGE,EAAOA,QAAC1D,IAAIoJ,EAAoBrG,KAAM,CAEpE,aAAOsG,CAA6BC,GAClC,MAAM9F,EAAM4F,EAAoB5F,IAAIxD,IAAIoJ,EAAoBC,QACtDE,EAAYL,EAAAA,WAAWM,MAAMF,GAC7BG,EAAYC,cAAYH,GACxBI,EAAiBL,EAAWvG,MAE5BG,YAAEA,EAAW0G,cAAEA,EAAa5D,KAAEA,GAClCoD,EAAoBS,4BAA4BP,GAElD9F,EAAIsG,MAAM,kCAAkCH,GAE5C,IAGMI,EAHN,cAGqCC,cAKnC,WAAApG,CAA4BqG,GAC1BC,QAD0B5G,KAAW2G,YAAXA,EAE1BzG,EAAIQ,KACF,6CAA6C2F,aAA0BF,KAGzE,IACEnG,KAAK6G,KAAO7G,KAAK2G,YAAYjK,IAAIsJ,EAAWvG,MAC5CO,KAAK8G,GAAK9G,KAAK6G,KAAKC,EACrB,CAAC,MAAOjF,GACP7B,KAAKE,IAAI4B,MACP,8CAA8CkE,EAAWvG,SACzDoC,EAEH,CACF,CAeD,YAAMkE,CAAegB,GACnB,MAAM7G,EAAMF,KAAKE,IAAIxD,IAAIsD,KAAK+F,QAE9B,IAAIiB,EADJ9G,EAAI+G,QAAQ,gBAAgBZ,GAE5B,IACEW,QAAgBhH,KAAK6G,KAAKd,OAAOgB,EAClC,CAAC,MAAOlF,GAEP,MADA3B,EAAI4B,MAAM,wBAAwBuE,EAAkBxE,GAC9CA,CACP,CAID,OAHA3B,EAAIQ,KACF,eAAe2F,aAA2BW,EAAgBhH,KAAK8G,OAE1DE,CACR,CAWD,UAAME,CAAcC,GAClB,MAAMC,GAAEA,GAAOD,EACTjH,EAAMF,KAAKE,IAAIxD,IAAIsD,KAAKkH,MAC9B,IAAIA,EACJ,IACEhH,EAAIsG,MAAM,WAAWH,UAAuBrG,KAAK8G,MAAMM,KACvDF,QAAalH,KAAK6G,KAAKK,KAAKE,EAC7B,CAAC,MAAOvF,GAKP,MAJA3B,EAAI4B,MACF,kBAAkBuE,aAA0Be,IAC5CvF,GAEIA,CACP,CAGD,OADA3B,EAAIQ,KAAK,QAAQ2F,aAA2Ba,EAAalH,KAAK8G,OACvDI,CACR,CAWD,WAAMG,CAAuBC,GAC3B,MAAMpH,EAAMF,KAAKE,IAAIxD,IAAIsD,KAAKkH,MAC9B,IAAIK,EAEJ,IACErH,EAAIsG,MAAM,YAAYH,mBAAgCiB,MACtDC,QAAiBvH,KAAK6G,KAAaS,IACpC,CAAC,MAAOzF,GAKP,MAJA3B,EAAI4B,MACF,mBAAmBuE,mBAAgCiB,KACnDzF,GAEIA,CACP,CAKD,OAHA3B,EAAIQ,KACF,wBAAwB2F,mBAAgCiB,MAEnDC,CACR,CAkBD,YAAMC,CACwBC,EACpBC,GAER,MAAMxH,EAAMF,KAAKE,IAAIxD,IAAIsD,KAAKwH,QAC9B,IAAIG,EACJ,IACEzH,EAAIQ,KACF,YAAY2F,UAAuBrG,KAAK8G,MAAOY,EAAa1H,KAAK8G,OAEnEa,QAAgB3H,KAAK6G,KAAKd,OAAO2B,EAClC,CAAC,MAAO7F,GAEP,MADA3B,EAAI4B,MAAMD,GACJA,CACP,CACD,OAAO8F,CACR,CAWD,YAAM,CAAmCF,GACvC,MAAMvH,EAAMF,KAAKE,IAAIxD,IAAIsD,KAAK4H,QAC9B,IAAIV,EACJ,IACEhH,EAAIsG,MACF,YAAYH,UAAuBrG,KAAK8G,MAAgBW,KAE1DP,QAAalH,KAAK6G,KAAKK,KAAK,KAC7B,CAAC,MAAOrF,GAKP,MAJA3B,EAAI4B,MACF,oBAAoBuE,eACpBxE,GAEIA,CACP,CAED,OADA3B,EAAIQ,KAAK,WAAW2F,aAA2Ba,EAAalH,KAAK8G,OAC1DI,CACR,GAGH,OAzIQ9C,aAAA,CAbL5B,EAAsBwD,EAAY,QAClC6B,EAAYA,aAAC,CAAEC,QAAS,gBAAgBzB,OACxC0B,UAAQ,CACPnI,YAAa,eAAeyG,EAC5B2B,OAAQ,CAAEC,KAAMC,EAAaA,cAAClC,MAE/BmC,qBAAmB,CAClBvI,YAAgByG,EAAH,2BAEd+B,wBAAsB,CAAExI,YAAa,+BACrCyI,iCAA+B,CAC9BzI,YAAa,8CAED2E,UAAA,EAAA+D,EAAAA,mIAcb7B,EAAA8B,UAAA,SAAA,MAWKnE,aAAA,CATL5B,EAAsBwD,EAAY,MAAOtD,GACzCkB,EAAmB0C,GACnBuB,EAAYA,aAAC,CAAEC,QAAS,cAAczB,oBACtCmC,gBAAc,CACb5I,YAAgByG,EAAH,6BAEdoC,sBAAoB,CACnB7I,YAAa,MAAMyG,8CAET9B,UAAA,EAAAmE,EAAAA,oIAiBXjC,EAAA8B,UAAA,OAAA,MAWKnE,aAAA,CATL5B,EAAsBwD,EAAY,MAAO,iBACzC6B,EAAYA,aAAC,CAAEC,QAAS,YAAYzB,wBACpCsC,EAAAA,SAAS,CAAElJ,KAAM,SAAUG,YAAa,8BACxC4I,gBAAc,CACb5I,YAAgByG,EAAH,6BAEdoC,sBAAoB,CACnB7I,YAAa,MAAMyG,iCAER9B,EAAAA,QAAA,EAAAmE,QAAM,sIAmBlBjC,EAAA8B,UAAA,QAAA,MAkBKnE,aAAA,CAhBL5B,EAAsBwD,EAAY,MAAOtD,GACzCkB,EAAmB0C,GACnBuB,eAAa,CACZC,QAAS,uBAAuBzB,iCAEjC0B,UAAQ,CACPnI,YAAa,4CAA4CyG,EACzD2B,OAAQ,CAAEC,KAAMC,EAAaA,cAAClC,MAE/BwC,gBAAc,CACb5I,YAAgBoG,EAAH,mCAEdyC,sBAAoB,CACnB7I,YAAa,MAAMyG,8CAEpB+B,wBAAsB,CAAExI,YAAa,+BAEnC2E,EAAAA,QAAA,EAAAgB,EAAYe,IACZ/B,UAAA,EAAA+D,EAAAA,sFAAa5C,EAAKA,mDAcpBe,EAAA8B,UAAA,SAAA,MAWKnE,aAAA,CATL5B,EAAsBwD,EAAY,SAAUtD,GAC5CkB,EAAmB0C,GACnBuB,EAAYA,aAAC,CAAEC,QAAS,YAAYzB,oBACpCmC,gBAAc,CACb5I,YAAgByG,EAAH,kCAEdoC,sBAAoB,CACnB7I,YAAa,MAAMyG,8CAEP9B,EAAAA,QAAA,EAAAgB,EAAYe,+HAiBzBG,EAAA8B,UAAA,SAAA,MAzKG9B,EAAsBrC,EAAAA,WAAA,CAH3BwE,EAAAA,WAAWzC,GACX0C,EAAAA,QAAQxC,GACRyC,EAAAA,eAAe9C,qCAM2BR,EAAAA,eALrCiB,GA4KCA,CACR,CAED,kCAAOF,CACLP,GAEA,MAAM+C,EAAW,IAAI/C,EAAW,CAAA,GAC1Bc,EAAKpB,EAAAA,MAAMoB,GAAGd,GACdgD,EAAqBC,EAAMA,OAACC,SAC5BC,EACJC,QAAQC,YAAYL,EAAoBD,EAAUjC,IAAe3E,MACjE,GAEImH,EACJtK,MAAMC,QAAQkK,IAAiBA,EAAaI,OAAS,EACjD,IAAIJ,GACJ,CAACrC,GAEDlH,EAAcwC,EAAAA,SAASxC,YAAYoG,GAGnCwD,EAAaxK,MAAMyK,KAAK,IAAIC,IAAIJ,IAEhC5G,EAAO8G,EAAWzF,IAAK4F,GAAQ,IAAIA,GAAOC,KAAK,KASrD,MAAO,CAAEhK,cAAa0G,cARAkD,EAAWzF,IAAK4F,IAC7B,CACLlK,KAAMkK,EACN/J,YAAawC,EAAQA,SAACxC,YAAYoG,EAAY2D,GAC9CzL,UAAU,EACVgB,KAAMgF,UAG2BxB,OACtC,UClP0BjB,EAAAoI,iBAAtB,2BACmB7J,KAAGE,IAAGE,EAAOA,QAAC1D,IAAIoN,EAAiBrK,KAAM,CAEjE,cAAOsB,CAAQgJ,GACb,MAAM7J,EAAMF,KAAKE,IAAIxD,IAAIsD,KAAKe,SAC9Bb,EAAIQ,KAAK,yCAET,MACMsJ,EADgBC,EAAAA,QAAQC,OAAOH,GACHhG,IAAI+B,EAAoBC,QAI1D,OAFA7F,EAAIQ,KAAK,aAAasJ,EAAYT,sBAE3B,CACLhI,OAAQuI,EACRE,cACAxI,UAAW,CAACgE,EAAAA,aAEf,GAjBUqE,EAAAA,iBAAgBC,EAAA1F,EAAAA,WAAA,CAD5BE,EAAAA,OAAO,CAAA,IACKuF,oBCEAM,EAAAA,YAANC,EAAA,MACL,yBAAaC,CACX9J,GAEA,MAAM+J,gBAAEA,GAAoB/J,EAGtBwJ,SADgBhK,EAAgBU,cAAcF,IAC5BwJ,QAElBQ,EAOU,CAACxK,EAAgBgB,QAAQR,IAMzC,OAJI+J,GACFC,EAAQC,KAAKX,EAAAA,iBAAiB9I,QAAQgJ,IAGjC,CACLxI,OAAQ6I,EACRG,QAASA,EAEZ,GA1BUJ,EAAAA,YAAWC,EAAAhG,EAAAA,WAAA,CADvBE,EAAAA,OAAO,CAAA,IACK6F,eCPP,MAAOM,UAAkBC,EAAAA,eAC7B,WAAApK,CAAYqK,GACV/D,MAAM+D,EAAKF,EAAUhL,KACtB,QCHUmL,EAQX,WAAAtK,CACEuK,EACAC,GAEA,MAAMC,EAASD,GAAeC,QAAUC,EAAAA,WAAWC,sBAC7CC,EAAUJ,GAAeI,SAAW,wBACpCpJ,GACJgJ,GAAehJ,OACfkJ,EAAAA,WAAWD,IACX,kBAECI,WACAC,cAEHjG,OAAOkG,OAAOrL,KAAM,CAClB+K,SACAG,UACApJ,QACAwJ,WAAW,IAAIC,MAAOC,cACtB9I,KAAMmI,EAAQY,IACdnE,OAAQuD,EAAQvD,QAEnB,ECxBG,MAAOoE,UAA2BC,MAItC,WAAArL,CAAY4K,EAAU,gBACpBtE,MAAMsE,GACNlL,KAAKP,KAAO,qBACZO,KAAK+K,OAAS,IACd/K,KAAK4L,KAAO,eACZzG,OAAO0G,eAAe7L,KAAM0L,EAAmBnD,UAChD,EAIsC9G,EAAAqK,6BAAlC,MACL,MAAMC,EAA+BC,GACnC,MAAMpH,EAAMoH,EAAKlH,eACX+F,EAAUjG,EAAIG,aACdkH,EAAWrH,EAAIsH,cAEfC,EAAoB,IAAIvB,EAAkBC,EAAS,CACvD/I,MAAO,eACPiJ,OAAQC,EAAUA,WAACoB,aACnBlB,QAASa,EAAUb,UAGpBe,EAAiBlB,OAAOC,EAAUA,WAACoB,cAAcC,KAAKF,EACxD,GAbsC1K,EAAAqK,6BAAA1H,aAAA,CADxCkI,EAAAA,MAAMZ,IACMI,gCCdP,MAAOS,UAAsBZ,MAIjC,WAAArL,CAAY4K,EAAU,YACpBtE,MAAMsE,GACNlL,KAAKP,KAAO,gBACZO,KAAK+K,OAAS,IACd/K,KAAK4L,KAAO,WAEZzG,OAAO0G,eAAe7L,KAAMuM,EAAchE,UAC3C,EAIiC9G,EAAA+K,wBAA7B,MACL,MAAMT,EAA0BC,GAC9B,MAAMpH,EAAMoH,EAAKlH,eACXmH,EAAWrH,EAAIsH,cACfrB,EAAUjG,EAAIG,aAEdoH,EAAoB,IAAIvB,EAAkBC,EAAS,CACvDE,OAAQC,EAAUA,WAACyB,SACnBvB,QAASa,EAAUb,QACnBpJ,MAAO,aAGRmK,EAAiBlB,OAAOoB,EAAkBpB,QAAQsB,KAAKF,EACzD,GAbiC1K,EAAA+K,wBAAApI,aAAA,CADnCkI,EAAAA,MAAMC,IACMC,2BCbqB/K,EAAAiL,sBAA3B,MACL,MAAMX,EAAoBC,GACxB,MAAMpH,EAAMoH,EAAKlH,eACX+F,EAAUjG,EAAIG,aACdkH,EAAWrH,EAAIsH,cAErB,IAEIpK,EAFAiJ,EAASC,EAAUA,WAACC,sBACpBC,EAAU,wBAGd,GAAIa,aAAqBY,EAAAA,cAAe,CACtC,MAAMC,EAAWb,EAAUG,cAC3BnB,EAASgB,EAAUc,YACnB3B,GAAW0B,GAAK1B,SAAWa,EAAUb,UAAYA,EACjDpJ,EAAQ8K,GAAK9K,OAASiK,EAAUtM,IACjC,MAAUsM,aAAqBJ,QAC9BT,EAAUa,EAAUb,QACpBpJ,EAAQiK,EAAUtM,MAGpB,MAAM0M,EAAoB,IAAIvB,EAAkBC,EAAS,CACvDE,SACAG,UACApJ,UAEDmK,EAAiBlB,OAAOoB,EAAkBpB,QAAQsB,KAAKF,EACzD,GA1B+B1K,EAAAiL,sBAAAtI,aAAA,CADjCkI,WACYI,yBCDmBjL,EAAAqL,oBAAzB,MACL,MAAMf,EAA0BC,GAC9B,MAAMpH,EAAMoH,EAAKlH,eACXmH,EAAWrH,EAAIsH,cACfrB,EAAUjG,EAAIG,aACdgG,EAASgB,EAAUc,YAEnBV,EAAoB,IAAIvB,EAAkBC,EAAS,CACvDE,SACAG,QAASa,EAAUb,QACnBpJ,MAAOiK,EAAUtM,OAGlBwM,EAAiBlB,OAAOoB,EAAkBpB,QAAQsB,KAAKF,EACzD,GAd6B1K,EAAAqL,oBAAA1I,aAAA,CAD/BkI,EAAAA,MAAMK,EAAAA,gBACMG,uBCDP,MAAOC,UAAsBpB,MAIjC,WAAArL,CAAY4K,EAAU,sBACpBtE,MAAMsE,GACNlL,KAAKP,KAAO,gBACZO,KAAK+K,OAAS,IACd/K,KAAK4L,KAAO,YAEZzG,OAAO0G,eAAe7L,KAAM+M,EAAcxE,UAC3C,EAIiC9G,EAAAuL,wBAA7B,MACL,MAAMjB,EAA0BC,GAC9B,MAAMpH,EAAMoH,EAAKlH,eACXmH,EAAWrH,EAAIsH,cACfrB,EAAUjG,EAAIG,aAEdoH,EAAoB,IAAIvB,EAAkBC,EAAS,CACvDE,OAAQC,EAAUA,WAACiC,UACnB/B,QAASa,EAAUb,QACnBpJ,MAAO,cAGRmK,EAAiBlB,OAAOoB,EAAkBpB,QAAQsB,KAAKF,EACzD,GAbiC1K,EAAAuL,wBAAA5I,aAAA,CADnCkI,EAAAA,MAAMS,IACMC,2BCfP,MAAOE,UAAwBvB,MAInC,WAAArL,CAAY4K,EAAU,qBACpBtE,MAAMsE,GACNlL,KAAKP,KAAO,kBACZO,KAAK+K,OAAS,IACd/K,KAAK4L,KAAO,mBAEZzG,OAAO0G,eAAe7L,KAAMkN,EAAgB3E,UAC7C,EAImC9G,EAAA0L,0BAA/B,MACL,MAAMpB,EAA4BC,GAChC,MAAMpH,EAAMoH,EAAKlH,eACXmH,EAAWrH,EAAIsH,cACfrB,EAAUjG,EAAIG,aAEdoH,EAAoB,IAAIvB,EAAkBC,EAAS,CACvDE,OAAQC,EAAUA,WAACoC,qBACnBlC,QAASa,EAAUb,QACnBpJ,MAAO,qBAGRmK,EAAiBlB,OAAOoB,EAAkBpB,QAAQsB,KAAKF,EACzD,GAbmC1K,EAAA0L,0BAAA/I,aAAA,CADrCkI,EAAAA,MAAMY,IACMC,6BCNN,MAAME,EAAuC,CAClDC,MAAO,wCACP1N,YAAa,kDACb2N,QAAS,QACT7K,KAAM,OACN8K,gBAAiB,GACjBC,mBAAoB,GACpBC,KAAM,CACJxO,KAAM,OACNyO,OAAQ,SACRC,aAAc,MACdnO,KAAM,gBACNG,YAAa,kBACbiO,GAAI,UAENC,sBAAsB,EACtBC,cAAe,iBCnBJC,EAUX,WAAA1N,CAAYC,GACVP,KAAKO,QAAU,IACVA,EAEN,CAEO,SAAA0N,GACN,IAAIC,EAAM,GAKV,OAJIlO,KAAKO,QAAQ4N,iBAEfD,GAAO,yDADKlO,KAAKoO,IAAIpO,KAAKO,QAAQ4N,sDAIlCD,EACA,0GAE4ClO,KAAKO,QAAQwN,eAAiBV,EAAqBU,0BAGlG,CAED,gBAAAM,GACE,MAAMC,EAA+B,CAAA,EAKrC,OAJItO,KAAKO,QAAQgO,cACfD,EAAuB,cAAItO,KAAKoO,IAAIpO,KAAKO,QAAQgO,aAAa,IAGzD,CACLC,gBAAiBxO,KAAKO,QAAQ+M,SAC3BgB,EACHG,UAAWzO,KAAKiO,YAChBS,eAAgB,CACdZ,qBAAsB9N,KAAKO,QAAQuN,sBAErCa,gBAAiB3O,KAAKO,QAAQmC,KACvB1C,KAAKO,QAAQmC,KAAhB,kBACAlF,EACJoR,gBAAiB5O,KAAKO,QAAQmC,KACvB1C,KAAKO,QAAQmC,KAAhB,kBACAlF,EAEP,CAED,GAAA4Q,CAAIS,EAAcC,GAAe,GAC/B,MAAMC,EAAWrM,EAAKkH,KAAK5J,KAAKO,QAAQyO,YAAc,GAAIH,GACpDT,EAAMa,EAAAA,aAAaF,EAAU,CAAEG,SAAU,WAC/C,OAAOJ,EAAM,yBAA2BV,EAAMA,CAC/C,QClEUe,EACX,WAAA7O,CACmB8O,EACA7O,GADAP,KAAGoP,IAAHA,EACApP,KAAOO,QAAPA,CACf,CAEI,cAAA8O,GACN,MAAMzP,EAAcI,KAAKO,QAAQmC,KAC7B1C,KAAKO,QAAQX,YACb,GACA,oBAAoBI,KAAKO,QAAQmC,2CACjC,YAAY1C,KAAKO,QAAQmC,wCACzB1C,KAAKO,QAAQX,YAEX0P,GAAS,IAAIC,mBAChBC,SAASxP,KAAKO,QAAQ+M,OACtBmC,eAAe7P,GACf8P,WAAW1P,KAAKO,QAAQgN,SAAW,SACnCoC,cAAc3P,KAAKO,QAAQmN,MAAQL,EAAqBK,MACxDkC,QAEH,OAAOC,EAAaA,cAACR,eAAerP,KAAKoP,IAAKE,EAAQ,CACpDQ,YAAa9P,KAAKO,QAAQuP,aAAe,IAE5C,CAEM,YAAAC,GACL,MAAMC,EAAWhQ,KAAKqP,iBAChBY,EAAY,IAAIjC,EAAgB,CACpCV,MAAOtN,KAAKO,QAAQ+M,MACpB5K,KAAM1C,KAAKO,QAAQmC,MAAQ2K,EAAqB3K,KAChDoL,qBAAsB9N,KAAKO,QAAQuN,uBAAwB,EAC3DkB,WAAYhP,KAAKO,QAAQyO,WACzBT,YAAavO,KAAKO,QAAQiN,gBAC1BW,eAAgBnO,KAAKO,QAAQkN,mBAC7BM,cAAe/N,KAAKO,QAAQwN,gBAE9B8B,gBAAcK,MACZlQ,KAAKO,QAAQmC,MAAQ2K,EAAqB3K,KAC1C1C,KAAKoP,IACLY,EACA,IACKC,EAAU5B,oBAGlB,ECVU,MAAA8B,EAAU,cACVC,EAAe,cAE5BhO,EAAAA,SAASiO,gBAAgBD,EAAcD,+OCoE7B,iBAAWG,GAKjB,OAJKtQ,KAAKG,UAERH,KAAKG,QAAU,IAAIoQ,EAAMA,OAAC,kBAErBvQ,KAAKG,OACb,CAaD,iBAAOqQ,CAAWpB,GAEhB,OADApP,KAAKoP,IAAMA,EACJpP,IACR,CAcD,mBAAOyQ,CAAaC,GAGlB,OAFA1Q,KAAKG,QAAUuQ,GAAgB,IAAIH,EAAMA,OAAC,iBAC1CvQ,KAAKoP,IAAIuB,UAAU3Q,KAAKG,SACjBH,IACR,CAgBD,iBAAO4Q,CACLC,EAA0B,GAC1BC,EAAyB,CAAC,MAAO,OAAQ,MAAO,WAEhD,MAAMC,EACQ,MAAZF,EAAkB,IAAMA,EAAQ9M,IAAKiN,GAAMA,EAAEC,OAAOC,eAEhDC,EAA2B,CAC/BC,OAAQ,CAACA,EAAQC,IAEVD,EAGgB,MAAnBL,GACC/R,MAAMC,QAAQ8R,IACbA,EAAeO,SAASF,EAAOF,eAE1BG,EAAS,MAAM,QAGxBA,EAAS,IAAI5G,EAAU,UAAU2G,kBAVbC,EAAS,MAAM,GAYrCE,aAAa,EACbC,QAASV,EAAalH,KAAK,MAI7B,OADA5J,KAAKoP,IAAIwB,WAAWO,GACbnR,IACR,CAcD,gBAAOyR,CAAUlR,GACf,IAEE,MAAMmR,EAASC,QAAQ,UACvB3R,KAAKoP,IAAIwC,IAAIF,EAAOnR,IACpBP,KAAKsQ,OAAOpQ,IAAI,0CAEjB,CAAC,MAAO2B,GACP7B,KAAKsQ,OAAOuB,KAAK,6CAClB,CAED,OAAO7R,IACR,CAcD,mBAAO+P,CAAaxP,GAalB,OAZgB,IAAI4O,EAAenP,KAAKoP,IAAK,CAC3C9B,MAAO/M,EAAQ+M,MACf1N,YAAaW,EAAQX,YACrB2N,QAAShN,EAAQgN,QACjB7K,KAAMnC,EAAQmC,MAAQ,MACtBoL,qBAAsBvN,EAAQuN,uBAAwB,EACtDkB,WAAYzO,EAAQyO,WACpBxB,gBAAiBjN,EAAQgO,YACzBd,mBAAoBlN,EAAQ4N,eAC5BJ,cAAexN,EAAQwN,gBAEjBgC,eACD/P,IACR,CAcD,qBAAO8R,IAAkBC,GAEvB,OADIA,EAAMxI,OAAS,GAAGvJ,KAAKoP,IAAI0C,kBAAkBC,GAC1C/R,IACR,CAaD,uBAAOgS,IAAoBC,GACzB,MAAMC,EAAiB,CACrB,IAAIpF,sBACJ,IAAIK,4BACJ,IAAIH,0BACJ,IAAIR,0BACJ,IAAIV,+BACJ,IAAIY,yBAMN,OAHA1M,KAAKoP,IAAI4C,oBACHC,EAAQ1I,OAAS,EAAI0I,EAAUC,GAE9BlS,IACR,CAcD,4BAAOmS,IAAyBC,GAG9B,OAFIA,EAAa7I,OAAS,GACxBvJ,KAAKoP,IAAI+C,yBAAyBC,GAC7BpS,IACR,CAgBD,kBAAaqS,CACXC,EAAeC,OAAOC,QAAQC,IAAIC,OAAS,IAC3C1G,OAA2BxO,EAC3B0C,GAAe,GAEfF,KAAKoP,IAAIuD,OAAOL,EAAMtG,GAAa4G,KAAKxR,UACtC,GAAIlB,EAAK,CACP,MAAMuL,QAAYzL,KAAKoP,IAAIyD,SAC3B7S,KAAKsQ,OAAOpQ,IAAI,2CAAiCuL,EAClD,GAEJ,+HC9U0BhG,IAC5B,MAAMqN,EAAIpN,EAAAA,MAAM/D,IAAI8D,GACpB,IAAKqN,EACJ,MAAM,IAAInN,EAAAA,cAAc,iCAAiCF,GAE1D,OADaG,EAAAA,WAAWC,SAASiN,EAElC"}
|
|
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/DecafParams.ts","../src/request/DecafRequestContext.ts","../src/request/DecafHandlerExecutor.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/HttpResponseError.ts","../src/factory/exceptions/AuthorizationExceptionFilter.ts","../src/factory/exceptions/ConflictExceptionFilter.ts","../src/factory/exceptions/GlobalExceptionFilter.ts","../src/factory/exceptions/HttpExceptionFilter.ts","../src/factory/exceptions/NotFoundExceptionFilter.ts","../src/factory/exceptions/ValidationExceptionFilter.ts","../src/factory/openapi/constants.ts","../src/factory/openapi/SwaggerCustomUI.ts","../src/factory/openapi/SwaggerBuilder.ts","../src/index.ts","../src/factory/NestBootstraper.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","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","DecafCoreModule","this","_adapterInstance","log","_logger","Logging","DecafCoreModule_1","constructor","options","moduleRef","createAdapter","info","adapter","conf","alias","getAdapterInstance","forRoot","typeOrmModuleOptions","provide","useValue","useFactory","async","opts","inject","module","providers","exports","onApplicationShutdown","get","shutdown","e","error","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","OrderedParams","createParamDecorator","order","ctx","req","switchToHttp","getRequest","original","params","orderList","Object","keys","ordered","k","DecafParams","DecafRequestContext","cache","Map","set","key","value","DecafHandlerExecutor","handlers","context","exec","handle","FromModelController","create","ModelClazz","tableName","Model","routePath","toKebabCase","modelClazzName","apiProperties","getRouteParametersFromModel","debug","DynamicModelController","LoggedClass","clientContext","super","pk","repository","_repo","Repository","forModel","adapterOptions","data","created","verbose","read","pathParams","id","query","method","results","update","routeParams","body","updated","delete","ApiOperation","summary","ApiBody","schema","$ref","getSchemaPath","ApiCreatedResponse","ApiBadRequestResponse","ApiUnprocessableEntityResponse","Body","prototype","ApiOkResponse","ApiNotFoundResponse","Param","ApiParam","Controller","ApiTags","ApiExtraModels","instance","composedKeyMetaKey","DBKeys","COMPOSED","composedKeys","Reflect","getMetadata","keysToReturn","length","uniqueKeys","from","Set","join","DecafRequestHandlerInterceptor","executor","intercept","next","DecafModelModule","DecafModelModule_1","flavour","controllers","Adapter","models","H","APP_INTERCEPTOR","useClass","DecafModule","DecafModule_1","forRootAsync","autoControllers","imports","push","CorsError","ForbiddenError","msg","HttpResponseError","request","responseError","status","HttpStatus","INTERNAL_SERVER_ERROR","message","toString","toUpperCase","assign","timestamp","Date","toISOString","url","AuthorizationError","Error","code","setPrototypeOf","AuthorizationExceptionFilter","exception","host","response","getResponse","httpResponseError","UNAUTHORIZED","json","Catch","ConflictError","ConflictExceptionFilter","CONFLICT","GlobalExceptionFilter","HttpException","res","getStatus","HttpExceptionFilter","NotFoundError","NotFoundExceptionFilter","NOT_FOUND","ValidationError","ValidationExceptionFilter","UNPROCESSABLE_ENTITY","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","logger","Logger","initialize","enableLogger","customLogger","useLogger","enableCors","origins","allowMethods","allowedOrigins","o","trim","toLowerCase","corsOptions","origin","callback","includes","credentials","methods","useHelmet","helmet","require","use","warn","useGlobalPipes","pipes","useGlobalFilters","filters","defaultFilters","useGlobalInterceptors","interceptors","start","port","Number","process","env","PORT","listen","then","getUrl","model","m","InternalError"],"mappings":"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"}
|
package/dist/for-nest.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Decoration as t,DecorationKeys as e,Metadata as s}from"@decaf-ts/decoration";import{InjectablesKeys as r}from"@decaf-ts/injectable-decorators";import{Injectable as o,Scope as i,Inject as a,Global as n,Module as c,Get as p,Post as d,Put as l,Patch as h,Delete as u,applyDecorators as g,createParamDecorator as m,Body as f,Param as y,Controller as w,HttpStatus as E,Catch as b,HttpException as R,Logger as T}from"@nestjs/common";import{ValidationKeys as P,Model as A}from"@decaf-ts/decorator-validation";import{PersistenceKeys as O,Repository as I,Adapter as S,ForbiddenError as $}from"@decaf-ts/core";import{ApiProperty as v,ApiExcludeEndpoint as C,ApiParam as N,ApiOperation as F,ApiBody as D,getSchemaPath as j,ApiCreatedResponse as L,ApiBadRequestResponse as U,ApiUnprocessableEntityResponse as _,ApiOkResponse as x,ApiNotFoundResponse as q,ApiTags as H,ApiExtraModels as G,DocumentBuilder as M,SwaggerModule as k}from"@nestjs/swagger";import{__decorate as z,__param as B,__metadata as V}from"tslib";import{ModuleRef as J}from"@nestjs/core";import{Logging as Q,toKebabCase as Z,LoggedClass as X}from"@decaf-ts/logging";import{apply as K}from"@decaf-ts/reflection";import{OperationKeys as W,InternalError as Y,DBKeys as tt}from"@decaf-ts/db-decorators";import{readFileSync as et}from"fs";import*as st from"path";t.for(r.INJECTABLE).extend({decorator:(t,e)=>o({scope:e.singleton?i.DEFAULT:i.REQUEST,durable:!e.singleton||void 0})}).apply(),t.for(r.INJECT).extend({decorator:(t,e)=>(e,s,r)=>a(t||e)(e,s,r)}).apply(),t.for(P.REQUIRED).extend(v({required:!0})).apply(),t.for(P.MAX).extend({decorator:t=>v({maximum:t})}).apply(),t.for(P.MIN).extend({decorator:t=>v({minimum:t})}).apply(),t.for(P.MAX_LENGTH).extend({decorator:t=>v({maxLength:t})}).apply(),t.for(P.MIN_LENGTH).extend({decorator:t=>v({minLength:t})}).apply(),t.for(P.LIST).extend({decorator:t=>{const e=Array.isArray(t)?t[0]:t;return v({type:[e]})}}).apply(),t.for(P.PATTERN).extend({decorator:t=>v({pattern:"string"==typeof t?t:t.source})}).apply(),t.for(O.COLUMN).extend({decorator:t=>v({name:t})}).apply(),t.for(e.DESCRIPTION).extend({decorator:t=>v({description:t})}).apply();const rt="DecafModuleOptions",ot="DecafAdapter";var it;let at=class{static{it=this}static{this._adapterInstance=null}static get log(){return this._logger||(this._logger=Q.for(it)),this._logger}constructor(t,e){this.options=t,this.moduleRef=e}static async createAdapter(t){if(!this._adapterInstance){const e=this.log.for(this.createAdapter);e.info("Creating adapter instance..."),this._adapterInstance=new t.adapter(t.conf,t.alias),e.info("Adapter instance created successfully!")}return this._adapterInstance}static getAdapterInstance(){return this._adapterInstance}static forRoot(t){const e={provide:rt,useValue:t},s={useFactory:async t=>it.createAdapter(t),provide:ot,durable:!0,scope:i.DEFAULT,inject:[rt]};return{module:it,providers:[s,e],exports:[s]}}async onApplicationShutdown(){const t=it.log.for(this.onApplicationShutdown),e=this.moduleRef.get(ot);try{e&&(t.info("Shutting down"),await e.shutdown(),it._adapterInstance=null)}catch(e){t.error("Failed to shutdown application",e)}}};function nt(t,e){const{handler:r,args:o}=s.get(t,W.REFLECT+W.BLOCK)||{};return!!r&&(r(...o,e)??!1)}function ct(t,e,s){const r={GET:[W.READ,p],POST:[W.CREATE,d],PUT:[W.UPDATE,l],PATCH:[W.UPDATE,h],DELETE:[W.DELETE,u]},[o,i]=r[e];return nt(t,o)?K(C()):K(i(s))}function pt(t=[]){const e=t.map(t=>N({name:t.name,description:t.description??"Path parameter: "+t.name,required:t.required??!0,type:t.type??String}));return g(...e)}at=it=z([n(),c({}),B(0,a(rt)),V("design:paramtypes",[Object,J])],at);const dt=m((t,e)=>{const s=e.switchToHttp().getRequest(),r=s?.params??{},o=t??Object.keys(r),i=o.map(t=>r[t]);return{original:r,ordered:i,order:o}});function lt(t=[]){const e=t.map(t=>t.name);return dt(e)}let ht=class{for(t){if(!(t="string"==typeof t?A.get(t):t))throw new Y("Failed to find repository for "+t);return I.forModel(t)}};ht=z([o()],ht);class ut{static{this.log=Q.for(ut.name)}static create(t){const e=ut.log.for(ut.create),s=I.table(t),r=Z(s),o=t.name,{description:i,apiProperties:a,path:n}=ut.getRouteParametersFromModel(t);e.debug("Creating controller for model: "+o);let c=class extends X{constructor(s){super(),this.repoFactory=s,e.info(`Registering dynamic controller for model: ${o} route: /${r}`);try{this.repo=this.repoFactory.for(t.name),this.pk=this.repo.pk}catch(e){this.log.error(`Failed to initialize repository for model "${t.name}".`,e)}}async create(t){const e=this.log.for(this.create);let s;e.verbose("creating new "+o);try{s=await this.repo.create(t)}catch(t){throw e.error("Failed to create new "+o,t),t}return e.info(`created new ${o} with id ${s[this.pk]}`),s}async read(t){const{id:e}=t,s=this.log.for(this.read);let r;try{s.debug(`reading ${o} with ${this.pk} ${e}`),r=await this.repo.read(e)}catch(t){throw s.error(`Failed to read ${o} with id ${e}`,t),t}return s.info(`read ${o} with id ${r[this.pk]}`),r}async query(t){const e=this.log.for(this.read);let s;try{e.debug(`Querying ${o} using method "${t}"`),s=await this.repo[t]()}catch(s){throw e.error(`Failed to query ${o} using method "${t}"`,s),s}return e.info(`Successfully queried ${o} using method "${t}"`),s}async update(t,e){const s=this.log.for(this.update);let r;try{s.info(`updating ${o} with ${this.pk} ${e[this.pk]}`),r=await this.repo.create(e)}catch(t){throw s.error(t),t}return r}async delete(t){const e=this.log.for(this.delete);let s;try{e.debug(`deleting ${o} with ${this.pk} ${t}`),s=await this.repo.read("id")}catch(t){throw e.error(`Failed to delete ${o} with id id`,t),t}return e.info(`deleted ${o} with id ${s[this.pk]}`),s}};return z([ct(t,"POST"),F({summary:`Create a new ${o}.`}),D({description:"Payload for "+o,schema:{$ref:j(t)}}),L({description:o+" created successfully."}),U({description:"Payload validation failed."}),_({description:"Repository rejected the provided payload."}),B(0,f()),V("design:type",Function),V("design:paramtypes",[Object]),V("design:returntype",Promise)],c.prototype,"create",null),z([ct(t,"GET",n),pt(a),F({summary:`Retrieve a ${o} record by id.`}),x({description:o+" retrieved successfully."}),q({description:`No ${o} record matches the provided identifier.`}),B(0,y()),V("design:type",Function),V("design:paramtypes",[Object]),V("design:returntype",Promise)],c.prototype,"read",null),z([ct(t,"GET","query/:method"),F({summary:`Retrieve ${o} records by query.`}),N({name:"method",description:"Query method to be called"}),x({description:o+" retrieved successfully."}),q({description:`No ${o} records matches the query.`}),B(0,y("method")),V("design:type",Function),V("design:paramtypes",[String]),V("design:returntype",Promise)],c.prototype,"query",null),z([ct(t,"PUT",n),pt(a),F({summary:`Replace an existing ${o} record with a new payload.`}),D({description:"Payload for replace a existing record of "+o,schema:{$ref:j(t)}}),x({description:t+" record replaced successfully."}),q({description:`No ${o} record matches the provided identifier.`}),U({description:"Payload validation failed."}),B(0,lt(a)),B(1,f()),V("design:type",Function),V("design:paramtypes",[Object,A]),V("design:returntype",Promise)],c.prototype,"update",null),z([ct(t,"DELETE",n),pt(a),F({summary:`Delete a ${o} record by id.`}),x({description:o+" record deleted successfully."}),q({description:`No ${o} record matches the provided identifier.`}),B(0,lt(a)),V("design:type",Function),V("design:paramtypes",[Object]),V("design:returntype",Promise)],c.prototype,"delete",null),c=z([w(r),H(o),G(t),V("design:paramtypes",[ht])],c),c}static getRouteParametersFromModel(t){const e=new t({}),r=A.pk(t),o=tt.COMPOSED,i=Reflect.getMetadata(o,e,r)?.args??[],a=Array.isArray(i)&&i.length>0?[...i]:[r],n=s.description(t),c=Array.from(new Set(a)),p=c.map(t=>":"+t).join("/");return{description:n,apiProperties:c.map(e=>({name:e,description:s.description(t,e),required:!0,type:String})),path:p}}}var gt;let mt=class{static{gt=this}static{this.log=Q.for(gt.name)}static forRoot(t){const e=this.log.for(this.forRoot);e.info("Generating controllers for flavour...");const s=S.models(t).map(ut.create);return e.info(`Generated ${s.length} controllers`),{module:gt,controllers:s,providers:[ht]}}};var ft;mt=gt=z([c({})],mt);let yt=ft=class{static async forRootAsync(t){const{autoControllers:e}=t,s=(await at.createAdapter(t)).flavour,r=[at.forRoot(t)];return e&&r.push(mt.forRoot(s)),{module:ft,imports:r}}};function wt(t){const e=A.get(t);if(!e)throw new Y("Failed to find repository for "+t);return I.forModel(e)}yt=ft=z([c({})],yt);class Et extends ${constructor(t){super(t,Et.name)}}class bt{constructor(t,e){const s=e?.status??E.INTERNAL_SERVER_ERROR,r=e?.message??"Internal Server Error",o=(e?.error??E[s]??"HTTP_EXCEPTION").toString().toUpperCase();Object.assign(this,{status:s,message:r,error:o,timestamp:(new Date).toISOString(),path:t.url,method:t.method})}}class Rt extends Error{constructor(t="Unauthorized"){super(t),this.name="AuthorizationError",this.status=401,this.code="UNAUTHORIZED",Object.setPrototypeOf(this,Rt.prototype)}}let Tt=class{catch(t,e){const s=e.switchToHttp(),r=s.getRequest(),o=s.getResponse(),i=new bt(r,{error:"UNAUTHORIZED",status:E.UNAUTHORIZED,message:t.message});o.status(E.UNAUTHORIZED).json(i)}};Tt=z([b(Rt)],Tt);class Pt extends Error{constructor(t="Conflict"){super(t),this.name="ConflictError",this.status=409,this.code="CONFLICT",Object.setPrototypeOf(this,Pt.prototype)}}let At=class{catch(t,e){const s=e.switchToHttp(),r=s.getResponse(),o=s.getRequest(),i=new bt(o,{status:E.CONFLICT,message:t.message,error:"CONFLICT"});r.status(i.status).json(i)}};At=z([b(Pt)],At);let Ot=class{catch(t,e){const s=e.switchToHttp(),r=s.getRequest(),o=s.getResponse();let i,a=E.INTERNAL_SERVER_ERROR,n="Internal Server Error";if(t instanceof R){const e=t.getResponse();a=t.getStatus(),n=(e?.message||t.message)??n,i=e?.error??t.name}else t instanceof Error&&(n=t.message,i=t.name);const c=new bt(r,{status:a,message:n,error:i});o.status(c.status).json(c)}};Ot=z([b()],Ot);let It=class{catch(t,e){const s=e.switchToHttp(),r=s.getResponse(),o=s.getRequest(),i=t.getStatus(),a=new bt(o,{status:i,message:t.message,error:t.name});r.status(a.status).json(a)}};It=z([b(R)],It);class St extends Error{constructor(t="Resource not found"){super(t),this.name="NotFoundError",this.status=404,this.code="NOT_FOUND",Object.setPrototypeOf(this,St.prototype)}}let $t=class{catch(t,e){const s=e.switchToHttp(),r=s.getResponse(),o=s.getRequest(),i=new bt(o,{status:E.NOT_FOUND,message:t.message,error:"NOT_FOUND"});r.status(i.status).json(i)}};$t=z([b(St)],$t);class vt extends Error{constructor(t="Validation failed"){super(t),this.name="ValidationError",this.status=422,this.code="VALIDATION_ERROR",Object.setPrototypeOf(this,vt.prototype)}}let Ct=class{catch(t,e){const s=e.switchToHttp(),r=s.getResponse(),o=s.getRequest(),i=new bt(o,{status:E.UNPROCESSABLE_ENTITY,message:t.message,error:"VALIDATION_ERROR"});r.status(i.status).json(i)}};Ct=z([b(vt)],Ct);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 Ft{constructor(t){this.options={...t}}customCSS(){let t="";return this.options.topbarIconPath&&(t+=`.topbar-wrapper { content: url('data:image/png;base64,${this.b64(this.options.topbarIconPath)}'); width: 200px; height: auto; }\n`),t+`\n .topbar-wrapper svg { visibility: hidden; }\n .swagger-ui .topbar { background-color: ${this.options.topbarBgColor||Nt.topbarBgColor}; }\n `}getCustomOptions(){const t={};return this.options.faviconPath&&(t.customfavIcon=this.b64(this.options.faviconPath,!0)),{customSiteTitle:this.options.title,...t,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(t,e=!1){const s=st.join(this.options.assetsPath||"",t),r=et(s,{encoding:"base64"});return e?"data:image/png;base64,"+r:r}}class Dt{constructor(t,e){this.app=t,this.options=e}createDocument(){const t=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,e=(new M).setTitle(this.options.title).setDescription(t).setVersion(this.options.version||"0.0.1").addBearerAuth(this.options.auth||Nt.auth).build();return k.createDocument(this.app,e,{extraModels:this.options.extraModels||[]})}setupSwagger(){const t=this.createDocument(),e=new Ft({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});k.setup(this.options.path||Nt.path,this.app,t,{...e.getCustomOptions()})}}class jt{static get logger(){return this._logger||(this._logger=new T("NestBootstrap")),this._logger}static initialize(t){return this.app=t,this}static enableLogger(t){return this._logger=t||new T("NestBootstrap"),this.app.useLogger(this._logger),this}static enableCors(t=[],e=["GET","POST","PUT","DELETE"]){const s="*"===t?"*":t.map(t=>t.trim().toLowerCase()),r={origin:(t,e)=>t?"*"===s||Array.isArray(s)&&s.includes(t.toLowerCase())?e(null,!0):void e(new Et(`Origin ${t} not allowed`)):e(null,!0),credentials:!0,methods:e.join(",")};return this.app.enableCors(r),this}static useHelmet(t){try{const e=require("helmet");this.app.use(e(t)),this.logger.log("Helmet middleware enabled successfully.")}catch(t){this.logger.warn("Helmet not installed. Skipping middleware.")}return this}static setupSwagger(t){return new Dt(this.app,{title:t.title,description:t.description,version:t.version,path:t.path||"api",persistAuthorization:t.persistAuthorization??!0,assetsPath:t.assetsPath,faviconFilePath:t.faviconPath,topbarIconFilePath:t.topbarIconPath,topbarBgColor:t.topbarBgColor}).setupSwagger(),this}static useGlobalPipes(...t){return t.length>0&&this.app.useGlobalPipes(...t),this}static useGlobalFilters(...t){const e=[new It,new Ct,new $t,new At,new Tt,new Ot];return this.app.useGlobalFilters(...t.length>0?t:e),this}static useGlobalInterceptors(...t){return t.length>0&&this.app.useGlobalInterceptors(...t),this}static async start(t=Number(process.env.PORT)||3e3,e=void 0,s=!0){this.app.listen(t,e).then(async()=>{if(s){const t=await this.app.getUrl();this.logger.log("\ud83d\ude80 Application is running at: "+t)}})}}const Lt="##VERSION##",Ut="##PACKAGE##";s.registerLibrary(Ut,Lt);export{ct as ApiOperationFromModel,pt as ApiParamsFromModel,Rt as AuthorizationError,Tt as AuthorizationExceptionFilter,Pt as ConflictError,At as ConflictExceptionFilter,Et as CorsError,ot as DECAF_ADAPTER_ID,rt as DECAF_MODULE_OPTIONS,mt as DecafModelModule,yt as DecafModule,lt as DecafParams,ut as FromModelController,Ot as GlobalExceptionFilter,It as HttpExceptionFilter,bt as HttpResponseError,jt as NestBootstraper,St as NotFoundError,$t as NotFoundExceptionFilter,Ut as PACKAGE_NAME,ht as RepoFactory,Dt as SwaggerBuilder,Lt as VERSION,vt as ValidationError,Ct as ValidationExceptionFilter,nt as isOperationBlocked,wt as repoForModel};
|
|
1
|
+
import{Decoration as t,DecorationKeys as e,Metadata as s}from"@decaf-ts/decoration";import{InjectablesKeys as r}from"@decaf-ts/injectable-decorators";import{Injectable as o,Scope as i,Inject as a,Global as n,Module as c,Get as p,Post as d,Put as h,Patch as l,Delete as u,applyDecorators as g,createParamDecorator as m,Body as f,Param as y,Controller as w,HttpStatus as E,Catch as b,HttpException as R,Logger as T}from"@nestjs/common";import{ValidationKeys as A,Model as P}from"@decaf-ts/decorator-validation";import{PersistenceKeys as O,Repository as S,Adapter as I,ForbiddenError as v}from"@decaf-ts/core";import{ApiProperty as C,ApiExcludeEndpoint as $,ApiParam as N,ApiOperation as F,ApiBody as x,getSchemaPath as D,ApiCreatedResponse as _,ApiBadRequestResponse as U,ApiUnprocessableEntityResponse as j,ApiOkResponse as L,ApiNotFoundResponse as q,ApiTags as H,ApiExtraModels as M,DocumentBuilder as G,SwaggerModule as k}from"@nestjs/swagger";import{__decorate as B,__param as z,__metadata as V}from"tslib";import{ModuleRef as Q,APP_INTERCEPTOR as J}from"@nestjs/core";import{Logging as Z,toKebabCase as X,LoggedClass as K}from"@decaf-ts/logging";import{apply as W}from"@decaf-ts/reflection";import{OperationKeys as Y,DBKeys as tt,InternalError as et}from"@decaf-ts/db-decorators";import{readFileSync as st}from"fs";import*as rt from"path";t.for(r.INJECTABLE).extend({decorator:(t,e)=>o({scope:e.singleton?i.DEFAULT:i.REQUEST,durable:!e.singleton||void 0})}).apply(),t.for(r.INJECT).extend({decorator:(t,e)=>(e,s,r)=>a(t||e)(e,s,r)}).apply(),t.for(A.REQUIRED).extend(C({required:!0})).apply(),t.for(A.MAX).extend({decorator:t=>C({maximum:t})}).apply(),t.for(A.MIN).extend({decorator:t=>C({minimum:t})}).apply(),t.for(A.MAX_LENGTH).extend({decorator:t=>C({maxLength:t})}).apply(),t.for(A.MIN_LENGTH).extend({decorator:t=>C({minLength:t})}).apply(),t.for(A.LIST).extend({decorator:t=>{const e=Array.isArray(t)?t[0]:t;return C({type:[e]})}}).apply(),t.for(A.PATTERN).extend({decorator:t=>C({pattern:"string"==typeof t?t:t.source})}).apply(),t.for(O.COLUMN).extend({decorator:t=>C({name:t})}).apply(),t.for(e.DESCRIPTION).extend({decorator:t=>C({description:t})}).apply();const ot="DecafModuleOptions",it="DecafAdapter",at=Symbol("DecafHandlers"),nt=Symbol("DecafAdapterForOptions");var ct;let pt=class{static{ct=this}static{this._adapterInstance=null}static get log(){return this._logger||(this._logger=Z.for(ct)),this._logger}constructor(t,e){this.options=t,this.moduleRef=e}static async createAdapter(t){if(!this._adapterInstance){const e=this.log.for(this.createAdapter);e.info("Creating adapter instance..."),this._adapterInstance=new t.adapter(t.conf,t.alias),e.info("Adapter instance created successfully!")}return this._adapterInstance}static getAdapterInstance(){return this._adapterInstance}static forRoot(t){const e={provide:ot,useValue:t},s={useFactory:async t=>ct.createAdapter(t),provide:it,durable:!0,scope:i.DEFAULT,inject:[ot]};return{module:ct,providers:[s,e],exports:[s]}}async onApplicationShutdown(){const t=ct.log.for(this.onApplicationShutdown),e=this.moduleRef.get(it);try{e&&(t.info("Shutting down"),await e.shutdown(),ct._adapterInstance=null)}catch(e){t.error("Failed to shutdown application",e)}}};function dt(t,e){const{handler:r,args:o}=s.get(t,Y.REFLECT+Y.BLOCK)||{};return!!r&&(r(...o,e)??!1)}function ht(t,e,s){const r={GET:[Y.READ,p],POST:[Y.CREATE,d],PUT:[Y.UPDATE,h],PATCH:[Y.UPDATE,l],DELETE:[Y.DELETE,u]},[o,i]=r[e];return dt(t,o)?W($()):W(i(s))}function lt(t=[]){const e=t.map(t=>N({name:t.name,description:t.description??"Path parameter: "+t.name,required:t.required??!0,type:t.type??String}));return g(...e)}pt=ct=B([n(),c({}),z(0,a(ot)),V("design:paramtypes",[Object,Q])],pt);const ut=m((t,e)=>{const s=e.switchToHttp().getRequest(),r=s?.params??{},o=t??Object.keys(r),i=o.map(t=>r[t]);return{original:r,ordered:i,order:o}});function gt(t=[]){const e=t.map(t=>t.name);return ut(e)}let mt=class{constructor(){this.cache=new Map}set(t,e){this.cache.set(t,e)}get(t){return this.cache.get(t)}};mt=B([o({scope:i.REQUEST})],mt);let ft=class{constructor(t,e){this.handlers=t,this.context=e}async exec(t){for(const e of this.handlers)await e.handle(this.context,t)}};ft=B([o({scope:i.REQUEST}),z(0,a(at)),V("design:paramtypes",[Array,mt])],ft);class yt{static{this.log=Z.for(yt.name)}static create(t){const e=yt.log.for(yt.create),s=P.tableName(t),r=X(s),o=t.name,{description:i,apiProperties:a,path:n}=yt.getRouteParametersFromModel(t);e.debug("Creating controller for model: "+o);let c=class extends K{constructor(s){super(),this.clientContext=s,this.pk=P.pk(t),e.info(`Registering dynamic controller for model: ${o} route: /${r}`)}get repository(){this._repo||(this._repo=S.forModel(t));const e=this.clientContext.get(nt);return e?this._repo.for(e):this._repo}async create(t){const e=this.log.for(this.create);let s;e.verbose("creating new "+o);try{s=await this.repository.create(t)}catch(t){throw e.error("Failed to create new "+o,t),t}return e.info(`created new ${o} with id ${s[this.pk]}`),s}async read(t){const{id:e}=t,s=this.log.for(this.read);let r;try{s.debug(`reading ${o} with ${this.pk} ${e}`),r=await this.repository.read(e)}catch(t){throw s.error(`Failed to read ${o} with id ${e}`,t),t}return s.info(`read ${o} with id ${r[this.pk]}`),r}async query(t){const e=this.log.for(this.read);let s;try{e.debug(`Querying ${o} using method "${t}"`),s=await this.repository[t]()}catch(s){throw e.error(`Failed to query ${o} using method "${t}"`,s),s}return e.info(`Successfully queried ${o} using method "${t}"`),s}async update(t,e){const s=this.log.for(this.update);let r;try{s.info(`updating ${o} with ${this.pk} ${e[this.pk]}`),r=await this.repository.create(e)}catch(t){throw s.error(t),t}return r}async delete(t){const e=this.log.for(this.delete);let s;try{e.debug(`deleting ${o} with ${this.pk} ${t}`),s=await this.repository.read("id")}catch(t){throw e.error(`Failed to delete ${o} with id id`,t),t}return e.info(`deleted ${o} with id ${s[this.pk]}`),s}};return B([ht(t,"POST"),F({summary:`Create a new ${o}.`}),x({description:"Payload for "+o,schema:{$ref:D(t)}}),_({description:o+" created successfully."}),U({description:"Payload validation failed."}),j({description:"Repository rejected the provided payload."}),z(0,f()),V("design:type",Function),V("design:paramtypes",[Object]),V("design:returntype",Promise)],c.prototype,"create",null),B([ht(t,"GET",n),lt(a),F({summary:`Retrieve a ${o} record by id.`}),L({description:o+" retrieved successfully."}),q({description:`No ${o} record matches the provided identifier.`}),z(0,y()),V("design:type",Function),V("design:paramtypes",[Object]),V("design:returntype",Promise)],c.prototype,"read",null),B([ht(t,"GET","query/:method"),F({summary:`Retrieve ${o} records by query.`}),N({name:"method",description:"Query method to be called"}),L({description:o+" retrieved successfully."}),q({description:`No ${o} records matches the query.`}),z(0,y("method")),V("design:type",Function),V("design:paramtypes",[String]),V("design:returntype",Promise)],c.prototype,"query",null),B([ht(t,"PUT",n),lt(a),F({summary:`Replace an existing ${o} record with a new payload.`}),x({description:"Payload for replace a existing record of "+o,schema:{$ref:D(t)}}),L({description:t+" record replaced successfully."}),q({description:`No ${o} record matches the provided identifier.`}),U({description:"Payload validation failed."}),z(0,gt(a)),z(1,f()),V("design:type",Function),V("design:paramtypes",[Object,P]),V("design:returntype",Promise)],c.prototype,"update",null),B([ht(t,"DELETE",n),lt(a),F({summary:`Delete a ${o} record by id.`}),L({description:o+" record deleted successfully."}),q({description:`No ${o} record matches the provided identifier.`}),z(0,gt(a)),V("design:type",Function),V("design:paramtypes",[Object]),V("design:returntype",Promise)],c.prototype,"delete",null),c=B([w(r),H(o),M(t),V("design:paramtypes",[mt])],c),c}static getRouteParametersFromModel(t){const e=new t({}),r=P.pk(t),o=tt.COMPOSED,i=Reflect.getMetadata(o,e,r)?.args??[],a=Array.isArray(i)&&i.length>0?[...i]:[r],n=s.description(t),c=Array.from(new Set(a)),p=c.map(t=>":"+t).join("/");return{description:n,apiProperties:c.map(e=>({name:e,description:s.description(t,e),required:!0,type:String})),path:p}}}let wt=class{constructor(t){this.executor=t}async intercept(t,e){const s=t.switchToHttp().getRequest();return await this.executor.exec(s),e.handle()}};var Et;wt=B([o({scope:i.REQUEST}),V("design:paramtypes",[ft])],wt);let bt=class{static{Et=this}static{this.log=Z.for(Et.name)}static forRoot(t,e=[]){const s=this.log.for(this.forRoot);s.info("Generating controllers for flavour...");const r=I.models(t).map(yt.create);return s.info(`Generated ${r.length} controllers`),{module:Et,controllers:r,providers:[{provide:at,useFactory:()=>e.map(t=>(s.info("Registered request handler: "+t.name),new t))},mt,ft,{provide:J,useClass:wt}]}}};var Rt;bt=Et=B([c({})],bt);let Tt=Rt=class{static async forRootAsync(t){const{autoControllers:e}=t,s=(await pt.createAdapter(t)).flavour,r=[pt.forRoot(t)];return e&&r.push(bt.forRoot(s,t.handlers)),{module:Rt,imports:r}}};function At(t){const e=P.get(t);if(!e)throw new et("Failed to find repository for "+t);return S.forModel(e)}Tt=Rt=B([c({})],Tt);class Pt extends v{constructor(t){super(t,Pt.name)}}class Ot{constructor(t,e){const s=e?.status??E.INTERNAL_SERVER_ERROR,r=e?.message??"Internal Server Error",o=(e?.error??E[s]??"HTTP_EXCEPTION").toString().toUpperCase();Object.assign(this,{status:s,message:r,error:o,timestamp:(new Date).toISOString(),path:t.url,method:t.method})}}class St extends Error{constructor(t="Unauthorized"){super(t),this.name="AuthorizationError",this.status=401,this.code="UNAUTHORIZED",Object.setPrototypeOf(this,St.prototype)}}let It=class{catch(t,e){const s=e.switchToHttp(),r=s.getRequest(),o=s.getResponse(),i=new Ot(r,{error:"UNAUTHORIZED",status:E.UNAUTHORIZED,message:t.message});o.status(E.UNAUTHORIZED).json(i)}};It=B([b(St)],It);class vt extends Error{constructor(t="Conflict"){super(t),this.name="ConflictError",this.status=409,this.code="CONFLICT",Object.setPrototypeOf(this,vt.prototype)}}let Ct=class{catch(t,e){const s=e.switchToHttp(),r=s.getResponse(),o=s.getRequest(),i=new Ot(o,{status:E.CONFLICT,message:t.message,error:"CONFLICT"});r.status(i.status).json(i)}};Ct=B([b(vt)],Ct);let $t=class{catch(t,e){const s=e.switchToHttp(),r=s.getRequest(),o=s.getResponse();let i,a=E.INTERNAL_SERVER_ERROR,n="Internal Server Error";if(t instanceof R){const e=t.getResponse();a=t.getStatus(),n=(e?.message||t.message)??n,i=e?.error??t.name}else t instanceof Error&&(n=t.message,i=t.name);const c=new Ot(r,{status:a,message:n,error:i});o.status(c.status).json(c)}};$t=B([b()],$t);let Nt=class{catch(t,e){const s=e.switchToHttp(),r=s.getResponse(),o=s.getRequest(),i=t.getStatus(),a=new Ot(o,{status:i,message:t.message,error:t.name});r.status(a.status).json(a)}};Nt=B([b(R)],Nt);class Ft extends Error{constructor(t="Resource not found"){super(t),this.name="NotFoundError",this.status=404,this.code="NOT_FOUND",Object.setPrototypeOf(this,Ft.prototype)}}let xt=class{catch(t,e){const s=e.switchToHttp(),r=s.getResponse(),o=s.getRequest(),i=new Ot(o,{status:E.NOT_FOUND,message:t.message,error:"NOT_FOUND"});r.status(i.status).json(i)}};xt=B([b(Ft)],xt);class Dt extends Error{constructor(t="Validation failed"){super(t),this.name="ValidationError",this.status=422,this.code="VALIDATION_ERROR",Object.setPrototypeOf(this,Dt.prototype)}}let _t=class{catch(t,e){const s=e.switchToHttp(),r=s.getResponse(),o=s.getRequest(),i=new Ot(o,{status:E.UNPROCESSABLE_ENTITY,message:t.message,error:"VALIDATION_ERROR"});r.status(i.status).json(i)}};_t=B([b(Dt)],_t);const Ut={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 jt{constructor(t){this.options={...t}}customCSS(){let t="";return this.options.topbarIconPath&&(t+=`.topbar-wrapper { content: url('data:image/png;base64,${this.b64(this.options.topbarIconPath)}'); width: 200px; height: auto; }\n`),t+`\n .topbar-wrapper svg { visibility: hidden; }\n .swagger-ui .topbar { background-color: ${this.options.topbarBgColor||Ut.topbarBgColor}; }\n `}getCustomOptions(){const t={};return this.options.faviconPath&&(t.customfavIcon=this.b64(this.options.faviconPath,!0)),{customSiteTitle:this.options.title,...t,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(t,e=!1){const s=rt.join(this.options.assetsPath||"",t),r=st(s,{encoding:"base64"});return e?"data:image/png;base64,"+r:r}}class Lt{constructor(t,e){this.app=t,this.options=e}createDocument(){const t=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,e=(new G).setTitle(this.options.title).setDescription(t).setVersion(this.options.version||"0.0.1").addBearerAuth(this.options.auth||Ut.auth).build();return k.createDocument(this.app,e,{extraModels:this.options.extraModels||[]})}setupSwagger(){const t=this.createDocument(),e=new jt({title:this.options.title,path:this.options.path||Ut.path,persistAuthorization:this.options.persistAuthorization??!0,assetsPath:this.options.assetsPath,faviconPath:this.options.faviconFilePath,topbarIconPath:this.options.topbarIconFilePath,topbarBgColor:this.options.topbarBgColor});k.setup(this.options.path||Ut.path,this.app,t,{...e.getCustomOptions()})}}class qt{static get logger(){return this._logger||(this._logger=new T("NestBootstrap")),this._logger}static initialize(t){return this.app=t,this}static enableLogger(t){return this._logger=t||new T("NestBootstrap"),this.app.useLogger(this._logger),this}static enableCors(t=[],e=["GET","POST","PUT","DELETE"]){const s="*"===t?"*":t.map(t=>t.trim().toLowerCase()),r={origin:(t,e)=>t?"*"===s||Array.isArray(s)&&s.includes(t.toLowerCase())?e(null,!0):void e(new Pt(`Origin ${t} not allowed`)):e(null,!0),credentials:!0,methods:e.join(",")};return this.app.enableCors(r),this}static useHelmet(t){try{const e=require("helmet");this.app.use(e(t)),this.logger.log("Helmet middleware enabled successfully.")}catch(t){this.logger.warn("Helmet not installed. Skipping middleware.")}return this}static setupSwagger(t){return new Lt(this.app,{title:t.title,description:t.description,version:t.version,path:t.path||"api",persistAuthorization:t.persistAuthorization??!0,assetsPath:t.assetsPath,faviconFilePath:t.faviconPath,topbarIconFilePath:t.topbarIconPath,topbarBgColor:t.topbarBgColor}).setupSwagger(),this}static useGlobalPipes(...t){return t.length>0&&this.app.useGlobalPipes(...t),this}static useGlobalFilters(...t){const e=[new Nt,new _t,new xt,new Ct,new It,new $t];return this.app.useGlobalFilters(...t.length>0?t:e),this}static useGlobalInterceptors(...t){return t.length>0&&this.app.useGlobalInterceptors(...t),this}static async start(t=Number(process.env.PORT)||3e3,e=void 0,s=!0){this.app.listen(t,e).then(async()=>{if(s){const t=await this.app.getUrl();this.logger.log("\ud83d\ude80 Application is running at: "+t)}})}}const Ht="##VERSION##",Mt="##PACKAGE##";s.registerLibrary(Mt,Ht);export{ht as ApiOperationFromModel,lt as ApiParamsFromModel,St as AuthorizationError,It as AuthorizationExceptionFilter,vt as ConflictError,Ct as ConflictExceptionFilter,Pt as CorsError,it as DECAF_ADAPTER_ID,nt as DECAF_ADAPTER_OPTIONS,at as DECAF_HANDLERS,ot as DECAF_MODULE_OPTIONS,ft as DecafHandlerExecutor,bt as DecafModelModule,Tt as DecafModule,gt as DecafParams,mt as DecafRequestContext,wt as DecafRequestHandlerInterceptor,yt as FromModelController,$t as GlobalExceptionFilter,Nt as HttpExceptionFilter,Ot as HttpResponseError,qt as NestBootstraper,Ft as NotFoundError,xt as NotFoundExceptionFilter,Mt as PACKAGE_NAME,Lt as SwaggerBuilder,Ht as VERSION,Dt as ValidationError,_t as ValidationExceptionFilter,dt as isOperationBlocked,At as repoForModel};
|
|
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/DecafParams.ts","../src/RepoFactory.ts","../src/decaf-model/FromModelController.ts","../src/decaf-model/DecafModelModule.ts","../src/module.ts","../src/utils.ts","../src/factory/errors/cors.ts","../src/factory/exceptions/HttpResponseError.ts","../src/factory/exceptions/AuthorizationExceptionFilter.ts","../src/factory/exceptions/ConflictExceptionFilter.ts","../src/factory/exceptions/GlobalExceptionFilter.ts","../src/factory/exceptions/HttpExceptionFilter.ts","../src/factory/exceptions/NotFoundExceptionFilter.ts","../src/factory/exceptions/ValidationExceptionFilter.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],"names":["Decoration","for","InjectablesKeys","INJECTABLE","extend","decorator","category","cfg","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","DecafCoreModule","this","_adapterInstance","log","_logger","Logging","DecafCoreModule_1","constructor","options","moduleRef","createAdapter","info","adapter","conf","alias","getAdapterInstance","forRoot","typeOrmModuleOptions","provide","useValue","useFactory","async","opts","inject","module","providers","exports","onApplicationShutdown","get","shutdown","e","error","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","OrderedParams","createParamDecorator","order","ctx","req","switchToHttp","getRequest","original","params","orderList","Object","keys","ordered","k","DecafParams","RepoFactory","model","Model","InternalError","Repository","forModel","FromModelController","create","ModelClazz","tableName","table","routePath","toKebabCase","modelClazzName","apiProperties","getRouteParametersFromModel","debug","DynamicModelController","LoggedClass","repoFactory","super","repo","pk","data","created","verbose","read","pathParams","id","query","method","results","update","routeParams","body","updated","delete","ApiOperation","summary","ApiBody","schema","$ref","getSchemaPath","ApiCreatedResponse","ApiBadRequestResponse","ApiUnprocessableEntityResponse","Body","prototype","ApiOkResponse","ApiNotFoundResponse","Param","ApiParam","Controller","ApiTags","ApiExtraModels","instance","composedKeyMetaKey","DBKeys","COMPOSED","composedKeys","Reflect","getMetadata","keysToReturn","length","uniqueKeys","from","Set","key","join","DecafModelModule","DecafModelModule_1","flavour","controllers","Adapter","models","DecafModule","DecafModule_1","forRootAsync","autoControllers","imports","push","repoForModel","m","CorsError","ForbiddenError","msg","HttpResponseError","request","responseError","status","HttpStatus","INTERNAL_SERVER_ERROR","message","toString","toUpperCase","assign","timestamp","Date","toISOString","url","AuthorizationError","Error","code","setPrototypeOf","AuthorizationExceptionFilter","exception","host","response","getResponse","httpResponseError","UNAUTHORIZED","json","Catch","ConflictError","ConflictExceptionFilter","CONFLICT","GlobalExceptionFilter","HttpException","res","getStatus","HttpExceptionFilter","NotFoundError","NotFoundExceptionFilter","NOT_FOUND","ValidationError","ValidationExceptionFilter","UNPROCESSABLE_ENTITY","SWAGGER_UI_CONSTANTS","title","version","faviconFilePath","topbarIconFilePath","auth","scheme","bearerFormat","in","persistAuthorization","topbarBgColor","SwaggerCustomUI","customCSS","css","topbarIconPath","b64","getCustomOptions","favicon","faviconPath","customSiteTitle","customCss","swaggerOptions","jsonDocumentUrl","yamlDocumentUrl","file","img","filePath","assetsPath","readFileSync","encoding","SwaggerBuilder","app","createDocument","config","DocumentBuilder","setTitle","setDescription","setVersion","addBearerAuth","build","SwaggerModule","extraModels","setupSwagger","document","swaggerUI","setup","NestBootstraper","logger","Logger","initialize","enableLogger","customLogger","useLogger","enableCors","origins","allowMethods","allowedOrigins","o","trim","toLowerCase","corsOptions","origin","callback","includes","credentials","methods","useHelmet","helmet","require","use","warn","useGlobalPipes","pipes","useGlobalFilters","filters","defaultFilters","useGlobalInterceptors","interceptors","start","port","Number","process","env","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/DecafParams.ts","../src/request/DecafRequestContext.ts","../src/request/DecafHandlerExecutor.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/HttpResponseError.ts","../src/factory/exceptions/AuthorizationExceptionFilter.ts","../src/factory/exceptions/ConflictExceptionFilter.ts","../src/factory/exceptions/GlobalExceptionFilter.ts","../src/factory/exceptions/HttpExceptionFilter.ts","../src/factory/exceptions/NotFoundExceptionFilter.ts","../src/factory/exceptions/ValidationExceptionFilter.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","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","DecafCoreModule","this","_adapterInstance","log","_logger","Logging","DecafCoreModule_1","constructor","options","moduleRef","createAdapter","info","adapter","conf","alias","getAdapterInstance","forRoot","typeOrmModuleOptions","provide","useValue","useFactory","async","opts","inject","module","providers","exports","onApplicationShutdown","get","shutdown","e","error","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","OrderedParams","createParamDecorator","order","ctx","req","switchToHttp","getRequest","original","params","orderList","Object","keys","ordered","k","DecafParams","DecafRequestContext","cache","Map","set","key","value","DecafHandlerExecutor","handlers","context","exec","handle","FromModelController","create","ModelClazz","tableName","Model","routePath","toKebabCase","modelClazzName","apiProperties","getRouteParametersFromModel","debug","DynamicModelController","LoggedClass","clientContext","super","pk","repository","_repo","Repository","forModel","adapterOptions","data","created","verbose","read","pathParams","id","query","method","results","update","routeParams","body","updated","delete","ApiOperation","summary","ApiBody","schema","$ref","getSchemaPath","ApiCreatedResponse","ApiBadRequestResponse","ApiUnprocessableEntityResponse","Body","prototype","ApiOkResponse","ApiNotFoundResponse","Param","ApiParam","Controller","ApiTags","ApiExtraModels","instance","composedKeyMetaKey","DBKeys","COMPOSED","composedKeys","Reflect","getMetadata","keysToReturn","length","uniqueKeys","from","Set","join","DecafRequestHandlerInterceptor","executor","intercept","next","DecafModelModule","DecafModelModule_1","flavour","controllers","Adapter","models","H","APP_INTERCEPTOR","useClass","DecafModule","DecafModule_1","forRootAsync","autoControllers","imports","push","repoForModel","model","m","InternalError","CorsError","ForbiddenError","msg","HttpResponseError","request","responseError","status","HttpStatus","INTERNAL_SERVER_ERROR","message","toString","toUpperCase","assign","timestamp","Date","toISOString","url","AuthorizationError","Error","code","setPrototypeOf","AuthorizationExceptionFilter","exception","host","response","getResponse","httpResponseError","UNAUTHORIZED","json","Catch","ConflictError","ConflictExceptionFilter","CONFLICT","GlobalExceptionFilter","HttpException","res","getStatus","HttpExceptionFilter","NotFoundError","NotFoundExceptionFilter","NOT_FOUND","ValidationError","ValidationExceptionFilter","UNPROCESSABLE_ENTITY","SWAGGER_UI_CONSTANTS","title","version","faviconFilePath","topbarIconFilePath","auth","scheme","bearerFormat","in","persistAuthorization","topbarBgColor","SwaggerCustomUI","customCSS","css","topbarIconPath","b64","getCustomOptions","favicon","faviconPath","customSiteTitle","customCss","swaggerOptions","jsonDocumentUrl","yamlDocumentUrl","file","img","filePath","assetsPath","readFileSync","encoding","SwaggerBuilder","app","createDocument","config","DocumentBuilder","setTitle","setDescription","setVersion","addBearerAuth","build","SwaggerModule","extraModels","setupSwagger","document","swaggerUI","setup","NestBootstraper","logger","Logger","initialize","enableLogger","customLogger","useLogger","enableCors","origins","allowMethods","allowedOrigins","o","trim","toLowerCase","corsOptions","origin","callback","includes","credentials","methods","useHelmet","helmet","require","use","warn","useGlobalPipes","pipes","useGlobalFilters","filters","defaultFilters","useGlobalInterceptors","interceptors","start","port","Number","process","env","PORT","listen","then","getUrl","VERSION","PACKAGE_NAME","registerLibrary"],"mappings":"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"}
|
package/lib/constants.cjs
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DECAF_ADAPTER_ID = exports.DECAF_MODULE_OPTIONS = void 0;
|
|
3
|
+
exports.DECAF_ADAPTER_OPTIONS = exports.DECAF_HANDLERS = exports.DECAF_ADAPTER_ID = exports.DECAF_MODULE_OPTIONS = void 0;
|
|
4
4
|
exports.DECAF_MODULE_OPTIONS = "DecafModuleOptions";
|
|
5
5
|
exports.DECAF_ADAPTER_ID = "DecafAdapter";
|
|
6
|
+
exports.DECAF_HANDLERS = Symbol("DecafHandlers");
|
|
7
|
+
exports.DECAF_ADAPTER_OPTIONS = Symbol("DecafAdapterForOptions");
|
|
6
8
|
//# sourceMappingURL=constants.js.map
|
package/lib/constants.d.ts
CHANGED
package/lib/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,oBAAoB,CAAC;AAC5C,QAAA,gBAAgB,GAAG,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,oBAAoB,CAAC;AAC5C,QAAA,gBAAgB,GAAG,cAAc,CAAC;AAElC,QAAA,cAAc,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AACzC,QAAA,qBAAqB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC"}
|
package/lib/core-module.d.ts
CHANGED
|
@@ -3,15 +3,15 @@ import { ModuleRef } from "@nestjs/core";
|
|
|
3
3
|
import type { DecafModuleOptions } from "./types";
|
|
4
4
|
import { Adapter } from "@decaf-ts/core";
|
|
5
5
|
import { Logger } from "@decaf-ts/logging";
|
|
6
|
-
export declare class DecafCoreModule<CONF, ADAPTER extends Adapter<CONF, any, any, any
|
|
6
|
+
export declare class DecafCoreModule<CONF, ADAPTER extends Adapter<CONF, any, any, any>> implements OnApplicationShutdown {
|
|
7
7
|
private readonly options;
|
|
8
8
|
private readonly moduleRef;
|
|
9
9
|
private static _logger;
|
|
10
10
|
private static _adapterInstance;
|
|
11
11
|
protected static get log(): Logger;
|
|
12
12
|
constructor(options: DecafModuleOptions<CONF, ADAPTER>, moduleRef: ModuleRef);
|
|
13
|
-
static createAdapter(options: DecafModuleOptions): Promise<Adapter<any, any, any, any
|
|
14
|
-
static getAdapterInstance(): Adapter<any, any, any, any
|
|
13
|
+
static createAdapter(options: DecafModuleOptions): Promise<Adapter<any, any, any, any>>;
|
|
14
|
+
static getAdapterInstance(): Adapter<any, any, any, any> | null;
|
|
15
15
|
static forRoot(options: DecafModuleOptions): DynamicModule;
|
|
16
16
|
onApplicationShutdown(): Promise<void>;
|
|
17
17
|
}
|
package/lib/core-module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-module.js","sourceRoot":"","sources":["../src/core-module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAOwB;AACxB,uCAAyC;AAEzC,+CAAqE;AAGrE,+CAAoD;AAI7C,IAAM,eAAe,GAArB,MAAM,eAAe;;
|
|
1
|
+
{"version":3,"file":"core-module.js","sourceRoot":"","sources":["../src/core-module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAOwB;AACxB,uCAAyC;AAEzC,+CAAqE;AAGrE,+CAAoD;AAI7C,IAAM,eAAe,GAArB,MAAM,eAAe;;aAIX,qBAAgB,GAAuC,IAAI,AAA3C,CAA4C;IAEjE,MAAM,KAAK,GAAG;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,iBAAO,CAAC,GAAG,CAAC,iBAAe,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,YAEmB,OAA0C,EAC1C,SAAoB;QADpB,YAAO,GAAP,OAAO,CAAmC;QAC1C,cAAS,GAAT,SAAS,CAAW;IACpC,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,aAAa,CACxB,OAA2B;QAE3B,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YACzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACzE,GAAG,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,kBAAkB;QACvB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,OAA2B;QACxC,MAAM,oBAAoB,GAAG;YAC3B,OAAO,EAAE,gCAAoB;YAC7B,QAAQ,EAAE,OAAO;SAClB,CAAC;QAEF,MAAM,OAAO,GAAyB;YACpC,UAAU,EAAE,KAAK,EAAE,IAAwB,EAAE,EAAE;gBAC7C,OAAO,iBAAe,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC7C,CAAC;YACD,OAAO,EAAE,4BAAgB;YACzB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,cAAK,CAAC,OAAO;YACpB,MAAM,EAAE,CAAC,gCAAoB,CAAC;SAC/B,CAAC;QAEF,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;QAE1B,OAAO;YACL,MAAM,EAAE,iBAAe;YACvB,SAAS;YACT,OAAO;SACR,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,MAAM,GAAG,GAAG,iBAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,4BAAgB,CAAC,CAAC;QAC9D,IAAI,CAAC;YACH,IAAI,OAAO,EAAE,CAAC;gBACZ,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC1B,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACzB,iBAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC1C,CAAC;QACH,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAU,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;;AAvEU,0CAAe;0BAAf,eAAe;IAF3B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;IAaN,WAAA,IAAA,eAAM,EAAC,gCAAoB,CAAC,CAAA;6CAED,gBAAS;GAd5B,eAAe,CAwE3B"}
|
|
@@ -11,12 +11,15 @@ exports.DecafModelModule = void 0;
|
|
|
11
11
|
const common_1 = require("@nestjs/common");
|
|
12
12
|
const core_1 = require("@decaf-ts/core");
|
|
13
13
|
const logging_1 = require("@decaf-ts/logging");
|
|
14
|
-
const RepoFactory_1 = require("./../RepoFactory.cjs");
|
|
15
14
|
const FromModelController_1 = require("./FromModelController.cjs");
|
|
15
|
+
const interceptors_1 = require("./../interceptors/index.cjs");
|
|
16
|
+
const core_2 = require("@nestjs/core");
|
|
17
|
+
const request_1 = require("./../request/index.cjs");
|
|
18
|
+
const constants_1 = require("./../constants.cjs");
|
|
16
19
|
let DecafModelModule = class DecafModelModule {
|
|
17
20
|
static { DecafModelModule_1 = this; }
|
|
18
21
|
static { this.log = logging_1.Logging.for(DecafModelModule_1.name); }
|
|
19
|
-
static forRoot(flavour) {
|
|
22
|
+
static forRoot(flavour, handlers = []) {
|
|
20
23
|
const log = this.log.for(this.forRoot);
|
|
21
24
|
log.info(`Generating controllers for flavour...`);
|
|
22
25
|
const trackedModels = core_1.Adapter.models(flavour);
|
|
@@ -25,7 +28,23 @@ let DecafModelModule = class DecafModelModule {
|
|
|
25
28
|
return {
|
|
26
29
|
module: DecafModelModule_1,
|
|
27
30
|
controllers,
|
|
28
|
-
providers: [
|
|
31
|
+
providers: [
|
|
32
|
+
{
|
|
33
|
+
provide: constants_1.DECAF_HANDLERS,
|
|
34
|
+
useFactory: () => {
|
|
35
|
+
return handlers.map((H) => {
|
|
36
|
+
log.info(`Registered request handler: ${H.name}`);
|
|
37
|
+
return new H();
|
|
38
|
+
});
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
request_1.DecafRequestContext,
|
|
42
|
+
request_1.DecafHandlerExecutor,
|
|
43
|
+
{
|
|
44
|
+
provide: core_2.APP_INTERCEPTOR,
|
|
45
|
+
useClass: interceptors_1.DecafRequestHandlerInterceptor,
|
|
46
|
+
},
|
|
47
|
+
],
|
|
29
48
|
};
|
|
30
49
|
}
|
|
31
50
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { DynamicModule } from "@nestjs/common";
|
|
1
|
+
import { DynamicModule, Type } from "@nestjs/common";
|
|
2
|
+
import { type DecafRequestHandler } from "../types";
|
|
2
3
|
export declare class DecafModelModule {
|
|
3
4
|
private static readonly log;
|
|
4
|
-
static forRoot(flavour: string): DynamicModule;
|
|
5
|
+
static forRoot(flavour: string, handlers?: Type<DecafRequestHandler>[]): DynamicModule;
|
|
5
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DecafModelModule.js","sourceRoot":"","sources":["../../src/decaf-model/DecafModelModule.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"DecafModelModule.js","sourceRoot":"","sources":["../../src/decaf-model/DecafModelModule.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA6D;AAC7D,yCAAyC;AACzC,+CAA4C;AAC5C,mEAA4D;AAC5D,8DAAiE;AACjE,uCAA+C;AAE/C,oDAAuE;AACvE,kDAA8C;AAGvC,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;;aACH,QAAG,GAAG,iBAAO,CAAC,GAAG,CAAC,kBAAgB,CAAC,IAAI,CAAC,AAArC,CAAsC;IAEjE,MAAM,CAAC,OAAO,CACZ,OAAe,EACf,WAAwC,EAAE;QAE1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,GAAG,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QAElD,MAAM,aAAa,GAAG,cAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,yCAAmB,CAAC,MAAM,CAAC,CAAC;QAElE,GAAG,CAAC,IAAI,CAAC,aAAa,WAAW,CAAC,MAAM,cAAc,CAAC,CAAC;QAExD,OAAO;YACL,MAAM,EAAE,kBAAgB;YACxB,WAAW;YACX,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,0BAAc;oBACvB,UAAU,EAAE,GAAG,EAAE;wBACf,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;4BACxB,GAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;4BAClD,OAAO,IAAI,CAAC,EAAE,CAAC;wBACjB,CAAC,CAAC,CAAC;oBACL,CAAC;iBACF;gBACD,6BAAmB;gBACnB,8BAAoB;gBACpB;oBACE,OAAO,EAAE,sBAAe;oBACxB,QAAQ,EAAE,6CAA8B;iBACzC;aACF;SACF,CAAC;IACJ,CAAC;;AApCU,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,gBAAgB,CAqC5B"}
|