@konnec/vue-middleware-plugin
Version:
A middleware plugin for Vue 3
1 lines • 6.86 kB
Source Map (JSON)
{"version":3,"file":"vue-middleware-plugin.umd.cjs","sources":["../src/controller/controller.ts","../src/middleware/next-factory.ts","../src/middleware/next-middleware.ts","../src/middleware/MiddlewarePlugin.ts","../src/casting/castId.ts","../src/casting/castRoute.ts"],"sourcesContent":["import { reactive } from 'vue'\n\nexport interface route {\n query?: any,\n meta?: {\n name: string\n title: string,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n middleware?: Function | Function[],\n controller?: [any, string],\n }\n params?: {\n id: string | undefined\n },\n}\n\ninterface navigation {\n to: route,\n from: route,\n route: any\n}\n\nexport let request: any = reactive({})\nexport let model: any = reactive({})\nexport let params: any = reactive({})\nexport const useController = () => {\n return { request, model, params }\n}\nexport const useModel = () => {\n return model\n}\n// export const useRequest = () => {\n// return request\n// }\n\nexport const requestsInjection = async (navigation: navigation) => {\n request = navigation.to.query\n\n if (!navigation.to.meta?.controller) throw new Error('Controller not defined')\n if (!navigation.to.meta?.controller.length) throw new Error('Controller/Method not defined')\n if (!navigation.to.params) new Error('No Params found')\n params = serializeParams(navigation.to.params)\n // console.log('Serialized Params: ', params)\n\n model = new (navigation.to.meta.controller[ 0 ])()\n const method = navigation.to.meta.controller[ 1 ]\n await model[ method ](params.id)\n console.log(model.model.comments)\n\n return\n}\n\nfunction serializeParams(params: any) {\n Object.keys(params).forEach(key => {\n if (params[ key ]) {\n params[ key ] = Number(params[ key ])\n }\n else if (params[ key ] === '') {\n params[ key ] = null\n }\n })\n\n return params\n}\n","// Creates a `nextMiddleware()` function which not only\n// runs the default `next()` callback but also triggers\n// the subsequent Middleware function.\n\nimport type { route } from '@/controller/controller'\nimport type { Router } from 'vue-router'\n\nconst nextFactory = (\n context: { from?: route; to?: route; router?: Router; next?: any }, middleware: any|any[],\n index: number\n) => {\n const subsequentMiddleware = middleware[ index ]\n // If no subsequent Middleware exists,\n // the default `next()` callback is returned.\n if (!subsequentMiddleware) return context.next\n\n return (..._parameters: any[]) => {\n // Run the default Vue Router `next()` callback first.\n // context.next(...parameters)\n // Then run the subsequent Middleware with a new\n // `nextMiddleware()` callback.\n nextFactory(context, middleware, index + 1)\n subsequentMiddleware({ ...context })\n }\n}\n\nexport default nextFactory\n","// Creates a `nextMiddleware()` function which not only\n// runs the default `next()` callback but also triggers\n// the subsequent Middleware function.\nimport type { route } from '@/controller/controller'\nimport nextFactory from '@/middleware/next-factory'\nimport type { Router } from 'vue-router'\n\nconst nextMiddleware = (from: route, to: route, router: Router) => {\n if (to.meta?.middleware) {\n const middleware = Array.isArray(to.meta.middleware)\n ? to.meta.middleware\n : [to.meta.middleware]\n\n const context = {\n from,\n to,\n // next,\n router\n }\n const nextMiddleware = nextFactory(context, middleware, 1)\n\n return middleware[ 0 ]({ ...context, next: nextMiddleware })\n }\n}\n\nexport default nextMiddleware\n","import nextMiddleware from '@/middleware/next-middleware'\nimport type { Router } from 'vue-router'\nimport type { App } from 'vue'\n\nexport default {\n install: (app: App, router: Router) => {\n router.beforeEach((to, from) => {\n nextMiddleware(from, to, router)\n })\n }\n}\n","import type { RouteLocationNormalizedLoaded } from 'vue-router'\n\nexport default function castId() {\n return (route: RouteLocationNormalizedLoaded) => {\n if (route.params?.id) {\n route.params.id = parseInt(route.params.id as string)\n }\n \n return route.params\n }\n}","import type { RouteLocationNormalizedLoaded } from 'vue-router'\n\nconst castRoute = (config: { params: any, query: any }) => {\n return (route: RouteLocationNormalizedLoaded) => {\n for (const key in config.params) {\n route.params[ key ] = parseInt(route.params[ key ])\n }\n\n for (const key in config.query) {\n route.query[ key ] = parseInt(route.query[ key ])\n }\n\n return { ...route.params, query: route.query }\n }\n}\n\nexport default castRoute\n"],"names":["request","reactive","model","params","useController","useModel","requestsInjection","navigation","_a","_b","serializeParams","method","key","nextFactory","context","middleware","index","subsequentMiddleware","_parameters","nextMiddleware","from","to","router","MiddlewarePlugin","app","castId","route","castRoute","config"],"mappings":"wQAsBW,IAAAA,EAAeC,EAAS,SAAA,EAAE,EAC1BC,EAAaD,EAAS,SAAA,EAAE,EACxBE,EAAcF,EAAS,SAAA,EAAE,EACvB,MAAAG,EAAgB,KACpB,CAAE,QAAAJ,EAAS,MAAAE,EAAO,OAAAC,CAAO,GAErBE,EAAW,IACfH,EAMII,EAAoB,MAAOC,GAA2B,SAG7D,GAFJP,EAAUO,EAAW,GAAG,MAEpB,GAACC,EAAAD,EAAW,GAAG,OAAd,MAAAC,EAAoB,YAAkB,MAAA,IAAI,MAAM,wBAAwB,EACzE,GAAA,GAACC,EAAAF,EAAW,GAAG,OAAd,MAAAE,EAAoB,WAAW,QAAQ,MAAM,IAAI,MAAM,+BAA+B,EACtFF,EAAW,GAAG,OACVJ,EAAAO,EAAgBH,EAAW,GAAG,MAAM,EAG7CL,EAAQ,IAAKK,EAAW,GAAG,KAAK,WAAY,CAAE,EAC9C,MAAMI,EAASJ,EAAW,GAAG,KAAK,WAAY,CAAE,EAChD,MAAML,EAAOS,CAAO,EAAER,EAAO,EAAE,EACvB,QAAA,IAAID,EAAM,MAAM,QAAQ,CAGlC,EAEA,SAASQ,EAAgBP,EAAa,CACpC,cAAO,KAAKA,CAAM,EAAE,QAAeS,GAAA,CAC7BT,EAAQS,CAAI,EACdT,EAAQS,CAAI,EAAI,OAAOT,EAAQS,CAAI,CAAC,EAE7BT,EAAQS,CAAI,IAAM,KACzBT,EAAQS,CAAI,EAAI,KAClB,CACD,EAEMT,CACT,CCxDA,MAAMU,EAAc,CAClBC,EAAoEC,EACpEC,IACG,CACG,MAAAC,EAAuBF,EAAYC,CAAM,EAG3C,OAACC,EAEE,IAAIC,IAAuB,CAKpBL,EAAAC,EAASC,EAAYC,EAAQ,CAAC,EACrBC,EAAA,CAAE,GAAGH,EAAS,CACrC,EATkCA,EAAQ,IAU5C,ECjBMK,EAAiB,CAACC,EAAaC,EAAWC,IAAmB,OAC7D,IAAAd,EAAAa,EAAG,OAAH,MAAAb,EAAS,WAAY,CACvB,MAAMO,EAAa,MAAM,QAAQM,EAAG,KAAK,UAAU,EAC/CA,EAAG,KAAK,WACR,CAACA,EAAG,KAAK,UAAU,EAEjBP,EAAU,CACd,KAAAM,EACA,GAAAC,EAEA,OAAAC,CACF,EACMH,EAAiBN,EAAYC,EAASC,EAAY,CAAC,EAElD,OAAAA,EAAY,CAAE,EAAE,CAAE,GAAGD,EAAS,KAAMK,EAAgB,CAAA,CAE/D,ECnBeI,EAAA,CACb,QAAS,CAACC,EAAUF,IAAmB,CAC9BA,EAAA,WAAW,CAACD,EAAID,IAAS,CACfD,EAAAC,EAAMC,EAAIC,CAAM,CAAA,CAChC,CAAA,CAEL,ECRA,SAAwBG,GAAS,CAC/B,OAAQC,GAAyC,OAC3C,OAAAlB,EAAAkB,EAAM,SAAN,MAAAlB,EAAc,KAChBkB,EAAM,OAAO,GAAK,SAASA,EAAM,OAAO,EAAY,GAG/CA,EAAM,MACf,CACF,CCRM,MAAAC,EAAaC,GACTF,GAAyC,CACpC,UAAAd,KAAOgB,EAAO,OACvBF,EAAM,OAAQd,CAAI,EAAI,SAASc,EAAM,OAAQd,CAAI,CAAC,EAGzC,UAAAA,KAAOgB,EAAO,MACvBF,EAAM,MAAOd,CAAI,EAAI,SAASc,EAAM,MAAOd,CAAI,CAAC,EAGlD,MAAO,CAAE,GAAGc,EAAM,OAAQ,MAAOA,EAAM,KAAM,CAC/C"}