@alevnyacow/nzmt 0.34.1 → 0.34.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,7 +6,6 @@
6
6
  <p align="center">
7
7
  <a href="https://badge.fury.io/js/@alevnyacow%2Fnzmt" target="_blank"><img src='https://badge.fury.io/js/@alevnyacow%2Fnzmt.svg'></img></a>
8
8
  <img src='https://img.shields.io/npm/l/%40alevnyacow%2Fnzmt'></img>
9
- <img src='https://img.shields.io/bundlephobia/minzip/%40alevnyacow/nzmt'></img>
10
9
  </p>
11
10
 
12
11
  Scaffold full-stack modules in Next.js in seconds with **Next Zod Modules Toolkit (NZMT)**.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(r,{a:r}),r},__webpack_require__.d=(e,r)=>{for(var t in r)__webpack_require__.o(r,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},__webpack_require__.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Controller:()=>zod_controller_utils_namespaceObject,Store:()=>store_namespaceObject,Module:()=>zod_module_utils_namespaceObject,ValueObjects:()=>value_objects_namespaceObject});var zod_module_utils_namespaceObject={};__webpack_require__.r(zod_module_utils_namespaceObject),__webpack_require__.d(zod_module_utils_namespaceObject,{methods:()=>methods});var zod_controller_utils_namespaceObject={};__webpack_require__.r(zod_controller_utils_namespaceObject),__webpack_require__.d(zod_controller_utils_namespaceObject,{DefaultErrorCodes:()=>zod_controller_utils_DefaultErrorCodes,endpoints:()=>endpoints});var store_namespaceObject={};__webpack_require__.r(store_namespaceObject),__webpack_require__.d(store_namespaceObject,{InRAM:()=>InRAM,methods:()=>store_zod_utils_methods,toModuleMetadata:()=>toModuleMetadata});var value_objects_namespaceObject={};__webpack_require__.r(value_objects_namespaceObject),__webpack_require__.d(value_objects_namespaceObject,{Pagination:()=>Pagination});const isControllerError=e=>{if(!e||"object"!=typeof e)return!1;let r=Object.keys(e);return["name","message","code","module","method","timestamp","statusCode"].every(e=>r.includes(e))},isModuleError=e=>{if("object"!=typeof e||!e)return!1;let r=Object.keys(e);return!!["name","message","code","module","method","timestamp"].every(e=>r.includes(e))&&!r.includes("statusCode")},spawnBaseError=({error:e,code:r,details:t})=>{let a=e instanceof Error?e:Error("unknown error");return("string"==typeof e||"number"==typeof e)&&(a=Error(e?.toString())),"object"==typeof e&&null!==e&&(a=e instanceof Error?e:Error(JSON.stringify(e))),{message:a.message,name:a.name,timestamp:Date.now(),code:r||a.name,details:t||null}},spawnFromUnknownError=e=>isModuleError(e)||(e=>{if("object"!=typeof e||!e)return!1;let r=Object.keys(e);return["name","message","code","timestamp"].every(e=>r.includes(e))})(e)?e:spawnBaseError({error:e}),spawnModuleError=e=>({inMethod:r=>({newError:(t,a)=>({...spawnBaseError(t),cause:a?spawnFromUnknownError(a):null,module:e,method:r})})}),spawnControllerError=e=>({inMethod:r=>({newError:(t,a)=>{let o=spawnBaseError(t),s=a?spawnFromUnknownError(a):null;return!t.code&&s?.code&&(o.code=s.code),{...o,cause:s,module:e,method:r,statusCode:t.statusCode}}})}),methods=(e,r={})=>(t,a,o={})=>{let{name:s,schemas:n}=e;return async e=>{try{let r=n[t].payload.parse(e),o=await a(r,{methodError:(e,a)=>spawnModuleError(s).inMethod(t).newError("string"==typeof e?{error:e,code:e,details:r}:e,a)});return n[t].response.parse(o)}catch(a){if(isModuleError(a))throw r.onError&&await r.onError(a),o.onError&&await o.onError(a),a;let e=spawnModuleError(s).inMethod(t).newError({error:"Caught unhandled module error (see `cause` field for details)"},a);throw o.onError&&await o.onError(e),e}}},external_zod_namespaceObject=require("zod");var external_zod_default=__webpack_require__.n(external_zod_namespaceObject);function jsonResponse(e,r){return new Response(JSON.stringify(e),{...r,headers:{"Content-Type":"application/json",...r?.headers||{}}})}var zod_controller_utils_DefaultErrorCodes=function(e){return e.REQUEST_PARSING="NZMT-CONTROLLER___REQUEST-PARSING",e.RESPONSE_PARSING="NZMT-CONTROLLER___RESPONSE-PARSING",e}({});const endpoints=(e,r={})=>(t,a,o={})=>async s=>{let n={},_=spawnControllerError(e.name).inMethod(t);try{let i=(e,r,t)=>"string"==typeof e?_.newError({statusCode:r??500,code:e,error:e,details:n},t):_.newError({...e,statusCode:r??500},t);if(r.guards)for(let e of r.guards){let r=await e({request:s,endpointError:i});if(r)throw r}if(o.guards)for(let e of o.guards){let r=await e({request:s,endpointError:i});if(r)throw r}let d=e.schemas[t];if(!d)throw _.newError({error:"No schemas were found for the endpoint",statusCode:500});if(d.query){let e=Object.fromEntries(s.nextUrl.searchParams.entries()),r=d.query.safeParse(e);if(!r.success)throw _.newError({error:r.error.message,statusCode:400,code:"NZMT-CONTROLLER___REQUEST-PARSING",details:external_zod_default().treeifyError(r.error)});n={...n,...r.data}}if(d.body){let e=await s.json(),r=d.body.safeParse(e);if(!r.success)throw _.newError({error:r.error.message,statusCode:400,code:"NZMT-CONTROLLER___REQUEST-PARSING",details:external_zod_default().treeifyError(r.error)});n={...n,...r.data}}let l={},c=await a(n,{request:s,flags:l,endpointError:(e,r,t)=>"string"==typeof e?_.newError({statusCode:r??500,code:e,error:e,details:n},t):_.newError({...e,statusCode:r??500},t)});if(d.response){let e=d.response.safeParse(c);if(!e.success)throw _.newError({error:e.error.message,statusCode:500,code:"NZMT-CONTROLLER___RESPONSE-PARSING",details:external_zod_default().treeifyError(e.error)});if(o.eventHandlers?.onSuccess)for(let r of o.eventHandlers.onSuccess)r({request:s,result:e.data,requestPayload:n,flags:l});if(o.customResponseLogic?.onSuccess)return await o.customResponseLogic.onSuccess({req:s,response:e.data});return jsonResponse(e.data,{status:200})}if(o.eventHandlers?.onSuccess)for(let e of o.eventHandlers.onSuccess)await e({request:s,result:void 0,requestPayload:n,flags:l});if(o.customResponseLogic?.onSuccess)return await o.customResponseLogic.onSuccess({req:s,response:{}});return jsonResponse({},{status:200})}catch(t){let e=t;if(isControllerError(t)&&(e=_.newError({error:"Internal error",statusCode:500},t)),e.details&&"object"==typeof e.details||(e.details={}),r.onErrorHandlers)try{for(let t of r.onErrorHandlers)await t({error:e,req:s})}catch(r){e=_.newError({error:"onError handler error",statusCode:500},r)}if(o.eventHandlers?.onError)try{for(let r of o.eventHandlers.onError)await r({error:e,req:s})}catch(r){e=_.newError({error:"onError handler error",statusCode:500},r)}if(o.customResponseLogic?.onError)return await o.customResponseLogic.onError({req:s,error:e});return jsonResponse({message:e.message,details:e.statusCode.toString().startsWith("4")?e.details:null,code:e.code},{status:e.statusCode})}};class Pagination{data;static schema=external_zod_default().object({zeroBasedIndex:external_zod_default().coerce.number().int().nonnegative(),pageSize:external_zod_default().coerce.number().int().positive()});constructor(e){this.data=e}static create=e=>{let r=Pagination.schema.parse(e);return new Pagination(r)};get model(){return this.data}same=e=>e.model.pageSize===this.model.pageSize&&e.model.zeroBasedIndex===this.model.zeroBasedIndex;get nextPage(){return Pagination.create({pageSize:this.data.pageSize,zeroBasedIndex:this.data.zeroBasedIndex+1})}get previousPage(){return 0===this.model.zeroBasedIndex?Pagination.create(this.model):Pagination.create({pageSize:this.model.pageSize,zeroBasedIndex:this.model.zeroBasedIndex-1})}get previousPage_UNSAFE(){return Pagination.create({pageSize:this.model.pageSize,zeroBasedIndex:this.model.zeroBasedIndex-1})}}const toModuleMetadata=e=>({name:e.name,schemas:{...e.customOperations??{},list:{payload:external_zod_default().object({filter:e.searchPayload.list,pagination:Pagination.schema.optional()}),response:external_zod_default().array(e.models.list)},details:{payload:external_zod_default().object({filter:e.searchPayload.specific}),response:e.models.details.nullable()},create:{payload:external_zod_default().object({payload:e.actionsPayload.create}),response:external_zod_default().object({id:external_zod_default().string()})},updateOne:{payload:external_zod_default().object({filter:e.searchPayload.specific,payload:e.actionsPayload.update}),response:external_zod_default().object({success:external_zod_default().boolean()})},deleteOne:{payload:external_zod_default().object({filter:e.searchPayload.specific}),response:external_zod_default().object({success:external_zod_default().boolean()})}}}),store_zod_utils_methods=e=>methods(toModuleMetadata(e)),InRAM=(e,r)=>{class t{___data=[];method=store_zod_utils_methods(e);___listSearchLogic=(e,r)=>{let t=Object.entries(r).filter(([e,r])=>!!r).map(e=>e[0]);return Object.entries(e).filter(([e])=>t.includes(e)).every(([e,t])=>t===r[e]||t?.toString()?.includes(r[e]?.toString()))};___specificSearchLogic=(e,r)=>{let t=Object.entries(r).filter(([e,r])=>!!r).map(e=>e[0]);return Object.entries(e).filter(([e])=>t.includes(e)).every(([e,t])=>t===r[e]||t?.toString()?.includes(r[e]?.toString()))};___mapDetailToList=e=>e;___mapCreatePayloadToDetail=e=>({...e,id:Math.random().toString()});___mapUpdatePayloadToDetail=(e,r)=>{let t=Object.fromEntries(Object.entries(r).filter(([,e])=>void 0!==e));return{...e,...t}};constructor(){if(!r)return;r.searchLogic&&(r.searchLogic.list&&(this.___listSearchLogic=r.searchLogic.list),r.searchLogic.specific&&(this.___specificSearchLogic=r.searchLogic.specific)),r.mappers&&(r.mappers.detailToList&&(this.___mapDetailToList=r.mappers.detailToList),r.mappers.createPayloadToDetail&&(this.___mapCreatePayloadToDetail=r.mappers.createPayloadToDetail),r.mappers.updatePayloadToDetail&&(this.___mapUpdatePayloadToDetail=r.mappers.updatePayloadToDetail)),r.initialData&&(this.___data=[...r.initialData])}list=this.method("list",async({filter:r,pagination:t={pageSize:1e3,zeroBasedIndex:0}})=>{e.searchPayload.list.parse(r),Pagination.schema.parse(t);let a=this.___data.filter(e=>this.___listSearchLogic(e,r)).filter((e,r)=>r>=t.pageSize*t.zeroBasedIndex&&r<(t.zeroBasedIndex+1)*t.pageSize).map(e=>this.___mapDetailToList(e));return external_zod_default().array(e.models.list).parse(a),a});details=this.method("details",async({filter:e})=>{let r=this.___data.find(r=>this.___specificSearchLogic(r,e));return r||null});create=this.method("create",async({payload:e})=>{let r=this.___mapCreatePayloadToDetail(e);return this.___data=this.___data.concat(r),{id:r.id}});updateOne=this.method("updateOne",async({filter:e,payload:r})=>{let t=this.___data.findIndex(r=>this.___specificSearchLogic(r,e));return this.___data=this.___data.map((e,a)=>a!==t?e:this.___mapUpdatePayloadToDetail(e,r)),{success:t>-1}});deleteOne=this.method("deleteOne",async({filter:e})=>{let r=this.___data.findIndex(r=>this.___specificSearchLogic(r,e));return this.___data=this.___data.filter((e,t)=>t!==r),{success:r>-1}})}return t};for(var __rspack_i in exports.Controller=__webpack_exports__.Controller,exports.Module=__webpack_exports__.Module,exports.Store=__webpack_exports__.Store,exports.ValueObjects=__webpack_exports__.ValueObjects,__webpack_exports__)-1===["Controller","Module","Store","ValueObjects"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
1
+ "use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(r,{a:r}),r},__webpack_require__.d=(e,r)=>{for(var t in r)__webpack_require__.o(r,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},__webpack_require__.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Controller:()=>zod_controller_utils_namespaceObject,Store:()=>store_namespaceObject,Module:()=>zod_module_utils_namespaceObject,ValueObjects:()=>value_objects_namespaceObject});var zod_module_utils_namespaceObject={};__webpack_require__.r(zod_module_utils_namespaceObject),__webpack_require__.d(zod_module_utils_namespaceObject,{methods:()=>methods});var zod_controller_utils_namespaceObject={};__webpack_require__.r(zod_controller_utils_namespaceObject),__webpack_require__.d(zod_controller_utils_namespaceObject,{DefaultErrorCodes:()=>zod_controller_utils_DefaultErrorCodes,endpoints:()=>endpoints});var store_namespaceObject={};__webpack_require__.r(store_namespaceObject),__webpack_require__.d(store_namespaceObject,{InRAM:()=>InRAM,methods:()=>store_zod_utils_methods,toModuleMetadata:()=>toModuleMetadata});var value_objects_namespaceObject={};__webpack_require__.r(value_objects_namespaceObject),__webpack_require__.d(value_objects_namespaceObject,{Pagination:()=>Pagination});const isControllerError=e=>{if(!e||"object"!=typeof e)return!1;let r=Object.keys(e);return["name","message","code","module","method","timestamp","statusCode"].every(e=>r.includes(e))},isModuleError=e=>{if("object"!=typeof e||!e)return!1;let r=Object.keys(e);return!!["name","message","code","module","method","timestamp"].every(e=>r.includes(e))&&!r.includes("statusCode")},spawnBaseError=({error:e,code:r,details:t})=>{let a=e instanceof Error?e:Error("unknown error");return("string"==typeof e||"number"==typeof e)&&(a=Error(e?.toString())),"object"==typeof e&&null!==e&&(a=e instanceof Error?e:Error(JSON.stringify(e))),{message:a.message,name:a.name,timestamp:Date.now(),code:r||a.name,details:t||null}},spawnFromUnknownError=e=>isModuleError(e)||(e=>{if("object"!=typeof e||!e)return!1;let r=Object.keys(e);return["name","message","code","timestamp"].every(e=>r.includes(e))})(e)?e:spawnBaseError({error:e}),spawnModuleError=e=>({inMethod:r=>({newError:(t,a)=>({...spawnBaseError(t),cause:a?spawnFromUnknownError(a):null,module:e,method:r})})}),spawnControllerError=e=>({inMethod:r=>({newError:(t,a)=>{let o=spawnBaseError(t),s=a?spawnFromUnknownError(a):null;return!t.code&&s?.code&&(o.code=s.code),{...o,cause:s,module:e,method:r,statusCode:t.statusCode}}})}),methods=(e,r={})=>(t,a,o={})=>{let{name:s,schemas:n}=e;return async e=>{try{let r=n[t].payload.parse(e),o=await a(r,{methodError:(e,a)=>spawnModuleError(s).inMethod(t).newError("string"==typeof e?{error:e,code:e,details:r}:e,a)});return n[t].response.parse(o)}catch(a){if(isModuleError(a))throw r.onError&&await r.onError(a),o.onError&&await o.onError(a),a;let e=spawnModuleError(s).inMethod(t).newError({error:a});throw o.onError&&await o.onError(e),e}}},external_zod_namespaceObject=require("zod");var external_zod_default=__webpack_require__.n(external_zod_namespaceObject);function jsonResponse(e,r){return new Response(JSON.stringify(e),{...r,headers:{"Content-Type":"application/json",...r?.headers||{}}})}var zod_controller_utils_DefaultErrorCodes=function(e){return e.REQUEST_PARSING="NZMT-CONTROLLER___REQUEST-PARSING",e.RESPONSE_PARSING="NZMT-CONTROLLER___RESPONSE-PARSING",e}({});const endpoints=(e,r={})=>(t,a,o={})=>async s=>{let n={},_=spawnControllerError(e.name).inMethod(t);try{let i=(e,r,t)=>"string"==typeof e?_.newError({statusCode:r??500,code:e,error:e,details:n},t):_.newError({...e,statusCode:r??500},t);if(r.guards)for(let e of r.guards){let r=await e({request:s,endpointError:i});if(r)throw r}if(o.guards)for(let e of o.guards){let r=await e({request:s,endpointError:i});if(r)throw r}let d=e.schemas[t];if(!d)throw _.newError({error:"No schemas were found for the endpoint",statusCode:500});if(d.query){let e=Object.fromEntries(s.nextUrl.searchParams.entries()),r=d.query.safeParse(e);if(!r.success)throw _.newError({error:r.error.message,statusCode:400,code:"NZMT-CONTROLLER___REQUEST-PARSING",details:external_zod_default().treeifyError(r.error)});n={...n,...r.data}}if(d.body){let e=await s.json(),r=d.body.safeParse(e);if(!r.success)throw _.newError({error:r.error.message,statusCode:400,code:"NZMT-CONTROLLER___REQUEST-PARSING",details:external_zod_default().treeifyError(r.error)});n={...n,...r.data}}let l={},c=await a(n,{request:s,flags:l,endpointError:(e,r,t)=>"string"==typeof e?_.newError({statusCode:r??500,code:e,error:e,details:n},t):_.newError({...e,statusCode:r??500},t)});if(d.response){let e=d.response.safeParse(c);if(!e.success)throw _.newError({error:e.error.message,statusCode:500,code:"NZMT-CONTROLLER___RESPONSE-PARSING",details:external_zod_default().treeifyError(e.error)});if(o.eventHandlers?.onSuccess)for(let r of o.eventHandlers.onSuccess)r({request:s,result:e.data,requestPayload:n,flags:l});if(o.customResponseLogic?.onSuccess)return await o.customResponseLogic.onSuccess({req:s,response:e.data});return jsonResponse(e.data,{status:200})}if(o.eventHandlers?.onSuccess)for(let e of o.eventHandlers.onSuccess)await e({request:s,result:void 0,requestPayload:n,flags:l});if(o.customResponseLogic?.onSuccess)return await o.customResponseLogic.onSuccess({req:s,response:{}});return jsonResponse({},{status:200})}catch(t){let e=t;if(isControllerError(t)&&(e=_.newError({error:"Internal error",statusCode:500},t)),e.details&&"object"==typeof e.details||(e.details={}),r.onErrorHandlers)try{for(let t of r.onErrorHandlers)await t({error:e,req:s})}catch(r){e=_.newError({error:"onError handler error",statusCode:500},r)}if(o.eventHandlers?.onError)try{for(let r of o.eventHandlers.onError)await r({error:e,req:s})}catch(r){e=_.newError({error:"onError handler error",statusCode:500},r)}if(o.customResponseLogic?.onError)return await o.customResponseLogic.onError({req:s,error:e});return jsonResponse({message:e.message,details:e.statusCode.toString().startsWith("4")?e.details:null,code:e.code},{status:e.statusCode})}};class Pagination{data;static schema=external_zod_default().object({zeroBasedIndex:external_zod_default().coerce.number().int().nonnegative(),pageSize:external_zod_default().coerce.number().int().positive()});constructor(e){this.data=e}static create=e=>{let r=Pagination.schema.parse(e);return new Pagination(r)};get model(){return this.data}same=e=>e.model.pageSize===this.model.pageSize&&e.model.zeroBasedIndex===this.model.zeroBasedIndex;get nextPage(){return Pagination.create({pageSize:this.data.pageSize,zeroBasedIndex:this.data.zeroBasedIndex+1})}get previousPage(){return 0===this.model.zeroBasedIndex?Pagination.create(this.model):Pagination.create({pageSize:this.model.pageSize,zeroBasedIndex:this.model.zeroBasedIndex-1})}get previousPage_UNSAFE(){return Pagination.create({pageSize:this.model.pageSize,zeroBasedIndex:this.model.zeroBasedIndex-1})}}const toModuleMetadata=e=>({name:e.name,schemas:{...e.customOperations??{},list:{payload:external_zod_default().object({filter:e.searchPayload.list,pagination:Pagination.schema.optional()}),response:external_zod_default().array(e.models.list)},details:{payload:external_zod_default().object({filter:e.searchPayload.specific}),response:e.models.details.nullable()},create:{payload:external_zod_default().object({payload:e.actionsPayload.create}),response:external_zod_default().object({id:external_zod_default().string()})},updateOne:{payload:external_zod_default().object({filter:e.searchPayload.specific,payload:e.actionsPayload.update}),response:external_zod_default().object({success:external_zod_default().boolean()})},deleteOne:{payload:external_zod_default().object({filter:e.searchPayload.specific}),response:external_zod_default().object({success:external_zod_default().boolean()})}}}),store_zod_utils_methods=e=>methods(toModuleMetadata(e)),InRAM=(e,r)=>{class t{___data=[];method=store_zod_utils_methods(e);___listSearchLogic=(e,r)=>{let t=Object.entries(r).filter(([e,r])=>!!r).map(e=>e[0]);return Object.entries(e).filter(([e])=>t.includes(e)).every(([e,t])=>t===r[e]||t?.toString()?.includes(r[e]?.toString()))};___specificSearchLogic=(e,r)=>{let t=Object.entries(r).filter(([e,r])=>!!r).map(e=>e[0]);return Object.entries(e).filter(([e])=>t.includes(e)).every(([e,t])=>t===r[e]||t?.toString()?.includes(r[e]?.toString()))};___mapDetailToList=e=>e;___mapCreatePayloadToDetail=e=>({...e,id:Math.random().toString()});___mapUpdatePayloadToDetail=(e,r)=>{let t=Object.fromEntries(Object.entries(r).filter(([,e])=>void 0!==e));return{...e,...t}};constructor(){if(!r)return;r.searchLogic&&(r.searchLogic.list&&(this.___listSearchLogic=r.searchLogic.list),r.searchLogic.specific&&(this.___specificSearchLogic=r.searchLogic.specific)),r.mappers&&(r.mappers.detailToList&&(this.___mapDetailToList=r.mappers.detailToList),r.mappers.createPayloadToDetail&&(this.___mapCreatePayloadToDetail=r.mappers.createPayloadToDetail),r.mappers.updatePayloadToDetail&&(this.___mapUpdatePayloadToDetail=r.mappers.updatePayloadToDetail)),r.initialData&&(this.___data=[...r.initialData])}list=this.method("list",async({filter:r,pagination:t={pageSize:1e3,zeroBasedIndex:0}})=>{e.searchPayload.list.parse(r),Pagination.schema.parse(t);let a=this.___data.filter(e=>this.___listSearchLogic(e,r)).filter((e,r)=>r>=t.pageSize*t.zeroBasedIndex&&r<(t.zeroBasedIndex+1)*t.pageSize).map(e=>this.___mapDetailToList(e));return external_zod_default().array(e.models.list).parse(a),a});details=this.method("details",async({filter:e})=>{let r=this.___data.find(r=>this.___specificSearchLogic(r,e));return r||null});create=this.method("create",async({payload:e})=>{let r=this.___mapCreatePayloadToDetail(e);return this.___data=this.___data.concat(r),{id:r.id}});updateOne=this.method("updateOne",async({filter:e,payload:r})=>{let t=this.___data.findIndex(r=>this.___specificSearchLogic(r,e));return this.___data=this.___data.map((e,a)=>a!==t?e:this.___mapUpdatePayloadToDetail(e,r)),{success:t>-1}});deleteOne=this.method("deleteOne",async({filter:e})=>{let r=this.___data.findIndex(r=>this.___specificSearchLogic(r,e));return this.___data=this.___data.filter((e,t)=>t!==r),{success:r>-1}})}return t};for(var __rspack_i in exports.Controller=__webpack_exports__.Controller,exports.Module=__webpack_exports__.Module,exports.Store=__webpack_exports__.Store,exports.ValueObjects=__webpack_exports__.ValueObjects,__webpack_exports__)-1===["Controller","Module","Store","ValueObjects"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{__webpack_require__ as e}from"./rslib-runtime.js";import r from"zod";var t,a={};e.r(a),e.d(a,{InRAM:()=>y,methods:()=>g,toModuleMetadata:()=>f});var o={};e.r(o),e.d(o,{Pagination:()=>h});var s={};e.r(s),e.d(s,{DefaultErrorCodes:()=>_,endpoints:()=>m});var i={};e.r(i),e.d(i,{methods:()=>u});let n=e=>{if("object"!=typeof e||!e)return!1;let r=Object.keys(e);return!!["name","message","code","module","method","timestamp"].every(e=>r.includes(e))&&!r.includes("statusCode")},d=({error:e,code:r,details:t})=>{let a=e instanceof Error?e:Error("unknown error");return("string"==typeof e||"number"==typeof e)&&(a=Error(e?.toString())),"object"==typeof e&&null!==e&&(a=e instanceof Error?e:Error(JSON.stringify(e))),{message:a.message,name:a.name,timestamp:Date.now(),code:r||a.name,details:t||null}},c=e=>n(e)||(e=>{if("object"!=typeof e||!e)return!1;let r=Object.keys(e);return["name","message","code","timestamp"].every(e=>r.includes(e))})(e)?e:d({error:e}),l=e=>({inMethod:r=>({newError:(t,a)=>({...d(t),cause:a?c(a):null,module:e,method:r})})}),u=(e,r={})=>(t,a,o={})=>{let{name:s,schemas:i}=e;return async e=>{try{let r=i[t].payload.parse(e),o=await a(r,{methodError:(e,a)=>l(s).inMethod(t).newError("string"==typeof e?{error:e,code:e,details:r}:e,a)});return i[t].response.parse(o)}catch(a){if(n(a))throw r.onError&&await r.onError(a),o.onError&&await o.onError(a),a;let e=l(s).inMethod(t).newError({error:"Caught unhandled module error (see `cause` field for details)"},a);throw o.onError&&await o.onError(e),e}}};function p(e,r){return new Response(JSON.stringify(e),{...r,headers:{"Content-Type":"application/json",...r?.headers||{}}})}var _=((t={}).REQUEST_PARSING="NZMT-CONTROLLER___REQUEST-PARSING",t.RESPONSE_PARSING="NZMT-CONTROLLER___RESPONSE-PARSING",t);let m=(e,t={})=>(a,o,s={})=>async i=>{let n,l={},u=(n=e.name,{inMethod:e=>({newError:(r,t)=>{let a=d(r),o=t?c(t):null;return!r.code&&o?.code&&(a.code=o.code),{...a,cause:o,module:n,method:e,statusCode:r.statusCode}}})}).inMethod(a);try{let n=(e,r,t)=>"string"==typeof e?u.newError({statusCode:r??500,code:e,error:e,details:l},t):u.newError({...e,statusCode:r??500},t);if(t.guards)for(let e of t.guards){let r=await e({request:i,endpointError:n});if(r)throw r}if(s.guards)for(let e of s.guards){let r=await e({request:i,endpointError:n});if(r)throw r}let d=e.schemas[a];if(!d)throw u.newError({error:"No schemas were found for the endpoint",statusCode:500});if(d.query){let e=Object.fromEntries(i.nextUrl.searchParams.entries()),t=d.query.safeParse(e);if(!t.success)throw u.newError({error:t.error.message,statusCode:400,code:"NZMT-CONTROLLER___REQUEST-PARSING",details:r.treeifyError(t.error)});l={...l,...t.data}}if(d.body){let e=await i.json(),t=d.body.safeParse(e);if(!t.success)throw u.newError({error:t.error.message,statusCode:400,code:"NZMT-CONTROLLER___REQUEST-PARSING",details:r.treeifyError(t.error)});l={...l,...t.data}}let c={},_=await o(l,{request:i,flags:c,endpointError:(e,r,t)=>"string"==typeof e?u.newError({statusCode:r??500,code:e,error:e,details:l},t):u.newError({...e,statusCode:r??500},t)});if(d.response){let e=d.response.safeParse(_);if(!e.success)throw u.newError({error:e.error.message,statusCode:500,code:"NZMT-CONTROLLER___RESPONSE-PARSING",details:r.treeifyError(e.error)});if(s.eventHandlers?.onSuccess)for(let r of s.eventHandlers.onSuccess)r({request:i,result:e.data,requestPayload:l,flags:c});if(s.customResponseLogic?.onSuccess)return await s.customResponseLogic.onSuccess({req:i,response:e.data});return p(e.data,{status:200})}if(s.eventHandlers?.onSuccess)for(let e of s.eventHandlers.onSuccess)await e({request:i,result:void 0,requestPayload:l,flags:c});if(s.customResponseLogic?.onSuccess)return await s.customResponseLogic.onSuccess({req:i,response:{}});return p({},{status:200})}catch(r){let e=r;if((e=>{if(!e||"object"!=typeof e)return!1;let r=Object.keys(e);return["name","message","code","module","method","timestamp","statusCode"].every(e=>r.includes(e))})(r)&&(e=u.newError({error:"Internal error",statusCode:500},r)),e.details&&"object"==typeof e.details||(e.details={}),t.onErrorHandlers)try{for(let r of t.onErrorHandlers)await r({error:e,req:i})}catch(r){e=u.newError({error:"onError handler error",statusCode:500},r)}if(s.eventHandlers?.onError)try{for(let r of s.eventHandlers.onError)await r({error:e,req:i})}catch(r){e=u.newError({error:"onError handler error",statusCode:500},r)}if(s.customResponseLogic?.onError)return await s.customResponseLogic.onError({req:i,error:e});return p({message:e.message,details:e.statusCode.toString().startsWith("4")?e.details:null,code:e.code},{status:e.statusCode})}};class h{data;static schema=r.object({zeroBasedIndex:r.coerce.number().int().nonnegative(),pageSize:r.coerce.number().int().positive()});constructor(e){this.data=e}static create=e=>{let r=h.schema.parse(e);return new h(r)};get model(){return this.data}same=e=>e.model.pageSize===this.model.pageSize&&e.model.zeroBasedIndex===this.model.zeroBasedIndex;get nextPage(){return h.create({pageSize:this.data.pageSize,zeroBasedIndex:this.data.zeroBasedIndex+1})}get previousPage(){return 0===this.model.zeroBasedIndex?h.create(this.model):h.create({pageSize:this.model.pageSize,zeroBasedIndex:this.model.zeroBasedIndex-1})}get previousPage_UNSAFE(){return h.create({pageSize:this.model.pageSize,zeroBasedIndex:this.model.zeroBasedIndex-1})}}let f=e=>({name:e.name,schemas:{...e.customOperations??{},list:{payload:r.object({filter:e.searchPayload.list,pagination:h.schema.optional()}),response:r.array(e.models.list)},details:{payload:r.object({filter:e.searchPayload.specific}),response:e.models.details.nullable()},create:{payload:r.object({payload:e.actionsPayload.create}),response:r.object({id:r.string()})},updateOne:{payload:r.object({filter:e.searchPayload.specific,payload:e.actionsPayload.update}),response:r.object({success:r.boolean()})},deleteOne:{payload:r.object({filter:e.searchPayload.specific}),response:r.object({success:r.boolean()})}}}),g=e=>u(f(e)),y=(e,t)=>{class a{___data=[];method=g(e);___listSearchLogic=(e,r)=>{let t=Object.entries(r).filter(([e,r])=>!!r).map(e=>e[0]);return Object.entries(e).filter(([e])=>t.includes(e)).every(([e,t])=>t===r[e]||t?.toString()?.includes(r[e]?.toString()))};___specificSearchLogic=(e,r)=>{let t=Object.entries(r).filter(([e,r])=>!!r).map(e=>e[0]);return Object.entries(e).filter(([e])=>t.includes(e)).every(([e,t])=>t===r[e]||t?.toString()?.includes(r[e]?.toString()))};___mapDetailToList=e=>e;___mapCreatePayloadToDetail=e=>({...e,id:Math.random().toString()});___mapUpdatePayloadToDetail=(e,r)=>{let t=Object.fromEntries(Object.entries(r).filter(([,e])=>void 0!==e));return{...e,...t}};constructor(){if(!t)return;t.searchLogic&&(t.searchLogic.list&&(this.___listSearchLogic=t.searchLogic.list),t.searchLogic.specific&&(this.___specificSearchLogic=t.searchLogic.specific)),t.mappers&&(t.mappers.detailToList&&(this.___mapDetailToList=t.mappers.detailToList),t.mappers.createPayloadToDetail&&(this.___mapCreatePayloadToDetail=t.mappers.createPayloadToDetail),t.mappers.updatePayloadToDetail&&(this.___mapUpdatePayloadToDetail=t.mappers.updatePayloadToDetail)),t.initialData&&(this.___data=[...t.initialData])}list=this.method("list",async({filter:t,pagination:a={pageSize:1e3,zeroBasedIndex:0}})=>{e.searchPayload.list.parse(t),h.schema.parse(a);let o=this.___data.filter(e=>this.___listSearchLogic(e,t)).filter((e,r)=>r>=a.pageSize*a.zeroBasedIndex&&r<(a.zeroBasedIndex+1)*a.pageSize).map(e=>this.___mapDetailToList(e));return r.array(e.models.list).parse(o),o});details=this.method("details",async({filter:e})=>{let r=this.___data.find(r=>this.___specificSearchLogic(r,e));return r||null});create=this.method("create",async({payload:e})=>{let r=this.___mapCreatePayloadToDetail(e);return this.___data=this.___data.concat(r),{id:r.id}});updateOne=this.method("updateOne",async({filter:e,payload:r})=>{let t=this.___data.findIndex(r=>this.___specificSearchLogic(r,e));return this.___data=this.___data.map((e,a)=>a!==t?e:this.___mapUpdatePayloadToDetail(e,r)),{success:t>-1}});deleteOne=this.method("deleteOne",async({filter:e})=>{let r=this.___data.findIndex(r=>this.___specificSearchLogic(r,e));return this.___data=this.___data.filter((e,t)=>t!==r),{success:r>-1}})}return a};export{a as Store,o as ValueObjects,s as Controller,i as Module};
1
+ import{__webpack_require__ as e}from"./rslib-runtime.js";import r from"zod";var t,a={};e.r(a),e.d(a,{InRAM:()=>y,methods:()=>g,toModuleMetadata:()=>f});var o={};e.r(o),e.d(o,{Pagination:()=>h});var s={};e.r(s),e.d(s,{DefaultErrorCodes:()=>_,endpoints:()=>m});var i={};e.r(i),e.d(i,{methods:()=>u});let n=e=>{if("object"!=typeof e||!e)return!1;let r=Object.keys(e);return!!["name","message","code","module","method","timestamp"].every(e=>r.includes(e))&&!r.includes("statusCode")},d=({error:e,code:r,details:t})=>{let a=e instanceof Error?e:Error("unknown error");return("string"==typeof e||"number"==typeof e)&&(a=Error(e?.toString())),"object"==typeof e&&null!==e&&(a=e instanceof Error?e:Error(JSON.stringify(e))),{message:a.message,name:a.name,timestamp:Date.now(),code:r||a.name,details:t||null}},c=e=>n(e)||(e=>{if("object"!=typeof e||!e)return!1;let r=Object.keys(e);return["name","message","code","timestamp"].every(e=>r.includes(e))})(e)?e:d({error:e}),l=e=>({inMethod:r=>({newError:(t,a)=>({...d(t),cause:a?c(a):null,module:e,method:r})})}),u=(e,r={})=>(t,a,o={})=>{let{name:s,schemas:i}=e;return async e=>{try{let r=i[t].payload.parse(e),o=await a(r,{methodError:(e,a)=>l(s).inMethod(t).newError("string"==typeof e?{error:e,code:e,details:r}:e,a)});return i[t].response.parse(o)}catch(a){if(n(a))throw r.onError&&await r.onError(a),o.onError&&await o.onError(a),a;let e=l(s).inMethod(t).newError({error:a});throw o.onError&&await o.onError(e),e}}};function p(e,r){return new Response(JSON.stringify(e),{...r,headers:{"Content-Type":"application/json",...r?.headers||{}}})}var _=((t={}).REQUEST_PARSING="NZMT-CONTROLLER___REQUEST-PARSING",t.RESPONSE_PARSING="NZMT-CONTROLLER___RESPONSE-PARSING",t);let m=(e,t={})=>(a,o,s={})=>async i=>{let n,l={},u=(n=e.name,{inMethod:e=>({newError:(r,t)=>{let a=d(r),o=t?c(t):null;return!r.code&&o?.code&&(a.code=o.code),{...a,cause:o,module:n,method:e,statusCode:r.statusCode}}})}).inMethod(a);try{let n=(e,r,t)=>"string"==typeof e?u.newError({statusCode:r??500,code:e,error:e,details:l},t):u.newError({...e,statusCode:r??500},t);if(t.guards)for(let e of t.guards){let r=await e({request:i,endpointError:n});if(r)throw r}if(s.guards)for(let e of s.guards){let r=await e({request:i,endpointError:n});if(r)throw r}let d=e.schemas[a];if(!d)throw u.newError({error:"No schemas were found for the endpoint",statusCode:500});if(d.query){let e=Object.fromEntries(i.nextUrl.searchParams.entries()),t=d.query.safeParse(e);if(!t.success)throw u.newError({error:t.error.message,statusCode:400,code:"NZMT-CONTROLLER___REQUEST-PARSING",details:r.treeifyError(t.error)});l={...l,...t.data}}if(d.body){let e=await i.json(),t=d.body.safeParse(e);if(!t.success)throw u.newError({error:t.error.message,statusCode:400,code:"NZMT-CONTROLLER___REQUEST-PARSING",details:r.treeifyError(t.error)});l={...l,...t.data}}let c={},_=await o(l,{request:i,flags:c,endpointError:(e,r,t)=>"string"==typeof e?u.newError({statusCode:r??500,code:e,error:e,details:l},t):u.newError({...e,statusCode:r??500},t)});if(d.response){let e=d.response.safeParse(_);if(!e.success)throw u.newError({error:e.error.message,statusCode:500,code:"NZMT-CONTROLLER___RESPONSE-PARSING",details:r.treeifyError(e.error)});if(s.eventHandlers?.onSuccess)for(let r of s.eventHandlers.onSuccess)r({request:i,result:e.data,requestPayload:l,flags:c});if(s.customResponseLogic?.onSuccess)return await s.customResponseLogic.onSuccess({req:i,response:e.data});return p(e.data,{status:200})}if(s.eventHandlers?.onSuccess)for(let e of s.eventHandlers.onSuccess)await e({request:i,result:void 0,requestPayload:l,flags:c});if(s.customResponseLogic?.onSuccess)return await s.customResponseLogic.onSuccess({req:i,response:{}});return p({},{status:200})}catch(r){let e=r;if((e=>{if(!e||"object"!=typeof e)return!1;let r=Object.keys(e);return["name","message","code","module","method","timestamp","statusCode"].every(e=>r.includes(e))})(r)&&(e=u.newError({error:"Internal error",statusCode:500},r)),e.details&&"object"==typeof e.details||(e.details={}),t.onErrorHandlers)try{for(let r of t.onErrorHandlers)await r({error:e,req:i})}catch(r){e=u.newError({error:"onError handler error",statusCode:500},r)}if(s.eventHandlers?.onError)try{for(let r of s.eventHandlers.onError)await r({error:e,req:i})}catch(r){e=u.newError({error:"onError handler error",statusCode:500},r)}if(s.customResponseLogic?.onError)return await s.customResponseLogic.onError({req:i,error:e});return p({message:e.message,details:e.statusCode.toString().startsWith("4")?e.details:null,code:e.code},{status:e.statusCode})}};class h{data;static schema=r.object({zeroBasedIndex:r.coerce.number().int().nonnegative(),pageSize:r.coerce.number().int().positive()});constructor(e){this.data=e}static create=e=>{let r=h.schema.parse(e);return new h(r)};get model(){return this.data}same=e=>e.model.pageSize===this.model.pageSize&&e.model.zeroBasedIndex===this.model.zeroBasedIndex;get nextPage(){return h.create({pageSize:this.data.pageSize,zeroBasedIndex:this.data.zeroBasedIndex+1})}get previousPage(){return 0===this.model.zeroBasedIndex?h.create(this.model):h.create({pageSize:this.model.pageSize,zeroBasedIndex:this.model.zeroBasedIndex-1})}get previousPage_UNSAFE(){return h.create({pageSize:this.model.pageSize,zeroBasedIndex:this.model.zeroBasedIndex-1})}}let f=e=>({name:e.name,schemas:{...e.customOperations??{},list:{payload:r.object({filter:e.searchPayload.list,pagination:h.schema.optional()}),response:r.array(e.models.list)},details:{payload:r.object({filter:e.searchPayload.specific}),response:e.models.details.nullable()},create:{payload:r.object({payload:e.actionsPayload.create}),response:r.object({id:r.string()})},updateOne:{payload:r.object({filter:e.searchPayload.specific,payload:e.actionsPayload.update}),response:r.object({success:r.boolean()})},deleteOne:{payload:r.object({filter:e.searchPayload.specific}),response:r.object({success:r.boolean()})}}}),g=e=>u(f(e)),y=(e,t)=>{class a{___data=[];method=g(e);___listSearchLogic=(e,r)=>{let t=Object.entries(r).filter(([e,r])=>!!r).map(e=>e[0]);return Object.entries(e).filter(([e])=>t.includes(e)).every(([e,t])=>t===r[e]||t?.toString()?.includes(r[e]?.toString()))};___specificSearchLogic=(e,r)=>{let t=Object.entries(r).filter(([e,r])=>!!r).map(e=>e[0]);return Object.entries(e).filter(([e])=>t.includes(e)).every(([e,t])=>t===r[e]||t?.toString()?.includes(r[e]?.toString()))};___mapDetailToList=e=>e;___mapCreatePayloadToDetail=e=>({...e,id:Math.random().toString()});___mapUpdatePayloadToDetail=(e,r)=>{let t=Object.fromEntries(Object.entries(r).filter(([,e])=>void 0!==e));return{...e,...t}};constructor(){if(!t)return;t.searchLogic&&(t.searchLogic.list&&(this.___listSearchLogic=t.searchLogic.list),t.searchLogic.specific&&(this.___specificSearchLogic=t.searchLogic.specific)),t.mappers&&(t.mappers.detailToList&&(this.___mapDetailToList=t.mappers.detailToList),t.mappers.createPayloadToDetail&&(this.___mapCreatePayloadToDetail=t.mappers.createPayloadToDetail),t.mappers.updatePayloadToDetail&&(this.___mapUpdatePayloadToDetail=t.mappers.updatePayloadToDetail)),t.initialData&&(this.___data=[...t.initialData])}list=this.method("list",async({filter:t,pagination:a={pageSize:1e3,zeroBasedIndex:0}})=>{e.searchPayload.list.parse(t),h.schema.parse(a);let o=this.___data.filter(e=>this.___listSearchLogic(e,t)).filter((e,r)=>r>=a.pageSize*a.zeroBasedIndex&&r<(a.zeroBasedIndex+1)*a.pageSize).map(e=>this.___mapDetailToList(e));return r.array(e.models.list).parse(o),o});details=this.method("details",async({filter:e})=>{let r=this.___data.find(r=>this.___specificSearchLogic(r,e));return r||null});create=this.method("create",async({payload:e})=>{let r=this.___mapCreatePayloadToDetail(e);return this.___data=this.___data.concat(r),{id:r.id}});updateOne=this.method("updateOne",async({filter:e,payload:r})=>{let t=this.___data.findIndex(r=>this.___specificSearchLogic(r,e));return this.___data=this.___data.map((e,a)=>a!==t?e:this.___mapUpdatePayloadToDetail(e,r)),{success:t>-1}});deleteOne=this.method("deleteOne",async({filter:e})=>{let r=this.___data.findIndex(r=>this.___specificSearchLogic(r,e));return this.___data=this.___data.filter((e,t)=>t!==r),{success:r>-1}})}return a};export{a as Store,o as ValueObjects,s as Controller,i as Module};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alevnyacow/nzmt",
3
- "version": "0.34.1",
3
+ "version": "0.34.3",
4
4
  "description": "Next Zod Modules Toolkit",
5
5
  "keywords": ["next", "full-stack", "server", "backend", "cli", "scaffolding", "zod", "rest", "contract programming", "contract-first", "react-query", "ddd", "domain-driven"],
6
6
  "repository": {