@oazapfts/runtime 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oazapfts/runtime",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Runtime for OpenApi TypeScript client generator",
5
5
  "type": "module",
6
6
  "main": "index.cjs",
package/query.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./util.cjs");function $(...o){const n=o.filter(Boolean).join("&");return n&&`?${n}`}function l(o,[n,i]=t.encodeReserved){const e=t.encode([s=>s,n]),r=t.encode([s=>s,i]),c=(s,f="")=>Object.entries(s).filter(([,d])=>d!==void 0).map(([d,u])=>{const y=Array.isArray(s)?"":d,p=f?e`${f}[${y}]`:d;return typeof u=="object"?c(u,p):r`${p}=${u}`}).join("&");return c(o)}function j(o,n=t.encodeReserved){const i=t.encode(n);return Object.entries(o).filter(([,e])=>e!==void 0).map(([e,r])=>Array.isArray(r)?r.map(c=>i`${e}=${c}`).join("&"):typeof r=="object"?j(r,n):i`${e}=${r}`).join("&")}function m(o,n=t.encodeReserved){const i=t.encode(n);return Object.entries(o).filter(([,e])=>e!==void 0).map(([e,r])=>{const c=JSON.stringify(r);return i`${e}=${c}`}).join("&")}const a=t.delimited(),q=t.delimited("|"),b=t.delimited("%20");exports.deep=l;exports.explode=j;exports.form=a;exports.json=m;exports.pipe=q;exports.query=$;exports.space=b;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./util.cjs");function y(...o){const t=o.filter(Boolean).join("&");return t&&`?${t}`}function m(o,[t,i]=e.encodeReserved){const n=e.encode([s=>String(s),t]),r=e.encode([s=>String(s),i]),c=(s,f="")=>Object.entries(s).filter(([,d])=>d!==void 0).map(([d,u])=>{const l=Array.isArray(s)?"":d,p=f?n`${f}[${l}]`:d;return typeof u=="object"?c(u,p):r`${p}=${u}`}).join("&");return c(o)}function j(o,t=e.encodeReserved){const i=e.encode(t);return Object.entries(o).filter(([,n])=>n!==void 0).map(([n,r])=>Array.isArray(r)?r.map(c=>i`${n}=${c}`).join("&"):typeof r=="object"?j(r,t):i`${n}=${r}`).join("&")}function $(o,t=e.encodeReserved){const i=e.encode(t);return Object.entries(o).filter(([,n])=>n!==void 0).map(([n,r])=>{const c=JSON.stringify(r);return i`${n}=${c}`}).join("&")}const a=e.delimited(),q=e.delimited("|"),b=e.delimited("%20");exports.numericBooleanReserved=e.numericBooleanReserved;exports.deep=m;exports.explode=j;exports.form=a;exports.json=$;exports.pipe=q;exports.query=y;exports.space=b;
2
2
  //# sourceMappingURL=query.cjs.map
