{"version":3,"file":"index.mjs","names":[],"sources":["../src/utils.ts","../src/request.ts","../src/handler.ts","../src/module.ts","../src/index.ts"],"sourcesContent":["import type { IAppEvent } from 'routup';\nimport { parse } from 'qs';\n\nimport type { ParseOptions } from './type';\n\nexport function parseRequestQuery(event: IAppEvent, options?: ParseOptions) {\n    const { url } = event.request;\n    const qIndex = url.indexOf('?');\n    if (qIndex < 0) {\n        return parse('', options);\n    }\n\n    const hashIndex = url.indexOf('#', qIndex);\n    const search = url.substring(qIndex + 1, hashIndex >= 0 ? hashIndex : undefined);\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 { IAppEvent } from 'routup';\nimport { isObject } from './utils';\n\nconst QuerySymbol = Symbol.for('@routup/query:ReqQuery');\n\nexport function useRequestQuery(event: IAppEvent) : Record<string, any>;\nexport function useRequestQuery(event: IAppEvent, key: string) : any;\nexport function useRequestQuery(event: IAppEvent, key?: string) {\n    if (QuerySymbol in event.store) {\n        if (typeof key === 'string') {\n            return (event.store[QuerySymbol] as Record<string, any>)[key];\n        }\n\n        return event.store[QuerySymbol];\n    }\n\n    return typeof key === 'string' ?\n        undefined :\n        {};\n}\n\nexport function hasRequestQuery(event: IAppEvent) : boolean {\n    return QuerySymbol in event.store &&\n        isObject(event.store[QuerySymbol]);\n}\n\nexport function setRequestQuery(event: IAppEvent, key: string, value: unknown) : void;\nexport function setRequestQuery(event: IAppEvent, record: Record<string, any>) : void;\nexport function setRequestQuery(event: IAppEvent, key: Record<string, any> | string, value?: unknown) : void {\n    if (isObject(key)) {\n        event.store[QuerySymbol] = key;\n        return;\n    }\n\n    const existing = QuerySymbol in event.store ?\n        event.store[QuerySymbol] as Record<string, any> :\n        {};\n    event.store[QuerySymbol] = { ...existing, [key]: value };\n}\n","import { defineCoreHandler } from 'routup';\nimport { hasRequestQuery, setRequestQuery } from './request';\nimport type { ParseOptions } from './type';\nimport { parseRequestQuery } from './utils';\n\nexport function createHandler(options?: ParseOptions) {\n    return defineCoreHandler((event) => {\n        if (hasRequestQuery(event)) {\n            return event.next();\n        }\n\n        setRequestQuery(event, parseRequestQuery(event, options));\n\n        return event.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","import {\n    query,\n} from './module';\n\nexport * from './module';\nexport * from './request';\nexport * from './type';\n\nexport default query;\n"],"mappings":";;;AAKA,SAAgB,kBAAkB,OAAkB,SAAwB;CACxE,MAAM,EAAE,QAAQ,MAAM;CACtB,MAAM,SAAS,IAAI,QAAQ,GAAG;CAC9B,IAAI,SAAS,GACT,OAAO,MAAM,IAAI,OAAO;CAG5B,MAAM,YAAY,IAAI,QAAQ,KAAK,MAAM;CAGzC,OAAO,MAFQ,IAAI,UAAU,SAAS,GAAG,aAAa,IAAI,YAAY,KAAA,CAEpD,GAAG,OAAO;AAChC;AAEA,SAAgB,SAAS,MAA6C;CAClE,OACI,CAAC,CAAC,QACF,OAAO,SAAS,YAChB,CAAC,MAAM,QAAQ,IAAI;AAE3B;;;ACrBA,MAAM,cAAc,OAAO,IAAI,wBAAwB;AAIvD,SAAgB,gBAAgB,OAAkB,KAAc;CAC5D,IAAI,eAAe,MAAM,OAAO;EAC5B,IAAI,OAAO,QAAQ,UACf,OAAQ,MAAM,MAAM,aAAqC;EAG7D,OAAO,MAAM,MAAM;CACvB;CAEA,OAAO,OAAO,QAAQ,WAClB,KAAA,IACA,CAAC;AACT;AAEA,SAAgB,gBAAgB,OAA4B;CACxD,OAAO,eAAe,MAAM,SACxB,SAAS,MAAM,MAAM,YAAY;AACzC;AAIA,SAAgB,gBAAgB,OAAkB,KAAmC,OAAwB;CACzG,IAAI,SAAS,GAAG,GAAG;EACf,MAAM,MAAM,eAAe;EAC3B;CACJ;CAEA,MAAM,WAAW,eAAe,MAAM,QAClC,MAAM,MAAM,eACZ,CAAC;CACL,MAAM,MAAM,eAAe;EAAE,GAAG;GAAW,MAAM;CAAM;AAC3D;;;ACjCA,SAAgB,cAAc,SAAwB;CAClD,OAAO,mBAAmB,UAAU;EAChC,IAAI,gBAAgB,KAAK,GACrB,OAAO,MAAM,KAAK;EAGtB,gBAAgB,OAAO,kBAAkB,OAAO,OAAO,CAAC;EAExD,OAAO,MAAM,KAAK;CACtB,CAAC;AACL;;;ACXA,SAAgB,MAAM,UAAmB,CAAC,GAAW;CACjD,OAAO;EACH,MAAM;EACN,UAAU,WAAW;GACjB,OAAO,IAAI,cAAc,QAAQ,KAAK,CAAC;EAC3C;CACJ;AACJ;;;ACHA,IAAA,cAAe"}