UNPKG

@openapi-qraft/react

Version:

OpenAPI client for React, providing type-safe requests and dynamic TanStack Query React Hooks via a modular, Proxy-based architecture.

1 lines 7.22 kB
{"version":3,"file":"qraftPredefinedParametersRequestFn.cjs","sources":["../../src/qraftPredefinedParametersRequestFn.ts"],"sourcesContent":["import type {\n OperationSchema,\n RequestFn,\n RequestFnInfo,\n RequestFnOptions,\n RequestFnResponse,\n} from './lib/requestFn.js';\nimport { shelfMerge } from './lib/shelfMerge.js';\n\nexport type QraftPredefinedParameterValue<TValue> =\n | TValue\n | (() => Promise<TValue | undefined>)\n | undefined;\n\nexport type InputPredefinedParametersItem<TValue> = {\n requestPattern: string;\n parameters: Array<{\n in: 'header' | 'query' | 'cookie';\n name: string;\n value: QraftPredefinedParameterValue<TValue>;\n }>;\n};\n\ntype TargetPredefinedParametersMethods =\n | 'get'\n | 'post'\n | 'put'\n | 'patch'\n | 'delete'\n | 'options'\n | 'head'\n | 'trace';\n\nexport type TargetPredefinedParametersItem = {\n requestPattern: string;\n methods:\n | Array<TargetPredefinedParametersMethods>\n | ReadonlyArray<Readonly<TargetPredefinedParametersMethods>>;\n paths: Array<string> | ReadonlyArray<Readonly<string>>;\n};\n\nexport function qraftPredefinedParametersRequestFn<\n TInputPredefinedParametersItem extends InputPredefinedParametersItem<any>,\n TData,\n TError,\n>(\n inputPredefinedParameters:\n | Array<TInputPredefinedParametersItem>\n | ReadonlyArray<Readonly<TInputPredefinedParametersItem>>,\n targetPredefinedParameters:\n | Array<TargetPredefinedParametersItem>\n | ReadonlyArray<Readonly<TargetPredefinedParametersItem>>,\n requestFn: RequestFn<TData, TError>\n): RequestFn<TData, TError> {\n return function predefinedParametersRequestFn(\n schema: OperationSchema,\n requestInfo: RequestFnInfo,\n options?: RequestFnOptions\n ): Promise<RequestFnResponse<TData, TError>> {\n const matchingInputPredefinedParameters =\n targetPredefinedParameters.flatMap((targetParameter) =>\n targetParameter.paths.includes(schema.url) &&\n (!targetParameter.methods.length ||\n targetParameter.methods.includes(schema.method))\n ? inputPredefinedParameters.filter(\n (predefinedParameter) =>\n predefinedParameter.requestPattern ===\n targetParameter.requestPattern\n )\n : []\n );\n\n if (!matchingInputPredefinedParameters?.length)\n return requestFn(schema, requestInfo, options);\n\n return Promise.all(\n matchingInputPredefinedParameters.map((item) =>\n resolveQraftPredefinedParameters(item.parameters)\n )\n ).then((resolvedPredefinedParameters) => {\n const mergedParameters = resolvedPredefinedParameters.reduce(\n (acc, item) => {\n acc = shelfMerge(2, acc, item);\n return acc;\n },\n {}\n );\n\n return requestFn(\n schema,\n {\n ...requestInfo,\n parameters: shelfMerge(2, mergedParameters, requestInfo.parameters),\n },\n options\n );\n });\n };\n}\n\nasync function resolveQraftPredefinedParameters<T>(\n predefinedParameters: InputPredefinedParametersItem<T>['parameters']\n) {\n return Promise.all(\n predefinedParameters.map(async (predefinedParameter) => {\n return {\n ...predefinedParameter,\n value: await resolveQraftPredefinedParameterValue(\n predefinedParameter.value\n ),\n };\n })\n ).then((resolvedPredefinedParameters) =>\n resolvedPredefinedParameters\n .filter(\n (resolvedPredefinedParameter) =>\n resolvedPredefinedParameter.value !== undefined\n )\n .reduce(\n (acc, resolvedPredefinedParameter) => {\n acc[resolvedPredefinedParameter.in] =\n acc[resolvedPredefinedParameter.in] ?? {};\n\n acc[resolvedPredefinedParameter.in][\n resolvedPredefinedParameter.name\n ] = resolvedPredefinedParameter.value;\n\n return acc;\n },\n {} as Record<string, Record<string, unknown>>\n )\n );\n}\n\ntype QraftPredefinedParameterResolvedValue<TData> = TData extends () => Promise<\n infer TAsyncData\n>\n ? TAsyncData\n : TData;\n\nasync function resolveQraftPredefinedParameterValue<TData>(\n value: QraftPredefinedParameterValue<TData>\n): Promise<QraftPredefinedParameterResolvedValue<TData>> {\n if (value && typeof value === 'function')\n return (await (\n value as () => Promise<TData | undefined>\n )()) as QraftPredefinedParameterResolvedValue<TData>;\n return value as QraftPredefinedParameterResolvedValue<TData>;\n}\n"],"names":["qraftPredefinedParametersRequestFn","inputPredefinedParameters","targetPredefinedParameters","requestFn","predefinedParametersRequestFn","schema","requestInfo","options","matchingInputPredefinedParameters","flatMap","targetParameter","paths","includes","url","methods","length","method","filter","predefinedParameter","requestPattern","Promise","all","map","item","resolveQraftPredefinedParameters","parameters","then","resolvedPredefinedParameters","mergedParameters","reduce","acc","shelfMerge","predefinedParameters","value","resolveQraftPredefinedParameterValue","resolvedPredefinedParameter","undefined","in","name"],"mappings":";;;;AAyCO,SAASA,kCAKdC,CAAAA,yBAE2D,EAC3DC,0BAE2D,EAC3DC,SAAmC,EAAA;AAEnC,IAAA,OAAO,SAASC,6BACdC,CAAAA,MAAuB,EACvBC,WAA0B,EAC1BC,OAA0B,EAAA;AAE1B,QAAA,MAAMC,oCACJN,0BAA2BO,CAAAA,OAAO,CAAC,CAACC,eAAAA,GAClCA,gBAAgBC,KAAK,CAACC,QAAQ,CAACP,OAAOQ,GAAG,CAAA,KACxC,CAACH,eAAAA,CAAgBI,OAAO,CAACC,MAAM,IAC9BL,eAAAA,CAAgBI,OAAO,CAACF,QAAQ,CAACP,MAAOW,CAAAA,MAAM,CAAA,CAC5Cf,GAAAA,yBAAAA,CAA0BgB,MAAM,CAC9B,CAACC,sBACCA,mBAAoBC,CAAAA,cAAc,KAClCT,eAAgBS,CAAAA,cAAc,IAElC,EAAE,CAAA,CAAA;AAGV,QAAA,IAAI,CAACX,iCAAmCO,EAAAA,MAAAA,EACtC,OAAOZ,SAAAA,CAAUE,QAAQC,WAAaC,EAAAA,OAAAA,CAAAA,CAAAA;AAExC,QAAA,OAAOa,OAAQC,CAAAA,GAAG,CAChBb,iCAAAA,CAAkCc,GAAG,CAAC,CAACC,IACrCC,GAAAA,gCAAAA,CAAiCD,IAAKE,CAAAA,UAAU,CAElDC,CAAAA,CAAAA,CAAAA,IAAI,CAAC,CAACC,4BAAAA,GAAAA;AACN,YAAA,MAAMC,gBAAmBD,GAAAA,4BAAAA,CAA6BE,MAAM,CAC1D,CAACC,GAAKP,EAAAA,IAAAA,GAAAA;gBACJO,GAAMC,GAAAA,qBAAAA,CAAW,GAAGD,GAAKP,EAAAA,IAAAA,CAAAA,CAAAA;gBACzB,OAAOO,GAAAA,CAAAA;AACT,aAAA,EACA,EAAC,CAAA,CAAA;AAGH,YAAA,OAAO3B,UACLE,MACA,EAAA;AACE,gBAAA,GAAGC,WAAW;AACdmB,gBAAAA,UAAAA,EAAYM,qBAAW,CAAA,CAAA,EAAGH,gBAAkBtB,EAAAA,WAAAA,CAAYmB,UAAU,CAAA;aAEpElB,EAAAA,OAAAA,CAAAA,CAAAA;AAEJ,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AACF,CAAA;AAEA,eAAeiB,iCACbQ,oBAAoE,EAAA;AAEpE,IAAA,OAAOZ,QAAQC,GAAG,CAChBW,oBAAqBV,CAAAA,GAAG,CAAC,OAAOJ,mBAAAA,GAAAA;QAC9B,OAAO;AACL,YAAA,GAAGA,mBAAmB;YACtBe,KAAO,EAAA,MAAMC,oCACXhB,CAAAA,mBAAAA,CAAoBe,KAAK,CAAA;AAE7B,SAAA,CAAA;AACF,KAAA,CAAA,CAAA,CACAP,IAAI,CAAC,CAACC,4BACNA,GAAAA,4BAAAA,CACGV,MAAM,CACL,CAACkB,2BACCA,GAAAA,2BAAAA,CAA4BF,KAAK,KAAKG,SAAAA,CAAAA,CAEzCP,MAAM,CACL,CAACC,GAAKK,EAAAA,2BAAAA,GAAAA;YACJL,GAAG,CAACK,2BAA4BE,CAAAA,EAAE,CAAC,GACjCP,GAAG,CAACK,2BAA4BE,CAAAA,EAAE,CAAC,IAAI,EAAC,CAAA;YAE1CP,GAAG,CAACK,2BAA4BE,CAAAA,EAAE,CAAC,CACjCF,4BAA4BG,IAAI,CACjC,GAAGH,2BAAAA,CAA4BF,KAAK,CAAA;YAErC,OAAOH,GAAAA,CAAAA;AACT,SAAA,EACA,EAAC,CAAA,CAAA,CAAA;AAGT,CAAA;AAQA,eAAeI,qCACbD,KAA2C,EAAA;AAE3C,IAAA,IAAIA,SAAS,OAAOA,KAAAA,KAAU,UAC5B,EAAA,OAAQ,MAAM,KACZA,EAAAA,CAAAA;IAEJ,OAAOA,KAAAA,CAAAA;AACT;;;;"}