UNPKG

@oazapfts/runtime

Version:

Runtime for OpenApi TypeScript client generator

1 lines 3.87 kB
{"version":3,"file":"util.cjs","sources":["../src/util.ts"],"sourcesContent":["type Encoders = Array<(s: string | number | boolean) => string>;\n\n// Encode param names and values as URIComponent\nexport const encodeReserved = [encodeURIComponent, encodeURIComponent];\nexport const allowReserved = [encodeURIComponent, encodeURI];\nexport const numericBooleanReserved = [\n encodeURIComponent,\n encodeNumericBoolean,\n];\n\n/**\n * Creates a tag-function to encode template strings with the given encoders.\n */\nexport function encode(encoders: Encoders, delimiter = \",\") {\n const q = (v: any, i: number) => {\n const encoder = encoders[i % encoders.length];\n if (typeof v === \"undefined\") {\n return \"\";\n }\n if (typeof v === \"object\") {\n if (Array.isArray(v)) {\n return v.map(encoder).join(delimiter);\n }\n const flat = Object.entries(v).reduce(\n (flat, entry) => [...flat, ...entry],\n [] as any,\n );\n return flat.map(encoder).join(delimiter);\n }\n\n return encoder(castNonPrimitive(v));\n };\n\n return (strings: TemplateStringsArray, ...values: any[]) => {\n return strings.reduce((prev, s, i) => {\n return `${prev}${s}${q(values[i], i)}`;\n }, \"\");\n };\n}\n\n/**\n * Separate array values by the given delimiter.\n */\nexport function delimited(delimiter = \",\") {\n return (params: Record<string, any>, encoders = encodeReserved) =>\n Object.entries(params)\n .filter(([, value]) => value !== undefined)\n .map(([name, value]) => encode(encoders, delimiter)`${name}=${value}`)\n .join(\"&\");\n}\n\nexport function joinUrl(...parts: Array<string | undefined>) {\n return parts\n .filter(Boolean)\n .map((s, i) => (i === 0 ? s : s!.replace(/^\\/+/, \"\")))\n .map((s, i, a) => (i === a.length - 1 ? s : s!.replace(/\\/+$/, \"\")))\n .join(\"/\");\n}\n\nfunction castNonPrimitive(v: unknown) {\n if (\n typeof v === \"string\" ||\n typeof v === \"number\" ||\n typeof v === \"boolean\"\n ) {\n return v;\n }\n return String(v);\n}\n\nfunction encodeNumericBoolean(uriComponent: boolean | string | number) {\n if (uriComponent === true) return \"1\";\n if (uriComponent === false) return \"0\";\n return encodeURIComponent(uriComponent);\n}\n"],"names":["encodeReserved","allowReserved","numericBooleanReserved","encodeNumericBoolean","encode","encoders","delimiter","q","v","i","encoder","flat","entry","castNonPrimitive","strings","values","prev","s","delimited","params","value","name","joinUrl","parts","a","uriComponent"],"mappings":"gFAGO,MAAMA,EAAiB,CAAC,mBAAoB,kBAAkB,EACxDC,EAAgB,CAAC,mBAAoB,SAAS,EAC9CC,EAAyB,CACpC,mBACAC,CACF,EAKO,SAASC,EAAOC,EAAoBC,EAAY,IAAK,CAC1D,MAAMC,EAAI,CAACC,EAAQC,IAAc,CAC/B,MAAMC,EAAUL,EAASI,EAAIJ,EAAS,MAAM,EAC5C,OAAI,OAAOG,GAAM,YACR,GAEL,OAAOA,GAAM,SACX,MAAM,QAAQA,CAAC,EACVA,EAAE,IAAIE,CAAO,EAAE,KAAKJ,CAAS,EAEzB,OAAO,QAAQE,CAAC,EAAE,OAC7B,CAACG,EAAMC,IAAU,CAAC,GAAGD,EAAM,GAAGC,CAAK,EACnC,CAAA,CAAC,EAES,IAAIF,CAAO,EAAE,KAAKJ,CAAS,EAGlCI,EAAQG,EAAiBL,CAAC,CAAC,CACpC,EAEA,MAAO,CAACM,KAAkCC,IACjCD,EAAQ,OAAO,CAACE,EAAMC,EAAG,IACvB,GAAGD,CAAI,GAAGC,CAAC,GAAGV,EAAEQ,EAAO,CAAC,EAAG,CAAC,CAAC,GACnC,EAAE,CAET,CAKO,SAASG,EAAUZ,EAAY,IAAK,CACzC,MAAO,CAACa,EAA6Bd,EAAWL,IAC9C,OAAO,QAAQmB,CAAM,EAClB,OAAO,CAAC,CAAA,CAAGC,CAAK,IAAMA,IAAU,MAAS,EACzC,IAAI,CAAC,CAACC,EAAMD,CAAK,IAAMhB,EAAOC,EAAUC,CAAS,IAAIe,CAAI,IAAID,CAAK,EAAE,EACpE,KAAK,GAAG,CACf,CAEO,SAASE,KAAWC,EAAkC,CAC3D,OAAOA,EACJ,OAAO,OAAO,EACd,IAAI,CAACN,EAAGR,IAAOA,IAAM,EAAIQ,EAAIA,EAAG,QAAQ,OAAQ,EAAE,CAAE,EACpD,IAAI,CAACA,EAAGR,EAAGe,IAAOf,IAAMe,EAAE,OAAS,EAAIP,EAAIA,EAAG,QAAQ,OAAQ,EAAE,CAAE,EAClE,KAAK,GAAG,CACb,CAEA,SAASJ,EAAiBL,EAAY,CACpC,OACE,OAAOA,GAAM,UACb,OAAOA,GAAM,UACb,OAAOA,GAAM,UAENA,EAEF,OAAOA,CAAC,CACjB,CAEA,SAASL,EAAqBsB,EAAyC,CACrE,OAAIA,IAAiB,GAAa,IAC9BA,IAAiB,GAAc,IAC5B,mBAAmBA,CAAY,CACxC"}