{"_id":"@cuppachino/proxy-fn","_rev":"5-4ee61138ec964d612a22384b169a5fc4","name":"@cuppachino/proxy-fn","dist-tags":{"latest":"1.0.3"},"versions":{"0.0.1":{"name":"@cuppachino/proxy-fn","version":"0.0.1","description":"Proxy a function and optionally transform its parameters and output.","type":"module","main":"dist/cjs/index.js","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./utils":{"import":"./dist/esm/utils/index.js","require":"./dist/cjs/utils/index.js"},"./types":{"import":"./dist/esm/types/index.js","require":"./dist/cjs/types/index.js"}},"keywords":[],"author":{"name":"Jacob Bergholtz","email":"cuppachino.dev@gmail.com"},"license":"GPL-3.0","devDependencies":{"@changesets/cli":"^2.26.2","@types/node":"^20.5.9","prettier":"^3.0.3","rimraf":"^5.0.1","tslib":"^2.6.2","typescript":"^5.2.2"},"scripts":{"test":"tsc --noEmit","build:cjs":"tsc -p . --outDir ./dist/cjs --module commonjs --moduleResolution node --verbatimModuleSyntax false","build:esm":"tsc -p . --outDir ./dist/esm","build:scripts":"tsc ./scripts/copy-json.ts --outDir ./scripts --module nodenext","build":"pnpm clean && pnpm build:cjs && pnpm build:esm && pnpm postbuild","postbuild":"pnpm build:scripts && node ./scripts/copy-json.js && pnpm clean:scripts","clean:scripts":"rimraf ./scripts/copy-json.js","clean":"rimraf ./dist","start":"node ./dist/index.js","format":"prettier --write ./src/**/*.{ts,js,tsx,jsx,json,md}","version-package":"changeset version && pnpm format","release":"pnpm test && pnpm build && changeset publish"},"types":"./dist/cjs/index.d.ts","_id":"@cuppachino/proxy-fn@0.0.1","_integrity":"sha512-RJYc7u5VspIhdEaXFy/EBYlUjeVIuAbU/7QvXhcP7G/GtDYD7UA9DfoabyGm1rGyEFFiIHm8efFuXeHm9kPk5g==","_resolved":"/tmp/084734242a62a273674608f7157014c6/cuppachino-proxy-fn-0.0.1.tgz","_from":"file:cuppachino-proxy-fn-0.0.1.tgz","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-RJYc7u5VspIhdEaXFy/EBYlUjeVIuAbU/7QvXhcP7G/GtDYD7UA9DfoabyGm1rGyEFFiIHm8efFuXeHm9kPk5g==","shasum":"95e7b2e5066032582670c0fde5522ee73ff2b29f","tarball":"https://registry.npmjs.org/@cuppachino/proxy-fn/-/proxy-fn-0.0.1.tgz","fileCount":35,"unpackedSize":23560,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEw14gypa52qMyxm6lvaHe9zoMmFij+iPXWoN+7Wk24vAiEA3bkZ6NU1jMKP4azjtLdIeTEBGSIfyWONwjt40VWv+vY="}]},"_npmUser":{"name":"cuppachino","email":"cuppachino.dev@gmail.com"},"directories":{},"maintainers":[{"name":"cuppachino","email":"cuppachino.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/proxy-fn_0.0.1_1693894389098_0.8717326973861037"},"_hasShrinkwrap":false},"0.0.2":{"name":"@cuppachino/proxy-fn","version":"0.0.2","description":"Proxy a function and optionally transform its parameters and output.","type":"module","main":"dist/cjs/index.js","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./utils":{"import":"./dist/esm/utils/index.js","require":"./dist/cjs/utils/index.js"},"./types":{"import":"./dist/esm/types/index.js","require":"./dist/cjs/types/index.js"}},"keywords":[],"author":{"name":"Jacob Bergholtz","email":"cuppachino.dev@gmail.com"},"license":"GPL-3.0","devDependencies":{"@changesets/cli":"^2.26.2","@types/node":"^20.5.9","prettier":"^3.0.3","rimraf":"^5.0.1","tslib":"^2.6.2","typescript":"^5.2.2"},"scripts":{"test":"tsc --noEmit","build:cjs":"tsc -p . --outDir ./dist/cjs --module commonjs --moduleResolution node --verbatimModuleSyntax false","build:esm":"tsc -p . --outDir ./dist/esm","build:scripts":"tsc ./scripts/copy-json.ts --outDir ./scripts --module nodenext","build":"pnpm clean && pnpm build:cjs && pnpm build:esm && pnpm postbuild","postbuild":"pnpm build:scripts && node ./scripts/copy-json.js && pnpm clean:scripts","clean:scripts":"rimraf ./scripts/copy-json.js","clean":"rimraf ./dist","start":"node ./dist/index.js","format":"prettier --write ./src/**/*.{ts,js,tsx,jsx,json,md}","version-package":"changeset version && pnpm format","release":"pnpm test && pnpm build && changeset publish"},"types":"./dist/cjs/index.d.ts","_id":"@cuppachino/proxy-fn@0.0.2","_integrity":"sha512-m7cIgiRLwBzu4FDCju3Z7S0JN/8mr24qH0jyXbA5mN+x6FBDJZsQl4BxnFTOFbL+mro6E9hbG60+aw9PXRozFQ==","_resolved":"/tmp/82353c75536a23c87414f53b142bf37e/cuppachino-proxy-fn-0.0.2.tgz","_from":"file:cuppachino-proxy-fn-0.0.2.tgz","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-m7cIgiRLwBzu4FDCju3Z7S0JN/8mr24qH0jyXbA5mN+x6FBDJZsQl4BxnFTOFbL+mro6E9hbG60+aw9PXRozFQ==","shasum":"c35ef5b9619820ead4bf04ee6e33bb4302948d28","tarball":"https://registry.npmjs.org/@cuppachino/proxy-fn/-/proxy-fn-0.0.2.tgz","fileCount":36,"unpackedSize":23822,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIELUJECt/yS41F66rhNBiA9k7beBgtPDfzSlWK8CsDFcAiEAgr+kLGeLjTmrGuBgUtlEQZmUfMF2rmDxcxNyWBPJJC4="}]},"_npmUser":{"name":"cuppachino","email":"cuppachino.dev@gmail.com"},"directories":{},"maintainers":[{"name":"cuppachino","email":"cuppachino.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/proxy-fn_0.0.2_1693894750566_0.9217653730178956"},"_hasShrinkwrap":false},"1.0.0":{"name":"@cuppachino/proxy-fn","version":"1.0.0","description":"Proxy a function and optionally transform its parameters and output.","type":"module","main":"dist/cjs/index.js","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./utils":{"import":"./dist/esm/utils/index.js","require":"./dist/cjs/utils/index.js"},"./types":{"import":"./dist/esm/types/index.js","require":"./dist/cjs/types/index.js"}},"keywords":[],"author":{"name":"Jacob Bergholtz","email":"cuppachino.dev@gmail.com"},"license":"GPL-3.0","devDependencies":{"@changesets/cli":"^2.26.2","@types/node":"^20.5.9","expect-type":"^0.16.0","prettier":"^3.0.3","rimraf":"^5.0.1","tslib":"^2.6.2","typescript":"^5.2.2","vitest":"^0.34.3"},"scripts":{"typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest watch","build:cjs":"tsc -p . --outDir ./dist/cjs --module commonjs --moduleResolution node --verbatimModuleSyntax false","build:esm":"tsc -p . --outDir ./dist/esm","build:scripts":"tsc ./scripts/copy-json.ts --outDir ./scripts --module nodenext","build":"pnpm clean && pnpm build:cjs && pnpm build:esm && pnpm postbuild","postbuild":"pnpm build:scripts && node ./scripts/copy-json.js && pnpm clean:scripts","clean:scripts":"rimraf ./scripts/copy-json.js","clean":"rimraf ./dist","start":"node ./dist/index.js","format":"prettier --write ./src/**/*.{ts,js,tsx,jsx,json,md}","version-package":"changeset version && pnpm format","release":"pnpm typecheck && pnpm test && pnpm build && changeset publish"},"types":"./dist/cjs/index.d.ts","_id":"@cuppachino/proxy-fn@1.0.0","_integrity":"sha512-zWoa4ecSxPz/3w5WtcAWsHebkb+BT2HMOrtoLCnegKDM3HC+MM2/9c2aGrQF6tyb0yGCFRWx9dec31Z0p2wj4w==","_resolved":"/tmp/6377278a3fb30ced977bbebd863a41eb/cuppachino-proxy-fn-1.0.0.tgz","_from":"file:cuppachino-proxy-fn-1.0.0.tgz","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-zWoa4ecSxPz/3w5WtcAWsHebkb+BT2HMOrtoLCnegKDM3HC+MM2/9c2aGrQF6tyb0yGCFRWx9dec31Z0p2wj4w==","shasum":"e9494c3dfe1f5983b77e4b05254be3cfe7830409","tarball":"https://registry.npmjs.org/@cuppachino/proxy-fn/-/proxy-fn-1.0.0.tgz","fileCount":64,"unpackedSize":27272,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA5ZEkbYkvnF3HByNzaYHacrWlGjxweS3k4mgkSb/NirAiEA5gf67/0pa/Ab6RnIZh9HBGZHIX38DUu85ZXKBJf2tN8="}]},"_npmUser":{"name":"cuppachino","email":"cuppachino.dev@gmail.com"},"directories":{},"maintainers":[{"name":"cuppachino","email":"cuppachino.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/proxy-fn_1.0.0_1693990906380_0.5845033490293132"},"_hasShrinkwrap":false},"1.0.1":{"name":"@cuppachino/proxy-fn","version":"1.0.1","description":"Proxy a function and optionally transform its parameters and output.","type":"module","main":"dist/cjs/index.js","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./utils":{"import":"./dist/esm/utils/index.js","require":"./dist/cjs/utils/index.js"},"./types":{"import":"./dist/esm/types/index.js","require":"./dist/cjs/types/index.js"}},"keywords":[],"author":{"name":"Jacob Bergholtz","email":"cuppachino.dev@gmail.com"},"license":"GPL-3.0","devDependencies":{"@changesets/cli":"^2.26.2","@types/node":"^20.5.9","expect-type":"^0.16.0","prettier":"^3.0.3","rimraf":"^5.0.1","tslib":"^2.6.2","typescript":"^5.2.2","vitest":"^0.34.3"},"scripts":{"typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest watch","build:cjs":"tsc -p . --outDir ./dist/cjs --module commonjs --moduleResolution node --verbatimModuleSyntax false","build:esm":"tsc -p . --outDir ./dist/esm","build:scripts":"tsc ./scripts/copy-json.ts --outDir ./scripts --module nodenext","build":"pnpm clean && pnpm build:cjs && pnpm build:esm && pnpm postbuild","postbuild":"pnpm build:scripts && node ./scripts/copy-json.js && pnpm clean:scripts","clean:scripts":"rimraf ./scripts/copy-json.js","clean":"rimraf ./dist","start":"node ./dist/index.js","format":"prettier --write ./src/**/*.{ts,js,tsx,jsx,json,md}","version-package":"changeset version && pnpm format","release":"pnpm typecheck && pnpm test && pnpm build && changeset publish"},"types":"./dist/cjs/index.d.ts","_id":"@cuppachino/proxy-fn@1.0.1","_integrity":"sha512-7We3EIPNEF3TopI15WoA/4p0lA60OuR02VxMrdd/RuBI9f3hqzdP1MPR0HEm2zAP3CQycg9o6uyQBBV3knUuxA==","_resolved":"/tmp/89d839ccc0e532780018527349e89e53/cuppachino-proxy-fn-1.0.1.tgz","_from":"file:cuppachino-proxy-fn-1.0.1.tgz","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-7We3EIPNEF3TopI15WoA/4p0lA60OuR02VxMrdd/RuBI9f3hqzdP1MPR0HEm2zAP3CQycg9o6uyQBBV3knUuxA==","shasum":"ab0cb3939bb84e5f9118e2e3d14bf377523e2b38","tarball":"https://registry.npmjs.org/@cuppachino/proxy-fn/-/proxy-fn-1.0.1.tgz","fileCount":64,"unpackedSize":26850,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCpCqSKt73TMXnXdje4TCA5IMW5Kz9SoQPhpbJLtXX/QgIgS+9qMgY7dAPFPVkZdikEKL1VZaaJkC3sJTLDKGhLY6w="}]},"_npmUser":{"name":"cuppachino","email":"cuppachino.dev@gmail.com"},"directories":{},"maintainers":[{"name":"cuppachino","email":"cuppachino.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/proxy-fn_1.0.1_1693992504877_0.7161147983728526"},"_hasShrinkwrap":false},"1.0.2":{"name":"@cuppachino/proxy-fn","version":"1.0.2","description":"Proxy a function and optionally transform its parameters and output.","type":"module","main":"dist/cjs/index.js","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./utils":{"import":"./dist/esm/utils/index.js","require":"./dist/cjs/utils/index.js"},"./types":{"import":"./dist/esm/types/index.js","require":"./dist/cjs/types/index.js"}},"keywords":[],"author":{"name":"Jacob Bergholtz","email":"cuppachino.dev@gmail.com"},"license":"GPL-3.0","devDependencies":{"@changesets/cli":"^2.26.2","@types/node":"^20.5.9","expect-type":"^0.16.0","prettier":"^3.0.3","rimraf":"^5.0.1","tslib":"^2.6.2","typescript":"^5.2.2","vitest":"^0.34.3"},"scripts":{"typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest watch","build:cjs":"tsc -p . --outDir ./dist/cjs --module commonjs --moduleResolution node --verbatimModuleSyntax false","build:esm":"tsc -p . --outDir ./dist/esm","build:scripts":"tsc ./scripts/copy-json.ts --outDir ./scripts --module nodenext","build":"pnpm clean && pnpm build:cjs && pnpm build:esm && pnpm postbuild","postbuild":"pnpm build:scripts && node ./scripts/copy-json.js && pnpm clean:scripts","clean:scripts":"rimraf ./scripts/copy-json.js","clean":"rimraf ./dist","start":"node ./dist/index.js","format":"prettier --write ./src/**/*.{ts,js,tsx,jsx,json,md}","version-package":"changeset version && pnpm format","release":"pnpm typecheck && pnpm test && pnpm build && changeset publish"},"types":"./dist/cjs/index.d.ts","_id":"@cuppachino/proxy-fn@1.0.2","_integrity":"sha512-rSrWy6KrHZTgxbJhrIWBgWtVZTag8JG5g6zlLn1XEfOEIrxaXHtvgcp/6gBpajtWDvCDctOYZUBTNuoFS1ItbA==","_resolved":"/tmp/1dd3813db5cb33efebce387dcf37b934/cuppachino-proxy-fn-1.0.2.tgz","_from":"file:cuppachino-proxy-fn-1.0.2.tgz","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-rSrWy6KrHZTgxbJhrIWBgWtVZTag8JG5g6zlLn1XEfOEIrxaXHtvgcp/6gBpajtWDvCDctOYZUBTNuoFS1ItbA==","shasum":"d256b8ab8e0efc858ab7dcd751e50e4612569633","tarball":"https://registry.npmjs.org/@cuppachino/proxy-fn/-/proxy-fn-1.0.2.tgz","fileCount":64,"unpackedSize":26971,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCyvhzCCYOckKlpoHooXV56ENrKigBz/IH2dqYSgVZ8AAIgO3CbUDI1W08u0lJOsfSe6uIcrm7WHBR74Ua56eMbPFU="}]},"_npmUser":{"name":"cuppachino","email":"cuppachino.dev@gmail.com"},"directories":{},"maintainers":[{"name":"cuppachino","email":"cuppachino.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/proxy-fn_1.0.2_1694020682680_0.6333699033436482"},"_hasShrinkwrap":false},"1.0.3":{"name":"@cuppachino/proxy-fn","version":"1.0.3","description":"Proxy a function and optionally transform its parameters and output.","type":"module","main":"dist/cjs/index.js","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./utils":{"import":"./dist/esm/utils/index.js","require":"./dist/cjs/utils/index.js"},"./types":{"import":"./dist/esm/types/index.js","require":"./dist/cjs/types/index.js"}},"keywords":[],"author":{"name":"Jacob Bergholtz","email":"cuppachino.dev@gmail.com"},"license":"GPL-3.0","devDependencies":{"@changesets/cli":"^2.26.2","@types/node":"^20.5.9","expect-type":"^0.16.0","prettier":"^3.0.3","rimraf":"^5.0.1","tslib":"^2.6.2","typescript":"^5.2.2","vitest":"^0.34.3"},"scripts":{"typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest watch","build:cjs":"tsc -p . --outDir ./dist/cjs --module commonjs --moduleResolution node --verbatimModuleSyntax false","build:esm":"tsc -p . --outDir ./dist/esm","build:scripts":"tsc ./scripts/copy-json.ts --outDir ./scripts --module nodenext","build":"pnpm clean && pnpm build:cjs && pnpm build:esm && pnpm postbuild","postbuild":"pnpm build:scripts && node ./scripts/copy-json.js && pnpm clean:scripts","clean:scripts":"rimraf ./scripts/copy-json.js","clean":"rimraf ./dist","start":"node ./dist/index.js","format":"prettier --write ./src/**/*.{ts,js,tsx,jsx,json,md}","version-package":"changeset version && pnpm format","release":"pnpm typecheck && pnpm test && pnpm build && changeset publish"},"types":"./dist/cjs/index.d.ts","_id":"@cuppachino/proxy-fn@1.0.3","_integrity":"sha512-3nj51zuUjK2QdpzqcOfvkylnItoNelgvOf7qvWyEWZe9fdejFcNoU8rgOppW7i7Wm8tI41WJvUGf3JEtWKVM4w==","_resolved":"/tmp/7d6f295702cdeb1edc7fa4e4d3203812/cuppachino-proxy-fn-1.0.3.tgz","_from":"file:cuppachino-proxy-fn-1.0.3.tgz","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-3nj51zuUjK2QdpzqcOfvkylnItoNelgvOf7qvWyEWZe9fdejFcNoU8rgOppW7i7Wm8tI41WJvUGf3JEtWKVM4w==","shasum":"3b8d6b49ef0282536968316eec3e3a8a10191711","tarball":"https://registry.npmjs.org/@cuppachino/proxy-fn/-/proxy-fn-1.0.3.tgz","fileCount":79,"unpackedSize":30492,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoFzDYpnl7FIpJ7XYuvaG8DZWIG8qI3ygsexKJr4AvGgIgNsRt5KBROD3lHtaMe87Kea+8STR+pN7ypIrrzIFdTEo="}]},"_npmUser":{"name":"cuppachino","email":"cuppachino.dev@gmail.com"},"directories":{},"maintainers":[{"name":"cuppachino","email":"cuppachino.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/proxy-fn_1.0.3_1694028914264_0.17621965884077517"},"_hasShrinkwrap":false}},"time":{"created":"2023-09-05T06:13:08.964Z","0.0.1":"2023-09-05T06:13:09.238Z","modified":"2023-09-06T19:35:14.767Z","0.0.2":"2023-09-05T06:19:10.766Z","1.0.0":"2023-09-06T09:01:46.532Z","1.0.1":"2023-09-06T09:28:25.066Z","1.0.2":"2023-09-06T17:18:02.822Z","1.0.3":"2023-09-06T19:35:14.593Z"},"maintainers":[{"name":"cuppachino","email":"cuppachino.dev@gmail.com"}],"description":"Proxy a function and optionally transform its parameters and output.","keywords":[],"author":{"name":"Jacob Bergholtz","email":"cuppachino.dev@gmail.com"},"license":"GPL-3.0","readme":"# @cuppachino/proxy-fn\n\nProxy a function and optionally transform its parameters and output.\n\n## Installation\n\nInstall using your favorite package manager.\n\n```ps1\npnpm add @cuppachino/proxy-fn\n```\n```ps1\nnpm i @cuppachino/proxy-fn\n```\n```ps1\nyarn add @cuppachino/proxy-fn\n```\n\n| | |\n| - | - |\n| Infers promises | ✅ |\n| Retains properties assigned to the function | ✅ |\n| Constrains the return type of `from` to extend the original function's parameters | ✅ |\n\n#### Example function\n\n```ts\nconst add = (a: number, b: number) => a + b\n```\n\n### From\n\n```ts\n/**\n * ```ts\n * (a: number, b: number, ...args: number[]) => number\n *\n * ProxyFn<\n *   // NewArgs\n *   [a: number, b: number, ...args: number[]],\n *   // NewReturnType\n *   number\n * >\n * ```\n */\nconst addMany = proxyFn(add)({\n  from(a, b, ...args: number[]) {\n    return [a, args.reduce(add, b)]\n  }\n})\n\naddMany(1, 2, 3, 4) // number\n```\n\n### To\n\n```ts\n/**\n * ```ts\n * (a: number, b: number) => Promise<readonly [number, string]>\n *\n * ProxyFn<\n *   // NewArgs\n *   [a: number, b: number],\n *   // NewReturnType\n *   Promise<readonly [number, string]>\n * >\n * ```\n */\nconst infersPromises = proxyFn(add)({\n  async to(sum) {\n    const data = await Promise.resolve(`data for ${sum}`)\n    return [sum, data] as const\n  }\n})\n\ninfersPromises(4, 8) // Promise<[sum: number, msg: string]>\n```\n\n### From & To\n\n```ts\n/**\n * ```ts\n * (() => Promise<[sum: number, msg: string]>) & { name: string }\n *\n * ProxyFn<\n *   // NewArgs\n *   [],\n *   // NewReturnType\n *   Promise<[sum: number, msg: string]>,\n *   // Properties\n *   { name: string }\n * >\n * ```\n */\nconst inferProperties = proxyFn(Object.assign(add.bind(null), { name: 'foo' }))(\n  {\n    async from() {\n      const a = await Promise.resolve(1)\n      const b = await Promise.resolve(2)\n      return [a, b]\n    },\n    to(sum): [sum: number, msg: string] {\n      return [sum, 'msg']\n    }\n  }\n)\n\ninferProperties() // Promise<[sum: number, msg: string]>\n```\n","readmeFilename":"README.md"}