diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..9aa1673
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,63 @@
+module.exports = {
+ root: true,
+ parser: '@typescript-eslint/parser',
+ parserOptions: {
+ project: './tsconfig.json'
+ },
+ plugins: [
+ '@typescript-eslint',
+ ],
+ rules: {
+ indent: ['error', 4],
+ 'no-trailing-spaces': ['error'],
+ semi: ['off'],
+ '@typescript-eslint/semi': ['error', 'never'],
+ '@typescript-eslint/no-extra-semi': ['error'],
+ quotes: ['off'],
+ '@typescript-eslint/quotes': ['error', 'single'],
+ '@typescript-eslint/ban-ts-comment': ['off'],
+ '@typescript-eslint/adjacent-overload-signatures': ['error'],
+ '@typescript-eslint/ban-types': ['error', {
+ extendDefaults: true,
+ types: {
+ /**
+ * we are using `{}` as noop
+ * e.g. `type A
= B & (P extends Q ? C : {})`
+ * will get `B & C` when `P extends Q` and `B` otherwise
+ */
+ '{}': false,
+ /**
+ * we actually need a type accepting any function-like value
+ * e.g. `type Methods = Record`
+ */
+ 'Function': false,
+ }
+ }],
+ '@typescript-eslint/member-delimiter-style': ['error', {
+ multiline: {
+ delimiter: 'none',
+ requireLast: false,
+ },
+ singleline: {
+ delimiter: 'comma',
+ requireLast: false
+ }
+ }],
+ '@typescript-eslint/naming-convention': ['error', {
+ selector: 'enum',
+ format: ['PascalCase', 'UPPER_CASE'],
+ leadingUnderscore: 'forbid',
+ trailingUnderscore: 'forbid',
+ }, {
+ selector: 'typeLike',
+ format: ['PascalCase'],
+ leadingUnderscore: 'forbid',
+ trailingUnderscore: 'forbid',
+ }],
+ '@typescript-eslint/array-type': ['error', {
+ default: 'array-simple',
+ readonly: 'array-simple'
+ }],
+ '@typescript-eslint/no-unnecessary-qualifier': ['error'],
+ },
+}
\ No newline at end of file
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 0000000..aeecb58
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,30 @@
+name: Test
+
+on:
+ - push
+ - pull_request
+
+jobs:
+ test:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - uses: pnpm/action-setup@v4
+ name: Install pnpm
+ with:
+ version: latest
+ run_install: false
+
+ - name: Install Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: lts/*
+ cache: 'pnpm'
+
+ - name: Install dependencies
+ run: pnpm install --frozen-lockfile
+
+ - name: Run test
+ run: npm run test
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 0000000..38f11c6
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1 @@
+registry=https://registry.npmjs.org
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 086d6ca..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
- - "lts/*"
-script: npm run test
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 341c41a..ce7e7db 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,13 +1,238 @@
+## 2025-07-15 v4.1.0
+- 修改 `getOpenerEventChannel` 的返回值的类型,使其有可能返回空对象,以正确反映实际情况。这是一个 **破坏性改动**,`getOpenerEventChannel` 的返回值上的 `emit`, `on` 等方法不再可以直接调用 ([#350](https://github.com/wechat-miniprogram/api-typings/issues/350))
+- 解决依赖安全问题
+
+## 2025-07-15 v4.0.8
+- 更新 API 定义到 3.8.10
+
+## 2025-04-18 v4.0.7
+- 更新云开发拓展能力类型定义
+
+## 2025-04-18 v4.0.6
+- 更新 API 定义到 3.8.0
+
+## 2025-02-08 v4.0.5
+- 修复 `setTimeout` 和 `setInterval` 的参数 ([#323](https://github.com/wechat-miniprogram/api-typings/issues/323))
+- 更新 API 定义到 3.7.7
+
+## 2025-01-14 v4.0.4
+- 解决依赖安全问题
+
+## 2025-01-14 v4.0.3
+- 补齐云开发 `CollectionReference` 上的 `aggregate` ([#276](https://github.com/wechat-miniprogram/api-typings/issues/276))
+- 补齐组件实例方法 `setInitialRenderingCache` 和 `getAppBar` by [@Yang Mingshan](https://github.com/yangmingshan) ([#339](https://github.com/wechat-miniprogram/api-typings/issues/339))
+- 更新 API 定义到 3.7.4
+
+## 2024-11-13 v4.0.2
+- 补齐 `RaycastHit` ([#337](https://github.com/wechat-miniprogram/api-typings/issues/337))
+
+## 2024-09-24 v4.0.1
+- 更新 API 定义到 3.5.7
+
+## 2024-09-24 v4.0.0
+合入 [#332](https://github.com/wechat-miniprogram/api-typings/pull/332), [#333](https://github.com/wechat-miniprogram/api-typings/pull/333), [#334](https://github.com/wechat-miniprogram/api-typings/pull/334) by [@lvzl](https://github.com/lv-z-l)。这几个 Pull Request 对 `Component` 和 `Behavior` 的实现进行了较大改动,以支持:
+1. 对于 `Array` 和 `Object` 类型的 `property` 和 `data`,以值的实际类型作为泛型推导的结果,而非固定推导为 `any[]` 和 `Record`;
+2. 改变了 `BehaviorIdentifier` 的类型,通过为其交叉一个带有 `Behavior` 定义信息的虚假类型,使 `Component` 和 `Behavior` 能自动推导其使用到的 `Behavior` 的 `data`, `properties` 及 `methods`;
+
+这是一个比较大的 **破坏性改动**,从低于 4.0.0 的版本升级时,可能需要进行一些适配:
+1. 全局函数 `Component` 和 `Behavior` 的第四个泛型现在是新的 `TBehavior`,如果之前的代码中有为这两个函数手动指定泛型的用例,需要手动添加这个泛型;
+2. `Behavior()` 的返回值不再是 `string`(或者说不完全是),之前使用 `string` 接受 `Behavior()` 返回值的实现需要修改为 `WechatMiniprogram.Behavior.BehaviorIdentifier`;
+3. 自定义组件的 `this.data` 和 `this.property` 的推导类型可能会有所变化,需要根据推导类型进行相应改动。
+
+## 2024-08-08 v3.12.3
+- 更新 API 定义到 3.5.2
+- 修复 [#235](https://github.com/wechat-miniprogram/api-typings/issues/235), [#302](https://github.com/wechat-miniprogram/api-typings/issues/302), [#303](https://github.com/wechat-miniprogram/api-typings/issues/303), [#304](https://github.com/wechat-miniprogram/api-typings/issues/304) by [@Yang Mingshan](https://github.com/yangmingshan)
+
+## 2023-12-01 v3.12.2
+- 更新 API 定义到 3.2.3
+
+## 2023-10-17 v3.12.1
+- 更新 API 定义到 3.1.2
+- 补齐自定义组件实例的 `getPassiveEvent`, `setPassiveEvent` 方法
+
+## 2023-08-24 v3.12.0
+- `App` 生命周期 `onLaunch`, `onShow` 参数中的 `referrerInfo` 字段类型对齐 API 定义中的 `ReferrerInfo`。这是一个 **破坏性改动**,其中 `extraData` 的类型从 `any` 收窄到了 `Record`
+- 根据实际实现,修改了 `LaunchOptions` 中 `query` 字段的类型。这是一个 **破坏性改动**,该类型从 `Record` 收窄到了 `Record`
+
+## 2023-08-24 v3.11.1
+- 更新 API 定义到 3.0.1
+
+## 2023-08-04 v3.11.0
+- 更新 API 定义到 3.0.0
+ - 暂未支持 [glass-easel](https://github.com/wechat-miniprogram/glass-easel) [Chaining API](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/glass-easel/chaining-api.html) 的类型定义
+- 补齐 `WXWebAssembly` 定义
+
+## 2023-06-09 v3.10.0
+- 更新 API 定义到 2.32.1
+- 新增 CanvasRenderingContext 类型定义 [#111](https://github.com/wechat-miniprogram/api-typings/issues/111)
+
+## 2023-04-10 v3.9.1
+- 更新 API 定义到 2.30.4
+- 修复页面 `onShareAppMessage` 异步形式的定义错误
+
+## 2023-01-12 v3.9.0
+- 更新 API 定义到 2.29.1
+- 将 xr-frame 的命名空间由 `WechatXrFrame` 改为 `XrFrame`。这是一个 **破坏性改动**
+
+## 2022-09-09 v3.6.0
+- 更新 API 定义到 2.26.0
+- 更改了部分监听方法及其参数的命名
+
+## 2022-06-24 v3.5.0
+- 更新 API 定义到 2.24.6
+
+## 2022-04-01 v3.4.6
+- 更新 API 定义到 2.23.2
+
+## 2022-01-20 v3.4.5
+- 更新 API 定义到 2.21.3
+
+## 2021-08-24 v3.4.4
+- 更新 API 定义到 2.20.1
+
+## 2021-08-24 v3.4.3
+- 更新 API 定义到 2.19.2
+- 补充自定义组件获取更新性能接口定义
+
+## 2021-08-02 v3.4.2
+- 更新 API 定义到 2.19.0
+- 重新整理了注释,包括:
+ - 加入插件支持情况、版本和说明
+ - 将支持和废弃情况挪到前面,使其更不容易因为接口说明太长而被忽略
+ - 移除文首、文末和多余(连续超过两个)的空行
+ - 修复几个链接
+
+## 2021-07-07 v3.4.1
+- 移除一个意外加入的非预期字符
+
+## 2021-07-07 v3.4.0
+- 更新 API 定义到 2.18.0
+- 更新来自文档代码示例的测试用例
+- 更新 npm 依赖以解决安全问题
+- 修复 [#202](https://github.com/wechat-miniprogram/api-typings/issues/202), [#204](https://github.com/wechat-miniprogram/api-typings/issues/204)
+
+## 2021-04-21 v3.3.2
+- 更新 API 定义到 2.16.1
+
+## 2021-04-09 v3.3.1
+- 更新 API 定义到 2.16.0
+
+## 2021-03-02 v3.3.0
+- 更新部分新接口定义
+- 支持泛型([#177](https://github.com/wechat-miniprogram/api-typings/issues/177))
+- 支持索引签名,以支持 `wx.requestSubscribeMessage`([#175](https://github.com/wechat-miniprogram/api-typings/issues/175))
+
+## 2021-02-22 v3.2.3
+- 更新 API 定义到 2.15.0
+- 修复 `Component.triggerEvent` 的 `detail` 类型
+- 修复几个接口的定义([#193](https://github.com/wechat-miniprogram/api-typings/issues/193), [#185](https://github.com/wechat-miniprogram/api-typings/issues/185), [#180](https://github.com/wechat-miniprogram/api-typings/issues/180))
+- 修改 `MethodOption` 以解决 [#161](https://github.com/wechat-miniprogram/api-typings/issues/161)(鸣谢:[@Lienviws](https://github.com/Lienviws))
+
+## 2021-01-14 v3.2.2
+- 修复几个接口未 Promise 化的问题
+
+## 2021-01-06 v3.2.1
+- 更新 API 定义到 2.14.1
+- 补齐 `virtualHost` ([#174](https://github.com/wechat-miniprogram/api-typings/issues/174))
+
+## 2020-11-13 v3.2.0
+- 更新 API 定义到 2.14.0
+- 补齐 NFC 接口的错误码
+
+## 2020-11-04 v3.1.6
+- 补齐 `requirePlugin` 和 `requireMiniProgram`
+
+## 2020-10-29 v3.1.5
+- 更新 API 定义
+- 修复代码格式问题(`no-unnecessary-qualifier`)
+
+## 2020-10-28 v3.1.4
+- 更新 API 定义到 2.13.2
+- 为被废弃的接口增加了 `@deprecated` 标识
+
+## 2020-10-14 v3.1.3
+- 修复 `ICustomTimelineContent` 的 `query` 的类型
+
+## 2020-09-30 v3.1.2
+- 更新 API 定义到 2.13.1
+
+## 2020-09-24 v3.1.1
+- 更新 API 定义到 2.13.0
+- 改变了嵌套命名空间的写法
+- 支持 `Component` 的第五个泛型参数,用于将自定义组件作为页面根组件使用的情况
+
+## 2020-09-22 v3.1.0
+- 将代码风格检查从 tslint 迁移到 eslint
+
+## 2020-08-19 v3.0.2
+- 更新 API 定义
+- 合并 PR [#151](https://github.com/wechat-miniprogram/api-typings/pull/151), [#152](https://github.com/wechat-miniprogram/api-typings/pull/152),补齐事件类型,补齐 `onShareTimeline`
+
+## 2020-08-19 v3.0.2
+- 更新 API 定义
+- 合并 PR [#124](https://github.com/wechat-miniprogram/api-typings/pull/124), [#145](https://github.com/wechat-miniprogram/api-typings/pull/145),修复两个动画接口的问题
+
+## 2020-08-03 v3.0.1
+- 更新 API 定义
+- 修复某些取消监听的接口(`off`)的参数不为可选值的问题
+
+## 2020-07-30 v3.0.0
+- 由于基础库接口基本向前兼容,不再与基础库保持版本同步
+- 更新 API 定义到 2.12.0
+
+## 2020-06-15 v2.11.0-1
+- 该版本继续合并了一部分完全相同的 interface / callback,是一个 **破坏性改动**,原本字面上引用了这些 interface / callback 的代码可能会报错。
+- 为 `Component` 构造器增加第四个泛型,以允许在自定义组件上挂载自定义的字段 ([#133](https://github.com/wechat-miniprogram/api-typings/issues/133))
+- 修复一些接口错误 ([#134](https://github.com/wechat-miniprogram/api-typings/issues/134))
+- 补齐 `App` 的 `onThemeChange` ([#135](https://github.com/wechat-miniprogram/api-typings/issues/135))
+- 补齐 `Page` 的 `onAddToFavorites` ([#136](https://github.com/wechat-miniprogram/api-typings/issues/136))
+
+## 2020-05-20 v2.11.0
+- 同步 API 定义到基础库 2.11.0
+- 该版本继续合并了一部分完全相同的 interface / callback,是一个 **破坏性改动**,原本字面上引用了这些 interface / callback 的代码可能会报错。
+- 修复接口错误 ([#126](https://github.com/wechat-miniprogram/api-typings/issues/126))
+
+## 2020-04-20 v2.10.4
+- 同步 API 定义到基础库 2.10.4
+- 在之前的版本中,分属于不同接口的两个 interface / callback 即使完全相同,也会拥有不同的名字。在这次更新中,他们将合并为同一个(如 `FileSystemManagerGetFileInfoCompleteCallback` 和 `WxGetFileInfoCompleteCallback` 都变成了 `GetFileInfoCompleteCallback`)。这是一个 **破坏性改动**,原本字面上引用了这些 interface / callback 的代码可能会报错。
+- 修复了一些取消监听接口(off callback)的参数错误 ([#120](https://github.com/wechat-miniprogram/api-typings/issues/120))
+
+## 2020-04-03 v2.10.3-1
+- 补齐 `Component` 的 `getOpenerEventChannel` ([#112](https://github.com/wechat-miniprogram/api-typings/issues/113) by [@baranwang](https://github.com/baranwang))
+- 加入了部分事件的定义 ([#115](https://github.com/wechat-miniprogram/api-typings/issues/115) by [@zenml](https://github.com/zenml))
+- 更新了小程序·云开发的 API 定义 ([#92](https://github.com/wechat-miniprogram/api-typings/issues/92))
+
+## 2020-03-26 v2.10.3
+- 同步 API 定义到基础库 2.10.3
+
+## 2020-03-18 v2.10.2-1
+- 支持 API Promise 化调用 ([#105](https://github.com/wechat-miniprogram/api-typings/issues/105))
+
+## 2020-03-06 v2.10.2
+- 同步 API 定义到基础库 2.10.2
+
+## 2020-02-10 v2.10.1-1
+- 允许重写部分全局变量 (由 `const` 改为 `let`) ([#102](https://github.com/wechat-miniprogram/api-typings/issues/102))
+- 补齐 `Page` 上的 `options` 字段 ([#101](https://github.com/wechat-miniprogram/api-typings/issues/101) by [@baranwang](https://github.com/baranwang))
+
+## 2020-01-19 v2.10.1
+- 同步 API 定义到基础库 2.10.1
+- 补齐 `Component` `selectOwnerComponent`, `animate`, `clearAnimation` ([#96](https://github.com/wechat-miniprogram/api-typings/issues/96))
+- 补齐 `App` `onUnhandledRejection` ([#99](https://github.com/wechat-miniprogram/api-typings/issues/99))
+
+## 2020-01-07 v2.10.0-1
+- 修复接口错误 ([#95](https://github.com/wechat-miniprogram/api-typings/issues/95))
+
## 2020-01-07 v2.10.0
- 同步 API 定义到基础库 2.10.0
## 2019-12-20 v2.9.4
- 同步 API 定义到基础库 2.9.4
-- 修正一些接口错误(#88,#89,#91)
+- 修正一些接口错误 ([#88](https://github.com/wechat-miniprogram/api-typings/issues/88),[#89](https://github.com/wechat-miniprogram/api-typings/issues/89),[#91](https://github.com/wechat-miniprogram/api-typings/issues/91))
## 2019-12-06 v2.9.3
- 同步 API 定义到基础库 2.9.3
-- 补齐 `Component` 纯数据字段(`pureDataPattern`)
+- 补齐 `Component` 纯数据字段 (`pureDataPattern`)
- 支持 `Component` 的属性监听器使用 `string` 类型
## 2019-11-14 v2.9.2
@@ -22,17 +247,17 @@
## 2019-10-10 v2.8.3-1
- 修复注释文档中不可用的链接
-- 组件实例类型支持 `Partial` 的自定义方法([用例](https://github.com/wechat-miniprogram/api-typings/blob/master/test/issue.test.ts#L170-L185))
+- 组件实例类型支持 `Partial` 的自定义方法 ([用例](https://github.com/wechat-miniprogram/api-typings/blob/master/test/issue.test.ts#L170-L185))
## 2019-09-19 v2.8.3
- 同步 API 定义到基础库 2.8.3
-- `getApp` 支持范型(#77)
-- 修正一些接口错误(#73, #75, #79)
+- `getApp` 支持范型 ([#77](https://github.com/wechat-miniprogram/api-typings/issues/77))
+- 修正一些接口错误 ([#73](https://github.com/wechat-miniprogram/api-typings/issues/73), [#75](https://github.com/wechat-miniprogram/api-typings/issues/75), [#79](https://github.com/wechat-miniprogram/api-typings/issues/79))
- 补齐 `require`, `exports`, `module.exports` 定义,以支持在没有 `@types/node` 下编译
## 2019-09-10 v2.8.2
- 同步 API 定义到基础库 2.8.2
-- 加强了参数为可选值的方法参数类型定义和注释(如 `FileSystemManager.appendFileSync` 的 `encoding`)
+- 加强了参数为可选值的方法参数类型定义和注释 (如 `FileSystemManager.appendFileSync` 的 `encoding`)
## 2019-08-30 v2.8.1
- 同步 API 定义到基础库 2.8.1
@@ -56,19 +281,19 @@
- 不再向全局暴露 `IAnyObject`,收回到命名空间 `WechatMiniprogram` 内
- 对齐代码规范,使用 4 空格缩进,不再使用分号等
- 小幅改动 behavior, component 和 page 的定义,使其对 data 和 properties 等的类型推断更准确
-- 修复了一些其他问题(#60, #59, #48, #47, #45, #33, #13)
+- 修复了一些其他问题 ([#60](https://github.com/wechat-miniprogram/api-typings/issues/60), [#59](https://github.com/wechat-miniprogram/api-typings/issues/59), [#48](https://github.com/wechat-miniprogram/api-typings/issues/48), [#47](https://github.com/wechat-miniprogram/api-typings/issues/47), [#45](https://github.com/wechat-miniprogram/api-typings/issues/45), [#33](https://github.com/wechat-miniprogram/api-typings/issues/33), [#13](https://github.com/wechat-miniprogram/api-typings/issues/13))
## 2019-08-08 v2.7.7-2
-- 补齐了部分接口 fail 回调的错误码(#51)
+- 补齐了部分接口 fail 回调的错误码 ([#51](https://github.com/wechat-miniprogram/api-typings/issues/51))
## 2019-08-06 v2.7.7-1
-- 重写了 page, component 和 behavior 的定义,替换原来不完整的定义,使其更全面,更准确(#46, #40, #30, #28, #27)
+- 重写了 page, component 和 behavior 的定义,替换原来不完整的定义,使其更全面,更准确 ([#46](https://github.com/wechat-miniprogram/api-typings/issues/46), [#40](https://github.com/wechat-miniprogram/api-typings/issues/40), [#30](https://github.com/wechat-miniprogram/api-typings/issues/30), [#28](https://github.com/wechat-miniprogram/api-typings/issues/28), [#27](https://github.com/wechat-miniprogram/api-typings/issues/27))
## 2019-07-31 v2.7.7
- 同步 API 定义到基础库 2.7.7
- 将命名空间从 `Wx` 更改为更正式的 `WechatMiniprogram`,这是一个 **破坏性改动**,原本字面上引用了 `Wx` 命名空间的代码可能失效
-- 修复了云开发的定义无法使用的问题(#25, #32, #42)
-- 修复了一些其它问题(#11, #35, #43)
\ No newline at end of file
+- 修复了云开发的定义无法使用的问题 ([#25](https://github.com/wechat-miniprogram/api-typings/issues/25), [#32](https://github.com/wechat-miniprogram/api-typings/issues/32), [#42](https://github.com/wechat-miniprogram/api-typings/issues/42))
+- 修复了一些其它问题 ([#11](https://github.com/wechat-miniprogram/api-typings/issues/11), [#35](https://github.com/wechat-miniprogram/api-typings/issues/35), [#43](https://github.com/wechat-miniprogram/api-typings/issues/43))
diff --git a/README-en.md b/README-en.md
index 2e34677..3405ec9 100644
--- a/README-en.md
+++ b/README-en.md
@@ -2,30 +2,40 @@
> [中文版本](./README.md)
+[](https://www.npmjs.com/package/@types/wechat-miniprogram)
[](https://www.npmjs.com/package/miniprogram-api-typings)
[](https://github.com/wechat-miniprogram/api-typings)
-[](https://travis-ci.org/wechat-miniprogram/api-typings)
+[](https://github.com/wechat-miniprogram/api-typings/actions/workflows/test.yml)
Type definitions for APIs of Wechat Mini Program in TypeScript
## Install
-Install by NPM:
+### By standalone npm package
+
```bash
-# install definitions for latest base library
npm install miniprogram-api-typings
```
-or specify a base library version:
+Manually import it after installed:
-```bash
-# install definitions for base library version 2.4.1
-npm install miniprogram-api-typings@2.4.1
-```
+- `import 'miniprogram-api-typings';`
+
+Or specify types in typescript config:
+
+- Specify `types: ["miniprogram-api-typings"]` in `tsconfig.json`
+
+Or reference by [Triple-Slash Directives](https://www.typescriptlang.org/docs/handbook/triple-slash-directives.html):
-## Versions
+- `/// `
-Check out all available versions corresponding to base library version in [VERSIONS.md](https://github.com/wechat-miniprogram/api-typings/blob/master/VERSIONS.md)
+or:
+
+### By DefinitelyTyped
+
+```bash
+npm install @types/wechat-miniprogram
+```
## Changelog
@@ -33,10 +43,23 @@ See [CHANGELOG.md](https://github.com/wechat-miniprogram/api-typings/blob/master
## Contribution
-Definitions of Wechat APIs (`lib.wx.api.d.ts`) are auto-generated together with our [documentations](https://developers.weixin.qq.com/miniprogram/dev/index.html), therefore PRs including that file will __not__ be merged. If you found some APIs defined wrongly, create an issue instead.
+Definitions of Wechat APIs (`lib.wx.api.d.ts`) are auto-generated together with our [documentations](https://developers.weixin.qq.com/miniprogram/en/dev/api/), therefore PRs including that file will __not__ be merged. If you found some APIs defined wrongly, create an issue instead.
Both PR and issue are welcomed for definitions of pages (`Page`), custom components (`Component`) and other else, since they are written manually. Help us improve this definition if you have any bug reports or suggestions! Thanks for contributing!
+### Contributors
+
+- [Baran](https://github.com/baranwang)
+- [MinLiang Zeng](https://github.com/zenml/)
+- [Garfield Lee](https://github.com/Garfield550)
+- [Mr.Hope](https://github.com/Mister-Hope)
+- [chs97](https://github.com/chs97)
+- [Jelf](https://github.com/okxiaoliang4)
+- [xieyuhang](https://github.com/haiya6)
+- [苏杰豪](https://github.com/Megasu)
+- [Yang Mingshan](https://github.com/yangmingshan)
+- [lvzl](https://github.com/lv-z-l)
+
### Automated tests
We use [`tsd`](https://github.com/SamVerschueren/tsd) to check if this definition is working properly. All test cases are under folder `test`.
diff --git a/README.md b/README.md
index 1ca655c..e2756af 100644
--- a/README.md
+++ b/README.md
@@ -2,29 +2,40 @@
> [English version](./README-en.md)
+[](https://www.npmjs.com/package/@types/wechat-miniprogram)
[](https://www.npmjs.com/package/miniprogram-api-typings)
[](https://github.com/wechat-miniprogram/api-typings)
-[](https://travis-ci.org/wechat-miniprogram/api-typings)
+[](https://github.com/wechat-miniprogram/api-typings/actions/workflows/test.yml)
微信小程序 API 的 TypeScript 类型定义文件
## 安装
-通过 npm 安装:
+### 通过独立 npm 包
+
```bash
-# 安装对应最新基础库的定义文件
npm install miniprogram-api-typings
```
-或者通过版本号指定一个基础库版本:
-```bash
-# 安装对应基础库版本 2.4.1 的定义文件
-npm install miniprogram-api-typings@2.4.1
-```
+安装后手动导入:
+
+- `import 'miniprogram-api-typings';`
+
+或者在 ts 配置中指定:
+
+- 在 `tsconfig.json` 中指定 `types: ["miniprogram-api-typings"]`
-## 版本
+或者通过 [三斜杠指令](https://www.tslang.cn/docs/handbook/triple-slash-directives.html) 引用:
-所有可用的版本和对应的基础库版本,参考 [VERSIONS.md](https://github.com/wechat-miniprogram/api-typings/blob/master/VERSIONS.md)
+- `/// `
+
+或:
+
+### 通过 DefinitelyTyped
+
+```bash
+npm install @types/wechat-miniprogram
+```
## 更新日志
@@ -32,10 +43,23 @@ npm install miniprogram-api-typings@2.4.1
## 贡献
-API 的定义文件(`lib.wx.api.d.ts`)是随 [文档](https://developers.weixin.qq.com/miniprogram/dev/index.html) 一起自动生成的,如果发现了 API 接口的定义错误,请提一个 issue 给我们,关于 API 的 PR 将 __不会__ 被接受。
+API 的定义文件(`lib.wx.api.d.ts`)是随 [文档](https://developers.weixin.qq.com/miniprogram/dev/api/) 一起自动生成的,如果发现了 API 接口的定义错误,请提一个 issue 给我们,关于 API 的 PR 将 __不会__ 被接受。
如果有针对页面(`Page`)、自定义组件(`Component`)等接口的 bug 和建议,欢迎 PR 或提一个 issue 给我们。非常感谢!
+### 贡献者
+
+- [Baran](https://github.com/baranwang)
+- [MinLiang Zeng](https://github.com/zenml/)
+- [Garfield Lee](https://github.com/Garfield550)
+- [Mr.Hope](https://github.com/Mister-Hope)
+- [chs97](https://github.com/chs97)
+- [Jelf](https://github.com/okxiaoliang4)
+- [xieyuhang](https://github.com/haiya6)
+- [苏杰豪](https://github.com/Megasu)
+- [Yang Mingshan](https://github.com/yangmingshan)
+- [lvzl](https://github.com/lv-z-l)
+
### 测试
本定义文件使用 [`tsd`](https://github.com/SamVerschueren/tsd) 进行测试,所有的测试样例放在 `test` 目录下。
diff --git a/VERSIONS.md b/VERSIONS.md
deleted file mode 100644
index f40a8fc..0000000
--- a/VERSIONS.md
+++ /dev/null
@@ -1,19 +0,0 @@
-## 所有可用版本
-
-基础库版本|npm 版本|命令
--|-|-
-[v2.10.0](https://developers.weixin.qq.com/miniprogram/dev/framework/release/#v2-10-0-2019-12-24) | [2.10.0](https://www.npmjs.com/package/miniprogram-api-typings/v/2.10.0) | `npm install miniprogram-api-typings@2.10.0`
-[v2.9.4](https://developers.weixin.qq.com/miniprogram/dev/framework/release/#v2-9-4-2019-11-28) | [2.9.4](https://www.npmjs.com/package/miniprogram-api-typings/v/2.9.4) | `npm install miniprogram-api-typings@2.9.4`
-[v2.9.3](https://developers.weixin.qq.com/miniprogram/dev/framework/release/) | [2.9.3](https://www.npmjs.com/package/miniprogram-api-typings/v/2.9.3) | `npm install miniprogram-api-typings@2.9.3`
-[v2.9.2](https://developers.weixin.qq.com/miniprogram/dev/framework/release/#v2-9-2-2019-11-04) | [2.9.2](https://www.npmjs.com/package/miniprogram-api-typings/v/2.9.2) | `npm install miniprogram-api-typings@2.9.2`
-[v2.9.1](https://developers.weixin.qq.com/miniprogram/dev/framework/release/#v2-9-1-2019-10-29) | [2.9.1](https://www.npmjs.com/package/miniprogram-api-typings/v/2.9.1) | `npm install miniprogram-api-typings@2.9.1`
-[v2.9.0](https://developers.weixin.qq.com/miniprogram/dev/framework/release/#v2-9-0-2019-10-09) | [2.9.0](https://www.npmjs.com/package/miniprogram-api-typings/v/2.9.0) | `npm install miniprogram-api-typings@2.9.0`
-[v2.8.3](https://developers.weixin.qq.com/miniprogram/dev/framework/release/#v2-8-3-2019-09-17) | [2.8.3-1](https://www.npmjs.com/package/miniprogram-api-typings/v/2.8.3-1) | `npm install miniprogram-api-typings@2.8.3-1`
-[v2.8.2](https://developers.weixin.qq.com/miniprogram/dev/framework/release/#v2-8-2-2019-08-30) | [2.8.2](https://www.npmjs.com/package/miniprogram-api-typings/v/2.8.2) | `npm install miniprogram-api-typings@2.8.2`
-[v2.8.1](https://developers.weixin.qq.com/miniprogram/dev/framework/release/#v2-8-1-2019-08-22) | [2.8.1](https://www.npmjs.com/package/miniprogram-api-typings/v/2.8.1) | `npm install miniprogram-api-typings@2.8.1`
-[v2.8.0](https://developers.weixin.qq.com/miniprogram/dev/framework/release/#v2-8-0-2019-07-30) | [2.8.0-2](https://www.npmjs.com/package/miniprogram-api-typings/v/2.8.0-2) | `npm install miniprogram-api-typings@2.8.0-2`
-[v2.7.7](https://developers.weixin.qq.com/miniprogram/dev/framework/release/) | [2.7.7-2](https://www.npmjs.com/package/miniprogram-api-typings/v/2.7.7-2) | `npm install miniprogram-api-typings@2.7.7-2`
-[v2.6.5](https://developers.weixin.qq.com/miniprogram/dev/framework/release/#v2-6-5-2019-04-02) | [2.6.5-2](https://www.npmjs.com/package/miniprogram-api-typings/v/2.6.5-2) | `npm install miniprogram-api-typings@2.6.5-2`
-[v2.4.2](https://developers.weixin.qq.com/miniprogram/dev/framework/release/v2.html#v2-4-2-2018-12-04)|[2.4.2-2](https://www.npmjs.com/package/miniprogram-api-typings/v/2.4.2-2)|`npm install miniprogram-api-typings@2.4.2-2`
-[v2.4.1](https://developers.weixin.qq.com/miniprogram/dev/framework/release/v2.html#v2-4-1-2018-11-21)|[2.4.1](https://www.npmjs.com/package/miniprogram-api-typings/v/2.4.1)|`npm install miniprogram-api-typings@2.4.1`
-[v2.4.0](https://developers.weixin.qq.com/miniprogram/dev/framework/release/v2.html#v2-4-0-2018-11-05)|[2.4.0-1](https://www.npmjs.com/package/miniprogram-api-typings/v/2.4.0-1)|`npm install miniprogram-api-typings@2.4.0-1`
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index 8f558f3..0000000
--- a/package-lock.json
+++ /dev/null
@@ -1,2545 +0,0 @@
-{
- "name": "miniprogram-api-typings",
- "version": "2.10.0",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "@babel/code-frame": {
- "version": "7.5.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
- "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.0.0"
- }
- },
- "@babel/highlight": {
- "version": "7.5.0",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
- "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
- "dev": true,
- "requires": {
- "chalk": "^2.0.0",
- "esutils": "^2.0.2",
- "js-tokens": "^4.0.0"
- }
- },
- "@mrmlnc/readdir-enhanced": {
- "version": "2.2.1",
- "resolved": "http://r.tnpm.oa.com/@mrmlnc/readdir-enhanced/download/@mrmlnc/readdir-enhanced-2.2.1.tgz",
- "integrity": "sha1-UkryQNGjYFJ7cwR17PoTRKpUDd4=",
- "dev": true,
- "requires": {
- "call-me-maybe": "^1.0.1",
- "glob-to-regexp": "^0.3.0"
- }
- },
- "@nodelib/fs.stat": {
- "version": "1.1.3",
- "resolved": "http://r.tnpm.oa.com/@nodelib/fs.stat/download/@nodelib/fs.stat-1.1.3.tgz",
- "integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=",
- "dev": true
- },
- "@types/events": {
- "version": "3.0.0",
- "resolved": "http://r.tnpm.oa.com/@types/events/download/@types/events-3.0.0.tgz",
- "integrity": "sha1-KGLz9Yqaf3w+eNefEw3U1xwlwqc=",
- "dev": true
- },
- "@types/glob": {
- "version": "7.1.1",
- "resolved": "http://r.tnpm.oa.com/@types/glob/download/@types/glob-7.1.1.tgz",
- "integrity": "sha1-qlmhxuP7xCHgfM0xqUTDDrpSFXU=",
- "dev": true,
- "requires": {
- "@types/events": "*",
- "@types/minimatch": "*",
- "@types/node": "*"
- }
- },
- "@types/minimatch": {
- "version": "3.0.3",
- "resolved": "http://r.tnpm.oa.com/@types/minimatch/download/@types/minimatch-3.0.3.tgz",
- "integrity": "sha1-PcoOPzOyAPx9ETnAzZbBJoyt/Z0=",
- "dev": true
- },
- "@types/node": {
- "version": "12.12.14",
- "resolved": "http://r.tnpm.oa.com/@types/node/download/@types/node-12.12.14.tgz",
- "integrity": "sha1-HB1uPHXbpGbgMmlI1W6L1yoZA9I=",
- "dev": true
- },
- "ansi-align": {
- "version": "2.0.0",
- "resolved": "http://r.tnpm.oa.com/ansi-align/download/ansi-align-2.0.0.tgz",
- "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
- "dev": true,
- "requires": {
- "string-width": "^2.0.0"
- }
- },
- "ansi-escapes": {
- "version": "2.0.0",
- "resolved": "http://r.tnpm.oa.com/ansi-escapes/download/ansi-escapes-2.0.0.tgz",
- "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=",
- "dev": true
- },
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "http://r.tnpm.oa.com/ansi-regex/download/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "arr-diff": {
- "version": "4.0.0",
- "resolved": "http://r.tnpm.oa.com/arr-diff/download/arr-diff-4.0.0.tgz",
- "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
- "dev": true
- },
- "arr-flatten": {
- "version": "1.1.0",
- "resolved": "http://r.tnpm.oa.com/arr-flatten/download/arr-flatten-1.1.0.tgz",
- "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=",
- "dev": true
- },
- "arr-union": {
- "version": "3.1.0",
- "resolved": "http://r.tnpm.oa.com/arr-union/download/arr-union-3.1.0.tgz",
- "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
- "dev": true
- },
- "array-find-index": {
- "version": "1.0.2",
- "resolved": "http://r.tnpm.oa.com/array-find-index/download/array-find-index-1.0.2.tgz",
- "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
- "dev": true
- },
- "array-union": {
- "version": "1.0.2",
- "resolved": "http://r.tnpm.oa.com/array-union/download/array-union-1.0.2.tgz",
- "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
- "dev": true,
- "requires": {
- "array-uniq": "^1.0.1"
- }
- },
- "array-uniq": {
- "version": "1.0.3",
- "resolved": "http://r.tnpm.oa.com/array-uniq/download/array-uniq-1.0.3.tgz",
- "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
- "dev": true
- },
- "array-unique": {
- "version": "0.3.2",
- "resolved": "http://r.tnpm.oa.com/array-unique/download/array-unique-0.3.2.tgz",
- "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
- "dev": true
- },
- "arrify": {
- "version": "1.0.1",
- "resolved": "http://r.tnpm.oa.com/arrify/download/arrify-1.0.1.tgz",
- "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
- "dev": true
- },
- "assign-symbols": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/assign-symbols/download/assign-symbols-1.0.0.tgz",
- "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
- "dev": true
- },
- "atob": {
- "version": "2.1.2",
- "resolved": "http://r.tnpm.oa.com/atob/download/atob-2.1.2.tgz",
- "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
- },
- "base": {
- "version": "0.11.2",
- "resolved": "http://r.tnpm.oa.com/base/download/base-0.11.2.tgz",
- "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=",
- "dev": true,
- "requires": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/define-property/download/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "http://r.tnpm.oa.com/is-descriptor/download/is-descriptor-1.0.2.tgz",
- "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
- }
- },
- "boxen": {
- "version": "1.3.0",
- "resolved": "http://r.tnpm.oa.com/boxen/download/boxen-1.3.0.tgz",
- "integrity": "sha1-VcbDmouljZxhrSLNh3Uy3rZlogs=",
- "dev": true,
- "requires": {
- "ansi-align": "^2.0.0",
- "camelcase": "^4.0.0",
- "chalk": "^2.0.1",
- "cli-boxes": "^1.0.0",
- "string-width": "^2.0.0",
- "term-size": "^1.2.0",
- "widest-line": "^2.0.0"
- }
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "2.3.2",
- "resolved": "http://r.tnpm.oa.com/braces/download/braces-2.3.2.tgz",
- "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "http://r.tnpm.oa.com/extend-shallow/download/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "builtin-modules": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
- "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
- "dev": true
- },
- "cache-base": {
- "version": "1.0.1",
- "resolved": "http://r.tnpm.oa.com/cache-base/download/cache-base-1.0.1.tgz",
- "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=",
- "dev": true,
- "requires": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
- }
- },
- "call-me-maybe": {
- "version": "1.0.1",
- "resolved": "http://r.tnpm.oa.com/call-me-maybe/download/call-me-maybe-1.0.1.tgz",
- "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
- "dev": true
- },
- "camelcase": {
- "version": "4.1.0",
- "resolved": "http://r.tnpm.oa.com/camelcase/download/camelcase-4.1.0.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
- "dev": true
- },
- "camelcase-keys": {
- "version": "4.2.0",
- "resolved": "http://r.tnpm.oa.com/camelcase-keys/download/camelcase-keys-4.2.0.tgz",
- "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=",
- "dev": true,
- "requires": {
- "camelcase": "^4.1.0",
- "map-obj": "^2.0.0",
- "quick-lru": "^1.0.0"
- }
- },
- "capture-stack-trace": {
- "version": "1.0.1",
- "resolved": "http://r.tnpm.oa.com/capture-stack-trace/download/capture-stack-trace-1.0.1.tgz",
- "integrity": "sha1-psC74fOPOqC5Ijjstv9Cw0TUE10=",
- "dev": true
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "ci-info": {
- "version": "1.6.0",
- "resolved": "http://r.tnpm.oa.com/ci-info/download/ci-info-1.6.0.tgz",
- "integrity": "sha1-LKINu5zrMtRSSmgzAzE/AwSx5Jc=",
- "dev": true
- },
- "class-utils": {
- "version": "0.3.6",
- "resolved": "http://r.tnpm.oa.com/class-utils/download/class-utils-0.3.6.tgz",
- "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=",
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "http://r.tnpm.oa.com/define-property/download/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
- }
- },
- "cli-boxes": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/cli-boxes/download/cli-boxes-1.0.0.tgz",
- "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
- "dev": true
- },
- "collection-visit": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/collection-visit/download/collection-visit-1.0.0.tgz",
- "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
- "dev": true,
- "requires": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "commander": {
- "version": "2.20.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.1.tgz",
- "integrity": "sha512-cCuLsMhJeWQ/ZpsFTbE765kvVfoeSddc4nU3up4fV+fDBcfUXnbITJ+JzhkdjzOqhURjZgujxaioam4RM9yGUg==",
- "dev": true
- },
- "component-emitter": {
- "version": "1.3.0",
- "resolved": "http://r.tnpm.oa.com/component-emitter/download/component-emitter-1.3.0.tgz",
- "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
- "configstore": {
- "version": "3.1.2",
- "resolved": "http://r.tnpm.oa.com/configstore/download/configstore-3.1.2.tgz",
- "integrity": "sha1-xvJd767vJt8S3TNBSwAf6BpUP48=",
- "dev": true,
- "requires": {
- "dot-prop": "^4.1.0",
- "graceful-fs": "^4.1.2",
- "make-dir": "^1.0.0",
- "unique-string": "^1.0.0",
- "write-file-atomic": "^2.0.0",
- "xdg-basedir": "^3.0.0"
- }
- },
- "copy-descriptor": {
- "version": "0.1.1",
- "resolved": "http://r.tnpm.oa.com/copy-descriptor/download/copy-descriptor-0.1.1.tgz",
- "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
- "dev": true
- },
- "create-error-class": {
- "version": "3.0.2",
- "resolved": "http://r.tnpm.oa.com/create-error-class/download/create-error-class-3.0.2.tgz",
- "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
- "dev": true,
- "requires": {
- "capture-stack-trace": "^1.0.0"
- }
- },
- "cross-spawn": {
- "version": "5.1.0",
- "resolved": "http://r.tnpm.oa.com/cross-spawn/download/cross-spawn-5.1.0.tgz",
- "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
- "dev": true,
- "requires": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- },
- "crypto-random-string": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/crypto-random-string/download/crypto-random-string-1.0.0.tgz",
- "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
- "dev": true
- },
- "currently-unhandled": {
- "version": "0.4.1",
- "resolved": "http://r.tnpm.oa.com/currently-unhandled/download/currently-unhandled-0.4.1.tgz",
- "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
- "dev": true,
- "requires": {
- "array-find-index": "^1.0.1"
- }
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "http://r.tnpm.oa.com/debug/download/debug-2.6.9.tgz",
- "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "decamelize": {
- "version": "1.2.0",
- "resolved": "http://r.tnpm.oa.com/decamelize/download/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true
- },
- "decamelize-keys": {
- "version": "1.1.0",
- "resolved": "http://r.tnpm.oa.com/decamelize-keys/download/decamelize-keys-1.1.0.tgz",
- "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
- "dev": true,
- "requires": {
- "decamelize": "^1.1.0",
- "map-obj": "^1.0.0"
- },
- "dependencies": {
- "map-obj": {
- "version": "1.0.1",
- "resolved": "http://r.tnpm.oa.com/map-obj/download/map-obj-1.0.1.tgz",
- "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
- "dev": true
- }
- }
- },
- "decode-uri-component": {
- "version": "0.2.0",
- "resolved": "http://r.tnpm.oa.com/decode-uri-component/download/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
- "dev": true
- },
- "deep-extend": {
- "version": "0.6.0",
- "resolved": "http://r.tnpm.oa.com/deep-extend/download/deep-extend-0.6.0.tgz",
- "integrity": "sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw=",
- "dev": true
- },
- "define-property": {
- "version": "2.0.2",
- "resolved": "http://r.tnpm.oa.com/define-property/download/define-property-2.0.2.tgz",
- "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- },
- "dependencies": {
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "http://r.tnpm.oa.com/is-descriptor/download/is-descriptor-1.0.2.tgz",
- "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
- }
- },
- "diff": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz",
- "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
- "dev": true
- },
- "dir-glob": {
- "version": "2.2.2",
- "resolved": "http://r.tnpm.oa.com/dir-glob/download/dir-glob-2.2.2.tgz",
- "integrity": "sha1-+gnwaUFTyJGLGLoN6vrpR2n8UMQ=",
- "dev": true,
- "requires": {
- "path-type": "^3.0.0"
- }
- },
- "dot-prop": {
- "version": "4.2.0",
- "resolved": "http://r.tnpm.oa.com/dot-prop/download/dot-prop-4.2.0.tgz",
- "integrity": "sha1-HxngwuGqDjJ5fEl5nyg3rGr2nFc=",
- "dev": true,
- "requires": {
- "is-obj": "^1.0.0"
- }
- },
- "duplexer3": {
- "version": "0.1.4",
- "resolved": "http://r.tnpm.oa.com/duplexer3/download/duplexer3-0.1.4.tgz",
- "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
- "dev": true
- },
- "error-ex": {
- "version": "1.3.2",
- "resolved": "http://r.tnpm.oa.com/error-ex/download/error-ex-1.3.2.tgz",
- "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=",
- "dev": true,
- "requires": {
- "is-arrayish": "^0.2.1"
- }
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true
- },
- "eslint-formatter-pretty": {
- "version": "1.3.0",
- "resolved": "http://r.tnpm.oa.com/eslint-formatter-pretty/download/eslint-formatter-pretty-1.3.0.tgz",
- "integrity": "sha1-mF2eQcH4R19KCQxdvS388oIdYH4=",
- "dev": true,
- "requires": {
- "ansi-escapes": "^2.0.0",
- "chalk": "^2.1.0",
- "log-symbols": "^2.0.0",
- "plur": "^2.1.2",
- "string-width": "^2.0.0"
- }
- },
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true
- },
- "execa": {
- "version": "0.7.0",
- "resolved": "http://r.tnpm.oa.com/execa/download/execa-0.7.0.tgz",
- "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
- "dev": true,
- "requires": {
- "cross-spawn": "^5.0.1",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- }
- },
- "expand-brackets": {
- "version": "2.1.4",
- "resolved": "http://r.tnpm.oa.com/expand-brackets/download/expand-brackets-2.1.4.tgz",
- "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
- "dev": true,
- "requires": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "http://r.tnpm.oa.com/define-property/download/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "http://r.tnpm.oa.com/extend-shallow/download/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "extend-shallow": {
- "version": "3.0.2",
- "resolved": "http://r.tnpm.oa.com/extend-shallow/download/extend-shallow-3.0.2.tgz",
- "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
- "dev": true,
- "requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "http://r.tnpm.oa.com/is-extendable/download/is-extendable-1.0.1.tgz",
- "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- }
- }
- },
- "extglob": {
- "version": "2.0.4",
- "resolved": "http://r.tnpm.oa.com/extglob/download/extglob-2.0.4.tgz",
- "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=",
- "dev": true,
- "requires": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/define-property/download/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "http://r.tnpm.oa.com/extend-shallow/download/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "http://r.tnpm.oa.com/is-descriptor/download/is-descriptor-1.0.2.tgz",
- "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
- }
- },
- "fast-glob": {
- "version": "2.2.7",
- "resolved": "http://r.tnpm.oa.com/fast-glob/download/fast-glob-2.2.7.tgz",
- "integrity": "sha1-aVOFfDr6R1//ku5gFdUtpwpM050=",
- "dev": true,
- "requires": {
- "@mrmlnc/readdir-enhanced": "^2.2.1",
- "@nodelib/fs.stat": "^1.1.2",
- "glob-parent": "^3.1.0",
- "is-glob": "^4.0.0",
- "merge2": "^1.2.3",
- "micromatch": "^3.1.10"
- }
- },
- "fill-range": {
- "version": "4.0.0",
- "resolved": "http://r.tnpm.oa.com/fill-range/download/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "http://r.tnpm.oa.com/extend-shallow/download/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "find-up": {
- "version": "2.1.0",
- "resolved": "http://r.tnpm.oa.com/find-up/download/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "requires": {
- "locate-path": "^2.0.0"
- }
- },
- "for-in": {
- "version": "1.0.2",
- "resolved": "http://r.tnpm.oa.com/for-in/download/for-in-1.0.2.tgz",
- "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
- "dev": true
- },
- "fragment-cache": {
- "version": "0.2.1",
- "resolved": "http://r.tnpm.oa.com/fragment-cache/download/fragment-cache-0.2.1.tgz",
- "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
- "dev": true,
- "requires": {
- "map-cache": "^0.2.2"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
- },
- "get-stream": {
- "version": "3.0.0",
- "resolved": "http://r.tnpm.oa.com/get-stream/download/get-stream-3.0.0.tgz",
- "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
- "dev": true
- },
- "get-value": {
- "version": "2.0.6",
- "resolved": "http://r.tnpm.oa.com/get-value/download/get-value-2.0.6.tgz",
- "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
- "dev": true
- },
- "glob": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
- "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "3.1.0",
- "resolved": "http://r.tnpm.oa.com/glob-parent/download/glob-parent-3.1.0.tgz",
- "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
- "dev": true,
- "requires": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- },
- "dependencies": {
- "is-glob": {
- "version": "3.1.0",
- "resolved": "http://r.tnpm.oa.com/is-glob/download/is-glob-3.1.0.tgz",
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.0"
- }
- }
- }
- },
- "glob-to-regexp": {
- "version": "0.3.0",
- "resolved": "http://r.tnpm.oa.com/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz",
- "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
- "dev": true
- },
- "global-dirs": {
- "version": "0.1.1",
- "resolved": "http://r.tnpm.oa.com/global-dirs/download/global-dirs-0.1.1.tgz",
- "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
- "dev": true,
- "requires": {
- "ini": "^1.3.4"
- }
- },
- "globby": {
- "version": "9.2.0",
- "resolved": "http://r.tnpm.oa.com/globby/download/globby-9.2.0.tgz",
- "integrity": "sha1-/QKacGxwPSm90XD0tts6P3p8tj0=",
- "dev": true,
- "requires": {
- "@types/glob": "^7.1.1",
- "array-union": "^1.0.2",
- "dir-glob": "^2.2.2",
- "fast-glob": "^2.2.6",
- "glob": "^7.1.3",
- "ignore": "^4.0.3",
- "pify": "^4.0.1",
- "slash": "^2.0.0"
- }
- },
- "got": {
- "version": "6.7.1",
- "resolved": "http://r.tnpm.oa.com/got/download/got-6.7.1.tgz",
- "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
- "dev": true,
- "requires": {
- "create-error-class": "^3.0.0",
- "duplexer3": "^0.1.4",
- "get-stream": "^3.0.0",
- "is-redirect": "^1.0.0",
- "is-retry-allowed": "^1.0.0",
- "is-stream": "^1.0.0",
- "lowercase-keys": "^1.0.0",
- "safe-buffer": "^5.0.1",
- "timed-out": "^4.0.0",
- "unzip-response": "^2.0.1",
- "url-parse-lax": "^1.0.0"
- }
- },
- "graceful-fs": {
- "version": "4.2.3",
- "resolved": "http://r.tnpm.oa.com/graceful-fs/download/graceful-fs-4.2.3.tgz",
- "integrity": "sha1-ShL/G2A3bvCYYsIJPt2Qgyi+hCM=",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "has-value": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/has-value/download/has-value-1.0.0.tgz",
- "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
- "dev": true,
- "requires": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
- }
- },
- "has-values": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/has-values/download/has-values-1.0.0.tgz",
- "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "4.0.0",
- "resolved": "http://r.tnpm.oa.com/kind-of/download/kind-of-4.0.0.tgz",
- "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "hosted-git-info": {
- "version": "2.8.5",
- "resolved": "http://r.tnpm.oa.com/hosted-git-info/download/hosted-git-info-2.8.5.tgz",
- "integrity": "sha1-dZz88sTRVq3lmwst+r3cQqa5xww=",
- "dev": true
- },
- "ignore": {
- "version": "4.0.6",
- "resolved": "http://r.tnpm.oa.com/ignore/download/ignore-4.0.6.tgz",
- "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=",
- "dev": true
- },
- "import-lazy": {
- "version": "2.1.0",
- "resolved": "http://r.tnpm.oa.com/import-lazy/download/import-lazy-2.1.0.tgz",
- "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
- "dev": true
- },
- "imurmurhash": {
- "version": "0.1.4",
- "resolved": "http://r.tnpm.oa.com/imurmurhash/download/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
- "dev": true
- },
- "indent-string": {
- "version": "3.2.0",
- "resolved": "http://r.tnpm.oa.com/indent-string/download/indent-string-3.2.0.tgz",
- "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "ini": {
- "version": "1.3.5",
- "resolved": "http://r.tnpm.oa.com/ini/download/ini-1.3.5.tgz",
- "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=",
- "dev": true
- },
- "irregular-plurals": {
- "version": "1.4.0",
- "resolved": "http://r.tnpm.oa.com/irregular-plurals/download/irregular-plurals-1.4.0.tgz",
- "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=",
- "dev": true
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "http://r.tnpm.oa.com/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "http://r.tnpm.oa.com/kind-of/download/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "http://r.tnpm.oa.com/is-arrayish/download/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "dev": true
- },
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "http://r.tnpm.oa.com/is-buffer/download/is-buffer-1.1.6.tgz",
- "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=",
- "dev": true
- },
- "is-ci": {
- "version": "1.2.1",
- "resolved": "http://r.tnpm.oa.com/is-ci/download/is-ci-1.2.1.tgz",
- "integrity": "sha1-43ecjuF/zPQoSI9uKBGH8uYyhBw=",
- "dev": true,
- "requires": {
- "ci-info": "^1.5.0"
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "http://r.tnpm.oa.com/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "http://r.tnpm.oa.com/kind-of/download/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "http://r.tnpm.oa.com/is-descriptor/download/is-descriptor-0.1.6.tgz",
- "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "http://r.tnpm.oa.com/kind-of/download/kind-of-5.1.0.tgz",
- "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=",
- "dev": true
- }
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "http://r.tnpm.oa.com/is-extendable/download/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "http://r.tnpm.oa.com/is-extglob/download/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "http://r.tnpm.oa.com/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.1",
- "resolved": "http://r.tnpm.oa.com/is-glob/download/is-glob-4.0.1.tgz",
- "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-installed-globally": {
- "version": "0.1.0",
- "resolved": "http://r.tnpm.oa.com/is-installed-globally/download/is-installed-globally-0.1.0.tgz",
- "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
- "dev": true,
- "requires": {
- "global-dirs": "^0.1.0",
- "is-path-inside": "^1.0.0"
- }
- },
- "is-npm": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/is-npm/download/is-npm-1.0.0.tgz",
- "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
- "dev": true
- },
- "is-number": {
- "version": "3.0.0",
- "resolved": "http://r.tnpm.oa.com/is-number/download/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "http://r.tnpm.oa.com/kind-of/download/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-obj": {
- "version": "1.0.1",
- "resolved": "http://r.tnpm.oa.com/is-obj/download/is-obj-1.0.1.tgz",
- "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
- "dev": true
- },
- "is-path-inside": {
- "version": "1.0.1",
- "resolved": "http://r.tnpm.oa.com/is-path-inside/download/is-path-inside-1.0.1.tgz",
- "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
- "dev": true,
- "requires": {
- "path-is-inside": "^1.0.1"
- }
- },
- "is-plain-obj": {
- "version": "1.1.0",
- "resolved": "http://r.tnpm.oa.com/is-plain-obj/download/is-plain-obj-1.1.0.tgz",
- "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
- "dev": true
- },
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "http://r.tnpm.oa.com/is-plain-object/download/is-plain-object-2.0.4.tgz",
- "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "is-redirect": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/is-redirect/download/is-redirect-1.0.0.tgz",
- "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
- "dev": true
- },
- "is-retry-allowed": {
- "version": "1.2.0",
- "resolved": "http://r.tnpm.oa.com/is-retry-allowed/download/is-retry-allowed-1.2.0.tgz",
- "integrity": "sha1-13hIi9CkZmo76KFIK58rqv7eqLQ=",
- "dev": true
- },
- "is-stream": {
- "version": "1.1.0",
- "resolved": "http://r.tnpm.oa.com/is-stream/download/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
- "dev": true
- },
- "is-windows": {
- "version": "1.0.2",
- "resolved": "http://r.tnpm.oa.com/is-windows/download/is-windows-1.0.2.tgz",
- "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=",
- "dev": true
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/isarray/download/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "http://r.tnpm.oa.com/isexe/download/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "http://r.tnpm.oa.com/isobject/download/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- },
- "js-yaml": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
- "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "json-parse-better-errors": {
- "version": "1.0.2",
- "resolved": "http://r.tnpm.oa.com/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=",
- "dev": true
- },
- "kind-of": {
- "version": "6.0.2",
- "resolved": "http://r.tnpm.oa.com/kind-of/download/kind-of-6.0.2.tgz",
- "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=",
- "dev": true
- },
- "latest-version": {
- "version": "3.1.0",
- "resolved": "http://r.tnpm.oa.com/latest-version/download/latest-version-3.1.0.tgz",
- "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
- "dev": true,
- "requires": {
- "package-json": "^4.0.0"
- }
- },
- "load-json-file": {
- "version": "4.0.0",
- "resolved": "http://r.tnpm.oa.com/load-json-file/download/load-json-file-4.0.0.tgz",
- "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0",
- "strip-bom": "^3.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "http://r.tnpm.oa.com/pify/download/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- }
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "resolved": "http://r.tnpm.oa.com/locate-path/download/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "dev": true,
- "requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "log-symbols": {
- "version": "2.2.0",
- "resolved": "http://r.tnpm.oa.com/log-symbols/download/log-symbols-2.2.0.tgz",
- "integrity": "sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=",
- "dev": true,
- "requires": {
- "chalk": "^2.0.1"
- }
- },
- "loud-rejection": {
- "version": "1.6.0",
- "resolved": "http://r.tnpm.oa.com/loud-rejection/download/loud-rejection-1.6.0.tgz",
- "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
- "dev": true,
- "requires": {
- "currently-unhandled": "^0.4.1",
- "signal-exit": "^3.0.0"
- }
- },
- "lowercase-keys": {
- "version": "1.0.1",
- "resolved": "http://r.tnpm.oa.com/lowercase-keys/download/lowercase-keys-1.0.1.tgz",
- "integrity": "sha1-b54wtHCE2XGnyCD/FabFFnt0wm8=",
- "dev": true
- },
- "lru-cache": {
- "version": "4.1.5",
- "resolved": "http://r.tnpm.oa.com/lru-cache/download/lru-cache-4.1.5.tgz",
- "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
- "dev": true,
- "requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "make-dir": {
- "version": "1.3.0",
- "resolved": "http://r.tnpm.oa.com/make-dir/download/make-dir-1.3.0.tgz",
- "integrity": "sha1-ecEDO4BRW9bSTsmTPoYMp17ifww=",
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "http://r.tnpm.oa.com/pify/download/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- }
- }
- },
- "map-cache": {
- "version": "0.2.2",
- "resolved": "http://r.tnpm.oa.com/map-cache/download/map-cache-0.2.2.tgz",
- "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
- "dev": true
- },
- "map-obj": {
- "version": "2.0.0",
- "resolved": "http://r.tnpm.oa.com/map-obj/download/map-obj-2.0.0.tgz",
- "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=",
- "dev": true
- },
- "map-visit": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/map-visit/download/map-visit-1.0.0.tgz",
- "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
- "dev": true,
- "requires": {
- "object-visit": "^1.0.0"
- }
- },
- "meow": {
- "version": "5.0.0",
- "resolved": "http://r.tnpm.oa.com/meow/download/meow-5.0.0.tgz",
- "integrity": "sha1-38c9Y6mvxxSl43F2DrXIi5EHiqQ=",
- "dev": true,
- "requires": {
- "camelcase-keys": "^4.0.0",
- "decamelize-keys": "^1.0.0",
- "loud-rejection": "^1.0.0",
- "minimist-options": "^3.0.1",
- "normalize-package-data": "^2.3.4",
- "read-pkg-up": "^3.0.0",
- "redent": "^2.0.0",
- "trim-newlines": "^2.0.0",
- "yargs-parser": "^10.0.0"
- },
- "dependencies": {
- "read-pkg-up": {
- "version": "3.0.0",
- "resolved": "http://r.tnpm.oa.com/read-pkg-up/download/read-pkg-up-3.0.0.tgz",
- "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
- "dev": true,
- "requires": {
- "find-up": "^2.0.0",
- "read-pkg": "^3.0.0"
- }
- }
- }
- },
- "merge2": {
- "version": "1.3.0",
- "resolved": "http://r.tnpm.oa.com/merge2/download/merge2-1.3.0.tgz",
- "integrity": "sha1-WzZu6DsvFYLEj4fkfPGpNSEDyoE=",
- "dev": true
- },
- "micromatch": {
- "version": "3.1.10",
- "resolved": "http://r.tnpm.oa.com/micromatch/download/micromatch-3.1.10.tgz",
- "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- }
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.0",
- "resolved": "http://r.tnpm.oa.com/minimist/download/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
- "dev": true
- },
- "minimist-options": {
- "version": "3.0.2",
- "resolved": "http://r.tnpm.oa.com/minimist-options/download/minimist-options-3.0.2.tgz",
- "integrity": "sha1-+6TIGRM54T7PTWG+sD8HAQPz2VQ=",
- "dev": true,
- "requires": {
- "arrify": "^1.0.1",
- "is-plain-obj": "^1.1.0"
- }
- },
- "mixin-deep": {
- "version": "1.3.2",
- "resolved": "http://r.tnpm.oa.com/mixin-deep/download/mixin-deep-1.3.2.tgz",
- "integrity": "sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY=",
- "dev": true,
- "requires": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "http://r.tnpm.oa.com/is-extendable/download/is-extendable-1.0.1.tgz",
- "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- }
- }
- },
- "mkdirp": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
- "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
- "dev": true,
- "requires": {
- "minimist": "0.0.8"
- },
- "dependencies": {
- "minimist": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
- "dev": true
- }
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "http://r.tnpm.oa.com/ms/download/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- },
- "nanomatch": {
- "version": "1.2.13",
- "resolved": "http://r.tnpm.oa.com/nanomatch/download/nanomatch-1.2.13.tgz",
- "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- }
- },
- "normalize-package-data": {
- "version": "2.5.0",
- "resolved": "http://r.tnpm.oa.com/normalize-package-data/download/normalize-package-data-2.5.0.tgz",
- "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=",
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "npm-run-path": {
- "version": "2.0.2",
- "resolved": "http://r.tnpm.oa.com/npm-run-path/download/npm-run-path-2.0.2.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
- "dev": true,
- "requires": {
- "path-key": "^2.0.0"
- }
- },
- "object-copy": {
- "version": "0.1.0",
- "resolved": "http://r.tnpm.oa.com/object-copy/download/object-copy-0.1.0.tgz",
- "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
- "dev": true,
- "requires": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "http://r.tnpm.oa.com/define-property/download/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "http://r.tnpm.oa.com/kind-of/download/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "object-visit": {
- "version": "1.0.1",
- "resolved": "http://r.tnpm.oa.com/object-visit/download/object-visit-1.0.1.tgz",
- "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
- "dev": true,
- "requires": {
- "isobject": "^3.0.0"
- }
- },
- "object.pick": {
- "version": "1.3.0",
- "resolved": "http://r.tnpm.oa.com/object.pick/download/object.pick-1.3.0.tgz",
- "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "p-finally": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/p-finally/download/p-finally-1.0.0.tgz",
- "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
- "dev": true
- },
- "p-limit": {
- "version": "1.3.0",
- "resolved": "http://r.tnpm.oa.com/p-limit/download/p-limit-1.3.0.tgz",
- "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=",
- "dev": true,
- "requires": {
- "p-try": "^1.0.0"
- }
- },
- "p-locate": {
- "version": "2.0.0",
- "resolved": "http://r.tnpm.oa.com/p-locate/download/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
- "dev": true,
- "requires": {
- "p-limit": "^1.1.0"
- }
- },
- "p-try": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/p-try/download/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
- "dev": true
- },
- "package-json": {
- "version": "4.0.1",
- "resolved": "http://r.tnpm.oa.com/package-json/download/package-json-4.0.1.tgz",
- "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
- "dev": true,
- "requires": {
- "got": "^6.7.1",
- "registry-auth-token": "^3.0.1",
- "registry-url": "^3.0.3",
- "semver": "^5.1.0"
- }
- },
- "parse-json": {
- "version": "4.0.0",
- "resolved": "http://r.tnpm.oa.com/parse-json/download/parse-json-4.0.0.tgz",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
- "dev": true,
- "requires": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- }
- },
- "pascalcase": {
- "version": "0.1.1",
- "resolved": "http://r.tnpm.oa.com/pascalcase/download/pascalcase-0.1.1.tgz",
- "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
- "dev": true
- },
- "path-dirname": {
- "version": "1.0.2",
- "resolved": "http://r.tnpm.oa.com/path-dirname/download/path-dirname-1.0.2.tgz",
- "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
- "dev": true
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "http://r.tnpm.oa.com/path-exists/download/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true
- },
- "path-is-inside": {
- "version": "1.0.2",
- "resolved": "http://r.tnpm.oa.com/path-is-inside/download/path-is-inside-1.0.2.tgz",
- "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
- "dev": true
- },
- "path-key": {
- "version": "2.0.1",
- "resolved": "http://r.tnpm.oa.com/path-key/download/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
- "dev": true
- },
- "path-type": {
- "version": "3.0.0",
- "resolved": "http://r.tnpm.oa.com/path-type/download/path-type-3.0.0.tgz",
- "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=",
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "http://r.tnpm.oa.com/pify/download/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- }
- }
- },
- "pify": {
- "version": "4.0.1",
- "resolved": "http://r.tnpm.oa.com/pify/download/pify-4.0.1.tgz",
- "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=",
- "dev": true
- },
- "plur": {
- "version": "2.1.2",
- "resolved": "http://r.tnpm.oa.com/plur/download/plur-2.1.2.tgz",
- "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=",
- "dev": true,
- "requires": {
- "irregular-plurals": "^1.0.0"
- }
- },
- "posix-character-classes": {
- "version": "0.1.1",
- "resolved": "http://r.tnpm.oa.com/posix-character-classes/download/posix-character-classes-0.1.1.tgz",
- "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
- "dev": true
- },
- "prepend-http": {
- "version": "1.0.4",
- "resolved": "http://r.tnpm.oa.com/prepend-http/download/prepend-http-1.0.4.tgz",
- "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
- "dev": true
- },
- "pseudomap": {
- "version": "1.0.2",
- "resolved": "http://r.tnpm.oa.com/pseudomap/download/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
- "dev": true
- },
- "quick-lru": {
- "version": "1.1.0",
- "resolved": "http://r.tnpm.oa.com/quick-lru/download/quick-lru-1.1.0.tgz",
- "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=",
- "dev": true
- },
- "rc": {
- "version": "1.2.8",
- "resolved": "http://r.tnpm.oa.com/rc/download/rc-1.2.8.tgz",
- "integrity": "sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0=",
- "dev": true,
- "requires": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- }
- },
- "read-pkg": {
- "version": "3.0.0",
- "resolved": "http://r.tnpm.oa.com/read-pkg/download/read-pkg-3.0.0.tgz",
- "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
- "dev": true,
- "requires": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
- }
- },
- "read-pkg-up": {
- "version": "4.0.0",
- "resolved": "http://r.tnpm.oa.com/read-pkg-up/download/read-pkg-up-4.0.0.tgz",
- "integrity": "sha1-GyIcYIi6d5lgHICPkRYcZuWPiXg=",
- "dev": true,
- "requires": {
- "find-up": "^3.0.0",
- "read-pkg": "^3.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "3.0.0",
- "resolved": "http://r.tnpm.oa.com/find-up/download/find-up-3.0.0.tgz",
- "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "http://r.tnpm.oa.com/locate-path/download/locate-path-3.0.0.tgz",
- "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-limit": {
- "version": "2.2.1",
- "resolved": "http://r.tnpm.oa.com/p-limit/download/p-limit-2.2.1.tgz",
- "integrity": "sha1-qgeniMwxUck5tRMfY1cPDdIAlTc=",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "http://r.tnpm.oa.com/p-locate/download/p-locate-3.0.0.tgz",
- "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "http://r.tnpm.oa.com/p-try/download/p-try-2.2.0.tgz",
- "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=",
- "dev": true
- }
- }
- },
- "redent": {
- "version": "2.0.0",
- "resolved": "http://r.tnpm.oa.com/redent/download/redent-2.0.0.tgz",
- "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=",
- "dev": true,
- "requires": {
- "indent-string": "^3.0.0",
- "strip-indent": "^2.0.0"
- }
- },
- "regex-not": {
- "version": "1.0.2",
- "resolved": "http://r.tnpm.oa.com/regex-not/download/regex-not-1.0.2.tgz",
- "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=",
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- }
- },
- "registry-auth-token": {
- "version": "3.4.0",
- "resolved": "http://r.tnpm.oa.com/registry-auth-token/download/registry-auth-token-3.4.0.tgz",
- "integrity": "sha1-10RoFUM/XV7WQxzV3KIQSPZrOX4=",
- "dev": true,
- "requires": {
- "rc": "^1.1.6",
- "safe-buffer": "^5.0.1"
- }
- },
- "registry-url": {
- "version": "3.1.0",
- "resolved": "http://r.tnpm.oa.com/registry-url/download/registry-url-3.1.0.tgz",
- "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
- "dev": true,
- "requires": {
- "rc": "^1.0.1"
- }
- },
- "repeat-element": {
- "version": "1.1.3",
- "resolved": "http://r.tnpm.oa.com/repeat-element/download/repeat-element-1.1.3.tgz",
- "integrity": "sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4=",
- "dev": true
- },
- "repeat-string": {
- "version": "1.6.1",
- "resolved": "http://r.tnpm.oa.com/repeat-string/download/repeat-string-1.6.1.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
- "dev": true
- },
- "resolve": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
- "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
- "dev": true,
- "requires": {
- "path-parse": "^1.0.6"
- }
- },
- "resolve-url": {
- "version": "0.2.1",
- "resolved": "http://r.tnpm.oa.com/resolve-url/download/resolve-url-0.2.1.tgz",
- "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
- "dev": true
- },
- "ret": {
- "version": "0.1.15",
- "resolved": "http://r.tnpm.oa.com/ret/download/ret-0.1.15.tgz",
- "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=",
- "dev": true
- },
- "safe-buffer": {
- "version": "5.2.0",
- "resolved": "http://r.tnpm.oa.com/safe-buffer/download/safe-buffer-5.2.0.tgz",
- "integrity": "sha1-t02uxJsRSPiMZLaNSbHoFcHy9Rk=",
- "dev": true
- },
- "safe-regex": {
- "version": "1.1.0",
- "resolved": "http://r.tnpm.oa.com/safe-regex/download/safe-regex-1.1.0.tgz",
- "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
- "dev": true,
- "requires": {
- "ret": "~0.1.10"
- }
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- },
- "semver-diff": {
- "version": "2.1.0",
- "resolved": "http://r.tnpm.oa.com/semver-diff/download/semver-diff-2.1.0.tgz",
- "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
- "dev": true,
- "requires": {
- "semver": "^5.0.3"
- }
- },
- "set-value": {
- "version": "2.0.1",
- "resolved": "http://r.tnpm.oa.com/set-value/download/set-value-2.0.1.tgz",
- "integrity": "sha1-oY1AUw5vB95CKMfe/kInr4ytAFs=",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "http://r.tnpm.oa.com/extend-shallow/download/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "shebang-command": {
- "version": "1.2.0",
- "resolved": "http://r.tnpm.oa.com/shebang-command/download/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
- "dev": true,
- "requires": {
- "shebang-regex": "^1.0.0"
- }
- },
- "shebang-regex": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/shebang-regex/download/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
- "dev": true
- },
- "signal-exit": {
- "version": "3.0.2",
- "resolved": "http://r.tnpm.oa.com/signal-exit/download/signal-exit-3.0.2.tgz",
- "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
- "dev": true
- },
- "slash": {
- "version": "2.0.0",
- "resolved": "http://r.tnpm.oa.com/slash/download/slash-2.0.0.tgz",
- "integrity": "sha1-3lUoUaF1nfOo8gZTVEL17E3eq0Q=",
- "dev": true
- },
- "snapdragon": {
- "version": "0.8.2",
- "resolved": "http://r.tnpm.oa.com/snapdragon/download/snapdragon-0.8.2.tgz",
- "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=",
- "dev": true,
- "requires": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "http://r.tnpm.oa.com/define-property/download/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "http://r.tnpm.oa.com/extend-shallow/download/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "snapdragon-node": {
- "version": "2.1.1",
- "resolved": "http://r.tnpm.oa.com/snapdragon-node/download/snapdragon-node-2.1.1.tgz",
- "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=",
- "dev": true,
- "requires": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/define-property/download/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "http://r.tnpm.oa.com/is-descriptor/download/is-descriptor-1.0.2.tgz",
- "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
- }
- },
- "snapdragon-util": {
- "version": "3.0.1",
- "resolved": "http://r.tnpm.oa.com/snapdragon-util/download/snapdragon-util-3.0.1.tgz",
- "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=",
- "dev": true,
- "requires": {
- "kind-of": "^3.2.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "http://r.tnpm.oa.com/kind-of/download/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "http://r.tnpm.oa.com/source-map/download/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
- },
- "source-map-resolve": {
- "version": "0.5.2",
- "resolved": "http://r.tnpm.oa.com/source-map-resolve/download/source-map-resolve-0.5.2.tgz",
- "integrity": "sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk=",
- "dev": true,
- "requires": {
- "atob": "^2.1.1",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
- },
- "source-map-url": {
- "version": "0.4.0",
- "resolved": "http://r.tnpm.oa.com/source-map-url/download/source-map-url-0.4.0.tgz",
- "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
- "dev": true
- },
- "spdx-correct": {
- "version": "3.1.0",
- "resolved": "http://r.tnpm.oa.com/spdx-correct/download/spdx-correct-3.1.0.tgz",
- "integrity": "sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ=",
- "dev": true,
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.2.0",
- "resolved": "http://r.tnpm.oa.com/spdx-exceptions/download/spdx-exceptions-2.2.0.tgz",
- "integrity": "sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc=",
- "dev": true
- },
- "spdx-expression-parse": {
- "version": "3.0.0",
- "resolved": "http://r.tnpm.oa.com/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz",
- "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=",
- "dev": true,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.5",
- "resolved": "http://r.tnpm.oa.com/spdx-license-ids/download/spdx-license-ids-3.0.5.tgz",
- "integrity": "sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=",
- "dev": true
- },
- "split-string": {
- "version": "3.1.0",
- "resolved": "http://r.tnpm.oa.com/split-string/download/split-string-3.1.0.tgz",
- "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=",
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.0"
- }
- },
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
- },
- "static-extend": {
- "version": "0.1.2",
- "resolved": "http://r.tnpm.oa.com/static-extend/download/static-extend-0.1.2.tgz",
- "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
- "dev": true,
- "requires": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "http://r.tnpm.oa.com/define-property/download/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
- }
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "http://r.tnpm.oa.com/string-width/download/string-width-2.1.1.tgz",
- "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "http://r.tnpm.oa.com/strip-ansi/download/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- },
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "http://r.tnpm.oa.com/strip-bom/download/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
- "dev": true
- },
- "strip-eof": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/strip-eof/download/strip-eof-1.0.0.tgz",
- "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
- "dev": true
- },
- "strip-indent": {
- "version": "2.0.0",
- "resolved": "http://r.tnpm.oa.com/strip-indent/download/strip-indent-2.0.0.tgz",
- "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
- "dev": true
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "resolved": "http://r.tnpm.oa.com/strip-json-comments/download/strip-json-comments-2.0.1.tgz",
- "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
- "dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "term-size": {
- "version": "1.2.0",
- "resolved": "http://r.tnpm.oa.com/term-size/download/term-size-1.2.0.tgz",
- "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
- "dev": true,
- "requires": {
- "execa": "^0.7.0"
- }
- },
- "timed-out": {
- "version": "4.0.1",
- "resolved": "http://r.tnpm.oa.com/timed-out/download/timed-out-4.0.1.tgz",
- "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
- "dev": true
- },
- "to-object-path": {
- "version": "0.3.0",
- "resolved": "http://r.tnpm.oa.com/to-object-path/download/to-object-path-0.3.0.tgz",
- "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "http://r.tnpm.oa.com/kind-of/download/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "to-regex": {
- "version": "3.0.2",
- "resolved": "http://r.tnpm.oa.com/to-regex/download/to-regex-3.0.2.tgz",
- "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=",
- "dev": true,
- "requires": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- }
- },
- "to-regex-range": {
- "version": "2.1.1",
- "resolved": "http://r.tnpm.oa.com/to-regex-range/download/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- }
- },
- "trim-newlines": {
- "version": "2.0.0",
- "resolved": "http://r.tnpm.oa.com/trim-newlines/download/trim-newlines-2.0.0.tgz",
- "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=",
- "dev": true
- },
- "tsd": {
- "version": "0.11.0",
- "resolved": "http://r.tnpm.oa.com/tsd/download/tsd-0.11.0.tgz",
- "integrity": "sha1-7ei46FhQhFt1P/9+qvaNvTZzcAs=",
- "dev": true,
- "requires": {
- "eslint-formatter-pretty": "^1.3.0",
- "globby": "^9.1.0",
- "meow": "^5.0.0",
- "path-exists": "^3.0.0",
- "read-pkg-up": "^4.0.0",
- "update-notifier": "^2.5.0"
- }
- },
- "tslib": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
- "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
- "dev": true
- },
- "tslint": {
- "version": "5.20.0",
- "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.0.tgz",
- "integrity": "sha512-2vqIvkMHbnx8acMogAERQ/IuINOq6DFqgF8/VDvhEkBqQh/x6SP0Y+OHnKth9/ZcHQSroOZwUQSN18v8KKF0/g==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "builtin-modules": "^1.1.1",
- "chalk": "^2.3.0",
- "commander": "^2.12.1",
- "diff": "^4.0.1",
- "glob": "^7.1.1",
- "js-yaml": "^3.13.1",
- "minimatch": "^3.0.4",
- "mkdirp": "^0.5.1",
- "resolve": "^1.3.2",
- "semver": "^5.3.0",
- "tslib": "^1.8.0",
- "tsutils": "^2.29.0"
- }
- },
- "tsutils": {
- "version": "2.29.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz",
- "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "typescript": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz",
- "integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==",
- "dev": true
- },
- "union-value": {
- "version": "1.0.1",
- "resolved": "http://r.tnpm.oa.com/union-value/download/union-value-1.0.1.tgz",
- "integrity": "sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc=",
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
- }
- },
- "unique-string": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/unique-string/download/unique-string-1.0.0.tgz",
- "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
- "dev": true,
- "requires": {
- "crypto-random-string": "^1.0.0"
- }
- },
- "unset-value": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/unset-value/download/unset-value-1.0.0.tgz",
- "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
- "dev": true,
- "requires": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
- },
- "dependencies": {
- "has-value": {
- "version": "0.3.1",
- "resolved": "http://r.tnpm.oa.com/has-value/download/has-value-0.3.1.tgz",
- "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
- "dev": true,
- "requires": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "dependencies": {
- "isobject": {
- "version": "2.1.0",
- "resolved": "http://r.tnpm.oa.com/isobject/download/isobject-2.1.0.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "dev": true,
- "requires": {
- "isarray": "1.0.0"
- }
- }
- }
- },
- "has-values": {
- "version": "0.1.4",
- "resolved": "http://r.tnpm.oa.com/has-values/download/has-values-0.1.4.tgz",
- "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
- "dev": true
- }
- }
- },
- "unzip-response": {
- "version": "2.0.1",
- "resolved": "http://r.tnpm.oa.com/unzip-response/download/unzip-response-2.0.1.tgz",
- "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=",
- "dev": true
- },
- "update-notifier": {
- "version": "2.5.0",
- "resolved": "http://r.tnpm.oa.com/update-notifier/download/update-notifier-2.5.0.tgz",
- "integrity": "sha1-0HRFk+E/Fh5AassdlAi3LK0Ir/Y=",
- "dev": true,
- "requires": {
- "boxen": "^1.2.1",
- "chalk": "^2.0.1",
- "configstore": "^3.0.0",
- "import-lazy": "^2.1.0",
- "is-ci": "^1.0.10",
- "is-installed-globally": "^0.1.0",
- "is-npm": "^1.0.0",
- "latest-version": "^3.0.0",
- "semver-diff": "^2.0.0",
- "xdg-basedir": "^3.0.0"
- }
- },
- "urix": {
- "version": "0.1.0",
- "resolved": "http://r.tnpm.oa.com/urix/download/urix-0.1.0.tgz",
- "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
- "dev": true
- },
- "url-parse-lax": {
- "version": "1.0.0",
- "resolved": "http://r.tnpm.oa.com/url-parse-lax/download/url-parse-lax-1.0.0.tgz",
- "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
- "dev": true,
- "requires": {
- "prepend-http": "^1.0.1"
- }
- },
- "use": {
- "version": "3.1.1",
- "resolved": "http://r.tnpm.oa.com/use/download/use-3.1.1.tgz",
- "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=",
- "dev": true
- },
- "validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "http://r.tnpm.oa.com/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=",
- "dev": true,
- "requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "which": {
- "version": "1.3.1",
- "resolved": "http://r.tnpm.oa.com/which/download/which-1.3.1.tgz",
- "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "widest-line": {
- "version": "2.0.1",
- "resolved": "http://r.tnpm.oa.com/widest-line/download/widest-line-2.0.1.tgz",
- "integrity": "sha1-dDh2RzDsfvQ4HOTfgvuYpTFCo/w=",
- "dev": true,
- "requires": {
- "string-width": "^2.1.1"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
- },
- "write-file-atomic": {
- "version": "2.4.3",
- "resolved": "http://r.tnpm.oa.com/write-file-atomic/download/write-file-atomic-2.4.3.tgz",
- "integrity": "sha1-H9Lprh3z51uNjDZ0Q8aS1MqB9IE=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.11",
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.2"
- }
- },
- "xdg-basedir": {
- "version": "3.0.0",
- "resolved": "http://r.tnpm.oa.com/xdg-basedir/download/xdg-basedir-3.0.0.tgz",
- "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
- "dev": true
- },
- "yallist": {
- "version": "2.1.2",
- "resolved": "http://r.tnpm.oa.com/yallist/download/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
- "dev": true
- },
- "yargs-parser": {
- "version": "10.1.0",
- "resolved": "http://r.tnpm.oa.com/yargs-parser/download/yargs-parser-10.1.0.tgz",
- "integrity": "sha1-cgImW4n36eny5XZeD+c1qQXtuqg=",
- "dev": true,
- "requires": {
- "camelcase": "^4.1.0"
- }
- }
- }
-}
diff --git a/package.json b/package.json
index fab53c4..5eade4d 100644
--- a/package.json
+++ b/package.json
@@ -1,13 +1,13 @@
{
"name": "miniprogram-api-typings",
- "version": "2.10.0",
+ "version": "4.1.0",
"description": "Type definitions for APIs of Wechat Mini Program in TypeScript",
"main": "./index.d.ts",
"types": "./index.d.ts",
"scripts": {
- "test": "npm run tsd && npm run tslint",
+ "test": "npm run tsd && npm run eslint",
"tsd": "tsd",
- "tslint": "tslint --project ."
+ "eslint": "eslint --config .eslintrc.js types/**/*.ts"
},
"repository": {
"type": "git",
@@ -19,11 +19,12 @@
"url": "https://github.com/wechat-miniprogram/api-typings/issues"
},
"homepage": "https://github.com/wechat-miniprogram/api-typings#readme",
- "dependencies": {},
"devDependencies": {
- "tsd": "^0.11.0",
- "tslint": "^5.20.0",
- "typescript": "^3.5.3"
+ "@typescript-eslint/eslint-plugin": "^6.21.0",
+ "@typescript-eslint/parser": "^6.21.0",
+ "eslint": "^8.57.1",
+ "tsd": "^0.32.0",
+ "typescript": "^5.2.2 <5.4.0"
},
"tsd": {
"directory": "test"
@@ -31,7 +32,6 @@
"files": [
"LICENSE",
"CHANGELOG.md",
- "VERSIONS.md",
"README.md",
"README-en.md",
"index.d.ts",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000..d6fbc4a
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,1694 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+overrides:
+ brace-expansion@>=1.0.0 <=1.1.11: '>=1.1.12'
+ brace-expansion@>=2.0.0 <=2.0.1: '>=2.0.2'
+
+importers:
+
+ .:
+ devDependencies:
+ '@typescript-eslint/eslint-plugin':
+ specifier: ^6.21.0
+ version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.3.3))(eslint@8.57.1)(typescript@5.3.3)
+ '@typescript-eslint/parser':
+ specifier: ^6.21.0
+ version: 6.21.0(eslint@8.57.1)(typescript@5.3.3)
+ eslint:
+ specifier: ^8.57.1
+ version: 8.57.1
+ tsd:
+ specifier: ^0.32.0
+ version: 0.32.0
+ typescript:
+ specifier: ^5.2.2 <5.4.0
+ version: 5.3.3
+
+packages:
+
+ '@babel/code-frame@7.26.2':
+ resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-identifier@7.25.9':
+ resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@eslint-community/eslint-utils@4.6.1':
+ resolution: {integrity: sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
+
+ '@eslint-community/regexpp@4.12.1':
+ resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+
+ '@eslint/eslintrc@2.1.4':
+ resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ '@eslint/js@8.57.1':
+ resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ '@humanwhocodes/config-array@0.13.0':
+ resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==}
+ engines: {node: '>=10.10.0'}
+ deprecated: Use @eslint/config-array instead
+
+ '@humanwhocodes/module-importer@1.0.1':
+ resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
+ engines: {node: '>=12.22'}
+
+ '@humanwhocodes/object-schema@2.0.3':
+ resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
+ deprecated: Use @eslint/object-schema instead
+
+ '@jest/schemas@29.6.3':
+ resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@nodelib/fs.scandir@2.1.5':
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.stat@2.0.5':
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.walk@1.2.8':
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+
+ '@sinclair/typebox@0.27.8':
+ resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
+
+ '@tsd/typescript@5.8.3':
+ resolution: {integrity: sha512-oKarNCN1QUhG148M88mtZdOlBZWWGcInquef+U8QL7gwJkRuNo5WS45Fjsd+3hM9cDJWGpqSZ4Oo097KDx4IWA==}
+ engines: {node: '>=14.17'}
+
+ '@types/eslint@7.29.0':
+ resolution: {integrity: sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==}
+
+ '@types/estree@1.0.7':
+ resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
+
+ '@types/json-schema@7.0.15':
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+
+ '@types/minimist@1.2.5':
+ resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==}
+
+ '@types/normalize-package-data@2.4.4':
+ resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
+
+ '@types/semver@7.7.0':
+ resolution: {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==}
+
+ '@typescript-eslint/eslint-plugin@6.21.0':
+ resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
+ eslint: ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/parser@6.21.0':
+ resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/scope-manager@6.21.0':
+ resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+
+ '@typescript-eslint/type-utils@6.21.0':
+ resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/types@6.21.0':
+ resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+
+ '@typescript-eslint/typescript-estree@6.21.0':
+ resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/utils@6.21.0':
+ resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+
+ '@typescript-eslint/visitor-keys@6.21.0':
+ resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+
+ '@ungap/structured-clone@1.3.0':
+ resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
+
+ acorn-jsx@5.3.2:
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+
+ acorn@8.14.1:
+ resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ ajv@6.12.6:
+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+
+ ansi-escapes@4.3.2:
+ resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
+ engines: {node: '>=8'}
+
+ ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+
+ ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+
+ ansi-styles@5.2.0:
+ resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
+ engines: {node: '>=10'}
+
+ argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ array-union@2.1.0:
+ resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
+ engines: {node: '>=8'}
+
+ arrify@1.0.1:
+ resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==}
+ engines: {node: '>=0.10.0'}
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ balanced-match@3.0.1:
+ resolution: {integrity: sha512-vjtV3hiLqYDNRoiAv0zC4QaGAMPomEoq83PRmYIofPswwZurCeWR5LByXm7SyoL0Zh5+2z0+HC7jG8gSZJUh0w==}
+ engines: {node: '>= 16'}
+
+ brace-expansion@2.0.1:
+ resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+
+ brace-expansion@4.0.1:
+ resolution: {integrity: sha512-YClrbvTCXGe70pU2JiEiPLYXO9gQkyxYeKpJIQHVS/gOs6EWMQP2RYBwjFLNT322Ji8TOC3IMPfsYCedNpzKfA==}
+ engines: {node: '>= 18'}
+
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+
+ callsites@3.1.0:
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
+
+ camelcase-keys@6.2.2:
+ resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
+ engines: {node: '>=8'}
+
+ camelcase@5.3.1:
+ resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
+ engines: {node: '>=6'}
+
+ chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+
+ color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+
+ color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ cross-spawn@7.0.6:
+ resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
+ engines: {node: '>= 8'}
+
+ debug@4.4.0:
+ resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ decamelize-keys@1.1.1:
+ resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==}
+ engines: {node: '>=0.10.0'}
+
+ decamelize@1.2.0:
+ resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
+ engines: {node: '>=0.10.0'}
+
+ deep-is@0.1.4:
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+
+ diff-sequences@29.6.3:
+ resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ dir-glob@3.0.1:
+ resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
+ engines: {node: '>=8'}
+
+ doctrine@3.0.0:
+ resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
+ engines: {node: '>=6.0.0'}
+
+ emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ error-ex@1.3.2:
+ resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
+
+ escape-string-regexp@4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
+
+ eslint-formatter-pretty@4.1.0:
+ resolution: {integrity: sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==}
+ engines: {node: '>=10'}
+
+ eslint-rule-docs@1.1.235:
+ resolution: {integrity: sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==}
+
+ eslint-scope@7.2.2:
+ resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ eslint-visitor-keys@3.4.3:
+ resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ eslint@8.57.1:
+ resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
+ hasBin: true
+
+ espree@9.6.1:
+ resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ esquery@1.6.0:
+ resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
+ engines: {node: '>=0.10'}
+
+ esrecurse@4.3.0:
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
+
+ estraverse@5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+
+ esutils@2.0.3:
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
+
+ fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+
+ fast-glob@3.3.3:
+ resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
+ engines: {node: '>=8.6.0'}
+
+ fast-json-stable-stringify@2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+
+ fast-levenshtein@2.0.6:
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+
+ fastq@1.19.1:
+ resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
+
+ file-entry-cache@6.0.1:
+ resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+
+ find-up@4.1.0:
+ resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
+ engines: {node: '>=8'}
+
+ find-up@5.0.0:
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
+
+ flat-cache@3.2.0:
+ resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+
+ flatted@3.3.3:
+ resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
+
+ fs.realpath@1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+
+ glob-parent@6.0.2:
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
+
+ glob@7.2.3:
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ deprecated: Glob versions prior to v9 are no longer supported
+
+ globals@13.24.0:
+ resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
+ engines: {node: '>=8'}
+
+ globby@11.1.0:
+ resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
+ engines: {node: '>=10'}
+
+ graphemer@1.4.0:
+ resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
+
+ hard-rejection@2.1.0:
+ resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==}
+ engines: {node: '>=6'}
+
+ has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+
+ hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+
+ hosted-git-info@2.8.9:
+ resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
+
+ hosted-git-info@4.1.0:
+ resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==}
+ engines: {node: '>=10'}
+
+ ignore@5.3.2:
+ resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
+ engines: {node: '>= 4'}
+
+ import-fresh@3.3.1:
+ resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
+ engines: {node: '>=6'}
+
+ imurmurhash@0.1.4:
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
+
+ indent-string@4.0.0:
+ resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
+ engines: {node: '>=8'}
+
+ inflight@1.0.6:
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ irregular-plurals@3.5.0:
+ resolution: {integrity: sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==}
+ engines: {node: '>=8'}
+
+ is-arrayish@0.2.1:
+ resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
+
+ is-core-module@2.16.1:
+ resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
+ engines: {node: '>= 0.4'}
+
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+
+ is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ is-path-inside@3.0.3:
+ resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
+ engines: {node: '>=8'}
+
+ is-plain-obj@1.1.0:
+ resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
+ engines: {node: '>=0.10.0'}
+
+ is-unicode-supported@0.1.0:
+ resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
+ engines: {node: '>=10'}
+
+ isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+
+ jest-diff@29.7.0:
+ resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-get-type@29.6.3:
+ resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ js-yaml@4.1.0:
+ resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
+ hasBin: true
+
+ json-buffer@3.0.1:
+ resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+
+ json-parse-even-better-errors@2.3.1:
+ resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+
+ json-schema-traverse@0.4.1:
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+
+ json-stable-stringify-without-jsonify@1.0.1:
+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+
+ keyv@4.5.4:
+ resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+
+ kind-of@6.0.3:
+ resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
+ engines: {node: '>=0.10.0'}
+
+ levn@0.4.1:
+ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
+ engines: {node: '>= 0.8.0'}
+
+ lines-and-columns@1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+
+ locate-path@5.0.0:
+ resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
+ engines: {node: '>=8'}
+
+ locate-path@6.0.0:
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
+
+ lodash.merge@4.6.2:
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+
+ log-symbols@4.1.0:
+ resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
+ engines: {node: '>=10'}
+
+ lru-cache@6.0.0:
+ resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+ engines: {node: '>=10'}
+
+ map-obj@1.0.1:
+ resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==}
+ engines: {node: '>=0.10.0'}
+
+ map-obj@4.3.0:
+ resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==}
+ engines: {node: '>=8'}
+
+ meow@9.0.0:
+ resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==}
+ engines: {node: '>=10'}
+
+ merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+
+ micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
+
+ min-indent@1.0.1:
+ resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
+ engines: {node: '>=4'}
+
+ minimatch@3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+
+ minimatch@9.0.3:
+ resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ minimist-options@4.1.0:
+ resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
+ engines: {node: '>= 6'}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ natural-compare@1.4.0:
+ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+
+ normalize-package-data@2.5.0:
+ resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
+
+ normalize-package-data@3.0.3:
+ resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==}
+ engines: {node: '>=10'}
+
+ once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+
+ optionator@0.9.4:
+ resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
+ engines: {node: '>= 0.8.0'}
+
+ p-limit@2.3.0:
+ resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
+ engines: {node: '>=6'}
+
+ p-limit@3.1.0:
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
+
+ p-locate@4.1.0:
+ resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
+ engines: {node: '>=8'}
+
+ p-locate@5.0.0:
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
+
+ p-try@2.2.0:
+ resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
+ engines: {node: '>=6'}
+
+ parent-module@1.0.1:
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
+
+ parse-json@5.2.0:
+ resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
+ engines: {node: '>=8'}
+
+ path-exists@4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+
+ path-is-absolute@1.0.1:
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
+
+ path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+
+ path-parse@1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+
+ path-type@4.0.0:
+ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
+ engines: {node: '>=8'}
+
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
+ plur@4.0.0:
+ resolution: {integrity: sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==}
+ engines: {node: '>=10'}
+
+ prelude-ls@1.2.1:
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
+
+ pretty-format@29.7.0:
+ resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ punycode@2.3.1:
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
+
+ queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+
+ quick-lru@4.0.1:
+ resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==}
+ engines: {node: '>=8'}
+
+ react-is@18.3.1:
+ resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
+
+ read-pkg-up@7.0.1:
+ resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
+ engines: {node: '>=8'}
+
+ read-pkg@5.2.0:
+ resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
+ engines: {node: '>=8'}
+
+ redent@3.0.0:
+ resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
+ engines: {node: '>=8'}
+
+ resolve-from@4.0.0:
+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+ engines: {node: '>=4'}
+
+ resolve@1.22.10:
+ resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
+ engines: {node: '>= 0.4'}
+ hasBin: true
+
+ reusify@1.1.0:
+ resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+
+ rimraf@3.0.2:
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ deprecated: Rimraf versions prior to v4 are no longer supported
+ hasBin: true
+
+ run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+
+ semver@5.7.2:
+ resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
+ hasBin: true
+
+ semver@7.7.1:
+ resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+
+ shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+
+ slash@3.0.0:
+ resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
+ engines: {node: '>=8'}
+
+ spdx-correct@3.2.0:
+ resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
+
+ spdx-exceptions@2.5.0:
+ resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==}
+
+ spdx-expression-parse@3.0.1:
+ resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
+
+ spdx-license-ids@3.0.21:
+ resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==}
+
+ string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+
+ strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+
+ strip-indent@3.0.0:
+ resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
+ engines: {node: '>=8'}
+
+ strip-json-comments@3.1.1:
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
+
+ supports-color@7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+
+ supports-hyperlinks@2.3.0:
+ resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==}
+ engines: {node: '>=8'}
+
+ supports-preserve-symlinks-flag@1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+
+ text-table@0.2.0:
+ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
+
+ to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+
+ trim-newlines@3.0.1:
+ resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==}
+ engines: {node: '>=8'}
+
+ ts-api-utils@1.4.3:
+ resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ typescript: '>=4.2.0'
+
+ tsd@0.32.0:
+ resolution: {integrity: sha512-R5lBZCbxGBowOcW0gpQaiIjGYrG5NmU+PfFDKcc3zbtzWjML1o/zAwzdDnS2ZheSlPu9GW51azpFqEPUBq9DoQ==}
+ engines: {node: '>=14.16'}
+ hasBin: true
+
+ type-check@0.4.0:
+ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
+ engines: {node: '>= 0.8.0'}
+
+ type-fest@0.18.1:
+ resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==}
+ engines: {node: '>=10'}
+
+ type-fest@0.20.2:
+ resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
+ engines: {node: '>=10'}
+
+ type-fest@0.21.3:
+ resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
+ engines: {node: '>=10'}
+
+ type-fest@0.6.0:
+ resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
+ engines: {node: '>=8'}
+
+ type-fest@0.8.1:
+ resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
+ engines: {node: '>=8'}
+
+ typescript@5.3.3:
+ resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ uri-js@4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+
+ validate-npm-package-license@3.0.4:
+ resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
+
+ which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+
+ word-wrap@1.2.5:
+ resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
+ engines: {node: '>=0.10.0'}
+
+ wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+
+ yallist@4.0.0:
+ resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+
+ yargs-parser@20.2.9:
+ resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
+ engines: {node: '>=10'}
+
+ yocto-queue@0.1.0:
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
+
+snapshots:
+
+ '@babel/code-frame@7.26.2':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.25.9
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
+ '@babel/helper-validator-identifier@7.25.9': {}
+
+ '@eslint-community/eslint-utils@4.6.1(eslint@8.57.1)':
+ dependencies:
+ eslint: 8.57.1
+ eslint-visitor-keys: 3.4.3
+
+ '@eslint-community/regexpp@4.12.1': {}
+
+ '@eslint/eslintrc@2.1.4':
+ dependencies:
+ ajv: 6.12.6
+ debug: 4.4.0
+ espree: 9.6.1
+ globals: 13.24.0
+ ignore: 5.3.2
+ import-fresh: 3.3.1
+ js-yaml: 4.1.0
+ minimatch: 3.1.2
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@eslint/js@8.57.1': {}
+
+ '@humanwhocodes/config-array@0.13.0':
+ dependencies:
+ '@humanwhocodes/object-schema': 2.0.3
+ debug: 4.4.0
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@humanwhocodes/module-importer@1.0.1': {}
+
+ '@humanwhocodes/object-schema@2.0.3': {}
+
+ '@jest/schemas@29.6.3':
+ dependencies:
+ '@sinclair/typebox': 0.27.8
+
+ '@nodelib/fs.scandir@2.1.5':
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ '@nodelib/fs.stat@2.0.5': {}
+
+ '@nodelib/fs.walk@1.2.8':
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.19.1
+
+ '@sinclair/typebox@0.27.8': {}
+
+ '@tsd/typescript@5.8.3': {}
+
+ '@types/eslint@7.29.0':
+ dependencies:
+ '@types/estree': 1.0.7
+ '@types/json-schema': 7.0.15
+
+ '@types/estree@1.0.7': {}
+
+ '@types/json-schema@7.0.15': {}
+
+ '@types/minimist@1.2.5': {}
+
+ '@types/normalize-package-data@2.4.4': {}
+
+ '@types/semver@7.7.0': {}
+
+ '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.3.3))(eslint@8.57.1)(typescript@5.3.3)':
+ dependencies:
+ '@eslint-community/regexpp': 4.12.1
+ '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.3.3)
+ '@typescript-eslint/scope-manager': 6.21.0
+ '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.3.3)
+ '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.3.3)
+ '@typescript-eslint/visitor-keys': 6.21.0
+ debug: 4.4.0
+ eslint: 8.57.1
+ graphemer: 1.4.0
+ ignore: 5.3.2
+ natural-compare: 1.4.0
+ semver: 7.7.1
+ ts-api-utils: 1.4.3(typescript@5.3.3)
+ optionalDependencies:
+ typescript: 5.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.3.3)':
+ dependencies:
+ '@typescript-eslint/scope-manager': 6.21.0
+ '@typescript-eslint/types': 6.21.0
+ '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3)
+ '@typescript-eslint/visitor-keys': 6.21.0
+ debug: 4.4.0
+ eslint: 8.57.1
+ optionalDependencies:
+ typescript: 5.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/scope-manager@6.21.0':
+ dependencies:
+ '@typescript-eslint/types': 6.21.0
+ '@typescript-eslint/visitor-keys': 6.21.0
+
+ '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.3.3)':
+ dependencies:
+ '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3)
+ '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.3.3)
+ debug: 4.4.0
+ eslint: 8.57.1
+ ts-api-utils: 1.4.3(typescript@5.3.3)
+ optionalDependencies:
+ typescript: 5.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/types@6.21.0': {}
+
+ '@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3)':
+ dependencies:
+ '@typescript-eslint/types': 6.21.0
+ '@typescript-eslint/visitor-keys': 6.21.0
+ debug: 4.4.0
+ globby: 11.1.0
+ is-glob: 4.0.3
+ minimatch: 9.0.3
+ semver: 7.7.1
+ ts-api-utils: 1.4.3(typescript@5.3.3)
+ optionalDependencies:
+ typescript: 5.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.3.3)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.6.1(eslint@8.57.1)
+ '@types/json-schema': 7.0.15
+ '@types/semver': 7.7.0
+ '@typescript-eslint/scope-manager': 6.21.0
+ '@typescript-eslint/types': 6.21.0
+ '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3)
+ eslint: 8.57.1
+ semver: 7.7.1
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ '@typescript-eslint/visitor-keys@6.21.0':
+ dependencies:
+ '@typescript-eslint/types': 6.21.0
+ eslint-visitor-keys: 3.4.3
+
+ '@ungap/structured-clone@1.3.0': {}
+
+ acorn-jsx@5.3.2(acorn@8.14.1):
+ dependencies:
+ acorn: 8.14.1
+
+ acorn@8.14.1: {}
+
+ ajv@6.12.6:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-json-stable-stringify: 2.1.0
+ json-schema-traverse: 0.4.1
+ uri-js: 4.4.1
+
+ ansi-escapes@4.3.2:
+ dependencies:
+ type-fest: 0.21.3
+
+ ansi-regex@5.0.1: {}
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ ansi-styles@5.2.0: {}
+
+ argparse@2.0.1: {}
+
+ array-union@2.1.0: {}
+
+ arrify@1.0.1: {}
+
+ balanced-match@1.0.2: {}
+
+ balanced-match@3.0.1: {}
+
+ brace-expansion@2.0.1:
+ dependencies:
+ balanced-match: 1.0.2
+
+ brace-expansion@4.0.1:
+ dependencies:
+ balanced-match: 3.0.1
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
+ callsites@3.1.0: {}
+
+ camelcase-keys@6.2.2:
+ dependencies:
+ camelcase: 5.3.1
+ map-obj: 4.3.0
+ quick-lru: 4.0.1
+
+ camelcase@5.3.1: {}
+
+ chalk@4.1.2:
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-name@1.1.4: {}
+
+ cross-spawn@7.0.6:
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ debug@4.4.0:
+ dependencies:
+ ms: 2.1.3
+
+ decamelize-keys@1.1.1:
+ dependencies:
+ decamelize: 1.2.0
+ map-obj: 1.0.1
+
+ decamelize@1.2.0: {}
+
+ deep-is@0.1.4: {}
+
+ diff-sequences@29.6.3: {}
+
+ dir-glob@3.0.1:
+ dependencies:
+ path-type: 4.0.0
+
+ doctrine@3.0.0:
+ dependencies:
+ esutils: 2.0.3
+
+ emoji-regex@8.0.0: {}
+
+ error-ex@1.3.2:
+ dependencies:
+ is-arrayish: 0.2.1
+
+ escape-string-regexp@4.0.0: {}
+
+ eslint-formatter-pretty@4.1.0:
+ dependencies:
+ '@types/eslint': 7.29.0
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ eslint-rule-docs: 1.1.235
+ log-symbols: 4.1.0
+ plur: 4.0.0
+ string-width: 4.2.3
+ supports-hyperlinks: 2.3.0
+
+ eslint-rule-docs@1.1.235: {}
+
+ eslint-scope@7.2.2:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 5.3.0
+
+ eslint-visitor-keys@3.4.3: {}
+
+ eslint@8.57.1:
+ dependencies:
+ '@eslint-community/eslint-utils': 4.6.1(eslint@8.57.1)
+ '@eslint-community/regexpp': 4.12.1
+ '@eslint/eslintrc': 2.1.4
+ '@eslint/js': 8.57.1
+ '@humanwhocodes/config-array': 0.13.0
+ '@humanwhocodes/module-importer': 1.0.1
+ '@nodelib/fs.walk': 1.2.8
+ '@ungap/structured-clone': 1.3.0
+ ajv: 6.12.6
+ chalk: 4.1.2
+ cross-spawn: 7.0.6
+ debug: 4.4.0
+ doctrine: 3.0.0
+ escape-string-regexp: 4.0.0
+ eslint-scope: 7.2.2
+ eslint-visitor-keys: 3.4.3
+ espree: 9.6.1
+ esquery: 1.6.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 6.0.1
+ find-up: 5.0.0
+ glob-parent: 6.0.2
+ globals: 13.24.0
+ graphemer: 1.4.0
+ ignore: 5.3.2
+ imurmurhash: 0.1.4
+ is-glob: 4.0.3
+ is-path-inside: 3.0.3
+ js-yaml: 4.1.0
+ json-stable-stringify-without-jsonify: 1.0.1
+ levn: 0.4.1
+ lodash.merge: 4.6.2
+ minimatch: 3.1.2
+ natural-compare: 1.4.0
+ optionator: 0.9.4
+ strip-ansi: 6.0.1
+ text-table: 0.2.0
+ transitivePeerDependencies:
+ - supports-color
+
+ espree@9.6.1:
+ dependencies:
+ acorn: 8.14.1
+ acorn-jsx: 5.3.2(acorn@8.14.1)
+ eslint-visitor-keys: 3.4.3
+
+ esquery@1.6.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ esrecurse@4.3.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ estraverse@5.3.0: {}
+
+ esutils@2.0.3: {}
+
+ fast-deep-equal@3.1.3: {}
+
+ fast-glob@3.3.3:
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.8
+
+ fast-json-stable-stringify@2.1.0: {}
+
+ fast-levenshtein@2.0.6: {}
+
+ fastq@1.19.1:
+ dependencies:
+ reusify: 1.1.0
+
+ file-entry-cache@6.0.1:
+ dependencies:
+ flat-cache: 3.2.0
+
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ find-up@4.1.0:
+ dependencies:
+ locate-path: 5.0.0
+ path-exists: 4.0.0
+
+ find-up@5.0.0:
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+
+ flat-cache@3.2.0:
+ dependencies:
+ flatted: 3.3.3
+ keyv: 4.5.4
+ rimraf: 3.0.2
+
+ flatted@3.3.3: {}
+
+ fs.realpath@1.0.0: {}
+
+ function-bind@1.1.2: {}
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob-parent@6.0.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob@7.2.3:
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+
+ globals@13.24.0:
+ dependencies:
+ type-fest: 0.20.2
+
+ globby@11.1.0:
+ dependencies:
+ array-union: 2.1.0
+ dir-glob: 3.0.1
+ fast-glob: 3.3.3
+ ignore: 5.3.2
+ merge2: 1.4.1
+ slash: 3.0.0
+
+ graphemer@1.4.0: {}
+
+ hard-rejection@2.1.0: {}
+
+ has-flag@4.0.0: {}
+
+ hasown@2.0.2:
+ dependencies:
+ function-bind: 1.1.2
+
+ hosted-git-info@2.8.9: {}
+
+ hosted-git-info@4.1.0:
+ dependencies:
+ lru-cache: 6.0.0
+
+ ignore@5.3.2: {}
+
+ import-fresh@3.3.1:
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+
+ imurmurhash@0.1.4: {}
+
+ indent-string@4.0.0: {}
+
+ inflight@1.0.6:
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+
+ inherits@2.0.4: {}
+
+ irregular-plurals@3.5.0: {}
+
+ is-arrayish@0.2.1: {}
+
+ is-core-module@2.16.1:
+ dependencies:
+ hasown: 2.0.2
+
+ is-extglob@2.1.1: {}
+
+ is-fullwidth-code-point@3.0.0: {}
+
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
+
+ is-number@7.0.0: {}
+
+ is-path-inside@3.0.3: {}
+
+ is-plain-obj@1.1.0: {}
+
+ is-unicode-supported@0.1.0: {}
+
+ isexe@2.0.0: {}
+
+ jest-diff@29.7.0:
+ dependencies:
+ chalk: 4.1.2
+ diff-sequences: 29.6.3
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+
+ jest-get-type@29.6.3: {}
+
+ js-tokens@4.0.0: {}
+
+ js-yaml@4.1.0:
+ dependencies:
+ argparse: 2.0.1
+
+ json-buffer@3.0.1: {}
+
+ json-parse-even-better-errors@2.3.1: {}
+
+ json-schema-traverse@0.4.1: {}
+
+ json-stable-stringify-without-jsonify@1.0.1: {}
+
+ keyv@4.5.4:
+ dependencies:
+ json-buffer: 3.0.1
+
+ kind-of@6.0.3: {}
+
+ levn@0.4.1:
+ dependencies:
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+
+ lines-and-columns@1.2.4: {}
+
+ locate-path@5.0.0:
+ dependencies:
+ p-locate: 4.1.0
+
+ locate-path@6.0.0:
+ dependencies:
+ p-locate: 5.0.0
+
+ lodash.merge@4.6.2: {}
+
+ log-symbols@4.1.0:
+ dependencies:
+ chalk: 4.1.2
+ is-unicode-supported: 0.1.0
+
+ lru-cache@6.0.0:
+ dependencies:
+ yallist: 4.0.0
+
+ map-obj@1.0.1: {}
+
+ map-obj@4.3.0: {}
+
+ meow@9.0.0:
+ dependencies:
+ '@types/minimist': 1.2.5
+ camelcase-keys: 6.2.2
+ decamelize: 1.2.0
+ decamelize-keys: 1.1.1
+ hard-rejection: 2.1.0
+ minimist-options: 4.1.0
+ normalize-package-data: 3.0.3
+ read-pkg-up: 7.0.1
+ redent: 3.0.0
+ trim-newlines: 3.0.1
+ type-fest: 0.18.1
+ yargs-parser: 20.2.9
+
+ merge2@1.4.1: {}
+
+ micromatch@4.0.8:
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.1
+
+ min-indent@1.0.1: {}
+
+ minimatch@3.1.2:
+ dependencies:
+ brace-expansion: 2.0.1
+
+ minimatch@9.0.3:
+ dependencies:
+ brace-expansion: 4.0.1
+
+ minimist-options@4.1.0:
+ dependencies:
+ arrify: 1.0.1
+ is-plain-obj: 1.1.0
+ kind-of: 6.0.3
+
+ ms@2.1.3: {}
+
+ natural-compare@1.4.0: {}
+
+ normalize-package-data@2.5.0:
+ dependencies:
+ hosted-git-info: 2.8.9
+ resolve: 1.22.10
+ semver: 5.7.2
+ validate-npm-package-license: 3.0.4
+
+ normalize-package-data@3.0.3:
+ dependencies:
+ hosted-git-info: 4.1.0
+ is-core-module: 2.16.1
+ semver: 7.7.1
+ validate-npm-package-license: 3.0.4
+
+ once@1.4.0:
+ dependencies:
+ wrappy: 1.0.2
+
+ optionator@0.9.4:
+ dependencies:
+ deep-is: 0.1.4
+ fast-levenshtein: 2.0.6
+ levn: 0.4.1
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ word-wrap: 1.2.5
+
+ p-limit@2.3.0:
+ dependencies:
+ p-try: 2.2.0
+
+ p-limit@3.1.0:
+ dependencies:
+ yocto-queue: 0.1.0
+
+ p-locate@4.1.0:
+ dependencies:
+ p-limit: 2.3.0
+
+ p-locate@5.0.0:
+ dependencies:
+ p-limit: 3.1.0
+
+ p-try@2.2.0: {}
+
+ parent-module@1.0.1:
+ dependencies:
+ callsites: 3.1.0
+
+ parse-json@5.2.0:
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ error-ex: 1.3.2
+ json-parse-even-better-errors: 2.3.1
+ lines-and-columns: 1.2.4
+
+ path-exists@4.0.0: {}
+
+ path-is-absolute@1.0.1: {}
+
+ path-key@3.1.1: {}
+
+ path-parse@1.0.7: {}
+
+ path-type@4.0.0: {}
+
+ picocolors@1.1.1: {}
+
+ picomatch@2.3.1: {}
+
+ plur@4.0.0:
+ dependencies:
+ irregular-plurals: 3.5.0
+
+ prelude-ls@1.2.1: {}
+
+ pretty-format@29.7.0:
+ dependencies:
+ '@jest/schemas': 29.6.3
+ ansi-styles: 5.2.0
+ react-is: 18.3.1
+
+ punycode@2.3.1: {}
+
+ queue-microtask@1.2.3: {}
+
+ quick-lru@4.0.1: {}
+
+ react-is@18.3.1: {}
+
+ read-pkg-up@7.0.1:
+ dependencies:
+ find-up: 4.1.0
+ read-pkg: 5.2.0
+ type-fest: 0.8.1
+
+ read-pkg@5.2.0:
+ dependencies:
+ '@types/normalize-package-data': 2.4.4
+ normalize-package-data: 2.5.0
+ parse-json: 5.2.0
+ type-fest: 0.6.0
+
+ redent@3.0.0:
+ dependencies:
+ indent-string: 4.0.0
+ strip-indent: 3.0.0
+
+ resolve-from@4.0.0: {}
+
+ resolve@1.22.10:
+ dependencies:
+ is-core-module: 2.16.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ reusify@1.1.0: {}
+
+ rimraf@3.0.2:
+ dependencies:
+ glob: 7.2.3
+
+ run-parallel@1.2.0:
+ dependencies:
+ queue-microtask: 1.2.3
+
+ semver@5.7.2: {}
+
+ semver@7.7.1: {}
+
+ shebang-command@2.0.0:
+ dependencies:
+ shebang-regex: 3.0.0
+
+ shebang-regex@3.0.0: {}
+
+ slash@3.0.0: {}
+
+ spdx-correct@3.2.0:
+ dependencies:
+ spdx-expression-parse: 3.0.1
+ spdx-license-ids: 3.0.21
+
+ spdx-exceptions@2.5.0: {}
+
+ spdx-expression-parse@3.0.1:
+ dependencies:
+ spdx-exceptions: 2.5.0
+ spdx-license-ids: 3.0.21
+
+ spdx-license-ids@3.0.21: {}
+
+ string-width@4.2.3:
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+
+ strip-ansi@6.0.1:
+ dependencies:
+ ansi-regex: 5.0.1
+
+ strip-indent@3.0.0:
+ dependencies:
+ min-indent: 1.0.1
+
+ strip-json-comments@3.1.1: {}
+
+ supports-color@7.2.0:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-hyperlinks@2.3.0:
+ dependencies:
+ has-flag: 4.0.0
+ supports-color: 7.2.0
+
+ supports-preserve-symlinks-flag@1.0.0: {}
+
+ text-table@0.2.0: {}
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ trim-newlines@3.0.1: {}
+
+ ts-api-utils@1.4.3(typescript@5.3.3):
+ dependencies:
+ typescript: 5.3.3
+
+ tsd@0.32.0:
+ dependencies:
+ '@tsd/typescript': 5.8.3
+ eslint-formatter-pretty: 4.1.0
+ globby: 11.1.0
+ jest-diff: 29.7.0
+ meow: 9.0.0
+ path-exists: 4.0.0
+ read-pkg-up: 7.0.1
+
+ type-check@0.4.0:
+ dependencies:
+ prelude-ls: 1.2.1
+
+ type-fest@0.18.1: {}
+
+ type-fest@0.20.2: {}
+
+ type-fest@0.21.3: {}
+
+ type-fest@0.6.0: {}
+
+ type-fest@0.8.1: {}
+
+ typescript@5.3.3: {}
+
+ uri-js@4.4.1:
+ dependencies:
+ punycode: 2.3.1
+
+ validate-npm-package-license@3.0.4:
+ dependencies:
+ spdx-correct: 3.2.0
+ spdx-expression-parse: 3.0.1
+
+ which@2.0.2:
+ dependencies:
+ isexe: 2.0.0
+
+ word-wrap@1.2.5: {}
+
+ wrappy@1.0.2: {}
+
+ yallist@4.0.0: {}
+
+ yargs-parser@20.2.9: {}
+
+ yocto-queue@0.1.0: {}
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
new file mode 100644
index 0000000..b435195
--- /dev/null
+++ b/pnpm-workspace.yaml
@@ -0,0 +1,3 @@
+overrides:
+ brace-expansion@>=1.0.0 <=1.1.11: '>=1.1.12'
+ brace-expansion@>=2.0.0 <=2.0.1: '>=2.0.2'
diff --git a/test/.eslintrc.js b/test/.eslintrc.js
new file mode 100644
index 0000000..ed1bd7e
--- /dev/null
+++ b/test/.eslintrc.js
@@ -0,0 +1,5 @@
+module.exports = {
+ rules: {
+ indent: ['error', 2],
+ },
+}
\ No newline at end of file
diff --git a/test/api_doc.test.ts b/test/api-doc.test.ts
similarity index 61%
rename from test/api_doc.test.ts
rename to test/api-doc.test.ts
index 604313b..bea1c05 100644
--- a/test/api_doc.test.ts
+++ b/test/api-doc.test.ts
@@ -1,5 +1,4 @@
import { expectType } from 'tsd'
-
// Test case from `Animation`
{
Page({
@@ -455,8 +454,12 @@ import { expectType } from 'tsd'
{
const worker = wx.createWorker('workers/request/index.js') // 文件名指定 worker 的入口文件路径,绝对路径
- worker.onMessage(function(res) {
- expectType>(res.message)
+ worker.onMessage(function (res) {
+ expectType(res)
+ })
+ // 监听worker被系统回收事件
+ worker.onProcessKilled(function () {
+ console.log('worker has been killed')
})
worker.postMessage({
@@ -508,6 +511,17 @@ import { expectType } from 'tsd'
})
}
+// Test case from `wx.authorizeForMiniProgram`
+{
+ wx.authorizeForMiniProgram({
+ scope: 'scope.record',
+ success() {
+ // 用户已经同意小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问
+ wx.startRecord()
+ },
+ })
+}
+
// Test case from `wx.canIUse`
{
// 对象的属性或方法
@@ -822,7 +836,7 @@ import { expectType } from 'tsd'
// Test case from `wx.getConnectedBluetoothDevices`
{
wx.getConnectedBluetoothDevices({
- services: [''],
+ services: ['FEE7'],
success(res) {
res.devices.forEach(device => {
expectType(device.deviceId)
@@ -832,17 +846,6 @@ import { expectType } from 'tsd'
})
}
-// Test case from `wx.getFileInfo`
-{
- wx.getFileInfo({
- filePath: '',
- success(res) {
- expectType(res.size)
- expectType(res.digest)
- },
- })
-}
-
// Test case from `wx.getHCEState`
{
wx.getHCEState({
@@ -895,47 +898,55 @@ import { expectType } from 'tsd'
// Test case from `wx.getRealtimeLogManager`
{
- const logger = wx.getRealtimeLogManager()
- logger.info({ str: 'hello world' }, 'info log', 100, [1, 2, 3])
- logger.error({ str: 'hello world' }, 'error log', 100, [1, 2, 3])
- logger.warn({ str: 'hello world' }, 'warn log', 100, [1, 2, 3])
-}
+ // 小程序端
+ {
+ const logger = wx.getRealtimeLogManager()
+ logger.info({ str: 'hello world' }, 'info log', 100, [1, 2, 3])
+ logger.error({ str: 'hello world' }, 'error log', 100, [1, 2, 3])
+ logger.warn({ str: 'hello world' }, 'warn log', 100, [1, 2, 3])
+ }
-// Test case from `wx.getSavedFileInfo`
-{
- wx.getSavedFileList({
- success(res) {
- res.fileList
- },
- })
+ // 插件端,基础库 2.16.0 版本后支持,只允许采用 key-value 的新格式上报
+ {
+ const logManager = wx.getRealtimeLogManager()
+ const logger = logManager.tag('plugin-log1')
+ logger.info('key1', 'value1')
+ logger.error('key2', { str: 'value2' })
+ logger.warn('key3', 'value3')
+ }
}
-// Test case from `wx.getSavedFileList`
+// Test case from `wx.getSelectedTextRange`
{
- wx.getSavedFileList({
+ wx.getSelectedTextRange({
success(res) {
- res.fileList
+ expectType(res.start)
+ expectType(res.end)
},
})
}
-// Test case from `wx.getSelectedTextRange`
+// Test case from `wx.getSetting`
{
- wx.getSelectedTextRange({
+ wx.getSetting({
success(res) {
- expectType(res.start)
- expectType(res.end)
+ expectType(res.authSetting['scope.address'])
+ expectType(res.subscriptionsSetting.mainSwitch)
+ expectType | undefined>(res.subscriptionsSetting.itemSettings)
},
})
}
-// Test case from `wx.getSetting`
+// Test case from `SubscriptionsSetting`
{
wx.getSetting({
+ withSubscriptions: true,
success(res) {
- res.authSetting = {
- 'scope.userInfo': true,
- 'scope.userLocation': true,
+ expectType(res.authSetting['scope.userInfo'])
+ expectType(res.authSetting['scope.userLocation'])
+ expectType(res.subscriptionsSetting.mainSwitch)
+ if (res.subscriptionsSetting.itemSettings !== undefined) {
+ expectType(res.subscriptionsSetting.itemSettings.SYS_MSG_TYPE_INTERACTIVE)
}
},
})
@@ -983,6 +994,8 @@ import { expectType } from 'tsd'
})
}
+type TPlatform = 'ios' | 'android' | 'windows' | 'mac' | 'devtools' | 'ohos'
+
// Test case from `wx.getSystemInfoSync`
{
wx.getSystemInfo({
@@ -993,7 +1006,7 @@ import { expectType } from 'tsd'
expectType(res.windowHeight)
expectType(res.language)
expectType(res.version)
- expectType(res.platform)
+ expectType(res.platform)
},
})
}
@@ -1008,11 +1021,26 @@ import { expectType } from 'tsd'
expectType(res.windowHeight)
expectType(res.language)
expectType(res.version)
- expectType(res.platform)
+ expectType(res.platform)
},
})
}
+// Test case from `wx.getSystemInfoAsync`
+{
+ wx.getSystemInfoAsync({
+ success (res) {
+ expectType(res.model)
+ expectType(res.pixelRatio)
+ expectType(res.windowWidth)
+ expectType(res.windowHeight)
+ expectType(res.language)
+ expectType(res.version)
+ expectType(res.platform)
+ }
+ })
+}
+
// Test case from `wx.getUserInfo`
{
// 必须是在用户已经授权的情况下调用
@@ -1055,6 +1083,13 @@ import { expectType } from 'tsd'
wx.hideShareMenu()
}
+// Test case from `wx.hideShareMenu`
+{
+ wx.hideShareMenu({
+ menus: ['shareAppMessage', 'shareTimeline'],
+ })
+}
+
// Test case from `wx.loadFontFace`
{
wx.loadFontFace({
@@ -1071,7 +1106,7 @@ import { expectType } from 'tsd'
if (res.code) {
// 发起网络请求
wx.request({
- url: 'https://test.com/onLogin',
+ url: 'https://example.com/onLogin',
data: {
code: res.code,
},
@@ -1388,22 +1423,6 @@ import { expectType } from 'tsd'
})
}
-// Test case from `wx.removeSavedFile`
-{
- wx.getSavedFileList({
- success(res) {
- if (res.fileList.length > 0) {
- wx.removeSavedFile({
- filePath: res.fileList[0].filePath,
- complete(res) {
- console.log(res)
- },
- })
- }
- },
- })
-}
-
// Test case from `wx.removeStorageSync`
{
wx.removeStorage({
@@ -1451,17 +1470,20 @@ import { expectType } from 'tsd'
}
// Test case from `wx.requestSubscribeMessage`
-// {
-// wx.requestSubscribeMessage({
-// tmplIds: [''],
-// success(res) {}
-// })
-// }
+{
+ wx.requestSubscribeMessage({
+ tmplIds: [''],
+ success(res) {
+ expectType(res.errMsg)
+ expectType(res.anyTemplateId)
+ }
+ })
+}
// Test case from `wx.request`
{
wx.request({
- url: 'test.php', // 仅为示例,并非真实的接口地址
+ url: 'example.php', //仅为示例,并非真实的接口地址
data: {
x: '',
y: '',
@@ -1475,21 +1497,6 @@ import { expectType } from 'tsd'
})
}
-// Test case from `wx.saveFile`
-{
- wx.chooseImage({
- success(res) {
- const tempFilePaths = res.tempFilePaths
- wx.saveFile({
- tempFilePath: tempFilePaths[0],
- success(res) {
- res.savedFilePath
- },
- })
- },
- })
-}
-
// Test case from `wx.saveImageToPhotosAlbum`
{
wx.saveImageToPhotosAlbum({
@@ -1744,6 +1751,14 @@ import { expectType } from 'tsd'
})
}
+// Test case from `wx.showShareMenu`
+{
+ wx.showShareMenu({
+ withShareTicket: true,
+ menus: ['shareAppMessage', 'shareTimeline'],
+ })
+}
+
// Test case from `wx.showToast`
{
wx.showToast({
@@ -1926,6 +1941,24 @@ import { expectType } from 'tsd'
})
}
+// Test case from `wx.updateShareMenu`
+{
+ // 转发私密消息
+ wx.updateShareMenu({
+ isPrivateMessage: true,
+ activityId: 'xxx',
+ templateInfo: {
+ templateId: '',
+ parameterList: [{
+ name: '',
+ value: '',
+ }]
+ },
+ success() {},
+ fail() {},
+ })
+}
+
// Test case from `wx.uploadFile`
{
wx.chooseImage({
@@ -1978,6 +2011,28 @@ import { expectType } from 'tsd'
})
}
+// Test case from `wx.createWorker`
+{
+ // 创建普通worker
+ wx.createWorker('workers/index.js')
+}
+
+// Test case from `wx.createWorker`
+{
+ // 创建实验worker
+ const worker = wx.createWorker('workers/index.js', {
+ useExperimentalWorker: true,
+ })
+
+ // 监听worker被系统回收事件
+ worker.onProcessKilled(() => {
+ // 重新创建一个worker
+ wx.createWorker('workers/index.js', {
+ useExperimentalWorker: true,
+ })
+ })
+}
+
// Test case from `wx.clearStorageSync`
{
try {
@@ -2054,7 +2109,7 @@ import { expectType } from 'tsd'
expectType(res.windowHeight)
expectType(res.language)
expectType(res.version)
- expectType(res.platform)
+ expectType(res.platform)
} catch (e) {
// Do something when catch error
}
@@ -2070,7 +2125,7 @@ import { expectType } from 'tsd'
expectType(res.windowHeight)
expectType(res.language)
expectType(res.version)
- expectType(res.platform)
+ expectType(res.platform)
} catch (e) {
// Do something when catch error
}
@@ -3002,6 +3057,25 @@ import { expectType } from 'tsd'
})
}
+// Test case from `MapContext.on`
+{
+ Page({
+ mapCtx: {} as WechatMiniprogram.MapContext,
+ onReady() {
+ // 使用 wx.createMapContext 获取 map 上下文
+ this.mapCtx = wx.createMapContext('myMap')
+ },
+ method() {
+ this.mapCtx.on('markerClusterCreate', (res) => {
+ expectType(res)
+ })
+ this.mapCtx.on('markerClusterClick', (res) => {
+ expectType(res)
+ })
+ }
+ })
+}
+
// Test case from `wx.setEnableDebug`
{
// 打开调试
@@ -3022,12 +3096,14 @@ import { expectType } from 'tsd'
onLoad(option) {
console.log(option.query)
const eventChannel = this.getOpenerEventChannel()
- eventChannel.emit('acceptDataFromOpenedPage', { data: 'test' })
- eventChannel.emit('someEvent', { data: 'test' })
- // 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
- eventChannel.on('acceptDataFromOpenerPage', function(data: any) {
- console.log(data)
- })
+ if (typeof eventChannel.emit === 'function') {
+ eventChannel.emit('acceptDataFromOpenedPage', { data: 'test' })
+ eventChannel.emit('someEvent', { data: 'test' })
+ // 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
+ eventChannel.on('acceptDataFromOpenerPage', function(data: any) {
+ console.log(data)
+ })
+ }
},
})
}
@@ -3042,15 +3118,1511 @@ import { expectType } from 'tsd'
})
}
-// Test case from `wx.getSetting`
+// Test case from `wx.chooseMedia`
{
- wx.getSetting({
- withSubscriptions: true,
+ wx.chooseMedia({
+ count: 9,
+ mediaType: ['image', 'video'],
+ sourceType: ['album', 'camera'],
+ maxDuration: 30,
+ camera: 'back',
success(res) {
- expectType(res.authSetting)
- expectType(res.authSetting['scope.userInfo'])
- expectType(res.authSetting['scope.subscribeMessage'])
- expectType>(res.subscriptionsSetting)
+ expectType(res.tempFiles[0].tempFilePath)
+ expectType(res.tempFiles[0].thumbTempFilePath)
+ expectType(res.tempFiles[0].width)
+ expectType(res.tempFiles[0].height)
+ expectType(res.tempFiles[0].size)
+ expectType(res.tempFiles[0].duration)
+ },
+ })
+}
+
+// Test case from `wx.reportPerformance`
+{
+ wx.reportPerformance(1101, 680)
+ wx.reportPerformance(1101, 680, 'custom')
+}
+
+// Test case from `wx.getRandomValues`
+{
+ wx.getRandomValues({
+ length: 6, // 生成 6 个字节长度的随机数
+ success: res => {
+ expectType(res.randomValues) // 转换为 base64 字符串后打印
+ }
+ })
+}
+
+// Test case from `wx.getGroupEnterInfo`
+{
+ wx.getGroupEnterInfo({
+ success(res) {
+ expectType(res.errMsg)
+ expectType(res.encryptedData)
+ expectType(res.iv)
+ }
+ })
+}
+
+// Test case from `wx.getPerformance`
+{
+ const performance = wx.getPerformance()
+ const observer = performance.createObserver(entryList => {
+ console.log(entryList.getEntries())
+ })
+ // FIXME
+ // @ts-ignore
+ observer.observe({ entryTypes: ['render', 'script', 'navigation'] })
+}
+
+// Test case from `wx.authPrivateMessage`
+{
+ wx.authPrivateMessage({
+ shareTicket: 'xxxxxx',
+ success(res) {
+ expectType(res.valid)
+ expectType(res.iv)
+ expectType(res.encryptedData)
+ },
+ fail(res) {
+ expectType(res.errMsg)
+ },
+ })
+}
+
+// Test case from `wx.createMediaAudioPlayer`
+{
+ // 创建视频解码器,具体参数见 createVideoDecoder 文档
+ const videoDecoder = wx.createVideoDecoder()
+ // 创建媒体音频播放器
+ const mediaAudioPlayer = wx.createMediaAudioPlayer()
+ // 启动视频解码器
+ videoDecoder.start({
+ source: ''
+ })
+ // 启动播放器
+ mediaAudioPlayer.start().then(() => {
+ // 添加播放器音频来源
+ mediaAudioPlayer.addAudioSource(videoDecoder).then(res => {
+ videoDecoder.getFrameData() // 建议在 requestAnimationFrame 里获取每一帧视频数据
+ console.log(res)
+ })
+
+ // 移除播放器音频来源
+ mediaAudioPlayer.removeAudioSource(videoDecoder).then()
+ // 停止播放器
+ mediaAudioPlayer.stop().then()
+ // 销毁播放器
+ mediaAudioPlayer.destroy().then()
+ // 设置播放器音量
+ mediaAudioPlayer.volume = 0.5
+ })
+}
+
+// Test case from `ScrollViewContext`
+{
+ wx.createSelectorQuery()
+ .select('#scrollview')
+ .node()
+ .exec(res => {
+ const scrollView = res[0].node
+ scrollView.scrollEnabled = false
+ })
+}
+
+// Test case from `wx.getUserProfile`
+{
+ Page({
+ data: {
+ userInfo: {},
+ hasUserInfo: false,
+ canIUseGetUserProfile: false,
+ },
+ onLoad() {
+ if (wx.getUserProfile !== undefined) {
+ this.setData({
+ canIUseGetUserProfile: true,
+ })
+ }
+ },
+ getUserProfile() {
+ // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认
+ // 开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
+ wx.getUserProfile({
+ desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
+ success: res => {
+ this.setData({
+ userInfo: res.userInfo,
+ hasUserInfo: true,
+ })
+ },
+ })
+ },
+ getUserInfo(e: WechatMiniprogram.CustomEvent<{ userInfo: WechatMiniprogram.UserInfo }>) {
+ // 不推荐使用getUserInfo获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息
+ this.setData({
+ userInfo: e.detail.userInfo,
+ hasUserInfo: true,
+ })
+ },
+ })
+}
+
+// Test case from `FileSystemManager.close`
+{
+ const fs = wx.getFileSystemManager()
+ // 打开文件
+ fs.open({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ flag: 'a+',
+ success(res) {
+ // 关闭文件
+ fs.close({
+ fd: res.fd,
+ })
+ },
+ })
+}
+
+// Test case from `FileSystemManager.closeSync`
+{
+ const fs = wx.getFileSystemManager()
+ const fd = fs.openSync({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ flag: 'a+',
+ })
+
+ // 关闭文件
+ fs.closeSync({ fd: fd })
+}
+
+// Test case from `FileSystemManager.fstat`
+{
+ const fs = wx.getFileSystemManager()
+ // 打开文件
+ fs.open({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ flag: 'a+',
+ success(res) {
+ // 获取文件的状态信息
+ fs.fstat({
+ fd: res.fd,
+ success(res) {
+ expectType(res.stats)
+ },
+ })
+ },
+ })
+}
+
+// Test case from `FileSystemManager.fstatSync`
+{
+ const fs = wx.getFileSystemManager()
+ const fd = fs.openSync({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ flag: 'a+',
+ })
+ const stats = fs.fstatSync({ fd: fd })
+ expectType(stats)
+}
+
+// Test case from `FileSystemManager.ftruncate`
+{
+ const fs = wx.getFileSystemManager()
+ // 打开文件
+ fs.open({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ flag: 'a+',
+ success(res) {
+ // 对文件内容进行截断操作
+ fs.ftruncate({
+ fd: res.fd,
+ length: 10, // 从第10个字节开始截断文件
+ success(res) {
+ console.log(res)
+ },
+ })
+ },
+ })
+}
+
+// Test case from `FileSystemManager.ftruncateSync`
+{
+ const fs = wx.getFileSystemManager()
+ const fd = fs.openSync({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ flag: 'a+',
+ })
+ fs.ftruncateSync({
+ fd: fd,
+ length: 10, // 从第10个字节开始截断文件
+ })
+}
+
+// Test case from `FileSystemManager.open`
+{
+ const fs = wx.getFileSystemManager()
+ fs.open({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ flag: 'a+',
+ success(res) {
+ expectType(res.fd)
+ },
+ })
+}
+
+// Test case from `FileSystemManager.openSync`
+{
+ const fs = wx.getFileSystemManager()
+ const fd = fs.openSync({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ flag: 'a+',
+ })
+ expectType(fd)
+}
+
+// Test case from `FileSystemManager.read`
+{
+ const fs = wx.getFileSystemManager()
+ const ab = new ArrayBuffer(1024)
+ // 打开文件
+ fs.open({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ flag: 'a+',
+ success(res) {
+ // 读取文件到 ArrayBuffer 中
+ fs.read({
+ fd: res.fd,
+ arrayBuffer: ab,
+ length: 10,
+ success(res) {
+ console.log(res)
+ },
+ })
},
})
}
+
+// Test case from `FileSystemManager.readSync`
+{
+ const fs = wx.getFileSystemManager()
+ const ab = new ArrayBuffer(1024)
+ const fd = fs.openSync({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ flag: 'a+',
+ })
+ const res = fs.readSync({
+ fd: fd,
+ arrayBuffer: ab,
+ length: 10,
+ })
+ console.log(res)
+}
+
+// Test case from `FileSystemManager.truncate`
+{
+ const fs = wx.getFileSystemManager()
+ fs.truncate({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ length: 10, // 从第10个字节开始截断
+ success(res) {
+ console.log(res)
+ },
+ })
+}
+
+// Test case from `FileSystemManager.truncateSync`
+{
+ const fs = wx.getFileSystemManager()
+ fs.truncateSync({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ length: 10, // 从第10个字节开始截断
+ })
+}
+
+// Test case from `FileSystemManager.write`
+{
+ const fs = wx.getFileSystemManager()
+ // 打开文件
+ fs.open({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ flag: 'a+',
+ success(res) {
+ // 写入文件
+ fs.write({
+ fd: res.fd,
+ data: 'some text',
+ success(res) {
+ expectType(res.bytesWritten)
+ },
+ })
+ },
+ })
+}
+
+// Test case from `FileSystemManager.writeSync`
+{
+ const fs = wx.getFileSystemManager()
+ const fd = fs.openSync({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ flag: 'a+',
+ })
+ const res = fs.writeSync({
+ fd: fd,
+ data: 'some text',
+ })
+ expectType(res.bytesWritten)
+}
+
+// Test case from `FileSystemManager.access`
+{
+ const fs = wx.getFileSystemManager()
+ // 判断文件/目录是否存在
+ fs.access({
+ path: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ success(res) {
+ // 文件存在
+ console.log(res)
+ },
+ fail(res) {
+ // 文件不存在或其他错误
+ console.error(res)
+ }
+ })
+
+ // 同步接口
+ try {
+ fs.accessSync(`${wx.env.USER_DATA_PATH}/hello.txt`)
+ } catch(e) {
+ console.error(e)
+ }
+}
+
+// Test case from `FileSystemManager.accessSync`
+{
+ const fs = wx.getFileSystemManager()
+ // 判断文件/目录是否存在
+ fs.access({
+ path: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ success(res) {
+ // 文件存在
+ console.log(res)
+ },
+ fail(res) {
+ // 文件不存在或其他错误
+ console.error(res)
+ }
+ })
+
+ // 同步接口
+ try {
+ fs.accessSync(`${wx.env.USER_DATA_PATH}/hello.txt`)
+ } catch(e) {
+ console.error(e)
+ }
+}
+
+// Test case from `FileSystemManager.appendFile`
+{
+ const fs = wx.getFileSystemManager()
+
+ fs.appendFile({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ data: 'some text',
+ encoding: 'utf8',
+ success(res) {
+ console.log(res)
+ },
+ fail(res) {
+ console.error(res)
+ }
+ })
+
+ // 同步接口
+ try {
+ fs.appendFileSync(`${wx.env.USER_DATA_PATH}/hello.txt`, 'some text', 'utf8')
+ } catch(e) {
+ console.error(e)
+ }
+}
+
+// Test case from `FileSystemManager.appendFileSync`
+{
+ const fs = wx.getFileSystemManager()
+
+ fs.appendFile({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ data: 'some text',
+ encoding: 'utf8',
+ success(res) {
+ console.log(res)
+ },
+ fail(res) {
+ console.error(res)
+ }
+ })
+
+ // 同步接口
+ try {
+ fs.appendFileSync(`${wx.env.USER_DATA_PATH}/hello.txt`, 'some text', 'utf8')
+ } catch(e) {
+ console.error(e)
+ }
+}
+
+// Test case from `FileSystemManager.copyFile`
+{
+ const fs = wx.getFileSystemManager()
+ fs.copyFile({
+ srcPath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ destPath: `${wx.env.USER_DATA_PATH}/hello_copy.txt`,
+ success(res) {
+ console.log(res)
+ },
+ fail(res) {
+ console.error(res)
+ }
+ })
+
+ // 同步接口
+ try {
+ fs.copyFileSync(
+ `${wx.env.USER_DATA_PATH}/hello.txt`,
+ `${wx.env.USER_DATA_PATH}/hello_copy.txt`
+ )
+ } catch(e) {
+ console.error(e)
+ }
+}
+
+// Test case from `FileSystemManager.copyFileSync`
+{
+ const fs = wx.getFileSystemManager()
+ fs.copyFile({
+ srcPath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ destPath: `${wx.env.USER_DATA_PATH}/hello_copy.txt`,
+ success(res) {
+ console.log(res)
+ },
+ fail(res) {
+ console.error(res)
+ }
+ })
+
+ // 同步接口
+ try {
+ fs.copyFileSync(
+ `${wx.env.USER_DATA_PATH}/hello.txt`,
+ `${wx.env.USER_DATA_PATH}/hello_copy.txt`
+ )
+ } catch(e) {
+ console.error(e)
+ }
+}
+
+// Test case from `FileSystemManager.mkdir`
+{
+ const fs = wx.getFileSystemManager()
+ fs.mkdir({
+ dirPath: `${wx.env.USER_DATA_PATH}/example`,
+ recursive: false,
+ success(res) {
+ console.log(res)
+ },
+ fail(res) {
+ console.error(res)
+ }
+ })
+
+ // 同步接口
+ try {
+ fs.mkdirSync(`${wx.env.USER_DATA_PATH}/example`, false)
+ } catch(e) {
+ console.error(e)
+ }
+}
+
+// Test case from `FileSystemManager.mkdirSync`
+{
+ const fs = wx.getFileSystemManager()
+ fs.mkdir({
+ dirPath: `${wx.env.USER_DATA_PATH}/example`,
+ recursive: false,
+ success(res) {
+ console.log(res)
+ },
+ fail(res) {
+ console.error(res)
+ }
+ })
+
+ // 同步接口
+ try {
+ fs.mkdirSync(`${wx.env.USER_DATA_PATH}/example`, false)
+ } catch(e) {
+ console.error(e)
+ }
+}
+
+// Test case from `FileSystemManager.readFile`
+{
+ const fs = wx.getFileSystemManager()
+ fs.readFile({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ encoding: 'utf8',
+ position: 0,
+ success(res) {
+ console.log(res.data)
+ },
+ fail(res) {
+ console.error(res)
+ }
+ })
+
+ // 同步接口
+ try {
+ const res = fs.readFileSync(`${wx.env.USER_DATA_PATH}/hello.txt`, 'utf8', 0)
+ expectType(res)
+ } catch(e) {
+ console.error(e)
+ }
+}
+
+// Test case from `FileSystemManager.readFileSync`
+{
+ const fs = wx.getFileSystemManager()
+ fs.readFile({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ encoding: 'utf8',
+ position: 0,
+ success(res) {
+ console.log(res.data)
+ },
+ fail(res) {
+ console.error(res)
+ }
+ })
+
+ // 同步接口
+ try {
+ const res = fs.readFileSync(`${wx.env.USER_DATA_PATH}/hello.txt`, 'utf8', 0)
+ expectType(res)
+ } catch(e) {
+ console.error(e)
+ }
+}
+
+// Test case from `FileSystemManager.readZipEntry`
+{
+ const fs = wx.getFileSystemManager()
+ // 读取zip内某个或多个文件
+ fs.readZipEntry({
+ filePath: 'wxfile://from/to.zip',
+ entries: [{
+ path: 'some_folder/my_file.txt', // zip内文件路径
+ encoding: 'utf-8', // 指定读取文件的字符编码,如果不传 encoding,则以 ArrayBuffer 格式读取文件的二进制内容
+ position: 0, // 从文件指定位置开始读,如果不指定,则从文件头开始读。读取的范围应该是左闭右开区间 [position, position+length)。有效范围:[0, fileLength - 1]。单位:byte
+ length: 10000, // 指定文件的长度,如果不指定,则读到文件末尾。有效范围:[1, fileLength]。单位:byte
+ }, {
+ path: 'other_folder/orther_file.txt', // zip内文件路径
+ }],
+ success(res) {
+ console.log(res.entries)
+ // res.entries === {
+ // 'some_folder/my_file.txt': {
+ // errMsg: 'readZipEntry:ok',
+ // data: 'xxxxxx'
+ // },
+ // 'other_folder/orther_file.txt': {
+ // data: (ArrayBuffer)
+ // }
+ // }
+ },
+ fail(res) {
+ console.log(res.errMsg)
+ },
+ })
+
+ // 读取zip内所有文件。允许指定统一的encoding。position、length则不再允许指定,分别默认为0和文件长度
+ fs.readZipEntry({
+ filePath: 'wxfile://from/to.zip',
+ entries: 'all',
+ encoding: 'utf-8', // 统一指定读取文件的字符编码,如果不传 encoding,则以 ArrayBuffer 格式读取文件的二进制内容
+ success(res) {
+ console.log(res.entries)
+ // res.entries === {
+ // 'some_folder/my_file.txt': {
+ // errMsg: 'readZipEntry:ok',
+ // data: 'xxxxxx'
+ // },
+ // 'other_folder/orther_file.txt': {
+ // errMsg: 'readZipEntry:ok',
+ // data: 'xxxxxx'
+ // }
+ // }
+ },
+ fail(res) {
+ console.log(res.errMsg)
+ },
+ })
+}
+
+// Test case from `FileSystemManager.readdir`
+{
+ const fs = wx.getFileSystemManager()
+ fs.readdir({
+ dirPath: `${wx.env.USER_DATA_PATH}/example`,
+ success(res) {
+ console.log(res.files)
+ },
+ fail(res) {
+ console.error(res)
+ }
+ })
+
+ // 同步接口
+ try {
+ const res = fs.readdirSync(`${wx.env.USER_DATA_PATH}/example`)
+ expectType(res)
+ } catch(e) {
+ console.error(e)
+ }
+}
+
+// Test case from `FileSystemManager.readdirSync`
+{
+ const fs = wx.getFileSystemManager()
+ fs.readdir({
+ dirPath: `${wx.env.USER_DATA_PATH}/example`,
+ success(res) {
+ console.log(res.files)
+ },
+ fail(res) {
+ console.error(res)
+ }
+ })
+
+ // 同步接口
+ try {
+ const res = fs.readdirSync(`${wx.env.USER_DATA_PATH}/example`)
+ expectType(res)
+ } catch(e) {
+ console.error(e)
+ }
+}
+
+// Test case from `FileSystemManager.rename`
+{
+ const fs = wx.getFileSystemManager()
+ fs.rename({
+ oldPath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ newPath: `${wx.env.USER_DATA_PATH}/hello_new.txt`,
+ success(res) {
+ console.log(res)
+ },
+ fail(res) {
+ console.error(res)
+ }
+ })
+
+ // 同步接口
+ try {
+ const res = fs.renameSync(
+ `${wx.env.USER_DATA_PATH}/hello.txt`,
+ `${wx.env.USER_DATA_PATH}/hello_new.txt`
+ )
+ console.log(res)
+ } catch(e) {
+ console.error(e)
+ }
+}
+
+// Test case from `FileSystemManager.renameSync`
+{
+ const fs = wx.getFileSystemManager()
+ fs.rename({
+ oldPath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ newPath: `${wx.env.USER_DATA_PATH}/hello_new.txt`,
+ success(res) {
+ console.log(res)
+ },
+ fail(res) {
+ console.error(res)
+ }
+ })
+
+ // 同步接口
+ try {
+ const res = fs.renameSync(
+ `${wx.env.USER_DATA_PATH}/hello.txt`,
+ `${wx.env.USER_DATA_PATH}/hello_new.txt`
+ )
+ console.log(res)
+ } catch(e) {
+ console.error(e)
+ }
+}
+
+// Test case from `FileSystemManager.rmdir`
+{
+ const fs = wx.getFileSystemManager()
+ fs.rmdir({
+ dirPath: `${wx.env.USER_DATA_PATH}/example`,
+ recursive: false,
+ success(res) {
+ console.log(res)
+ },
+ fail(res) {
+ console.error(res)
+ }
+ })
+
+ // 同步接口
+ try {
+ const res = fs.rmdirSync(`${wx.env.USER_DATA_PATH}/example`, false)
+ console.log(res)
+ } catch(e) {
+ console.error(e)
+ }
+}
+
+// Test case from `FileSystemManager.rmdirSync`
+{
+ const fs = wx.getFileSystemManager()
+ fs.rmdir({
+ dirPath: `${wx.env.USER_DATA_PATH}/example`,
+ recursive: false,
+ success(res) {
+ console.log(res)
+ },
+ fail(res) {
+ console.error(res)
+ }
+ })
+
+ // 同步接口
+ try {
+ const res = fs.rmdirSync(`${wx.env.USER_DATA_PATH}/example`, false)
+ console.log(res)
+ } catch(e) {
+ console.error(e)
+ }
+}
+
+// Test case from `wx.saveFileToDisk`
+{
+ wx.saveFileToDisk({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ success(res) {
+ console.log(res)
+ },
+ fail(res) {
+ console.error(res)
+ }
+ })
+}
+
+// Test case from `FileSystemManager.unlink`
+{
+ const fs = wx.getFileSystemManager()
+ fs.unlink({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ success(res) {
+ console.log(res)
+ },
+ fail(res) {
+ console.error(res)
+ }
+ })
+
+ // 同步接口
+ try {
+ const res = fs.unlinkSync(`${wx.env.USER_DATA_PATH}/hello.txt`)
+ console.log(res)
+ } catch(e) {
+ console.error(e)
+ }
+}
+
+// Test case from `FileSystemManager.unlinkSync`
+{
+ const fs = wx.getFileSystemManager()
+ fs.unlink({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ success(res) {
+ console.log(res)
+ },
+ fail(res) {
+ console.error(res)
+ }
+ })
+
+ // 同步接口
+ try {
+ const res = fs.unlinkSync(`${wx.env.USER_DATA_PATH}/hello.txt`)
+ console.log(res)
+ } catch(e) {
+ console.error(e)
+ }
+}
+
+// Test case from `FileSystemManager.unzip`
+{
+ const fs = wx.getFileSystemManager()
+ fs.unzip({
+ zipFilePath: `${wx.env.USER_DATA_PATH}/example.zip`,
+ targetPath: '${wx.env.USER_DATA_PATH}/example',
+ success(res) {
+ console.log(res)
+ },
+ fail(res) {
+ console.error(res)
+ }
+ })
+}
+
+// Test case from `FileSystemManager.writeFile`
+{
+ const fs = wx.getFileSystemManager()
+ fs.writeFile({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ data: 'some text or arrayBuffer',
+ encoding: 'utf8',
+ success(res) {
+ console.log(res)
+ },
+ fail(res) {
+ console.error(res)
+ }
+ })
+
+ // 同步接口
+ try {
+ const res = fs.writeFileSync(
+ `${wx.env.USER_DATA_PATH}/hello.txt`,
+ 'some text or arrayBuffer',
+ 'utf8'
+ )
+ console.log(res)
+ } catch(e) {
+ console.error(e)
+ }
+}
+
+// Test case from `FileSystemManager.writeFileSync`
+{
+ const fs = wx.getFileSystemManager()
+ fs.writeFile({
+ filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+ data: 'some text or arrayBuffer',
+ encoding: 'utf8',
+ success(res) {
+ console.log(res)
+ },
+ fail(res) {
+ console.error(res)
+ }
+ })
+
+ // 同步接口
+ try {
+ const res = fs.writeFileSync(
+ `${wx.env.USER_DATA_PATH}/hello.txt`,
+ 'some text or arrayBuffer',
+ 'utf8'
+ )
+ console.log(res)
+ } catch(e) {
+ console.error(e)
+ }
+}
+
+// Test case from `UserCryptoManager.getLatestUserKey`
+{
+ const userCryptoManager = wx.getUserCryptoManager()
+ userCryptoManager.getLatestUserKey({
+ success: res => {
+ const {encryptKey, iv, version, expireTime} = res
+ console.log(encryptKey, iv, version, expireTime)
+ }
+ })
+}
+
+// Test case from `UserCryptoManager.getRandomValues`
+{
+ wx.getRandomValues({
+ length: 6, // 生成 6 个字节长度的随机数
+ success: res => {
+ console.log(wx.arrayBufferToBase64(res.randomValues)) // 转换为 base64 字符串后打印
+ }
+ })
+}
+
+// Test case from `wx.createVKSession`
+{
+ // 创建 session 对象
+ const session = wx.createVKSession({
+ track: {
+ plane: { mode: 1 },
+ },
+ })
+ expectType(session)
+
+ // 逐帧分析
+ const onFrame = () => {
+ const canvasWidth = 0
+ const canvasHeight = 0
+ // 开发者可以自己控制帧率
+ const frame = session.getVKFrame(canvasWidth, canvasHeight)
+ if (frame) {
+ // 分析完毕,可以拿到帧对象
+ expectType(frame)
+ }
+
+ session.requestAnimationFrame(onFrame)
+ }
+ session.start(err => {
+ if (!err) session.requestAnimationFrame(onFrame)
+ })
+}
+
+// Test case from `wx.createVKSession`
+{
+ const gl: WechatMiniprogram.WebGLRenderingContext = {}
+ const canvasWidth = 300
+ const canvasHeight = 300
+ // 以下 demo 以 v2 为例
+ // 创建 session 对象
+ const session = wx.createVKSession({
+ track: {
+ plane: {mode: 3},
+ },
+ version: 'v2',
+ gl,
+ })
+ // 逐帧分析
+ const onFrame = (timestamp: number) => {
+ // 开发者可以自己控制帧率
+ const frame = session.getVKFrame(canvasWidth, canvasHeight)
+ if (frame) {
+ // 分析完毕,可以拿到帧对象
+ doRender(frame)
+ }
+
+ expectType(timestamp)
+
+ session.requestAnimationFrame(onFrame)
+ }
+ session.start(err => {
+ if (!err) session.requestAnimationFrame(onFrame)
+ })
+
+ // 渲染函数
+ const doRender = (frame: WechatMiniprogram.VKFrame) => {
+ expectType(frame)
+ }
+}
+
+// Test case from `wx.isVKSupport`
+{
+ const isSupportV2 = wx.isVKSupport('v2')
+ expectType(isSupportV2)
+}
+
+// Test case from `FileSystemManager.readCompressedFile`
+{
+ const fs = wx.getFileSystemManager()
+
+ // 异步接口
+ fs.readCompressedFile({
+ filePath: '${wx.env.USER_DATA_PATH}/hello.br',
+ compressionAlgorithm: 'br',
+ success(res) {
+ expectType(res.data)
+ },
+ fail(res) {
+ console.log('readCompressedFile fail', res)
+ },
+ })
+
+ // 同步接口
+ const data = fs.readCompressedFileSync({
+ filePath: '${wx.env.USER_DATA_PATH}/hello.br',
+ compressionAlgorithm: 'br',
+ })
+ expectType(data)
+}
+
+// Test case from `FileSystemManager.readCompressedFileSync`
+{
+ const fs = wx.getFileSystemManager()
+
+ // 异步接口
+ fs.readCompressedFile({
+ filePath: '${wx.env.USER_DATA_PATH}/hello.br',
+ compressionAlgorithm: 'br',
+ success(res) {
+ expectType(res.data)
+ },
+ fail(res) {
+ console.log('readCompressedFile fail', res)
+ },
+ })
+
+ // 同步接口
+ try {
+ const data = fs.readCompressedFileSync({
+ filePath: '${wx.env.USER_DATA_PATH}/hello.br',
+ compressionAlgorithm: 'br',
+ })
+ expectType(data)
+ } catch (err) {
+ console.log(err)
+ }
+}
+
+// Test case from `wx.getStorage`
+{
+ // 开启加密存储
+ wx.setStorage({
+ key: 'key',
+ data: 'value',
+ encrypt: true, // 若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
+ success() {
+ wx.getStorage({
+ key: 'key',
+ encrypt: true, // 若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
+ success(res) {
+ console.log(res.data)
+ },
+ })
+ },
+ })
+}
+
+// Test case from `wx.getStorageSync`
+{
+ // 开启加密存储
+ wx.setStorage({
+ key: 'key',
+ data: 'value',
+ encrypt: true, // 若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
+ success() {
+ wx.getStorage({
+ key: 'key',
+ encrypt: true, // 若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
+ success(res) {
+ console.log(res.data)
+ },
+ })
+ },
+ })
+}
+
+// Test case from `wx.setStorage`
+{
+ // 开启加密存储
+ wx.setStorage({
+ key: 'key',
+ data: 'value',
+ encrypt: true, // 若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
+ success() {
+ wx.getStorage({
+ key: 'key',
+ encrypt: true, // 若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
+ success(res) {
+ console.log(res.data)
+ },
+ })
+ },
+ })
+}
+
+// Test case from `wx.setStorageSync`
+{
+ // 开启加密存储
+ wx.setStorage({
+ key: 'key',
+ data: 'value',
+ encrypt: true, // 若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
+ success() {
+ wx.getStorage({
+ key: 'key',
+ encrypt: true, // 若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
+ success(res) {
+ console.log(res.data)
+ },
+ })
+ },
+ })
+}
+
+// Test case from `wx.getLocalIPAddress`
+{
+ wx.getLocalIPAddress({
+ success(res) {
+ const localip = res.localip
+ expectType(localip)
+ },
+ })
+}
+
+// Test case from `wx.onNetworkWeakChange`
+{
+ wx.onNetworkWeakChange(function (res) {
+ console.log(res.weakNet)
+ console.log(res.networkType)
+ })
+ // 取消监听
+ wx.offNetworkWeakChange()
+}
+
+// Test case from `VideoDecoder`
+(async function () {
+ const decoder = wx.createVideoDecoder()
+ // 启动 videoDecoder
+ await new Promise(resolve => {
+ decoder.on('start', resolve)
+ decoder.start({
+ source: 'http://...',
+ abortAudio: true, // 不需要音频
+ })
+ })
+})
+
+// Test case from `wx.openCustomerServiceChat`
+{
+ wx.openCustomerServiceChat({
+ extInfo: { url: '' },
+ corpId: '',
+ success(res) {
+ expectType(res)
+ },
+ })
+}
+
+// Test case from `wx.requestSubscribeDeviceMessage`
+{
+ wx.requestSubscribeDeviceMessage({
+ tmplIds: ['xxxxx'],
+ sn: 'xxxx',
+ snTicket: 'xxxxx',
+ modelId: 'xxx',
+ success(res) {
+ console.log(res)
+ },
+ fail(res) {
+ console.log(res)
+ },
+ })
+}
+
+// Test case from `wx.getMenuButtonBoundingClientRect`
+{
+ const res = wx.getMenuButtonBoundingClientRect()
+
+ console.log(res.width)
+ console.log(res.height)
+ console.log(res.top)
+ console.log(res.right)
+ console.log(res.bottom)
+ console.log(res.left)
+}
+
+// Test case from `wx.createWorker`
+{
+ const createNewWorker = function () {
+ const worker = wx.createWorker('workers/index.js', {
+ useExperimentalWorker: true,
+ })
+ // 监听worker被系统回收事件
+ worker.onProcessKilled(() => {
+ // 重新创建一个worker
+ createNewWorker()
+ })
+ }
+ // 创建实验worker
+ createNewWorker()
+}
+
+// Test case from `wx.createBLEConnection`
+{
+ wx.createBLEConnection({
+ deviceId: '',
+ success(res) {
+ console.log(res)
+ },
+ })
+}
+
+// Test case from `wx.getBLEMTU`
+{
+ wx.getBLEMTU({
+ deviceId: '',
+ writeType: 'write',
+ success(res) {
+ console.log(res)
+ },
+ })
+}
+
+// Test case from `wx.onBLEMTUChange`
+{
+ wx.onBLEMTUChange(function (res) {
+ console.log('bluetooth mtu is', res.mtu)
+ })
+}
+
+// Test case from `wx.getAppAuthorizeSetting`
+{
+ const appAuthorizeSetting = wx.getAppAuthorizeSetting()
+
+ console.log(appAuthorizeSetting.albumAuthorized)
+ console.log(appAuthorizeSetting.bluetoothAuthorized)
+ console.log(appAuthorizeSetting.cameraAuthorized)
+ console.log(appAuthorizeSetting.locationAuthorized)
+ console.log(appAuthorizeSetting.locationReducedAccuracy)
+ console.log(appAuthorizeSetting.microphoneAuthorized)
+ console.log(appAuthorizeSetting.notificationAlertAuthorized)
+ console.log(appAuthorizeSetting.notificationAuthorized)
+ console.log(appAuthorizeSetting.notificationBadgeAuthorized)
+ console.log(appAuthorizeSetting.notificationSoundAuthorized)
+ console.log(appAuthorizeSetting.phoneCalendarAuthorized)
+}
+
+// Test case from `wx.getAppBaseInfo`
+{
+ const appBaseInfo = wx.getAppBaseInfo()
+
+ console.log(appBaseInfo.SDKVersion)
+ console.log(appBaseInfo.enableDebug)
+ console.log(appBaseInfo.host)
+ console.log(appBaseInfo.language)
+ console.log(appBaseInfo.version)
+ console.log(appBaseInfo.theme)
+}
+
+// Test case from `wx.getDeviceInfo`
+{
+ const deviceInfo = wx.getDeviceInfo()
+
+ console.log(deviceInfo.abi)
+ console.log(deviceInfo.benchmarkLevel)
+ console.log(deviceInfo.brand)
+ console.log(deviceInfo.model)
+ console.log(deviceInfo.platform)
+ console.log(deviceInfo.system)
+}
+
+// Test case from `wx.getSystemSetting`
+{
+ const systemSetting = wx.getSystemSetting()
+
+ console.log(systemSetting.bluetoothEnabled)
+ console.log(systemSetting.deviceOrientation)
+ console.log(systemSetting.locationEnabled)
+ console.log(systemSetting.wifiEnabled)
+}
+
+// Test case from `wx.getWindowInfo`
+{
+ const windowInfo = wx.getWindowInfo()
+
+ console.log(windowInfo.pixelRatio)
+ console.log(windowInfo.screenWidth)
+ console.log(windowInfo.screenHeight)
+ console.log(windowInfo.windowWidth)
+ console.log(windowInfo.windowHeight)
+ console.log(windowInfo.statusBarHeight)
+ console.log(windowInfo.safeArea)
+ console.log(windowInfo.screenTop)
+}
+
+// Test case from `wx.openAppAuthorizeSetting`
+{
+ wx.openAppAuthorizeSetting({
+ success(res) {
+ console.log(res)
+ },
+ })
+}
+
+// Test case from `wx.openSystemBluetoothSetting`
+{
+ wx.openSystemBluetoothSetting({
+ success(res) {
+ console.log(res)
+ },
+ })
+}
+
+// Test case from `WebAudioContext`
+{
+ // 监听状态
+ const audioCtx = wx.createWebAudioContext()
+ audioCtx.onstatechange = () => {
+ expectType(audioCtx.state)
+ }
+ setTimeout(audioCtx.suspend, 1000)
+ setTimeout(audioCtx.resume, 2000)
+}
+
+// Test case from `WebAudioContext.close`
+{
+ const audioCtx = wx.createWebAudioContext()
+ audioCtx.close().then(() => {
+ console.log(audioCtx.state) // bad case:不应该在close后再访问state
+ })
+}
+
+// Test case from `WebAudioContext.createPeriodicWave`
+{
+ const audioCtx = wx.createWebAudioContext()
+
+ const real = new Float32Array(2)
+ const imag = new Float32Array(2)
+ real[0] = 0
+ imag[0] = 0
+ real[1] = 1
+ imag[1] = 0
+
+ audioCtx.createPeriodicWave(real, imag, {
+ disableNormalization: true,
+ })
+}
+
+// Test case from `wx.preloadAssets`
+{
+ let imgUrl = ''
+ wx.preloadAssets({
+ data: [
+ {
+ type: 'image',
+ src: imgUrl,
+ },
+ ],
+ success(resp) {
+ console.log('preloadAssets success', resp)
+ },
+ fail(err) {
+ console.log('preloadAssets fail', err)
+ },
+ })
+}
+
+// Test case from `wx.editImage`
+{
+ wx.editImage({
+ src: '', // 图片路径
+ })
+}
+
+// Test case from `wx.createCacheManager`
+{
+ const cacheManager = wx.createCacheManager({})
+ cacheManager.addRule(/https:\/\/(?:.*)/ig) // 表示所有 https 请求都匹配
+
+ cacheManager.on('request', evt => {
+ // 在弱网时接收到 wx.request 请求
+ return new Promise((resolve, reject) => {
+ const matchRes = cacheManager.match(evt)
+ if (matchRes && matchRes.data) {
+ // 有缓存,返回
+ resolve(matchRes.data)
+ } else {
+ // 没缓存,抛错
+ reject({ errMsg: 'no cache' })
+ }
+ })
+ })
+}
+
+// Test case from `CacheManager.addRule`
+{
+ const cacheManager = wx.createCacheManager({})
+ const ruleId = cacheManager.addRule({
+ id: 'haha-rule',
+ method: 'GET',
+ url: '/haha',
+ maxAge: 123455,
+ dataSchema: [
+ // data 字段的匹配,默认为空,表示不匹配
+ // 类型可以是:string、number、boolean、null、object、any(表示任意类型均可),以及这些类型的数组表示方式
+ {name: 'aaa', schema: {type: 'string'}}, // 类型为 string
+ {name: 'bbb', schema: [{type: 'number'}, {type: 'string'}]}, // 类型为 number, string
+ {name: 'ccc', schema: {type: 'string', value: 'abc'}}, // 值为 abc
+ {name: 'ddd', schema: {type: 'string', value: /(abc|cba)/ig}}, // 值符合该正则匹配,如果该值不是字符串类型,则会被尝试转成字符串后再进行比较
+ {name: 'ddd', schema: {type: 'string', value: (val: string) => val === '123'}}, // 传入函数来校验值
+ {name: 'eee', schema: {type: 'object', value: [{ // 类型为对象,则通过嵌套的方式来逐层校验
+ name: 'aaa', schema: {type: 'string'},
+ // ...
+ // 嵌套 dataSchema,同上面的方式一样来匹配嵌套的对象
+ }]}},
+ {name: 'fff', schema: {type: 'string[]'}}, // 类型为 string 数组
+ {name: 'ggg', schema: {type: 'any'}}, // 类型为任意类型
+ {name: 'hhh', schema: {type: 'any[]'}}, // 类型为任意类型的数组
+ ],
+ })
+ expectType(ruleId)
+}
+
+// Test case from `CacheManager.on`
+{
+ const cacheManager = wx.createCacheManager({})
+ cacheManager.on('request', async function () {
+ // evt.url - 请求 url
+ // evt.data - 请求参数
+ // evt.method - 请求方法
+ // evt.request - 原始 request 方法,返回一个 promise
+
+ // if (evt.url === '/xxx') {
+ // // 如果有些请求仍然希望走到网络,则可以如下处理
+ // const res = await evt.request()
+ // // res 即为网络请求返回
+ // }
+
+ return new Promise((resolve, reject) => {
+ // do sth
+ let data = {}
+ if (data) {
+ // 这里 resolve 的 data 就会作为 wx.request 的 success 回调结果返回
+ resolve(data)
+ } else {
+ // 这里 reject 的错误信息就会作为 wx.request 的 fail 回调结果返回
+ reject('no data')
+ }
+ })
+ })
+}
+
+// Test case from `CacheManager.match`
+{
+ const cacheManager = wx.createCacheManager({})
+ cacheManager.on('request', (evt) => {
+ const cache = cacheManager.match(evt)
+ // 若有重复监听,则取第一个 handler 返回的 promise
+ return new Promise((resolve, reject) => {
+ if (cache.data) {
+ resolve(cache.data)
+ } else {
+ reject('no cache')
+ }
+ })
+ })
+}
+
+// Test case from `wx.requestPluginPayment`
+{
+ wx.requestPluginPayment({
+ version: 'release',
+ fee: 1,
+ paymentArgs: {},
+ currencyType: 'CNY',
+ success (res) {
+ expectType(res.errMsg)
+ },
+ fail (res) {
+ expectType(res.errMsg)
+ }
+ })
+}
diff --git a/test/api-promisify.test.ts b/test/api-promisify.test.ts
new file mode 100644
index 0000000..71ccac0
--- /dev/null
+++ b/test/api-promisify.test.ts
@@ -0,0 +1,198 @@
+import { expectType } from 'tsd'
+
+// call with callback
+wx.chooseImage({
+ success(res) {
+ expectType(res)
+ },
+})
+wx.canvasToTempFilePath({
+ canvasId: '',
+ success(res) {
+ expectType(
+ res,
+ )
+ },
+})
+wx.stopAccelerometer({
+ fail(res) {
+ expectType(res)
+ },
+})
+wx.getClipboardData({
+ success(res) {
+ expectType(res)
+ },
+})
+wx.stopCompass({
+ complete(res) {
+ expectType(res)
+ },
+})
+wx.addPhoneContact({
+ firstName: '',
+ complete(res) {
+ expectType(res)
+ },
+})
+wx.startLocalServiceDiscovery({
+ serviceType: '',
+ success(res) {
+ expectType(res)
+ },
+})
+wx.getSystemInfo({
+ success(res) {
+ expectType(res)
+ },
+})
+wx.chooseLocation({
+ success(res) {
+ expectType(res)
+ },
+})
+wx.previewImage({
+ urls: [],
+ success(res) {
+ expectType(res)
+ },
+})
+wx.saveVideoToPhotosAlbum({
+ filePath: '',
+ success(res) {
+ expectType(res)
+ },
+})
+
+wx.createBLEConnection({
+ deviceId: '',
+ success(res) {
+ expectType(res)
+ },
+})
+
+wx.startBluetoothDevicesDiscovery({
+ success(res) {
+ expectType(res)
+ },
+})
+wx.hideShareMenu({
+ success(res) {
+ expectType(res)
+ },
+})
+
+wx.checkIsSupportSoterAuthentication({
+ success(res) {
+ expectType<
+ WechatMiniprogram.CheckIsSupportSoterAuthenticationSuccessCallbackResult
+ >(res)
+ },
+})
+wx.navigateBack({
+ success(res) {
+ expectType(res)
+ },
+})
+
+// call with Promise.prototype.then
+wx.chooseImage({}).then(res => {
+ expectType(res)
+})
+wx.canvasToTempFilePath({
+ canvasId: '',
+}).then(res => {
+ expectType(res)
+})
+wx.stopAccelerometer().then(res => {
+ expectType(res)
+})
+wx.getClipboardData().then(res => {
+ expectType(res)
+})
+wx.stopCompass().then(res => {
+ expectType(res)
+})
+wx.addPhoneContact({
+ firstName: '',
+}).then(res => {
+ expectType(res)
+})
+wx.startLocalServiceDiscovery({ serviceType: '' }).then(res => {
+ expectType(res)
+})
+wx.getSystemInfo().then(res => {
+ expectType(res)
+})
+wx.chooseLocation({}).then(res => {
+ expectType(res)
+})
+wx.previewImage({ urls: [] }).then(res => {
+ expectType(res)
+})
+wx.saveVideoToPhotosAlbum({ filePath: '' }).then(res => {
+ expectType(res)
+})
+wx.createBLEConnection({ deviceId: '' }).then(res => {
+ expectType(res)
+})
+wx.startBluetoothDevicesDiscovery({}).then(res => {
+ expectType(res)
+})
+wx.hideShareMenu().then(res => {
+ expectType(res)
+})
+wx.checkIsSupportSoterAuthentication().then(res => {
+ expectType<
+ WechatMiniprogram.CheckIsSupportSoterAuthenticationSuccessCallbackResult
+ >(res)
+})
+wx.navigateBack().then(res => {
+ expectType(res)
+})
+
+// call with await
+async () => {
+ expectType(
+ await wx.chooseImage({}),
+ )
+ expectType(
+ await wx.canvasToTempFilePath({ canvasId: '' }),
+ )
+ expectType(
+ await wx.stopAccelerometer(),
+ )
+ expectType(
+ await wx.getClipboardData(),
+ )
+ expectType(await wx.stopCompass())
+ expectType(
+ await wx.addPhoneContact({ firstName: '' }),
+ )
+ expectType(
+ await wx.startLocalServiceDiscovery({ serviceType: '' }),
+ )
+ expectType(
+ await wx.getSystemInfo(),
+ )
+ expectType(
+ await wx.chooseLocation({}),
+ )
+ expectType(
+ await wx.previewImage({ urls: [] }),
+ )
+ expectType(
+ await wx.saveVideoToPhotosAlbum({ filePath: '' }),
+ )
+ expectType(
+ await wx.createBLEConnection({ deviceId: '' }),
+ )
+ expectType(
+ await wx.startBluetoothDevicesDiscovery({}),
+ )
+ expectType(await wx.hideShareMenu())
+ expectType<
+ WechatMiniprogram.CheckIsSupportSoterAuthenticationSuccessCallbackResult
+ >(await wx.checkIsSupportSoterAuthentication())
+ expectType(await wx.navigateBack())
+}
diff --git a/test/api.test.ts b/test/api.test.ts
index bb56e1c..b626b04 100644
--- a/test/api.test.ts
+++ b/test/api.test.ts
@@ -1,4 +1,4 @@
-import { expectType } from 'tsd'
+import { expectType, expectNotType } from 'tsd'
wx.request({
url: 'https://www.baidu.com',
@@ -64,3 +64,48 @@ console.error('console', 'error')
console.groupEnd()
expectType(wx.env.USER_DATA_PATH)
+
+wx.getStorage({
+ key: 'key',
+ success(res) {
+ expectType(res.data)
+ }
+})
+wx.getStorage({ key: 'key' }).then((res) => {
+ expectType(res.data)
+})
+wx.getStorage({
+ key: 'key',
+ success(res) {
+ expectType(res.data)
+ expectNotType(res.data)
+ }
+})
+
+wx.request({
+ url: 'https://developer.weixin.qq.com',
+ success(res) {
+ expectType(res.data)
+ }
+})
+
+{
+ const thisShouldBeAny = wx.getStorageSync('test')
+ expectType(thisShouldBeAny)
+ expectNotType(thisShouldBeAny)
+ const thisShouldBeNumber = wx.getStorageSync('test')
+ expectNotType(thisShouldBeNumber)
+ expectType(thisShouldBeNumber)
+}
+
+wx.createSelectorQuery()
+ .select('#canvas')
+ .node(({ node }) => {
+ const canvas = node as WechatMiniprogram.Canvas
+ const ctx = canvas.getContext('2d')
+
+ expectNotType(ctx)
+ expectType(ctx.font)
+ expectType<() => void>(ctx.save)
+ })
+ .exec()
diff --git a/test/app.test.ts b/test/app.test.ts
index e450cd9..751f166 100644
--- a/test/app.test.ts
+++ b/test/app.test.ts
@@ -39,6 +39,13 @@ App({
onPageNotFound(e) {
expectType(e.isEntryPage)
},
+ onUnhandledRejection({ reason, promise }) {
+ expectType(reason)
+ expectType>(promise)
+ },
+ onThemeChange(res) {
+ expectType<'dark' | 'light'>(res.theme)
+ },
})
expectType>>(getApp())
diff --git a/test/behavior.test.ts b/test/behavior.test.ts
index 146ef53..603ab83 100644
--- a/test/behavior.test.ts
+++ b/test/behavior.test.ts
@@ -1,6 +1,6 @@
-import { expectType, expectError } from 'tsd'
+import { expectType } from 'tsd'
-expectType(Behavior({}))
+expectType(Behavior({}))
Behavior({
behaviors: [],
@@ -31,7 +31,7 @@ Behavior({
attached() {},
methods: {
myBehaviorMethod() {
- expectError(this.created())
+ expectType(this.created)
expectType(this.data.text)
expectType(this.properties.text)
expectType(this.data.max)
diff --git a/test/component.test.ts b/test/component.test.ts
index c47f772..f15b9c4 100644
--- a/test/component.test.ts
+++ b/test/component.test.ts
@@ -1,4 +1,4 @@
-import { expectType, expectError } from 'tsd'
+import { expectType, expectError, expectNotAssignable } from 'tsd'
expectType(Component({}))
@@ -62,7 +62,7 @@ Component({
moved() {},
detached() {},
error(err) {
- expectType(err)
+ expectType(err)
},
},
@@ -99,6 +99,25 @@ Component({
expectType(oldVal)
},
},
+ export() {
+ expectType(this.is)
+ expectType(this.onMyButtonTap())
+ return {}
+ }
+})
+
+Component({
+ methods: {
+ f() {
+ this.triggerEvent('someEvent', {
+ a: 'test',
+ b: 123,
+ c: {
+ t: 'test',
+ },
+ })
+ },
+ },
})
expectError(
@@ -106,7 +125,7 @@ expectError(
custom: 1,
methods: {
f() {
- expectError(this.custom)
+ this.custom
},
},
}),
@@ -159,7 +178,7 @@ Component({
expectType(this.data.n2)
expectType(this.data.s)
expectType(this.data.a)
- expectType(this.data.a2)
+ expectType(this.data.a2)
expectType(this.data.b)
expectType>(this.data.o)
expectType(this.data.a[0])
@@ -199,7 +218,7 @@ Component({
expectType(this.data.n2)
expectType(this.data.s)
expectType(this.data.a)
- expectType(this.data.a2)
+ expectType(this.data.a2)
expectType(this.data.b)
expectType>(this.data.o)
expectType>(this.data.o2)
@@ -224,7 +243,7 @@ Component({
methods: {
f() {
expectType(this.data.n)
- expectType(this.data.a)
+ expectType(this.data.a)
},
},
})
@@ -288,3 +307,207 @@ Component({
onAChange() {},
},
})
+
+Component({
+ methods: {
+ animate() {
+ this.animate(
+ '#container',
+ [
+ { opacity: 1.0, rotate: 0, backgroundColor: '#FF0000' },
+ { opacity: 0.5, rotate: 45, backgroundColor: '#00FF00' },
+ { opacity: 0.0, rotate: 90, backgroundColor: '#FF0000' },
+ ],
+ 5000,
+ () => {
+ this.clearAnimation(
+ '#container',
+ { opacity: true, rotate: true },
+ function() {
+ console.log('清除了#container上的opacity和rotate属性')
+ },
+ )
+ },
+ )
+
+ this.animate(
+ '.block',
+ [
+ { scale: [1, 1], rotate: 0, ease: 'ease-out' },
+ { scale: [1.5, 1.5], rotate: 45, ease: 'ease-in', offset: 0.9 },
+ { scale: [2, 2], rotate: 90 },
+ ],
+ 5000,
+ () => {
+ this.clearAnimation('.block', function() {
+ console.log('清除了.block上的所有动画属性')
+ })
+ },
+ )
+ },
+ },
+})
+
+Component({
+ methods: {
+ animate() {
+ this.animate(
+ '.avatar',
+ [
+ {
+ borderRadius: '0',
+ borderColor: 'red',
+ transform: 'scale(1) translateY(-20px)',
+ offset: 0,
+ },
+ {
+ borderRadius: '25%',
+ borderColor: 'blue',
+ transform: 'scale(.65) translateY(-20px)',
+ offset: 0.5,
+ },
+ {
+ borderRadius: '50%',
+ borderColor: 'blue',
+ transform: 'scale(.3) translateY(-20px)',
+ offset: 1,
+ },
+ ],
+ 2000,
+ {
+ scrollSource: '#scroller',
+ timeRange: 2000,
+ startScrollOffset: 0,
+ endScrollOffset: 85,
+ },
+ )
+
+ this.animate(
+ '.search_input',
+ [
+ {
+ opacity: '0',
+ width: '0%',
+ },
+ {
+ opacity: '1',
+ width: '100%',
+ },
+ ],
+ 1000,
+ {
+ scrollSource: '#scroller',
+ timeRange: 1000,
+ startScrollOffset: 120,
+ endScrollOffset: 252,
+ },
+ )
+ },
+ },
+})
+
+Component({
+ methods: {
+ test() {
+ const channel = this.getOpenerEventChannel()
+ // `tsd` not yet supports error `ts2722`
+ // expectError(channel.emit('test', {}))
+ expectNotAssignable<(...args: any[]) => any>(channel.emit)
+ channel.emit?.('test', {})
+ expectError(channel.emit?.(1, 2))
+ channel.on?.('xxx', () => {})
+ if (typeof channel.emit === 'function') {
+ channel.on('xxx', () => {})
+ }
+ },
+ },
+})
+
+Component<{}, {}, { fn(): void }, []>({
+ methods: {
+ fn() {
+ expectError(this.notExists)
+ },
+ },
+})
+
+{
+ const data = {
+ a: 1,
+ b: '',
+ }
+ const properties = {
+ c: String,
+ d: {
+ type: Number,
+ value: 4,
+ },
+ }
+ Component<
+ typeof data,
+ typeof properties,
+ /* methods= */{ fn(): string },
+ /* behaviors= */ [],
+ /* customProperties= */{},
+ /* isPage= */true
+ >({
+ data,
+ properties,
+ methods: {
+ onLoad(q) {
+ expectType(Object.keys(q))
+ },
+ fn() {
+ expectType<() => (void | Promise)>(this.onShow)
+ expectError(this.notExists)
+ return 'test'
+ },
+ },
+ })
+}
+
+{
+ Component({
+ properties: {
+ b: {
+ type: Boolean,
+ value: true,
+ }
+ },
+ methods: {
+ test() {
+ expectType(this.data.b)
+ }
+ }
+ })
+}
+
+{
+ Component({
+ attached() {
+ this.setUpdatePerformanceListener({withDataPaths: true}, (res) => {
+ expectType(res.dataPaths)
+ expectType(res.updateProcessId)
+ })
+ this.setUpdatePerformanceListener({}, res => {
+ expectType(res.dataPaths)
+ expectType(res.updateProcessId)
+ })
+ this.setUpdatePerformanceListener({})
+ }
+ })
+}
+
+{
+ type CustomProperties = {
+ customProp: string
+ }
+ Component<{}, {}, {}, [], CustomProperties>({
+ lifetimes: {
+ created() {
+ this.customProp = 'customProp'
+ }
+ }
+ })
+}
+
diff --git a/test/computed.test.d.ts b/test/computed.test.d.ts
index b70db9e..ac157b0 100644
--- a/test/computed.test.d.ts
+++ b/test/computed.test.d.ts
@@ -12,24 +12,27 @@ declare namespace WechatMiniprogram {
D extends DataOption,
P extends PropertyOption,
M extends MethodOption,
- C extends ComputedOption
- > = Instance & { data: ComputedOptionToData }
+ C extends ComputedOption,
+ CustomProperty extends IAnyObject = Record,
+ > = Instance & { data: ComputedOptionToData }
type ComputedOptions<
D extends DataOption,
P extends PropertyOption,
M extends MethodOption,
- C extends ComputedOption
+ C extends ComputedOption,
+ CustomProperty extends IAnyObject = Record,
> = Partial> &
- ThisType> &
- Options
+ ThisType> &
+ Options
interface ComputedConstructor {
<
D extends DataOption,
P extends PropertyOption,
M extends MethodOption,
- C extends ComputedOption
+ C extends ComputedOption,
+ CustomProperty extends IAnyObject = Record,
>(
- options: ComputedOptions,
+ options: ComputedOptions,
): string
}
}
@@ -40,5 +43,6 @@ declare type ComputedOptions = WechatMiniprogram.Component.ComputedOptions<
IAnyObject,
IAnyObject,
IAnyObject,
+ IAnyObject,
IAnyObject
>
diff --git a/test/computed.test.ts b/test/computed.test.ts
index 68804a7..bef52de 100644
--- a/test/computed.test.ts
+++ b/test/computed.test.ts
@@ -2,7 +2,8 @@ import { expectType } from 'tsd'
///
-(Component as ComputedComponent)({
+const ComputedComponent = Component as ComputedComponent
+ComputedComponent({
properties: {
a: String,
},
@@ -23,7 +24,13 @@ import { expectType } from 'tsd'
},
})
-Behavior({
+type IMethods = {
+ _setData: WechatMiniprogram.Component.InstanceMethods<{}>['setData']
+}
+type ICustomProperty = {
+ _originalSetData: WechatMiniprogram.Component.InstanceMethods<{}>['setData']
+}
+Behavior<{}, {}, IMethods, [], ICustomProperty>({
lifetimes: {
created() {
this._originalSetData = this.setData
diff --git a/test/issue.test.ts b/test/issue.test.ts
index c79d636..08e0d96 100644
--- a/test/issue.test.ts
+++ b/test/issue.test.ts
@@ -1,4 +1,4 @@
-import { expectType } from 'tsd'
+import { expectError, expectType } from 'tsd'
// https://github.com/wechat-miniprogram/api-typings/issues/11
expectType(wx.env.USER_DATA_PATH)
@@ -174,7 +174,7 @@ wx.request({
f?: () => string
g: () => void
}
- type Dialog = WechatMiniprogram.Component.Instance<{}, {}, IDialogMethod>
+ type Dialog = WechatMiniprogram.Component.Instance<{}, {}, IDialogMethod, []>
Page({
f() {
const comp = this.selectComponent('#comp') as Dialog
@@ -206,9 +206,14 @@ import WX = WechatMiniprogram
// https://github.com/wechat-miniprogram/api-typings/issues/88
{
- wx.canvasToTempFilePath({ canvas: '#canvas' })
+ wx.createSelectorQuery()
+ .select('#canvas')
+ .fields({ node: true })
+ .exec(res => {
+ wx.canvasToTempFilePath({ canvas: res[0].node })
+ wx.canvasToTempFilePath({ canvas: res[0].node, quality: 0.5 })
+ })
wx.canvasToTempFilePath({ canvasId: '' })
- wx.canvasToTempFilePath({ canvas: '', quality: 0.5 })
}
// https://github.com/wechat-miniprogram/api-typings/issues/89
@@ -227,3 +232,427 @@ import WX = WechatMiniprogram
},
})
}
+
+// https://github.com/wechat-miniprogram/api-typings/issues/95
+{
+ Page({
+ ctx: {} as WechatMiniprogram.CameraContext,
+ onLoad() {
+ this.ctx = wx.createCameraContext()
+ },
+ takePhoto() {
+ this.ctx.takePhoto({
+ quality: 'high',
+ success: res => {
+ expectType(res.tempImagePath)
+ this.setData({
+ src: res.tempImagePath,
+ })
+ },
+ })
+ },
+ startRecord() {
+ this.ctx.startRecord({
+ success: res => {
+ expectType(res.errMsg)
+ console.log('startRecord')
+ },
+ })
+ },
+ stopRecord() {
+ this.ctx.stopRecord({
+ success: res => {
+ expectType(res.tempThumbPath)
+ expectType(res.tempVideoPath)
+ this.setData({
+ src: res.tempThumbPath,
+ videoSrc: res.tempVideoPath,
+ })
+ },
+ })
+ },
+ })
+}
+
+// https://github.com/wechat-miniprogram/api-typings/issues/133
+{
+ type IData = {
+ name: string
+ }
+ type IProperty = {
+ id: typeof Number
+ }
+ type IMethod = {
+ setJob(job: string): void
+ }
+ type IBehavior = []
+ type ICustomInstanceProperty = {
+ job: string
+ }
+ Component({
+ properties: {
+ id: Number,
+ },
+
+ data: {
+ name: '',
+ },
+
+ methods: {
+ setJob(job) {
+ this.job = job
+ expectType(this.job)
+ },
+ },
+ })
+}
+
+// https://github.com/wechat-miniprogram/api-typings/issues/134
+{
+ const ctx = wx.createMapContext('map')
+ ctx.getRegion({
+ success(res) {
+ expectType(res.southwest.longitude)
+ expectType(res.southwest.latitude)
+ expectType(res.northeast.longitude)
+ expectType(res.northeast.latitude)
+ },
+ })
+}
+
+// https://github.com/wechat-miniprogram/api-typings/issues/135
+{
+ App({
+ onThemeChange(res) {
+ expectType<'light' | 'dark'>(res.theme)
+ },
+ })
+}
+
+// https://github.com/wechat-miniprogram/api-typings/issues/136
+{
+ Page({
+ onAddToFavorites(res) {
+ if (res.webviewUrl) {
+ // webview 页面返回 webviewUrl
+ expectType(res.webviewUrl)
+ }
+ return {
+ title: '自定义标题',
+ imageUrl: 'http://demo.png',
+ query: 'name=xxx&age=xxx',
+ }
+ },
+ })
+}
+
+// https://github.com/wechat-miniprogram/api-typings/issues/154
+{
+ wx.requestPayment({
+ timeStamp: '',
+ nonceStr: '',
+ package: '',
+ signType: 'MD5',
+ paySign: '',
+ })
+ wx.requestPayment({
+ timeStamp: '',
+ nonceStr: '',
+ package: '',
+ signType: 'RSA',
+ paySign: '',
+ })
+}
+
+// https://github.com/wechat-miniprogram/api-typings/issues/157
+// Test case for #157 is removed since `wx.saveFile` is no longer supported
+
+// https://github.com/wechat-miniprogram/api-typings/issues/159
+{
+ Page({
+ onShareTimeline() {
+ return {
+ title: '',
+ query: '',
+ imageUrl: '',
+ }
+ },
+ })
+}
+
+// https://github.com/wechat-miniprogram/api-typings/issues/161
+{
+ Component({
+ properties: {
+ bar: {
+ type: Object,
+ value: { skuNum: 0 },
+ observer () {}
+ }
+ },
+ data: {
+ foo: 123,
+ },
+ methods: {
+ getDataOrPoperty() {
+ return this.data.foo
+ },
+ test() {
+ expectType<{
+ skuNum: number
+ }>(this.data.bar)
+ expectType(this.getDataOrPoperty())
+ },
+ }
+ })
+}
+
+// https://github.com/wechat-miniprogram/api-typings/issues/164
+{
+ requirePlugin('myPlugin')
+ requireMiniProgram()
+}
+
+// https://github.com/wechat-miniprogram/api-typings/issues/175
+{
+ wx.requestSubscribeMessage({
+ tmplIds: ['1', '2'],
+ success: (res) => {
+ expectType(res.errMsg)
+ expectType(res.whatever)
+ expectType(res.randomTemplateId)
+ },
+ })
+}
+
+// https://github.com/wechat-miniprogram/api-typings/issues/204
+{
+ Page({
+ test() {
+ const observer = wx.createIntersectionObserver(this)
+ observer.observe('', e => {
+ expectType(e.id)
+ expectType>(e.dataset)
+ })
+ }
+ })
+}
+
+// https://github.com/wechat-miniprogram/api-typings/issues/189
+{
+ const offscreenCanvas = wx.createOffscreenCanvas(800, 600)
+ expectType(offscreenCanvas.height)
+ expectType(offscreenCanvas.width)
+}
+
+// https://github.com/wechat-miniprogram/api-typings/issues/332
+{
+ Component({
+ data: {
+ a: ''
+ },
+ methods: {
+ test() {
+ expectError(this.data.xxx)
+ },
+ }
+ })
+}
+
+// https://github.com/wechat-miniprogram/api-typings/issues/332
+{
+ interface Foo {
+ f: string
+ }
+
+ Component({
+ properties: {
+ bar: {
+ type: Object,
+ value: { f: '' } as Foo,
+ observer () {}
+ },
+ foo: {
+ type: Array,
+ value: [] as Foo[],
+ }
+ },
+ methods: {
+ getData() {
+ return this.data.foo
+ },
+ test() {
+ expectType(this.data.bar)
+ expectType(this.properties.bar)
+ expectType(this.getData())
+ },
+ }
+ })
+}
+
+// https://github.com/wechat-miniprogram/api-typings/issues/332
+{
+ const bA = Behavior({
+ properties: {
+ pA: {
+ type: String,
+ value: '',
+ },
+ pA1: Boolean
+ },
+ data: {
+ dataA: 'init data',
+ },
+ methods: {
+ methodA() {
+ return this.data.dataA
+ },
+ },
+ })
+ const bB = Behavior({
+ properties: {
+ pB: {
+ type: Array,
+ value: [] as string[],
+ }
+ },
+ data: {
+ dataB: [] as string[],
+ },
+ methods: {
+ methodB() {
+ return this.data.dataB
+ },
+ },
+ })
+
+ Component({
+ behaviors: [bA, bB],
+ methods: {
+ test() {
+ expectType(this.data.pA)
+ expectType(this.data.pA1)
+ expectType(this.data.dataA)
+ expectType(this.data.pB)
+ expectType(this.data.dataB)
+ expectType(this.methodA())
+ expectType(this.methodB())
+ },
+ }
+ })
+}
+// https://github.com/wechat-miniprogram/api-typings/issues/332#issuecomment-2333434425
+{
+ const b1 = Behavior({
+ properties: {
+ pA: {
+ type: String,
+ value: '',
+ },
+ pA1: Boolean
+ },
+ data: {
+ dataA: 'init data',
+ },
+ methods: {
+ methodA() {
+ return this.data.dataA
+ },
+ },
+ })
+ const b2 = Behavior({
+ behaviors: [b1],
+ properties: {
+ pB: {
+ type: Array,
+ value: [] as string[],
+ }
+ },
+ data: {
+ dataB: [] as string[],
+ },
+ methods: {
+ methodB() {
+ return this.data.dataB
+ },
+ test() {
+ expectType(this.data.pA)
+ expectType(this.data.pA1)
+ expectType(this.data.dataA)
+ expectType(this.methodA())
+ },
+ },
+ })
+
+ Component({
+ behaviors: [b2],
+ methods: {
+ test() {
+ expectType(this.data.pA)
+ expectType(this.data.pA1)
+ expectType(this.data.dataA)
+ expectType(this.data.pB)
+ expectType(this.data.dataB)
+ expectType