sentry-uniapp 1.0.10 → 1.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/README.md +107 -140
  2. package/dist/backend.d.ts.map +1 -1
  3. package/dist/backend.js.map +1 -1
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js +3 -0
  6. package/dist/client.js.map +1 -1
  7. package/dist/crossPlatform.d.ts +1 -1
  8. package/dist/integrations/globalhandlers.d.ts.map +1 -1
  9. package/dist/integrations/globalhandlers.js +13 -5
  10. package/dist/integrations/globalhandlers.js.map +1 -1
  11. package/dist/package.json +52 -0
  12. package/dist/sdk.d.ts +1 -1
  13. package/dist/sdk.d.ts.map +1 -1
  14. package/dist/sdk.js +0 -1
  15. package/dist/sdk.js.map +1 -1
  16. package/dist/sentry-uniapp.min.js +2 -16
  17. package/dist/sentry-uniapp.min.js.LICENSE.txt +14 -0
  18. package/dist/sentry-uniapp.min.js.map +1 -1
  19. package/dist/src/backend.d.ts +41 -0
  20. package/dist/src/backend.d.ts.map +1 -0
  21. package/dist/src/backend.js +68 -0
  22. package/dist/src/backend.js.map +1 -0
  23. package/dist/src/client.d.ts +55 -0
  24. package/dist/src/client.d.ts.map +1 -0
  25. package/dist/src/client.js +51 -0
  26. package/dist/src/client.js.map +1 -0
  27. package/dist/src/crossPlatform.d.ts +18 -0
  28. package/dist/src/crossPlatform.d.ts.map +1 -0
  29. package/dist/src/crossPlatform.js +80 -0
  30. package/dist/src/crossPlatform.js.map +1 -0
  31. package/dist/src/eventbuilder.d.ts +11 -0
  32. package/dist/src/eventbuilder.d.ts.map +1 -0
  33. package/dist/src/eventbuilder.js +79 -0
  34. package/dist/src/eventbuilder.js.map +1 -0
  35. package/dist/src/flags.d.ts +3 -0
  36. package/dist/src/flags.d.ts.map +1 -0
  37. package/dist/src/flags.js +18 -0
  38. package/dist/src/flags.js.map +1 -0
  39. package/dist/src/helpers.d.ts +35 -0
  40. package/dist/src/helpers.d.ts.map +1 -0
  41. package/dist/src/helpers.js +236 -0
  42. package/dist/src/helpers.js.map +1 -0
  43. package/dist/src/index.d.ts +10 -0
  44. package/dist/src/index.d.ts.map +1 -0
  45. package/dist/src/index.js +40 -0
  46. package/dist/src/index.js.map +1 -0
  47. package/dist/src/integrations/globalhandlers.d.ts +47 -0
  48. package/dist/src/integrations/globalhandlers.d.ts.map +1 -0
  49. package/dist/src/integrations/globalhandlers.js +153 -0
  50. package/dist/src/integrations/globalhandlers.js.map +1 -0
  51. package/dist/src/integrations/ignoreMpcrawlerErrors.d.ts +21 -0
  52. package/dist/src/integrations/ignoreMpcrawlerErrors.d.ts.map +1 -0
  53. package/dist/src/integrations/ignoreMpcrawlerErrors.js +40 -0
  54. package/dist/src/integrations/ignoreMpcrawlerErrors.js.map +1 -0
  55. package/dist/src/integrations/index.d.ts +7 -0
  56. package/dist/src/integrations/index.d.ts.map +1 -0
  57. package/dist/src/integrations/index.js +14 -0
  58. package/dist/src/integrations/index.js.map +1 -0
  59. package/dist/src/integrations/linkederrors.d.ts +40 -0
  60. package/dist/src/integrations/linkederrors.d.ts.map +1 -0
  61. package/dist/src/integrations/linkederrors.js +65 -0
  62. package/dist/src/integrations/linkederrors.js.map +1 -0
  63. package/dist/src/integrations/router.d.ts +28 -0
  64. package/dist/src/integrations/router.d.ts.map +1 -0
  65. package/dist/src/integrations/router.js +47 -0
  66. package/dist/src/integrations/router.js.map +1 -0
  67. package/dist/src/integrations/system.d.ts +17 -0
  68. package/dist/src/integrations/system.d.ts.map +1 -0
  69. package/dist/src/integrations/system.js +65 -0
  70. package/dist/src/integrations/system.js.map +1 -0
  71. package/dist/src/integrations/trycatch.d.ts +26 -0
  72. package/dist/src/integrations/trycatch.d.ts.map +1 -0
  73. package/dist/src/integrations/trycatch.js +166 -0
  74. package/dist/src/integrations/trycatch.js.map +1 -0
  75. package/dist/src/parsers.d.ts +21 -0
  76. package/dist/src/parsers.d.ts.map +1 -0
  77. package/dist/src/parsers.js +97 -0
  78. package/dist/src/parsers.js.map +1 -0
  79. package/dist/src/sdk.d.ts +99 -0
  80. package/dist/src/sdk.d.ts.map +1 -0
  81. package/dist/src/sdk.js +155 -0
  82. package/dist/src/sdk.js.map +1 -0
  83. package/dist/src/tracekit.d.ts +38 -0
  84. package/dist/src/tracekit.d.ts.map +1 -0
  85. package/dist/src/tracekit.js +222 -0
  86. package/dist/src/tracekit.js.map +1 -0
  87. package/dist/src/transports/base.d.ts +22 -0
  88. package/dist/src/transports/base.d.ts.map +1 -0
  89. package/dist/src/transports/base.js +28 -0
  90. package/dist/src/transports/base.js.map +1 -0
  91. package/dist/src/transports/index.d.ts +3 -0
  92. package/dist/src/transports/index.d.ts.map +1 -0
  93. package/dist/src/transports/index.js +6 -0
  94. package/dist/src/transports/index.js.map +1 -0
  95. package/dist/src/transports/xhr.d.ts +10 -0
  96. package/dist/src/transports/xhr.d.ts.map +1 -0
  97. package/dist/src/transports/xhr.js +42 -0
  98. package/dist/src/transports/xhr.js.map +1 -0
  99. package/dist/src/version.d.ts +3 -0
  100. package/dist/src/version.d.ts.map +1 -0
  101. package/dist/src/version.js +6 -0
  102. package/dist/src/version.js.map +1 -0
  103. package/dist/utils/debug-build.d.ts +7 -0
  104. package/dist/utils/debug-build.d.ts.map +1 -0
  105. package/dist/utils/debug-build.js +9 -0
  106. package/dist/utils/debug-build.js.map +1 -0
  107. package/dist/utils/logger.d.ts +16 -0
  108. package/dist/utils/logger.d.ts.map +1 -0
  109. package/dist/utils/logger.js +50 -0
  110. package/dist/utils/logger.js.map +1 -0
  111. package/dist/version.d.ts +2 -2
  112. package/dist/version.d.ts.map +1 -1
  113. package/dist/version.js +3 -2
  114. package/dist/version.js.map +1 -1
  115. package/esm/backend.d.ts.map +1 -1
  116. package/esm/backend.js.map +1 -1
  117. package/esm/client.d.ts.map +1 -1
  118. package/esm/client.js +3 -0
  119. package/esm/client.js.map +1 -1
  120. package/esm/integrations/globalhandlers.d.ts.map +1 -1
  121. package/esm/integrations/globalhandlers.js +13 -5
  122. package/esm/integrations/globalhandlers.js.map +1 -1
  123. package/esm/package.json +52 -0
  124. package/esm/sdk.d.ts.map +1 -1
  125. package/esm/sdk.js +0 -1
  126. package/esm/sdk.js.map +1 -1
  127. package/esm/src/backend.d.ts +41 -0
  128. package/esm/src/backend.d.ts.map +1 -0
  129. package/esm/src/backend.js +66 -0
  130. package/esm/src/backend.js.map +1 -0
  131. package/esm/src/client.d.ts +55 -0
  132. package/esm/src/client.d.ts.map +1 -0
  133. package/esm/src/client.js +49 -0
  134. package/esm/src/client.js.map +1 -0
  135. package/esm/src/crossPlatform.d.ts +18 -0
  136. package/esm/src/crossPlatform.d.ts.map +1 -0
  137. package/esm/src/crossPlatform.js +77 -0
  138. package/esm/src/crossPlatform.js.map +1 -0
  139. package/esm/src/eventbuilder.d.ts +11 -0
  140. package/esm/src/eventbuilder.d.ts.map +1 -0
  141. package/esm/src/eventbuilder.js +75 -0
  142. package/esm/src/eventbuilder.js.map +1 -0
  143. package/esm/src/flags.d.ts +3 -0
  144. package/esm/src/flags.d.ts.map +1 -0
  145. package/esm/src/flags.js +16 -0
  146. package/esm/src/flags.js.map +1 -0
  147. package/esm/src/helpers.d.ts +35 -0
  148. package/esm/src/helpers.d.ts.map +1 -0
  149. package/esm/src/helpers.js +229 -0
  150. package/esm/src/helpers.js.map +1 -0
  151. package/esm/src/index.d.ts +10 -0
  152. package/esm/src/index.d.ts.map +1 -0
  153. package/esm/src/index.js +9 -0
  154. package/esm/src/index.js.map +1 -0
  155. package/esm/src/integrations/globalhandlers.d.ts +47 -0
  156. package/esm/src/integrations/globalhandlers.d.ts.map +1 -0
  157. package/esm/src/integrations/globalhandlers.js +151 -0
  158. package/esm/src/integrations/globalhandlers.js.map +1 -0
  159. package/esm/src/integrations/ignoreMpcrawlerErrors.d.ts +21 -0
  160. package/esm/src/integrations/ignoreMpcrawlerErrors.d.ts.map +1 -0
  161. package/esm/src/integrations/ignoreMpcrawlerErrors.js +38 -0
  162. package/esm/src/integrations/ignoreMpcrawlerErrors.js.map +1 -0
  163. package/esm/src/integrations/index.d.ts +7 -0
  164. package/esm/src/integrations/index.d.ts.map +1 -0
  165. package/esm/src/integrations/index.js +7 -0
  166. package/esm/src/integrations/index.js.map +1 -0
  167. package/esm/src/integrations/linkederrors.d.ts +40 -0
  168. package/esm/src/integrations/linkederrors.d.ts.map +1 -0
  169. package/esm/src/integrations/linkederrors.js +63 -0
  170. package/esm/src/integrations/linkederrors.js.map +1 -0
  171. package/esm/src/integrations/router.d.ts +28 -0
  172. package/esm/src/integrations/router.d.ts.map +1 -0
  173. package/esm/src/integrations/router.js +45 -0
  174. package/esm/src/integrations/router.js.map +1 -0
  175. package/esm/src/integrations/system.d.ts +17 -0
  176. package/esm/src/integrations/system.d.ts.map +1 -0
  177. package/esm/src/integrations/system.js +63 -0
  178. package/esm/src/integrations/system.js.map +1 -0
  179. package/esm/src/integrations/trycatch.d.ts +26 -0
  180. package/esm/src/integrations/trycatch.d.ts.map +1 -0
  181. package/esm/src/integrations/trycatch.js +164 -0
  182. package/esm/src/integrations/trycatch.js.map +1 -0
  183. package/esm/src/parsers.d.ts +21 -0
  184. package/esm/src/parsers.d.ts.map +1 -0
  185. package/esm/src/parsers.js +91 -0
  186. package/esm/src/parsers.js.map +1 -0
  187. package/esm/src/sdk.d.ts +99 -0
  188. package/esm/src/sdk.d.ts.map +1 -0
  189. package/esm/src/sdk.js +147 -0
  190. package/esm/src/sdk.js.map +1 -0
  191. package/esm/src/tracekit.d.ts +38 -0
  192. package/esm/src/tracekit.d.ts.map +1 -0
  193. package/esm/src/tracekit.js +219 -0
  194. package/esm/src/tracekit.js.map +1 -0
  195. package/esm/src/transports/base.d.ts +22 -0
  196. package/esm/src/transports/base.d.ts.map +1 -0
  197. package/esm/src/transports/base.js +26 -0
  198. package/esm/src/transports/base.js.map +1 -0
  199. package/esm/src/transports/index.d.ts +3 -0
  200. package/esm/src/transports/index.d.ts.map +1 -0
  201. package/esm/src/transports/index.js +3 -0
  202. package/esm/src/transports/index.js.map +1 -0
  203. package/esm/src/transports/xhr.d.ts +10 -0
  204. package/esm/src/transports/xhr.d.ts.map +1 -0
  205. package/esm/src/transports/xhr.js +40 -0
  206. package/esm/src/transports/xhr.js.map +1 -0
  207. package/esm/src/version.d.ts +3 -0
  208. package/esm/src/version.d.ts.map +1 -0
  209. package/esm/src/version.js +4 -0
  210. package/esm/src/version.js.map +1 -0
  211. package/esm/utils/debug-build.d.ts +7 -0
  212. package/esm/utils/debug-build.d.ts.map +1 -0
  213. package/esm/utils/debug-build.js +7 -0
  214. package/esm/utils/debug-build.js.map +1 -0
  215. package/esm/utils/logger.d.ts +25 -0
  216. package/esm/utils/logger.d.ts.map +1 -0
  217. package/esm/utils/logger.js +42 -0
  218. package/esm/utils/logger.js.map +1 -0
  219. package/esm/version.d.ts +2 -2
  220. package/esm/version.d.ts.map +1 -1
  221. package/esm/version.js +3 -2
  222. package/esm/version.js.map +1 -1
  223. package/package.json +4 -4
