{"version":3,"file":"index.cjs","sources":["../src/utils.ts","../src/request.ts","../src/handler.ts","../src/module.ts"],"sourcesContent":["import type {\n    Request,\n} from 'routup';\nimport { parse } from 'qs';\n\nimport type { ParseOptions } from './type';\n\nexport function parseRequestQuery(req: Request, options?: ParseOptions) {\n    /* istanbul ignore if  */\n    if (typeof req.url === 'undefined') {\n        return {};\n    }\n\n    const url = new URL(req.url, 'http://localhost/');\n\n    let { search } = url;\n    if (search.substring(0, 1) === '?') {\n        search = search.substring(1);\n    }\n\n    return parse(search, options);\n}\n\nexport function isObject(item: unknown) : item is Record<string, any> {\n    return (\n        !!item &&\n        typeof item === 'object' &&\n        !Array.isArray(item)\n    );\n}\n","import type { Request } from 'routup';\nimport { isObject } from './utils';\n\nconst QuerySymbol = Symbol.for('ReqQuery');\n\nexport function useRequestQuery(req: Request) : Record<string, any>;\nexport function useRequestQuery(req: Request, key: string) : any;\nexport function useRequestQuery(req: Request, key?: string) {\n    /* istanbul ignore if  */\n    if ('query' in req) {\n        if (typeof key === 'string') {\n            return (req as any).query[key];\n        }\n\n        return (req as any).query;\n    }\n\n    if (QuerySymbol in req) {\n        if (typeof key === 'string') {\n            return (req as any)[QuerySymbol][key];\n        }\n\n        return (req as any)[QuerySymbol];\n    }\n\n    return typeof key === 'string' ?\n        undefined :\n        {};\n}\n\nexport function hasRequestQuery(req: Request) : boolean {\n    return (\n        (QuerySymbol in req) &&\n            isObject((req as any)[QuerySymbol])\n    ) ||\n        (\n            ('query' in req) &&\n            isObject(req.query)\n        );\n}\n\nexport function setRequestQuery(req: Request, key: string, value: unknown) : void;\nexport function setRequestQuery(req: Request, record: Record<string, any>) : void;\nexport function setRequestQuery(req: Request, key: Record<string, any> | string, value?: unknown) : void {\n    if (isObject(key)) {\n        (req as any)[QuerySymbol] = key;\n        return;\n    }\n\n    (req as any)[QuerySymbol] = {\n        [key]: value,\n    };\n}\n","import { coreHandler } from 'routup';\nimport { hasRequestQuery, setRequestQuery } from './request';\nimport type { ParseOptions } from './type';\nimport { parseRequestQuery } from './utils';\n\nexport function createHandler(options?: ParseOptions) {\n    return coreHandler((req, res, next) => {\n        if (hasRequestQuery(req)) {\n            next();\n\n            return;\n        }\n\n        setRequestQuery(req, parseRequestQuery(req, options));\n        next();\n    });\n}\n","import type { Plugin } from 'routup';\nimport { createHandler } from './handler';\nimport type { Options } from './type';\n\nexport function query(options: Options = {}): Plugin {\n    return {\n        name: 'query',\n        install: (router) => {\n            router.use(createHandler(options.parse));\n        },\n    };\n}\n"],"names":["parseRequestQuery","req","options","url","URL","search","substring","parse","isObject","item","Array","isArray","QuerySymbol","Symbol","for","useRequestQuery","key","query","undefined","hasRequestQuery","setRequestQuery","value","createHandler","coreHandler","res","next","name","install","router","use"],"mappings":";;;;;;;AAOO,SAASA,iBAAAA,CAAkBC,GAAY,EAAEC,OAAsB,EAAA;AAClE,8BACA,IAAI,OAAOD,GAAAA,CAAIE,GAAG,KAAK,WAAA,EAAa;AAChC,QAAA,OAAO,EAAC;AACZ;AAEA,IAAA,MAAMA,GAAAA,GAAM,IAAIC,GAAAA,CAAIH,GAAAA,CAAIE,GAAG,EAAE,mBAAA,CAAA;IAE7B,IAAI,EAAEE,MAAM,EAAE,GAAGF,GAAAA;AACjB,IAAA,IAAIE,MAAAA,CAAOC,SAAS,CAAC,CAAA,EAAG,OAAO,GAAA,EAAK;QAChCD,MAAAA,GAASA,MAAAA,CAAOC,SAAS,CAAC,CAAA,CAAA;AAC9B;AAEA,IAAA,OAAOC,SAAMF,MAAAA,EAAQH,OAAAA,CAAAA;AACzB;AAEO,SAASM,SAASC,IAAa,EAAA;IAClC,OACI,CAAC,CAACA,IAAAA,IACF,OAAOA,SAAS,QAAA,IAChB,CAACC,KAAAA,CAAMC,OAAO,CAACF,IAAAA,CAAAA;AAEvB;;AC1BA,MAAMG,WAAAA,GAAcC,MAAAA,CAAOC,GAAG,CAAC,UAAA,CAAA;AAIxB,SAASC,eAAAA,CAAgBd,GAAY,EAAEe,GAAY,EAAA;8BAEtD,IAAI,OAAA,IAAWf,GAAAA,EAAK;QAChB,IAAI,OAAOe,QAAQ,QAAA,EAAU;AACzB,YAAA,OAAO,GAACf,CAAYgB,KAAK,CAACD,GAAAA,CAAI;AAClC;QAEA,OAAQf,IAAYgB,KAAK;AAC7B;AAEA,IAAA,IAAIL,eAAeX,GAAAA,EAAK;QACpB,IAAI,OAAOe,QAAQ,QAAA,EAAU;AACzB,YAAA,OAAO,GAAY,CAACJ,WAAAA,CAAY,CAACI,GAAAA,CAAI;AACzC;QAEA,OAAQf,GAAW,CAACW,WAAAA,CAAY;AACpC;AAEA,IAAA,OAAO,OAAOI,GAAAA,KAAQ,QAAA,GAClBE,SAAAA,GACA,EAAC;AACT;AAEO,SAASC,gBAAgBlB,GAAY,EAAA;AACxC,IAAA,OAAO,WACFW,IAAeX,GAAAA,IACZO,QAAAA,CAAS,GAAY,CAACI,WAAAA,CAAY,CAAA,IAGlC,OAAC,IAAWX,GAAAA,IACZO,QAAAA,CAASP,IAAIgB,KAAK,CAAA;AAE9B;AAIO,SAASG,eAAAA,CAAgBnB,GAAY,EAAEe,GAAiC,EAAEK,KAAe,EAAA;AAC5F,IAAA,IAAIb,SAASQ,GAAAA,CAAAA,EAAM;QACdf,GAAW,CAACW,YAAY,GAAGI,GAAAA;AAC5B,QAAA;AACJ;IAECf,GAAW,CAACW,YAAY,GAAG;AACxB,QAAA,CAACI,MAAMK;AACX,KAAA;AACJ;;AC/CO,SAASC,cAAcpB,OAAsB,EAAA;IAChD,OAAOqB,kBAAAA,CAAY,CAACtB,GAAAA,EAAKuB,GAAAA,EAAKC,IAAAA,GAAAA;AAC1B,QAAA,IAAIN,gBAAgBlB,GAAAA,CAAAA,EAAM;AACtBwB,YAAAA,IAAAA,EAAAA;AAEA,YAAA;AACJ;QAEAL,eAAAA,CAAgBnB,GAAAA,EAAKD,kBAAkBC,GAAAA,EAAKC,OAAAA,CAAAA,CAAAA;AAC5CuB,QAAAA,IAAAA,EAAAA;AACJ,KAAA,CAAA;AACJ;;ACZO,SAASR,KAAAA,CAAMf,OAAAA,GAAmB,EAAE,EAAA;IACvC,OAAO;QACHwB,IAAAA,EAAM,OAAA;AACNC,QAAAA,OAAAA,EAAS,CAACC,MAAAA,GAAAA;AACNA,YAAAA,MAAAA,CAAOC,GAAG,CAACP,aAAAA,CAAcpB,OAAAA,CAAQK,KAAK,CAAA,CAAA;AAC1C;AACJ,KAAA;AACJ;;;;;;;;;;;;;;;;;;;;;;"}