@descope/sdk-helpers 0.8.0 → 0.9.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.
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("tslib");const t=(e,t)=>e.length===t.length&&e.every(((e,r)=>e===t[r]));var r,s,i,a;function l(e,t){const r=Object.getOwnPropertyNames(e),s=Object.getOwnPropertyNames(t);if(r.length!==s.length)return!1;for(let s=0;s<r.length;s+=1){const i=r[s],a=e[i],o=t[i];if(null===a||null===o){if(a!==o)return!1}else if("object"==typeof a&&"object"==typeof o){if(!l(a,o))return!1}else if(a!==o)return!1}return!0}r=new WeakMap,s=new WeakMap,i=new WeakMap,a=new WeakMap;const o=["=","+","-","@","\t","\r"],n=e=>{const t=(e=>e.length>0&&o.includes(e[0])?`'${e}`:e)(Array.isArray(e)?e.join("; "):String(null!=e?e:""));return t.includes(",")||t.includes('"')||t.includes("\n")||t.includes("\r")?`"${t.replace(/"/g,'""')}"`:t};exports.State=class{constructor(t={},{forceUpdate:o=!1}={}){r.set(this,void 0),s.set(this,{}),i.set(this,0),a.set(this,!0),this.update=t=>{const i="function"==typeof t?t(e.__classPrivateFieldGet(this,r,"f")):t,o=Object.assign(Object.assign({},e.__classPrivateFieldGet(this,r,"f")),i);if(e.__classPrivateFieldGet(this,a,"f")||!l(e.__classPrivateFieldGet(this,r,"f"),o)){const t=e.__classPrivateFieldGet(this,r,"f");e.__classPrivateFieldSet(this,r,o,"f"),Object.freeze(e.__classPrivateFieldGet(this,r,"f")),setTimeout((()=>{Object.values(e.__classPrivateFieldGet(this,s,"f")).forEach((e=>e(o,t,((e,t)=>r=>e[r]!==t[r])(o,t))))}),0)}},e.__classPrivateFieldSet(this,r,t,"f"),e.__classPrivateFieldSet(this,a,o,"f")}get current(){return Object.assign({},e.__classPrivateFieldGet(this,r,"f"))}subscribe(t){return e.__classPrivateFieldSet(this,i,e.__classPrivateFieldGet(this,i,"f")+1,"f"),e.__classPrivateFieldGet(this,s,"f")[e.__classPrivateFieldGet(this,i,"f")]=t,e.__classPrivateFieldGet(this,i,"f").toString()}unsubscribe(t){const r=!!e.__classPrivateFieldGet(this,s,"f")[t];return r&&delete e.__classPrivateFieldGet(this,s,"f")[t],r}unsubscribeAll(){return e.__classPrivateFieldSet(this,s,{},"f"),!0}},exports.compareArrays=t,exports.compose=function(...e){return t=>e.reduce(((e,t)=>t(e)),t)},exports.createSingletonMixin=e=>{const t=Symbol((e=>{const t=e.toString();let r=0;for(let e=0;e<t.length;e++)r=(r<<5)-r+t.charCodeAt(e),r&=r;return r.toString(16)})(e));return r=>{if(r[t])return r;const s=e(r);return s[t]=!0,s}},exports.createTemplate=e=>{const t=document.createElement("template");return t.innerHTML=e,t},exports.debounce=(e,t=500)=>{let r;return function(...s){clearTimeout(r),r=setTimeout((()=>e.apply(this,s)),t)}},exports.decodeJWT=e=>{try{const t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),r=decodeURIComponent(atob(t).split("").map((e=>"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2))).join(""));return JSON.parse(r)}catch(e){return null}},exports.downloadCsv=(e,t)=>{const r=new Blob(["\ufeff"+e],{type:"text/csv;charset=utf-8;"}),s=URL.createObjectURL(r),i=document.createElement("a");i.href=s,i.setAttribute("download",t),document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(s)},exports.escapeCsvValue=n,exports.generateCsv=(e,t)=>[t.map((e=>n(e.header))).join(","),...e.map((e=>t.map((t=>n(e[t.path]))).join(",")))].join("\n"),exports.getUserLocale=function(e){if(e)return{locale:e.toLowerCase(),fallback:e.toLowerCase()};const t=navigator.language;return t?t.includes("-")?{locale:t.toLowerCase(),fallback:t.split("-")[0].toLowerCase()}:{locale:t.toLowerCase(),fallback:t.toLowerCase()}:{locale:"",fallback:""}},exports.isObjEmpty=e=>0===Object.keys(e).length&&e.constructor===Object,exports.isPlainObject=e=>null!==e&&"object"==typeof e&&Object.getPrototypeOf(e)===Object.prototype,exports.kebabCase=e=>e.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/[\s_.]+/g,"-").toLowerCase(),exports.pathJoin=(...e)=>e.join("/").replace(/\/+/g,"/"),exports.pluralize=e=>(t,...r)=>t.reduce(((t,s,i)=>{var a;return`${t}${s}${(null===(a=null==r?void 0:r[i])||void 0===a?void 0:a[e>1?1:0])||""}`}),""),exports.withMemCache=e=>{let r,s;return(...i)=>(r&&t(r,i)||(r=i,s=e(...i)),s)};
1
+ "use strict";var e=require("tslib");const t=e=>{const t=document.createElement("template");return t.innerHTML=e,t},r=(e,t)=>e.length===t.length&&e.every(((e,r)=>e===t[r])),s=e=>e.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/[\s_.]+/g,"-").toLowerCase(),i=e=>null!==e&&"object"==typeof e&&Object.getPrototypeOf(e)===Object.prototype;var a,o,c,l;function n(e,t){const r=Object.getOwnPropertyNames(e),s=Object.getOwnPropertyNames(t);if(r.length!==s.length)return!1;for(let s=0;s<r.length;s+=1){const i=r[s],a=e[i],o=t[i];if(null===a||null===o){if(a!==o)return!1}else if("object"==typeof a&&"object"==typeof o){if(!n(a,o))return!1}else if(a!==o)return!1}return!0}a=new WeakMap,o=new WeakMap,c=new WeakMap,l=new WeakMap;const u=["=","+","-","@","\t","\r"],p=e=>{const t=(e=>e.length>0&&u.includes(e[0])?`'${e}`:e)(Array.isArray(e)?e.join("; "):String(null!=e?e:""));return t.includes(",")||t.includes('"')||t.includes("\n")||t.includes("\r")?`"${t.replace(/"/g,'""')}"`:t};exports.State=class{constructor(t={},{forceUpdate:r=!1}={}){a.set(this,void 0),o.set(this,{}),c.set(this,0),l.set(this,!0),this.update=t=>{const r="function"==typeof t?t(e.__classPrivateFieldGet(this,a,"f")):t,s=Object.assign(Object.assign({},e.__classPrivateFieldGet(this,a,"f")),r);if(e.__classPrivateFieldGet(this,l,"f")||!n(e.__classPrivateFieldGet(this,a,"f"),s)){const t=e.__classPrivateFieldGet(this,a,"f");e.__classPrivateFieldSet(this,a,s,"f"),Object.freeze(e.__classPrivateFieldGet(this,a,"f")),setTimeout((()=>{Object.values(e.__classPrivateFieldGet(this,o,"f")).forEach((e=>e(s,t,((e,t)=>r=>e[r]!==t[r])(s,t))))}),0)}},e.__classPrivateFieldSet(this,a,t,"f"),e.__classPrivateFieldSet(this,l,r,"f")}get current(){return Object.assign({},e.__classPrivateFieldGet(this,a,"f"))}subscribe(t){return e.__classPrivateFieldSet(this,c,e.__classPrivateFieldGet(this,c,"f")+1,"f"),e.__classPrivateFieldGet(this,o,"f")[e.__classPrivateFieldGet(this,c,"f")]=t,e.__classPrivateFieldGet(this,c,"f").toString()}unsubscribe(t){const r=!!e.__classPrivateFieldGet(this,o,"f")[t];return r&&delete e.__classPrivateFieldGet(this,o,"f")[t],r}unsubscribeAll(){return e.__classPrivateFieldSet(this,o,{},"f"),!0}},exports.compareArrays=r,exports.compose=function(...e){return t=>e.reduce(((e,t)=>t(e)),t)},exports.createFlowTemplate=(e={})=>{const r=t("<descope-wc></descope-wc>");return Object.entries(e).forEach((([e,t])=>{r.content.querySelector("descope-wc").setAttribute(s(e),(e=>"string"==typeof e?e:i(e)?JSON.stringify(e):"")(t))})),r},exports.createSingletonMixin=e=>{const t=Symbol((e=>{const t=e.toString();let r=0;for(let e=0;e<t.length;e++)r=(r<<5)-r+t.charCodeAt(e),r&=r;return r.toString(16)})(e));return r=>{if(r[t])return r;const s=e(r);return s[t]=!0,s}},exports.createTemplate=t,exports.debounce=(e,t=500)=>{let r;return function(...s){clearTimeout(r),r=setTimeout((()=>e.apply(this,s)),t)}},exports.decodeJWT=e=>{try{const t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),r=decodeURIComponent(atob(t).split("").map((e=>"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2))).join(""));return JSON.parse(r)}catch(e){return null}},exports.downloadCsv=(e,t)=>{const r=new Blob(["\ufeff"+e],{type:"text/csv;charset=utf-8;"}),s=URL.createObjectURL(r),i=document.createElement("a");i.href=s,i.setAttribute("download",t),document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(s)},exports.escapeCsvValue=p,exports.generateCsv=(e,t)=>[t.map((e=>p(e.header))).join(","),...e.map((e=>t.map((t=>p(e[t.path]))).join(",")))].join("\n"),exports.getUserLocale=function(e){if(e)return{locale:e.toLowerCase(),fallback:e.toLowerCase()};const t=navigator.language;return t?t.includes("-")?{locale:t.toLowerCase(),fallback:t.split("-")[0].toLowerCase()}:{locale:t.toLowerCase(),fallback:t.toLowerCase()}:{locale:"",fallback:""}},exports.isObjEmpty=e=>0===Object.keys(e).length&&e.constructor===Object,exports.isPlainObject=i,exports.kebabCase=s,exports.pathJoin=(...e)=>e.join("/").replace(/\/+/g,"/"),exports.pluralize=e=>(t,...r)=>t.reduce(((t,s,i)=>{var a;return`${t}${s}${(null===(a=null==r?void 0:r[i])||void 0===a?void 0:a[e>1?1:0])||""}`}),""),exports.withMemCache=e=>{let t,s;return(...i)=>(t&&r(t,i)||(t=i,s=e(...i)),s)};
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../src/dom.ts","../../src/generic.ts","../../src/state.ts","../../src/jwt.ts","../../src/csv.ts","../../src/compose.ts","../../src/mixins.ts","../../src/locale.ts"],"sourcesContent":["export const createTemplate = (templateString: string) => {\n const template = document.createElement('template');\n template.innerHTML = templateString;\n\n return template;\n};\n","// preventing duplicate separators\nexport const pathJoin = (...paths: string[]) =>\n paths.join('/').replace(/\\/+/g, '/');\n\nexport const compareArrays = (array1: any[], array2: any[]) =>\n array1.length === array2.length &&\n array1.every((value: any, index: number) => value === array2[index]);\n\nexport const withMemCache = <I extends any[], O>(fn: (...args: I) => O) => {\n let prevArgs: any[];\n let cache: any;\n return (...args: I) => {\n if (prevArgs && compareArrays(prevArgs, args)) return cache as O;\n\n prevArgs = args;\n cache = fn(...args);\n\n return cache as O;\n };\n};\n\nexport const kebabCase = (str: string) =>\n str\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_.]+/g, '-')\n .toLowerCase();\n\nexport const isObjEmpty = (obj: object) =>\n Object.keys(obj).length === 0 && obj.constructor === Object;\n\nexport const pluralize =\n (amount: number) =>\n (strings: TemplateStringsArray, ...expressions: (string | number)[][]) =>\n strings.reduce(\n (acc, str, idx) =>\n `${acc}${str}${expressions?.[idx]?.[amount > 1 ? 1 : 0] || ''}`,\n '',\n );\n\nexport const debounce = (fn: Function, ms = 500) => {\n let timeoutId: ReturnType<typeof setTimeout>;\n return function debounced(this: any, ...args: any[]) {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn.apply(this, args), ms);\n };\n};\n\nexport const isPlainObject = (obj: unknown) =>\n obj !== null &&\n typeof obj === 'object' &&\n Object.getPrototypeOf(obj) === Object.prototype;\n","const createIsChanged =\n <T extends Record<string, any>>(state: T, prevState: T) =>\n (attrName: keyof T) =>\n state[attrName] !== prevState[attrName];\n\ntype StateObject = Record<string, any>;\n\ntype UpdateStateCb<T> = (state: T) => Partial<T>;\ntype Subscribers<T> = Record<string, SubscribeCb<T>>;\n\n// eslint-disable-next-line import/exports-last\nexport type SubscribeCb<T> = (\n state: T,\n prevState: T,\n isChanged: ReturnType<typeof createIsChanged>,\n) => void | Promise<void>;\n\nfunction compareObjects(\n objectA: Record<string, any>,\n objectB: Record<string, any>,\n) {\n const aProperties = Object.getOwnPropertyNames(objectA);\n const bProperties = Object.getOwnPropertyNames(objectB);\n\n if (aProperties.length !== bProperties.length) {\n return false;\n }\n\n for (let i = 0; i < aProperties.length; i += 1) {\n const propName = aProperties[i];\n\n const valA = objectA[propName];\n const valB = objectB[propName];\n if (valA === null || valB === null) {\n if (valA !== valB) {\n return false;\n }\n } else if (typeof valA === 'object' && typeof valB === 'object') {\n // compare nested objects\n if (!compareObjects(valA, valB)) {\n return false;\n }\n } else if (valA !== valB) {\n return false;\n }\n }\n\n return true;\n}\n\nexport type IsChanged<T> = Parameters<SubscribeCb<T>>[2];\n\nexport class State<T extends StateObject> {\n #state: T;\n\n #subscribers: Subscribers<T> = {};\n\n #token = 0;\n\n #forceUpdate = true;\n\n constructor(init: T = {} as T, { forceUpdate = false } = {}) {\n this.#state = init;\n this.#forceUpdate = forceUpdate;\n }\n\n get current() {\n return { ...this.#state };\n }\n\n update = (newState: Partial<T> | UpdateStateCb<T>) => {\n const internalNewState =\n typeof newState === 'function' ? newState(this.#state) : newState;\n\n const nextState = { ...this.#state, ...internalNewState };\n if (this.#forceUpdate || !compareObjects(this.#state, nextState)) {\n const prevState = this.#state;\n this.#state = nextState;\n Object.freeze(this.#state);\n\n setTimeout(() => {\n Object.values(this.#subscribers).forEach((cb) =>\n cb(nextState, prevState, createIsChanged(nextState, prevState)),\n );\n }, 0);\n }\n };\n\n subscribe(cb: SubscribeCb<T>) {\n this.#token += 1;\n this.#subscribers[this.#token] = cb;\n\n return this.#token.toString();\n }\n\n unsubscribe(token: string) {\n const isFound = !!this.#subscribers[token];\n\n if (isFound) {\n delete this.#subscribers[token];\n }\n\n return isFound;\n }\n\n unsubscribeAll() {\n this.#subscribers = {};\n\n return true;\n }\n}\n","// Helper function to decode JWT and extract claims\nexport const decodeJWT = (token: string) => {\n try {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(\n atob(base64)\n .split('')\n .map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\n .join(''),\n );\n return JSON.parse(jsonPayload);\n } catch (e) {\n return null;\n }\n};\n","const FORMULA_PREFIXES = ['=', '+', '-', '@', '\\t', '\\r'];\n\nconst sanitizeFormulaInjection = (str: string): string => {\n if (str.length > 0 && FORMULA_PREFIXES.includes(str[0])) {\n return `'${str}`;\n }\n return str;\n};\n\nexport const escapeCsvValue = (value: unknown): string => {\n const raw = Array.isArray(value) ? value.join('; ') : String(value ?? '');\n const str = sanitizeFormulaInjection(raw);\n if (\n str.includes(',') ||\n str.includes('\"') ||\n str.includes('\\n') ||\n str.includes('\\r')\n ) {\n return `\"${str.replace(/\"/g, '\"\"')}\"`;\n }\n return str;\n};\n\nexport const generateCsv = (\n records: Record<string, unknown>[],\n columns: { header: string; path: string }[],\n): string => {\n const header = columns.map((col) => escapeCsvValue(col.header)).join(',');\n const rows = records.map((record) =>\n columns.map((col) => escapeCsvValue(record[col.path])).join(','),\n );\n return [header, ...rows].join('\\n');\n};\n\nexport const downloadCsv = (csv: string, filename: string) => {\n const blob = new Blob(['\\uFEFF' + csv], { type: 'text/csv;charset=utf-8;' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute('download', filename);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n};\n","type Fn = (arg: any) => any;\n\nexport function compose<Input, A1>(\n fn1: (input: Input) => A1,\n): (input: Input) => A1;\n\nexport function compose<Input, A1, A2>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n): (input: Input) => A2;\n\nexport function compose<Input, A1, A2, A3>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n): (input: Input) => A3;\n\nexport function compose<Input, A1, A2, A3, A4>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n): (input: Input) => A4;\n\nexport function compose<Input, A1, A2, A3, A4, A5>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n): (input: Input) => A5;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n): (input: Input) => A6;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n): (input: Input) => A7;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n): (input: Input) => A8;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8, A9>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n): (input: Input) => A9;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n): (input: Input) => A10;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n): (input: Input) => A11;\n\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n): (input: Input) => A12;\n\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n): (input: Input) => A13;\n\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n): (input: Input) => A14;\n\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n): (input: Input) => A15;\n\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n): (input: Input) => A16;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n): (input: Input) => A17;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n): (input: Input) => A18;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n): (input: Input) => A19;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n): (input: Input) => A20;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n): (input: Input) => A21;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n): (input: Input) => A22;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n): (input: Input) => A23;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n): (input: Input) => A24;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n): (input: Input) => A25;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n): (input: Input) => A26;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n): (input: Input) => A27;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n): (input: Input) => A28;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n): (input: Input) => A29;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n): (input: Input) => A30;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n): (input: Input) => A31;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n): (input: Input) => A32;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n): (input: Input) => A33;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n): (input: Input) => A34;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n): (input: Input) => A35;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n): (input: Input) => A36;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n): (input: Input) => A37;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n): (input: Input) => A38;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n): (input: Input) => A39;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n): (input: Input) => A40;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n): (input: Input) => A41;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n): (input: Input) => A42;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n): (input: Input) => A43;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n): (input: Input) => A44;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n): (input: Input) => A45;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n A46,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n fn46: (input: A45) => A46,\n): (input: Input) => A46;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n A46,\n A47,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n fn46: (input: A45) => A46,\n fn47: (input: A46) => A47,\n): (input: Input) => A47;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n A46,\n A47,\n A48,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n fn46: (input: A45) => A46,\n fn47: (input: A46) => A47,\n fn48: (input: A47) => A48,\n): (input: Input) => A48;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n A46,\n A47,\n A48,\n A49,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n fn46: (input: A45) => A46,\n fn47: (input: A46) => A47,\n fn48: (input: A47) => A48,\n fn49: (input: A48) => A49,\n): (input: Input) => A49;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n A46,\n A47,\n A48,\n A49,\n A50,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n fn46: (input: A45) => A46,\n fn47: (input: A46) => A47,\n fn48: (input: A47) => A48,\n fn49: (input: A48) => A49,\n fn50: (input: A49) => A50,\n): (input: Input) => A50;\n\n/**\n * Currently there is no way to create a compose function in Typescript without using overloading\n * This function currently support up to 50 wrappers\n * If needed you can add more by duplicating the type and add more parameters\n */\n\nexport function compose(...args: Fn[]) {\n return (data: any) => args.reduce((acc, elem) => elem(acc), data) as any;\n}\n","const getFunctionHash = (fn: Function) => {\n const functionSource = fn.toString();\n\n let hash = 0;\n\n // eslint-disable-next-line no-plusplus\n for (let i = 0; i < functionSource.length; i++) {\n const char = functionSource.charCodeAt(i);\n // eslint-disable-next-line no-bitwise\n hash = (hash << 5) - hash + char;\n // eslint-disable-next-line no-bitwise\n hash &= hash; // Convert to 32-bit integer\n }\n\n return hash.toString(16);\n};\n\ntype Mixin = (superclass: CustomElementConstructor) => CustomElementConstructor;\n\n// because a single mixin can be a dependency for many other mixins, a mixin can be loaded multiple times\n// some mixins should not be loaded multiple times, wrapping a mixin with this fn ensures it will load only once\nexport const createSingletonMixin = <T extends Mixin>(mixin: T): T => {\n const mixinNameSym = Symbol(getFunctionHash(mixin));\n\n const singletonMixin = (superclass: CustomElementConstructor) => {\n if (superclass[mixinNameSym]) {\n return superclass;\n }\n\n const cls = mixin(superclass);\n cls[mixinNameSym] = true;\n\n return cls;\n };\n\n return singletonMixin as T;\n};\n","export type Locale = {\n locale: string;\n fallback: string;\n};\n\n/**\n * Resolves the user-facing locale, shared by the web-component flow runtime and the widget mixins\n * so both resolve locale identically.\n *\n * Order:\n * 1. Explicit locale argument (lowercased), used as its own fallback\n * 2. navigator.language (lowercased), with the language part as fallback for 'xx-YY' forms\n * 3. Empty strings\n */\nexport function getUserLocale(locale: string): Locale {\n if (locale) {\n return { locale: locale.toLowerCase(), fallback: locale.toLowerCase() };\n }\n const nl = navigator.language;\n if (!nl) {\n return { locale: '', fallback: '' };\n }\n\n if (nl.includes('-')) {\n return {\n locale: nl.toLowerCase(),\n fallback: nl.split('-')[0].toLowerCase(),\n };\n }\n\n return { locale: nl.toLowerCase(), fallback: nl.toLowerCase() };\n}\n"],"names":["compareArrays","array1","array2","length","every","value","index","compareObjects","objectA","objectB","aProperties","Object","getOwnPropertyNames","bProperties","i","propName","valA","valB","FORMULA_PREFIXES","escapeCsvValue","str","includes","sanitizeFormulaInjection","Array","isArray","join","String","replace","constructor","init","forceUpdate","_State_state","set","this","_State_subscribers","_State_token","_State_forceUpdate","update","newState","internalNewState","__classPrivateFieldGet","nextState","prevState","__classPrivateFieldSet","freeze","setTimeout","values","forEach","cb","state","attrName","createIsChanged","current","assign","subscribe","toString","unsubscribe","token","isFound","unsubscribeAll","args","data","reduce","acc","elem","mixin","mixinNameSym","Symbol","fn","functionSource","hash","charCodeAt","getFunctionHash","superclass","cls","templateString","template","document","createElement","innerHTML","ms","timeoutId","clearTimeout","apply","base64","split","jsonPayload","decodeURIComponent","atob","map","c","slice","JSON","parse","e","csv","filename","blob","Blob","type","url","URL","createObjectURL","link","href","setAttribute","body","appendChild","click","removeChild","revokeObjectURL","records","columns","col","header","record","path","locale","toLowerCase","fallback","nl","navigator","language","obj","keys","getPrototypeOf","prototype","paths","amount","strings","expressions","idx","_a","prevArgs","cache"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../src/dom.ts","../../src/generic.ts","../../src/state.ts","../../src/jwt.ts","../../src/csv.ts","../../src/compose.ts","../../src/createFlowTemplate.ts","../../src/mixins.ts","../../src/locale.ts"],"sourcesContent":["export const createTemplate = (templateString: string) => {\n const template = document.createElement('template');\n template.innerHTML = templateString;\n\n return template;\n};\n","// preventing duplicate separators\nexport const pathJoin = (...paths: string[]) =>\n paths.join('/').replace(/\\/+/g, '/');\n\nexport const compareArrays = (array1: any[], array2: any[]) =>\n array1.length === array2.length &&\n array1.every((value: any, index: number) => value === array2[index]);\n\nexport const withMemCache = <I extends any[], O>(fn: (...args: I) => O) => {\n let prevArgs: any[];\n let cache: any;\n return (...args: I) => {\n if (prevArgs && compareArrays(prevArgs, args)) return cache as O;\n\n prevArgs = args;\n cache = fn(...args);\n\n return cache as O;\n };\n};\n\nexport const kebabCase = (str: string) =>\n str\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_.]+/g, '-')\n .toLowerCase();\n\nexport const isObjEmpty = (obj: object) =>\n Object.keys(obj).length === 0 && obj.constructor === Object;\n\nexport const pluralize =\n (amount: number) =>\n (strings: TemplateStringsArray, ...expressions: (string | number)[][]) =>\n strings.reduce(\n (acc, str, idx) =>\n `${acc}${str}${expressions?.[idx]?.[amount > 1 ? 1 : 0] || ''}`,\n '',\n );\n\nexport const debounce = (fn: Function, ms = 500) => {\n let timeoutId: ReturnType<typeof setTimeout>;\n return function debounced(this: any, ...args: any[]) {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn.apply(this, args), ms);\n };\n};\n\nexport const isPlainObject = (obj: unknown) =>\n obj !== null &&\n typeof obj === 'object' &&\n Object.getPrototypeOf(obj) === Object.prototype;\n","const createIsChanged =\n <T extends Record<string, any>>(state: T, prevState: T) =>\n (attrName: keyof T) =>\n state[attrName] !== prevState[attrName];\n\ntype StateObject = Record<string, any>;\n\ntype UpdateStateCb<T> = (state: T) => Partial<T>;\ntype Subscribers<T> = Record<string, SubscribeCb<T>>;\n\n// eslint-disable-next-line import/exports-last\nexport type SubscribeCb<T> = (\n state: T,\n prevState: T,\n isChanged: ReturnType<typeof createIsChanged>,\n) => void | Promise<void>;\n\nfunction compareObjects(\n objectA: Record<string, any>,\n objectB: Record<string, any>,\n) {\n const aProperties = Object.getOwnPropertyNames(objectA);\n const bProperties = Object.getOwnPropertyNames(objectB);\n\n if (aProperties.length !== bProperties.length) {\n return false;\n }\n\n for (let i = 0; i < aProperties.length; i += 1) {\n const propName = aProperties[i];\n\n const valA = objectA[propName];\n const valB = objectB[propName];\n if (valA === null || valB === null) {\n if (valA !== valB) {\n return false;\n }\n } else if (typeof valA === 'object' && typeof valB === 'object') {\n // compare nested objects\n if (!compareObjects(valA, valB)) {\n return false;\n }\n } else if (valA !== valB) {\n return false;\n }\n }\n\n return true;\n}\n\nexport type IsChanged<T> = Parameters<SubscribeCb<T>>[2];\n\nexport class State<T extends StateObject> {\n #state: T;\n\n #subscribers: Subscribers<T> = {};\n\n #token = 0;\n\n #forceUpdate = true;\n\n constructor(init: T = {} as T, { forceUpdate = false } = {}) {\n this.#state = init;\n this.#forceUpdate = forceUpdate;\n }\n\n get current() {\n return { ...this.#state };\n }\n\n update = (newState: Partial<T> | UpdateStateCb<T>) => {\n const internalNewState =\n typeof newState === 'function' ? newState(this.#state) : newState;\n\n const nextState = { ...this.#state, ...internalNewState };\n if (this.#forceUpdate || !compareObjects(this.#state, nextState)) {\n const prevState = this.#state;\n this.#state = nextState;\n Object.freeze(this.#state);\n\n setTimeout(() => {\n Object.values(this.#subscribers).forEach((cb) =>\n cb(nextState, prevState, createIsChanged(nextState, prevState)),\n );\n }, 0);\n }\n };\n\n subscribe(cb: SubscribeCb<T>) {\n this.#token += 1;\n this.#subscribers[this.#token] = cb;\n\n return this.#token.toString();\n }\n\n unsubscribe(token: string) {\n const isFound = !!this.#subscribers[token];\n\n if (isFound) {\n delete this.#subscribers[token];\n }\n\n return isFound;\n }\n\n unsubscribeAll() {\n this.#subscribers = {};\n\n return true;\n }\n}\n","// Helper function to decode JWT and extract claims\nexport const decodeJWT = (token: string) => {\n try {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(\n atob(base64)\n .split('')\n .map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\n .join(''),\n );\n return JSON.parse(jsonPayload);\n } catch (e) {\n return null;\n }\n};\n","const FORMULA_PREFIXES = ['=', '+', '-', '@', '\\t', '\\r'];\n\nconst sanitizeFormulaInjection = (str: string): string => {\n if (str.length > 0 && FORMULA_PREFIXES.includes(str[0])) {\n return `'${str}`;\n }\n return str;\n};\n\nexport const escapeCsvValue = (value: unknown): string => {\n const raw = Array.isArray(value) ? value.join('; ') : String(value ?? '');\n const str = sanitizeFormulaInjection(raw);\n if (\n str.includes(',') ||\n str.includes('\"') ||\n str.includes('\\n') ||\n str.includes('\\r')\n ) {\n return `\"${str.replace(/\"/g, '\"\"')}\"`;\n }\n return str;\n};\n\nexport const generateCsv = (\n records: Record<string, unknown>[],\n columns: { header: string; path: string }[],\n): string => {\n const header = columns.map((col) => escapeCsvValue(col.header)).join(',');\n const rows = records.map((record) =>\n columns.map((col) => escapeCsvValue(record[col.path])).join(','),\n );\n return [header, ...rows].join('\\n');\n};\n\nexport const downloadCsv = (csv: string, filename: string) => {\n const blob = new Blob(['\\uFEFF' + csv], { type: 'text/csv;charset=utf-8;' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute('download', filename);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n};\n","type Fn = (arg: any) => any;\n\nexport function compose<Input, A1>(\n fn1: (input: Input) => A1,\n): (input: Input) => A1;\n\nexport function compose<Input, A1, A2>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n): (input: Input) => A2;\n\nexport function compose<Input, A1, A2, A3>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n): (input: Input) => A3;\n\nexport function compose<Input, A1, A2, A3, A4>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n): (input: Input) => A4;\n\nexport function compose<Input, A1, A2, A3, A4, A5>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n): (input: Input) => A5;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n): (input: Input) => A6;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n): (input: Input) => A7;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n): (input: Input) => A8;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8, A9>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n): (input: Input) => A9;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n): (input: Input) => A10;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n): (input: Input) => A11;\n\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n): (input: Input) => A12;\n\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n): (input: Input) => A13;\n\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n): (input: Input) => A14;\n\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n): (input: Input) => A15;\n\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n): (input: Input) => A16;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n): (input: Input) => A17;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n): (input: Input) => A18;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n): (input: Input) => A19;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n): (input: Input) => A20;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n): (input: Input) => A21;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n): (input: Input) => A22;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n): (input: Input) => A23;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n): (input: Input) => A24;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n): (input: Input) => A25;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n): (input: Input) => A26;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n): (input: Input) => A27;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n): (input: Input) => A28;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n): (input: Input) => A29;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n): (input: Input) => A30;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n): (input: Input) => A31;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n): (input: Input) => A32;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n): (input: Input) => A33;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n): (input: Input) => A34;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n): (input: Input) => A35;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n): (input: Input) => A36;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n): (input: Input) => A37;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n): (input: Input) => A38;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n): (input: Input) => A39;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n): (input: Input) => A40;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n): (input: Input) => A41;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n): (input: Input) => A42;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n): (input: Input) => A43;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n): (input: Input) => A44;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n): (input: Input) => A45;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n A46,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n fn46: (input: A45) => A46,\n): (input: Input) => A46;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n A46,\n A47,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n fn46: (input: A45) => A46,\n fn47: (input: A46) => A47,\n): (input: Input) => A47;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n A46,\n A47,\n A48,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n fn46: (input: A45) => A46,\n fn47: (input: A46) => A47,\n fn48: (input: A47) => A48,\n): (input: Input) => A48;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n A46,\n A47,\n A48,\n A49,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n fn46: (input: A45) => A46,\n fn47: (input: A46) => A47,\n fn48: (input: A47) => A48,\n fn49: (input: A48) => A49,\n): (input: Input) => A49;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n A46,\n A47,\n A48,\n A49,\n A50,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n fn46: (input: A45) => A46,\n fn47: (input: A46) => A47,\n fn48: (input: A47) => A48,\n fn49: (input: A48) => A49,\n fn50: (input: A49) => A50,\n): (input: Input) => A50;\n\n/**\n * Currently there is no way to create a compose function in Typescript without using overloading\n * This function currently support up to 50 wrappers\n * If needed you can add more by duplicating the type and add more parameters\n */\n\nexport function compose(...args: Fn[]) {\n return (data: any) => args.reduce((acc, elem) => elem(acc), data) as any;\n}\n","import { createTemplate } from './dom';\nimport { isPlainObject, kebabCase } from './generic';\n\nconst stringifyValue = (value: unknown) => {\n if (typeof value === 'string') return value;\n if (isPlainObject(value)) return JSON.stringify(value);\n return '';\n};\n\nexport type FlowConfig = {\n projectId: string;\n flowId: string;\n baseUrl?: string;\n baseStaticUrl?: string;\n baseCdnUrl?: string;\n refreshCookieName?: string;\n theme?: string;\n 'style-id'?: string;\n locale?: string;\n // flow inputs - objects are JSON-stringified, strings pass through\n form?: Record<string, any> | string;\n client?: Record<string, any> | string;\n // widget-specific context\n tenant?: string;\n outboundAppId?: string;\n};\n\n/**\n * Builds a `<descope-wc>` flow template, mapping each config entry to a\n * kebab-cased attribute. Object values (e.g. `client` / `form` flow inputs) are\n * JSON-stringified; strings pass through. Shared by all widgets so a single\n * place controls how widget flows are started.\n */\nexport const createFlowTemplate = (\n flowConfig: FlowConfig = {} as FlowConfig,\n) => {\n const template = createTemplate(`<descope-wc></descope-wc>`);\n\n Object.entries(flowConfig).forEach(([key, value]) => {\n template.content\n .querySelector('descope-wc')\n .setAttribute(kebabCase(key), stringifyValue(value));\n });\n\n return template;\n};\n","const getFunctionHash = (fn: Function) => {\n const functionSource = fn.toString();\n\n let hash = 0;\n\n // eslint-disable-next-line no-plusplus\n for (let i = 0; i < functionSource.length; i++) {\n const char = functionSource.charCodeAt(i);\n // eslint-disable-next-line no-bitwise\n hash = (hash << 5) - hash + char;\n // eslint-disable-next-line no-bitwise\n hash &= hash; // Convert to 32-bit integer\n }\n\n return hash.toString(16);\n};\n\ntype Mixin = (superclass: CustomElementConstructor) => CustomElementConstructor;\n\n// because a single mixin can be a dependency for many other mixins, a mixin can be loaded multiple times\n// some mixins should not be loaded multiple times, wrapping a mixin with this fn ensures it will load only once\nexport const createSingletonMixin = <T extends Mixin>(mixin: T): T => {\n const mixinNameSym = Symbol(getFunctionHash(mixin));\n\n const singletonMixin = (superclass: CustomElementConstructor) => {\n if (superclass[mixinNameSym]) {\n return superclass;\n }\n\n const cls = mixin(superclass);\n cls[mixinNameSym] = true;\n\n return cls;\n };\n\n return singletonMixin as T;\n};\n","export type Locale = {\n locale: string;\n fallback: string;\n};\n\n/**\n * Resolves the user-facing locale, shared by the web-component flow runtime and the widget mixins\n * so both resolve locale identically.\n *\n * Order:\n * 1. Explicit locale argument (lowercased), used as its own fallback\n * 2. navigator.language (lowercased), with the language part as fallback for 'xx-YY' forms\n * 3. Empty strings\n */\nexport function getUserLocale(locale: string): Locale {\n if (locale) {\n return { locale: locale.toLowerCase(), fallback: locale.toLowerCase() };\n }\n const nl = navigator.language;\n if (!nl) {\n return { locale: '', fallback: '' };\n }\n\n if (nl.includes('-')) {\n return {\n locale: nl.toLowerCase(),\n fallback: nl.split('-')[0].toLowerCase(),\n };\n }\n\n return { locale: nl.toLowerCase(), fallback: nl.toLowerCase() };\n}\n"],"names":["createTemplate","templateString","template","document","createElement","innerHTML","compareArrays","array1","array2","length","every","value","index","kebabCase","str","replace","toLowerCase","isPlainObject","obj","Object","getPrototypeOf","prototype","compareObjects","objectA","objectB","aProperties","getOwnPropertyNames","bProperties","i","propName","valA","valB","FORMULA_PREFIXES","escapeCsvValue","includes","sanitizeFormulaInjection","Array","isArray","join","String","constructor","init","forceUpdate","_State_state","set","this","_State_subscribers","_State_token","_State_forceUpdate","update","newState","internalNewState","__classPrivateFieldGet","nextState","prevState","__classPrivateFieldSet","freeze","setTimeout","values","forEach","cb","state","attrName","createIsChanged","current","assign","subscribe","toString","unsubscribe","token","isFound","unsubscribeAll","args","data","reduce","acc","elem","flowConfig","entries","key","content","querySelector","setAttribute","JSON","stringify","stringifyValue","mixin","mixinNameSym","Symbol","fn","functionSource","hash","charCodeAt","getFunctionHash","superclass","cls","ms","timeoutId","clearTimeout","apply","base64","split","jsonPayload","decodeURIComponent","atob","map","c","slice","parse","e","csv","filename","blob","Blob","type","url","URL","createObjectURL","link","href","body","appendChild","click","removeChild","revokeObjectURL","records","columns","col","header","record","path","locale","fallback","nl","navigator","language","keys","paths","amount","strings","expressions","idx","_a","prevArgs","cache"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -49,6 +49,29 @@ declare function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A1
49
49
  declare function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31, A32, A33, A34, A35, A36, A37, A38, A39, A40, A41, A42, A43, A44, A45, A46, A47, A48, A49>(fn1: (input: Input) => A1, fn2: (input: A1) => A2, fn3: (input: A2) => A3, fn4: (input: A3) => A4, fn5: (input: A4) => A5, fn6: (input: A5) => A6, fn7: (input: A6) => A7, fn8: (input: A7) => A8, fn9: (input: A8) => A9, fn10: (input: A9) => A10, fn11: (input: A10) => A11, fn12: (input: A11) => A12, fn13: (input: A12) => A13, fn14: (input: A13) => A14, fn15: (input: A14) => A15, fn16: (input: A15) => A16, fn17: (input: A16) => A17, fn18: (input: A17) => A18, fn19: (input: A18) => A19, fn20: (input: A19) => A20, fn21: (input: A20) => A21, fn22: (input: A21) => A22, fn23: (input: A22) => A23, fn24: (input: A23) => A24, fn25: (input: A24) => A25, fn26: (input: A25) => A26, fn27: (input: A26) => A27, fn28: (input: A27) => A28, fn29: (input: A28) => A29, fn30: (input: A29) => A30, fn31: (input: A30) => A31, fn32: (input: A31) => A32, fn33: (input: A32) => A33, fn34: (input: A33) => A34, fn35: (input: A34) => A35, fn36: (input: A35) => A36, fn37: (input: A36) => A37, fn38: (input: A37) => A38, fn39: (input: A38) => A39, fn40: (input: A39) => A40, fn41: (input: A40) => A41, fn42: (input: A41) => A42, fn43: (input: A42) => A43, fn44: (input: A43) => A44, fn45: (input: A44) => A45, fn46: (input: A45) => A46, fn47: (input: A46) => A47, fn48: (input: A47) => A48, fn49: (input: A48) => A49): (input: Input) => A49;
50
50
  declare function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31, A32, A33, A34, A35, A36, A37, A38, A39, A40, A41, A42, A43, A44, A45, A46, A47, A48, A49, A50>(fn1: (input: Input) => A1, fn2: (input: A1) => A2, fn3: (input: A2) => A3, fn4: (input: A3) => A4, fn5: (input: A4) => A5, fn6: (input: A5) => A6, fn7: (input: A6) => A7, fn8: (input: A7) => A8, fn9: (input: A8) => A9, fn10: (input: A9) => A10, fn11: (input: A10) => A11, fn12: (input: A11) => A12, fn13: (input: A12) => A13, fn14: (input: A13) => A14, fn15: (input: A14) => A15, fn16: (input: A15) => A16, fn17: (input: A16) => A17, fn18: (input: A17) => A18, fn19: (input: A18) => A19, fn20: (input: A19) => A20, fn21: (input: A20) => A21, fn22: (input: A21) => A22, fn23: (input: A22) => A23, fn24: (input: A23) => A24, fn25: (input: A24) => A25, fn26: (input: A25) => A26, fn27: (input: A26) => A27, fn28: (input: A27) => A28, fn29: (input: A28) => A29, fn30: (input: A29) => A30, fn31: (input: A30) => A31, fn32: (input: A31) => A32, fn33: (input: A32) => A33, fn34: (input: A33) => A34, fn35: (input: A34) => A35, fn36: (input: A35) => A36, fn37: (input: A36) => A37, fn38: (input: A37) => A38, fn39: (input: A38) => A39, fn40: (input: A39) => A40, fn41: (input: A40) => A41, fn42: (input: A41) => A42, fn43: (input: A42) => A43, fn44: (input: A43) => A44, fn45: (input: A44) => A45, fn46: (input: A45) => A46, fn47: (input: A46) => A47, fn48: (input: A47) => A48, fn49: (input: A48) => A49, fn50: (input: A49) => A50): (input: Input) => A50;
51
51
 
52
+ type FlowConfig = {
53
+ projectId: string;
54
+ flowId: string;
55
+ baseUrl?: string;
56
+ baseStaticUrl?: string;
57
+ baseCdnUrl?: string;
58
+ refreshCookieName?: string;
59
+ theme?: string;
60
+ 'style-id'?: string;
61
+ locale?: string;
62
+ form?: Record<string, any> | string;
63
+ client?: Record<string, any> | string;
64
+ tenant?: string;
65
+ outboundAppId?: string;
66
+ };
67
+ /**
68
+ * Builds a `<descope-wc>` flow template, mapping each config entry to a
69
+ * kebab-cased attribute. Object values (e.g. `client` / `form` flow inputs) are
70
+ * JSON-stringified; strings pass through. Shared by all widgets so a single
71
+ * place controls how widget flows are started.
72
+ */
73
+ declare const createFlowTemplate: (flowConfig?: FlowConfig) => HTMLTemplateElement;
74
+
52
75
  declare const createTemplate: (templateString: string) => HTMLTemplateElement;
53
76
 
54
77
  declare const pathJoin: (...paths: string[]) => string;
@@ -104,4 +127,4 @@ type Locale = {
104
127
  */
105
128
  declare function getUserLocale(locale: string): Locale;
106
129
 
107
- export { type IsChanged, type Locale, State, type SubscribeCb, compareArrays, compose, createSingletonMixin, createTemplate, debounce, decodeJWT, downloadCsv, escapeCsvValue, generateCsv, getUserLocale, isObjEmpty, isPlainObject, kebabCase, pathJoin, pluralize, withMemCache };
130
+ export { type FlowConfig, type IsChanged, type Locale, State, type SubscribeCb, compareArrays, compose, createFlowTemplate, createSingletonMixin, createTemplate, debounce, decodeJWT, downloadCsv, escapeCsvValue, generateCsv, getUserLocale, isObjEmpty, isPlainObject, kebabCase, pathJoin, pluralize, withMemCache };
package/dist/index.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- import{__classPrivateFieldGet as e,__classPrivateFieldSet as t}from"tslib";function r(...e){return t=>e.reduce(((e,t)=>t(e)),t)}const n=e=>{const t=document.createElement("template");return t.innerHTML=e,t},o=(...e)=>e.join("/").replace(/\/+/g,"/"),s=(e,t)=>e.length===t.length&&e.every(((e,r)=>e===t[r])),c=e=>{let t,r;return(...n)=>(t&&s(t,n)||(t=n,r=e(...n)),r)},i=e=>e.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/[\s_.]+/g,"-").toLowerCase(),l=e=>0===Object.keys(e).length&&e.constructor===Object,a=e=>(t,...r)=>t.reduce(((t,n,o)=>{var s;return`${t}${n}${(null===(s=null==r?void 0:r[o])||void 0===s?void 0:s[e>1?1:0])||""}`}),""),u=(e,t=500)=>{let r;return function(...n){clearTimeout(r),r=setTimeout((()=>e.apply(this,n)),t)}},f=e=>null!==e&&"object"==typeof e&&Object.getPrototypeOf(e)===Object.prototype,h=e=>{const t=Symbol((e=>{const t=e.toString();let r=0;for(let e=0;e<t.length;e++)r=(r<<5)-r+t.charCodeAt(e),r&=r;return r.toString(16)})(e));return r=>{if(r[t])return r;const n=e(r);return n[t]=!0,n}};var p,b,d,g;function j(e,t){const r=Object.getOwnPropertyNames(e),n=Object.getOwnPropertyNames(t);if(r.length!==n.length)return!1;for(let n=0;n<r.length;n+=1){const o=r[n],s=e[o],c=t[o];if(null===s||null===c){if(s!==c)return!1}else if("object"==typeof s&&"object"==typeof c){if(!j(s,c))return!1}else if(s!==c)return!1}return!0}class m{constructor(r={},{forceUpdate:n=!1}={}){p.set(this,void 0),b.set(this,{}),d.set(this,0),g.set(this,!0),this.update=r=>{const n="function"==typeof r?r(e(this,p,"f")):r,o=Object.assign(Object.assign({},e(this,p,"f")),n);if(e(this,g,"f")||!j(e(this,p,"f"),o)){const r=e(this,p,"f");t(this,p,o,"f"),Object.freeze(e(this,p,"f")),setTimeout((()=>{Object.values(e(this,b,"f")).forEach((e=>e(o,r,((e,t)=>r=>e[r]!==t[r])(o,r))))}),0)}},t(this,p,r,"f"),t(this,g,n,"f")}get current(){return Object.assign({},e(this,p,"f"))}subscribe(r){return t(this,d,e(this,d,"f")+1,"f"),e(this,b,"f")[e(this,d,"f")]=r,e(this,d,"f").toString()}unsubscribe(t){const r=!!e(this,b,"f")[t];return r&&delete e(this,b,"f")[t],r}unsubscribeAll(){return t(this,b,{},"f"),!0}}p=new WeakMap,b=new WeakMap,d=new WeakMap,g=new WeakMap;const y=e=>{try{const t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),r=decodeURIComponent(atob(t).split("").map((e=>"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2))).join(""));return JSON.parse(r)}catch(e){return null}},O=["=","+","-","@","\t","\r"],w=e=>{const t=(e=>e.length>0&&O.includes(e[0])?`'${e}`:e)(Array.isArray(e)?e.join("; "):String(null!=e?e:""));return t.includes(",")||t.includes('"')||t.includes("\n")||t.includes("\r")?`"${t.replace(/"/g,'""')}"`:t},v=(e,t)=>[t.map((e=>w(e.header))).join(","),...e.map((e=>t.map((t=>w(e[t.path]))).join(",")))].join("\n"),C=(e,t)=>{const r=new Blob(["\ufeff"+e],{type:"text/csv;charset=utf-8;"}),n=URL.createObjectURL(r),o=document.createElement("a");o.href=n,o.setAttribute("download",t),document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(n)};function L(e){if(e)return{locale:e.toLowerCase(),fallback:e.toLowerCase()};const t=navigator.language;return t?t.includes("-")?{locale:t.toLowerCase(),fallback:t.split("-")[0].toLowerCase()}:{locale:t.toLowerCase(),fallback:t.toLowerCase()}:{locale:"",fallback:""}}export{m as State,s as compareArrays,r as compose,h as createSingletonMixin,n as createTemplate,u as debounce,y as decodeJWT,C as downloadCsv,w as escapeCsvValue,v as generateCsv,L as getUserLocale,l as isObjEmpty,f as isPlainObject,i as kebabCase,o as pathJoin,a as pluralize,c as withMemCache};
1
+ import{__classPrivateFieldGet as e,__classPrivateFieldSet as t}from"tslib";function r(...e){return t=>e.reduce(((e,t)=>t(e)),t)}const n=e=>{const t=document.createElement("template");return t.innerHTML=e,t},o=(...e)=>e.join("/").replace(/\/+/g,"/"),s=(e,t)=>e.length===t.length&&e.every(((e,r)=>e===t[r])),c=e=>{let t,r;return(...n)=>(t&&s(t,n)||(t=n,r=e(...n)),r)},i=e=>e.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/[\s_.]+/g,"-").toLowerCase(),l=e=>0===Object.keys(e).length&&e.constructor===Object,a=e=>(t,...r)=>t.reduce(((t,n,o)=>{var s;return`${t}${n}${(null===(s=null==r?void 0:r[o])||void 0===s?void 0:s[e>1?1:0])||""}`}),""),u=(e,t=500)=>{let r;return function(...n){clearTimeout(r),r=setTimeout((()=>e.apply(this,n)),t)}},f=e=>null!==e&&"object"==typeof e&&Object.getPrototypeOf(e)===Object.prototype,h=(e={})=>{const t=n("<descope-wc></descope-wc>");return Object.entries(e).forEach((([e,r])=>{t.content.querySelector("descope-wc").setAttribute(i(e),(e=>"string"==typeof e?e:f(e)?JSON.stringify(e):"")(r))})),t},p=e=>{const t=Symbol((e=>{const t=e.toString();let r=0;for(let e=0;e<t.length;e++)r=(r<<5)-r+t.charCodeAt(e),r&=r;return r.toString(16)})(e));return r=>{if(r[t])return r;const n=e(r);return n[t]=!0,n}};var b,d,g,j;function m(e,t){const r=Object.getOwnPropertyNames(e),n=Object.getOwnPropertyNames(t);if(r.length!==n.length)return!1;for(let n=0;n<r.length;n+=1){const o=r[n],s=e[o],c=t[o];if(null===s||null===c){if(s!==c)return!1}else if("object"==typeof s&&"object"==typeof c){if(!m(s,c))return!1}else if(s!==c)return!1}return!0}class y{constructor(r={},{forceUpdate:n=!1}={}){b.set(this,void 0),d.set(this,{}),g.set(this,0),j.set(this,!0),this.update=r=>{const n="function"==typeof r?r(e(this,b,"f")):r,o=Object.assign(Object.assign({},e(this,b,"f")),n);if(e(this,j,"f")||!m(e(this,b,"f"),o)){const r=e(this,b,"f");t(this,b,o,"f"),Object.freeze(e(this,b,"f")),setTimeout((()=>{Object.values(e(this,d,"f")).forEach((e=>e(o,r,((e,t)=>r=>e[r]!==t[r])(o,r))))}),0)}},t(this,b,r,"f"),t(this,j,n,"f")}get current(){return Object.assign({},e(this,b,"f"))}subscribe(r){return t(this,g,e(this,g,"f")+1,"f"),e(this,d,"f")[e(this,g,"f")]=r,e(this,g,"f").toString()}unsubscribe(t){const r=!!e(this,d,"f")[t];return r&&delete e(this,d,"f")[t],r}unsubscribeAll(){return t(this,d,{},"f"),!0}}b=new WeakMap,d=new WeakMap,g=new WeakMap,j=new WeakMap;const O=e=>{try{const t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),r=decodeURIComponent(atob(t).split("").map((e=>"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2))).join(""));return JSON.parse(r)}catch(e){return null}},w=["=","+","-","@","\t","\r"],v=e=>{const t=(e=>e.length>0&&w.includes(e[0])?`'${e}`:e)(Array.isArray(e)?e.join("; "):String(null!=e?e:""));return t.includes(",")||t.includes('"')||t.includes("\n")||t.includes("\r")?`"${t.replace(/"/g,'""')}"`:t},C=(e,t)=>[t.map((e=>v(e.header))).join(","),...e.map((e=>t.map((t=>v(e[t.path]))).join(",")))].join("\n"),L=(e,t)=>{const r=new Blob(["\ufeff"+e],{type:"text/csv;charset=utf-8;"}),n=URL.createObjectURL(r),o=document.createElement("a");o.href=n,o.setAttribute("download",t),document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(n)};function k(e){if(e)return{locale:e.toLowerCase(),fallback:e.toLowerCase()};const t=navigator.language;return t?t.includes("-")?{locale:t.toLowerCase(),fallback:t.split("-")[0].toLowerCase()}:{locale:t.toLowerCase(),fallback:t.toLowerCase()}:{locale:"",fallback:""}}export{y as State,s as compareArrays,r as compose,h as createFlowTemplate,p as createSingletonMixin,n as createTemplate,u as debounce,O as decodeJWT,L as downloadCsv,v as escapeCsvValue,C as generateCsv,k as getUserLocale,l as isObjEmpty,f as isPlainObject,i as kebabCase,o as pathJoin,a as pluralize,c as withMemCache};
2
2
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/compose.ts","../src/dom.ts","../src/generic.ts","../src/mixins.ts","../src/state.ts","../src/jwt.ts","../src/csv.ts","../src/locale.ts"],"sourcesContent":["type Fn = (arg: any) => any;\n\nexport function compose<Input, A1>(\n fn1: (input: Input) => A1,\n): (input: Input) => A1;\n\nexport function compose<Input, A1, A2>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n): (input: Input) => A2;\n\nexport function compose<Input, A1, A2, A3>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n): (input: Input) => A3;\n\nexport function compose<Input, A1, A2, A3, A4>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n): (input: Input) => A4;\n\nexport function compose<Input, A1, A2, A3, A4, A5>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n): (input: Input) => A5;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n): (input: Input) => A6;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n): (input: Input) => A7;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n): (input: Input) => A8;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8, A9>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n): (input: Input) => A9;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n): (input: Input) => A10;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n): (input: Input) => A11;\n\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n): (input: Input) => A12;\n\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n): (input: Input) => A13;\n\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n): (input: Input) => A14;\n\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n): (input: Input) => A15;\n\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n): (input: Input) => A16;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n): (input: Input) => A17;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n): (input: Input) => A18;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n): (input: Input) => A19;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n): (input: Input) => A20;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n): (input: Input) => A21;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n): (input: Input) => A22;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n): (input: Input) => A23;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n): (input: Input) => A24;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n): (input: Input) => A25;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n): (input: Input) => A26;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n): (input: Input) => A27;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n): (input: Input) => A28;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n): (input: Input) => A29;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n): (input: Input) => A30;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n): (input: Input) => A31;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n): (input: Input) => A32;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n): (input: Input) => A33;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n): (input: Input) => A34;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n): (input: Input) => A35;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n): (input: Input) => A36;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n): (input: Input) => A37;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n): (input: Input) => A38;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n): (input: Input) => A39;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n): (input: Input) => A40;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n): (input: Input) => A41;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n): (input: Input) => A42;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n): (input: Input) => A43;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n): (input: Input) => A44;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n): (input: Input) => A45;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n A46,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n fn46: (input: A45) => A46,\n): (input: Input) => A46;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n A46,\n A47,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n fn46: (input: A45) => A46,\n fn47: (input: A46) => A47,\n): (input: Input) => A47;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n A46,\n A47,\n A48,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n fn46: (input: A45) => A46,\n fn47: (input: A46) => A47,\n fn48: (input: A47) => A48,\n): (input: Input) => A48;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n A46,\n A47,\n A48,\n A49,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n fn46: (input: A45) => A46,\n fn47: (input: A46) => A47,\n fn48: (input: A47) => A48,\n fn49: (input: A48) => A49,\n): (input: Input) => A49;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n A46,\n A47,\n A48,\n A49,\n A50,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n fn46: (input: A45) => A46,\n fn47: (input: A46) => A47,\n fn48: (input: A47) => A48,\n fn49: (input: A48) => A49,\n fn50: (input: A49) => A50,\n): (input: Input) => A50;\n\n/**\n * Currently there is no way to create a compose function in Typescript without using overloading\n * This function currently support up to 50 wrappers\n * If needed you can add more by duplicating the type and add more parameters\n */\n\nexport function compose(...args: Fn[]) {\n return (data: any) => args.reduce((acc, elem) => elem(acc), data) as any;\n}\n","export const createTemplate = (templateString: string) => {\n const template = document.createElement('template');\n template.innerHTML = templateString;\n\n return template;\n};\n","// preventing duplicate separators\nexport const pathJoin = (...paths: string[]) =>\n paths.join('/').replace(/\\/+/g, '/');\n\nexport const compareArrays = (array1: any[], array2: any[]) =>\n array1.length === array2.length &&\n array1.every((value: any, index: number) => value === array2[index]);\n\nexport const withMemCache = <I extends any[], O>(fn: (...args: I) => O) => {\n let prevArgs: any[];\n let cache: any;\n return (...args: I) => {\n if (prevArgs && compareArrays(prevArgs, args)) return cache as O;\n\n prevArgs = args;\n cache = fn(...args);\n\n return cache as O;\n };\n};\n\nexport const kebabCase = (str: string) =>\n str\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_.]+/g, '-')\n .toLowerCase();\n\nexport const isObjEmpty = (obj: object) =>\n Object.keys(obj).length === 0 && obj.constructor === Object;\n\nexport const pluralize =\n (amount: number) =>\n (strings: TemplateStringsArray, ...expressions: (string | number)[][]) =>\n strings.reduce(\n (acc, str, idx) =>\n `${acc}${str}${expressions?.[idx]?.[amount > 1 ? 1 : 0] || ''}`,\n '',\n );\n\nexport const debounce = (fn: Function, ms = 500) => {\n let timeoutId: ReturnType<typeof setTimeout>;\n return function debounced(this: any, ...args: any[]) {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn.apply(this, args), ms);\n };\n};\n\nexport const isPlainObject = (obj: unknown) =>\n obj !== null &&\n typeof obj === 'object' &&\n Object.getPrototypeOf(obj) === Object.prototype;\n","const getFunctionHash = (fn: Function) => {\n const functionSource = fn.toString();\n\n let hash = 0;\n\n // eslint-disable-next-line no-plusplus\n for (let i = 0; i < functionSource.length; i++) {\n const char = functionSource.charCodeAt(i);\n // eslint-disable-next-line no-bitwise\n hash = (hash << 5) - hash + char;\n // eslint-disable-next-line no-bitwise\n hash &= hash; // Convert to 32-bit integer\n }\n\n return hash.toString(16);\n};\n\ntype Mixin = (superclass: CustomElementConstructor) => CustomElementConstructor;\n\n// because a single mixin can be a dependency for many other mixins, a mixin can be loaded multiple times\n// some mixins should not be loaded multiple times, wrapping a mixin with this fn ensures it will load only once\nexport const createSingletonMixin = <T extends Mixin>(mixin: T): T => {\n const mixinNameSym = Symbol(getFunctionHash(mixin));\n\n const singletonMixin = (superclass: CustomElementConstructor) => {\n if (superclass[mixinNameSym]) {\n return superclass;\n }\n\n const cls = mixin(superclass);\n cls[mixinNameSym] = true;\n\n return cls;\n };\n\n return singletonMixin as T;\n};\n","const createIsChanged =\n <T extends Record<string, any>>(state: T, prevState: T) =>\n (attrName: keyof T) =>\n state[attrName] !== prevState[attrName];\n\ntype StateObject = Record<string, any>;\n\ntype UpdateStateCb<T> = (state: T) => Partial<T>;\ntype Subscribers<T> = Record<string, SubscribeCb<T>>;\n\n// eslint-disable-next-line import/exports-last\nexport type SubscribeCb<T> = (\n state: T,\n prevState: T,\n isChanged: ReturnType<typeof createIsChanged>,\n) => void | Promise<void>;\n\nfunction compareObjects(\n objectA: Record<string, any>,\n objectB: Record<string, any>,\n) {\n const aProperties = Object.getOwnPropertyNames(objectA);\n const bProperties = Object.getOwnPropertyNames(objectB);\n\n if (aProperties.length !== bProperties.length) {\n return false;\n }\n\n for (let i = 0; i < aProperties.length; i += 1) {\n const propName = aProperties[i];\n\n const valA = objectA[propName];\n const valB = objectB[propName];\n if (valA === null || valB === null) {\n if (valA !== valB) {\n return false;\n }\n } else if (typeof valA === 'object' && typeof valB === 'object') {\n // compare nested objects\n if (!compareObjects(valA, valB)) {\n return false;\n }\n } else if (valA !== valB) {\n return false;\n }\n }\n\n return true;\n}\n\nexport type IsChanged<T> = Parameters<SubscribeCb<T>>[2];\n\nexport class State<T extends StateObject> {\n #state: T;\n\n #subscribers: Subscribers<T> = {};\n\n #token = 0;\n\n #forceUpdate = true;\n\n constructor(init: T = {} as T, { forceUpdate = false } = {}) {\n this.#state = init;\n this.#forceUpdate = forceUpdate;\n }\n\n get current() {\n return { ...this.#state };\n }\n\n update = (newState: Partial<T> | UpdateStateCb<T>) => {\n const internalNewState =\n typeof newState === 'function' ? newState(this.#state) : newState;\n\n const nextState = { ...this.#state, ...internalNewState };\n if (this.#forceUpdate || !compareObjects(this.#state, nextState)) {\n const prevState = this.#state;\n this.#state = nextState;\n Object.freeze(this.#state);\n\n setTimeout(() => {\n Object.values(this.#subscribers).forEach((cb) =>\n cb(nextState, prevState, createIsChanged(nextState, prevState)),\n );\n }, 0);\n }\n };\n\n subscribe(cb: SubscribeCb<T>) {\n this.#token += 1;\n this.#subscribers[this.#token] = cb;\n\n return this.#token.toString();\n }\n\n unsubscribe(token: string) {\n const isFound = !!this.#subscribers[token];\n\n if (isFound) {\n delete this.#subscribers[token];\n }\n\n return isFound;\n }\n\n unsubscribeAll() {\n this.#subscribers = {};\n\n return true;\n }\n}\n","// Helper function to decode JWT and extract claims\nexport const decodeJWT = (token: string) => {\n try {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(\n atob(base64)\n .split('')\n .map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\n .join(''),\n );\n return JSON.parse(jsonPayload);\n } catch (e) {\n return null;\n }\n};\n","const FORMULA_PREFIXES = ['=', '+', '-', '@', '\\t', '\\r'];\n\nconst sanitizeFormulaInjection = (str: string): string => {\n if (str.length > 0 && FORMULA_PREFIXES.includes(str[0])) {\n return `'${str}`;\n }\n return str;\n};\n\nexport const escapeCsvValue = (value: unknown): string => {\n const raw = Array.isArray(value) ? value.join('; ') : String(value ?? '');\n const str = sanitizeFormulaInjection(raw);\n if (\n str.includes(',') ||\n str.includes('\"') ||\n str.includes('\\n') ||\n str.includes('\\r')\n ) {\n return `\"${str.replace(/\"/g, '\"\"')}\"`;\n }\n return str;\n};\n\nexport const generateCsv = (\n records: Record<string, unknown>[],\n columns: { header: string; path: string }[],\n): string => {\n const header = columns.map((col) => escapeCsvValue(col.header)).join(',');\n const rows = records.map((record) =>\n columns.map((col) => escapeCsvValue(record[col.path])).join(','),\n );\n return [header, ...rows].join('\\n');\n};\n\nexport const downloadCsv = (csv: string, filename: string) => {\n const blob = new Blob(['\\uFEFF' + csv], { type: 'text/csv;charset=utf-8;' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute('download', filename);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n};\n","export type Locale = {\n locale: string;\n fallback: string;\n};\n\n/**\n * Resolves the user-facing locale, shared by the web-component flow runtime and the widget mixins\n * so both resolve locale identically.\n *\n * Order:\n * 1. Explicit locale argument (lowercased), used as its own fallback\n * 2. navigator.language (lowercased), with the language part as fallback for 'xx-YY' forms\n * 3. Empty strings\n */\nexport function getUserLocale(locale: string): Locale {\n if (locale) {\n return { locale: locale.toLowerCase(), fallback: locale.toLowerCase() };\n }\n const nl = navigator.language;\n if (!nl) {\n return { locale: '', fallback: '' };\n }\n\n if (nl.includes('-')) {\n return {\n locale: nl.toLowerCase(),\n fallback: nl.split('-')[0].toLowerCase(),\n };\n }\n\n return { locale: nl.toLowerCase(), fallback: nl.toLowerCase() };\n}\n"],"names":["compose","args","data","reduce","acc","elem","createTemplate","templateString","template","document","createElement","innerHTML","pathJoin","paths","join","replace","compareArrays","array1","array2","length","every","value","index","withMemCache","fn","prevArgs","cache","kebabCase","str","toLowerCase","isObjEmpty","obj","Object","keys","constructor","pluralize","amount","strings","expressions","idx","_a","debounce","ms","timeoutId","clearTimeout","setTimeout","apply","this","isPlainObject","getPrototypeOf","prototype","createSingletonMixin","mixin","mixinNameSym","Symbol","functionSource","toString","hash","i","charCodeAt","getFunctionHash","superclass","cls","compareObjects","objectA","objectB","aProperties","getOwnPropertyNames","bProperties","propName","valA","valB","State","init","forceUpdate","_State_state","set","_State_subscribers","_State_token","_State_forceUpdate","update","newState","internalNewState","__classPrivateFieldGet","nextState","prevState","__classPrivateFieldSet","freeze","values","forEach","cb","state","attrName","createIsChanged","current","assign","subscribe","unsubscribe","token","isFound","unsubscribeAll","decodeJWT","base64","split","jsonPayload","decodeURIComponent","atob","map","c","slice","JSON","parse","e","FORMULA_PREFIXES","escapeCsvValue","includes","sanitizeFormulaInjection","Array","isArray","String","generateCsv","records","columns","col","header","record","path","downloadCsv","csv","filename","blob","Blob","type","url","URL","createObjectURL","link","href","setAttribute","body","appendChild","click","removeChild","revokeObjectURL","getUserLocale","locale","fallback","nl","navigator","language"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/compose.ts","../src/dom.ts","../src/generic.ts","../src/createFlowTemplate.ts","../src/mixins.ts","../src/state.ts","../src/jwt.ts","../src/csv.ts","../src/locale.ts"],"sourcesContent":["type Fn = (arg: any) => any;\n\nexport function compose<Input, A1>(\n fn1: (input: Input) => A1,\n): (input: Input) => A1;\n\nexport function compose<Input, A1, A2>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n): (input: Input) => A2;\n\nexport function compose<Input, A1, A2, A3>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n): (input: Input) => A3;\n\nexport function compose<Input, A1, A2, A3, A4>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n): (input: Input) => A4;\n\nexport function compose<Input, A1, A2, A3, A4, A5>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n): (input: Input) => A5;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n): (input: Input) => A6;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n): (input: Input) => A7;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n): (input: Input) => A8;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8, A9>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n): (input: Input) => A9;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n): (input: Input) => A10;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n): (input: Input) => A11;\n\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n): (input: Input) => A12;\n\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n): (input: Input) => A13;\n\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n): (input: Input) => A14;\n\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n): (input: Input) => A15;\n\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n): (input: Input) => A16;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n): (input: Input) => A17;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n): (input: Input) => A18;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n): (input: Input) => A19;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n): (input: Input) => A20;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n): (input: Input) => A21;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n): (input: Input) => A22;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n): (input: Input) => A23;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n): (input: Input) => A24;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n): (input: Input) => A25;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n): (input: Input) => A26;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n): (input: Input) => A27;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n): (input: Input) => A28;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n): (input: Input) => A29;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n): (input: Input) => A30;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n): (input: Input) => A31;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n): (input: Input) => A32;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n): (input: Input) => A33;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n): (input: Input) => A34;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n): (input: Input) => A35;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n): (input: Input) => A36;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n): (input: Input) => A37;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n): (input: Input) => A38;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n): (input: Input) => A39;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n): (input: Input) => A40;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n): (input: Input) => A41;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n): (input: Input) => A42;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n): (input: Input) => A43;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n): (input: Input) => A44;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n): (input: Input) => A45;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n A46,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n fn46: (input: A45) => A46,\n): (input: Input) => A46;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n A46,\n A47,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n fn46: (input: A45) => A46,\n fn47: (input: A46) => A47,\n): (input: Input) => A47;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n A46,\n A47,\n A48,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n fn46: (input: A45) => A46,\n fn47: (input: A46) => A47,\n fn48: (input: A47) => A48,\n): (input: Input) => A48;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n A46,\n A47,\n A48,\n A49,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n fn46: (input: A45) => A46,\n fn47: (input: A46) => A47,\n fn48: (input: A47) => A48,\n fn49: (input: A48) => A49,\n): (input: Input) => A49;\nexport function compose<\n Input,\n A1,\n A2,\n A3,\n A4,\n A5,\n A6,\n A7,\n A8,\n A9,\n A10,\n A11,\n A12,\n A13,\n A14,\n A15,\n A16,\n A17,\n A18,\n A19,\n A20,\n A21,\n A22,\n A23,\n A24,\n A25,\n A26,\n A27,\n A28,\n A29,\n A30,\n A31,\n A32,\n A33,\n A34,\n A35,\n A36,\n A37,\n A38,\n A39,\n A40,\n A41,\n A42,\n A43,\n A44,\n A45,\n A46,\n A47,\n A48,\n A49,\n A50,\n>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10,\n fn11: (input: A10) => A11,\n fn12: (input: A11) => A12,\n fn13: (input: A12) => A13,\n fn14: (input: A13) => A14,\n fn15: (input: A14) => A15,\n fn16: (input: A15) => A16,\n fn17: (input: A16) => A17,\n fn18: (input: A17) => A18,\n fn19: (input: A18) => A19,\n fn20: (input: A19) => A20,\n fn21: (input: A20) => A21,\n fn22: (input: A21) => A22,\n fn23: (input: A22) => A23,\n fn24: (input: A23) => A24,\n fn25: (input: A24) => A25,\n fn26: (input: A25) => A26,\n fn27: (input: A26) => A27,\n fn28: (input: A27) => A28,\n fn29: (input: A28) => A29,\n fn30: (input: A29) => A30,\n fn31: (input: A30) => A31,\n fn32: (input: A31) => A32,\n fn33: (input: A32) => A33,\n fn34: (input: A33) => A34,\n fn35: (input: A34) => A35,\n fn36: (input: A35) => A36,\n fn37: (input: A36) => A37,\n fn38: (input: A37) => A38,\n fn39: (input: A38) => A39,\n fn40: (input: A39) => A40,\n fn41: (input: A40) => A41,\n fn42: (input: A41) => A42,\n fn43: (input: A42) => A43,\n fn44: (input: A43) => A44,\n fn45: (input: A44) => A45,\n fn46: (input: A45) => A46,\n fn47: (input: A46) => A47,\n fn48: (input: A47) => A48,\n fn49: (input: A48) => A49,\n fn50: (input: A49) => A50,\n): (input: Input) => A50;\n\n/**\n * Currently there is no way to create a compose function in Typescript without using overloading\n * This function currently support up to 50 wrappers\n * If needed you can add more by duplicating the type and add more parameters\n */\n\nexport function compose(...args: Fn[]) {\n return (data: any) => args.reduce((acc, elem) => elem(acc), data) as any;\n}\n","export const createTemplate = (templateString: string) => {\n const template = document.createElement('template');\n template.innerHTML = templateString;\n\n return template;\n};\n","// preventing duplicate separators\nexport const pathJoin = (...paths: string[]) =>\n paths.join('/').replace(/\\/+/g, '/');\n\nexport const compareArrays = (array1: any[], array2: any[]) =>\n array1.length === array2.length &&\n array1.every((value: any, index: number) => value === array2[index]);\n\nexport const withMemCache = <I extends any[], O>(fn: (...args: I) => O) => {\n let prevArgs: any[];\n let cache: any;\n return (...args: I) => {\n if (prevArgs && compareArrays(prevArgs, args)) return cache as O;\n\n prevArgs = args;\n cache = fn(...args);\n\n return cache as O;\n };\n};\n\nexport const kebabCase = (str: string) =>\n str\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_.]+/g, '-')\n .toLowerCase();\n\nexport const isObjEmpty = (obj: object) =>\n Object.keys(obj).length === 0 && obj.constructor === Object;\n\nexport const pluralize =\n (amount: number) =>\n (strings: TemplateStringsArray, ...expressions: (string | number)[][]) =>\n strings.reduce(\n (acc, str, idx) =>\n `${acc}${str}${expressions?.[idx]?.[amount > 1 ? 1 : 0] || ''}`,\n '',\n );\n\nexport const debounce = (fn: Function, ms = 500) => {\n let timeoutId: ReturnType<typeof setTimeout>;\n return function debounced(this: any, ...args: any[]) {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn.apply(this, args), ms);\n };\n};\n\nexport const isPlainObject = (obj: unknown) =>\n obj !== null &&\n typeof obj === 'object' &&\n Object.getPrototypeOf(obj) === Object.prototype;\n","import { createTemplate } from './dom';\nimport { isPlainObject, kebabCase } from './generic';\n\nconst stringifyValue = (value: unknown) => {\n if (typeof value === 'string') return value;\n if (isPlainObject(value)) return JSON.stringify(value);\n return '';\n};\n\nexport type FlowConfig = {\n projectId: string;\n flowId: string;\n baseUrl?: string;\n baseStaticUrl?: string;\n baseCdnUrl?: string;\n refreshCookieName?: string;\n theme?: string;\n 'style-id'?: string;\n locale?: string;\n // flow inputs - objects are JSON-stringified, strings pass through\n form?: Record<string, any> | string;\n client?: Record<string, any> | string;\n // widget-specific context\n tenant?: string;\n outboundAppId?: string;\n};\n\n/**\n * Builds a `<descope-wc>` flow template, mapping each config entry to a\n * kebab-cased attribute. Object values (e.g. `client` / `form` flow inputs) are\n * JSON-stringified; strings pass through. Shared by all widgets so a single\n * place controls how widget flows are started.\n */\nexport const createFlowTemplate = (\n flowConfig: FlowConfig = {} as FlowConfig,\n) => {\n const template = createTemplate(`<descope-wc></descope-wc>`);\n\n Object.entries(flowConfig).forEach(([key, value]) => {\n template.content\n .querySelector('descope-wc')\n .setAttribute(kebabCase(key), stringifyValue(value));\n });\n\n return template;\n};\n","const getFunctionHash = (fn: Function) => {\n const functionSource = fn.toString();\n\n let hash = 0;\n\n // eslint-disable-next-line no-plusplus\n for (let i = 0; i < functionSource.length; i++) {\n const char = functionSource.charCodeAt(i);\n // eslint-disable-next-line no-bitwise\n hash = (hash << 5) - hash + char;\n // eslint-disable-next-line no-bitwise\n hash &= hash; // Convert to 32-bit integer\n }\n\n return hash.toString(16);\n};\n\ntype Mixin = (superclass: CustomElementConstructor) => CustomElementConstructor;\n\n// because a single mixin can be a dependency for many other mixins, a mixin can be loaded multiple times\n// some mixins should not be loaded multiple times, wrapping a mixin with this fn ensures it will load only once\nexport const createSingletonMixin = <T extends Mixin>(mixin: T): T => {\n const mixinNameSym = Symbol(getFunctionHash(mixin));\n\n const singletonMixin = (superclass: CustomElementConstructor) => {\n if (superclass[mixinNameSym]) {\n return superclass;\n }\n\n const cls = mixin(superclass);\n cls[mixinNameSym] = true;\n\n return cls;\n };\n\n return singletonMixin as T;\n};\n","const createIsChanged =\n <T extends Record<string, any>>(state: T, prevState: T) =>\n (attrName: keyof T) =>\n state[attrName] !== prevState[attrName];\n\ntype StateObject = Record<string, any>;\n\ntype UpdateStateCb<T> = (state: T) => Partial<T>;\ntype Subscribers<T> = Record<string, SubscribeCb<T>>;\n\n// eslint-disable-next-line import/exports-last\nexport type SubscribeCb<T> = (\n state: T,\n prevState: T,\n isChanged: ReturnType<typeof createIsChanged>,\n) => void | Promise<void>;\n\nfunction compareObjects(\n objectA: Record<string, any>,\n objectB: Record<string, any>,\n) {\n const aProperties = Object.getOwnPropertyNames(objectA);\n const bProperties = Object.getOwnPropertyNames(objectB);\n\n if (aProperties.length !== bProperties.length) {\n return false;\n }\n\n for (let i = 0; i < aProperties.length; i += 1) {\n const propName = aProperties[i];\n\n const valA = objectA[propName];\n const valB = objectB[propName];\n if (valA === null || valB === null) {\n if (valA !== valB) {\n return false;\n }\n } else if (typeof valA === 'object' && typeof valB === 'object') {\n // compare nested objects\n if (!compareObjects(valA, valB)) {\n return false;\n }\n } else if (valA !== valB) {\n return false;\n }\n }\n\n return true;\n}\n\nexport type IsChanged<T> = Parameters<SubscribeCb<T>>[2];\n\nexport class State<T extends StateObject> {\n #state: T;\n\n #subscribers: Subscribers<T> = {};\n\n #token = 0;\n\n #forceUpdate = true;\n\n constructor(init: T = {} as T, { forceUpdate = false } = {}) {\n this.#state = init;\n this.#forceUpdate = forceUpdate;\n }\n\n get current() {\n return { ...this.#state };\n }\n\n update = (newState: Partial<T> | UpdateStateCb<T>) => {\n const internalNewState =\n typeof newState === 'function' ? newState(this.#state) : newState;\n\n const nextState = { ...this.#state, ...internalNewState };\n if (this.#forceUpdate || !compareObjects(this.#state, nextState)) {\n const prevState = this.#state;\n this.#state = nextState;\n Object.freeze(this.#state);\n\n setTimeout(() => {\n Object.values(this.#subscribers).forEach((cb) =>\n cb(nextState, prevState, createIsChanged(nextState, prevState)),\n );\n }, 0);\n }\n };\n\n subscribe(cb: SubscribeCb<T>) {\n this.#token += 1;\n this.#subscribers[this.#token] = cb;\n\n return this.#token.toString();\n }\n\n unsubscribe(token: string) {\n const isFound = !!this.#subscribers[token];\n\n if (isFound) {\n delete this.#subscribers[token];\n }\n\n return isFound;\n }\n\n unsubscribeAll() {\n this.#subscribers = {};\n\n return true;\n }\n}\n","// Helper function to decode JWT and extract claims\nexport const decodeJWT = (token: string) => {\n try {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(\n atob(base64)\n .split('')\n .map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\n .join(''),\n );\n return JSON.parse(jsonPayload);\n } catch (e) {\n return null;\n }\n};\n","const FORMULA_PREFIXES = ['=', '+', '-', '@', '\\t', '\\r'];\n\nconst sanitizeFormulaInjection = (str: string): string => {\n if (str.length > 0 && FORMULA_PREFIXES.includes(str[0])) {\n return `'${str}`;\n }\n return str;\n};\n\nexport const escapeCsvValue = (value: unknown): string => {\n const raw = Array.isArray(value) ? value.join('; ') : String(value ?? '');\n const str = sanitizeFormulaInjection(raw);\n if (\n str.includes(',') ||\n str.includes('\"') ||\n str.includes('\\n') ||\n str.includes('\\r')\n ) {\n return `\"${str.replace(/\"/g, '\"\"')}\"`;\n }\n return str;\n};\n\nexport const generateCsv = (\n records: Record<string, unknown>[],\n columns: { header: string; path: string }[],\n): string => {\n const header = columns.map((col) => escapeCsvValue(col.header)).join(',');\n const rows = records.map((record) =>\n columns.map((col) => escapeCsvValue(record[col.path])).join(','),\n );\n return [header, ...rows].join('\\n');\n};\n\nexport const downloadCsv = (csv: string, filename: string) => {\n const blob = new Blob(['\\uFEFF' + csv], { type: 'text/csv;charset=utf-8;' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute('download', filename);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n};\n","export type Locale = {\n locale: string;\n fallback: string;\n};\n\n/**\n * Resolves the user-facing locale, shared by the web-component flow runtime and the widget mixins\n * so both resolve locale identically.\n *\n * Order:\n * 1. Explicit locale argument (lowercased), used as its own fallback\n * 2. navigator.language (lowercased), with the language part as fallback for 'xx-YY' forms\n * 3. Empty strings\n */\nexport function getUserLocale(locale: string): Locale {\n if (locale) {\n return { locale: locale.toLowerCase(), fallback: locale.toLowerCase() };\n }\n const nl = navigator.language;\n if (!nl) {\n return { locale: '', fallback: '' };\n }\n\n if (nl.includes('-')) {\n return {\n locale: nl.toLowerCase(),\n fallback: nl.split('-')[0].toLowerCase(),\n };\n }\n\n return { locale: nl.toLowerCase(), fallback: nl.toLowerCase() };\n}\n"],"names":["compose","args","data","reduce","acc","elem","createTemplate","templateString","template","document","createElement","innerHTML","pathJoin","paths","join","replace","compareArrays","array1","array2","length","every","value","index","withMemCache","fn","prevArgs","cache","kebabCase","str","toLowerCase","isObjEmpty","obj","Object","keys","constructor","pluralize","amount","strings","expressions","idx","_a","debounce","ms","timeoutId","clearTimeout","setTimeout","apply","this","isPlainObject","getPrototypeOf","prototype","createFlowTemplate","flowConfig","entries","forEach","key","content","querySelector","setAttribute","JSON","stringify","stringifyValue","createSingletonMixin","mixin","mixinNameSym","Symbol","functionSource","toString","hash","i","charCodeAt","getFunctionHash","superclass","cls","compareObjects","objectA","objectB","aProperties","getOwnPropertyNames","bProperties","propName","valA","valB","State","init","forceUpdate","_State_state","set","_State_subscribers","_State_token","_State_forceUpdate","update","newState","internalNewState","__classPrivateFieldGet","nextState","prevState","__classPrivateFieldSet","freeze","values","cb","state","attrName","createIsChanged","current","assign","subscribe","unsubscribe","token","isFound","unsubscribeAll","decodeJWT","base64","split","jsonPayload","decodeURIComponent","atob","map","c","slice","parse","e","FORMULA_PREFIXES","escapeCsvValue","includes","sanitizeFormulaInjection","Array","isArray","String","generateCsv","records","columns","col","header","record","path","downloadCsv","csv","filename","blob","Blob","type","url","URL","createObjectURL","link","href","body","appendChild","click","removeChild","revokeObjectURL","getUserLocale","locale","fallback","nl","navigator","language"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@descope/sdk-helpers",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "author": "Descope Team <info@descope.com>",
5
5
  "homepage": "https://github.com/descope/sdk-helpers",
6
6
  "bugs": {