package/query.cjs.map CHANGED
@@ -1 +1 @@
1
- {"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,EACzC,OAAOC,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,EAAGN,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,EAC/C,OAAI,OAAOR,GAAM,SACRK,EAAML,EAAGU,CAAG,EAEdN,IAAKM,CAAG,IAAIV,CAAC,EACtB,CAAC,EACA,KAAK,GAAG,EAEb,OAAOK,EAAMT,CAAM,CACrB,CAQO,SAASe,EACdf,EACAgB,EAAWX,iBACH,CACR,MAAMY,EAAIV,EAAAA,OAAOS,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,CAEO,SAASE,EACdpB,EACAgB,EAAWX,iBACH,CACR,MAAMY,EAAIV,EAAAA,OAAOS,CAAQ,EACzB,OAAO,OAAO,QAAQhB,CAAM,EACzB,OAAO,CAAC,CAAA,CAAGkB,CAAK,IAAMA,IAAU,MAAS,EACzC,IAAI,CAAC,CAACC,EAAMD,CAAK,IAAM,CACtB,MAAMd,EAAI,KAAK,UAAUc,CAAK,EAC9B,OAAOD,IAAIE,CAAI,IAAIf,CAAC,EACtB,CAAC,EACA,KAAK,GAAG,CACb,CAEO,MAAMiB,EAAOC,EAAAA,UAAA,EACPC,EAAOD,EAAAA,UAAU,GAAG,EACpBE,EAAQF,EAAAA,UAAU,KAAK"}
1
+ {"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) => String(s), k]);\n const qv = encode([(s) => String(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\nexport { numericBooleanReserved } from \"./util\";\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,EACzC,OAAOC,GAAK,IAAIA,CAAC,EACnB,CAMO,SAASC,EACdF,EACA,CAACG,EAAGC,CAAC,EAAIC,EAAAA,eACD,CACR,MAAMC,EAAKC,EAAAA,OAAO,CAAE,GAAM,OAAO,CAAC,EAAGJ,CAAC,CAAC,EACjCK,EAAKD,EAAAA,OAAO,CAAE,GAAM,OAAO,CAAC,EAAGH,CAAC,CAAC,EAGjCK,EAAQ,CAACC,EAAUC,EAAS,KAChC,OAAO,QAAQD,CAAG,EACf,OAAO,CAAC,EAAGN,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,EAC/C,OAAI,OAAOR,GAAM,SACRK,EAAML,EAAGU,CAAG,EAEdN,IAAKM,CAAG,IAAIV,CAAC,EACtB,CAAC,EACA,KAAK,GAAG,EAEb,OAAOK,EAAMT,CAAM,CACrB,CAQO,SAASe,EACdf,EACAgB,EAAWX,iBACH,CACR,MAAMY,EAAIV,EAAAA,OAAOS,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,CAEO,SAASE,EACdpB,EACAgB,EAAWX,iBACH,CACR,MAAMY,EAAIV,EAAAA,OAAOS,CAAQ,EACzB,OAAO,OAAO,QAAQhB,CAAM,EACzB,OAAO,CAAC,CAAA,CAAGkB,CAAK,IAAMA,IAAU,MAAS,EACzC,IAAI,CAAC,CAACC,EAAMD,CAAK,IAAM,CACtB,MAAMd,EAAI,KAAK,UAAUc,CAAK,EAC9B,OAAOD,IAAIE,CAAI,IAAIf,CAAC,EACtB,CAAC,EACA,KAAK,GAAG,CACb,CAEO,MAAMiB,EAAOC,EAAAA,UAAA,EACPC,EAAOD,EAAAA,UAAU,GAAG,EACpBE,EAAQF,EAAAA,UAAU,KAAK"}
package/query.d.ts CHANGED
@@ -16,6 +16,8 @@ export declare const form: (params: Record<string, any>, encoders?: (typeof enco
16
16
 
17
17
  export declare function json(params: Record<string, any>, encoders?: (typeof encodeURIComponent)[]): string;
18
18
 
19
+ export declare const numericBooleanReserved: (typeof encodeURIComponent)[];
20
+
19
21
  export declare const pipe: (params: Record<string, any>, encoders?: (typeof encodeURIComponent)[]) => string;
20
22
 
21
23
  /**
package/query.js CHANGED
@@ -1,34 +1,36 @@
1
- import { encodeReserved as $, delimited as d, encode as f } from "./util.js";
1
+ import { encodeReserved as d, delimited as p, encode as f } from "./util.js";
2
+ import { numericBooleanReserved as k } from "./util.js";
2
3
  function q(...r) {
3
4
  const n = r.filter(Boolean).join("&");
4
5
  return n && `?${n}`;
5
6
  }
6
- function b(r, [n, o] = $) {
7
- const t = f([(c) => c, n]), e = f([(c) => c, o]), i = (c, j = "") => Object.entries(c).filter(([, s]) => s !== void 0).map(([s, u]) => {
8
- const y = Array.isArray(c) ? "" : s, p = j ? t`${j}[${y}]` : s;
9
- return typeof u == "object" ? i(u, p) : e`${p}=${u}`;
7
+ function b(r, [n, o] = d) {
8
+ const t = f([(c) => String(c), n]), e = f([(c) => String(c), o]), i = (c, $ = "") => Object.entries(c).filter(([, s]) => s !== void 0).map(([s, u]) => {
9
+ const m = Array.isArray(c) ? "" : s, j = $ ? t`${$}[${m}]` : s;
10
+ return typeof u == "object" ? i(u, j) : e`${j}=${u}`;
10
11
  }).join("&");
11
12
  return i(r);
12
13
  }
13
- function m(r, n = $) {
14
+ function y(r, n = d) {
14
15
  const o = f(n);
15
- return Object.entries(r).filter(([, t]) => t !== void 0).map(([t, e]) => Array.isArray(e) ? e.map((i) => o`${t}=${i}`).join("&") : typeof e == "object" ? m(e, n) : o`${t}=${e}`).join("&");
16
+ return Object.entries(r).filter(([, t]) => t !== void 0).map(([t, e]) => Array.isArray(e) ? e.map((i) => o`${t}=${i}`).join("&") : typeof e == "object" ? y(e, n) : o`${t}=${e}`).join("&");
16
17
  }
17
- function A(r, n = $) {
18
+ function l(r, n = d) {
18
19
  const o = f(n);
19
20
  return Object.entries(r).filter(([, t]) => t !== void 0).map(([t, e]) => {
20
21
  const i = JSON.stringify(e);
21
22
  return o`${t}=${i}`;
22
23
  }).join("&");
23
24
  }
24
- const O = d(), l = d("|"), k = d("%20");
25
+ const A = p(), O = p("|"), g = p("%20");
25
26
  export {
26
27
  b as deep,
27
- m as explode,
28
- O as form,
29
- A as json,
30
- l as pipe,
28
+ y as explode,
29
+ A as form,
30
+ l as json,
31
+ k as numericBooleanReserved,
32
+ O as pipe,
31
33
  q as query,
32
- k as space
34
+ g as space
33
35
  };
34
36
  //# sourceMappingURL=query.js.map
package/query.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","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":";AAKO,SAASA,KAASC,GAAkB;AACzC,QAAMC,IAAID,EAAO,OAAO,OAAO,EAAE,KAAK,GAAG;AACzC,SAAOC,KAAK,IAAIA,CAAC;AACnB;AAMO,SAASC,EACdF,GACA,CAACG,GAAGC,CAAC,IAAIC,GACD;AACR,QAAMC,IAAKC,EAAO,CAAC,CAACN,MAAMA,GAAGE,CAAC,CAAC,GACzBK,IAAKD,EAAO,CAAC,CAACN,MAAMA,GAAGG,CAAC,CAAC,GAGzBK,IAAQ,CAACC,GAAUC,IAAS,OAChC,OAAO,QAAQD,CAAG,EACf,OAAO,CAAC,GAAGN,CAAC,MAAMA,MAAM,MAAS,EACjC,IAAI,CAAC,CAACQ,GAAMR,CAAC,MAAM;AAClB,UAAMS,IAAQ,MAAM,QAAQH,CAAG,IAAI,KAAKE,GAClCE,IAAMH,IAASL,IAAKK,CAAM,IAAIE,CAAK,MAAMD;AAC/C,WAAI,OAAOR,KAAM,WACRK,EAAML,GAAGU,CAAG,IAEdN,IAAKM,CAAG,IAAIV,CAAC;AAAA,EACtB,CAAC,EACA,KAAK,GAAG;AAEb,SAAOK,EAAMT,CAAM;AACrB;AAQO,SAASe,EACdf,GACAgB,IAAWX,GACH;AACR,QAAMY,IAAIV,EAAOS,CAAQ;AACzB,SAAO,OAAO,QAAQhB,CAAM,EACzB,OAAO,CAAC,CAAA,EAAGkB,CAAK,MAAMA,MAAU,MAAS,EACzC,IAAI,CAAC,CAACC,GAAMD,CAAK,MACZ,MAAM,QAAQA,CAAK,IACdA,EAAM,IAAI,CAACd,MAAMa,IAAIE,CAAI,IAAIf,CAAC,EAAE,EAAE,KAAK,GAAG,IAE/C,OAAOc,KAAU,WACZH,EAAQG,GAAOF,CAAQ,IAEzBC,IAAIE,CAAI,IAAID,CAAK,EACzB,EACA,KAAK,GAAG;AACb;AAEO,SAASE,EACdpB,GACAgB,IAAWX,GACH;AACR,QAAMY,IAAIV,EAAOS,CAAQ;AACzB,SAAO,OAAO,QAAQhB,CAAM,EACzB,OAAO,CAAC,CAAA,EAAGkB,CAAK,MAAMA,MAAU,MAAS,EACzC,IAAI,CAAC,CAACC,GAAMD,CAAK,MAAM;AACtB,UAAMd,IAAI,KAAK,UAAUc,CAAK;AAC9B,WAAOD,IAAIE,CAAI,IAAIf,CAAC;AAAA,EACtB,CAAC,EACA,KAAK,GAAG;AACb;AAEO,MAAMiB,IAAOC,EAAA,GACPC,IAAOD,EAAU,GAAG,GACpBE,IAAQF,EAAU,KAAK;"}
1
+ {"version":3,"file":"query.js","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) => String(s), k]);\n const qv = encode([(s) => String(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\nexport { numericBooleanReserved } from \"./util\";\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":";;AAKO,SAASA,KAASC,GAAkB;AACzC,QAAMC,IAAID,EAAO,OAAO,OAAO,EAAE,KAAK,GAAG;AACzC,SAAOC,KAAK,IAAIA,CAAC;AACnB;AAMO,SAASC,EACdF,GACA,CAACG,GAAGC,CAAC,IAAIC,GACD;AACR,QAAMC,IAAKC,EAAO,CAAC,CAACN,MAAM,OAAOA,CAAC,GAAGE,CAAC,CAAC,GACjCK,IAAKD,EAAO,CAAC,CAACN,MAAM,OAAOA,CAAC,GAAGG,CAAC,CAAC,GAGjCK,IAAQ,CAACC,GAAUC,IAAS,OAChC,OAAO,QAAQD,CAAG,EACf,OAAO,CAAC,GAAGN,CAAC,MAAMA,MAAM,MAAS,EACjC,IAAI,CAAC,CAACQ,GAAMR,CAAC,MAAM;AAClB,UAAMS,IAAQ,MAAM,QAAQH,CAAG,IAAI,KAAKE,GAClCE,IAAMH,IAASL,IAAKK,CAAM,IAAIE,CAAK,MAAMD;AAC/C,WAAI,OAAOR,KAAM,WACRK,EAAML,GAAGU,CAAG,IAEdN,IAAKM,CAAG,IAAIV,CAAC;AAAA,EACtB,CAAC,EACA,KAAK,GAAG;AAEb,SAAOK,EAAMT,CAAM;AACrB;AAQO,SAASe,EACdf,GACAgB,IAAWX,GACH;AACR,QAAMY,IAAIV,EAAOS,CAAQ;AACzB,SAAO,OAAO,QAAQhB,CAAM,EACzB,OAAO,CAAC,CAAA,EAAGkB,CAAK,MAAMA,MAAU,MAAS,EACzC,IAAI,CAAC,CAACC,GAAMD,CAAK,MACZ,MAAM,QAAQA,CAAK,IACdA,EAAM,IAAI,CAACd,MAAMa,IAAIE,CAAI,IAAIf,CAAC,EAAE,EAAE,KAAK,GAAG,IAE/C,OAAOc,KAAU,WACZH,EAAQG,GAAOF,CAAQ,IAEzBC,IAAIE,CAAI,IAAID,CAAK,EACzB,EACA,KAAK,GAAG;AACb;AAEO,SAASE,EACdpB,GACAgB,IAAWX,GACH;AACR,QAAMY,IAAIV,EAAOS,CAAQ;AACzB,SAAO,OAAO,QAAQhB,CAAM,EACzB,OAAO,CAAC,CAAA,EAAGkB,CAAK,MAAMA,MAAU,MAAS,EACzC,IAAI,CAAC,CAACC,GAAMD,CAAK,MAAM;AACtB,UAAMd,IAAI,KAAK,UAAUc,CAAK;AAC9B,WAAOD,IAAIE,CAAI,IAAIf,CAAC;AAAA,EACtB,CAAC,EACA,KAAK,GAAG;AACb;AAEO,MAAMiB,IAAOC,EAAA,GACPC,IAAOD,EAAU,GAAG,GACpBE,IAAQF,EAAU,KAAK;"}
package/util.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=[encodeURIComponent,encodeURIComponent],f=[encodeURIComponent,encodeURI];function u(o,n=","){const t=(e,r)=>{const c=o[r%o.length];return typeof e=="undefined"?"":typeof e=="object"?Array.isArray(e)?e.map(c).join(n):Object.entries(e).reduce((i,a)=>[...i,...a],[]).map(c).join(n):c(String(e))};return(e,...r)=>e.reduce((c,d,i)=>`${c}${d}${t(r[i],i)}`,"")}function p(o=","){return(n,t=l)=>Object.entries(n).filter(([,e])=>e!==void 0).map(([e,r])=>u(t,o)`${e}=${r}`).join("&")}function s(...o){return o.filter(Boolean).map((n,t)=>t===0?n:n.replace(/^\/+/,"")).map((n,t,e)=>t===e.length-1?n:n.replace(/\/+$/,"")).join("/")}exports.allowReserved=f;exports.delimited=p;exports.encode=u;exports.encodeReserved=l;exports.joinUrl=s;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=[encodeURIComponent,encodeURIComponent],a=[encodeURIComponent,encodeURI],s=[encodeURIComponent,j];function l(e,o=","){const r=(n,t)=>{const c=e[t%e.length];return typeof n=="undefined"?"":typeof n=="object"?Array.isArray(n)?n.map(c).join(o):Object.entries(n).reduce((i,f)=>[...i,...f],[]).map(c).join(o):c(R(n))};return(n,...t)=>n.reduce((c,u,i)=>`${c}${u}${r(t[i],i)}`,"")}function p(e=","){return(o,r=d)=>Object.entries(o).filter(([,n])=>n!==void 0).map(([n,t])=>l(r,e)`${n}=${t}`).join("&")}function m(...e){return e.filter(Boolean).map((o,r)=>r===0?o:o.replace(/^\/+/,"")).map((o,r,n)=>r===n.length-1?o:o.replace(/\/+$/,"")).join("/")}function R(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"?e:String(e)}function j(e){return e===!0?"1":e===!1?"0":encodeURIComponent(e)}exports.allowReserved=a;exports.delimited=p;exports.encode=l;exports.encodeReserved=d;exports.joinUrl=m;exports.numericBooleanReserved=s;
2
2
  //# sourceMappingURL=util.cjs.map
package/util.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.cjs","sources":["../src/util.ts"],"sourcesContent":["type Encoders = Array<(s: string) => string>;\n\n// Encode param names and values as URIComponent\nexport const encodeReserved = [encodeURIComponent, encodeURIComponent];\nexport const allowReserved = [encodeURIComponent, encodeURI];\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(String(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"],"names":["encodeReserved","allowReserved","encode","encoders","delimiter","q","v","i","encoder","flat","entry","strings","values","prev","s","delimited","params","value","name","joinUrl","parts","a"],"mappings":"gFAGO,MAAMA,EAAiB,CAAC,mBAAoB,kBAAkB,EACxDC,EAAgB,CAAC,mBAAoB,SAAS,EAKpD,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,EAAQ,OAAOF,CAAC,CAAC,CAC1B,EAEA,MAAO,CAACK,KAAkCC,IACjCD,EAAQ,OAAO,CAACE,EAAMC,EAAG,IACvB,GAAGD,CAAI,GAAGC,CAAC,GAAGT,EAAEO,EAAO,CAAC,EAAG,CAAC,CAAC,GACnC,EAAE,CAET,CAKO,SAASG,EAAUX,EAAY,IAAK,CACzC,MAAO,CAACY,EAA6Bb,EAAWH,IAC9C,OAAO,QAAQgB,CAAM,EAClB,OAAO,CAAC,CAAA,CAAGC,CAAK,IAAMA,IAAU,MAAS,EACzC,IAAI,CAAC,CAACC,EAAMD,CAAK,IAAMf,EAAOC,EAAUC,CAAS,IAAIc,CAAI,IAAID,CAAK,EAAE,EACpE,KAAK,GAAG,CACf,CAEO,SAASE,KAAWC,EAAkC,CAC3D,OAAOA,EACJ,OAAO,OAAO,EACd,IAAI,CAACN,EAAGP,IAAOA,IAAM,EAAIO,EAAIA,EAAG,QAAQ,OAAQ,EAAE,CAAE,EACpD,IAAI,CAACA,EAAGP,EAAGc,IAAOd,IAAMc,EAAE,OAAS,EAAIP,EAAIA,EAAG,QAAQ,OAAQ,EAAE,CAAE,EAClE,KAAK,GAAG,CACb"}
1
+ {"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"}
package/util.d.ts CHANGED
@@ -12,8 +12,10 @@ export declare function encode(encoders: Encoders, delimiter?: string): (strings
12
12
 
13
13
  export declare const encodeReserved: (typeof encodeURIComponent)[];
14
14
 
15
- declare type Encoders = Array<(s: string) => string>;
15
+ declare type Encoders = Array<(s: string | number | boolean) => string>;
16
16
 
17
17
  export declare function joinUrl(...parts: Array<string | undefined>): string;
18
18
 
19
+ export declare const numericBooleanReserved: (typeof encodeURIComponent)[];
20
+
19
21
  export { }
package/util.js CHANGED
@@ -1,25 +1,35 @@
1
- const a = [encodeURIComponent, encodeURIComponent], p = [encodeURIComponent, encodeURI];
2
- function f(r, n = ",") {
3
- const t = (e, o) => {
4
- const c = r[o % r.length];
5
- return typeof e > "u" ? "" : typeof e == "object" ? Array.isArray(e) ? e.map(c).join(n) : Object.entries(e).reduce(
6
- (i, d) => [...i, ...d],
1
+ const a = [encodeURIComponent, encodeURIComponent], m = [encodeURIComponent, encodeURI], s = [
2
+ encodeURIComponent,
3
+ p
4
+ ];
5
+ function d(e, t = ",") {
6
+ const o = (n, r) => {
7
+ const c = e[r % e.length];
8
+ return typeof n > "u" ? "" : typeof n == "object" ? Array.isArray(n) ? n.map(c).join(t) : Object.entries(n).reduce(
9
+ (i, f) => [...i, ...f],
7
10
  []
8
- ).map(c).join(n) : c(String(e));
11
+ ).map(c).join(t) : c(l(n));
9
12
  };
10
- return (e, ...o) => e.reduce((c, u, i) => `${c}${u}${t(o[i], i)}`, "");
13
+ return (n, ...r) => n.reduce((c, u, i) => `${c}${u}${o(r[i], i)}`, "");
11
14
  }
12
- function l(r = ",") {
13
- return (n, t = a) => Object.entries(n).filter(([, e]) => e !== void 0).map(([e, o]) => f(t, r)`${e}=${o}`).join("&");
15
+ function R(e = ",") {
16
+ return (t, o = a) => Object.entries(t).filter(([, n]) => n !== void 0).map(([n, r]) => d(o, e)`${n}=${r}`).join("&");
14
17
  }
15
- function j(...r) {
16
- return r.filter(Boolean).map((n, t) => t === 0 ? n : n.replace(/^\/+/, "")).map((n, t, e) => t === e.length - 1 ? n : n.replace(/\/+$/, "")).join("/");
18
+ function j(...e) {
19
+ return e.filter(Boolean).map((t, o) => o === 0 ? t : t.replace(/^\/+/, "")).map((t, o, n) => o === n.length - 1 ? t : t.replace(/\/+$/, "")).join("/");
20
+ }
21
+ function l(e) {
22
+ return typeof e == "string" || typeof e == "number" || typeof e == "boolean" ? e : String(e);
23
+ }
24
+ function p(e) {
25
+ return e === !0 ? "1" : e === !1 ? "0" : encodeURIComponent(e);
17
26
  }
18
27
  export {
19
- p as allowReserved,
20
- l as delimited,
21
- f as encode,
28
+ m as allowReserved,
29
+ R as delimited,
30
+ d as encode,
22
31
  a as encodeReserved,
23
- j as joinUrl
32
+ j as joinUrl,
33
+ s as numericBooleanReserved
24
34
  };
25
35
  //# sourceMappingURL=util.js.map
package/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sources":["../src/util.ts"],"sourcesContent":["type Encoders = Array<(s: string) => string>;\n\n// Encode param names and values as URIComponent\nexport const encodeReserved = [encodeURIComponent, encodeURIComponent];\nexport const allowReserved = [encodeURIComponent, encodeURI];\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(String(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"],"names":["encodeReserved","allowReserved","encode","encoders","delimiter","q","v","i","encoder","flat","entry","strings","values","prev","s","delimited","params","value","name","joinUrl","parts","a"],"mappings":"AAGO,MAAMA,IAAiB,CAAC,oBAAoB,kBAAkB,GACxDC,IAAgB,CAAC,oBAAoB,SAAS;AAKpD,SAASC,EAAOC,GAAoBC,IAAY,KAAK;AAC1D,QAAMC,IAAI,CAACC,GAAQC,MAAc;AAC/B,UAAMC,IAAUL,EAASI,IAAIJ,EAAS,MAAM;AAC5C,WAAI,OAAOG,IAAM,MACR,KAEL,OAAOA,KAAM,WACX,MAAM,QAAQA,CAAC,IACVA,EAAE,IAAIE,CAAO,EAAE,KAAKJ,CAAS,IAEzB,OAAO,QAAQE,CAAC,EAAE;AAAA,MAC7B,CAACG,GAAMC,MAAU,CAAC,GAAGD,GAAM,GAAGC,CAAK;AAAA,MACnC,CAAA;AAAA,IAAC,EAES,IAAIF,CAAO,EAAE,KAAKJ,CAAS,IAGlCI,EAAQ,OAAOF,CAAC,CAAC;AAAA,EAC1B;AAEA,SAAO,CAACK,MAAkCC,MACjCD,EAAQ,OAAO,CAACE,GAAMC,GAAG,MACvB,GAAGD,CAAI,GAAGC,CAAC,GAAGT,EAAEO,EAAO,CAAC,GAAG,CAAC,CAAC,IACnC,EAAE;AAET;AAKO,SAASG,EAAUX,IAAY,KAAK;AACzC,SAAO,CAACY,GAA6Bb,IAAWH,MAC9C,OAAO,QAAQgB,CAAM,EAClB,OAAO,CAAC,CAAA,EAAGC,CAAK,MAAMA,MAAU,MAAS,EACzC,IAAI,CAAC,CAACC,GAAMD,CAAK,MAAMf,EAAOC,GAAUC,CAAS,IAAIc,CAAI,IAAID,CAAK,EAAE,EACpE,KAAK,GAAG;AACf;AAEO,SAASE,KAAWC,GAAkC;AAC3D,SAAOA,EACJ,OAAO,OAAO,EACd,IAAI,CAACN,GAAGP,MAAOA,MAAM,IAAIO,IAAIA,EAAG,QAAQ,QAAQ,EAAE,CAAE,EACpD,IAAI,CAACA,GAAGP,GAAGc,MAAOd,MAAMc,EAAE,SAAS,IAAIP,IAAIA,EAAG,QAAQ,QAAQ,EAAE,CAAE,EAClE,KAAK,GAAG;AACb;"}
1
+ {"version":3,"file":"util.js","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":"AAGO,MAAMA,IAAiB,CAAC,oBAAoB,kBAAkB,GACxDC,IAAgB,CAAC,oBAAoB,SAAS,GAC9CC,IAAyB;AAAA,EACpC;AAAA,EACAC;AACF;AAKO,SAASC,EAAOC,GAAoBC,IAAY,KAAK;AAC1D,QAAMC,IAAI,CAACC,GAAQC,MAAc;AAC/B,UAAMC,IAAUL,EAASI,IAAIJ,EAAS,MAAM;AAC5C,WAAI,OAAOG,IAAM,MACR,KAEL,OAAOA,KAAM,WACX,MAAM,QAAQA,CAAC,IACVA,EAAE,IAAIE,CAAO,EAAE,KAAKJ,CAAS,IAEzB,OAAO,QAAQE,CAAC,EAAE;AAAA,MAC7B,CAACG,GAAMC,MAAU,CAAC,GAAGD,GAAM,GAAGC,CAAK;AAAA,MACnC,CAAA;AAAA,IAAC,EAES,IAAIF,CAAO,EAAE,KAAKJ,CAAS,IAGlCI,EAAQG,EAAiBL,CAAC,CAAC;AAAA,EACpC;AAEA,SAAO,CAACM,MAAkCC,MACjCD,EAAQ,OAAO,CAACE,GAAMC,GAAG,MACvB,GAAGD,CAAI,GAAGC,CAAC,GAAGV,EAAEQ,EAAO,CAAC,GAAG,CAAC,CAAC,IACnC,EAAE;AAET;AAKO,SAASG,EAAUZ,IAAY,KAAK;AACzC,SAAO,CAACa,GAA6Bd,IAAWL,MAC9C,OAAO,QAAQmB,CAAM,EAClB,OAAO,CAAC,CAAA,EAAGC,CAAK,MAAMA,MAAU,MAAS,EACzC,IAAI,CAAC,CAACC,GAAMD,CAAK,MAAMhB,EAAOC,GAAUC,CAAS,IAAIe,CAAI,IAAID,CAAK,EAAE,EACpE,KAAK,GAAG;AACf;AAEO,SAASE,KAAWC,GAAkC;AAC3D,SAAOA,EACJ,OAAO,OAAO,EACd,IAAI,CAACN,GAAGR,MAAOA,MAAM,IAAIQ,IAAIA,EAAG,QAAQ,QAAQ,EAAE,CAAE,EACpD,IAAI,CAACA,GAAGR,GAAGe,MAAOf,MAAMe,EAAE,SAAS,IAAIP,IAAIA,EAAG,QAAQ,QAAQ,EAAE,CAAE,EAClE,KAAK,GAAG;AACb;AAEA,SAASJ,EAAiBL,GAAY;AACpC,SACE,OAAOA,KAAM,YACb,OAAOA,KAAM,YACb,OAAOA,KAAM,YAENA,IAEF,OAAOA,CAAC;AACjB;AAEA,SAASL,EAAqBsB,GAAyC;AACrE,SAAIA,MAAiB,KAAa,MAC9BA,MAAiB,KAAc,MAC5B,mBAAmBA,CAAY;AACxC;"}