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 2.98 kB
{"version":3,"file":"createRecursiveProxy.cjs","sources":["../../../src/lib/createRecursiveProxy.ts"],"sourcesContent":["type ProxyApplyCallback = (\n path: (string | symbol)[],\n args: unknown[]\n) => unknown;\n/**\n * @internal\n * If returns `undefined | null`, the proxy will continue to create a new proxy for the next key.\n */\ntype ProxyGetCallback = (\n path: (string | symbol)[],\n key: string | symbol\n) => unknown | undefined;\n\n/**\n * Creates a recursive proxy that calls the `getCallback` and `applyCallback` functions\n * @param getCallback The callback to call when a proxy property is accessed\n * @param applyCallback The callback to call when a proxy is called as a function\n * @param path The current path of the proxy\n */\nexport function createRecursiveProxy(\n getCallback: ProxyGetCallback,\n applyCallback: ProxyApplyCallback,\n path: (string | symbol)[]\n): unknown {\n return new Proxy(noop, {\n get(_obj, key) {\n if (key === 'then') {\n // special case for if the proxy is accidentally treated\n // like a PromiseLike (like in `Promise.resolve(proxy)`)\n return undefined;\n }\n\n return (\n getCallback(path, key) ??\n createRecursiveProxy(getCallback, applyCallback, [...path, key])\n );\n },\n apply(_1, _2, args) {\n const functionName = path[path.length - 1];\n\n const isCall = functionName === 'call';\n const isApply = isCall ? false : functionName === 'apply';\n\n return applyCallback(\n isApply || isCall ? path.slice(0, -1) : path,\n isApply\n ? args.length >= 2\n ? args[1]\n : []\n : isCall\n ? args.slice(1)\n : args\n );\n },\n });\n}\n\nfunction noop() {\n // noop\n}\n"],"names":["createRecursiveProxy","getCallback","applyCallback","path","Proxy","noop","get","_obj","key","undefined","apply","_1","_2","args","functionName","length","isCall","isApply","slice"],"mappings":";;AAaA;;;;;AAKC,IACM,SAASA,oBAAAA,CACdC,WAA6B,EAC7BC,aAAiC,EACjCC,IAAyB,EAAA;IAEzB,OAAO,IAAIC,MAAMC,IAAM,EAAA;QACrBC,GAAIC,CAAAA,CAAAA,IAAI,EAAEC,GAAG,EAAA;AACX,YAAA,IAAIA,QAAQ,MAAQ,EAAA;;;gBAGlB,OAAOC,SAAAA,CAAAA;AACT,aAAA;AAEA,YAAA,OACER,WAAYE,CAAAA,IAAAA,EAAMK,GAClBR,CAAAA,IAAAA,oBAAAA,CAAqBC,aAAaC,aAAe,EAAA;AAAIC,gBAAAA,GAAAA,IAAAA;AAAMK,gBAAAA,GAAAA;AAAI,aAAA,CAAA,CAAA;AAEnE,SAAA;AACAE,QAAAA,KAAAA,CAAAA,CAAMC,EAAE,EAAEC,EAAE,EAAEC,IAAI,EAAA;AAChB,YAAA,MAAMC,eAAeX,IAAI,CAACA,IAAKY,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAA;AAE1C,YAAA,MAAMC,SAASF,YAAiB,KAAA,MAAA,CAAA;YAChC,MAAMG,OAAAA,GAAUD,MAAS,GAAA,KAAA,GAAQF,YAAiB,KAAA,OAAA,CAAA;YAElD,OAAOZ,aAAAA,CACLe,OAAWD,IAAAA,MAAAA,GAASb,IAAKe,CAAAA,KAAK,CAAC,CAAG,EAAA,CAAC,CAAKf,CAAAA,GAAAA,IAAAA,EACxCc,OACIJ,GAAAA,IAAAA,CAAKE,MAAM,IAAI,CAAA,GACbF,IAAI,CAAC,CAAE,CAAA,GACP,EAAE,GACJG,MACEH,GAAAA,IAAAA,CAAKK,KAAK,CAAC,CACXL,CAAAA,GAAAA,IAAAA,CAAAA,CAAAA;AAEV,SAAA;AACF,KAAA,CAAA,CAAA;AACF,CAAA;AAEA,SAASR,IAAAA,GAAAA;AACP;AACF;;;;"}