package/README.md CHANGED
@@ -1,86 +1,68 @@
1
- # Sentry 小程序 SDK
1
+ # sentry Uniapp SDK
2
2
 
3
- Sentry SDK 的封装,可用于Uniapp全端,及微信小程序,抖音小程序,百度小程序等各家平台。
3
+ `sentry Uniapp SDK` 的封装,可用于 Uniapp 全端,包含app, h5,微信小程序,抖音小程序,百度小程序等各家平台。
4
4
 
5
- > 提示:由于快应用 require 方式特殊性,webpack是在编译期处理的,所以动态代码检测无效,使用时去更改webpack配置也增加了复杂行,所以单独维护,包名为 sentry-quickapp。
5
+ 同时支持 Uniapp vue2 / vue3 工程。
6
+
7
+ > 提示:由于快应用 require 方式特殊性,webpack是在编译期处理的,动态代码检测无效,所以单独维护,包名为 sentry-quickapp。
6
8
 
7
9
  快应用项目可参考:
8
10
 
9
11
  <https://github.com/uappkit/sentry-quickapp>
10
12
 
11
- ## 功能特点
12
-
13
- - [x] 基于 [sentry-javascript 最新的基础模块](https://www.yuque.com/lizhiyao/dxy/zevhf1#0GMCN) 封装
14
- - [x] 遵守[官方统一的 API 设计文档](https://www.yuque.com/lizhiyao/dxy/gc3b9r#vQdTs),使用方式和官方保持一致
15
- - [x] 使用 [TypeScript](https://www.typescriptlang.org/) 进行编写
16
- - [x] 包含 Sentry SDK(如:[@sentry/browser](https://github.com/getsentry/sentry-javascript/tree/master/packages/browser))的所有基础功能
17
- - [x] 支持 `ES6`、`CommonJS` 两种模块系统(支持小程序原生开发方式、使用小程序框架开发方式两种开发模式下使用)
18
- - [x] 默认监听并上报小程序的 onError、onUnhandledRejection、onPageNotFound、onMemoryWarning 事件返回的信息(各事件支持程度与对应各小程序官方保持一致)
19
- - [x] 默认上报运行小程序的设备、操作系统、应用版本信息
20
- - [x] 支持微信小程序
21
- - [x] 支持微信小游戏
22
- - [x] 支持字节跳动小程序
23
- - [x] 支持支付宝小程序
24
- - [x] 支持钉钉小程序
25
- - [x] 支持百度小程序
26
- - [x] 支持快应用
27
- - [x] 支持在 [Taro](https://taro.aotu.io/) 等第三方小程序框架中使用
28
- - [x] 默认上报异常发生时的路由栈
29
- - [ ] 完善的代码测试
30
-
31
13
  ## 用法
32
14
 
33
- 支持两种使用方式:
34
-
35
- - 直接引用
36
- - 通过 npm 方式使用(推荐)
37
-
38
- ### 注意
39
-
40
- 1. 无论选择哪种使用方式,都需要开启「微信开发者工具 - 设置 - 项目设置 - 增强编译」功能
41
- 2. 使用前需要确保有可用的 `Sentry Service`,比如:使用 [官方 Sentry Service](https://sentry.io/welcome/) 服务 或[自己搭建 Sentry Service](https://docs.sentry.io/server/)。如果想直接将异常信息上报到 <https://sentry.io/>,由于其没有备案,可以先将异常信息上报给自己已备案域名下的服务端接口,由服务端进行请求转发。
42
- 3. 在小程序管理后台配置 `Sentry Service` 对应的 `request` 合法域名
43
-
44
- ### 直接引用
45
-
46
- 1. 微信小程序和微信小游戏下载 [sentry-uniapp.wx.min.js](https://github.com/uappkit/sentry-uniapp/blob/master/examples/weapp/vendor/sentry-uniapp.wx.min.js);字节跳动小程序下载 [sentry-uniapp.tt.min.js](https://github.com/uappkit/sentry-uniapp/blob/master/examples/ttapp/vendor/sentry-uniapp.tt.min.js);支付宝小程序下载 [sentry-uniapp.my.min.js](https://github.com/uappkit/sentry-uniapp/blob/master/examples/myapp/vendor/sentry-uniapp.my.min.js),钉钉小程序下载 [sentry-uniapp.dd.min.js](https://github.com/uappkit/sentry-uniapp/blob/master/examples/ddapp/vendor/sentry-uniapp.dd.min.js)
47
- 2. 参照 `/examples` 中各项目使用方式,将 `sentry-uniapp.xx.min.js` 放入项目的合适目录中,比如放入 `vendor` 文件夹
48
- 3. 参照 `/examples/app.js` 代码,进行 `Sentry` 的初始化
49
- 4. 对于提供了微信、字节跳动小程序 `sentry-uniapp` 会自动上报 `xx.onError()` 捕获的异常,对于支付宝小程序需要应用开发者在 `App.onError()` 中主动进行异常上报。详情可见 `/docs/cross-platform.md`。
50
-
51
- ### npm 方式
52
-
53
- 注意:目前字节跳动小程序不支持 npm 方式。
54
-
55
15
  1. 安装依赖
56
16
 
57
17
  ```bash
58
- npm install sentry-uniapp --save
59
- # 或者
60
- yarn add sentry-uniapp
18
+ npm install sentry-uniapp
61
19
  ```
62
20
 
63
- 2. 使用「微信开发者工具 - 工具 - 构建 npm」进行构建,详情可参考[npm 支持](https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html)
64
-
65
- 3. `app.js` 中引用并初始化 `Sentry`,根据实际需求设置上报到 Sentry 的元信息
66
-
67
- ```js
68
- import * as Sentry from "sentry-uniapp";
21
+ 2. `App.vue => onLaunch` 中初始化
22
+
23
+ 注意替换下方代码里的 `__DSN__`,并仔细阅读注释说明和常见问题
24
+
25
+ ```js
26
+ export default {
27
+ onLaunch: function () {
28
+ console.log('App Launch');
29
+ sentry.init({
30
+ // __DSN__ 参考格式: https://8137b89b2d1c4e349da3a38dca80c5fe@sentry.io/1
31
+ dsn: '__DSN__',
32
+
33
+ // extraOptions 主要是解决平台差异问题的,见下方说明
34
+ // 非 APP 平台,可以不实用
35
+ extraOptions: { onmemorywarning: false, onerror: false }
36
+ });
37
+
38
+ // 代码上报,extra 为可选的自定义对象内容
39
+ sentry.captureMessage('custom message from ' + uni.getSystemInfoSync().platform, {
40
+ UserId: 123,
41
+ Command: 'npm i -g uapp'
42
+ });
43
+
44
+ // 触发一个未定义函数的错误
45
+ balabala();
46
+ },
47
+
48
+ // sentry-uniapp 内部是通过 uni.onError 钩子函数捕获错误的
49
+ // 但目前 uni.onError 暂不支持 App (android / ios),各平台支持情况参考:
50
+ // https://uniapp.dcloud.net.cn/api/application.html#onerror
51
+ //
52
+ // 通用方案:
53
+ // 可用 App.onError 自己处理,但需要先禁用 sentry 里的捕获
54
+ // 方法在 sentry.init 参数里加上 extraOptions: { onerror: false }
55
+ onError: function (e) {
56
+ sentry.captureException(e);
57
+ }
58
+ }
59
+ ```
69
60
 
70
- // init Sentry
71
- // init options: https://github.com/getsentry/sentry-javascript/blob/master/packages/types/src/options.ts
72
- // extraOptions 可以禁用哪些监听事件,定义见: GlobalHandlersIntegrations
73
- // 例如出现 LOG: API `onMemoryWarning` is not yet implemented,可通过 `onmemorywarning: false` 关闭
74
- Sentry.init({
75
- dsn: "__DSN__",
76
- extraOptions: {
77
- onmemorywarning: false,
78
- },
79
- // ...
80
- });
61
+ ***其他可选配置***
81
62
 
63
+ ```js
82
64
  // Set user information, as well as tags and further extras
83
- Sentry.configureScope((scope) => {
65
+ sentry.configureScope((scope) => {
84
66
  scope.setExtra("battery", 0.7);
85
67
  scope.setTag("user_mode", "admin");
86
68
  scope.setUser({ id: "4711" });
@@ -88,124 +70,109 @@ Sentry SDK 的封装,可用于Uniapp全端,及微信小程序,抖音小程
88
70
  });
89
71
 
90
72
  // Add a breadcrumb for future events
91
- Sentry.addBreadcrumb({
73
+ sentry.addBreadcrumb({
92
74
  message: "My Breadcrumb",
93
75
  // ...
94
76
  });
95
77
 
96
78
  // Capture exceptions, messages or manual events
97
79
  // Error 无法定义标题,可以用下面的 captureMessage
98
- Sentry.captureException(new Error("Good bye"));
80
+ sentry.captureException(new Error("Good bye"));
99
81
 
100
- // captureMessage 可以定制消息标题
101
- // extra 为附加的对象内容
102
- Sentry.captureMessage("message title", {
82
+ // captureMessage 可以定制消息标题,extra 为附加的对象内容
83
+ sentry.captureMessage("message title", {
103
84
  extra
104
85
  });
105
86
 
106
- Sentry.captureEvent({
87
+ sentry.captureEvent({
107
88
  message: "Manual",
108
89
  stacktrace: [
109
90
  // ...
110
91
  ],
111
92
  });
112
- ```
113
-
114
- ## 开发
115
-
116
- ### 知识储备
117
-
118
- 开发前请仔细阅读下面内容:
119
-
120
- - [sentry-javascript README 中文版](https://www.yuque.com/lizhiyao/dxydance/sentry-javascript-readme-cn)
121
- - [Sentry 开发指南](https://www.yuque.com/lizhiyao/dxydance/sentry-develop-guide)
122
- - [sentry-javascript 源码阅读](https://www.yuque.com/lizhiyao/dxydance/sentry-javascript-src)
93
+ ```
123
94
 
124
- #### sentry-core 设计图
95
+ ## 参考示例
125
96
 
126
- ![Dashboard](docs/sentry-core.png)
97
+ 项目代码里的 `uapp-demo`,通过 HBuilderX 打开即可
127
98
 
128
- #### sentry-hub 设计图
99
+ ![pass](./assets/sentry-screetshot.png)
129
100
 
130
- ![Dashboard](docs/sentry-hub.png)
101
+ ## 常见问题
131
102
 
132
- #### sentry-uniapp 设计图
103
+ 1、大多数本地环境问题,成功安装后,目录结构如下图:
133
104
 
134
- ![Dashboard](docs/sentry-uniapp.png)
105
+ ![project](./assets/project.png)
135
106
 
136
- ### 相关命令
107
+ 先通过 sentry.captureMessage 确认能上报成功,如果收不到,
137
108
 
138
- ```bash
139
- # 根据 package.json 中的版本号更新 SDK 源码中的版本号
140
- npm run version
109
+ * 可检测 `__DSN__` 是否正确
110
+ * 检测网络,最好通过配置代理拦截下网络请求是否存在
141
111
 
142
- # 构建供小程序直接引用的 sentry-uniapp.xx.min.js;在本地可直接使用开发者工具打开 examples 下具体项目进行调试
143
- npm run build:dist
112
+ 2、提示 onmemorywarning 未实现错误
144
113
 
145
- # 构建用于发布到 npm dist & esm 资源
146
- npm run build
114
+ > API `onMemoryWarning` is not yet implemented __ERROR
147
115
 
148
- # 构建用于发布到 npm esm 资源
149
- npm run build:esm
116
+ 有的平台不支持 `memorywarning` 的监听,可以 sentry.init 里禁用:
150
117
 
151
- # 发布到 npm
152
- npm publish --registry=https://registry.npmjs.org/
118
+ ```.js
119
+ sentry.init({
120
+ dsn: '__DSN__',
121
+ extraOptions: { onmemorywarning: false }
122
+ });
153
123
  ```
154
124
 
155
- ## 效果图
156
-
157
- ![Dashboard](docs/screenshot/sentry-admin.png)
158
- ![Error00](docs/screenshot/sentry-error-00.png)
159
- ![Error01](docs/screenshot/sentry-error-01.png)
160
- ![Error02](docs/screenshot/sentry-error-02.png)
161
-
162
- ## 谁在使用 sentry-uniapp
125
+ 3、暂不支持 sentry.init 开启 debug,移除 或设置 false
163
126
 
164
- ### 微信小程序
127
+ > [Vue warn]: Error in onLaunch hook: "TypeError: undefined is not an object (evaluating '(_a = global.console)[name]')"[ERROR] : [Vue warn]: Error in onLaunch hook: "TypeError: undefined is not an object (evaluating '(_a = global.console)[name]')"(found at App.vue:1) __ERROR
165
128
 
166
- - 丁香医生
167
- - 丁香医生医生端
168
- - 丁香人才
169
- - 丁香家
170
-
171
- ### 支付宝小程序
172
-
173
- - 丁香医生
174
-
175
- ### 字节跳动小程序
129
+ ```.js
130
+ sentry.init({
131
+ dsn: '__DSN__',
132
+ debug: false,
133
+ });
134
+ ```
176
135
 
177
- - 丁香医生
136
+ 4、代码异常没有自动上报的,可查看 HBuilderX 的 log 窗口,区分以下两种错误情况
178
137
 
179
- ## 参考资料
138
+ [JS Framework] 开头,由 framewrok 底层拦截 `不会触发 sentry 上报`,错误信息如下:
180
139
 
181
- - [sentry-javascript](https://github.com/getsentry/sentry-javascript)
182
- - [Sentry Getting Started](https://docs.sentry.io/error-reporting/quickstart/?platform=browsernpm)
183
- - [Sentry JavaScript SDKs](http://getsentry.github.io/sentry-javascript/)
184
- - [Sentry TypeScript Configuration](https://github.com/getsentry/sentry-javascript/tree/master/packages/typescript)
185
- - [wx.request](https://developers.weixin.qq.com/miniprogram/dev/api/network/request/wx.request.html)
186
- - [小程序 App](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html)
187
- - [wx.onError、App.onError 疑惑及如何捕获 Promise 异常?](https://developers.weixin.qq.com/community/develop/doc/000c8cf5794770272709f38a756000)
188
- - [shields.io](https://shields.io/)
189
- - [字节跳动小程序文档](https://developer.toutiao.com/docs/framework/)
190
- - [支付宝小程序文档](https://docs.alipay.com/mini/developer)
191
- - [tt.onError 的疑问](http://forum.microapp.bytedance.com/topic/2806/tt-onerror-%E7%96%91%E9%97%AE)
140
+ > [JS Framework] Failed to execute the callback function:[ERROR] : [JS Framework] Failed to execute the callback function:ReferenceError: Can't find variable: balabala __ERROR
192
141
 
193
- ## 其他小程序异常监控产品
142
+ Vue 层报的错误,可以触发 sentry 上报,错误信息如下:
194
143
 
195
- - [Fundebug](https://www.fundebug.com/)
196
- - [FrontJS](https://www.frontjs.com/home/tour)
197
- - [Bugout](https://bugout.testin.cn/)
144
+ > [Vue warn]: Error in onLaunch hook: "ReferenceError: Can't find variable: balabala"[ERROR] : [Vue warn]: Error in onLaunch hook: "ReferenceError: Can't find variable: balabala"(found at App.vue:1) __ERROR
198
145
 
199
- ## 贡献
146
+ ## 功能特点
200
147
 
201
- 欢迎通过 `issue`、`pull request`等方式贡献 `sentry-uniapp`。
148
+ - [x] 基于 [sentry-javascript 最新的基础模块](https://www.yuque.com/lizhiyao/dxy/zevhf1#0GMCN) 封装
149
+ - [x] 遵守[官方统一的 API 设计文档](https://www.yuque.com/lizhiyao/dxy/gc3b9r#vQdTs),使用方式和官方保持一致
150
+ - [x] 使用 [TypeScript](https://www.typescriptlang.org/) 进行编写
151
+ - [x] 包含 Sentry SDK(如:[@sentry/browser](https://github.com/getsentry/sentry-javascript/tree/master/packages/browser))的所有基础功能
152
+ - [x] 支持 `ES6`、`CommonJS` 两种模块系统(支持小程序原生开发方式、使用小程序框架开发方式两种开发模式下使用)
153
+ - [x] 默认监听并上报小程序的 onError、onUnhandledRejection、onPageNotFound、onMemoryWarning 事件返回的信息(各事件支持程度与对应各小程序官方保持一致)
154
+ - [x] 默认上报运行小程序的设备、操作系统、应用版本信息
155
+ - [x] 支持微信小程序
156
+ - [x] 支持微信小游戏
157
+ - [x] 支持字节跳动小程序
158
+ - [x] 支持支付宝小程序
159
+ - [x] 支持钉钉小程序
160
+ - [x] 支持百度小程序
161
+ - [x] 支持快应用
162
+ - [x] 支持在 [Taro](https://taro.aotu.io/) 等第三方小程序框架中使用
163
+ - [x] 默认上报异常发生时的路由栈
164
+ - [ ] 完善的代码测试
202
165
 
203
166
  ## 感谢
204
167
 
205
- 最早是直接用的github fork,但发现fork的repo会有一些限制,所以重新创建的这个,本项目基于下面开源基础上修改:
168
+ 本项目基于下面开源基础上修改,感谢原作者:
206
169
 
207
170
  <https://github.com/lizhiyao/sentry-miniapp>
208
171
 
209
172
  ## 联系作者
210
173
 
211
174
  微信: yinqisen
175
+
176
+ 推荐另一个开源作品 `uapp`, 方便 Uniapp 离线打包的 cli。
177
+
178
+ ![uapp](./uapp-demo/static/logo.png)
@@ -1 +1 @@
1
- {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAM/E;;;;GAIG;AACH,MAAM,WAAW,cAAe,SAAQ,OAAO;IAC7C;;;;OAIG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAEvC;;;;OAIG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAEvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,WAAW,CAAC,cAAc,CAAC;IAC7D;;OAEG;IACH,SAAS,CAAC,eAAe,IAAI,SAAS;IAkBtC;;OAEG;IACI,kBAAkB,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC;IAe/E;;OAEG;IACI,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,QAAwB,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC;CAWhH"}
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAM/E;;;;GAIG;AACH,MAAM,WAAW,cAAe,SAAQ,OAAO;IAC7C;;;;OAIG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAEvC;;;;OAIG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAEvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,WAAW,CAAC,cAAc,CAAC;IAC7D;;OAEG;IACH,SAAS,CAAC,eAAe,IAAI,SAAS;IAkBtC;;OAEG;IACI,kBAAkB,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC;IAgB/E;;OAEG;IACI,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,QAAwB,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC;CAWhH"}
@@ -1 +1 @@
1
- {"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":";;;AAAA,qCAA2C;AAC3C,uCAA+E;AAC/E,uCAA2E;AAE3E,+CAAwE;AACxE,4CAAkD;AAyBlD;;;GAGG;AACH;IAAoC,0CAA2B;IAA/D;;IAsDA,CAAC;IArDC;;OAEG;IACO,wCAAe,GAAzB;QACE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACtB,6DAA6D;YAC7D,OAAO,iBAAM,eAAe,WAAE,CAAC;SAChC;QAED,IAAM,gBAAgB,yCACjB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KACjC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,GACvB,CAAC;QAEF,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YAC3B,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;SACtD;QAED,OAAO,IAAI,oBAAY,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACI,2CAAkB,GAAzB,UAA0B,SAAc,EAAE,IAAgB;QACxD,IAAM,kBAAkB,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,SAAS,CAAC;QAC1E,IAAM,KAAK,GAAG,oCAAqB,CAAC,SAAS,EAAE,kBAAkB,EAAE;YACjE,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB;SACjD,CAAC,CAAC;QACH,6BAAqB,CAAC,KAAK,EAAE;YAC3B,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,GAAG,gBAAQ,CAAC,KAAK,CAAC;QAC7B,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;YACzB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;SAChC;QACD,OAAO,2BAAmB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IACD;;OAEG;IACI,yCAAgB,GAAvB,UAAwB,OAAe,EAAE,KAA+B,EAAE,IAAgB;QAAjD,sBAAA,EAAA,QAAkB,gBAAQ,CAAC,IAAI;QACtE,IAAM,kBAAkB,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,SAAS,CAAC;QAC1E,IAAM,KAAK,GAAG,8BAAe,CAAC,OAAO,EAAE,kBAAkB,EAAE;YACzD,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB;SACjD,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACpB,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;YACzB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;SAChC;QACD,OAAO,2BAAmB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IACH,qBAAC;AAAD,CAAC,AAtDD,CAAoC,kBAAW,GAsD9C;AAtDY,wCAAc","sourcesContent":["import { BaseBackend } from \"@sentry/core\";\nimport { Event, EventHint, Options, Severity, Transport } from \"@sentry/types\";\nimport { addExceptionMechanism, resolvedSyncPromise } from '@sentry/utils';\n\nimport { eventFromString, eventFromUnknownInput } from './eventbuilder';\nimport { XHRTransport } from \"./transports/index\";\n\n/**\n * Configuration options for the Sentry Miniapp SDK.\n * Sentry Miniapp SDK 的配置选项。\n * @see MiniappClient for more information.\n */\nexport interface MiniappOptions extends Options {\n /**\n * A pattern for error URLs which should not be sent to Sentry.\n * To whitelist certain errors instead, use {@link Options.whitelistUrls}.\n * By default, all errors will be sent.\n */\n blacklistUrls?: Array<string | RegExp>;\n\n /**\n * A pattern for error URLs which should exclusively be sent to Sentry.\n * This is the opposite of {@link Options.blacklistUrls}.\n * By default, all errors will be sent.\n */\n whitelistUrls?: Array<string | RegExp>;\n\n extraOptions?: Object;\n}\n\n/**\n * The Sentry Browser SDK Backend.\n * @hidden\n */\nexport class MiniappBackend extends BaseBackend<MiniappOptions> {\n /**\n * @inheritDoc\n */\n protected _setupTransport(): Transport {\n if (!this._options.dsn) {\n // We return the noop transport here in case there is no Dsn.\n return super._setupTransport();\n }\n\n const transportOptions = {\n ...this._options.transportOptions,\n dsn: this._options.dsn\n };\n\n if (this._options.transport) {\n return new this._options.transport(transportOptions);\n }\n\n return new XHRTransport(transportOptions);\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(exception: any, hint?: EventHint): PromiseLike<Event> {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(exception, syntheticException, {\n attachStacktrace: this._options.attachStacktrace,\n });\n addExceptionMechanism(event, {\n handled: true,\n type: 'generic',\n });\n event.level = Severity.Error;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n }\n /**\n * @inheritDoc\n */\n public eventFromMessage(message: string, level: Severity = Severity.Info, hint?: EventHint): PromiseLike<Event> {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(message, syntheticException, {\n attachStacktrace: this._options.attachStacktrace,\n });\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n }\n}\n"]}
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":";;;AAAA,qCAA2C;AAC3C,uCAA+E;AAC/E,uCAA2E;AAE3E,+CAAwE;AACxE,4CAAkD;AAyBlD;;;GAGG;AACH;IAAoC,0CAA2B;IAA/D;;IAuDA,CAAC;IAtDC;;OAEG;IACO,wCAAe,GAAzB;QACE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACtB,6DAA6D;YAC7D,OAAO,iBAAM,eAAe,WAAE,CAAC;SAChC;QAED,IAAM,gBAAgB,yCACjB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KACjC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,GACvB,CAAC;QAEF,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YAC3B,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;SACtD;QAED,OAAO,IAAI,oBAAY,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACI,2CAAkB,GAAzB,UAA0B,SAAc,EAAE,IAAgB;QACxD,IAAM,kBAAkB,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,SAAS,CAAC;QAC1E,IAAM,KAAK,GAAG,oCAAqB,CAAC,SAAS,EAAE,kBAAkB,EAAE;YACjE,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB;SACjD,CAAC,CAAC;QAEH,6BAAqB,CAAC,KAAK,EAAE;YAC3B,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,GAAG,gBAAQ,CAAC,KAAK,CAAC;QAC7B,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;YACzB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;SAChC;QACD,OAAO,2BAAmB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IACD;;OAEG;IACI,yCAAgB,GAAvB,UAAwB,OAAe,EAAE,KAA+B,EAAE,IAAgB;QAAjD,sBAAA,EAAA,QAAkB,gBAAQ,CAAC,IAAI;QACtE,IAAM,kBAAkB,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,SAAS,CAAC;QAC1E,IAAM,KAAK,GAAG,8BAAe,CAAC,OAAO,EAAE,kBAAkB,EAAE;YACzD,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB;SACjD,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACpB,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;YACzB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;SAChC;QACD,OAAO,2BAAmB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IACH,qBAAC;AAAD,CAAC,AAvDD,CAAoC,kBAAW,GAuD9C;AAvDY,wCAAc","sourcesContent":["import { BaseBackend } from \"@sentry/core\";\nimport { Event, EventHint, Options, Severity, Transport } from \"@sentry/types\";\nimport { addExceptionMechanism, resolvedSyncPromise } from '@sentry/utils';\n\nimport { eventFromString, eventFromUnknownInput } from './eventbuilder';\nimport { XHRTransport } from \"./transports/index\";\n\n/**\n * Configuration options for the Sentry Miniapp SDK.\n * Sentry Miniapp SDK 的配置选项。\n * @see MiniappClient for more information.\n */\nexport interface MiniappOptions extends Options {\n /**\n * A pattern for error URLs which should not be sent to Sentry.\n * To whitelist certain errors instead, use {@link Options.whitelistUrls}.\n * By default, all errors will be sent.\n */\n blacklistUrls?: Array<string | RegExp>;\n\n /**\n * A pattern for error URLs which should exclusively be sent to Sentry.\n * This is the opposite of {@link Options.blacklistUrls}.\n * By default, all errors will be sent.\n */\n whitelistUrls?: Array<string | RegExp>;\n\n extraOptions?: Object;\n}\n\n/**\n * The Sentry Browser SDK Backend.\n * @hidden\n */\nexport class MiniappBackend extends BaseBackend<MiniappOptions> {\n /**\n * @inheritDoc\n */\n protected _setupTransport(): Transport {\n if (!this._options.dsn) {\n // We return the noop transport here in case there is no Dsn.\n return super._setupTransport();\n }\n\n const transportOptions = {\n ...this._options.transportOptions,\n dsn: this._options.dsn\n };\n\n if (this._options.transport) {\n return new this._options.transport(transportOptions);\n }\n\n return new XHRTransport(transportOptions);\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(exception: any, hint?: EventHint): PromiseLike<Event> {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(exception, syntheticException, {\n attachStacktrace: this._options.attachStacktrace,\n });\n\n addExceptionMechanism(event, {\n handled: true,\n type: 'generic',\n });\n event.level = Severity.Error;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n }\n /**\n * @inheritDoc\n */\n public eventFromMessage(message: string, level: Severity = Severity.Info, hint?: EventHint): PromiseLike<Event> {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(message, syntheticException, {\n attachStacktrace: this._options.attachStacktrace,\n });\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,MAAM,CAAC,IAAI,IAAI,CAAC;CACjB;AAED;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,UAAU,CAAC,cAAc,EAAE,cAAc,CAAC;IAC3E;;;;OAIG;gBACgB,OAAO,GAAE,cAAmB;IAI/C;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;IAkBjG;;;;;OAKG;IACI,gBAAgB,CAAC,OAAO,GAAE,mBAAwB,GAAG,IAAI;CAIjE"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,MAAM,CAAC,IAAI,IAAI,CAAC;CACjB;AAED;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,UAAU,CAAC,cAAc,EAAE,cAAc,CAAC;IAC3E;;;;OAIG;gBACgB,OAAO,GAAE,cAAmB;IAI/C;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;IAsBjG;;;;;OAKG;IACI,gBAAgB,CAAC,OAAO,GAAE,mBAAwB,GAAG,IAAI;CAIjE"}
package/dist/client.js CHANGED
@@ -34,6 +34,9 @@ var MiniappClient = /** @class */ (function (_super) {
34
34
  ]), version: version_1.SDK_VERSION });
35
35
  return _super.prototype._prepareEvent.call(this, event, scope, hint);
36
36
  };
37
+ // protected setupIntegrations() {
38
+ //
39
+ // }
37
40
  /**
38
41
  * Show a report dialog to the user to send feedback to a specific event.
39
42
  * 向用户显示报告对话框以将反馈发送到特定事件。---> 小程序上暂时用不到&不考虑。
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAAA,qCAAiD;AAGjD,qCAA2D;AAC3D,qCAAkD;AA6BlD;;;;;GAKG;AACH;IAAmC,yCAA0C;IAC3E;;;;OAIG;IACH,uBAAmB,OAA4B;QAA5B,wBAAA,EAAA,YAA4B;eAC7C,kBAAM,wBAAc,EAAE,OAAO,CAAC;IAChC,CAAC;IAED;;OAEG;IACO,qCAAa,GAAvB,UAAwB,KAAY,EAAE,KAAa,EAAE,IAAgB;QACnE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,YAAY,CAAC;QAChD,KAAK,CAAC,GAAG,yCACJ,KAAK,CAAC,GAAG,KACZ,IAAI,EAAE,kBAAQ,EACd,QAAQ,mBACH,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC5C;oBACE,IAAI,EAAE,mBAAmB;oBACzB,OAAO,EAAE,qBAAW;iBACrB;gBAEH,OAAO,EAAE,qBAAW,GACrB,CAAC;QAEF,OAAO,iBAAM,aAAa,YAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED;;;;;OAKG;IACI,wCAAgB,GAAvB,UAAwB,OAAiC;QAAjC,wBAAA,EAAA,YAAiC;QACvD,iDAAiD;QACjD,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IACH,oBAAC;AAAD,CAAC,AAzCD,CAAmC,iBAAU,GAyC5C;AAzCY,sCAAa","sourcesContent":["import { BaseClient, Scope } from \"@sentry/core\";\nimport { DsnLike, Event, EventHint } from \"@sentry/types\";\n\nimport { MiniappBackend, MiniappOptions } from \"./backend\";\nimport { SDK_NAME, SDK_VERSION } from \"./version\";\n\n/**\n * All properties the report dialog supports\n */\nexport interface ReportDialogOptions {\n [key: string]: any;\n eventId?: string;\n dsn?: DsnLike;\n user?: {\n email?: string;\n name?: string;\n };\n lang?: string;\n title?: string;\n subtitle?: string;\n subtitle2?: string;\n labelName?: string;\n labelEmail?: string;\n labelComments?: string;\n labelClose?: string;\n labelSubmit?: string;\n errorGeneric?: string;\n errorFormEntry?: string;\n successMessage?: string;\n /** Callback after reportDialog showed up */\n onLoad?(): void;\n}\n\n/**\n * The Sentry Miniapp SDK Client.\n *\n * @see MiniappOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class MiniappClient extends BaseClient<MiniappBackend, MiniappOptions> {\n /**\n * Creates a new Miniapp SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n public constructor(options: MiniappOptions = {}) {\n super(MiniappBackend, options);\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(event: Event, scope?: Scope, hint?: EventHint): PromiseLike<Event | null> {\n event.platform = event.platform || \"javascript\";\n event.sdk = {\n ...event.sdk,\n name: SDK_NAME,\n packages: [\n ...((event.sdk && event.sdk.packages) || []),\n {\n name: \"npm:sentry-uniapp\",\n version: SDK_VERSION\n }\n ],\n version: SDK_VERSION\n };\n\n return super._prepareEvent(event, scope, hint);\n }\n\n /**\n * Show a report dialog to the user to send feedback to a specific event.\n * 向用户显示报告对话框以将反馈发送到特定事件。---> 小程序上暂时用不到&不考虑。\n *\n * @param options Set individual options for the dialog\n */\n public showReportDialog(options: ReportDialogOptions = {}): void {\n // doesn't work without a document (React Native)\n console.log('sentry-uniapp 暂未实现该方法', options);\n }\n}\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAAA,qCAAiD;AAGjD,qCAA2D;AAC3D,qCAAkD;AA6BlD;;;;;GAKG;AACH;IAAmC,yCAA0C;IAC3E;;;;OAIG;IACH,uBAAmB,OAA4B;QAA5B,wBAAA,EAAA,YAA4B;eAC7C,kBAAM,wBAAc,EAAE,OAAO,CAAC;IAChC,CAAC;IAED;;OAEG;IACO,qCAAa,GAAvB,UAAwB,KAAY,EAAE,KAAa,EAAE,IAAgB;QACnE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,YAAY,CAAC;QAChD,KAAK,CAAC,GAAG,yCACJ,KAAK,CAAC,GAAG,KACZ,IAAI,EAAE,kBAAQ,EACd,QAAQ,mBACH,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC5C;oBACE,IAAI,EAAE,mBAAmB;oBACzB,OAAO,EAAE,qBAAW;iBACrB;gBAEH,OAAO,EAAE,qBAAW,GACrB,CAAC;QAEF,OAAO,iBAAM,aAAa,YAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,kCAAkC;IAClC,EAAE;IACF,IAAI;IAEJ;;;;;OAKG;IACI,wCAAgB,GAAvB,UAAwB,OAAiC;QAAjC,wBAAA,EAAA,YAAiC;QACvD,iDAAiD;QACjD,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IACH,oBAAC;AAAD,CAAC,AA7CD,CAAmC,iBAAU,GA6C5C;AA7CY,sCAAa","sourcesContent":["import { BaseClient, Scope } from \"@sentry/core\";\nimport { DsnLike, Event, EventHint } from \"@sentry/types\";\n\nimport { MiniappBackend, MiniappOptions } from \"./backend\";\nimport { SDK_NAME, SDK_VERSION } from \"./version\";\n\n/**\n * All properties the report dialog supports\n */\nexport interface ReportDialogOptions {\n [key: string]: any;\n eventId?: string;\n dsn?: DsnLike;\n user?: {\n email?: string;\n name?: string;\n };\n lang?: string;\n title?: string;\n subtitle?: string;\n subtitle2?: string;\n labelName?: string;\n labelEmail?: string;\n labelComments?: string;\n labelClose?: string;\n labelSubmit?: string;\n errorGeneric?: string;\n errorFormEntry?: string;\n successMessage?: string;\n /** Callback after reportDialog showed up */\n onLoad?(): void;\n}\n\n/**\n * The Sentry Miniapp SDK Client.\n *\n * @see MiniappOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class MiniappClient extends BaseClient<MiniappBackend, MiniappOptions> {\n /**\n * Creates a new Miniapp SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n public constructor(options: MiniappOptions = {}) {\n super(MiniappBackend, options);\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(event: Event, scope?: Scope, hint?: EventHint): PromiseLike<Event | null> {\n event.platform = event.platform || \"javascript\";\n event.sdk = {\n ...event.sdk,\n name: SDK_NAME,\n packages: [\n ...((event.sdk && event.sdk.packages) || []),\n {\n name: \"npm:sentry-uniapp\",\n version: SDK_VERSION\n }\n ],\n version: SDK_VERSION\n };\n\n return super._prepareEvent(event, scope, hint);\n }\n\n // protected setupIntegrations() {\n //\n // }\n\n /**\n * Show a report dialog to the user to send feedback to a specific event.\n * 向用户显示报告对话框以将反馈发送到特定事件。---> 小程序上暂时用不到&不考虑。\n *\n * @param options Set individual options for the dialog\n */\n public showReportDialog(options: ReportDialogOptions = {}): void {\n // doesn't work without a document (React Native)\n console.log('sentry-uniapp 暂未实现该方法', options);\n }\n}\n"]}
@@ -13,6 +13,6 @@ interface SDK {
13
13
  getLaunchOptionsSync?: Function;
14
14
  }
15
15
  declare const sdk: SDK;
16
- declare const appName: "uniapp" | "wechat" | "alipay" | "bytedance" | "dingtalk" | "qq" | "swan" | "unknown";
16
+ declare const appName: "unknown" | "uniapp" | "wechat" | "alipay" | "bytedance" | "dingtalk" | "qq" | "swan";
17
17
  export { sdk, appName };
18
18
  //# sourceMappingURL=crossPlatform.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"globalhandlers.d.ts","sourceRoot":"","sources":["../../src/integrations/globalhandlers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5C,YAAY;AACZ,UAAU,0BAA0B;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,sBAAsB;AACtB,qBAAa,cAAe,YAAW,WAAW;IAChD;;OAEG;IACI,IAAI,EAAE,MAAM,CAAqB;IAExC;;OAEG;IACH,OAAc,EAAE,EAAE,MAAM,CAAoB;IAE5C,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD,YAAY;IACZ,OAAO,CAAC,wBAAwB,CAAkB;IAElD,YAAY;IACZ,OAAO,CAAC,qCAAqC,CAAkB;IAE/D,YAAY;IACZ,OAAO,CAAC,+BAA+B,CAAkB;IAEzD,YAAY;IACZ,OAAO,CAAC,gCAAgC,CAAkB;IAE1D,YAAY;gBACO,OAAO,CAAC,EAAE,0BAA0B;IAUvD,YAAY;IACL,eAAe,CAAC,YAAY,CAAC,EAAE,GAAG,GAAG,IAAI;IAShD;;OAEG;IACI,SAAS,IAAI,IAAI;IAwBxB,YAAY;IACZ,OAAO,CAAC,4BAA4B;IAmBpC,YAAY;IACZ,OAAO,CAAC,yCAAyC;IA6BjD,YAAY;IACZ,OAAO,CAAC,mCAAmC;IAoB3C,YAAY;IACZ,OAAO,CAAC,oCAAoC;CAiC7C"}
1
+ {"version":3,"file":"globalhandlers.d.ts","sourceRoot":"","sources":["../../src/integrations/globalhandlers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5C,YAAY;AACZ,UAAU,0BAA0B;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,sBAAsB;AACtB,qBAAa,cAAe,YAAW,WAAW;IAChD;;OAEG;IACI,IAAI,EAAE,MAAM,CAAqB;IAExC;;OAEG;IACH,OAAc,EAAE,EAAE,MAAM,CAAoB;IAE5C,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD,YAAY;IACZ,OAAO,CAAC,wBAAwB,CAAkB;IAElD,YAAY;IACZ,OAAO,CAAC,qCAAqC,CAAkB;IAE/D,YAAY;IACZ,OAAO,CAAC,+BAA+B,CAAkB;IAEzD,YAAY;IACZ,OAAO,CAAC,gCAAgC,CAAkB;IAE1D,YAAY;gBACO,OAAO,CAAC,EAAE,0BAA0B;IAUvD,YAAY;IACL,eAAe,CAAC,YAAY,CAAC,EAAE,GAAG,GAAG,IAAI;IAoBhD;;OAEG;IACI,SAAS,IAAI,IAAI;IAwBxB,YAAY;IACZ,OAAO,CAAC,4BAA4B;IAmBpC,YAAY;IACZ,OAAO,CAAC,yCAAyC;IA6BjD,YAAY;IACZ,OAAO,CAAC,mCAAmC;IAoB3C,YAAY;IACZ,OAAO,CAAC,oCAAoC;CAiC7C"}
@@ -25,10 +25,18 @@ var GlobalHandlers = /** @class */ (function () {
25
25
  /** JSDoc */
26
26
  GlobalHandlers.prototype.setExtraOptions = function (extraOptions) {
27
27
  if (extraOptions) {
28
- this._options.onerror = !!extraOptions.onerror;
29
- this._options.onunhandledrejection = !!extraOptions.onunhandledrejection;
30
- this._options.onpagenotfound = !!extraOptions.onpagenotfound;
31
- this._options.onmemorywarning = !!extraOptions.onmemorywarning;
28
+ if (extraOptions.onerror !== undefined) {
29
+ this._options.onerror = !!extraOptions.onerror;
30
+ }
31
+ if (extraOptions.onunhandledrejection !== undefined) {
32
+ this._options.onunhandledrejection = !!extraOptions.onunhandledrejection;
33
+ }
34
+ if (extraOptions.onpagenotfound !== undefined) {
35
+ this._options.onpagenotfound = !!extraOptions.onpagenotfound;
36
+ }
37
+ if (extraOptions.onmemorywarning !== undefined) {
38
+ this._options.onmemorywarning = !!extraOptions.onmemorywarning;
39
+ }
32
40
  }
33
41
  };
34
42
  /**
@@ -62,7 +70,7 @@ var GlobalHandlers = /** @class */ (function () {
62
70
  var currentHub_1 = core_1.getCurrentHub();
63
71
  // https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onError.html
64
72
  crossPlatform_1.sdk.onError(function (err) {
65
- // console.info("sentry-uniapp", error);
73
+ // console.info("sentry-uniapp", err);
66
74
  var error = typeof err === 'string' ? new Error(err) : err;
67
75
  currentHub_1.captureException(error);
68
76
  });
@@ -1 +1 @@
1
- {"version":3,"file":"globalhandlers.js","sourceRoot":"","sources":["../../src/integrations/globalhandlers.ts"],"names":[],"mappings":"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","sourcesContent":["import { getCurrentHub } from \"@sentry/core\";\nimport { Integration } from \"@sentry/types\";\nimport { logger } from \"@sentry/utils\";\n\nimport { sdk } from \"../crossPlatform\";\n\n/** JSDoc */\ninterface GlobalHandlersIntegrations {\n onerror: boolean;\n onunhandledrejection: boolean;\n onpagenotfound: boolean;\n onmemorywarning: boolean;\n}\n\n/** Global handlers */\nexport class GlobalHandlers implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = GlobalHandlers.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = \"GlobalHandlers\";\n\n /** JSDoc */\n private readonly _options: GlobalHandlersIntegrations;\n\n /** JSDoc */\n private _onErrorHandlerInstalled: boolean = false;\n\n /** JSDoc */\n private _onUnhandledRejectionHandlerInstalled: boolean = false;\n\n /** JSDoc */\n private _onPageNotFoundHandlerInstalled: boolean = false;\n\n /** JSDoc */\n private _onMemoryWarningHandlerInstalled: boolean = false;\n\n /** JSDoc */\n public constructor(options?: GlobalHandlersIntegrations) {\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n onpagenotfound: true,\n onmemorywarning: true,\n ...options,\n };\n }\n\n /** JSDoc */\n public setExtraOptions(extraOptions?: any): void {\n if (extraOptions) {\n this._options.onerror = !!extraOptions.onerror;\n this._options.onunhandledrejection = !!extraOptions.onunhandledrejection;\n this._options.onpagenotfound = !!extraOptions.onpagenotfound;\n this._options.onmemorywarning = !!extraOptions.onmemorywarning;\n }\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n Error.stackTraceLimit = 50;\n\n if (this._options.onerror) {\n logger.log(\"Global Handler attached: onError\");\n this._installGlobalOnErrorHandler();\n }\n\n if (this._options.onunhandledrejection) {\n logger.log(\"Global Handler attached: onunhandledrejection\");\n this._installGlobalOnUnhandledRejectionHandler();\n }\n\n if (this._options.onpagenotfound) {\n logger.log(\"Global Handler attached: onPageNotFound\");\n this._installGlobalOnPageNotFoundHandler();\n }\n\n if (this._options.onmemorywarning) {\n logger.log(\"Global Handler attached: onMemoryWarning\");\n this._installGlobalOnMemoryWarningHandler();\n }\n }\n\n /** JSDoc */\n private _installGlobalOnErrorHandler(): void {\n if (this._onErrorHandlerInstalled) {\n return;\n }\n\n if (!!sdk.onError) {\n const currentHub = getCurrentHub();\n\n // https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onError.html\n sdk.onError((err: string | object) => {\n // console.info(\"sentry-uniapp\", error);\n const error = typeof err === 'string' ? new Error(err) : err\n currentHub.captureException(error);\n });\n }\n\n this._onErrorHandlerInstalled = true;\n }\n\n /** JSDoc */\n private _installGlobalOnUnhandledRejectionHandler(): void {\n if (this._onUnhandledRejectionHandlerInstalled) {\n return;\n }\n\n if (!!sdk.onUnhandledRejection) {\n const currentHub = getCurrentHub();\n /** JSDoc */\n interface OnUnhandledRejectionRes {\n reason: string | object;\n promise: Promise<any>;\n }\n\n // https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onUnhandledRejection.html\n sdk.onUnhandledRejection(\n ({ reason, promise }: OnUnhandledRejectionRes) => {\n // console.log(reason, typeof reason, promise)\n // 为什么官方文档上说 reason 是 string 类型,但是实际返回的确实 object 类型\n const error = typeof reason === 'string' ? new Error(reason) : reason\n currentHub.captureException(error, {\n data: promise,\n });\n }\n );\n }\n\n this._onUnhandledRejectionHandlerInstalled = true;\n }\n\n /** JSDoc */\n private _installGlobalOnPageNotFoundHandler(): void {\n if (this._onPageNotFoundHandlerInstalled) {\n return;\n }\n\n if (!!sdk.onPageNotFound) {\n const currentHub = getCurrentHub();\n\n sdk.onPageNotFound((res: { path: string }) => {\n const url = res.path.split(\"?\")[0];\n\n currentHub.setTag(\"pagenotfound\", url);\n currentHub.setExtra(\"message\", JSON.stringify(res));\n currentHub.captureMessage(`页面无法找到: ${url}`);\n });\n }\n\n this._onPageNotFoundHandlerInstalled = true;\n }\n\n /** JSDoc */\n private _installGlobalOnMemoryWarningHandler(): void {\n if (this._onMemoryWarningHandlerInstalled) {\n return;\n }\n\n if (!!sdk.onMemoryWarning) {\n const currentHub = getCurrentHub();\n\n sdk.onMemoryWarning(({ level = -1 }: { level: number }) => {\n let levelMessage = \"没有获取到告警级别信息\";\n\n switch (level) {\n case 5:\n levelMessage = \"TRIM_MEMORY_RUNNING_MODERATE\";\n break;\n case 10:\n levelMessage = \"TRIM_MEMORY_RUNNING_LOW\";\n break;\n case 15:\n levelMessage = \"TRIM_MEMORY_RUNNING_CRITICAL\";\n break;\n default:\n return;\n }\n\n currentHub.setTag(\"memory-warning\", String(level));\n currentHub.setExtra(\"message\", levelMessage);\n currentHub.captureMessage(`内存不足告警`);\n });\n }\n\n this._onMemoryWarningHandlerInstalled = true;\n }\n}\n"]}
1
+ {"version":3,"file":"globalhandlers.js","sourceRoot":"","sources":["../../src/integrations/globalhandlers.ts"],"names":[],"mappings":"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","sourcesContent":["import { getCurrentHub } from \"@sentry/core\";\nimport { Integration } from \"@sentry/types\";\nimport { logger } from \"@sentry/utils\";\n\nimport { sdk } from \"../crossPlatform\";\n\n/** JSDoc */\ninterface GlobalHandlersIntegrations {\n onerror: boolean;\n onunhandledrejection: boolean;\n onpagenotfound: boolean;\n onmemorywarning: boolean;\n}\n\n/** Global handlers */\nexport class GlobalHandlers implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = GlobalHandlers.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = \"GlobalHandlers\";\n\n /** JSDoc */\n private readonly _options: GlobalHandlersIntegrations;\n\n /** JSDoc */\n private _onErrorHandlerInstalled: boolean = false;\n\n /** JSDoc */\n private _onUnhandledRejectionHandlerInstalled: boolean = false;\n\n /** JSDoc */\n private _onPageNotFoundHandlerInstalled: boolean = false;\n\n /** JSDoc */\n private _onMemoryWarningHandlerInstalled: boolean = false;\n\n /** JSDoc */\n public constructor(options?: GlobalHandlersIntegrations) {\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n onpagenotfound: true,\n onmemorywarning: true,\n ...options,\n };\n }\n\n /** JSDoc */\n public setExtraOptions(extraOptions?: any): void {\n if (extraOptions) {\n if (extraOptions.onerror !== undefined) {\n this._options.onerror = !!extraOptions.onerror;\n }\n\n if (extraOptions.onunhandledrejection !== undefined) {\n this._options.onunhandledrejection = !!extraOptions.onunhandledrejection;\n }\n\n if (extraOptions.onpagenotfound !== undefined) {\n this._options.onpagenotfound = !!extraOptions.onpagenotfound;\n }\n\n if (extraOptions.onmemorywarning !== undefined) {\n this._options.onmemorywarning = !!extraOptions.onmemorywarning;\n }\n }\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n Error.stackTraceLimit = 50;\n\n if (this._options.onerror) {\n logger.log(\"Global Handler attached: onError\");\n this._installGlobalOnErrorHandler();\n }\n\n if (this._options.onunhandledrejection) {\n logger.log(\"Global Handler attached: onunhandledrejection\");\n this._installGlobalOnUnhandledRejectionHandler();\n }\n\n if (this._options.onpagenotfound) {\n logger.log(\"Global Handler attached: onPageNotFound\");\n this._installGlobalOnPageNotFoundHandler();\n }\n\n if (this._options.onmemorywarning) {\n logger.log(\"Global Handler attached: onMemoryWarning\");\n this._installGlobalOnMemoryWarningHandler();\n }\n }\n\n /** JSDoc */\n private _installGlobalOnErrorHandler(): void {\n if (this._onErrorHandlerInstalled) {\n return;\n }\n\n if (!!sdk.onError) {\n const currentHub = getCurrentHub();\n\n // https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onError.html\n sdk.onError((err: string | object) => {\n // console.info(\"sentry-uniapp\", err);\n const error = typeof err === 'string' ? new Error(err) : err\n currentHub.captureException(error);\n });\n }\n\n this._onErrorHandlerInstalled = true;\n }\n\n /** JSDoc */\n private _installGlobalOnUnhandledRejectionHandler(): void {\n if (this._onUnhandledRejectionHandlerInstalled) {\n return;\n }\n\n if (!!sdk.onUnhandledRejection) {\n const currentHub = getCurrentHub();\n /** JSDoc */\n interface OnUnhandledRejectionRes {\n reason: string | object;\n promise: Promise<any>;\n }\n\n // https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onUnhandledRejection.html\n sdk.onUnhandledRejection(\n ({ reason, promise }: OnUnhandledRejectionRes) => {\n // console.log(reason, typeof reason, promise)\n // 为什么官方文档上说 reason 是 string 类型,但是实际返回的确实 object 类型\n const error = typeof reason === 'string' ? new Error(reason) : reason\n currentHub.captureException(error, {\n data: promise,\n });\n }\n );\n }\n\n this._onUnhandledRejectionHandlerInstalled = true;\n }\n\n /** JSDoc */\n private _installGlobalOnPageNotFoundHandler(): void {\n if (this._onPageNotFoundHandlerInstalled) {\n return;\n }\n\n if (!!sdk.onPageNotFound) {\n const currentHub = getCurrentHub();\n\n sdk.onPageNotFound((res: { path: string }) => {\n const url = res.path.split(\"?\")[0];\n\n currentHub.setTag(\"pagenotfound\", url);\n currentHub.setExtra(\"message\", JSON.stringify(res));\n currentHub.captureMessage(`页面无法找到: ${url}`);\n });\n }\n\n this._onPageNotFoundHandlerInstalled = true;\n }\n\n /** JSDoc */\n private _installGlobalOnMemoryWarningHandler(): void {\n if (this._onMemoryWarningHandlerInstalled) {\n return;\n }\n\n if (!!sdk.onMemoryWarning) {\n const currentHub = getCurrentHub();\n\n sdk.onMemoryWarning(({ level = -1 }: { level: number }) => {\n let levelMessage = \"没有获取到告警级别信息\";\n\n switch (level) {\n case 5:\n levelMessage = \"TRIM_MEMORY_RUNNING_MODERATE\";\n break;\n case 10:\n levelMessage = \"TRIM_MEMORY_RUNNING_LOW\";\n break;\n case 15:\n levelMessage = \"TRIM_MEMORY_RUNNING_CRITICAL\";\n break;\n default:\n return;\n }\n\n currentHub.setTag(\"memory-warning\", String(level));\n currentHub.setExtra(\"message\", levelMessage);\n currentHub.captureMessage(`内存不足告警`);\n });\n }\n\n this._onMemoryWarningHandlerInstalled = true;\n }\n}\n"]}
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "sentry-uniapp",
3
+ "version": "1.0.12",
4
+ "description": "用于Uniapp/小程序/快应用等平台的 Sentry SDK",
5
+ "repository": "git://github.com/uappkit/sentry-uniapp.git",
6
+ "homepage": "https://github.com/uappkit/sentry-uniapp",
7
+ "miniprogram": "dist",
8
+ "main": "dist/index.js",
9
+ "module": "esm/index.js",
10
+ "types": "dist/index.d.ts",
11
+ "scripts": {
12
+ "test": "echo \"Error: no test specified\" && exit 1",
13
+ "build": "npm-run-all --parallel build:min build:esm build:ts version",
14
+ "build:dist": "npm-run-all --parallel build:min",
15
+ "build:min": "webpack --config ./webpack.config.min.js",
16
+ "build:watch": "webpack --watch --config ./webpack.config.min.js",
17
+ "build:ts": "tsc -p tsconfig.json",
18
+ "build:esm": "tsc -p tsconfig.esm.json",
19
+ "version": "node ./scripts/versionbump.js src/version.ts"
20
+ },
21
+ "keywords": [
22
+ "sentry",
23
+ "uniapp",
24
+ "uniapp sentry"
25
+ ],
26
+ "author": "yinqisen@gmail.com",
27
+ "license": "BSD-3-Clause",
28
+ "engines": {
29
+ "node": ">=14"
30
+ },
31
+ "devDependencies": {
32
+ "@sentry/typescript": "^5.20.0",
33
+ "@types/node": "^12.7.1",
34
+ "install": "^0.13.0",
35
+ "miniprogram-api-typings": "^2.7.7-2",
36
+ "npm": "^6.11.1",
37
+ "npm-run-all": "^4.1.5",
38
+ "replace-in-file": "^4.1.3",
39
+ "ts-loader": "^6.0.4",
40
+ "tslint": "^5.16.0",
41
+ "typescript": "^3.5.3",
42
+ "webpack": "^5.90.3",
43
+ "webpack-cli": "^5.1.4",
44
+ "webpack-merge": "^4.2.1"
45
+ },
46
+ "dependencies": {
47
+ "@sentry/core": "6.19.7",
48
+ "@sentry/types": "6.19.7",
49
+ "@sentry/utils": "6.19.7",
50
+ "tslib": "^1.10.0"
51
+ }
52
+ }
package/dist/sdk.d.ts CHANGED
@@ -2,7 +2,7 @@ import { Integrations as CoreIntegrations } from "@sentry/core";
2
2
  import { MiniappOptions } from "./backend";
3
3
  import { ReportDialogOptions } from "./client";
4
4
  import { GlobalHandlers, IgnoreMpcrawlerErrors, LinkedErrors, Router, System, TryCatch } from "./integrations/index";
5
- export declare const defaultIntegrations: (CoreIntegrations.InboundFilters | CoreIntegrations.FunctionToString | TryCatch | GlobalHandlers | LinkedErrors | System | Router | IgnoreMpcrawlerErrors)[];
5
+ export declare const defaultIntegrations: (CoreIntegrations.FunctionToString | CoreIntegrations.InboundFilters | GlobalHandlers | TryCatch | LinkedErrors | System | Router | IgnoreMpcrawlerErrors)[];
6
6
  /**
7
7
  * The Sentry Uniapp SDK Client.
8
8
  *
package/dist/sdk.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,IAAI,gBAAgB,EACjC,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAiB,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE9D,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,MAAM,EACN,MAAM,EACN,QAAQ,EACT,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,mBAAmB,8JAU/B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,wBAAgB,IAAI,CAAC,OAAO,GAAE,cAAmB,GAAG,IAAI,CAevD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,mBAAwB,GAAG,IAAI,CAQxE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,MAAM,GAAG,SAAS,CAEhD;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAM5D;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAM5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,EAAE,EAAE,QAAQ,GAAG,GAAG,CAGtC"}
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,IAAI,gBAAgB,EACjC,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAiB,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE9D,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,MAAM,EACN,MAAM,EACN,QAAQ,EACT,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,mBAAmB,8JAU/B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,wBAAgB,IAAI,CAAC,OAAO,GAAE,cAAmB,GAAG,IAAI,CAavD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,mBAAwB,GAAG,IAAI,CAQxE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,MAAM,GAAG,SAAS,CAEhD;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAM5D;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAM5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,EAAE,EAAE,QAAQ,GAAG,GAAG,CAGtC"}
package/dist/sdk.js CHANGED
@@ -76,7 +76,6 @@ function init(options) {
76
76
  if (options.defaultIntegrations === undefined) {
77
77
  options.defaultIntegrations = exports.defaultIntegrations;
78
78
  }
79
- // https://github.com/uappkit/sentry-uniapp/issues/23
80
79
  options.normalizeDepth = options.normalizeDepth || 5;
81
80
  if (options.defaultIntegrations) {
82
81
  options.defaultIntegrations[3].setExtraOptions(options.extraOptions);
package/dist/sdk.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":";;AAAA,qCAIsB;AACtB,uCAAoD;AAGpD,mCAA8D;AAC9D,qCAAiD;AACjD,8CAO8B;AAEjB,QAAA,mBAAmB,GAAG;IACjC,IAAI,mBAAgB,CAAC,cAAc,EAAE;IACrC,IAAI,mBAAgB,CAAC,gBAAgB,EAAE;IACvC,IAAI,gBAAQ,EAAE;IACd,IAAI,sBAAc,EAAE;IACpB,IAAI,oBAAY,EAAE;IAElB,IAAI,cAAM,EAAE;IACZ,IAAI,cAAM,EAAE;IACZ,IAAI,6BAAqB,EAAE;CAC5B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,SAAgB,IAAI,CAAC,OAA4B;IAA5B,wBAAA,EAAA,YAA4B;IAC/C,0EAA0E;IAC1E,+CAA+C;IAC/C,IAAI,OAAO,CAAC,mBAAmB,KAAK,SAAS,EAAE;QAC7C,OAAO,CAAC,mBAAmB,GAAG,2BAAmB,CAAC;KACnD;IAED,qDAAqD;IACrD,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC;IAErD,IAAI,OAAO,CAAC,mBAAmB,EAAE;QAC9B,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAoB,CAAC,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;KAC1F;IAED,kBAAW,CAAC,sBAAa,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAfD,oBAeC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,OAAiC;IAAjC,wBAAA,EAAA,YAAiC;IAChE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;QACpB,OAAO,CAAC,OAAO,GAAG,oBAAa,EAAE,CAAC,WAAW,EAAE,CAAC;KACjD;IACD,IAAM,MAAM,GAAG,oBAAa,EAAE,CAAC,SAAS,EAAiB,CAAC;IAC1D,IAAI,MAAM,EAAE;QACV,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;KAClC;AACH,CAAC;AARD,4CAQC;AAED;;;;GAIG;AACH,SAAgB,WAAW;IACzB,OAAO,oBAAa,EAAE,CAAC,WAAW,EAAE,CAAC;AACvC,CAAC;AAFD,kCAEC;AAED;;;;;;GAMG;AACH,SAAgB,KAAK,CAAC,OAAgB;IACpC,IAAM,MAAM,GAAG,oBAAa,EAAE,CAAC,SAAS,EAAiB,CAAC;IAC1D,IAAI,MAAM,EAAE;QACV,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KAC9B;IACD,OAAO,2BAAmB,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAND,sBAMC;AAED;;;;;GAKG;AACH,SAAgB,KAAK,CAAC,OAAgB;IACpC,IAAM,MAAM,GAAG,oBAAa,EAAE,CAAC,SAAS,EAAiB,CAAC;IAC1D,IAAI,MAAM,EAAE;QACV,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KAC9B;IACD,OAAO,2BAAmB,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAND,sBAMC;AAED;;;;;;;;GAQG;AACH,SAAgB,IAAI,CAAC,EAAY;IAC/B,0CAA0C;IAC1C,OAAO,cAAY,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5B,CAAC;AAHD,oBAGC","sourcesContent":["import {\n getCurrentHub,\n initAndBind,\n Integrations as CoreIntegrations,\n} from \"@sentry/core\";\nimport { resolvedSyncPromise } from \"@sentry/utils\";\n\nimport { MiniappOptions } from \"./backend\";\nimport { MiniappClient, ReportDialogOptions } from \"./client\";\nimport { wrap as internalWrap } from \"./helpers\";\nimport {\n GlobalHandlers,\n IgnoreMpcrawlerErrors,\n LinkedErrors,\n Router,\n System,\n TryCatch,\n} from \"./integrations/index\";\n\nexport const defaultIntegrations = [\n new CoreIntegrations.InboundFilters(),\n new CoreIntegrations.FunctionToString(),\n new TryCatch(),\n new GlobalHandlers(),\n new LinkedErrors(),\n\n new System(),\n new Router(),\n new IgnoreMpcrawlerErrors(),\n];\n\n/**\n * The Sentry Uniapp SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * launching the app. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n * ```\n * import { init } from 'sentry-uniapp';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n * import { configureScope } from 'sentry-uniapp';\n *\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n * import { addBreadcrumb } from 'sentry-uniapp';\n *\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n * import * as Sentry from 'sentry-uniapp';\n *\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link MiniappOptions} for documentation on configuration options.\n */\nexport function init(options: MiniappOptions = {}): void {\n // 如果将 options.defaultIntegrations 设置为 false,则不会添加默认集成,否则将在内部将其设置为建议的默认集成。\n // tslint:disable-next-line: strict-comparisons\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n\n // https://github.com/uappkit/sentry-uniapp/issues/23\n options.normalizeDepth = options.normalizeDepth || 5;\n\n if (options.defaultIntegrations) {\n (options.defaultIntegrations[3] as GlobalHandlers).setExtraOptions(options.extraOptions);\n }\n\n initAndBind(MiniappClient, options);\n}\n\n/**\n * Present the user with a report dialog.\n * 向用户显示报告对话框。小程序上暂时不考虑实现该功能。\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nexport function showReportDialog(options: ReportDialogOptions = {}): void {\n if (!options.eventId) {\n options.eventId = getCurrentHub().lastEventId();\n }\n const client = getCurrentHub().getClient<MiniappClient>();\n if (client) {\n client.showReportDialog(options);\n }\n}\n\n/**\n * This is the getter for lastEventId. 获取 lastEventId。\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId(): string | undefined {\n return getCurrentHub().lastEventId();\n}\n\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n * 在发送所有当前事件时会变为 resolved 状态的 promise。如果提供了一个超时时间并且队列需要更长时间来消耗,则 promise 将返回 false。\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function flush(timeout?: number): PromiseLike<boolean> {\n const client = getCurrentHub().getClient<MiniappClient>();\n if (client) {\n return client.flush(timeout);\n }\n return resolvedSyncPromise(false);\n}\n\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function close(timeout?: number): PromiseLike<boolean> {\n const client = getCurrentHub().getClient<MiniappClient>();\n if (client) {\n return client.close(timeout);\n }\n return resolvedSyncPromise(false);\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n * 在 try / catch 块中包装代码,以便 SDK 能够捕获错误。\n * 实际上是 ./helpers 文件中 warp 方法的进一步封装。\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\nexport function wrap(fn: Function): any {\n // tslint:disable-next-line: no-unsafe-any\n return internalWrap(fn)();\n}\n"]}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":";;AAAA,qCAIsB;AACtB,uCAAoD;AAGpD,mCAA8D;AAC9D,qCAAiD;AACjD,8CAO8B;AAEjB,QAAA,mBAAmB,GAAG;IACjC,IAAI,mBAAgB,CAAC,cAAc,EAAE;IACrC,IAAI,mBAAgB,CAAC,gBAAgB,EAAE;IACvC,IAAI,gBAAQ,EAAE;IACd,IAAI,sBAAc,EAAE;IACpB,IAAI,oBAAY,EAAE;IAElB,IAAI,cAAM,EAAE;IACZ,IAAI,cAAM,EAAE;IACZ,IAAI,6BAAqB,EAAE;CAC5B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,SAAgB,IAAI,CAAC,OAA4B;IAA5B,wBAAA,EAAA,YAA4B;IAC/C,0EAA0E;IAC1E,+CAA+C;IAC/C,IAAI,OAAO,CAAC,mBAAmB,KAAK,SAAS,EAAE;QAC7C,OAAO,CAAC,mBAAmB,GAAG,2BAAmB,CAAC;KACnD;IAED,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC;IACrD,IAAI,OAAO,CAAC,mBAAmB,EAAE;QAC9B,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAoB,CAAC,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;KAC1F;IAED,kBAAW,CAAC,sBAAa,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAbD,oBAaC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,OAAiC;IAAjC,wBAAA,EAAA,YAAiC;IAChE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;QACpB,OAAO,CAAC,OAAO,GAAG,oBAAa,EAAE,CAAC,WAAW,EAAE,CAAC;KACjD;IACD,IAAM,MAAM,GAAG,oBAAa,EAAE,CAAC,SAAS,EAAiB,CAAC;IAC1D,IAAI,MAAM,EAAE;QACV,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;KAClC;AACH,CAAC;AARD,4CAQC;AAED;;;;GAIG;AACH,SAAgB,WAAW;IACzB,OAAO,oBAAa,EAAE,CAAC,WAAW,EAAE,CAAC;AACvC,CAAC;AAFD,kCAEC;AAED;;;;;;GAMG;AACH,SAAgB,KAAK,CAAC,OAAgB;IACpC,IAAM,MAAM,GAAG,oBAAa,EAAE,CAAC,SAAS,EAAiB,CAAC;IAC1D,IAAI,MAAM,EAAE;QACV,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KAC9B;IACD,OAAO,2BAAmB,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAND,sBAMC;AAED;;;;;GAKG;AACH,SAAgB,KAAK,CAAC,OAAgB;IACpC,IAAM,MAAM,GAAG,oBAAa,EAAE,CAAC,SAAS,EAAiB,CAAC;IAC1D,IAAI,MAAM,EAAE;QACV,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KAC9B;IACD,OAAO,2BAAmB,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAND,sBAMC;AAED;;;;;;;;GAQG;AACH,SAAgB,IAAI,CAAC,EAAY;IAC/B,0CAA0C;IAC1C,OAAO,cAAY,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5B,CAAC;AAHD,oBAGC","sourcesContent":["import {\n getCurrentHub,\n initAndBind,\n Integrations as CoreIntegrations,\n} from \"@sentry/core\";\nimport { resolvedSyncPromise } from \"@sentry/utils\";\n\nimport { MiniappOptions } from \"./backend\";\nimport { MiniappClient, ReportDialogOptions } from \"./client\";\nimport { wrap as internalWrap } from \"./helpers\";\nimport {\n GlobalHandlers,\n IgnoreMpcrawlerErrors,\n LinkedErrors,\n Router,\n System,\n TryCatch,\n} from \"./integrations/index\";\n\nexport const defaultIntegrations = [\n new CoreIntegrations.InboundFilters(),\n new CoreIntegrations.FunctionToString(),\n new TryCatch(),\n new GlobalHandlers(),\n new LinkedErrors(),\n\n new System(),\n new Router(),\n new IgnoreMpcrawlerErrors(),\n];\n\n/**\n * The Sentry Uniapp SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * launching the app. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n * ```\n * import { init } from 'sentry-uniapp';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n * import { configureScope } from 'sentry-uniapp';\n *\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n * import { addBreadcrumb } from 'sentry-uniapp';\n *\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n * import * as Sentry from 'sentry-uniapp';\n *\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link MiniappOptions} for documentation on configuration options.\n */\nexport function init(options: MiniappOptions = {}): void {\n // 如果将 options.defaultIntegrations 设置为 false,则不会添加默认集成,否则将在内部将其设置为建议的默认集成。\n // tslint:disable-next-line: strict-comparisons\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n\n options.normalizeDepth = options.normalizeDepth || 5;\n if (options.defaultIntegrations) {\n (options.defaultIntegrations[3] as GlobalHandlers).setExtraOptions(options.extraOptions);\n }\n\n initAndBind(MiniappClient, options);\n}\n\n/**\n * Present the user with a report dialog.\n * 向用户显示报告对话框。小程序上暂时不考虑实现该功能。\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nexport function showReportDialog(options: ReportDialogOptions = {}): void {\n if (!options.eventId) {\n options.eventId = getCurrentHub().lastEventId();\n }\n const client = getCurrentHub().getClient<MiniappClient>();\n if (client) {\n client.showReportDialog(options);\n }\n}\n\n/**\n * This is the getter for lastEventId. 获取 lastEventId。\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId(): string | undefined {\n return getCurrentHub().lastEventId();\n}\n\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n * 在发送所有当前事件时会变为 resolved 状态的 promise。如果提供了一个超时时间并且队列需要更长时间来消耗,则 promise 将返回 false。\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function flush(timeout?: number): PromiseLike<boolean> {\n const client = getCurrentHub().getClient<MiniappClient>();\n if (client) {\n return client.flush(timeout);\n }\n return resolvedSyncPromise(false);\n}\n\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function close(timeout?: number): PromiseLike<boolean> {\n const client = getCurrentHub().getClient<MiniappClient>();\n if (client) {\n return client.close(timeout);\n }\n return resolvedSyncPromise(false);\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n * 在 try / catch 块中包装代码,以便 SDK 能够捕获错误。\n * 实际上是 ./helpers 文件中 warp 方法的进一步封装。\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\nexport function wrap(fn: Function): any {\n // tslint:disable-next-line: no-unsafe-any\n return internalWrap(fn)();\n}\n"]}