diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index b8e00ca5d37..00000000000 --- a/.eslintrc +++ /dev/null @@ -1,66 +0,0 @@ -{ - "root": true, - - "extends": [ - "airbnb", - "plugin:prettier/recommended", - ], - - "plugins": [ - "prettier" - ], - "prettier/prettier": [ - "error", - { - "endOfLine": "auto" - } - ], - - "env": { - "browser": true, - "node": true - }, - - "parser": "babel-eslint", - - "rules": { - "react/forbid-foreign-prop-types": 2, // For babel-plugin-transform-react-remove-prop-types - - "jsx-a11y/click-events-have-key-events": 1, // TODO: enable - - "no-restricted-imports": 0, // TODO: enable with full RTL support - - "react/jsx-props-no-spreading": 0, // TODO: re-evaluate - - "react/no-deprecated": 1, // TODO: update to UNSAFE_componentWillReceiveProps - }, - - "overrides": [ - { - "files": "test/**/*", - "env": { - "mocha": true, - }, - "extends": "airbnb", - "rules": { - "react/jsx-props-no-spreading": 0, - //"import/no-extraneous-dependencies": [2, { - //"devDependencies": true - //}], - "indent": [2, 2, { - "MemberExpression": "off" - }], - }, - }, - ], - - "settings": { - "propWrapperFunctions": ["forbidExtraProps", "exact", "Object.freeze"], - "import/resolver": "webpack" - // "import/resolver": { - // "node": { - // "extensions": [".js", ".jsx", ".ts", ".tsx"] - // } - // } - } -} diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000000..dc984a27ab7 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,27 @@ +// eslint-disable-next-line no-undef +module.exports = { + env: { + browser: true, + es2021: true, + }, + extends: [ + 'eslint:recommended', + 'plugin:react/recommended', + 'plugin:prettier/recommended', + ], + overrides: [], + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + }, + plugins: ['react', 'prettier'], + root: true, + settings: { + react: { + version: 'detect', + }, + }, + rules: { + 'prettier/prettier': 'off', + }, +}; diff --git a/.nvmrc b/.nvmrc deleted file mode 100644 index c1074247761..00000000000 --- a/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -14.15.0 diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index a0b4d2fe348..00000000000 --- a/.prettierrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "trailingComma": "es5", - "semi": true, - "bracketSpacing": true, - "singleQuote": true -} diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 00000000000..c4e31cdad73 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,6 @@ +module.exports = { + trailingComma: 'es5', + semi: true, + bracketSpacing: true, + singleQuote: true, +}; diff --git a/README-CN.md b/README-CN.md index 8fd77adee2d..27ade5a8187 100644 --- a/README-CN.md +++ b/README-CN.md @@ -20,53 +20,53 @@ R.I.P. 希望大家都能健康顺利的跑过终点,逝者安息。
Running page runners -| Runner | page | App | -| ----------------------------------------------- | ---------------------------------------------|-----------| -| [zhubao315](https://github.com/zhubao315) | | Strava | -| [shaonianche](https://github.com/shaonianche) | | Strava | -| [yihong0618](https://github.com/yihong0618) | | Nike | -| [superleeyom](https://github.com/superleeyom) | | Nike | -| [geekplux](https://github.com/geekplux) | | Nike | -| [guanlan](https://github.com/guanlan) | | Strava | -| [tuzimoe](https://github.com/tuzimoe) | | Nike | -| [ben_29](https://github.com/ben-29) | | Strava | -| [kcllf](https://github.com/kcllf) | | Garmin-cn | -| [mq](https://github.com/MQ-0707) | | Keep | -| [zhaohongxuan](https://github.com/zhaohongxuan) | | Keep | -| [yvetterowe](https://github.com/yvetterowe) | | Strava | -| [love-exercise](https://github.com/KaiOrange) | | Keep | -| [zstone12](https://github.com/zstone12) | | Keep | -| [Lax](https://github.com/Lax) | | Keep | -| [lusuzi](https://github.com/lusuzi) | | Nike | -| [wh1994](https://github.com/wh1994) | | Garmin | -| [liuyihui](https://github.com/YiHui-Liu) | | Keep | -| [sunyunxian](https://github.com/sunyunxian) | | Strava | -| [AhianZhang](https://github.com/AhianZhang) | | Nike | -| [L1cardo](https://github.com/L1cardo) | | Nike | -| [luckylele666](https://github.com/luckylele666) | | Strava | -| [MFYDev](https://github.com/MFYDev) | | Garmin-cn | -| [Oysmart](https://github.com/oysmart) | | Garmin-cn | -| [Eished](https://github.com/eished) | | Keep | -| [Liuxin](https://github.com/liuxindtc) | | Nike | -| [loucx](https://github.com/loucx) | | Nike | -| [winf42](https://github.com/winf42) | | Garmin-cn | -| [sun0225SUN](https://github.com/sun0225SUN) | | Nike | -| [Zhan](https://www.zlog.in/about) | | Nike | -| [Dennis](https://run.domon.cn) | | Garmin-cn | -| [hanpei](https://running.nexts.top) | -| [liugezhou](https://github.com/liugezhou) | | Strava | -| [zhubao315](https://github.com/zhubao315) | | Strava | -| [Jason Tan](https://github.com/Jason-cqtan) | | Nike | -| [Conge](https://github.com/conge) | | Strava | -| [cvvz](https://github.com/cvvz) | | Strava | -| [zHElEARN](https://github.com/zHElEARN) | | Strava | -| [Rhfeng](https://sport.frh.life) | | Garmin-cn | -| [Ym9i](https://github.com/Ym9i) | | Strava | -| [jianchengwang](https://github.com/jianchengwang) | | Suunto | -| [fxbin](https://github.com/fxbin) | | Keep | -| [shensl4499](https://github.com/shensl4499) | | codoon | -| [haowei93](https://github.com/haowei93) | | gpx | -| [stevenash0822](https://github.com/stevenash0822) | | Strava | +| Runner | page | App | +| ------------------------------------------------- | ---------------------------------------------- | --------- | +| [zhubao315](https://github.com/zhubao315) | | Strava | +| [shaonianche](https://github.com/shaonianche) | | Strava | +| [yihong0618](https://github.com/yihong0618) | | Nike | +| [superleeyom](https://github.com/superleeyom) | | Nike | +| [geekplux](https://github.com/geekplux) | | Nike | +| [guanlan](https://github.com/guanlan) | | Strava | +| [tuzimoe](https://github.com/tuzimoe) | | Nike | +| [ben_29](https://github.com/ben-29) | | Strava | +| [kcllf](https://github.com/kcllf) | | Garmin-cn | +| [mq](https://github.com/MQ-0707) | | Keep | +| [zhaohongxuan](https://github.com/zhaohongxuan) | | Keep | +| [yvetterowe](https://github.com/yvetterowe) | | Strava | +| [love-exercise](https://github.com/KaiOrange) | | Keep | +| [zstone12](https://github.com/zstone12) | | Keep | +| [Lax](https://github.com/Lax) | | Keep | +| [lusuzi](https://github.com/lusuzi) | | Nike | +| [wh1994](https://github.com/wh1994) | | Garmin | +| [liuyihui](https://github.com/YiHui-Liu) | | Keep | +| [sunyunxian](https://github.com/sunyunxian) | | Strava | +| [AhianZhang](https://github.com/AhianZhang) | | Nike | +| [L1cardo](https://github.com/L1cardo) | | Nike | +| [luckylele666](https://github.com/luckylele666) | | Strava | +| [MFYDev](https://github.com/MFYDev) | | Garmin-cn | +| [Oysmart](https://github.com/oysmart) | | Garmin-cn | +| [Eished](https://github.com/eished) | | Keep | +| [Liuxin](https://github.com/liuxindtc) | | Nike | +| [loucx](https://github.com/loucx) | | Nike | +| [winf42](https://github.com/winf42) | | Garmin-cn | +| [sun0225SUN](https://github.com/sun0225SUN) | | Nike | +| [Zhan](https://www.zlog.in/about) | | Nike | +| [Dennis](https://run.domon.cn) | | Garmin-cn | +| [hanpei](https://running.nexts.top) | | +| [liugezhou](https://github.com/liugezhou) | | Strava | +| [zhubao315](https://github.com/zhubao315) | | Strava | +| [Jason Tan](https://github.com/Jason-cqtan) | | Nike | +| [Conge](https://github.com/conge) | | Strava | +| [cvvz](https://github.com/cvvz) | | Strava | +| [zHElEARN](https://github.com/zHElEARN) | | Strava | +| [Rhfeng](https://sport.frh.life) | | Garmin-cn | +| [Ym9i](https://github.com/Ym9i) | | Strava | +| [jianchengwang](https://github.com/jianchengwang) | | Suunto | +| [fxbin](https://github.com/fxbin) | | Keep | +| [shensl4499](https://github.com/shensl4499) | | codoon | +| [haowei93](https://github.com/haowei93) | < > | gpx | +| [stevenash0822](https://github.com/stevenash0822) | | Strava |
@@ -98,19 +98,19 @@ R.I.P. 希望大家都能健康顺利的跑过终点,逝者安息。 - **[Strava](#strava)** - **[Nike Run Club](#nike-run-club)** -- **[Garmin](#Garmin)** +- **[Garmin](#garmin)** - **[Garmin-cn](#garmin-cn-大陆用户请用这个)** -- **[Keep](#Keep)** +- **[Keep](#keep)** - **[悦跑圈](#joyrun悦跑圈,因悦跑圈限制单个设备原因,无法自动化)** - **[咕咚](#codoon咕咚,因咕咚限制单个设备原因,无法自动化)** - **[郁金香运动](#tulipsport)** -- **[GPX](#GPX)** -- **[TCX](#TCX)** -- **[Tcx+Strava(upload all tcx data to strava)](#TCX_to_Strava)** -- **[Gpx+Strava(upload all tcx data to strava)](#GPX_to_Strava)** +- **[GPX](#gpx)** +- **[TCX](#tcx)** +- **[Tcx+Strava(upload all tcx data to strava)](#tcx_to_strava)** +- **[Gpx+Strava(upload all tcx data to strava)](#gpx_to_strava)** - **[Nike+Strava(Using NRC Run, Strava backup data)](#nikestrava)** -- **[Garmin_to_Strava(Using Garmin Run, Strava backup data)](#Garmin_to_Strava)** -- **[Strava_to_Garmin(Using Strava Run, Garmin backup data)](#Strava_to_Garmin)** +- **[Garmin_to_Strava(Using Garmin Run, Strava backup data)](#garmin_to_strava)** +- **[Strava_to_Garmin(Using Strava Run, Garmin backup data)](#strava_to_garmin)** ## 下载 @@ -128,19 +128,20 @@ yarn develop 访问 查看 -## Docker +## Docker + ``` #构建 # NRC docker build -t running_page:latest . --build-arg app=NRC --build-arg nike_refresh_token="" # Garmin -docker build -t running_page:latest . --build-arg app=Garmin --build-arg email="" --build-arg password="" +docker build -t running_page:latest . --build-arg app=Garmin --build-arg email="" --build-arg password="" # Garmin-CN -docker build -t running_page:latest . --build-arg app=Garmin-CN --build-arg email="" --build-arg password="" +docker build -t running_page:latest . --build-arg app=Garmin-CN --build-arg email="" --build-arg password="" # Strava -docker build -t running_page:latest . --build-arg app=Strava --build-arg client_id="" --build-arg client_secret="" --build-arg refresh_token="" +docker build -t running_page:latest . --build-arg app=Strava --build-arg client_id="" --build-arg client_secret="" --build-arg refresh_token="" #Nike_to_Strava -docker build -t running_page:latest . --build-arg app=Nike_to_Strava --build-arg nike_refresh_token="" --build-arg client_id="" --build-arg client_secret="" --build-arg refresh_token="" +docker build -t running_page:latest . --build-arg app=Nike_to_Strava --build-arg nike_refresh_token="" --build-arg client_id="" --build-arg client_secret="" --build-arg refresh_token="" #启动 docker run -itd -p 80:80 running_page:latest @@ -150,7 +151,6 @@ docker run -itd -p 80:80 running_page:latest ``` - ## 替换 `src/utils/const.js` 文件中的 Mapbox token > 建议有能力的同学把代码中的 Mapbox token 自己的 [Mapbox token](https://www.mapbox.com/) @@ -194,7 +194,7 @@ const USE_DASH_LINE = true; const LINE_OPACITY = 0.4; ``` -## 下载您的 Nike Run Club/Strava/Garmin/Garmin-cn/Keep 数据,[别忘了在 `total` 页面生成可视化 SVG](#Total-Data-Analysis) +## 下载您的 Nike Run Club/Strava/Garmin/Garmin-cn/Keep 数据,[别忘了在 `total` 页面生成可视化 SVG](#total-data-analysis) ### GPX @@ -260,7 +260,7 @@ python3(python) scripts/keep_sync.py 13333xxxx example --with-gpx 如果您得到的运动路线与实际路线对比有整体偏移,可以修改代码中的参数进行修正 -> 注:Keep目前采用的是GCJ-02坐标系,因此导致得到运动数据在使用WGS-84坐标系的平台(Mapbox、佳明等)中显示轨迹整体偏移 +> 注:Keep 目前采用的是 GCJ-02 坐标系,因此导致得到运动数据在使用 WGS-84 坐标系的平台(Mapbox、佳明等)中显示轨迹整体偏移 - 修改 `scripts/keep_sync.py` 文件中的参数: @@ -281,6 +281,7 @@ TRANS_GCJ02_TO_WGS84 = True 确保自己的账号能用手机号 + 验证码登陆 点击获取验证码 + > 注:不要在手机输入验证码,拿到验证码就好,用这个验证码放到下方命令中 ![image](https://user-images.githubusercontent.com/15976103/102352588-e3af3000-3fe2-11eb-8131-14946b0262eb.png) @@ -363,7 +364,7 @@ python3(python) scripts/codoon_sync.py 54bxxxxxxx fefxxxxx-xxxx-xxxx --from-auth 如果您得到的运动路线与实际路线对比有整体偏移,可以修改代码中的参数进行修正 -> 注:咕咚最初采用GCJ-02坐标系,在2014年3月份左右升级为WGS-84坐标系,导致升级之前的运动数据在使用WGS-84坐标系的平台(Mapbox、佳明等)中显示轨迹整体偏移 +> 注:咕咚最初采用 GCJ-02 坐标系,在 2014 年 3 月份左右升级为 WGS-84 坐标系,导致升级之前的运动数据在使用 WGS-84 坐标系的平台(Mapbox、佳明等)中显示轨迹整体偏移 - 修改 `scripts/codoon_sync.py` 文件中的参数: @@ -383,7 +384,7 @@ TRANS_END_DATE = "2014-03-24"
获取您的郁金香运动数据 -> 郁金香运动数据的获取方式采用开放平台授权模式,通过访问[RunningPage授权页面](https://tulipsport.rdshoep.com)获取账号TOKEN(不会过期,只能访问2021年之后的数据),并在仓库的GitHub Actions环境配置中添加`TULIPSPORT_TOKEN`配置。 +> 郁金香运动数据的获取方式采用开放平台授权模式,通过访问[RunningPage 授权页面](https://tulipsport.rdshoep.com)获取账号 TOKEN(不会过期,只能访问 2021 年之后的数据),并在仓库的 GitHub Actions 环境配置中添加`TULIPSPORT_TOKEN`配置。 ```python python3(python) scripts/tulipsport_sync.py ${tulipsport_token} @@ -394,6 +395,7 @@ python3(python) scripts/tulipsport_sync.py ${tulipsport_token} ```python python3(python) scripts/tulipsport_sync.py nLgy****RyahI ``` +
### Garmin @@ -404,7 +406,6 @@ python3(python) scripts/tulipsport_sync.py nLgy****RyahI 如果你只想同步跑步数据增加命令 --only-run 如果你想同步 `tcx` 格式,增加命令 --tcx - ```python python3(python) scripts/garmin_sync.py ${your email} ${your password} ``` @@ -493,7 +494,7 @@ https://www.strava.com/oauth/authorize?client_id=${your_id}&response_type=code&r ![get_all_permissions](https://raw.githubusercontent.com/shaonianche/gallery/master/running_page/get_all_permissions.png) 5. 提取授权后返回链接中的 code 值 -例如: + 例如: ``` http://localhost/exchange_token?state=&code=1dab37edd9970971fb502c9efdd087f4f3471e6e&scope=read,activity:write,activity:read_all,profile:write,profile:read_all,read_all @@ -531,7 +532,7 @@ curl -X POST https://www.strava.com/oauth/token \ 7. 同步数据至 Strava 在项目根目录执行: -> 第一次同步Strava数据时需要更改在strava_sync.py中的第12行代码False改为True,运行完成后,再改为False。 +> 第一次同步 Strava 数据时需要更改在 strava_sync.py 中的第 12 行代码 False 改为 True,运行完成后,再改为 False。 ```python python3(python) scripts/strava_sync.py ${client_id} ${client_secret} ${refresh_token} @@ -553,7 +554,7 @@ python3(python) scripts/strava_sync.py ${client_id} ${client_secret} ${refresh_t 1. 完成 strava 的步骤 2. 把 tcx 文件全部拷贝到 TCX_OUT 中 -3. 在项目根目录下执行: +3. 在项目根目录下执行: ```python python3(python) scripts/tcx_to_strava_sync.py ${client_id} ${client_secret} ${strava_refresh_token} @@ -580,7 +581,7 @@ python3(python) scripts/tcx_to_strava_sync.py xxx xxx xxx --all 1. 完成 strava 的步骤 2. 把 gpx 文件全部拷贝到 GPX_OUT 中 -2. 在项目根目录下执行: +3. 在项目根目录下执行: ```python python3(python) scripts/gpx_to_strava_sync.py ${client_id} ${client_secret} ${strava_refresh_token} @@ -593,11 +594,11 @@ python3(python) scripts/gpx_to_strava_sync.py xxx xxx xxx 或 python3(python) scripts/gpx_to_strava_sync.py xxx xxx xxx --all ``` + 3. 如果你已经上传过需要跳过判断增加参数 `--all` - ### Nike+Strava
@@ -606,7 +607,7 @@ python3(python) scripts/gpx_to_strava_sync.py xxx xxx xxx --all
1. 完成 nike 和 strava 的步骤 -2. 在项目根目录下执行: +2. 在项目根目录下执行: ```python python3(python) scripts/nike_to_strava_sync.py ${nike_refresh_token} ${client_id} ${client_secret} ${strava_refresh_token} @@ -618,7 +619,6 @@ python3(python) scripts/nike_to_strava_sync.py ${nike_refresh_token} ${client_id python3(python) scripts/nike_to_strava_sync.py eyJhbGciThiMTItNGIw****** xxx xxx xxx ``` -
### Garmin_to_Strava @@ -629,7 +629,7 @@ python3(python) scripts/nike_to_strava_sync.py eyJhbGciThiMTItNGIw****** xxx xx
1. 完成 garmin 和 strava 的步骤 -2. 在项目根目录下执行: +2. 在项目根目录下执行: ```python python3(python) scripts/garmin_to_strava_sync.py ${client_id} ${client_secret} ${strava_refresh_token} ${garmin_email} ${garmin_password} --is-cn @@ -651,7 +651,7 @@ python3(python) scripts/garmin_to_strava_sync.py xxx xxx xxx xx xxx
1. 完成 garmin 和 strava 的步骤,同时,还需要在 Github Actions secret 那新增 Strava 配置:`secrets.STRAVA_EMAIL`、`secrets.STRAVA_PASSWORD` -2. 在项目根目录下执行: +2. 在项目根目录下执行: ```python python3(python) scripts/strava_to_garmin_sync.py ${{ secrets.STRAVA_CLIENT_ID }} ${{ secrets.STRAVA_CLIENT_SECRET }} ${{ secrets.STRAVA_CLIENT_REFRESH_TOKEN }} ${{ secrets.GARMIN_EMAIL }} ${{ secrets.GARMIN_PASSWORD }} ${{ secrets.STRAVA_EMAIL }} ${{ secrets.STRAVA_PASSWORD }} @@ -667,7 +667,6 @@ python3(python) scripts/strava_to_garmin_sync.py ${{ secrets.STRAVA_CLIENT_ID }} - ### Total Data Analysis
@@ -736,17 +735,17 @@ python3(python) scripts/gen_svg.py --from-db --type circular --use-localtime
部署到 GitHub Pages -1. 为GitHub Actions添加代码提交权限 - 访问仓库的 `Settings > Actions > General`页面,找到`Workflow permissions`的设置项,将选项配置为`Read and write permissions`,支持CI将运动数据更新后提交到仓库中。 +1. 为 GitHub Actions 添加代码提交权限 + 访问仓库的 `Settings > Actions > General`页面,找到`Workflow permissions`的设置项,将选项配置为`Read and write permissions`,支持 CI 将运动数据更新后提交到仓库中。 2. 更新配置并提交代码 - 1. 更新[./gatsby-config.js](./gatsby-config.js#L3)中的`siteMetadata`节点; - (按需)如果启用自定义域名模式或者变更Fork后的仓库名称,请变更`pathPrefix`的值。 - 2. 更新GitHub CI的配置 [.github/workflows/run_data_sync.yml](.github/workflows/run_data_sync.yml#L24) 中的配置; + 1. 更新[./gatsby-config.js](./gatsby-config.js#L3)中的`siteMetadata`节点; + (按需)如果启用自定义域名模式或者变更 Fork 后的仓库名称,请变更`pathPrefix`的值。 + 2. 更新 GitHub CI 的配置 [.github/workflows/run_data_sync.yml](.github/workflows/run_data_sync.yml#L24) 中的配置; 3. (按需)如需使用自定义域名,可以修改 [.github/workflows/gh-pages.yml](.github/workflows/gh-pages.yml#L60) 中的 `fqdn`(默认已注释掉) 4. 在仓库的`Settings > Secrets and variables > Actions`页面添加对应服务的环境配置信息,参考不同平台[配置](#支持)。 -3. 同步数据并发布GitHub Pages - 1. 手动触发`Run Data Sync`的Github Action完成数据同步,完成后会自动触发`Publish GitHub Pages`的任务执行,等待执行完成; - 2. 开通仓库GitHub Pages功能,选择`gh-pages`分支和`/(root)`目录。 +3. 同步数据并发布 GitHub Pages + 1. 手动触发`Run Data Sync`的 Github Action 完成数据同步,完成后会自动触发`Publish GitHub Pages`的任务执行,等待执行完成; + 2. 开通仓库 GitHub Pages 功能,选择`gh-pages`分支和`/(root)`目录。
@@ -812,12 +811,15 @@ Actions [源码](https://github.com/yihong0618/running_page/blob/master/.github/ 谢谢就够了 - # FAQ -### Strava 100 每 15 分钟的请求, 1000 每日限制 -https://www.strava.com/settings/api -https://developers.strava.com/docs/#rate-limiting +# FAQ + +### Strava 100 每 15 分钟的请求,1000 每日限制 + + + + +等待时间限制(这里是 strava 接口请求限制),不要关闭终端,这里会自动执行下一组上传数据 -等待时间限制(这里是strava接口请求限制),不要关闭终端,这里会自动执行下一组上传数据 ``` Strava API Rate Limit Exceeded. Retry after 100 seconds Strava API Rate Limit Timeout. Retry in 799.491622 seconds diff --git a/README.md b/README.md index 0e58d7a02d7..2cdc5a546be 100644 --- a/README.md +++ b/README.md @@ -24,51 +24,49 @@ English | [简体中文](https://github.com/yihong0618/running_page/blob/master/
Running page runners - -| Runner | page | App | -| ----------------------------------------------- | ---------------------------------------------|-----------| -| [zhubao315](https://github.com/zhubao315) | | Strava | -| [shaonianche](https://github.com/shaonianche) | | Strava | -| [yihong0618](https://github.com/yihong0618) | | Nike | -| [superleeyom](https://github.com/superleeyom) | | Nike | -| [geekplux](https://github.com/geekplux) | | Nike | -| [guanlan](https://github.com/guanlan) | | Strava | -| [tuzimoe](https://github.com/tuzimoe) | | Nike | -| [ben_29](https://github.com/ben-29) | | Strava | -| [kcllf](https://github.com/kcllf) | | Garmin-cn | -| [mq](https://github.com/MQ-0707) | | Keep | -| [zhaohongxuan](https://github.com/zhaohongxuan) | | Keep | -| [yvetterowe](https://github.com/yvetterowe) | | Strava | -| [love-exercise](https://github.com/KaiOrange) | | Keep | -| [zstone12](https://github.com/zstone12) | | Keep | -| [Lax](https://github.com/Lax) | | Keep | -| [lusuzi](https://github.com/lusuzi) | | Nike | -| [wh1994](https://github.com/wh1994) | | Garmin | -| [liuyihui](https://github.com/YiHui-Liu) | | Keep | -| [sunyunxian](https://github.com/sunyunxian) | | Strava | -| [AhianZhang](https://github.com/AhianZhang) | | Nike | -| [L1cardo](https://github.com/L1cardo) | | Nike | -| [luckylele666](https://github.com/luckylele666) | | Strava | -| [MFYDev](https://github.com/MFYDev) | | Garmin-cn | -| [Eished](https://github.com/eished) | | Keep | -| [Liuxin](https://github.com/liuxindtc) | | Nike | -| [loucx](https://github.com/loucx) | | Nike | -| [winf42](https://github.com/winf42) | | Garmin-cn | -| [sun0225SUN](https://github.com/sun0225SUN) | | Nike | -| [Zhan](https://www.zlog.in/about/) | | Nike | -| [Dennis](https://run.domon.cn) | | Garmin-cn | -| [hanpei](https://running.nexts.top) | | Garmin-cn | -| [liugezhou](https://github.com/liugezhou) | | Strava | -| [Jason Tan](https://github.com/Jason-cqtan) | | Nike | -| [Conge](https://github.com/conge) | | Strava | -| [zHElEARN](https://github.com/zHElEARN) | | Strava | -| [Ym9i](https://github.com/Ym9i) | | Strava | -| [jianchengwang](https://github.com/jianchengwang) | | Suunto | -| [fxbin](https://github.com/fxbin) | | Keep | -| [shensl4499](https://github.com/shensl4499) | | codoon | -| [haowei93](https://github.com/haowei93) | | gpx | -| [stevenash0822](https://github.com/stevenash0822) | | Strava | - +| Runner | page | App | +| ------------------------------------------------- | ---------------------------------------------- | --------- | +| [zhubao315](https://github.com/zhubao315) | | Strava | +| [shaonianche](https://github.com/shaonianche) | | Strava | +| [yihong0618](https://github.com/yihong0618) | | Nike | +| [superleeyom](https://github.com/superleeyom) | | Nike | +| [geekplux](https://github.com/geekplux) | | Nike | +| [guanlan](https://github.com/guanlan) | | Strava | +| [tuzimoe](https://github.com/tuzimoe) | | Nike | +| [ben_29](https://github.com/ben-29) | | Strava | +| [kcllf](https://github.com/kcllf) | | Garmin-cn | +| [mq](https://github.com/MQ-0707) | | Keep | +| [zhaohongxuan](https://github.com/zhaohongxuan) | | Keep | +| [yvetterowe](https://github.com/yvetterowe) | | Strava | +| [love-exercise](https://github.com/KaiOrange) | | Keep | +| [zstone12](https://github.com/zstone12) | | Keep | +| [Lax](https://github.com/Lax) | | Keep | +| [lusuzi](https://github.com/lusuzi) | | Nike | +| [wh1994](https://github.com/wh1994) | | Garmin | +| [liuyihui](https://github.com/YiHui-Liu) | | Keep | +| [sunyunxian](https://github.com/sunyunxian) | | Strava | +| [AhianZhang](https://github.com/AhianZhang) | | Nike | +| [L1cardo](https://github.com/L1cardo) | | Nike | +| [luckylele666](https://github.com/luckylele666) | | Strava | +| [MFYDev](https://github.com/MFYDev) | | Garmin-cn | +| [Eished](https://github.com/eished) | | Keep | +| [Liuxin](https://github.com/liuxindtc) | | Nike | +| [loucx](https://github.com/loucx) | | Nike | +| [winf42](https://github.com/winf42) | | Garmin-cn | +| [sun0225SUN](https://github.com/sun0225SUN) | | Nike | +| [Zhan](https://www.zlog.in/about/) | | Nike | +| [Dennis](https://run.domon.cn) | | Garmin-cn | +| [hanpei](https://running.nexts.top) | | Garmin-cn | +| [liugezhou](https://github.com/liugezhou) | | Strava | +| [Jason Tan](https://github.com/Jason-cqtan) | | Nike | +| [Conge](https://github.com/conge) | | Strava | +| [zHElEARN](https://github.com/zHElEARN) | | Strava | +| [Ym9i](https://github.com/Ym9i) | | Strava | +| [jianchengwang](https://github.com/jianchengwang) | | Suunto | +| [fxbin](https://github.com/fxbin) | | Keep | +| [shensl4499](https://github.com/shensl4499) | | codoon | +| [haowei93](https://github.com/haowei93) | < > | gpx | +| [stevenash0822](https://github.com/stevenash0822) | | Strava |
@@ -94,13 +92,13 @@ English | [简体中文](https://github.com/yihong0618/running_page/blob/master/ - **[Garmin-CN](#garmin-cnchina)** - **[Nike Run Club](#nike-run-club)** - **[Strava](#strava)** -- **[GPX](#GPX)** -- **[TCX](#TCX)** -- **[Nike_to_Strava(Using NRC Run, Strava backup data)](#Nike_to_Strava)** -- **[Tcx_to_Strava(upload all tcx data to strava)](#TCX_to_Strava)** -- **[Gpx_to_Strava(upload all gpx data to strava)](#Gpx_to_Strava)** -- **[Garmin_to_Strava(Using Garmin Run, Strava backup data)](#Garmin_to_Strava)** -- **[Strava_to_Garmin(Using Strava Run, Garmin backup data)](#Strava_to_Garmin)** +- **[GPX](#gpx)** +- **[TCX](#tcx)** +- **[Nike_to_Strava(Using NRC Run, Strava backup data)](#nike_to_strava)** +- **[Tcx_to_Strava(upload all tcx data to strava)](#tcx_to_strava)** +- **[Gpx_to_Strava(upload all gpx data to strava)](#gpx_to_strava)** +- **[Garmin_to_Strava(Using Garmin Run, Strava backup data)](#garmin_to_strava)** +- **[Strava_to_Garmin(Using Strava Run, Garmin backup data)](#strava_to_garmin)** ## Download @@ -120,19 +118,20 @@ yarn develop Open your browser and visit -## Docker +## Docker + ``` #build # NRC docker build -t running_page:latest . --build-arg app=NRC --build-arg nike_refresh_token="" # Garmin -docker build -t running_page:latest . --build-arg app=Garmin --build-arg email="" --build-arg password="" +docker build -t running_page:latest . --build-arg app=Garmin --build-arg email="" --build-arg password="" # Garmin-CN -docker build -t running_page:latest . --build-arg app=Garmin-CN --build-arg email="" --build-arg password="" +docker build -t running_page:latest . --build-arg app=Garmin-CN --build-arg email="" --build-arg password="" # Strava -docker build -t running_page:latest . --build-arg app=Strava --build-arg client_id="" --build-arg client_secret="" --build-arg refresh_token="" +docker build -t running_page:latest . --build-arg app=Strava --build-arg client_id="" --build-arg client_secret="" --build-arg refresh_token="" #Nike_to_Strava -docker build -t running_page:latest . --build-arg app=Nike_to_Strava --build-arg nike_refresh_token="" --build-arg client_id="" --build-arg client_secret="" --build-arg refresh_token="" +docker build -t running_page:latest . --build-arg app=Nike_to_Strava --build-arg nike_refresh_token="" --build-arg client_id="" --build-arg client_secret="" --build-arg refresh_token="" #run docker run -itd -p 80:80 running_page:latest @@ -186,7 +185,7 @@ const USE_DASH_LINE = true; const LINE_OPACITY = 0.4; ``` -## Download your running data and do not forget to [generate svg in `total` page](#Total-Data-Analysis) +## Download your running data and do not forget to [generate svg in `total` page](#total-data-analysis) ### GPX @@ -222,7 +221,7 @@ python3(python) scripts/tcx_sync.py Get your Garmin data
If you only want to sync `type running` add args --only-run -If you only want `tcx` files add args --tcx +If you only want `tcx` files add args --tcx ```python python3(python) scripts/garmin_sync.py ${your email} ${your password} @@ -311,7 +310,7 @@ python3(python) scripts/nike_sync.py eyJhbGciThiMTItNGIw****** ![My API Application](https://raw.githubusercontent.com/shaonianche/gallery/master/running_page/strava_settings_api.png) -Created successfully: +Created successfully:
@@ -367,7 +366,7 @@ curl -X POST https://www.strava.com/oauth/token \ 7. Sync `Strava` data -> The first time you synchronize Strava data you need to change line 12 of the code False to True in strava_sync.py, and then change it to False after it finishes running. +> The first time you synchronize Strava data you need to change line 12 of the code False to True in strava_sync.py, and then change it to False after it finishes running. ```python python3(python) scripts/strava_sync.py ${client_id} ${client_secret} ${refresh_token} @@ -381,7 +380,6 @@ References:
- ### TCX_to_Strava
@@ -436,8 +434,6 @@ python3(python) scripts/tcx_to_strava_sync.py xxx xxx xxx --all
- - ### Nike_to_Strava
@@ -473,11 +469,13 @@ python3(python) scripts/nike_to_strava_sync.py eyJhbGciThiMTItNGIw****** xxx xx ```python python3(python) scripts/garmin_to_strava_sync.py ${client_id} ${client_secret} ${strava_refresh_token} ${garmin_email} ${garmin_password} --is-cn ``` + e.g. ```python python3(python) scripts/garmin_to_strava_sync.py xxx xxx xxx xx xxx ``` +
### Strava_to_Garmin @@ -487,7 +485,7 @@ python3(python) scripts/garmin_to_strava_sync.py xxx xxx xxx xx xxx
-1. finish garmin and strava setps, at the same time, you need to add additional strava config in Github Actions secret: `secrets.STRAVA_EMAIL`、`secrets.STRAVA_PASSWORD` +1. finish garmin and strava setps, at the same time, you need to add additional strava config in Github Actions secret: `secrets.STRAVA_EMAIL`,`secrets.STRAVA_PASSWORD` 2. Execute in the root directory: ```python @@ -499,9 +497,10 @@ if your garmin account region is **China**, you need to execute the command: ```python python3(python) scripts/strava_to_garmin_sync.py ${{ secrets.STRAVA_CLIENT_ID }} ${{ secrets.STRAVA_CLIENT_SECRET }} ${{ secrets.STRAVA_CLIENT_REFRESH_TOKEN }} ${{ secrets.GARMIN_CN_EMAIL }} ${{ secrets.GARMIN_CN_PASSWORD }} ${{ secrets.STRAVA_EMAIL }} ${{ secrets.STRAVA_PASSWORD }} --is-cn ``` + ps: **when initializing for the first time, if you have a large amount of strava data, some data may fail to upload, just retry several times.** - + ### Total Data Analysis @@ -510,7 +509,7 @@ ps: **when initializing for the first time, if you have a large amount of strava
- Generate SVG data display -- Display of results:[Click to view](https://raw.githubusercontent.com/yihong0618/running_page/master/assets/github.svg)、[Click to view](https://raw.githubusercontent.com/yihong0618/running_page/28fa801e4e30f30af5ae3dc906bf085daa137936/assets/grid.svg) +- Display of results:[Click to view](https://raw.githubusercontent.com/yihong0618/running_page/master/assets/github.svg)、[Click to view](https://raw.githubusercontent.com/yihong0618/running_page/28fa801e4e30f30af5ae3dc906bf085daa137936/assets/grid.svg) ``` python scripts/gen_svg.py --from-db --title "${{ env.TITLE }}" --type github --athlete "${{ env.ATHLETE }}" --special-distance 10 --special-distance2 20 --special-color yellow --special-color2 red --output assets/github.svg --use-localtime --min-distance 0.5 @@ -655,10 +654,12 @@ Before submitting PR: Just enjoy it~ - # FAQ +# FAQ + ### Strava Api limit -https://www.strava.com/settings/api -https://developers.strava.com/docs/#rate-limiting + + + ``` Strava API Rate Limit Exceeded. Retry after 100 seconds diff --git a/gatsby-config.js b/gatsby-config.js index 63e7796eed6..6347de67bad 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -1,3 +1,5 @@ +/* eslint-disable no-undef */ +// eslint-disable-next-line no-undef module.exports = { pathPrefix: process.env.PATH_PREFIX || '/', siteMetadata: { @@ -19,17 +21,19 @@ module.exports = { plugins: [ 'gatsby-transformer-json', 'gatsby-plugin-react-helmet', + 'gatsby-plugin-offline', + { - resolve: 'gatsby-source-filesystem', + resolve: 'gatsby-plugin-vercel', options: { - path: './src/static/', + // (optional) Prints metrics in the console when true + debug: false, }, }, { - resolve: "gatsby-plugin-vercel", + resolve: 'gatsby-source-filesystem', options: { - // (optional) Prints metrics in the console when true - debug: false, + path: './src/static/', }, }, { @@ -41,7 +45,7 @@ module.exports = { { resolve: 'gatsby-alias-imports', options: { - rootFolder: './', + rootFolder: '.', }, }, { @@ -75,31 +79,5 @@ module.exports = { icon: 'src/images/favicon.png', // This path is relative to the root of the site. }, }, - { - resolve: `gatsby-plugin-offline`, - options: { - runtimeCaching: [ - { - urlPattern: /^https?:.*\/icons\/.*\.png/, - handler: `CacheFirst`, - }, - { - urlPattern: - /^https?:.*\.(png|jpg|jpeg|webp|svg|gif|tiff|js|woff|woff2|json|css)$/, - handler: `StaleWhileRevalidate`, - }, - { - urlPattern: /^https?:\/\/api\.mapbox\.com\//, - handler: `StaleWhileRevalidate`, - }, - { - urlPattern: /^https?:.*\/page-data\/.*\.json/, - handler: `StaleWhileRevalidate`, - }, - ], - skipWaiting: true, - clientsClaim: true, - }, - }, ], }; diff --git a/gatsby-node.js b/gatsby-node.js index 733415bcdde..9e75ece670a 100644 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-undef exports.createSchemaCustomization = ({ actions }) => { const { createTypes } = actions; const typeDefs = ` diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 00000000000..ec30136685c --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "module": "ESNext", + "moduleResolution": "Node", + "target": "ES2020", + "jsx": "react", + "checkJs": true, + "experimentalDecorators": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": ".", + "paths": { + "src/*": ["./src/*"] + } + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "**/node_modules/*"] +} diff --git a/package.json b/package.json index 4fa29669027..c0c34d4f828 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "serve": "gatsby serve", "serve-prefix": "gatsby serve --prefix-paths", "lint": "eslint --ext .js,.jsx src --fix", - "check": "npx prettier --write *.{js,jsx,scss,json,md,yaml}", + "check": "npx prettier --write {*,src/**/*}.{js,jsx,scss,json,md,yaml}", "ci": "yarn run check && yarn run build && yarn run test" }, "engineStrict": true, @@ -61,13 +61,10 @@ "devDependencies": { "babel-eslint": "^10.1.0", "eslint": "^8.17.0", - "eslint-config-airbnb": "^19.0.4", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-react": "^7.30.0", - "eslint-plugin-react-hooks": "^4.6.0" + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-react": "^7.32.2", + "prettier": "2.8.8" }, "volta": { "node": "16.18.1", diff --git a/src/components/Layout/style.module.scss b/src/components/Layout/style.module.scss index b7a8760e013..f6042b367a3 100644 --- a/src/components/Layout/style.module.scss +++ b/src/components/Layout/style.module.scss @@ -1,8 +1,9 @@ -@import "../../styles/variables.scss"; +@import '../../styles/variables.scss'; .body { background-color: $dark; color: $nike; + p, h1, h3, @@ -10,8 +11,9 @@ li, a { color: $nike; - text-decoration:none; + text-decoration: none; } + h1 { font-size: 3rem; font-weight: 700; diff --git a/src/components/LocationStat/index.jsx b/src/components/LocationStat/index.jsx index da6f6f44130..f98ed9b297f 100644 --- a/src/components/LocationStat/index.jsx +++ b/src/components/LocationStat/index.jsx @@ -3,7 +3,7 @@ import YearStat from 'src/components/YearStat'; import { CHINESE_LOCATION_INFO_MESSAGE_FIRST, CHINESE_LOCATION_INFO_MESSAGE_SECOND, -} from '../../utils/const'; +} from 'src/utils/const'; import CitiesStat from './CitiesStat'; import LocationSummary from './LocationSummary'; import PeriodStat from './PeriodStat'; diff --git a/src/components/RunMap/index.jsx b/src/components/RunMap/index.jsx index 0f5e2848374..fc054f19b72 100644 --- a/src/components/RunMap/index.jsx +++ b/src/components/RunMap/index.jsx @@ -36,9 +36,13 @@ const RunMap = ({ const map = ref.getMap(); if (map && IS_CHINESE) { map.addControl(new MapboxLanguage({ defaultLanguage: 'zh-Hans' })); - if (!ROAD_LABEL_DISPLAY) { + if (!ROAD_LABEL_DISPLAY) { // todo delete layers - map.on('load', () => {MAP_LAYER_LIST.forEach((layerId) => {map.removeLayer(layerId)})}); + map.on('load', () => { + MAP_LAYER_LIST.forEach((layerId) => { + map.removeLayer(layerId); + }); + }); } } } @@ -71,7 +75,7 @@ const RunMap = ({ return ( { diff --git a/src/components/RunTable/index.jsx b/src/components/RunTable/index.jsx index 39edb075163..65b30dac44d 100644 --- a/src/components/RunTable/index.jsx +++ b/src/components/RunTable/index.jsx @@ -1,6 +1,10 @@ import React, { useState } from 'react'; import { MAIN_COLOR } from 'src/utils/const'; -import { sortDateFunc, sortDateFuncReverse, convertMovingTime2Sec } from 'src/utils/utils'; +import { + sortDateFunc, + sortDateFuncReverse, + convertMovingTime2Sec, +} from 'src/utils/utils'; import RunRow from './RunRow'; import styles from './style.module.scss'; @@ -24,11 +28,11 @@ const RunTable = ({ ? a.average_heartrate - b.average_heartrate : b.average_heartrate - a.average_heartrate; const sortRunTimeFunc = (a, b) => { - const aTotalSeconds = convertMovingTime2Sec(a.moving_time) - const bTotalSeconds = convertMovingTime2Sec(b.moving_time) + const aTotalSeconds = convertMovingTime2Sec(a.moving_time); + const bTotalSeconds = convertMovingTime2Sec(b.moving_time); return sortFuncInfo === 'Time' ? aTotalSeconds - bTotalSeconds - : bTotalSeconds - aTotalSeconds + : bTotalSeconds - aTotalSeconds; }; const sortDateFuncClick = sortFuncInfo === 'Date' ? sortDateFunc : sortDateFuncReverse; diff --git a/src/components/RunTable/style.module.scss b/src/components/RunTable/style.module.scss index 3cb42eb71f3..fb587b7a03d 100644 --- a/src/components/RunTable/style.module.scss +++ b/src/components/RunTable/style.module.scss @@ -40,4 +40,3 @@ .runDate { color: $light; } - diff --git a/src/components/YearStat/index.jsx b/src/components/YearStat/index.jsx index 0f6aecc157b..28ed1f891d0 100644 --- a/src/components/YearStat/index.jsx +++ b/src/components/YearStat/index.jsx @@ -3,7 +3,7 @@ import Stat from 'src/components/Stat'; import useActivities from 'src/hooks/useActivities'; import useHover from 'src/hooks/useHover'; import { formatPace } from 'src/utils/utils'; -import styles from './style.module.scss'; +import './style.module.scss'; const YearStat = ({ year, onClick }) => { let { activities: runs, years } = useActivities(); diff --git a/src/components/YearStat/style.module.scss b/src/components/YearStat/style.module.scss index 5ba0810ff7d..c0cedd6a8b2 100644 --- a/src/components/YearStat/style.module.scss +++ b/src/components/YearStat/style.module.scss @@ -1,8 +1,7 @@ .yearSVG { height: 65%; - width: 65%; + width: 65%; margin: 1rem 0 0; border: 0; padding: 0; } - diff --git a/src/pages/index.jsx b/src/pages/index.jsx index 9e749ff5b72..911435d5df4 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -1,5 +1,5 @@ import { Analytics } from '@vercel/analytics/react'; -import React, {useEffect, useState} from 'react'; +import React, { useEffect, useState } from 'react'; import Layout from 'src/components/Layout'; import LocationStat from 'src/components/LocationStat'; import RunMap from 'src/components/RunMap'; @@ -50,7 +50,6 @@ const Index = () => { }; const changeYear = (y) => { - const isChanged = y === year; // default year setYear(y); @@ -171,15 +170,15 @@ const Index = () => {

{siteTitle}

- {viewport.zoom <= 3 && IS_CHINESE ? ( - - ) : ( - - )} + {viewport.zoom <= 3 && IS_CHINESE ? ( + + ) : ( + + )}
{ const yearStr = year === 'Total' ? '所有' : ` ${year} `; return `我用 App 记录自己跑步 ${yearLength} 年了,下面列表展示的是${yearStr}的数据`; -} +}; const ENGLISH_INFO_MESSAGE = (yearLength, year) => `Running Journey with ${yearLength} Years, the table shows year ${year} data`; diff --git a/src/utils/utils.js b/src/utils/utils.js index ddd2af075d3..e60411025a1 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -1,8 +1,8 @@ import * as mapboxPolyline from '@mapbox/polyline'; import gcoord from 'gcoord'; -import { WebMercatorViewport } from 'react-map-gl' -import { chinaGeojson } from '../static/run_countries'; -import { chinaCities } from '../static/city'; +import { WebMercatorViewport } from 'react-map-gl'; +import { chinaGeojson } from 'src/static/run_countries'; +import { chinaCities } from 'src/static/city'; import { MUNICIPALITY_CITIES_ARR, NEED_FIX_MAP, RUN_TITLES } from './const'; const titleForShow = (run) => { @@ -35,16 +35,16 @@ const convertMovingTime2Sec = (moving_time) => { // moving_time : '2 days, 12:34:56' or '12:34:56'; const splits = moving_time.split(', '); const days = splits.length == 2 ? parseInt(splits[0]) : 0; - const time = splits.splice(-1)[0] + const time = splits.splice(-1)[0]; const [hours, minutes, seconds] = time.split(':').map(Number); - const totalSeconds = (((days * 24) + hours) * 60 + minutes) * 60 + seconds; + const totalSeconds = ((days * 24 + hours) * 60 + minutes) * 60 + seconds; return totalSeconds; -} +}; const formatRunTime = (moving_time) => { - const totalSeconds = convertMovingTime2Sec(moving_time) - const seconds = totalSeconds % 60 - const minutes = (totalSeconds-seconds) / 60 + const totalSeconds = convertMovingTime2Sec(moving_time); + const seconds = totalSeconds % 60; + const minutes = (totalSeconds - seconds) / 60; if (minutes === 0) { return seconds + 's'; } @@ -71,7 +71,7 @@ const locationForRun = (run) => { if (cityMatch) { [city] = cityMatch; if (!cities.includes(city)) { - city = '' + city = ''; } } if (provinceMatch) { @@ -108,7 +108,9 @@ const pathForRun = (run) => { const c = mapboxPolyline.decode(run.summary_polyline); // reverse lat long for mapbox c.forEach((arr) => { - [arr[0], arr[1]] = !NEED_FIX_MAP ? [arr[1], arr[0]] : gcoord.transform([arr[1], arr[0]], gcoord.GCJ02, gcoord.WGS84); + [arr[0], arr[1]] = !NEED_FIX_MAP + ? [arr[1], arr[0]] + : gcoord.transform([arr[1], arr[0]], gcoord.GCJ02, gcoord.WGS84); }); return c; } catch (err) { diff --git a/yarn.lock b/yarn.lock index 592a5df9ab3..a5bd09615c1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2710,6 +2710,14 @@ arity-n@^1.0.4: resolved "https://registry.npmmirror.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" integrity sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ== +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -2726,6 +2734,17 @@ array-includes@^3.1.4, array-includes@^3.1.5: get-intrinsic "^1.1.1" is-string "^1.0.7" +array-includes@^3.1.6: + version "3.1.6" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" + integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + is-string "^1.0.7" + array-union@^2.1.0: version "2.1.0" resolved "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" @@ -2751,6 +2770,27 @@ array.prototype.flatmap@^1.3.0: es-abstract "^1.19.2" es-shim-unscopables "^1.0.0" +array.prototype.flatmap@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" + integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + +array.prototype.tosorted@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" + integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.1.3" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -2820,6 +2860,11 @@ autoprefixer@^10.4.0: picocolors "^1.0.0" postcss-value-parser "^4.2.0" +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + axe-core@^4.4.3: version "4.4.3" resolved "https://registry.npmmirror.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" @@ -3314,9 +3359,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001400, caniuse-lite@^1.0.30001407: - version "1.0.30001422" - resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001422.tgz#f2d7c6202c49a8359e6e35add894d88ef93edba1" - integrity sha512-hSesn02u1QacQHhaxl/kNMZwqVG35Sz/8DgvmgedxSH8z9UUpcDYSPYgsj3x5dQNRcNp6BwpSfQfVzYUTm+fog== + version "1.0.30001485" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001485.tgz" + integrity sha512-8aUpZ7sjhlOyiNsg+pgcrTTPUXKh+rg544QYHSvQErljVEKJzvkYkCR/hUFeeVoEfTToUtY9cUKNRC7+c45YkA== capital-case@^1.0.4: version "1.0.4" @@ -4468,11 +4513,60 @@ es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19 string.prototype.trimstart "^1.0.5" unbox-primitive "^1.0.2" +es-abstract@^1.20.4: + version "1.21.2" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" + integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== + dependencies: + array-buffer-byte-length "^1.0.0" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.2.0" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.10" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.9" + es-module-lexer@^0.9.0: version "0.9.3" resolved "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + es-shim-unscopables@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" @@ -4560,29 +4654,10 @@ escape-string-regexp@^4.0.0: resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-config-airbnb-base@^15.0.0: - version "15.0.0" - resolved "https://registry.npmmirror.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz#6b09add90ac79c2f8d723a2580e07f3925afd236" - integrity sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig== - dependencies: - confusing-browser-globals "^1.0.10" - object.assign "^4.1.2" - object.entries "^1.1.5" - semver "^6.3.0" - -eslint-config-airbnb@^19.0.4: - version "19.0.4" - resolved "https://registry.npmmirror.com/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz#84d4c3490ad70a0ffa571138ebcdea6ab085fdc3" - integrity sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew== - dependencies: - eslint-config-airbnb-base "^15.0.0" - object.assign "^4.1.2" - object.entries "^1.1.5" - -eslint-config-prettier@^8.5.0: - version "8.5.0" - resolved "https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" - integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== +eslint-config-prettier@^8.8.0: + version "8.8.0" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz#bfda738d412adc917fd7b038857110efe98c9348" + integrity sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA== eslint-config-react-app@^6.0.0: version "6.0.0" @@ -4633,7 +4708,7 @@ eslint-plugin-import@^2.26.0: resolve "^1.22.0" tsconfig-paths "^3.14.1" -eslint-plugin-jsx-a11y@^6.5.1, eslint-plugin-jsx-a11y@^6.6.1: +eslint-plugin-jsx-a11y@^6.6.1: version "6.6.1" resolved "https://registry.npmmirror.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff" integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q== @@ -4652,9 +4727,9 @@ eslint-plugin-jsx-a11y@^6.5.1, eslint-plugin-jsx-a11y@^6.6.1: minimatch "^3.1.2" semver "^6.3.0" -eslint-plugin-prettier@^4.0.0: +eslint-plugin-prettier@^4.2.1: version "4.2.1" - resolved "https://registry.npmmirror.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" + resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== dependencies: prettier-linter-helpers "^1.0.0" @@ -4664,7 +4739,7 @@ eslint-plugin-react-hooks@^4.6.0: resolved "https://registry.npmmirror.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== -eslint-plugin-react@^7.30.0, eslint-plugin-react@^7.30.1: +eslint-plugin-react@^7.30.1: version "7.31.10" resolved "https://registry.npmmirror.com/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz#6782c2c7fe91c09e715d536067644bbb9491419a" integrity sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA== @@ -4684,6 +4759,27 @@ eslint-plugin-react@^7.30.0, eslint-plugin-react@^7.30.1: semver "^6.3.0" string.prototype.matchall "^4.0.7" +eslint-plugin-react@^7.32.2: + version "7.32.2" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" + integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.0" + string.prototype.matchall "^4.0.8" + eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -5018,7 +5114,7 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: fast-diff@^1.1.2: version "1.2.0" - resolved "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== fast-glob@^3.2.9: @@ -5195,6 +5291,13 @@ follow-redirects@^1.14.0: resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + fork-ts-checker-webpack-plugin@^6.5.0: version "6.5.2" resolved "https://registry.npmmirror.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz#4f67183f2f9eb8ba7df7177ce3cf3e75cdafb340" @@ -5822,6 +5925,15 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@ has "^1.0.3" has-symbols "^1.0.3" +get-intrinsic@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" resolved "https://registry.npmmirror.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" @@ -5943,6 +6055,13 @@ globals@^13.15.0, globals@^13.2.0, globals@^13.6.0, globals@^13.9.0: dependencies: type-fest "^0.20.2" +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: version "11.1.0" resolved "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" @@ -5955,6 +6074,13 @@ globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + got@^11.8.5: version "11.8.5" resolved "https://registry.npmmirror.com/got/-/got-11.8.5.tgz#ce77d045136de56e8f024bebb82ea349bc730046" @@ -6086,6 +6212,11 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" @@ -6341,6 +6472,15 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" +internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + invariant@^2.2.3, invariant@^2.2.4: version "2.2.4" resolved "https://registry.npmmirror.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -6366,6 +6506,15 @@ is-absolute@^1.0.0: is-relative "^1.0.0" is-windows "^1.0.1" +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -6398,7 +6547,7 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-callable@^1.1.4, is-callable@^1.2.7: +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== @@ -6604,6 +6753,17 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" +is-typed-array@^1.1.10, is-typed-array@^1.1.9: + version "1.1.10" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -7696,12 +7856,17 @@ object-inspect@^1.12.2, object-inspect@^1.9.0: resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== +object-inspect@^1.12.3: + version "1.12.3" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + object-keys@^1.1.1: version "1.1.1" resolved "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.0, object.assign@^4.1.2, object.assign@^4.1.3, object.assign@^4.1.4: +object.assign@^4.1.0, object.assign@^4.1.3, object.assign@^4.1.4: version "4.1.4" resolved "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== @@ -7720,6 +7885,15 @@ object.entries@^1.1.5: define-properties "^1.1.3" es-abstract "^1.19.1" +object.entries@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" + integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + object.fromentries@^2.0.5: version "2.0.5" resolved "https://registry.npmmirror.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" @@ -7729,6 +7903,15 @@ object.fromentries@^2.0.5: define-properties "^1.1.3" es-abstract "^1.19.1" +object.fromentries@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" + integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + object.hasown@^1.1.1: version "1.1.1" resolved "https://registry.npmmirror.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" @@ -7737,6 +7920,14 @@ object.hasown@^1.1.1: define-properties "^1.1.4" es-abstract "^1.19.5" +object.hasown@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" + integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== + dependencies: + define-properties "^1.1.4" + es-abstract "^1.20.4" + object.values@^1.1.5: version "1.1.5" resolved "https://registry.npmmirror.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" @@ -7746,6 +7937,15 @@ object.values@^1.1.5: define-properties "^1.1.3" es-abstract "^1.19.1" +object.values@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" + integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + on-finished@2.4.1: version "2.4.1" resolved "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -8397,11 +8597,16 @@ prepend-http@^2.0.0: prettier-linter-helpers@^1.0.0: version "1.0.0" - resolved "https://registry.npmmirror.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== dependencies: fast-diff "^1.1.2" +prettier@2.8.8: + version "2.8.8" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + pretty-bytes@^5.1.0, pretty-bytes@^5.4.1: version "5.6.0" resolved "https://registry.npmmirror.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" @@ -8977,7 +9182,7 @@ resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.2 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^2.0.0-next.3: +resolve@^2.0.0-next.3, resolve@^2.0.0-next.4: version "2.0.0-next.4" resolved "https://registry.npmmirror.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== @@ -9607,6 +9812,29 @@ string.prototype.matchall@^4.0.7: regexp.prototype.flags "^1.4.1" side-channel "^1.0.4" +string.prototype.matchall@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" + integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.3" + side-channel "^1.0.4" + +string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + string.prototype.trimend@^1.0.5: version "1.0.5" resolved "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" @@ -9616,6 +9844,15 @@ string.prototype.trimend@^1.0.5: define-properties "^1.1.4" es-abstract "^1.19.5" +string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + string.prototype.trimstart@^1.0.5: version "1.0.5" resolved "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" @@ -9625,6 +9862,15 @@ string.prototype.trimstart@^1.0.5: define-properties "^1.1.4" es-abstract "^1.19.5" +string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -10098,6 +10344,15 @@ type@^2.7.2: resolved "https://registry.npmmirror.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.npmmirror.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -10443,6 +10698,18 @@ which-module@^2.0.0: resolved "https://registry.npmmirror.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== +which-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.npmmirror.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"