@oazapfts/runtime
Version:
Runtime for OpenApi TypeScript client generator
1 lines • 4.08 kB
Source Map (JSON)
{"version":3,"file":"query.cjs","sources":["../src/query.ts"],"sourcesContent":["import { encode, delimited, encodeReserved } from \"./util\";\n\n/**\n * Join params using an ampersand and prepends a questionmark if not empty.\n */\nexport function query(...params: string[]) {\n const s = params.filter(Boolean).join(\"&\");\n return s && `?${s}`;\n}\n\n/**\n * Serializes nested objects according to the `deepObject` style specified in\n * https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.0.md#style-values\n */\nexport function deep(\n params: Record<string, any>,\n [k, v] = encodeReserved,\n): string {\n const qk = encode([(s) => s, k]);\n const qv = encode([(s) => s, v]);\n // don't add index to arrays\n // https://github.com/expressjs/body-parser/issues/289\n const visit = (obj: any, prefix = \"\"): string =>\n Object.entries(obj)\n .filter(([, v]) => v !== undefined)\n .map(([prop, v]) => {\n const index = Array.isArray(obj) ? \"\" : prop;\n const key = prefix ? qk`${prefix}[${index}]` : prop;\n if (typeof v === \"object\") {\n return visit(v, key);\n }\n return qv`${key}=${v}`;\n })\n .join(\"&\");\n\n return visit(params);\n}\n\n/**\n * Property values of type array or object generate separate parameters\n * for each value of the array, or key-value-pair of the map.\n * For other types of properties this property has no effect.\n * See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.0.md#encoding-object\n */\nexport function explode(\n params: Record<string, any>,\n encoders = encodeReserved,\n): string {\n const q = encode(encoders);\n return Object.entries(params)\n .filter(([, value]) => value !== undefined)\n .map(([name, value]) => {\n if (Array.isArray(value)) {\n return value.map((v) => q`${name}=${v}`).join(\"&\");\n }\n if (typeof value === \"object\") {\n return explode(value, encoders);\n }\n return q`${name}=${value}`;\n })\n .join(\"&\");\n}\n\nexport function json(\n params: Record<string, any>,\n encoders = encodeReserved,\n): string {\n const q = encode(encoders);\n return Object.entries(params)\n .filter(([, value]) => value !== undefined)\n .map(([name, value]) => {\n const v = JSON.stringify(value);\n return q`${name}=${v}`;\n })\n .join(\"&\");\n}\n\nexport const form = delimited();\nexport const pipe = delimited(\"|\");\nexport const space = delimited(\"%20\");\n"],"names":["query","params","s","deep","k","v","encodeReserved","qk","encode","qv","visit","obj","prefix","prop","index","key","explode","encoders","q","value","name","json","form","delimited","pipe","space"],"mappings":"8GAKO,SAASA,KAASC,EAAkB,CACzC,MAAMC,EAAID,EAAO,OAAO,OAAO,EAAE,KAAK,GAAG,EAClC,OAAAC,GAAK,IAAIA,CAAC,EACnB,CAMO,SAASC,EACdF,EACA,CAACG,EAAGC,CAAC,EAAIC,EAAAA,eACD,CACR,MAAMC,EAAKC,EAAAA,OAAO,CAAE,GAAM,EAAGJ,CAAC,CAAC,EACzBK,EAAKD,EAAAA,OAAO,CAAE,GAAM,EAAGH,CAAC,CAAC,EAGzBK,EAAQ,CAACC,EAAUC,EAAS,KAChC,OAAO,QAAQD,CAAG,EACf,OAAO,CAAC,CAAA,CAAGN,CAAC,IAAMA,IAAM,MAAS,EACjC,IAAI,CAAC,CAACQ,EAAMR,CAAC,IAAM,CAClB,MAAMS,EAAQ,MAAM,QAAQH,CAAG,EAAI,GAAKE,EAClCE,EAAMH,EAASL,IAAKK,CAAM,IAAIE,CAAK,IAAMD,EAC3C,OAAA,OAAOR,GAAM,SACRK,EAAML,EAAGU,CAAG,EAEdN,IAAKM,CAAG,IAAIV,CAAC,EAAA,CACrB,EACA,KAAK,GAAG,EAEb,OAAOK,EAAMT,CAAM,CACrB,CAQgB,SAAAe,EACdf,EACAgB,EAAWX,iBACH,CACF,MAAAY,EAAIV,SAAOS,CAAQ,EACzB,OAAO,OAAO,QAAQhB,CAAM,EACzB,OAAO,CAAC,CAAA,CAAGkB,CAAK,IAAMA,IAAU,MAAS,EACzC,IAAI,CAAC,CAACC,EAAMD,CAAK,IACZ,MAAM,QAAQA,CAAK,EACdA,EAAM,IAAKd,GAAMa,IAAIE,CAAI,IAAIf,CAAC,EAAE,EAAE,KAAK,GAAG,EAE/C,OAAOc,GAAU,SACZH,EAAQG,EAAOF,CAAQ,EAEzBC,IAAIE,CAAI,IAAID,CAAK,EACzB,EACA,KAAK,GAAG,CACb,CAEgB,SAAAE,EACdpB,EACAgB,EAAWX,iBACH,CACF,MAAAY,EAAIV,SAAOS,CAAQ,EACzB,OAAO,OAAO,QAAQhB,CAAM,EACzB,OAAO,CAAC,CAAA,CAAGkB,CAAK,IAAMA,IAAU,MAAS,EACzC,IAAI,CAAC,CAACC,EAAMD,CAAK,IAAM,CAChB,MAAAd,EAAI,KAAK,UAAUc,CAAK,EACvB,OAAAD,IAAIE,CAAI,IAAIf,CAAC,EAAA,CACrB,EACA,KAAK,GAAG,CACb,CAEO,MAAMiB,EAAOC,EAAAA,UAAU,EACjBC,EAAOD,YAAU,GAAG,EACpBE,EAAQF,YAAU,KAAK"}