{"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"}