hitokoto-osc / hitokoto-api Goto Github PK
View Code? Open in Web Editor NEW版本:1,现行的 API 运行框架。
Home Page: https://v1.hitokoto.cn
License: Apache License 2.0
版本:1,现行的 API 运行框架。
Home Page: https://v1.hitokoto.cn
License: Apache License 2.0
Promise based HTTP client for the browser and node.js
Library home page: https://registry.npmjs.org/axios/-/axios-0.19.2.tgz
Path to dependency file: hitokoto-api/package.json
Path to vulnerable library: hitokoto-api/node_modules/axios/package.json
Dependency Hierarchy:
Found in base branch: master
Axios NPM package 0.21.0 contains a Server-Side Request Forgery (SSRF) vulnerability where an attacker is able to bypass a proxy by providing a URL that responds with a redirect to a restricted host or IP address.
Publish Date: 2020-11-06
URL: CVE-2020-28168
Base Score Metrics:
Type: Upgrade version
Origin: axios/axios@c7329fe
Release Date: 2020-11-06
Fix Resolution: axios - 0.21.1
Step up your Open Source Security Game with WhiteSource here
$ curl -I https://v1.hitokoto.cn
the result:
HTTP/1.1 200 OK
Date: Thu, 16 Jul 2020 03:27:50 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 266
Connection: keep-alive
X-Request-Id: 7a6666b7-0f08-4b67-8b84-351ad7b3b3e5
X-DNS-Prefetch-Control: off
X-Frame-Options: SAMEORIGIN
Strict-Transport-Security: max-age=15552000; includeSubDomains
X-Download-Options: noopen
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Cache: MISS from cache.51cdn.com
X-Via: 1.1 VM-HSN-01JxZ81:5 (Cdn Cache Server V2.0)
X-Ws-Request-Id: 5f0fc936_VM-HSN-01z0j80_21660-41675
max_length
如果小于 min_length
可能出现问题Merge multiple objects into one, optionally creating a new cloned object. Similar to the jQuery.extend but more flexible. Works in Node.js and the browser.
Library home page: https://registry.npmjs.org/merge/-/merge-1.2.1.tgz
Path to dependency file: hitokoto-api/package.json
Path to vulnerable library: hitokoto-api/node_modules/merge/package.json
Dependency Hierarchy:
Found in base branch: master
All versions of package merge are vulnerable to Prototype Pollution via _recursiveMerge .
Publish Date: 2021-02-18
URL: CVE-2020-28499
Base Score Metrics:
Step up your Open Source Security Game with WhiteSource here
Regular expression for matching semver versions
Library home page: https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz
Path to dependency file: hitokoto-api/package.json
Path to vulnerable library: hitokoto-api/node_modules/semver-regex/package.json
Dependency Hierarchy:
Found in base branch: master
semver-regex is vulnerable to Inefficient Regular Expression Complexity
Publish Date: 2021-09-15
URL: CVE-2021-3795
Base Score Metrics:
Type: Upgrade version
Origin: https://github.com/sindresorhus/semver-regex/releases/tag/v4.0.1
Release Date: 2021-09-15
Fix Resolution: semver-regex - 3.1.3,4.0.1
Step up your Open Source Security Game with WhiteSource here
记得增加网易云cookie功能
Lodash modular utilities.
Library home page: https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz
Path to dependency file: /tmp/ws-scm/hitokoto-api/package.json
Path to vulnerable library: /tmp/ws-scm/hitokoto-api/node_modules/commitizen/node_modules/lodash/package.json
Dependency Hierarchy:
Found in HEAD commit: 8a17697b23169cbd44ec1d9bce4e8d932da7d05a
Prototype pollution attack when using _.zipObjectDeep in lodash <= 4.17.15.
Publish Date: 2020-07-15
URL: CVE-2020-8203
Base Score Metrics:
Type: Upgrade version
Origin: https://www.npmjs.com/advisories/1523
Release Date: 2020-07-23
Fix Resolution: lodash - 4.17.19
Step up your Open Source Security Game with WhiteSource here
There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.
Error type: undefined. Note: this is a nested preset so please contact the preset author if you are unable to fix it yourself.
由于是上游依赖的不兼容问题,因此我们打开此问题以追踪此问题的解决进度。
以下为上游问题:
: winstonjs/winston#1797
新的机制不会 移除,更新 已变动的句子(例如:句子错误,在数据源对其进行了纠正;句子遭撤回申请,遭到下架)
JavaScript library for DOM operations
Library home page: https://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.1/jquery.min.js
Path to dependency file: /tmp/ws-scm/hitokoto-api/node_modules/redeyed/examples/browser/index.html
Path to vulnerable library: /hitokoto-api/node_modules/redeyed/examples/browser/index.html
Dependency Hierarchy:
Found in HEAD commit: b53568a5c0634dbc3107208ca611a26fa33a8e06
jQuery before 3.0.0 is vulnerable to Cross-site Scripting (XSS) attacks when a cross-domain Ajax request is performed without the dataType option, causing text/javascript responses to be executed.
Publish Date: 2018-01-18
URL: CVE-2015-9251
Base Score Metrics:
Type: Upgrade version
Origin: https://nvd.nist.gov/vuln/detail/CVE-2015-9251
Release Date: 2018-01-18
Fix Resolution: jQuery - v3.0.0
Step up your Open Source Security Game with WhiteSource here
https对iot极不友好 对于内存小的单片机来说特吃内存 一言的内容也不是什么机密嘛qwq球球了
Generates an asynchronous resolver function from a PAC file
Library home page: https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz
Path to dependency file: hitokoto-api/package.json
Path to vulnerable library: hitokoto-api/node_modules/pac-resolver/package.json
Dependency Hierarchy:
Found in base branch: master
This affects the package pac-resolver before 5.0.0. This can occur when used with untrusted input, due to unsafe PAC file handling. NOTE: The fix for this vulnerability is applied in the node-degenerator library, a dependency written by the same maintainer.
Publish Date: 2021-08-24
URL: CVE-2021-23406
Base Score Metrics:
Type: Upgrade version
Origin: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-23406
Release Date: 2021-08-24
Fix Resolution: degenerator - 3.0.1
Step up your Open Source Security Game with WhiteSource here
计划使用 jest
替代 mocha 以利用其 mock
特性。
ioredis
替代 node-redis
Promise
bluebird
的支持A Node.js module for sending notifications on native Mac, Windows (post and pre 8) and Linux (or Growl as fallback)
Library home page: https://registry.npmjs.org/node-notifier/-/node-notifier-7.0.2.tgz
Path to dependency file: hitokoto-api/package.json
Path to vulnerable library: hitokoto-api/node_modules/node-notifier/package.json
Dependency Hierarchy:
Found in base branch: master
This affects the package node-notifier before 9.0.0. It allows an attacker to run arbitrary commands on Linux machines due to the options params not being sanitised when being passed an array.
Publish Date: 2020-12-11
URL: CVE-2020-7789
Base Score Metrics:
Type: Upgrade version
Origin: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-7789
Release Date: 2020-12-11
Fix Resolution: 9.0.0
Step up your Open Source Security Game with WhiteSource here
当句子指定一个一些分类不存在长度区间的句子,会间断性的返回400
Get, set, or delete a property from a nested object using a dot path
Library home page: https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz
Path to dependency file: /tmp/ws-scm/hitokoto-api/package.json
Path to vulnerable library: /tmp/ws-scm/hitokoto-api/node_modules/conventional-changelog-conventionalcommits/node_modules/dot-prop/package.json
Dependency Hierarchy:
Found in HEAD commit: b53568a5c0634dbc3107208ca611a26fa33a8e06
Prototype pollution vulnerability in dot-prop npm package version 5.1.0 and earlier allows an attacker to add arbitrary properties to JavaScript language constructs such as objects.
Publish Date: 2020-02-04
URL: CVE-2020-8116
Base Score Metrics:
Type: Upgrade version
Origin: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-8116
Release Date: 2020-02-04
Fix Resolution: dot-prop - 5.1.1
Step up your Open Source Security Game with WhiteSource here
JavaScript library for DOM operations
Library home page: https://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.1/jquery.min.js
Path to dependency file: /tmp/ws-scm/hitokoto-api/node_modules/redeyed/examples/browser/index.html
Path to vulnerable library: /hitokoto-api/node_modules/redeyed/examples/browser/index.html
Dependency Hierarchy:
Found in HEAD commit: b53568a5c0634dbc3107208ca611a26fa33a8e06
jQuery before 1.9.0 is vulnerable to Cross-site Scripting (XSS) attacks. The jQuery(strInput) function does not differentiate selectors from HTML in a reliable fashion. In vulnerable versions, jQuery determined whether the input was HTML by looking for the '<' character anywhere in the string, giving attackers more flexibility when attempting to construct a malicious payload. In fixed versions, jQuery only deems the input to be HTML if it explicitly starts with the '<' character, limiting exploitability only to attackers who can control the beginning of a string, which is far less common.
Publish Date: 2018-01-18
URL: CVE-2012-6708
Base Score Metrics:
Type: Upgrade version
Origin: https://nvd.nist.gov/vuln/detail/CVE-2012-6708
Release Date: 2018-01-18
Fix Resolution: jQuery - v1.9.0
Step up your Open Source Security Game with WhiteSource here
Easy as cake e-mail sending from your Node.js applications
Library home page: https://registry.npmjs.org/nodemailer/-/nodemailer-6.4.11.tgz
Path to dependency file: hitokoto-api/package.json
Path to vulnerable library: hitokoto-api/node_modules/nodemailer/package.json
Dependency Hierarchy:
Found in base branch: master
This affects the package nodemailer before 6.4.16. Use of crafted recipient email addresses may result in arbitrary command flag injection in sendmail transport for sending mails.
Publish Date: 2020-11-12
URL: CVE-2020-7769
Base Score Metrics:
Type: Upgrade version
Origin: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-7769
Release Date: 2020-11-12
Fix Resolution: v6.4.16
Step up your Open Source Security Game with WhiteSource here
Uncaught TypeError: Cannot set properties of null (setting 'innerText')
at hitokoto (v1.hitokoto.cn/:1)
at v1.hitokoto.cn/:1
虽然可以用但是会经常失灵
使用的接口的时候获取到的句子有很大概率是重复的,未指定分类。一句话在一个小时之内每60s刷新一次的情况下会重复三四次
Promise based HTTP client for the browser and node.js
Library home page: https://registry.npmjs.org/axios/-/axios-0.17.1.tgz
Path to dependency file: /tmp/ws-scm/hitokoto-api/package.json
Path to vulnerable library: /tmp/ws-scm/hitokoto-api/node_modules/netease-music-sdk/node_modules/axios/package.json
Dependency Hierarchy:
Found in HEAD commit: b53568a5c0634dbc3107208ca611a26fa33a8e06
Axios up to and including 0.18.0 allows attackers to cause a denial of service (application crash) by continuing to accepting content after maxContentLength is exceeded.
Publish Date: 2019-05-07
URL: CVE-2019-10742
Base Score Metrics:
Type: Upgrade version
Origin: axios/axios#1098
Release Date: 2019-05-31
Fix Resolution: 0.19.0
Step up your Open Source Security Game with WhiteSource here
JavaScript library for DOM operations
Library home page: https://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.1/jquery.min.js
Path to dependency file: /tmp/ws-scm/hitokoto-api/node_modules/redeyed/examples/browser/index.html
Path to vulnerable library: /hitokoto-api/node_modules/redeyed/examples/browser/index.html
Dependency Hierarchy:
Found in HEAD commit: b53568a5c0634dbc3107208ca611a26fa33a8e06
In jQuery versions greater than or equal to 1.2 and before 3.5.0, passing HTML from untrusted sources - even after sanitizing it - to one of jQuery's DOM manipulation methods (i.e. .html(), .append(), and others) may execute untrusted code. This problem is patched in jQuery 3.5.0.
Publish Date: 2020-04-29
URL: CVE-2020-11022
Base Score Metrics:
Type: Upgrade version
Origin: https://blog.jquery.com/2020/04/10/jquery-3-5-0-released/
Release Date: 2020-04-29
Fix Resolution: jQuery - 3.5.0
Step up your Open Source Security Game with WhiteSource here
使用场景:
目前我把一言应用在小程序中。返回的信息显示在页面底部。
但是多次调用后发现一个问题。有些句子非常的长,这就导致了页面排版出现问题。
建议:
能否增加一个语句长度的控制。比如
https://v1.hitokoto.cn/?c=f&encode=text?len=5
就只会返回长度在5以内的文本信息
前台刷新页面获取句子出现报错 400
后台找到报错内容
2021-02-15T12:36:20.047Z [19062] - info: [core] Web Server is started, listening on port: 8000
2021-02-15T12:36:23.262Z [19062] - error: [hitokoto.updateCategories] occur error while updating, error details:
2021-02-15T12:36:23.263Z [19062] - error: message=tmp is not iterable, stack=TypeError: tmp is not iterable
at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)
at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)
at async logger (/home/v1/your_workdir/src/logger.js:55:7)
at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5
at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)
at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)
at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3
日志:
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:19:17.016Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:19:17.016Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:19:18.917Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:19:18.917Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:19:19.779Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:19:19.780Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:19:20.494Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:19:20.494Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:19:21.214Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:19:21.215Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:19:21.502Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:19:21.503Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:19:21.914Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:19:21.914Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:19:22.376Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:19:22.376Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:19:22.679Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:19:22.679Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:19:24.947Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:19:24.947Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:19:25.596Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:19:25.596Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:19:26.304Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:19:26.304Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:19:26.888Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:19:26.888Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:19:27.537Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:19:27.537Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:19:27.890Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:19:27.890Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:19:28.298Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:19:28.298Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:19:28.763Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:19:28.764Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:19:29.030Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:19:29.030Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:23:57.640Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:23:57.641Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:24:51.954Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:24:51.954Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:25:57.879Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:25:57.879Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:33:19.389Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:33:19.390Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:36:23.262Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:36:23.263Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:36:24.906Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:36:24.906Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:36:25.618Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:36:25.619Z"}
{"level":"error","message":"[hitokoto.updateCategories] occur error while updating, error details:","timestamp":"2021-02-15T12:36:26.490Z"}
{"message":"tmp is not iterable","stack":"TypeError: tmp is not iterable\n at updateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:81:28)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\n at async exports.tickUpdateCategories (/home/v1/your_workdir/src/controllers/hitokoto/_utils.js:109:12)\n at async module.exports (/home/v1/your_workdir/src/controllers/hitokoto/entry.js:14:3)\n at async logger (/home/v1/your_workdir/src/logger.js:55:7)\n at async /home/v1/your_workdir/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5\n at async bodyParser (/home/v1/your_workdir/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)\n at async _jsonp (/home/v1/your_workdir/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)\n at async /home/v1/your_workdir/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3\n at async sendMail (/home/v1/your_workdir/src/middlewares/MailError.js:16:5)","level":"error","timestamp":"2021-02-15T12:36:26.490Z"}
另外重新启动或重新安装,错误依然在。错误代码:400
the mighty option parser used by yargs
Library home page: https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz
Path to dependency file: /tmp/ws-scm/hitokoto-api/package.json
Path to vulnerable library: /tmp/ws-scm/hitokoto-api/node_modules/meow/node_modules/yargs-parser/package.json
Dependency Hierarchy:
Found in HEAD commit: b53568a5c0634dbc3107208ca611a26fa33a8e06
yargs-parser could be tricked into adding or modifying properties of Object.prototype using a "proto" payload.
Publish Date: 2020-03-16
URL: CVE-2020-7608
Base Score Metrics:
Type: Upgrade version
Origin: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-7608
Release Date: 2020-03-16
Fix Resolution: v18.1.1;13.1.2;15.0.1
Step up your Open Source Security Game with WhiteSource here
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
These updates have all been created already. Click a checkbox below to force a retry/rebase of any.
@koa/bodyparser
, esbuild
, webpack
)@types/jest
, eslint-plugin-jest
, jest
, jest-extended
, nodemon
)@babel/eslint-parser
, eslint
, eslint-config-prettier
, eslint-plugin-import
, eslint-plugin-n
, eslint-plugin-prettier
, eslint-plugin-promise
, prettier
)@babel/core
, @babel/preset-env
, async
, commander
, cron
, joi
, semver
, uuid
, winston
)@sentry/integrations
, @sentry/node
, @sentry/tracing
, esbuild
, koa
, koa-router
, regenerator-runtime
, release-it
, sequelize
, supercharge/redis-github-action
, supertest
, yarn
)NeteaseCloudMusicApi
, fast-json-stringify
, ioredis
)@commitlint/cli
, @commitlint/config-conventional
, conventional-changelog-conventionalcommits
, eslint
, eslint-plugin-html
, eslint-plugin-n
, eslint-plugin-promise
, husky
, lint-staged
)chalk
, commander
, cron
, pify
, uuid
)docker-compose.debug.yml
docker-compose.yml
docker/alinode/Dockerfile
registry.cn-hangzhou.aliyuncs.com/aliyun-node/alinode v6.8.0-alpine
docker/mainline/Dockerfile
node 20-alpine
.github/workflows/Docker.yml
docker/setup-qemu-action v2
docker/setup-buildx-action v2
docker/login-action v2
docker/build-push-action v4
.github/workflows/deploy_to_dockerhub_latest.yml
docker/setup-qemu-action v2
docker/setup-buildx-action v2
docker/login-action v2
docker/build-push-action v4
docker/setup-qemu-action v2
docker/setup-buildx-action v2
docker/login-action v2
docker/build-push-action v4
.github/workflows/deploy_to_dockerhub_release.yml
docker/setup-qemu-action v2
docker/setup-buildx-action v2
docker/login-action v2
docker/build-push-action v4
docker/setup-qemu-action v2
docker/setup-buildx-action v2
docker/login-action v2
docker/build-push-action v4
.github/workflows/node.js.yml
actions/checkout v4@3df4ab11eba7bda6032a0b82a6bb43b11571feac
actions/setup-node v3
supercharge/redis-github-action 1.5.0
actions/cache v3
actions/checkout v4@3df4ab11eba7bda6032a0b82a6bb43b11571feac
actions/setup-node v3
actions/cache v3
package.json
@hitokoto/koa-jsonp 3.0.7
@hitokoto/koa-respond 3.0.3
@koa/bodyparser ^5.0.0
@koa/cors ^4.0.0
@sentry/integrations 7.57.0
@sentry/node 7.57.0
@sentry/tracing 7.57.0
NeteaseCloudMusicApi 4.13.6
async 3.2.4
bytes 3.1.2
chalk 4.1.2
commander 11.0.0
cron 2.3.1
fast-json-stringify 5.8.0
flatstr 1.0.12
got 11.8.6
humanize-number 0.0.2
ioredis 5.3.2
joi 17.9.2
js-yaml 4.1.0
koa 2.14.2
koa-compress 5.1.1
koa-favicon 2.1.0
koa-helmet 7.0.2
koa-query-pretty 0.3.0
koa-router 12.0.0
lodash 4.17.21
mysql2 3.5.0
nconf 0.12.1
nconf-yaml 1.0.2
nodemailer 6.9.3
passthrough-counter 1.0.0
pify 5.0.0
semver 7.5.4
sequelize 6.32.1
uuid 9.0.0
winston 3.9.0
@babel/core 7.22.8
@babel/eslint-parser 7.23.3
@babel/preset-env 7.22.7
@commitlint/cli 17.8.1
@commitlint/config-conventional 17.8.1
@types/jest 29.5.2
commitizen 4.3.0
conventional-changelog-conventionalcommits 7.0.2
cz-conventional-changelog 3.3.0
esbuild ^0.19.5
eslint 8.53.0
eslint-config-prettier 9.0.0
eslint-config-standard 17.1.0
eslint-plugin-html 7.1.0
eslint-plugin-import 2.29.0
eslint-plugin-jest 27.2.2
eslint-plugin-n 16.3.1
eslint-plugin-prettier 5.0.1
eslint-plugin-promise 6.1.1
husky 8.0.3
jest 29.6.1
jest-extended 4.0.0
lint-staged 14.0.1
nodemon 3.0.1
nyc 15.1.0
prettier 3.1.0
regenerator-runtime 0.13.11
release-it 16.1.0
supertest 6.3.3
supervisor 0.12.0
webpack ^5.89.0
yarn 4.0.2
JavaScript library for DOM operations
Library home page: https://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.1/jquery.min.js
Path to dependency file: /tmp/ws-scm/hitokoto-api/node_modules/redeyed/examples/browser/index.html
Path to vulnerable library: /hitokoto-api/node_modules/redeyed/examples/browser/index.html
Dependency Hierarchy:
Found in HEAD commit: b53568a5c0634dbc3107208ca611a26fa33a8e06
In jQuery versions greater than or equal to 1.0.3 and before 3.5.0, passing HTML containing elements from untrusted sources - even after sanitizing it - to one of jQuery's DOM manipulation methods (i.e. .html(), .append(), and others) may execute untrusted code. This problem is patched in jQuery 3.5.0.
Publish Date: 2020-04-29
URL: CVE-2020-11023
Base Score Metrics:
Type: Upgrade version
Origin: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11023
Release Date: 2020-04-29
Fix Resolution: jquery - 3.5.0
Step up your Open Source Security Game with WhiteSource here
Easy as cake e-mail sending from your Node.js applications
Library home page: https://registry.npmjs.org/nodemailer/-/nodemailer-6.4.11.tgz
Path to dependency file: hitokoto-api/package.json
Path to vulnerable library: hitokoto-api/node_modules/nodemailer/package.json
Dependency Hierarchy:
Found in base branch: master
The package nodemailer before 6.6.1 are vulnerable to HTTP Header Injection if unsanitized user input that may contain newlines and carriage returns is passed into an address object.
Publish Date: 2021-06-29
URL: CVE-2021-23400
Base Score Metrics:
Type: Upgrade version
Origin: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-23400
Release Date: 2021-06-29
Fix Resolution: nodemailer - 6.6.1
Step up your Open Source Security Game with WhiteSource here
JavaScript library for DOM operations
Library home page: https://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.1/jquery.min.js
Path to dependency file: /tmp/ws-scm/hitokoto-api/node_modules/redeyed/examples/browser/index.html
Path to vulnerable library: /hitokoto-api/node_modules/redeyed/examples/browser/index.html
Dependency Hierarchy:
Found in HEAD commit: b53568a5c0634dbc3107208ca611a26fa33a8e06
jquery prior to 1.9.0 allows Cross-site Scripting attacks via the load method. The load method fails to recognize and remove "<script>" HTML tags that contain a whitespace character, i.e: "</script >", which results in the enclosed script logic to be executed.
Publish Date: 2020-05-19
URL: CVE-2020-7656
Base Score Metrics:
Type: Upgrade version
Origin: rails/jquery-rails@8f601cb
Release Date: 2020-05-19
Fix Resolution: jquery-rails - 2.2.0
Step up your Open Source Security Game with WhiteSource here
Merge multiple objects into one, optionally creating a new cloned object. Similar to the jQuery.extend but more flexible. Works in Node.js and the browser.
Library home page: https://registry.npmjs.org/merge/-/merge-1.2.1.tgz
Path to dependency file: hitokoto-api/package.json
Path to vulnerable library: hitokoto-api/node_modules/merge/package.json
Dependency Hierarchy:
Found in base branch: master
A Prototype Pollution vulnerability was found in merge before 2.1.0 via the merge.recursive function. It can be tricked into adding or modifying properties of the Object prototype. These properties will be present on all objects.
Publish Date: 2020-10-09
URL: WS-2020-0218
Base Score Metrics:
Type: Upgrade version
Origin: swordev/merge#38
Release Date: 2020-10-09
Fix Resolution: merge - 2.1.0
Step up your Open Source Security Game with WhiteSource here
Lodash modular utilities.
Library home page: https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz
Path to dependency file: hitokoto-api/package.json
Path to vulnerable library: hitokoto-api/node_modules/commitizen/node_modules/lodash/package.json
Dependency Hierarchy:
Found in base branch: master
Lodash versions prior to 4.17.21 are vulnerable to Regular Expression Denial of Service (ReDoS) via the toNumber, trim and trimEnd functions.
WhiteSource Note: After conducting further research, WhiteSource has determined that CVE-2020-28500 only affects environments with versions 4.0.0 to 4.17.20 of Lodash.
Publish Date: 2021-02-15
URL: CVE-2020-28500
Base Score Metrics:
Type: Upgrade version
Origin: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-28500
Release Date: 2021-02-15
Fix Resolution: lodash-4.17.21
Step up your Open Source Security Game with WhiteSource here
目前查看接口文档,存在该参数
返回参数名称 | 描述 |
---|---|
uuid | 一言唯一标识;可以链接到 https://hitokoto.cn?uuid=[uuid] 查看这个一言的完整信息 |
期望可以在接口层面新增,比如 https://v1.hitokoto.cn?uuid=[uuid] 或者 https://v1.hitokoto.cn?id=[id] 查看单条数据
感谢你们提供「一言」这样的小而美的 API
Promise based HTTP client for the browser and node.js
Library home page: https://registry.npmjs.org/axios/-/axios-0.19.2.tgz
Path to dependency file: hitokoto-api/package.json
Path to vulnerable library: hitokoto-api/node_modules/axios/package.json
Dependency Hierarchy:
Found in base branch: master
axios is vulnerable to Inefficient Regular Expression Complexity
Publish Date: 2021-08-31
URL: CVE-2021-3749
Base Score Metrics:
Type: Upgrade version
Origin: https://github.com/axios/axios/releases/tag/v0.21.2
Release Date: 2021-08-31
Fix Resolution: axios - 0.21.2
Step up your Open Source Security Game with WhiteSource here
Lodash modular utilities.
Library home page: https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz
Path to dependency file: hitokoto-api/package.json
Path to vulnerable library: hitokoto-api/node_modules/commitizen/node_modules/lodash/package.json
Dependency Hierarchy:
Found in base branch: master
Lodash versions prior to 4.17.21 are vulnerable to Command Injection via the template function.
Publish Date: 2021-02-15
URL: CVE-2021-23337
Base Score Metrics:
Type: Upgrade version
Origin: lodash/lodash@3469357
Release Date: 2021-02-15
Fix Resolution: lodash - 4.17.21
Step up your Open Source Security Game with WhiteSource here
Now the response type is text/plain instead of json in recent days.
Was it on purpose or maybe fixed later?
rt
2020-11-26T10:40:37.938Z [23428] - error: [hitokoto.updateCategories] occur error while updating, error details:
2020-11-26T10:40:37.938Z [23428] - error: message=tmp is not iterable, stack=TypeError: tmp is not iterable
at updateCategories (/root/Programs/hitokoto-osc/hitokoto-api/src/controllers/hitokoto/_utils.js:83:28)
at processTicksAndRejections (node:internal/process/task_queues:93:5)
at async exports.tickUpdateCategories (/root/Programs/hitokoto-osc/hitokoto-api/src/controllers/hitokoto/_utils.js:111:12)
at async module.exports (/root/Programs/hitokoto-osc/hitokoto-api/src/controllers/hitokoto/entry.js:14:3)
at async logger (/root/Programs/hitokoto-osc/hitokoto-api/src/logger.js:55:7)
at async /root/Programs/hitokoto-osc/hitokoto-api/.yarn/cache/koa-compress-npm-5.0.1-8453c7382d-57844bfaa1.zip/node_modules/koa-compress/lib/index.js:38:5
at async bodyParser (/root/Programs/hitokoto-osc/hitokoto-api/.yarn/cache/koa-bodyparser-npm-4.3.0-73f6acb252-8261981504.zip/node_modules/koa-bodyparser/index.js:95:5)
at async _jsonp (/root/Programs/hitokoto-osc/hitokoto-api/.yarn/cache/@hitokoto-koa-jsonp-npm-3.0.7-3bfe627df6-82da1bfc02.zip/node_modules/@hitokoto/koa-jsonp/lib/jsonp.js:17:5)
at async /root/Programs/hitokoto-osc/hitokoto-api/.yarn/cache/koa-query-pretty-npm-0.3.0-16a3c4d62e-2b6d7f7904.zip/node_modules/koa-query-pretty/lib/index.js:49:3
at async sendMail (/root/Programs/hitokoto-osc/hitokoto-api/src/middlewares/MailError.js:16:5)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.