{"_id":"@all-in-js/koa-functions-api","_rev":"4-ea20efd3272e81038a13cfcd001e1e26","name":"@all-in-js/koa-functions-api","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"@all-in-js/koa-functions-api","version":"1.0.0","main":"dist/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/all-in-js/koa-functions-api.git"},"author":{"name":"famanoder"},"scripts":{"prepublishOnly":"rm -rf dist && tsc"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@all-in-js/injector":"^1.0.3","@all-in-js/utils":"^1.0.1","@types/koa":"^2.11.6"},"bugs":{"url":"https://github.com/all-in-js/koa-functions-api/issues"},"homepage":"https://github.com/all-in-js/koa-functions-api","keywords":["koa","single route","router","function api"],"devDependencies":{"koa":"^2.13.1"},"peerDependencies":{"koa":"^2.13.1"},"gitHead":"923e873dc64ce61d51fa29b452fae2061b8e3f3d","description":"基于 koa2 的函数式单路由接口开发方式","_id":"@all-in-js/koa-functions-api@1.0.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-eibIruxPQjCD5gf/H38yl4Ar3N0uHLF2z5pD8AoD5SE5b91T2K6P4YuUmZ3mDEehHvmTBSRVHmNHU0WgqfEvFw==","shasum":"164686e7edb58f3618053511243bbc4db233ded4","tarball":"https://registry.npmjs.org/@all-in-js/koa-functions-api/-/koa-functions-api-1.0.0.tgz","fileCount":4,"unpackedSize":9127,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgN0KVCRA9TVsSAnZWagAAj4sP/ArhigcxF/XTJuO7Z45A\nBLXNBJg+urAEPVsE7Cfa3+TjS2RNz7+OUpfdyZpSTw4ayRL8hZmrAIG+xwzc\nFpSmwm8tdZKdfKkdHRp42pVXnKF168xqy241QBurvsgSao1oj5ETl7Wo0PxG\nh2L0XuOLlNiopiv+6KefJv3Xzu2+eyAdxiAy3pvAOX7MGxiHuFP3D3NqT9WO\nvX3U3y3cPKfS60cYzJQJu2itU/OmzUBxLMpQzpoQQjwMMy4uUCFYC0iIGIzP\nY7gPcrKHZCqIc/6JBAgghkemIUr42qMsdFrX/xpDFgIasgwGgMk5zQa0cQ07\nhLZTk6S9VJubiQrpigPNMdweufiGGa820ivVNhktx0QLirWQTfCpZaPL5i/t\nXLZiSQYItV2oUEMtqirEbOQFsvlAq5bBAbYLSz1/Trssz8ZvjtpbXxU8+QYk\n+BNEOKiNbFUaX10bDWSJrdzQ7qsn3hNCgvELuDrE1YPSIuY8fQSVvxaCV9n6\nYlfaW9LaiE7VaAFZe0362WDJigrnKU8tEx5ljNkVN2qa8dTkHac2reHcK54b\nKCIuCkIc4FqzuqBBDB1qwarS5TGDGU89AbeAuXbQPyiSlu0NxELcmAVceHVn\nVZsRAvocJxIxjONTF/nUxDFu+raBHchELGGFsIEtepODE4qG/yLNHPglvbdE\nhjCr\r\n=QxxI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHkozehqx7X6atOomNiao9GOMQkzLQPwgzxpgUxpupUaAiEA1c8u2zW31m936o9Z+lmi47ah2+Fn8ao0xPnqXCCQpjk="}]},"_npmUser":{"name":"eryue","email":"915905174@qq.com"},"directories":{},"maintainers":[{"name":"eryue","email":"915905174@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/koa-functions-api_1.0.0_1614234260674_0.998165141209441"},"_hasShrinkwrap":false},"1.0.1":{"name":"@all-in-js/koa-functions-api","version":"1.0.1","main":"dist/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/all-in-js/koa-functions-api.git"},"author":{"name":"famanoder"},"scripts":{"prepublishOnly":"rm -rf dist && tsc"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@all-in-js/injector":"^1.0.3","@all-in-js/utils":"^1.0.1","@types/koa":"^2.11.6"},"keywords":["koa","single route","router","function api"],"devDependencies":{"koa":"^2.13.1"},"peerDependencies":{"koa":"^2.13.1"},"gitHead":"e1042569f9cc36b52d02fab16a4201d19eada18d","description":"基于 koa2 的函数式单路由接口开发方式","bugs":{"url":"https://github.com/all-in-js/koa-functions-api/issues"},"homepage":"https://github.com/all-in-js/koa-functions-api#readme","_id":"@all-in-js/koa-functions-api@1.0.1","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-FRE+VEDMumiRP6MRqYGdOsAsTqrVc4AKPEtMkRjP5Or+Zw5NRhm8SFOprVcVoJn0t+cexHAgaarC8IlZ4H7tYA==","shasum":"818fc7dd2dc867518ac5c900c63b712fd5c32b62","tarball":"https://registry.npmjs.org/@all-in-js/koa-functions-api/-/koa-functions-api-1.0.1.tgz","fileCount":4,"unpackedSize":8978,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYvspCRA9TVsSAnZWagAA2FkP/1OakyxkUU1EDXtG81A9\njRZFwqJRctoTBTMghpeXbOPrx5oKknArdsQRIs9fUEOqpPBWLWgnGebdfThv\n+noThpH4mSep36iyPkb76CEhxxsLJU4QmIHvYdBLIkwUdTNgPZe77yUNjqvq\nRjGHAvsNpJwCgOsl8QK3KnfjrfRVnRyfyN3cmOCpl8w2m/UFSgnrIpP8QoKn\nPvzfrU7b2VsANY9kz+h2FVbOt3TiC6OBgiPCQ8ErN/WvRUA+pcSEP2v/24ZU\ncKkdkVH/EF70B3DoPmYUZP+mcfq1ini2h5/ct1Fv+V/nK4lZf9gRV3Vx2XnQ\ncRf4R/EdkkcRZzrpaTAwUrLXi5JjFbvcmH/ZkJdjLptQ/H6XVPlBx698+9PZ\nSQLlaXd8S/UmIz5HnS6EgVcTFkBobVbo+yLsCxE3QO5jWxhNQGNL2+sw49ok\nMTvDwWCh2Z/NnhT5Lfg9F0bEjvbmyZh4kXO5i2eBbypmAquikJDLQ5HbvC0z\nawdOQKxGhugLm73zVBoL5UmDgyOY/434jf7FK1OqMf1UZ2b18+pP/EZNLV48\n5hDxKAw2ABygpIm1j8ves+ulaBvSA/e/6P0ohEwJmnNU1PJ8mcNsWvyYIXQG\nN4WbnTfUyzwR0l4Gb7DBx5dcZgWLNYbg3Grgqc8JZv27XVNqwL7F1LIvKIWo\nxQOH\r\n=IinF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBPNn4cF+laAJWcmVw+7pixs8H116F0iDGS0KIZfm89BAiBkJR/e8Ndjrpi6yUl2iueVcNprx/pRlrLINo7RjT2fmQ=="}]},"_npmUser":{"name":"eryue","email":"915905174@qq.com"},"directories":{},"maintainers":[{"name":"eryue","email":"915905174@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/koa-functions-api_1.0.1_1617099561513_0.5872901606395655"},"_hasShrinkwrap":false},"1.0.2":{"name":"@all-in-js/koa-functions-api","version":"1.0.2","main":"dist/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/all-in-js/koa-functions-api.git"},"author":{"name":"famanoder"},"scripts":{"prepublishOnly":"rm -rf dist && tsc"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@all-in-js/injector":"^1.0.3","@all-in-js/utils":"^1.0.1","@types/koa":"^2.11.6"},"keywords":["koa","single route","router","function api"],"devDependencies":{"koa":"^2.13.1"},"peerDependencies":{"koa":"^2.13.1"},"gitHead":"e1042569f9cc36b52d02fab16a4201d19eada18d","description":"基于 koa2 的函数式单路由接口开发方式","bugs":{"url":"https://github.com/all-in-js/koa-functions-api/issues"},"homepage":"https://github.com/all-in-js/koa-functions-api#readme","_id":"@all-in-js/koa-functions-api@1.0.2","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-KVP3H054rTToJVkqIYysKOfU6rWf9mofra3emWW2iAuZlrPXGhvs13df0CpmNHJcwB7bqpbOqejLGEL2QvGFTg==","shasum":"05c5f75c766cac23b90e6eed1d5619aaaba59600","tarball":"https://registry.npmjs.org/@all-in-js/koa-functions-api/-/koa-functions-api-1.0.2.tgz","fileCount":4,"unpackedSize":9180,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYwSOCRA9TVsSAnZWagAAr/QP/2c9cYaMdLEyAoCLeJB1\nsSX1+y+tzv3jcrfYj33zvBaFU8MDhxV21HqpMHFBS813SbaogquMIueXgX3s\nWsd/5B9ju1vn83HmWwkSuHwGHeHirmfyCRBRYrQ5Njx/NHtODLHEf3mB7XLr\niEAbPW0Uxm3qsxXeyIuOJouYNOhOEKH60gpSXdf4sMoodJ7l0gkVC96/Mdtu\ncOmcKOwAffaDcvBC1AUi+vWiIFdlUq/7z7JkXLXa6JVY6p5zCIjQlWdnUy6O\nM2F3+6Ovy/O4ugSfAaUVvOxqNVjC9HmwOYQMjcffLS8nW6zpS4IF0l4EnFVd\n4eM538A1zelZVG9tPK6D5PBHOCItiVMKCwnsV34dqD2vpSZPvkiZgU0rtUrV\nVdYdygk1Zr2e/jG43bSRW890m1w8cdM5oQlhvRNyAZ97YNSG1v1Tz4mTSGTE\n9EqpQyFofa4j2GEKAFZ5OHQQAbVXvxMSV4FntxJrRZJKWg5Qam/IwWLkJZB8\nBplFXKDngLjW1YLWycwHQ9yarpEJE8O/KifvgKbndGdE/2P1MhWuuzbLUL/1\nuP6NqJDdEFHVkYkXckmeiGO7say67HEDm+XLzyccMr9SYY8XDhtNXLQ1C8h5\npKw+zzcivNB27vZFMh77JzF2n1DBEnQNaBBbG19sA3awm2qJYe1sxGbc6Zdy\nyyit\r\n=H/hl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrcdpyMvPduwZV2bZ/HFABRnI3SEdo2AlsFpeJyUMsmAIhAJxIMW5NTlN229oL1C+TE23dZVtvYNl6jx65G6+c6OGa"}]},"_npmUser":{"name":"eryue","email":"915905174@qq.com"},"directories":{},"maintainers":[{"name":"eryue","email":"915905174@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/koa-functions-api_1.0.2_1617101965877_0.6984690577218191"},"_hasShrinkwrap":false},"1.0.3":{"name":"@all-in-js/koa-functions-api","version":"1.0.3","main":"dist/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/all-in-js/koa-functions-api.git"},"author":{"name":"famanoder"},"scripts":{"prepublishOnly":"rm -rf dist && tsc"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@all-in-js/injector":"^1.0.3","@all-in-js/utils":"^1.0.1","@types/koa":"^2.11.6"},"keywords":["koa","single route","router","function api"],"devDependencies":{"koa":"^2.13.1"},"peerDependencies":{"koa":"^2.13.1"},"gitHead":"e1042569f9cc36b52d02fab16a4201d19eada18d","description":"基于 koa2 的函数式单路由接口开发方式","bugs":{"url":"https://github.com/all-in-js/koa-functions-api/issues"},"homepage":"https://github.com/all-in-js/koa-functions-api#readme","_id":"@all-in-js/koa-functions-api@1.0.3","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-49eIj+yHXwyu6KWq05xxyMNFZ0Toq5EBkyUWa2HnO7x3WsAnqKWWESXWxZLhgf+3oHVt/xCP/WhX9H17LijKlQ==","shasum":"be02401faa11326c52e77056c0c2e5ba601089c8","tarball":"https://registry.npmjs.org/@all-in-js/koa-functions-api/-/koa-functions-api-1.0.3.tgz","fileCount":4,"unpackedSize":9185,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYwciCRA9TVsSAnZWagAA7MYP+wfX2V3rGK89iVyMUbLe\nzozEQnY+4NHSjppEihteT7/OH3SMAe802OHUGM7R7YP22ggI0+/s5fhMj06q\nbeQfgwb18R85I2PqeSozomo0DKq3LcQ+JvJRsYHLPY0Ta2LLs/2eUfQEgv7Y\naucNWFj7LpPp2Joqx3AmrNPZbfhHmpo6yC4MO1MDD3uVTSf6oNf4ODzGvl3Z\nPjPw00DM/xYiYIREa/rDTSVXG7kr31nmDoednVS+SQRx/mz5tilgp9apCz8F\nImpQrt1f5y1wPiotISrMtCGzkOndu3kY3alElSLtf0vBEQDMr6xRN7Ol/iK5\nbJQjNhNGDX/c43pWKAs/6/Thr8haSpcPS0ZCGYXvEalFiuloptg9JHkgp8DW\nMTsnrO9148dtqWa8SqwMkG4emMoXfrdVprZqOecbrZaoyecHTCRGoEAQ87c3\neINc6m6wFV9r7ECtbgVBnj8AmmpcAoe3HymVkbzGA3BsEhvKBjI9c2iVrQhP\nVq8pTm58PAAkiwcgxqqWcNBvXlF3Y8t0xIpTYqBVo4AhVfYL8jFxFvRrBu88\nb1jacYjS5aAEbV43K1LX/JpDjk+47iZSxah72zWmgk3Ase0TjilUeJ1ZB+rh\n2MEXJliYfeZLmKMPHSWyscj2glPNsMgiG26vq438SSNJesONBuEHWe/5ymXH\nlc//\r\n=n9pc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC4JtJ3nweqezOUZhy0fSzTv0LQnsA8qlyM1UjPZu/6YQIhAJMyJn/puVgWtRl6AJIoGdjIN/Y3lIecvxsSG93yYSdu"}]},"_npmUser":{"name":"eryue","email":"915905174@qq.com"},"directories":{},"maintainers":[{"name":"eryue","email":"915905174@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/koa-functions-api_1.0.3_1617102625551_0.9986292564729586"},"_hasShrinkwrap":false}},"time":{"created":"2021-02-25T06:24:20.446Z","1.0.0":"2021-02-25T06:24:20.856Z","modified":"2022-04-04T13:31:21.550Z","1.0.1":"2021-03-30T10:19:21.631Z","1.0.2":"2021-03-30T10:59:26.007Z","1.0.3":"2021-03-30T11:10:25.735Z"},"maintainers":[{"name":"eryue","email":"915905174@qq.com"}],"description":"基于 koa2 的函数式单路由接口开发方式","homepage":"https://github.com/all-in-js/koa-functions-api#readme","keywords":["koa","single route","router","function api"],"repository":{"type":"git","url":"git+https://github.com/all-in-js/koa-functions-api.git"},"author":{"name":"famanoder"},"bugs":{"url":"https://github.com/all-in-js/koa-functions-api/issues"},"license":"MIT","readme":"\n# koa-functions-api\n\n基于 koa2 的函数式单路由接口开发方式\n\n* inspired by graphyql, 暂未实现 schema\n* 函数即接口服务，一个函数类似于 RESTFUL 中的一个资源，每个函数可组合、可复用\n* 提供一个接口和多个函数服务，前端通过一个接口请求各种函数服务\n* 支持前端合并请求，大大降低请求时间，防止接口依赖导致的响应时间过长的问题\n* 统一的异常监听和性能监控\n\n### 服务端\n\n* **安装**\n\n```bash\nyarn add @all-in-js/koa-functions-api\n```\n\n* **使用中间件**\n\n```js\nimport { functionsApiMiddleware } from '@all-in-js/koa-functions-api';\n\napp.use(functionsApiMiddleware({\n  // path: '/api/functions',\n  // namespace: 'api',\n  functions: [\n    function helloWorld(cx, vars) {\n      return 'hello, world.';\n    }\n  ],\n  errorHandler(cx, err) {\n    console.log(err);\n    cx.body = err.message;\n  }\n}));\n```\n\n* **参数配置**\n\n| 参数名 | 类型 | 说明 | 默认值 | \n| ----- | ----- | ----- | ----- |\n| path | string | 前端请求的接口 | /api/functions |\n| namespace | string | 函数的命名空间，前端请求函数时以此为前缀 | api |\n| functions | [(cx, vars?) => void] | 所有的函数服务 | [] |\n| errorHandler | (cx, err) => void | 异常处理函数 | - |\n\n### 前端使用\n\n固定接收前端传过来的两个参数:\n* **$fns:** 请求的函数服务，格式为 {namespace}/{fnName}，组合模式下为数组即可\n* **$vars:** 对应函数服务需要的参数，组合模式下为数组，与 $fns 一一对应\n\n\n```js\nfetch('/api/functions', {\n  method: 'POST',\n  headers: {\n    'Content-Type': 'application/json'\n  },\n  body: JSON.stringify({\n    $vars: {},\n    $fns: 'api/helloWorld'\n  })\n});\n```\n\n> 直接使用 fetch 稍显麻烦？使用 [fetch-functions-api](https://github.com/all-in-js/fetch-functions-api) 快速上手！\n\n// TODO:\n函数执行的信息统计；","readmeFilename":"README.md"}