{"version":3,"file":"compose.cjs","sources":["../../src/compose.ts"],"sourcesContent":["import { Props, Request } from './types'\n\ntype AttributesOnly<T> = {\n  [P in keyof T as P extends 'prototype' ? never : P]: T[P]\n}\n\ntype MergeProps<T extends Props[]> = Props<\n  UnionToIntersection<T[number]['args']> extends infer A\n    ? A extends {}\n      ? A\n      : {}\n    : {},\n  UnionToIntersection<T[number]['services']> extends infer B\n    ? B extends {}\n      ? B\n      : {}\n    : {},\n  UnionToIntersection<T[number]['auth']> extends infer C\n    ? C extends {}\n      ? C\n      : {}\n    : {},\n  UnionToIntersection<T[number]['request']> extends infer D\n    ? D extends Request\n      ? D\n      : Request\n    : Request,\n  UnionToIntersection<T[number]['framework']> extends infer E\n    ? E extends {}\n      ? E\n      : {}\n    : {}\n>\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (\n  k: infer I\n) => void\n  ? I\n  : never\n\n//\n// Generic Type Name Legend\n//\n// R = Root\n// H = Hook\n// E = Endpoint\n//\n// I = Input\n// O = Output\n//\n// A = Arg\n// P = Props\n// R = Return\n// F = Function\n//\n// RA = Root Args\n// ROP = Root Output Props\n// RR = Root Results\n// H1IP = Hook 1 Input Props\n// ER = Endpoint Result\n// H3R = Hook 3 Result\n// H3RF = Hook 3 Return Function\n\nexport function compose<\n  RA extends Array<any>,\n  ROP extends Props,\n  RRF extends { (...args: RA): Promise<any> },\n  ER,\n  EF extends (props: ROP) => any\n>(\n  r: (func: (props: ROP) => any) => RRF,\n  e: EF\n): RRF & { endpoint: EF } & AttributesOnly<EF> & { _props: ROP }\n\nexport function compose<\n  RA extends Array<any>,\n  ROP extends Props,\n  RRF extends { (...args: RA): Promise<any> },\n  H1IP extends Props,\n  H1OP extends Props,\n  H1RF extends (props: ROP extends H1IP ? H1IP : never) => Promise<H1R>,\n  H1R,\n  ER,\n  EF extends (props: MergeProps<[ROP, H1OP]>) => any\n>(\n  r: (func: (props: ROP) => Promise<any>) => RRF,\n  h1: (func: (props: H1OP) => Promise<any>) => H1RF,\n  e: EF\n): RRF & { endpoint: EF } & AttributesOnly<EF> &\n  AttributesOnly<H1RF> & { _props: MergeProps<[ROP, H1OP]> }\n\nexport function compose<\n  RA extends Array<any>,\n  ROP extends Props,\n  RRF extends { (...args: RA): Promise<any> },\n  H1IP extends Props,\n  H1OP extends Props,\n  H1RF extends (props: ROP extends H1IP ? H1IP : never) => Promise<any>,\n  H2IP extends Props,\n  H2OP extends Props,\n  H2RF extends (props: H1IP extends H2IP ? H2IP : never) => Promise<any>,\n  ER,\n  EF extends (props: MergeProps<[ROP, H1OP, H2OP]>) => any\n>(\n  r: (func: (props: ROP) => any) => RRF,\n  h1: (func: (props: H1OP) => any) => H1RF,\n  h2: (func: (props: H2OP) => any) => H2RF,\n  e: EF\n): RRF & { endpoint: EF } & AttributesOnly<EF> &\n  AttributesOnly<H1RF> &\n  AttributesOnly<H2RF> & { _props: MergeProps<[ROP, H1OP, H2OP]> }\n\nexport function compose<\n  RA extends Array<any>,\n  ROP extends Props,\n  RRF extends { (...args: RA): Promise<any> },\n  H1IP extends Props,\n  H1OP extends Props,\n  H1RF extends (props: ROP extends H1IP ? H1IP : never) => Promise<any>,\n  H2IP extends Props,\n  H2OP extends Props,\n  H2RF extends (props: H1IP extends H2IP ? H2IP : never) => Promise<any>,\n  H3IP extends Props,\n  H3OP extends Props,\n  H3RF extends (props: H2IP extends H3IP ? H3IP : never) => Promise<any>,\n  ER,\n  EF extends (props: MergeProps<[ROP, H1OP, H2OP, H3OP]>) => any\n>(\n  r: (func: (props: ROP) => any) => RRF,\n  h1: (func: (props: H1OP) => any) => H1RF,\n  h2: (func: (props: H2OP) => any) => H2RF,\n  h3: (func: (props: H3OP) => any) => H3RF,\n  e: EF\n): RRF & { endpoint: EF } & AttributesOnly<EF> &\n  AttributesOnly<H1RF> &\n  AttributesOnly<H2RF> &\n  AttributesOnly<H3RF> & { _props: MergeProps<[ROP, H1OP, H2OP, H3OP]> }\n\nexport function compose<\n  RA extends Array<any>,\n  ROP extends Props,\n  RRF extends { (...args: RA): Promise<any> },\n  H1IP extends Props,\n  H1OP extends Props,\n  H1RF extends (props: ROP extends H1IP ? H1IP : never) => Promise<any>,\n  H2IP extends Props,\n  H2OP extends Props,\n  H2RF extends (props: H1IP extends H2IP ? H2IP : never) => Promise<any>,\n  H3IP extends Props,\n  H3OP extends Props,\n  H3RF extends (props: H2IP extends H3IP ? H3IP : never) => Promise<any>,\n  H4IP extends Props,\n  H4OP extends Props,\n  H4RF extends (props: H3IP extends H4IP ? H4IP : never) => Promise<any>,\n  ER,\n  EF extends (props: MergeProps<[ROP, H1OP, H2OP, H3OP, H4OP]>) => any\n>(\n  r: (func: (props: ROP) => any) => RRF,\n  h1: (func: (props: H1OP) => any) => H1RF,\n  h2: (func: (props: H2OP) => any) => H2RF,\n  h3: (func: (props: H3OP) => any) => H3RF,\n  h4: (func: (props: H4OP) => any) => H4RF,\n  e: EF\n): RRF & { endpoint: EF } & AttributesOnly<EF> &\n  AttributesOnly<H1RF> &\n  AttributesOnly<H2RF> &\n  AttributesOnly<H3RF> &\n  AttributesOnly<H4RF> & { _props: MergeProps<[ROP, H1OP, H2OP, H3OP, H4OP]> }\n\nexport function compose<\n  RA extends Array<any>,\n  ROP extends Props,\n  RRF extends { (...args: RA): Promise<any> },\n  H1IP extends Props,\n  H1OP extends Props,\n  H1RF extends (props: ROP extends H1IP ? H1IP : never) => Promise<any>,\n  H2IP extends Props,\n  H2OP extends Props,\n  H2RF extends (props: H1IP extends H2IP ? H2IP : never) => Promise<any>,\n  H3IP extends Props,\n  H3OP extends Props,\n  H3RF extends (props: H2IP extends H3IP ? H3IP : never) => Promise<any>,\n  H4IP extends Props,\n  H4OP extends Props,\n  H4RF extends (props: H3IP extends H4IP ? H4IP : never) => Promise<any>,\n  H5IP extends Props,\n  H5OP extends Props,\n  H5RF extends (props: H4IP extends H5IP ? H5IP : never) => Promise<any>,\n  ER,\n  EF extends (props: MergeProps<[ROP, H1OP, H2OP, H3OP, H4OP, H5OP]>) => any\n>(\n  r: (func: (props: ROP) => any) => RRF,\n  h1: (func: (props: H1OP) => any) => H1RF,\n  h2: (func: (props: H2OP) => any) => H2RF,\n  h3: (func: (props: H3OP) => any) => H3RF,\n  h4: (func: (props: H4OP) => any) => H4RF,\n  h5: (func: (props: H5OP) => any) => H5RF,\n  e: EF\n): RRF & { endpoint: EF } & AttributesOnly<EF> &\n  AttributesOnly<H1RF> &\n  AttributesOnly<H2RF> &\n  AttributesOnly<H3RF> &\n  AttributesOnly<H4RF> &\n  AttributesOnly<H5RF> & {\n    _props: MergeProps<[ROP, H1OP, H2OP, H3OP, H4OP, H5OP]>\n  }\n\nexport function compose<\n  RA extends Array<any>,\n  ROP extends Props,\n  RRF extends { (...args: RA): Promise<any> },\n  H1IP extends Props,\n  H1OP extends Props,\n  H1RF extends (props: ROP extends H1IP ? H1IP : never) => Promise<any>,\n  H2IP extends Props,\n  H2OP extends Props,\n  H2RF extends (props: H1IP extends H2IP ? H2IP : never) => Promise<any>,\n  H3IP extends Props,\n  H3OP extends Props,\n  H3RF extends (props: H2IP extends H3IP ? H3IP : never) => Promise<any>,\n  H4IP extends Props,\n  H4OP extends Props,\n  H4RF extends (props: H3IP extends H4IP ? H4IP : never) => Promise<any>,\n  H5IP extends Props,\n  H5OP extends Props,\n  H5RF extends (props: H4IP extends H5IP ? H5IP : never) => Promise<any>,\n  H6IP extends Props,\n  H6OP extends Props,\n  H6RF extends (props: H5IP extends H6IP ? H6IP : never) => Promise<any>,\n  ER,\n  EF extends (\n    props: MergeProps<[ROP, H1OP, H2OP, H3OP, H4OP, H5OP, H6OP]>\n  ) => any\n>(\n  r: (func: (props: ROP) => any) => RRF,\n  h1: (func: (props: H1OP) => any) => H1RF,\n  h2: (func: (props: H2OP) => any) => H2RF,\n  h3: (func: (props: H3OP) => any) => H3RF,\n  h4: (func: (props: H4OP) => any) => H4RF,\n  h5: (func: (props: H5OP) => any) => H5RF,\n  h6: (func: (props: H6OP) => any) => H6RF,\n  e: EF\n): RRF & { endpoint: EF } & AttributesOnly<EF> &\n  AttributesOnly<H1RF> &\n  AttributesOnly<H2RF> &\n  AttributesOnly<H3RF> &\n  AttributesOnly<H4RF> &\n  AttributesOnly<H5RF> &\n  AttributesOnly<H6RF> & {\n    _props: MergeProps<[ROP, H1OP, H2OP, H3OP, H4OP, H5OP, H6OP]>\n  }\n\nexport function compose<\n  RA extends Array<any>,\n  ROP extends Props,\n  RRF extends { (...args: RA): Promise<any> },\n  H1IP extends Props,\n  H1OP extends Props,\n  H1RF extends (props: ROP extends H1IP ? H1IP : never) => Promise<any>,\n  H2IP extends Props,\n  H2OP extends Props,\n  H2RF extends (props: H1IP extends H2IP ? H2IP : never) => Promise<any>,\n  H3IP extends Props,\n  H3OP extends Props,\n  H3RF extends (props: H2IP extends H3IP ? H3IP : never) => Promise<any>,\n  H4IP extends Props,\n  H4OP extends Props,\n  H4RF extends (props: H3IP extends H4IP ? H4IP : never) => Promise<any>,\n  H5IP extends Props,\n  H5OP extends Props,\n  H5RF extends (props: H4IP extends H5IP ? H5IP : never) => Promise<any>,\n  H6IP extends Props,\n  H6OP extends Props,\n  H6RF extends (props: H5IP extends H6IP ? H6IP : never) => Promise<any>,\n  H7IP extends Props,\n  H7OP extends Props,\n  H7RF extends (props: H6IP extends H7IP ? H7IP : never) => Promise<any>,\n  ER,\n  EF extends (\n    props: MergeProps<[ROP, H1OP, H2OP, H3OP, H4OP, H5OP, H6OP, H7OP]>\n  ) => any\n>(\n  r: (func: (props: ROP) => any) => RRF,\n  h1: (func: (props: H1OP) => any) => H1RF,\n  h2: (func: (props: H2OP) => any) => H2RF,\n  h3: (func: (props: H3OP) => any) => H3RF,\n  h4: (func: (props: H4OP) => any) => H4RF,\n  h5: (func: (props: H5OP) => any) => H5RF,\n  h6: (func: (props: H6OP) => any) => H6RF,\n  h7: (func: (props: H7OP) => any) => H7RF,\n  e: EF\n): RRF & { endpoint: EF } & AttributesOnly<EF> &\n  AttributesOnly<H1RF> &\n  AttributesOnly<H2RF> &\n  AttributesOnly<H3RF> &\n  AttributesOnly<H4RF> &\n  AttributesOnly<H5RF> &\n  AttributesOnly<H6RF> &\n  AttributesOnly<H7RF> & {\n    _props: MergeProps<[ROP, H1OP, H2OP, H3OP, H4OP, H5OP, H6OP, H7OP]>\n  }\n\nexport function compose<\n  RA extends Array<any>,\n  ROP extends Props,\n  RRF extends { (...args: RA): Promise<any> },\n  H1IP extends Props,\n  H1OP extends Props,\n  H1RF extends (props: ROP extends H1IP ? H1IP : never) => Promise<any>,\n  H2IP extends Props,\n  H2OP extends Props,\n  H2RF extends (props: H1IP extends H2IP ? H2IP : never) => Promise<any>,\n  H3IP extends Props,\n  H3OP extends Props,\n  H3RF extends (props: H2IP extends H3IP ? H3IP : never) => Promise<any>,\n  H4IP extends Props,\n  H4OP extends Props,\n  H4RF extends (props: H3IP extends H4IP ? H4IP : never) => Promise<any>,\n  H5IP extends Props,\n  H5OP extends Props,\n  H5RF extends (props: H4IP extends H5IP ? H5IP : never) => Promise<any>,\n  H6IP extends Props,\n  H6OP extends Props,\n  H6RF extends (props: H5IP extends H6IP ? H6IP : never) => Promise<any>,\n  H7IP extends Props,\n  H7OP extends Props,\n  H7RF extends (props: H6IP extends H7IP ? H7IP : never) => Promise<any>,\n  H8IP extends Props,\n  H8OP extends Props,\n  H8RF extends (props: H7IP extends H8IP ? H8IP : never) => Promise<any>,\n  ER,\n  EF extends (\n    props: MergeProps<[ROP, H1OP, H2OP, H3OP, H4OP, H5OP, H6OP, H7OP, H8OP]>\n  ) => any\n>(\n  r: (func: (props: ROP) => any) => RRF,\n  h1: (func: (props: H1OP) => any) => H1RF,\n  h2: (func: (props: H2OP) => any) => H2RF,\n  h3: (func: (props: H3OP) => any) => H3RF,\n  h4: (func: (props: H4OP) => any) => H4RF,\n  h5: (func: (props: H5OP) => any) => H5RF,\n  h6: (func: (props: H6OP) => any) => H6RF,\n  h7: (func: (props: H7OP) => any) => H7RF,\n  h8: (func: (props: H8OP) => any) => H8RF,\n  e: EF\n): RRF & { endpoint: EF } & AttributesOnly<EF> &\n  AttributesOnly<H1RF> &\n  AttributesOnly<H2RF> &\n  AttributesOnly<H3RF> &\n  AttributesOnly<H4RF> &\n  AttributesOnly<H5RF> &\n  AttributesOnly<H6RF> &\n  AttributesOnly<H7RF> &\n  AttributesOnly<H8RF> & {\n    _props: MergeProps<[ROP, H1OP, H2OP, H3OP, H4OP, H5OP, H6OP, H7OP, H8OP]>\n  }\n\nexport function compose<\n  RA extends Array<any>,\n  ROP extends Props,\n  RRF extends { (...args: RA): Promise<any> },\n  H1IP extends Props,\n  H1OP extends Props,\n  H1RF extends (props: ROP extends H1IP ? H1IP : never) => Promise<any>,\n  H2IP extends Props,\n  H2OP extends Props,\n  H2RF extends (props: H1IP extends H2IP ? H2IP : never) => Promise<any>,\n  H3IP extends Props,\n  H3OP extends Props,\n  H3RF extends (props: H2IP extends H3IP ? H3IP : never) => Promise<any>,\n  H4IP extends Props,\n  H4OP extends Props,\n  H4RF extends (props: H3IP extends H4IP ? H4IP : never) => Promise<any>,\n  H5IP extends Props,\n  H5OP extends Props,\n  H5RF extends (props: H4IP extends H5IP ? H5IP : never) => Promise<any>,\n  H6IP extends Props,\n  H6OP extends Props,\n  H6RF extends (props: H5IP extends H6IP ? H6IP : never) => Promise<any>,\n  H7IP extends Props,\n  H7OP extends Props,\n  H7RF extends (props: H6IP extends H7IP ? H7IP : never) => Promise<any>,\n  H8IP extends Props,\n  H8OP extends Props,\n  H8RF extends (props: H7IP extends H8IP ? H8IP : never) => Promise<any>,\n  H9IP extends Props,\n  H9OP extends Props,\n  H9RF extends (props: H8IP extends H9IP ? H9IP : never) => Promise<any>,\n  ER,\n  EF extends (\n    props: MergeProps<\n      [ROP, H1OP, H2OP, H3OP, H4OP, H5OP, H6OP, H7OP, H8OP, H9OP]\n    >\n  ) => any\n>(\n  r: (func: (props: ROP) => any) => RRF,\n  h1: (func: (props: H1OP) => any) => H1RF,\n  h2: (func: (props: H2OP) => any) => H2RF,\n  h3: (func: (props: H3OP) => any) => H3RF,\n  h4: (func: (props: H4OP) => any) => H4RF,\n  h5: (func: (props: H5OP) => any) => H5RF,\n  h6: (func: (props: H6OP) => any) => H6RF,\n  h7: (func: (props: H7OP) => any) => H7RF,\n  h8: (func: (props: H8OP) => any) => H8RF,\n  h9: (func: (props: H9OP) => any) => H9RF,\n  e: EF\n): RRF & { endpoint: EF } & AttributesOnly<EF> &\n  AttributesOnly<H1RF> &\n  AttributesOnly<H2RF> &\n  AttributesOnly<H3RF> &\n  AttributesOnly<H4RF> &\n  AttributesOnly<H5RF> &\n  AttributesOnly<H6RF> &\n  AttributesOnly<H7RF> &\n  AttributesOnly<H8RF> &\n  AttributesOnly<H9RF> & {\n    _props: MergeProps<\n      [ROP, H1OP, H2OP, H3OP, H4OP, H5OP, H6OP, H7OP, H8OP, H9OP]\n    >\n  }\n\nexport function compose<\n  RA extends Array<any>,\n  ROP extends Props,\n  RRF extends { (...args: RA): Promise<any> },\n  H1IP extends Props,\n  H1OP extends Props,\n  H1RF extends (props: ROP extends H1IP ? H1IP : never) => Promise<any>,\n  H2IP extends Props,\n  H2OP extends Props,\n  H2RF extends (props: H1IP extends H2IP ? H2IP : never) => Promise<any>,\n  H3IP extends Props,\n  H3OP extends Props,\n  H3RF extends (props: H2IP extends H3IP ? H3IP : never) => Promise<any>,\n  H4IP extends Props,\n  H4OP extends Props,\n  H4RF extends (props: H3IP extends H4IP ? H4IP : never) => Promise<any>,\n  H5IP extends Props,\n  H5OP extends Props,\n  H5RF extends (props: H4IP extends H5IP ? H5IP : never) => Promise<any>,\n  H6IP extends Props,\n  H6OP extends Props,\n  H6RF extends (props: H5IP extends H6IP ? H6IP : never) => Promise<any>,\n  H7IP extends Props,\n  H7OP extends Props,\n  H7RF extends (props: H6IP extends H7IP ? H7IP : never) => Promise<any>,\n  H8IP extends Props,\n  H8OP extends Props,\n  H8RF extends (props: H7IP extends H8IP ? H8IP : never) => Promise<any>,\n  H9IP extends Props,\n  H9OP extends Props,\n  H9RF extends (props: H8IP extends H9IP ? H9IP : never) => Promise<any>,\n  H10IP extends Props,\n  H10OP extends Props,\n  H10RF extends (props: H9IP extends H10IP ? H10IP : never) => Promise<any>,\n  ER,\n  EF extends (\n    props: MergeProps<\n      [ROP, H1OP, H2OP, H3OP, H4OP, H5OP, H6OP, H7OP, H8OP, H9OP, H10OP]\n    >\n  ) => any\n>(\n  r: (func: (props: ROP) => any) => RRF,\n  h1: (func: (props: H1OP) => any) => H1RF,\n  h2: (func: (props: H2OP) => any) => H2RF,\n  h3: (func: (props: H3OP) => any) => H3RF,\n  h4: (func: (props: H4OP) => any) => H4RF,\n  h5: (func: (props: H5OP) => any) => H5RF,\n  h6: (func: (props: H6OP) => any) => H6RF,\n  h7: (func: (props: H7OP) => any) => H7RF,\n  h8: (func: (props: H8OP) => any) => H8RF,\n  h9: (func: (props: H9OP) => any) => H9RF,\n  h10: (func: (props: H10OP) => any) => H10RF,\n  e: EF\n): RRF & { endpoint: EF } & AttributesOnly<EF> &\n  AttributesOnly<H1RF> &\n  AttributesOnly<H2RF> &\n  AttributesOnly<H3RF> &\n  AttributesOnly<H4RF> &\n  AttributesOnly<H5RF> &\n  AttributesOnly<H6RF> &\n  AttributesOnly<H7RF> &\n  AttributesOnly<H8RF> &\n  AttributesOnly<H9RF> &\n  AttributesOnly<H10RF> & {\n    _props: MergeProps<\n      [ROP, H1OP, H2OP, H3OP, H4OP, H5OP, H6OP, H7OP, H8OP, H9OP, H10OP]\n    >\n  }\n\nexport function compose<\n  RA extends Array<any>,\n  ROP extends Props,\n  RRF extends { (...args: RA): Promise<any> },\n  H1IP extends Props,\n  H1OP extends Props,\n  H1RF extends (props: ROP extends H1IP ? H1IP : never) => Promise<any>,\n  H2IP extends Props,\n  H2OP extends Props,\n  H2RF extends (props: H1IP extends H2IP ? H2IP : never) => Promise<any>,\n  H3IP extends Props,\n  H3OP extends Props,\n  H3RF extends (props: H2IP extends H3IP ? H3IP : never) => Promise<any>,\n  H4IP extends Props,\n  H4OP extends Props,\n  H4RF extends (props: H3IP extends H4IP ? H4IP : never) => Promise<any>,\n  H5IP extends Props,\n  H5OP extends Props,\n  H5RF extends (props: H4IP extends H5IP ? H5IP : never) => Promise<any>,\n  H6IP extends Props,\n  H6OP extends Props,\n  H6RF extends (props: H5IP extends H6IP ? H6IP : never) => Promise<any>,\n  H7IP extends Props,\n  H7OP extends Props,\n  H7RF extends (props: H6IP extends H7IP ? H7IP : never) => Promise<any>,\n  H8IP extends Props,\n  H8OP extends Props,\n  H8RF extends (props: H7IP extends H8IP ? H8IP : never) => Promise<any>,\n  H9IP extends Props,\n  H9OP extends Props,\n  H9RF extends (props: H8IP extends H9IP ? H9IP : never) => Promise<any>,\n  H10IP extends Props,\n  H10OP extends Props,\n  H10RF extends (props: H9IP extends H10IP ? H10IP : never) => Promise<any>,\n  H11IP extends Props,\n  H11OP extends Props,\n  H11RF extends (props: H10IP extends H11IP ? H11IP : never) => Promise<any>,\n  ER,\n  EF extends (\n    props: MergeProps<\n      [ROP, H1OP, H2OP, H3OP, H4OP, H5OP, H6OP, H7OP, H8OP, H9OP, H10OP, H11OP]\n    >\n  ) => any\n>(\n  r: (func: (props: ROP) => any) => RRF,\n  h1: (func: (props: H1OP) => any) => H1RF,\n  h2: (func: (props: H2OP) => any) => H2RF,\n  h3: (func: (props: H3OP) => any) => H3RF,\n  h4: (func: (props: H4OP) => any) => H4RF,\n  h5: (func: (props: H5OP) => any) => H5RF,\n  h6: (func: (props: H6OP) => any) => H6RF,\n  h7: (func: (props: H7OP) => any) => H7RF,\n  h8: (func: (props: H8OP) => any) => H8RF,\n  h9: (func: (props: H9OP) => any) => H9RF,\n  h10: (func: (props: H10OP) => any) => H10RF,\n  h11: (func: (props: H11OP) => any) => H11RF,\n  e: EF\n): RRF & { endpoint: EF } & AttributesOnly<EF> &\n  AttributesOnly<H1RF> &\n  AttributesOnly<H2RF> &\n  AttributesOnly<H3RF> &\n  AttributesOnly<H4RF> &\n  AttributesOnly<H5RF> &\n  AttributesOnly<H6RF> &\n  AttributesOnly<H7RF> &\n  AttributesOnly<H8RF> &\n  AttributesOnly<H9RF> &\n  AttributesOnly<H10RF> &\n  AttributesOnly<H11RF> & {\n    _props: MergeProps<\n      [ROP, H1OP, H2OP, H3OP, H4OP, H5OP, H6OP, H7OP, H8OP, H9OP, H10OP, H11OP]\n    >\n  }\n\nexport function compose<\n  RA extends Array<any>,\n  ROP extends Props,\n  RRF extends { (...args: RA): Promise<any> },\n  H1IP extends Props,\n  H1OP extends Props,\n  H1RF extends (props: ROP extends H1IP ? H1IP : never) => Promise<any>,\n  H2IP extends Props,\n  H2OP extends Props,\n  H2RF extends (props: H1IP extends H2IP ? H2IP : never) => Promise<any>,\n  H3IP extends Props,\n  H3OP extends Props,\n  H3RF extends (props: H2IP extends H3IP ? H3IP : never) => Promise<any>,\n  H4IP extends Props,\n  H4OP extends Props,\n  H4RF extends (props: H3IP extends H4IP ? H4IP : never) => Promise<any>,\n  H5IP extends Props,\n  H5OP extends Props,\n  H5RF extends (props: H4IP extends H5IP ? H5IP : never) => Promise<any>,\n  H6IP extends Props,\n  H6OP extends Props,\n  H6RF extends (props: H5IP extends H6IP ? H6IP : never) => Promise<any>,\n  H7IP extends Props,\n  H7OP extends Props,\n  H7RF extends (props: H6IP extends H7IP ? H7IP : never) => Promise<any>,\n  H8IP extends Props,\n  H8OP extends Props,\n  H8RF extends (props: H7IP extends H8IP ? H8IP : never) => Promise<any>,\n  H9IP extends Props,\n  H9OP extends Props,\n  H9RF extends (props: H8IP extends H9IP ? H9IP : never) => Promise<any>,\n  H10IP extends Props,\n  H10OP extends Props,\n  H10RF extends (props: H9IP extends H10IP ? H10IP : never) => Promise<any>,\n  H11IP extends Props,\n  H11OP extends Props,\n  H11RF extends (props: H10IP extends H11IP ? H11IP : never) => Promise<any>,\n  H12IP extends Props,\n  H12OP extends Props,\n  H12RF extends (props: H11IP extends H12IP ? H12IP : never) => Promise<any>,\n  ER,\n  EF extends (\n    props: MergeProps<\n      [\n        ROP,\n        H1OP,\n        H2OP,\n        H3OP,\n        H4OP,\n        H5OP,\n        H6OP,\n        H7OP,\n        H8OP,\n        H9OP,\n        H10OP,\n        H11OP,\n        H12OP\n      ]\n    >\n  ) => any\n>(\n  r: (func: (props: ROP) => any) => RRF,\n  h1: (func: (props: H1OP) => any) => H1RF,\n  h2: (func: (props: H2OP) => any) => H2RF,\n  h3: (func: (props: H3OP) => any) => H3RF,\n  h4: (func: (props: H4OP) => any) => H4RF,\n  h5: (func: (props: H5OP) => any) => H5RF,\n  h6: (func: (props: H6OP) => any) => H6RF,\n  h7: (func: (props: H7OP) => any) => H7RF,\n  h8: (func: (props: H8OP) => any) => H8RF,\n  h9: (func: (props: H9OP) => any) => H9RF,\n  h10: (func: (props: H10OP) => any) => H10RF,\n  h11: (func: (props: H11OP) => any) => H11RF,\n  h12: (func: (props: H12OP) => any) => H12RF,\n  e: EF\n): RRF & { endpoint: EF } & AttributesOnly<EF> &\n  AttributesOnly<H1RF> &\n  AttributesOnly<H2RF> &\n  AttributesOnly<H3RF> &\n  AttributesOnly<H4RF> &\n  AttributesOnly<H5RF> &\n  AttributesOnly<H6RF> &\n  AttributesOnly<H7RF> &\n  AttributesOnly<H8RF> &\n  AttributesOnly<H9RF> &\n  AttributesOnly<H10RF> &\n  AttributesOnly<H11RF> &\n  AttributesOnly<H12RF> & {\n    _props: MergeProps<\n      [\n        ROP,\n        H1OP,\n        H2OP,\n        H3OP,\n        H4OP,\n        H5OP,\n        H6OP,\n        H7OP,\n        H8OP,\n        H9OP,\n        H10OP,\n        H11OP,\n        H12OP\n      ]\n    >\n  }\n\nexport function compose(...funcs: Function[]): Function {\n  const result: any = funcs.reverse().reduce((acc, fn) => {\n    const next = fn(acc)\n    Object.keys(acc).forEach(key => {\n      next[key] = (acc as any)[key]\n    })\n    return next\n  })\n  result.endpoint = funcs[0]\n  return result\n}\n"],"names":[],"mappings":";;AA+pBO,SAAS,WAAW,KAA6B,EAAA;AACtD,EAAA,MAAM,SAAc,KAAM,CAAA,OAAA,GAAU,MAAO,CAAA,CAAC,KAAK,EAAO,KAAA;AACtD,IAAM,MAAA,IAAA,GAAO,GAAG,GAAG,CAAA,CAAA;AACnB,IAAA,MAAA,CAAO,IAAK,CAAA,GAAG,CAAE,CAAA,OAAA,CAAQ,CAAO,GAAA,KAAA;AAC9B,MAAA,IAAA,CAAK,OAAQ,GAAY,CAAA,GAAA,CAAA,CAAA;AAAA,KAC1B,CAAA,CAAA;AACD,IAAO,OAAA,IAAA,CAAA;AAAA,GACR,CAAA,CAAA;AACD,EAAA,MAAA,CAAO,WAAW,KAAM,CAAA,CAAA,CAAA,CAAA;AACxB,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}