{"_id":"@bucai/egg-apollo-client","_rev":"1-8854186281a0ac23055d8dc6d342a892","name":"@bucai/egg-apollo-client","dist-tags":{"latest":"2.0.5"},"versions":{"2.0.4":{"name":"@bucai/egg-apollo-client","version":"2.0.4","description":"携程 Apollo 配置中心 egg 客户端版本","eggPlugin":{"name":"apollo"},"types":"index.d.ts","egg":{"typescript":true,"declarations":true,"require":["egg-ts-helper/register"]},"scripts":{"test-local":"egg-bin test","test":"npm run test-local","cov":"egg-bin cov","tsc":"tsc --declaration -p tsconfig.json","watch":"tsc --noEmit -w -p tsconfig.json","ci":"npm run lint && npm run cov && npm run tsc","autod":"autod","lint":"tslint --project . -c tslint.json","clean":"ets clean"},"dependencies":{"@bucai/apollo-client":"^2.0.9","egg":"^2.20.1","lodash.clonedeep":"^4.5.0","lodash.merge":"^4.6.2"},"devDependencies":{"@types/mocha":"^2.2.40","@types/node":"^7.0.12","@types/supertest":"^2.0.0","autod":"^3.0.1","autod-egg":"^1.1.0","egg-bin":"^4.13.1","egg-ci":"^1.8.0","egg-mock":"^3.22.2","egg-ts-helper":"^1.25.8","supertest":"^4.0.2","tslib":"^1.9.0","tslint":"^5.0.0","tslint-config-egg":"^1.0.0","typescript":"^3.0.0"},"engines":{"node":">=8.9.0"},"ci":{"version":"8"},"repository":{"type":"git","url":""},"eslintIgnore":["coverage"],"author":{"name":"tunan"},"maintainers":[{"name":"notbucai","email":"1450941858@qq.com"}],"license":"MIT","homepage":"https://github.com/xuezier/egg-apollo-client","gitHead":"de3043ccbad837d67f9e4a9fa4bc5d3a37b4aa7c","_id":"@bucai/egg-apollo-client@2.0.4","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-Fbv866/MwFXX8YXGVU5IjSUiAcp90kGVtW8c68Dwz3RruLKbmhpD0vEN2/b3wwrosjIB5+Cr4KK8WqrCYf3gUw==","shasum":"4764462cb87e42c51082e6696042e28c9da0ab5d","tarball":"https://registry.npmjs.org/@bucai/egg-apollo-client/-/egg-apollo-client-2.0.4.tgz","fileCount":9,"unpackedSize":9060,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICyWXbwlPMFaR0oQU6vcjrfjm5iON9dQyH5gnDcOhQXzAiBJ4RWcZsdkGYH0EkTYTkot/CzxPXip6uDcTN+I8yUVFQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjOBMnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpoeA//c0fc4pXmJzuvJcjf0GBUHqGvNrXmZDR308nU+qfLFyjPai52\r\nVL4FLNj60/d+dQtVye45sfSafsIzB7OI2potGmovcxMBQKeI+/Jma1zXf+mt\r\nePYbeAFRykHrfC7LQH3l+yhmEa4RiA6mON5leLvMHwjQU/xdI2GsZ00/kv4e\r\nub3lALs+xJzPwgAAUQIw1Gd6LrEkVMndIjwCRsu4WpZqdpI/KcB5edJvOK0K\r\nQQuDDDsNYHfpjKjEZas+vB88c9r6d1MvSmPOpR8zjpU0kKkD5Pr/QhLTptt9\r\nzJ/yjFHoLnu94tTXV/X0mNpH0k14qz7E3+p97VwxmX9TFIV5LLrKouztpwis\r\neiXpykV+Le7xUToQAYhJXVw4gpCP4o6dtk7zpNgPZQ1SIlf2SPeWZhBOkPYh\r\nblH8N3Ce/emTdaw4yIQd8icylayw3oLg1xXjuCz6WMfZ2sIAR0m1GB0/Zx6W\r\n7GBuxjzAuPhqmXK3/g+jcyfary0WSjnKz4HiyIYEHuA1uEJiLQWrzLxtaDv6\r\n4JP6DpPK45FdTlZo2xeCcTrask3NuCC/rTnZHxyknTqJwYagIpi6YR6lRqDL\r\nHXnCmTQwLfbW5De8M9v5v91a2WdYVTUGg7LmB/naDQOuYEVM7lnRSN/WN3a9\r\nH3JBDsLOGHfs+HzY0uAmwEh1fcIRuE9bcpw=\r\n=mGQW\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"notbucai","email":"1450941858@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/egg-apollo-client_2.0.4_1664619303373_0.15951227959616765"},"_hasShrinkwrap":false},"2.0.5":{"name":"@bucai/egg-apollo-client","version":"2.0.5","description":"携程 Apollo 配置中心 egg 客户端版本","eggPlugin":{"name":"apollo"},"types":"index.d.ts","egg":{"typescript":true,"declarations":true,"require":["egg-ts-helper/register"]},"scripts":{"test-local":"egg-bin test","test":"npm run test-local","cov":"egg-bin cov","tsc":"tsc --declaration -p tsconfig.json","watch":"tsc --noEmit -w -p tsconfig.json","ci":"npm run lint && npm run cov && npm run tsc","autod":"autod","lint":"tslint --project . -c tslint.json","clean":"ets clean"},"dependencies":{"@bucai/apollo-client":"^2.0.9","egg":"^2.20.1","lodash.clonedeep":"^4.5.0","lodash.merge":"^4.6.2"},"devDependencies":{"@types/mocha":"^2.2.40","@types/node":"^7.0.12","@types/supertest":"^2.0.0","autod":"^3.0.1","autod-egg":"^1.1.0","egg-bin":"^4.13.1","egg-ci":"^1.8.0","egg-mock":"^3.22.2","egg-ts-helper":"^1.25.8","supertest":"^4.0.2","tslib":"^1.9.0","tslint":"^5.0.0","tslint-config-egg":"^1.0.0","typescript":"^3.0.0"},"engines":{"node":">=8.9.0"},"ci":{"version":"8"},"repository":{"type":"git","url":""},"eslintIgnore":["coverage"],"author":{"name":"tunan"},"maintainers":[{"name":"notbucai","email":"1450941858@qq.com"}],"license":"MIT","homepage":"https://github.com/xuezier/egg-apollo-client","gitHead":"de3043ccbad837d67f9e4a9fa4bc5d3a37b4aa7c","_id":"@bucai/egg-apollo-client@2.0.5","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-E2TDOoRITT4qpPrAnCyyHUerH+IOHB5QZYT4mExltoWCoMzEZKlgDkpUIYL7Gc2fJ+dlUKupPDL/9qduCcL7Ow==","shasum":"dea84ed091a0d427f088ee831cd3275d6da02f5a","tarball":"https://registry.npmjs.org/@bucai/egg-apollo-client/-/egg-apollo-client-2.0.5.tgz","fileCount":25,"unpackedSize":28045,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+8uk88YfWM701MnlQdPZyQ1WLkbWsU3dYJOBuc9PeZAIgGnrbKq1ZriGgEGJpM25DSrSIr++X65NrGs6zEHDG3kU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjOBOPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmppYBAAogQUQTWGRN+ZrC63V+HNMN2s6Y2VYtgoQG8jY719xVskurok\r\ny3SerE6svYJeIi7cRTT7HzAkYhM87rVQJK2O/0PG55CmX/Tkk6JSBFKiBksG\r\nTR65hRm9Z6X1RPXvltBTjXM8upCr4aD+25JOYab7i3RsFOWGNbZPWhxMA/f4\r\nyPamIYJcHqSsfK9hoHLDH32Jet4uDibUBv0M8v7D4Uv8zA+TClDkUYMZsew3\r\nLFsAL5DvgKdSQ15OzknIwkALr3coT73maDFTw+llnJBRJyQTzVYwjQFhnUfu\r\nHT+sZ6vyQkVTBcgMpNBitFs0y6qHh6u/44uita5yng6/2HF/+qETgjF/lZv3\r\nH+TKSRUkLiLB4SYc/E62abyhEFgDHrFJF0tx8z+RGT7pAvDCH2RnPkOAt7Sa\r\ndgRW9kAN6q8Q5705y/Ni1T4IfodOhDH5gUpQ8g5laYq1nO0VVBNqSxVho9sj\r\n9GhRFk/nDCs1PgtwtDmR+wzp/HRqY4xUWr0WVEqbl3s7TIAj83qpDYJ2TtAE\r\ncj9aUmquE2w/mSluMwoPVsAltLa8MSWLTTWSoWi9yTE8LXXsj/FTMKRHfKzr\r\nJk1WAl/Pgyl4b7rbRL1G7ExDyK1GWTHi68vgSSBsS6ol/1kPz9Ks/Tdkrrsw\r\n69hriIcRhrdMgihZ9aBKMjJBW+lqugnuMzU=\r\n=KMxG\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"notbucai","email":"1450941858@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/egg-apollo-client_2.0.5_1664619407439_0.4600987735457718"},"_hasShrinkwrap":false}},"time":{"created":"2022-10-01T10:15:03.312Z","2.0.4":"2022-10-01T10:15:03.636Z","modified":"2022-10-01T10:16:47.755Z","2.0.5":"2022-10-01T10:16:47.674Z"},"maintainers":[{"name":"notbucai","email":"1450941858@qq.com"}],"description":"携程 Apollo 配置中心 egg 客户端版本","homepage":"https://github.com/xuezier/egg-apollo-client","repository":{"type":"git","url":""},"author":{"name":"tunan"},"license":"MIT","readme":"# EGG-APOLLO-CLIENT\n[![NPM version][npm-image]][npm-url]\n\n[npm-image]: https://img.shields.io/npm/v/@gaoding/egg-apollo-client.svg?style=flat-square\n[npm-url]: https://npmjs.org/package/@gaoding/egg-apollo-client\n\n    ******************************************************************\n    ******************************************************************\n    **********              代码千万行，注释第一行              **********\n    **********              编码不规范，同事泪两行              **********\n    ******************************************************************\n    ******************************************************************\n\n携程 Apollo 配置中心 egg 客户端版本\n\n## FIRST\n使用时，如果遇到编译失败，请确保你的系统安装有 curl 命令行工具\n\n## Installation\n```bash\nnpm i @gaoding/egg-apollo-client [--save]\n```\n\n## Usage\nadd plugin\n```js\n// config/plugin.js or config/plugin.ts\nexports.apollo = {\n    enable: true,\n    package: '@gaoding/egg-apollo-client'\n}\n```\n\nadd apollo plugin config\n```js\n// config/config.[env].js\nconfig.apollo = {\n    config_server_url: 'http[s]://xxxxxxx', // required, 配置中心服务地址\n    app_id: 'xxx',                          // required, 需要加载的配置\n    init_on_start: true,                    // optional, 在 app 启动时同时加载配置，加载的配置会在插件加载前被加载\n    cluster_name: 'xxx',                    // optional, 加载配置的集群名称, default: 'default'\n    namespace_name: 'xxx',                  // optional, 加载配置的命名空间, default: 'application'\n    release_key: 'xxx',                     // optional, 加载配置的版本 key, default: ''\n    ip: 'xxx'                               // optional,\n\n    set_env_file: false,                    // optional, 是否写入到 env 文件, default: false\n    env_file_path: 'xxxx',                  // optional, 写入的 env 文件路径, default: ${os.tmpdir()}/.env.apollo\n    watch: false,                           // optional, 长轮询查看配置是否更新, default: false\n    timeout: 50000,                         // optional, 长轮询 timeout 设置，默认 50000\n}\n```\n\n在 config 目录下添加新文件 config.apollo.js\n```js\n// config.apollo.js\nmodule.exports = (apollo, appConfig) => {\n    // 直接提取配置\n    const env = apollo.get('${namespace}.NODE_ENV');\n    // 不添加 namespace 前缀的时候，默认使用 application 的配置\n    // 如果 application 不包含该配置，则提取 process.env 里面的配置\n    // const env = apollo.get('NODE_ENV');\n    // 提取类型配置\n    apollo.getString('${namespace}.${string_config}');\n    apollo.getNumber('${namespace}.${number_config}');\n    apollo.getBoolean('${namespace}.${boolean_config}');\n    apollo.getJSON('${namespace}.${json_config}');\n    apollo.getDate('${namespace}.${date_config}');\n\n\n    // 提取指定 namespace 内容\n    const application = apollo.getNamespace('application');\n    // 提取配置\n    const config1 = application.get('config1');\n    // 提取 string 类型配置\n    const str = application.getString('config2');\n    // 提取 number 类型配置\n    const num = application.getNumber('config3');\n    // 提取 boolean 类型配置\n    const bool = application.getBoolean('config4');\n    // 提取 json\n    const json = application.getJSON('config5');\n    // 提取 date\n    const date = application.getDate('config6');\n\n    // 提取所有配置内容\n    const all = apollo.getAll();\n    // 可以从 all 中提取需要的 namespace 配置\n    // const application = all.application\n    // const config1 = application.get('config1');\n    // const str = application.getString('config2');\n    // const num = application.getNumber('config3');\n    // const bool = application.getBoolean('config4');\n    // const json = application.getJSON('config5');\n    // const date = application.getDate('config6');\n\n    return {\n        logger: {\n            ...appConfig.logger,\n            level: apollo.get('LOGGER_LEVEL')\n        }\n        ....\n    }\n}\n```\n\n### 启动自定义\negg-apollo-client 没有特殊配置只加载符合配置项(config.apollo)的配置信息，如果有需要其他的额外配置，可以另外通过启动自定义来配置\n```js\n// app.js\nclass AppBootHook {\n\n  constructor(app) {\n    this.app = app;\n  }\n\n  configWillLoad() {\n      // configWillLoad 是最后一次修改插件配置的时机，此方法内只能使用同步方法\n      // 插件在实例化之后不能再修改配置，所以如果有需要加载插件配置的内容，需要在这里加载\n      // apollo.init 结合了 http.request 的同步方法，该方法会阻塞知道拿到数据或请求超时，可以使用该方法在这里加载配置\n      this.app.apollo.init({...});\n  }\n}\n```\n\n## Tips\n- ✅ 支持初始化的同步加载配置，解决远程加载配置是异步的问题\n- ✅ config.apollo.js 是 apollo 的配置文件，会在所有配置加载之后覆盖原有配置\n- ✅ 支持将配置写入到本地文件，需要开启 set_env_file\n- ✅ 当读取远程配置出错时，兼容本地 env 文件读取, 需要开启 set_env_file\n\n## Todo\n- ✅ 支持配置订阅模式，暂时没想到已有项目的实用性，因为插件的加载是不可修改的，更新配置要让插件生效就要重启进程\n- 🔥 支持多集群加载\n","readmeFilename":"README.md"}