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