@cloudbase/js-sdk 3.4.5 → 3.4.7-beta.0

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 (775) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/ai/dist/index.esm.js +2 -3
  3. package/ai/dist/index.esm.js.map +1 -0
  4. package/ai/dist/index.js +2 -21
  5. package/ai/dist/index.js.map +1 -0
  6. package/apis/dist/index.esm.js +2 -3
  7. package/apis/dist/index.esm.js.map +1 -0
  8. package/apis/dist/index.js +2 -21
  9. package/apis/dist/index.js.map +1 -0
  10. package/app/dist/index.esm.js +2 -11
  11. package/app/dist/index.esm.js.map +1 -0
  12. package/app/dist/index.js +2 -18
  13. package/app/dist/index.js.map +1 -0
  14. package/auth/dist/index.esm.js +3 -8
  15. package/auth/dist/index.esm.js.LICENSE.txt +12 -0
  16. package/auth/dist/index.esm.js.map +1 -0
  17. package/auth/dist/index.js +3 -13
  18. package/auth/dist/index.js.LICENSE.txt +12 -0
  19. package/auth/dist/index.js.map +1 -0
  20. package/cloudrun/dist/index.esm.js +2 -3
  21. package/cloudrun/dist/index.esm.js.map +1 -0
  22. package/cloudrun/dist/index.js +2 -21
  23. package/cloudrun/dist/index.js.map +1 -0
  24. package/container/dist/index.esm.js +2 -8
  25. package/container/dist/index.esm.js.map +1 -0
  26. package/container/dist/index.js +2 -13
  27. package/container/dist/index.js.map +1 -0
  28. package/database/package.json +34 -4
  29. package/dist/index.cjs.js +3 -38
  30. package/dist/index.cjs.js.LICENSE.txt +12 -0
  31. package/dist/index.cjs.js.map +1 -0
  32. package/dist/index.esm.js +3 -33
  33. package/dist/index.esm.js.LICENSE.txt +12 -0
  34. package/dist/index.esm.js.map +1 -0
  35. package/functions/dist/index.esm.js +2 -8
  36. package/functions/dist/index.esm.js.map +1 -0
  37. package/functions/dist/index.js +2 -13
  38. package/functions/dist/index.js.map +1 -0
  39. package/miniprogram_dist/ai.js +1 -1
  40. package/miniprogram_dist/apis.js +1 -1
  41. package/miniprogram_dist/app.js +1 -1
  42. package/miniprogram_dist/auth.js +1 -1
  43. package/miniprogram_dist/cloudrun.js +1 -1
  44. package/miniprogram_dist/container.js +1 -1
  45. package/miniprogram_dist/database.js +1 -1
  46. package/miniprogram_dist/functions.js +1 -1
  47. package/miniprogram_dist/index.js +1 -1
  48. package/miniprogram_dist/model.js +1 -1
  49. package/miniprogram_dist/mysql.js +1 -1
  50. package/miniprogram_dist/oauth.js +2 -1
  51. package/miniprogram_dist/realtime.js +1 -1
  52. package/miniprogram_dist/storage.js +1 -1
  53. package/model/dist/index.esm.js +2 -3
  54. package/model/dist/index.esm.js.map +1 -0
  55. package/model/dist/index.js +2 -21
  56. package/model/dist/index.js.map +1 -0
  57. package/mysql/dist/index.esm.js +2 -3
  58. package/mysql/dist/index.esm.js.map +1 -0
  59. package/mysql/dist/index.js +2 -21
  60. package/mysql/dist/index.js.map +1 -0
  61. package/oauth/dist/index.esm.js +3 -3
  62. package/oauth/dist/index.esm.js.LICENSE.txt +12 -0
  63. package/oauth/dist/index.esm.js.map +1 -0
  64. package/oauth/dist/index.js +3 -21
  65. package/oauth/dist/index.js.LICENSE.txt +12 -0
  66. package/oauth/dist/index.js.map +1 -0
  67. package/package.json +29 -47
  68. package/realtime/dist/index.esm.js +2 -8
  69. package/realtime/dist/index.esm.js.map +1 -0
  70. package/realtime/dist/index.js +2 -13
  71. package/realtime/dist/index.js.map +1 -0
  72. package/storage/dist/index.esm.js +2 -4
  73. package/storage/dist/index.esm.js.map +1 -0
  74. package/storage/dist/index.js +2 -9
  75. package/storage/dist/index.js.map +1 -0
  76. package/types/analytics.d.ts +51 -0
  77. package/types/container.d.ts +93 -0
  78. package/{node_modules/@cloudbase/types → types}/package.json +1 -1
  79. package/{node_modules/@cloudbase/utilities → utilities}/package.json +2 -2
  80. package/ai/src/index.d.ts +0 -1
  81. package/ai/src/index.ts +0 -1
  82. package/apis/src/index.d.ts +0 -1
  83. package/apis/src/index.ts +0 -1
  84. package/app/src/index.ts +0 -17
  85. package/auth/src/index.d.ts +0 -2
  86. package/auth/src/index.ts +0 -8
  87. package/cloudrun/src/index.d.ts +0 -1
  88. package/cloudrun/src/index.ts +0 -1
  89. package/container/src/index.d.ts +0 -2
  90. package/container/src/index.ts +0 -8
  91. package/database/dist/index.d.ts +0 -3
  92. package/database/dist/index.esm.js +0 -503
  93. package/database/dist/index.js +0 -509
  94. package/database/src/index.d.ts +0 -3
  95. package/database/src/index.ts +0 -486
  96. package/functions/src/index.d.ts +0 -2
  97. package/functions/src/index.ts +0 -8
  98. package/model/src/index.d.ts +0 -1
  99. package/model/src/index.ts +0 -1
  100. package/mysql/src/index.d.ts +0 -1
  101. package/mysql/src/index.ts +0 -1
  102. package/node_modules/@cloudbase/ai/.eslintrc.js +0 -15
  103. package/node_modules/@cloudbase/ai/dist/cjs/AI.d.ts +0 -27
  104. package/node_modules/@cloudbase/ai/dist/cjs/AI.js +0 -224
  105. package/node_modules/@cloudbase/ai/dist/cjs/bot/index.d.ts +0 -41
  106. package/node_modules/@cloudbase/ai/dist/cjs/bot/index.js +0 -376
  107. package/node_modules/@cloudbase/ai/dist/cjs/bot/types.d.ts +0 -144
  108. package/node_modules/@cloudbase/ai/dist/cjs/bot/types.js +0 -3
  109. package/node_modules/@cloudbase/ai/dist/cjs/eventsource_parser/index.d.ts +0 -2
  110. package/node_modules/@cloudbase/ai/dist/cjs/eventsource_parser/index.js +0 -6
  111. package/node_modules/@cloudbase/ai/dist/cjs/eventsource_parser/parse.d.ts +0 -2
  112. package/node_modules/@cloudbase/ai/dist/cjs/eventsource_parser/parse.js +0 -126
  113. package/node_modules/@cloudbase/ai/dist/cjs/eventsource_parser/stream.d.ts +0 -5
  114. package/node_modules/@cloudbase/ai/dist/cjs/eventsource_parser/stream.js +0 -40
  115. package/node_modules/@cloudbase/ai/dist/cjs/eventsource_parser/types.d.ts +0 -16
  116. package/node_modules/@cloudbase/ai/dist/cjs/eventsource_parser/types.js +0 -3
  117. package/node_modules/@cloudbase/ai/dist/cjs/index.d.ts +0 -40
  118. package/node_modules/@cloudbase/ai/dist/cjs/index.js +0 -187
  119. package/node_modules/@cloudbase/ai/dist/cjs/models/Ark/index.d.ts +0 -10
  120. package/node_modules/@cloudbase/ai/dist/cjs/models/Ark/index.js +0 -130
  121. package/node_modules/@cloudbase/ai/dist/cjs/models/Ark/type.d.ts +0 -71
  122. package/node_modules/@cloudbase/ai/dist/cjs/models/Ark/type.js +0 -3
  123. package/node_modules/@cloudbase/ai/dist/cjs/models/DashScope/index.d.ts +0 -10
  124. package/node_modules/@cloudbase/ai/dist/cjs/models/DashScope/index.js +0 -130
  125. package/node_modules/@cloudbase/ai/dist/cjs/models/DashScope/type.d.ts +0 -74
  126. package/node_modules/@cloudbase/ai/dist/cjs/models/DashScope/type.js +0 -3
  127. package/node_modules/@cloudbase/ai/dist/cjs/models/DeepSeek/index.d.ts +0 -10
  128. package/node_modules/@cloudbase/ai/dist/cjs/models/DeepSeek/index.js +0 -126
  129. package/node_modules/@cloudbase/ai/dist/cjs/models/Default/index.d.ts +0 -10
  130. package/node_modules/@cloudbase/ai/dist/cjs/models/Default/index.js +0 -122
  131. package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuan/index.d.ts +0 -10
  132. package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuan/index.js +0 -135
  133. package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuan/type.d.ts +0 -74
  134. package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuan/type.js +0 -3
  135. package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuan/util.d.ts +0 -4
  136. package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuan/util.js +0 -56
  137. package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuanBeta/index.d.ts +0 -10
  138. package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuanBeta/index.js +0 -127
  139. package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuanExp/index.d.ts +0 -10
  140. package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuanExp/index.js +0 -125
  141. package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuanOpen/index.d.ts +0 -10
  142. package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuanOpen/index.js +0 -127
  143. package/node_modules/@cloudbase/ai/dist/cjs/models/Moonshot/index.d.ts +0 -10
  144. package/node_modules/@cloudbase/ai/dist/cjs/models/Moonshot/index.js +0 -130
  145. package/node_modules/@cloudbase/ai/dist/cjs/models/Moonshot/type.d.ts +0 -85
  146. package/node_modules/@cloudbase/ai/dist/cjs/models/Moonshot/type.js +0 -3
  147. package/node_modules/@cloudbase/ai/dist/cjs/models/Yi/index.d.ts +0 -10
  148. package/node_modules/@cloudbase/ai/dist/cjs/models/Yi/index.js +0 -133
  149. package/node_modules/@cloudbase/ai/dist/cjs/models/Yi/type.d.ts +0 -75
  150. package/node_modules/@cloudbase/ai/dist/cjs/models/Yi/type.js +0 -3
  151. package/node_modules/@cloudbase/ai/dist/cjs/models/ZhiPu/index.d.ts +0 -10
  152. package/node_modules/@cloudbase/ai/dist/cjs/models/ZhiPu/index.js +0 -139
  153. package/node_modules/@cloudbase/ai/dist/cjs/models/ZhiPu/type.d.ts +0 -71
  154. package/node_modules/@cloudbase/ai/dist/cjs/models/ZhiPu/type.js +0 -3
  155. package/node_modules/@cloudbase/ai/dist/cjs/models/image-model.d.ts +0 -18
  156. package/node_modules/@cloudbase/ai/dist/cjs/models/image-model.js +0 -85
  157. package/node_modules/@cloudbase/ai/dist/cjs/models/index.d.ts +0 -26
  158. package/node_modules/@cloudbase/ai/dist/cjs/models/index.js +0 -42
  159. package/node_modules/@cloudbase/ai/dist/cjs/models/model.d.ts +0 -40
  160. package/node_modules/@cloudbase/ai/dist/cjs/models/model.js +0 -481
  161. package/node_modules/@cloudbase/ai/dist/cjs/type.d.ts +0 -190
  162. package/node_modules/@cloudbase/ai/dist/cjs/type.js +0 -10
  163. package/node_modules/@cloudbase/ai/dist/cjs/utils.d.ts +0 -38
  164. package/node_modules/@cloudbase/ai/dist/cjs/utils.js +0 -263
  165. package/node_modules/@cloudbase/ai/dist/esm/AI.d.ts +0 -27
  166. package/node_modules/@cloudbase/ai/dist/esm/AI.js +0 -198
  167. package/node_modules/@cloudbase/ai/dist/esm/bot/index.d.ts +0 -41
  168. package/node_modules/@cloudbase/ai/dist/esm/bot/index.js +0 -373
  169. package/node_modules/@cloudbase/ai/dist/esm/bot/types.d.ts +0 -144
  170. package/node_modules/@cloudbase/ai/dist/esm/bot/types.js +0 -2
  171. package/node_modules/@cloudbase/ai/dist/esm/eventsource_parser/index.d.ts +0 -2
  172. package/node_modules/@cloudbase/ai/dist/esm/eventsource_parser/index.js +0 -2
  173. package/node_modules/@cloudbase/ai/dist/esm/eventsource_parser/parse.d.ts +0 -2
  174. package/node_modules/@cloudbase/ai/dist/esm/eventsource_parser/parse.js +0 -122
  175. package/node_modules/@cloudbase/ai/dist/esm/eventsource_parser/stream.d.ts +0 -5
  176. package/node_modules/@cloudbase/ai/dist/esm/eventsource_parser/stream.js +0 -37
  177. package/node_modules/@cloudbase/ai/dist/esm/eventsource_parser/types.d.ts +0 -16
  178. package/node_modules/@cloudbase/ai/dist/esm/eventsource_parser/types.js +0 -2
  179. package/node_modules/@cloudbase/ai/dist/esm/index.d.ts +0 -40
  180. package/node_modules/@cloudbase/ai/dist/esm/index.js +0 -152
  181. package/node_modules/@cloudbase/ai/dist/esm/models/Ark/index.d.ts +0 -10
  182. package/node_modules/@cloudbase/ai/dist/esm/models/Ark/index.js +0 -127
  183. package/node_modules/@cloudbase/ai/dist/esm/models/Ark/type.d.ts +0 -71
  184. package/node_modules/@cloudbase/ai/dist/esm/models/Ark/type.js +0 -2
  185. package/node_modules/@cloudbase/ai/dist/esm/models/DashScope/index.d.ts +0 -10
  186. package/node_modules/@cloudbase/ai/dist/esm/models/DashScope/index.js +0 -127
  187. package/node_modules/@cloudbase/ai/dist/esm/models/DashScope/type.d.ts +0 -74
  188. package/node_modules/@cloudbase/ai/dist/esm/models/DashScope/type.js +0 -2
  189. package/node_modules/@cloudbase/ai/dist/esm/models/DeepSeek/index.d.ts +0 -10
  190. package/node_modules/@cloudbase/ai/dist/esm/models/DeepSeek/index.js +0 -123
  191. package/node_modules/@cloudbase/ai/dist/esm/models/Default/index.d.ts +0 -10
  192. package/node_modules/@cloudbase/ai/dist/esm/models/Default/index.js +0 -119
  193. package/node_modules/@cloudbase/ai/dist/esm/models/HunYuan/index.d.ts +0 -10
  194. package/node_modules/@cloudbase/ai/dist/esm/models/HunYuan/index.js +0 -132
  195. package/node_modules/@cloudbase/ai/dist/esm/models/HunYuan/type.d.ts +0 -74
  196. package/node_modules/@cloudbase/ai/dist/esm/models/HunYuan/type.js +0 -2
  197. package/node_modules/@cloudbase/ai/dist/esm/models/HunYuan/util.d.ts +0 -4
  198. package/node_modules/@cloudbase/ai/dist/esm/models/HunYuan/util.js +0 -51
  199. package/node_modules/@cloudbase/ai/dist/esm/models/HunYuanBeta/index.d.ts +0 -10
  200. package/node_modules/@cloudbase/ai/dist/esm/models/HunYuanBeta/index.js +0 -124
  201. package/node_modules/@cloudbase/ai/dist/esm/models/HunYuanExp/index.d.ts +0 -10
  202. package/node_modules/@cloudbase/ai/dist/esm/models/HunYuanExp/index.js +0 -122
  203. package/node_modules/@cloudbase/ai/dist/esm/models/HunYuanOpen/index.d.ts +0 -10
  204. package/node_modules/@cloudbase/ai/dist/esm/models/HunYuanOpen/index.js +0 -124
  205. package/node_modules/@cloudbase/ai/dist/esm/models/Moonshot/index.d.ts +0 -10
  206. package/node_modules/@cloudbase/ai/dist/esm/models/Moonshot/index.js +0 -127
  207. package/node_modules/@cloudbase/ai/dist/esm/models/Moonshot/type.d.ts +0 -85
  208. package/node_modules/@cloudbase/ai/dist/esm/models/Moonshot/type.js +0 -2
  209. package/node_modules/@cloudbase/ai/dist/esm/models/Yi/index.d.ts +0 -10
  210. package/node_modules/@cloudbase/ai/dist/esm/models/Yi/index.js +0 -130
  211. package/node_modules/@cloudbase/ai/dist/esm/models/Yi/type.d.ts +0 -75
  212. package/node_modules/@cloudbase/ai/dist/esm/models/Yi/type.js +0 -2
  213. package/node_modules/@cloudbase/ai/dist/esm/models/ZhiPu/index.d.ts +0 -10
  214. package/node_modules/@cloudbase/ai/dist/esm/models/ZhiPu/index.js +0 -136
  215. package/node_modules/@cloudbase/ai/dist/esm/models/ZhiPu/type.d.ts +0 -71
  216. package/node_modules/@cloudbase/ai/dist/esm/models/ZhiPu/type.js +0 -2
  217. package/node_modules/@cloudbase/ai/dist/esm/models/image-model.d.ts +0 -18
  218. package/node_modules/@cloudbase/ai/dist/esm/models/image-model.js +0 -82
  219. package/node_modules/@cloudbase/ai/dist/esm/models/index.d.ts +0 -26
  220. package/node_modules/@cloudbase/ai/dist/esm/models/index.js +0 -27
  221. package/node_modules/@cloudbase/ai/dist/esm/models/model.d.ts +0 -40
  222. package/node_modules/@cloudbase/ai/dist/esm/models/model.js +0 -478
  223. package/node_modules/@cloudbase/ai/dist/esm/type.d.ts +0 -190
  224. package/node_modules/@cloudbase/ai/dist/esm/type.js +0 -7
  225. package/node_modules/@cloudbase/ai/dist/esm/utils.d.ts +0 -38
  226. package/node_modules/@cloudbase/ai/dist/esm/utils.js +0 -252
  227. package/node_modules/@cloudbase/ai/dist/miniprogram/index.js +0 -2
  228. package/node_modules/@cloudbase/ai/dist/miniprogram/index.js.LICENSE.txt +0 -22
  229. package/node_modules/@cloudbase/ai/package.json +0 -32
  230. package/node_modules/@cloudbase/apis/.eslintrc.js +0 -15
  231. package/node_modules/@cloudbase/apis/dist/cjs/callApis.d.ts +0 -20
  232. package/node_modules/@cloudbase/apis/dist/cjs/callApis.js +0 -154
  233. package/node_modules/@cloudbase/apis/dist/cjs/index.d.ts +0 -5
  234. package/node_modules/@cloudbase/apis/dist/cjs/index.js +0 -53
  235. package/node_modules/@cloudbase/apis/dist/cjs/type.d.ts +0 -14
  236. package/node_modules/@cloudbase/apis/dist/cjs/type.js +0 -3
  237. package/node_modules/@cloudbase/apis/dist/esm/callApis.d.ts +0 -20
  238. package/node_modules/@cloudbase/apis/dist/esm/callApis.js +0 -148
  239. package/node_modules/@cloudbase/apis/dist/esm/index.d.ts +0 -5
  240. package/node_modules/@cloudbase/apis/dist/esm/index.js +0 -35
  241. package/node_modules/@cloudbase/apis/dist/esm/type.d.ts +0 -14
  242. package/node_modules/@cloudbase/apis/dist/esm/type.js +0 -2
  243. package/node_modules/@cloudbase/apis/dist/miniprogram/index.js +0 -1
  244. package/node_modules/@cloudbase/apis/package.json +0 -28
  245. package/node_modules/@cloudbase/app/.eslintrc.js +0 -12
  246. package/node_modules/@cloudbase/app/dist/cjs/constants/common.d.ts +0 -38
  247. package/node_modules/@cloudbase/app/dist/cjs/constants/common.js +0 -103
  248. package/node_modules/@cloudbase/app/dist/cjs/index.d.ts +0 -65
  249. package/node_modules/@cloudbase/app/dist/cjs/index.js +0 -340
  250. package/node_modules/@cloudbase/app/dist/cjs/index.node.d.ts +0 -6
  251. package/node_modules/@cloudbase/app/dist/cjs/index.node.js +0 -20
  252. package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/constants.d.ts +0 -33
  253. package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/constants.js +0 -38
  254. package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/context.d.ts +0 -13
  255. package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/context.js +0 -162
  256. package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/index.d.ts +0 -23
  257. package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/index.js +0 -124
  258. package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/metadata.d.ts +0 -14
  259. package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/metadata.js +0 -130
  260. package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/request.d.ts +0 -38
  261. package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/request.js +0 -486
  262. package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/tool.d.ts +0 -2
  263. package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/tool.js +0 -228
  264. package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/types.d.ts +0 -78
  265. package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/types.js +0 -3
  266. package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/utils.d.ts +0 -17
  267. package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/utils.js +0 -221
  268. package/node_modules/@cloudbase/app/dist/cjs/libs/adapter.d.ts +0 -3
  269. package/node_modules/@cloudbase/app/dist/cjs/libs/adapter.js +0 -163
  270. package/node_modules/@cloudbase/app/dist/cjs/libs/cache.d.ts +0 -6
  271. package/node_modules/@cloudbase/app/dist/cjs/libs/cache.js +0 -38
  272. package/node_modules/@cloudbase/app/dist/cjs/libs/component.d.ts +0 -3
  273. package/node_modules/@cloudbase/app/dist/cjs/libs/component.js +0 -126
  274. package/node_modules/@cloudbase/app/dist/cjs/libs/lang.d.ts +0 -23
  275. package/node_modules/@cloudbase/app/dist/cjs/libs/lang.js +0 -59
  276. package/node_modules/@cloudbase/app/dist/cjs/libs/request.d.ts +0 -62
  277. package/node_modules/@cloudbase/app/dist/cjs/libs/request.js +0 -480
  278. package/node_modules/@cloudbase/app/dist/esm/constants/common.d.ts +0 -38
  279. package/node_modules/@cloudbase/app/dist/esm/constants/common.js +0 -91
  280. package/node_modules/@cloudbase/app/dist/esm/index.d.ts +0 -65
  281. package/node_modules/@cloudbase/app/dist/esm/index.js +0 -335
  282. package/node_modules/@cloudbase/app/dist/esm/index.node.d.ts +0 -6
  283. package/node_modules/@cloudbase/app/dist/esm/index.node.js +0 -12
  284. package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/constants.d.ts +0 -33
  285. package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/constants.js +0 -35
  286. package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/context.d.ts +0 -13
  287. package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/context.js +0 -156
  288. package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/index.d.ts +0 -23
  289. package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/index.js +0 -118
  290. package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/metadata.d.ts +0 -14
  291. package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/metadata.js +0 -123
  292. package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/request.d.ts +0 -38
  293. package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/request.js +0 -460
  294. package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/tool.d.ts +0 -2
  295. package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/tool.js +0 -224
  296. package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/types.d.ts +0 -78
  297. package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/types.js +0 -2
  298. package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/utils.d.ts +0 -17
  299. package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/utils.js +0 -205
  300. package/node_modules/@cloudbase/app/dist/esm/libs/adapter.d.ts +0 -3
  301. package/node_modules/@cloudbase/app/dist/esm/libs/adapter.js +0 -136
  302. package/node_modules/@cloudbase/app/dist/esm/libs/cache.d.ts +0 -6
  303. package/node_modules/@cloudbase/app/dist/esm/libs/cache.js +0 -32
  304. package/node_modules/@cloudbase/app/dist/esm/libs/component.d.ts +0 -3
  305. package/node_modules/@cloudbase/app/dist/esm/libs/component.js +0 -121
  306. package/node_modules/@cloudbase/app/dist/esm/libs/lang.d.ts +0 -23
  307. package/node_modules/@cloudbase/app/dist/esm/libs/lang.js +0 -54
  308. package/node_modules/@cloudbase/app/dist/esm/libs/request.d.ts +0 -62
  309. package/node_modules/@cloudbase/app/dist/esm/libs/request.js +0 -475
  310. package/node_modules/@cloudbase/app/dist/miniprogram/index.js +0 -2
  311. package/node_modules/@cloudbase/app/dist/miniprogram/index.js.LICENSE.txt +0 -7
  312. package/node_modules/@cloudbase/app/package.json +0 -59
  313. package/node_modules/@cloudbase/auth/.eslintrc.js +0 -15
  314. package/node_modules/@cloudbase/auth/dist/cjs/adapter.d.ts +0 -2
  315. package/node_modules/@cloudbase/auth/dist/cjs/adapter.js +0 -272
  316. package/node_modules/@cloudbase/auth/dist/cjs/index.d.ts +0 -283
  317. package/node_modules/@cloudbase/auth/dist/cjs/index.js +0 -3018
  318. package/node_modules/@cloudbase/auth/dist/cjs/type.d.ts +0 -258
  319. package/node_modules/@cloudbase/auth/dist/cjs/type.js +0 -6
  320. package/node_modules/@cloudbase/auth/dist/cjs/utilities.d.ts +0 -7
  321. package/node_modules/@cloudbase/auth/dist/cjs/utilities.js +0 -23
  322. package/node_modules/@cloudbase/auth/dist/cjs/utils.d.ts +0 -5
  323. package/node_modules/@cloudbase/auth/dist/cjs/utils.js +0 -60
  324. package/node_modules/@cloudbase/auth/dist/cjs/v1-compat.d.ts +0 -77
  325. package/node_modules/@cloudbase/auth/dist/cjs/v1-compat.js +0 -423
  326. package/node_modules/@cloudbase/auth/dist/esm/adapter.d.ts +0 -2
  327. package/node_modules/@cloudbase/auth/dist/esm/adapter.js +0 -268
  328. package/node_modules/@cloudbase/auth/dist/esm/index.d.ts +0 -283
  329. package/node_modules/@cloudbase/auth/dist/esm/index.js +0 -3008
  330. package/node_modules/@cloudbase/auth/dist/esm/type.d.ts +0 -258
  331. package/node_modules/@cloudbase/auth/dist/esm/type.js +0 -3
  332. package/node_modules/@cloudbase/auth/dist/esm/utilities.d.ts +0 -7
  333. package/node_modules/@cloudbase/auth/dist/esm/utilities.js +0 -8
  334. package/node_modules/@cloudbase/auth/dist/esm/utils.d.ts +0 -5
  335. package/node_modules/@cloudbase/auth/dist/esm/utils.js +0 -52
  336. package/node_modules/@cloudbase/auth/dist/esm/v1-compat.d.ts +0 -77
  337. package/node_modules/@cloudbase/auth/dist/esm/v1-compat.js +0 -419
  338. package/node_modules/@cloudbase/auth/dist/miniprogram/index.js +0 -1
  339. package/node_modules/@cloudbase/auth/package.json +0 -31
  340. package/node_modules/@cloudbase/cloudrun/.eslintrc.js +0 -15
  341. package/node_modules/@cloudbase/cloudrun/dist/cjs/index.d.ts +0 -4
  342. package/node_modules/@cloudbase/cloudrun/dist/cjs/index.js +0 -154
  343. package/node_modules/@cloudbase/cloudrun/dist/esm/index.d.ts +0 -4
  344. package/node_modules/@cloudbase/cloudrun/dist/esm/index.js +0 -149
  345. package/node_modules/@cloudbase/cloudrun/package.json +0 -30
  346. package/node_modules/@cloudbase/container/.eslintrc.js +0 -15
  347. package/node_modules/@cloudbase/container/.prettierrc.js +0 -41
  348. package/node_modules/@cloudbase/container/dist/cjs/constants/index.d.ts +0 -1
  349. package/node_modules/@cloudbase/container/dist/cjs/constants/index.js +0 -5
  350. package/node_modules/@cloudbase/container/dist/cjs/go_wams_exec.d.ts +0 -2
  351. package/node_modules/@cloudbase/container/dist/cjs/go_wams_exec.js +0 -538
  352. package/node_modules/@cloudbase/container/dist/cjs/index.d.ts +0 -13
  353. package/node_modules/@cloudbase/container/dist/cjs/index.js +0 -343
  354. package/node_modules/@cloudbase/container/dist/cjs/utils/index.d.ts +0 -3
  355. package/node_modules/@cloudbase/container/dist/cjs/utils/index.js +0 -83
  356. package/node_modules/@cloudbase/container/dist/cjs/utils/loader.d.ts +0 -8
  357. package/node_modules/@cloudbase/container/dist/cjs/utils/loader.js +0 -186
  358. package/node_modules/@cloudbase/container/dist/cjs/utils/request.d.ts +0 -12
  359. package/node_modules/@cloudbase/container/dist/cjs/utils/request.js +0 -106
  360. package/node_modules/@cloudbase/container/dist/esm/constants/index.d.ts +0 -1
  361. package/node_modules/@cloudbase/container/dist/esm/constants/index.js +0 -2
  362. package/node_modules/@cloudbase/container/dist/esm/go_wams_exec.d.ts +0 -2
  363. package/node_modules/@cloudbase/container/dist/esm/go_wams_exec.js +0 -536
  364. package/node_modules/@cloudbase/container/dist/esm/index.d.ts +0 -13
  365. package/node_modules/@cloudbase/container/dist/esm/index.js +0 -338
  366. package/node_modules/@cloudbase/container/dist/esm/utils/index.d.ts +0 -3
  367. package/node_modules/@cloudbase/container/dist/esm/utils/index.js +0 -77
  368. package/node_modules/@cloudbase/container/dist/esm/utils/loader.d.ts +0 -8
  369. package/node_modules/@cloudbase/container/dist/esm/utils/loader.js +0 -178
  370. package/node_modules/@cloudbase/container/dist/esm/utils/request.d.ts +0 -12
  371. package/node_modules/@cloudbase/container/dist/esm/utils/request.js +0 -102
  372. package/node_modules/@cloudbase/container/package.json +0 -30
  373. package/node_modules/@cloudbase/database/README.md +0 -119
  374. package/node_modules/@cloudbase/database/package.json +0 -36
  375. package/node_modules/@cloudbase/database/tsconfig.test.json +0 -15
  376. package/node_modules/@cloudbase/functions/.eslintrc.js +0 -15
  377. package/node_modules/@cloudbase/functions/dist/cjs/index.d.ts +0 -2
  378. package/node_modules/@cloudbase/functions/dist/cjs/index.js +0 -223
  379. package/node_modules/@cloudbase/functions/dist/esm/index.d.ts +0 -2
  380. package/node_modules/@cloudbase/functions/dist/esm/index.js +0 -219
  381. package/node_modules/@cloudbase/functions/package.json +0 -32
  382. package/node_modules/@cloudbase/model/.eslintrc.js +0 -15
  383. package/node_modules/@cloudbase/model/dist/cjs/index.d.ts +0 -5
  384. package/node_modules/@cloudbase/model/dist/cjs/index.js +0 -144
  385. package/node_modules/@cloudbase/model/dist/esm/index.d.ts +0 -5
  386. package/node_modules/@cloudbase/model/dist/esm/index.js +0 -125
  387. package/node_modules/@cloudbase/model/package.json +0 -29
  388. package/node_modules/@cloudbase/mysql/.eslintrc.js +0 -6
  389. package/node_modules/@cloudbase/mysql/dist/cjs/index.d.ts +0 -4
  390. package/node_modules/@cloudbase/mysql/dist/cjs/index.d.ts.map +0 -1
  391. package/node_modules/@cloudbase/mysql/dist/cjs/index.js +0 -173
  392. package/node_modules/@cloudbase/mysql/dist/esm/index.d.ts +0 -3
  393. package/node_modules/@cloudbase/mysql/dist/esm/index.js +0 -155
  394. package/node_modules/@cloudbase/mysql/package.json +0 -30
  395. package/node_modules/@cloudbase/oauth/.eslintrc.js +0 -15
  396. package/node_modules/@cloudbase/oauth/dist/cjs/auth/apis.d.ts +0 -142
  397. package/node_modules/@cloudbase/oauth/dist/cjs/auth/apis.js +0 -1280
  398. package/node_modules/@cloudbase/oauth/dist/cjs/auth/auth-error.d.ts +0 -22
  399. package/node_modules/@cloudbase/oauth/dist/cjs/auth/auth-error.js +0 -278
  400. package/node_modules/@cloudbase/oauth/dist/cjs/auth/consts.d.ts +0 -139
  401. package/node_modules/@cloudbase/oauth/dist/cjs/auth/consts.js +0 -147
  402. package/node_modules/@cloudbase/oauth/dist/cjs/auth/models.d.ts +0 -557
  403. package/node_modules/@cloudbase/oauth/dist/cjs/auth/models.js +0 -3
  404. package/node_modules/@cloudbase/oauth/dist/cjs/captcha/captcha-dom.d.ts +0 -3
  405. package/node_modules/@cloudbase/oauth/dist/cjs/captcha/captcha-dom.js +0 -223
  406. package/node_modules/@cloudbase/oauth/dist/cjs/captcha/captcha.d.ts +0 -42
  407. package/node_modules/@cloudbase/oauth/dist/cjs/captcha/captcha.js +0 -205
  408. package/node_modules/@cloudbase/oauth/dist/cjs/index.d.ts +0 -22
  409. package/node_modules/@cloudbase/oauth/dist/cjs/index.js +0 -107
  410. package/node_modules/@cloudbase/oauth/dist/cjs/oauth2client/consts.d.ts +0 -20
  411. package/node_modules/@cloudbase/oauth/dist/cjs/oauth2client/consts.js +0 -26
  412. package/node_modules/@cloudbase/oauth/dist/cjs/oauth2client/interface.d.ts +0 -15
  413. package/node_modules/@cloudbase/oauth/dist/cjs/oauth2client/interface.js +0 -10
  414. package/node_modules/@cloudbase/oauth/dist/cjs/oauth2client/models.d.ts +0 -74
  415. package/node_modules/@cloudbase/oauth/dist/cjs/oauth2client/models.js +0 -3
  416. package/node_modules/@cloudbase/oauth/dist/cjs/oauth2client/oauth2client.d.ts +0 -129
  417. package/node_modules/@cloudbase/oauth/dist/cjs/oauth2client/oauth2client.js +0 -1174
  418. package/node_modules/@cloudbase/oauth/dist/cjs/utils/base64.d.ts +0 -9
  419. package/node_modules/@cloudbase/oauth/dist/cjs/utils/base64.js +0 -112
  420. package/node_modules/@cloudbase/oauth/dist/cjs/utils/encrypt.d.ts +0 -4
  421. package/node_modules/@cloudbase/oauth/dist/cjs/utils/encrypt.js +0 -26
  422. package/node_modules/@cloudbase/oauth/dist/cjs/utils/encryptlong/index.d.ts +0 -546
  423. package/node_modules/@cloudbase/oauth/dist/cjs/utils/encryptlong/index.js +0 -2982
  424. package/node_modules/@cloudbase/oauth/dist/cjs/utils/function/single-promise.d.ts +0 -6
  425. package/node_modules/@cloudbase/oauth/dist/cjs/utils/function/single-promise.js +0 -94
  426. package/node_modules/@cloudbase/oauth/dist/cjs/utils/index.d.ts +0 -2
  427. package/node_modules/@cloudbase/oauth/dist/cjs/utils/index.js +0 -56
  428. package/node_modules/@cloudbase/oauth/dist/cjs/utils/mp.d.ts +0 -2
  429. package/node_modules/@cloudbase/oauth/dist/cjs/utils/mp.js +0 -66
  430. package/node_modules/@cloudbase/oauth/dist/cjs/utils/urlSearchParams.d.ts +0 -13
  431. package/node_modules/@cloudbase/oauth/dist/cjs/utils/urlSearchParams.js +0 -66
  432. package/node_modules/@cloudbase/oauth/dist/cjs/utils/uuid.d.ts +0 -1
  433. package/node_modules/@cloudbase/oauth/dist/cjs/utils/uuid.js +0 -12
  434. package/node_modules/@cloudbase/oauth/dist/esm/auth/apis.d.ts +0 -142
  435. package/node_modules/@cloudbase/oauth/dist/esm/auth/apis.js +0 -768
  436. package/node_modules/@cloudbase/oauth/dist/esm/auth/auth-error.d.ts +0 -22
  437. package/node_modules/@cloudbase/oauth/dist/esm/auth/auth-error.js +0 -255
  438. package/node_modules/@cloudbase/oauth/dist/esm/auth/consts.d.ts +0 -139
  439. package/node_modules/@cloudbase/oauth/dist/esm/auth/consts.js +0 -144
  440. package/node_modules/@cloudbase/oauth/dist/esm/auth/models.d.ts +0 -557
  441. package/node_modules/@cloudbase/oauth/dist/esm/auth/models.js +0 -2
  442. package/node_modules/@cloudbase/oauth/dist/esm/captcha/captcha-dom.d.ts +0 -3
  443. package/node_modules/@cloudbase/oauth/dist/esm/captcha/captcha-dom.js +0 -130
  444. package/node_modules/@cloudbase/oauth/dist/esm/captcha/captcha.d.ts +0 -42
  445. package/node_modules/@cloudbase/oauth/dist/esm/captcha/captcha.js +0 -104
  446. package/node_modules/@cloudbase/oauth/dist/esm/index.d.ts +0 -22
  447. package/node_modules/@cloudbase/oauth/dist/esm/index.js +0 -64
  448. package/node_modules/@cloudbase/oauth/dist/esm/oauth2client/consts.d.ts +0 -20
  449. package/node_modules/@cloudbase/oauth/dist/esm/oauth2client/consts.js +0 -22
  450. package/node_modules/@cloudbase/oauth/dist/esm/oauth2client/interface.d.ts +0 -15
  451. package/node_modules/@cloudbase/oauth/dist/esm/oauth2client/interface.js +0 -3
  452. package/node_modules/@cloudbase/oauth/dist/esm/oauth2client/models.d.ts +0 -74
  453. package/node_modules/@cloudbase/oauth/dist/esm/oauth2client/models.js +0 -2
  454. package/node_modules/@cloudbase/oauth/dist/esm/oauth2client/oauth2client.d.ts +0 -129
  455. package/node_modules/@cloudbase/oauth/dist/esm/oauth2client/oauth2client.js +0 -711
  456. package/node_modules/@cloudbase/oauth/dist/esm/utils/base64.d.ts +0 -9
  457. package/node_modules/@cloudbase/oauth/dist/esm/utils/base64.js +0 -104
  458. package/node_modules/@cloudbase/oauth/dist/esm/utils/encrypt.d.ts +0 -4
  459. package/node_modules/@cloudbase/oauth/dist/esm/utils/encrypt.js +0 -18
  460. package/node_modules/@cloudbase/oauth/dist/esm/utils/encryptlong/index.d.ts +0 -546
  461. package/node_modules/@cloudbase/oauth/dist/esm/utils/encryptlong/index.js +0 -2953
  462. package/node_modules/@cloudbase/oauth/dist/esm/utils/function/single-promise.d.ts +0 -6
  463. package/node_modules/@cloudbase/oauth/dist/esm/utils/function/single-promise.js +0 -34
  464. package/node_modules/@cloudbase/oauth/dist/esm/utils/index.d.ts +0 -2
  465. package/node_modules/@cloudbase/oauth/dist/esm/utils/index.js +0 -51
  466. package/node_modules/@cloudbase/oauth/dist/esm/utils/mp.d.ts +0 -2
  467. package/node_modules/@cloudbase/oauth/dist/esm/utils/mp.js +0 -61
  468. package/node_modules/@cloudbase/oauth/dist/esm/utils/urlSearchParams.d.ts +0 -13
  469. package/node_modules/@cloudbase/oauth/dist/esm/utils/urlSearchParams.js +0 -58
  470. package/node_modules/@cloudbase/oauth/dist/esm/utils/uuid.d.ts +0 -1
  471. package/node_modules/@cloudbase/oauth/dist/esm/utils/uuid.js +0 -8
  472. package/node_modules/@cloudbase/oauth/dist/miniprogram/index.js +0 -1
  473. package/node_modules/@cloudbase/oauth/package.json +0 -20
  474. package/node_modules/@cloudbase/realtime/.eslintrc.js +0 -15
  475. package/node_modules/@cloudbase/realtime/dist/cjs/common.d.ts +0 -4
  476. package/node_modules/@cloudbase/realtime/dist/cjs/common.js +0 -22
  477. package/node_modules/@cloudbase/realtime/dist/cjs/error.d.ts +0 -36
  478. package/node_modules/@cloudbase/realtime/dist/cjs/error.js +0 -106
  479. package/node_modules/@cloudbase/realtime/dist/cjs/index.d.ts +0 -2
  480. package/node_modules/@cloudbase/realtime/dist/cjs/index.js +0 -36
  481. package/node_modules/@cloudbase/realtime/dist/cjs/listener.d.ts +0 -14
  482. package/node_modules/@cloudbase/realtime/dist/cjs/listener.js +0 -18
  483. package/node_modules/@cloudbase/realtime/dist/cjs/message.d.ts +0 -3
  484. package/node_modules/@cloudbase/realtime/dist/cjs/message.js +0 -13
  485. package/node_modules/@cloudbase/realtime/dist/cjs/snapshot.d.ts +0 -17
  486. package/node_modules/@cloudbase/realtime/dist/cjs/snapshot.js +0 -45
  487. package/node_modules/@cloudbase/realtime/dist/cjs/utils.d.ts +0 -1
  488. package/node_modules/@cloudbase/realtime/dist/cjs/utils.js +0 -9
  489. package/node_modules/@cloudbase/realtime/dist/cjs/virtual-websocket-client.d.ts +0 -62
  490. package/node_modules/@cloudbase/realtime/dist/cjs/virtual-websocket-client.js +0 -960
  491. package/node_modules/@cloudbase/realtime/dist/cjs/websocket-client.d.ts +0 -78
  492. package/node_modules/@cloudbase/realtime/dist/cjs/websocket-client.js +0 -750
  493. package/node_modules/@cloudbase/realtime/dist/cjs/ws-event.d.ts +0 -126
  494. package/node_modules/@cloudbase/realtime/dist/cjs/ws-event.js +0 -141
  495. package/node_modules/@cloudbase/realtime/dist/esm/common.d.ts +0 -4
  496. package/node_modules/@cloudbase/realtime/dist/esm/common.js +0 -15
  497. package/node_modules/@cloudbase/realtime/dist/esm/error.d.ts +0 -36
  498. package/node_modules/@cloudbase/realtime/dist/esm/error.js +0 -100
  499. package/node_modules/@cloudbase/realtime/dist/esm/index.d.ts +0 -2
  500. package/node_modules/@cloudbase/realtime/dist/esm/index.js +0 -32
  501. package/node_modules/@cloudbase/realtime/dist/esm/listener.d.ts +0 -14
  502. package/node_modules/@cloudbase/realtime/dist/esm/listener.js +0 -15
  503. package/node_modules/@cloudbase/realtime/dist/esm/message.d.ts +0 -3
  504. package/node_modules/@cloudbase/realtime/dist/esm/message.js +0 -8
  505. package/node_modules/@cloudbase/realtime/dist/esm/snapshot.d.ts +0 -17
  506. package/node_modules/@cloudbase/realtime/dist/esm/snapshot.js +0 -42
  507. package/node_modules/@cloudbase/realtime/dist/esm/utils.d.ts +0 -1
  508. package/node_modules/@cloudbase/realtime/dist/esm/utils.js +0 -5
  509. package/node_modules/@cloudbase/realtime/dist/esm/virtual-websocket-client.d.ts +0 -62
  510. package/node_modules/@cloudbase/realtime/dist/esm/virtual-websocket-client.js +0 -954
  511. package/node_modules/@cloudbase/realtime/dist/esm/websocket-client.d.ts +0 -78
  512. package/node_modules/@cloudbase/realtime/dist/esm/websocket-client.js +0 -747
  513. package/node_modules/@cloudbase/realtime/dist/esm/ws-event.d.ts +0 -126
  514. package/node_modules/@cloudbase/realtime/dist/esm/ws-event.js +0 -137
  515. package/node_modules/@cloudbase/realtime/package.json +0 -29
  516. package/node_modules/@cloudbase/storage/.eslintrc.js +0 -15
  517. package/node_modules/@cloudbase/storage/dist/cjs/index.d.ts +0 -195
  518. package/node_modules/@cloudbase/storage/dist/cjs/index.js +0 -1426
  519. package/node_modules/@cloudbase/storage/dist/cjs/supabase/errors.d.ts +0 -20
  520. package/node_modules/@cloudbase/storage/dist/cjs/supabase/errors.js +0 -65
  521. package/node_modules/@cloudbase/storage/dist/cjs/supabase/types.d.ts +0 -64
  522. package/node_modules/@cloudbase/storage/dist/cjs/supabase/types.js +0 -3
  523. package/node_modules/@cloudbase/storage/dist/esm/index.d.ts +0 -195
  524. package/node_modules/@cloudbase/storage/dist/esm/index.js +0 -1422
  525. package/node_modules/@cloudbase/storage/dist/esm/supabase/errors.d.ts +0 -20
  526. package/node_modules/@cloudbase/storage/dist/esm/supabase/errors.js +0 -61
  527. package/node_modules/@cloudbase/storage/dist/esm/supabase/types.d.ts +0 -64
  528. package/node_modules/@cloudbase/storage/dist/esm/supabase/types.js +0 -2
  529. package/node_modules/@cloudbase/storage/package.json +0 -28
  530. package/node_modules/@cloudbase/types/index.js +0 -1
  531. package/node_modules/@cloudbase/utilities/.eslintrc.js +0 -15
  532. package/oauth/src/index.d.ts +0 -1
  533. package/oauth/src/index.ts +0 -1
  534. package/realtime/src/index.d.ts +0 -2
  535. package/realtime/src/index.ts +0 -8
  536. package/storage/src/index.d.ts +0 -2
  537. package/storage/src/index.js +0 -5
  538. package/storage/src/index.ts +0 -4
  539. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/aggregate.d.ts +0 -0
  540. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/aggregate.js +0 -0
  541. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/collection.d.ts +0 -0
  542. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/collection.js +0 -0
  543. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/command.d.ts +0 -0
  544. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/command.js +0 -0
  545. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/commands/logic.d.ts +0 -0
  546. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/commands/logic.js +0 -0
  547. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/commands/query.d.ts +0 -0
  548. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/commands/query.js +0 -0
  549. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/commands/update.d.ts +0 -0
  550. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/commands/update.js +0 -0
  551. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/config/app.config.d.ts +0 -0
  552. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/config/app.config.js +0 -0
  553. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/config/error.config.d.ts +0 -0
  554. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/config/error.config.js +0 -0
  555. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/const/code.d.ts +0 -0
  556. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/const/code.js +0 -0
  557. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/constant.d.ts +0 -0
  558. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/constant.js +0 -0
  559. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/document.d.ts +0 -0
  560. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/document.js +0 -0
  561. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/index.d.ts +0 -0
  562. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/index.js +0 -0
  563. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/interface.d.ts +0 -0
  564. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/interface.js +0 -0
  565. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/lineString.d.ts +0 -0
  566. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/lineString.js +0 -0
  567. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/multiLineString.d.ts +0 -0
  568. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/multiLineString.js +0 -0
  569. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/multiPoint.d.ts +0 -0
  570. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/multiPoint.js +0 -0
  571. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/multiPolygon.d.ts +0 -0
  572. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/multiPolygon.js +0 -0
  573. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/point.d.ts +0 -0
  574. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/point.js +0 -0
  575. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/polygon.d.ts +0 -0
  576. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/polygon.js +0 -0
  577. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/helper/symbol.d.ts +0 -0
  578. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/helper/symbol.js +0 -0
  579. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/index.d.ts +0 -0
  580. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/index.js +0 -0
  581. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/lib/util.d.ts +0 -0
  582. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/lib/util.js +0 -0
  583. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/operator-map.d.ts +0 -0
  584. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/operator-map.js +0 -0
  585. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/query.d.ts +0 -0
  586. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/query.js +0 -0
  587. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/regexp/index.d.ts +0 -0
  588. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/regexp/index.js +0 -0
  589. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/serializer/common.d.ts +0 -0
  590. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/serializer/common.js +0 -0
  591. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/serializer/datatype.d.ts +0 -0
  592. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/serializer/datatype.js +0 -0
  593. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/serializer/query.d.ts +0 -0
  594. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/serializer/query.js +0 -0
  595. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/serializer/update.d.ts +0 -0
  596. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/serializer/update.js +0 -0
  597. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/serverDate/index.d.ts +0 -0
  598. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/serverDate/index.js +0 -0
  599. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/transaction/collection.d.ts +0 -0
  600. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/transaction/collection.js +0 -0
  601. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/transaction/document.d.ts +0 -0
  602. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/transaction/document.js +0 -0
  603. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/transaction/index.d.ts +0 -0
  604. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/transaction/index.js +0 -0
  605. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/transaction/query.d.ts +0 -0
  606. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/transaction/query.js +0 -0
  607. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/typings/index.d.ts +0 -0
  608. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/typings/index.js +0 -0
  609. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/typings/realtime.d.ts +0 -0
  610. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/typings/realtime.js +0 -0
  611. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/util.d.ts +0 -0
  612. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/util.js +0 -0
  613. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/utils/error.d.ts +0 -0
  614. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/utils/error.js +0 -0
  615. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/utils/msg.d.ts +0 -0
  616. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/utils/msg.js +0 -0
  617. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/utils/symbol.d.ts +0 -0
  618. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/utils/symbol.js +0 -0
  619. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/utils/type.d.ts +0 -0
  620. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/utils/type.js +0 -0
  621. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/utils/utils.d.ts +0 -0
  622. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/utils/utils.js +0 -0
  623. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/validate.d.ts +0 -0
  624. /package/{node_modules/@cloudbase/database → database}/dist/commonjs/validate.js +0 -0
  625. /package/{node_modules/@cloudbase/database → database}/dist/esm/aggregate.d.ts +0 -0
  626. /package/{node_modules/@cloudbase/database → database}/dist/esm/aggregate.js +0 -0
  627. /package/{node_modules/@cloudbase/database → database}/dist/esm/collection.d.ts +0 -0
  628. /package/{node_modules/@cloudbase/database → database}/dist/esm/collection.js +0 -0
  629. /package/{node_modules/@cloudbase/database → database}/dist/esm/command.d.ts +0 -0
  630. /package/{node_modules/@cloudbase/database → database}/dist/esm/command.js +0 -0
  631. /package/{node_modules/@cloudbase/database → database}/dist/esm/commands/logic.d.ts +0 -0
  632. /package/{node_modules/@cloudbase/database → database}/dist/esm/commands/logic.js +0 -0
  633. /package/{node_modules/@cloudbase/database → database}/dist/esm/commands/query.d.ts +0 -0
  634. /package/{node_modules/@cloudbase/database → database}/dist/esm/commands/query.js +0 -0
  635. /package/{node_modules/@cloudbase/database → database}/dist/esm/commands/update.d.ts +0 -0
  636. /package/{node_modules/@cloudbase/database → database}/dist/esm/commands/update.js +0 -0
  637. /package/{node_modules/@cloudbase/database → database}/dist/esm/config/app.config.d.ts +0 -0
  638. /package/{node_modules/@cloudbase/database → database}/dist/esm/config/app.config.js +0 -0
  639. /package/{node_modules/@cloudbase/database → database}/dist/esm/config/error.config.d.ts +0 -0
  640. /package/{node_modules/@cloudbase/database → database}/dist/esm/config/error.config.js +0 -0
  641. /package/{node_modules/@cloudbase/database → database}/dist/esm/const/code.d.ts +0 -0
  642. /package/{node_modules/@cloudbase/database → database}/dist/esm/const/code.js +0 -0
  643. /package/{node_modules/@cloudbase/database → database}/dist/esm/constant.d.ts +0 -0
  644. /package/{node_modules/@cloudbase/database → database}/dist/esm/constant.js +0 -0
  645. /package/{node_modules/@cloudbase/database → database}/dist/esm/document.d.ts +0 -0
  646. /package/{node_modules/@cloudbase/database → database}/dist/esm/document.js +0 -0
  647. /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/index.d.ts +0 -0
  648. /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/index.js +0 -0
  649. /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/interface.d.ts +0 -0
  650. /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/interface.js +0 -0
  651. /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/lineString.d.ts +0 -0
  652. /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/lineString.js +0 -0
  653. /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/multiLineString.d.ts +0 -0
  654. /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/multiLineString.js +0 -0
  655. /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/multiPoint.d.ts +0 -0
  656. /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/multiPoint.js +0 -0
  657. /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/multiPolygon.d.ts +0 -0
  658. /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/multiPolygon.js +0 -0
  659. /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/point.d.ts +0 -0
  660. /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/point.js +0 -0
  661. /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/polygon.d.ts +0 -0
  662. /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/polygon.js +0 -0
  663. /package/{node_modules/@cloudbase/database → database}/dist/esm/helper/symbol.d.ts +0 -0
  664. /package/{node_modules/@cloudbase/database → database}/dist/esm/helper/symbol.js +0 -0
  665. /package/{node_modules/@cloudbase/database → database}/dist/esm/index.d.ts +0 -0
  666. /package/{node_modules/@cloudbase/database → database}/dist/esm/index.js +0 -0
  667. /package/{node_modules/@cloudbase/database → database}/dist/esm/lib/util.d.ts +0 -0
  668. /package/{node_modules/@cloudbase/database → database}/dist/esm/lib/util.js +0 -0
  669. /package/{node_modules/@cloudbase/database → database}/dist/esm/operator-map.d.ts +0 -0
  670. /package/{node_modules/@cloudbase/database → database}/dist/esm/operator-map.js +0 -0
  671. /package/{node_modules/@cloudbase/database → database}/dist/esm/query.d.ts +0 -0
  672. /package/{node_modules/@cloudbase/database → database}/dist/esm/query.js +0 -0
  673. /package/{node_modules/@cloudbase/database → database}/dist/esm/regexp/index.d.ts +0 -0
  674. /package/{node_modules/@cloudbase/database → database}/dist/esm/regexp/index.js +0 -0
  675. /package/{node_modules/@cloudbase/database → database}/dist/esm/serializer/common.d.ts +0 -0
  676. /package/{node_modules/@cloudbase/database → database}/dist/esm/serializer/common.js +0 -0
  677. /package/{node_modules/@cloudbase/database → database}/dist/esm/serializer/datatype.d.ts +0 -0
  678. /package/{node_modules/@cloudbase/database → database}/dist/esm/serializer/datatype.js +0 -0
  679. /package/{node_modules/@cloudbase/database → database}/dist/esm/serializer/query.d.ts +0 -0
  680. /package/{node_modules/@cloudbase/database → database}/dist/esm/serializer/query.js +0 -0
  681. /package/{node_modules/@cloudbase/database → database}/dist/esm/serializer/update.d.ts +0 -0
  682. /package/{node_modules/@cloudbase/database → database}/dist/esm/serializer/update.js +0 -0
  683. /package/{node_modules/@cloudbase/database → database}/dist/esm/serverDate/index.d.ts +0 -0
  684. /package/{node_modules/@cloudbase/database → database}/dist/esm/serverDate/index.js +0 -0
  685. /package/{node_modules/@cloudbase/database → database}/dist/esm/transaction/collection.d.ts +0 -0
  686. /package/{node_modules/@cloudbase/database → database}/dist/esm/transaction/collection.js +0 -0
  687. /package/{node_modules/@cloudbase/database → database}/dist/esm/transaction/document.d.ts +0 -0
  688. /package/{node_modules/@cloudbase/database → database}/dist/esm/transaction/document.js +0 -0
  689. /package/{node_modules/@cloudbase/database → database}/dist/esm/transaction/index.d.ts +0 -0
  690. /package/{node_modules/@cloudbase/database → database}/dist/esm/transaction/index.js +0 -0
  691. /package/{node_modules/@cloudbase/database → database}/dist/esm/transaction/query.d.ts +0 -0
  692. /package/{node_modules/@cloudbase/database → database}/dist/esm/transaction/query.js +0 -0
  693. /package/{node_modules/@cloudbase/database → database}/dist/esm/typings/index.d.ts +0 -0
  694. /package/{node_modules/@cloudbase/database → database}/dist/esm/typings/index.js +0 -0
  695. /package/{node_modules/@cloudbase/database → database}/dist/esm/typings/realtime.d.ts +0 -0
  696. /package/{node_modules/@cloudbase/database → database}/dist/esm/typings/realtime.js +0 -0
  697. /package/{node_modules/@cloudbase/database → database}/dist/esm/util.d.ts +0 -0
  698. /package/{node_modules/@cloudbase/database → database}/dist/esm/util.js +0 -0
  699. /package/{node_modules/@cloudbase/database → database}/dist/esm/utils/error.d.ts +0 -0
  700. /package/{node_modules/@cloudbase/database → database}/dist/esm/utils/error.js +0 -0
  701. /package/{node_modules/@cloudbase/database → database}/dist/esm/utils/msg.d.ts +0 -0
  702. /package/{node_modules/@cloudbase/database → database}/dist/esm/utils/msg.js +0 -0
  703. /package/{node_modules/@cloudbase/database → database}/dist/esm/utils/symbol.d.ts +0 -0
  704. /package/{node_modules/@cloudbase/database → database}/dist/esm/utils/symbol.js +0 -0
  705. /package/{node_modules/@cloudbase/database → database}/dist/esm/utils/type.d.ts +0 -0
  706. /package/{node_modules/@cloudbase/database → database}/dist/esm/utils/type.js +0 -0
  707. /package/{node_modules/@cloudbase/database → database}/dist/esm/utils/utils.d.ts +0 -0
  708. /package/{node_modules/@cloudbase/database → database}/dist/esm/utils/utils.js +0 -0
  709. /package/{node_modules/@cloudbase/database → database}/dist/esm/validate.d.ts +0 -0
  710. /package/{node_modules/@cloudbase/database → database}/dist/esm/validate.js +0 -0
  711. /package/{app/src → dist}/index.d.ts +0 -0
  712. /package/{node_modules/@cloudbase/types → types}/auth.d.ts +0 -0
  713. /package/{node_modules/@cloudbase/types → types}/cache.d.ts +0 -0
  714. /package/{node_modules/@cloudbase/types → types}/cloudrun.d.ts +0 -0
  715. /package/{node_modules/@cloudbase/types → types}/component.d.ts +0 -0
  716. /package/{node_modules/@cloudbase/types → types}/database.d.ts +0 -0
  717. /package/{node_modules/@cloudbase/types → types}/events.d.ts +0 -0
  718. /package/{node_modules/@cloudbase/types → types}/functions.d.ts +0 -0
  719. /package/{node_modules/@cloudbase/types → types}/index.d.ts +0 -0
  720. /package/{node_modules/@cloudbase/types → types}/realtime.d.ts +0 -0
  721. /package/{node_modules/@cloudbase/types → types}/request.d.ts +0 -0
  722. /package/{node_modules/@cloudbase/types → types}/storage.d.ts +0 -0
  723. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/adapters/index.d.ts +0 -0
  724. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/adapters/index.js +0 -0
  725. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/adapters/platforms/web.d.ts +0 -0
  726. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/adapters/platforms/web.js +0 -0
  727. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/constants/common.d.ts +0 -0
  728. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/constants/common.js +0 -0
  729. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/constants/errors.d.ts +0 -0
  730. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/constants/errors.js +0 -0
  731. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/constants/index.d.ts +0 -0
  732. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/constants/index.js +0 -0
  733. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/helpers/decorators.d.ts +0 -0
  734. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/helpers/decorators.js +0 -0
  735. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/helpers/index.d.ts +0 -0
  736. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/helpers/index.js +0 -0
  737. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/index.d.ts +0 -0
  738. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/index.js +0 -0
  739. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/libs/abortController.d.ts +0 -0
  740. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/libs/abortController.js +0 -0
  741. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/libs/cache.d.ts +0 -0
  742. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/libs/cache.js +0 -0
  743. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/libs/events.d.ts +0 -0
  744. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/libs/events.js +0 -0
  745. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/libs/langEvent.d.ts +0 -0
  746. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/libs/langEvent.js +0 -0
  747. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/libs/util.d.ts +0 -0
  748. /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/libs/util.js +0 -0
  749. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/adapters/index.d.ts +0 -0
  750. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/adapters/index.js +0 -0
  751. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/adapters/platforms/web.d.ts +0 -0
  752. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/adapters/platforms/web.js +0 -0
  753. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/constants/common.d.ts +0 -0
  754. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/constants/common.js +0 -0
  755. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/constants/errors.d.ts +0 -0
  756. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/constants/errors.js +0 -0
  757. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/constants/index.d.ts +0 -0
  758. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/constants/index.js +0 -0
  759. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/helpers/decorators.d.ts +0 -0
  760. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/helpers/decorators.js +0 -0
  761. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/helpers/index.d.ts +0 -0
  762. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/helpers/index.js +0 -0
  763. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/index.d.ts +0 -0
  764. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/index.js +0 -0
  765. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/libs/abortController.d.ts +0 -0
  766. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/libs/abortController.js +0 -0
  767. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/libs/cache.d.ts +0 -0
  768. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/libs/cache.js +0 -0
  769. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/libs/events.d.ts +0 -0
  770. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/libs/events.js +0 -0
  771. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/libs/langEvent.d.ts +0 -0
  772. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/libs/langEvent.js +0 -0
  773. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/libs/util.d.ts +0 -0
  774. /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/libs/util.js +0 -0
  775. /package/{node_modules/@cloudbase/utilities → utilities}/dist/miniprogram/index.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","mappings":"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","sources":["webpack://@cloudbase/js-sdk/webpack/runtime/create fake namespace object","webpack://@cloudbase/js-sdk/adapter.ts","webpack://@cloudbase/js-sdk/index.ts","webpack://@cloudbase/js-sdk/utilities.ts","webpack://@cloudbase/js-sdk/utils.ts","webpack://@cloudbase/js-sdk/v1-compat.ts","webpack://@cloudbase/js-sdk/apis.ts","webpack://@cloudbase/js-sdk/auth-error.ts","webpack://@cloudbase/js-sdk/consts.ts","webpack://@cloudbase/js-sdk/captcha-dom.ts","webpack://@cloudbase/js-sdk/captcha.ts","webpack://@cloudbase/js-sdk/oauth2client.ts","webpack://@cloudbase/js-sdk/base64.ts","webpack://@cloudbase/js-sdk/encrypt.ts","webpack://@cloudbase/js-sdk/single-promise.ts","webpack://@cloudbase/js-sdk/mp.ts","webpack://@cloudbase/js-sdk/urlSearchParams.ts","webpack://@cloudbase/js-sdk/uuid.ts","webpack://@cloudbase/js-sdk/web.ts","webpack://@cloudbase/js-sdk/common.ts","webpack://@cloudbase/js-sdk/errors.ts","webpack://@cloudbase/js-sdk/decorators.ts","webpack://@cloudbase/js-sdk/abortController.ts","webpack://@cloudbase/js-sdk/cache.ts","webpack://@cloudbase/js-sdk/events.ts","webpack://@cloudbase/js-sdk/langEvent.ts","webpack://@cloudbase/js-sdk/util.ts","webpack://@cloudbase/js-sdk/../oauth/src/utils/encryptlong/index.js","webpack://@cloudbase/js-sdk/../../../src/adapters/index.ts","webpack://@cloudbase/js-sdk/../../../../src/adapters/platforms/web.ts","webpack://@cloudbase/js-sdk/../../../src/constants/common.ts","webpack://@cloudbase/js-sdk/../../../src/constants/errors.ts","webpack://@cloudbase/js-sdk/../../../src/constants/index.ts","webpack://@cloudbase/js-sdk/../../../src/helpers/decorators.ts","webpack://@cloudbase/js-sdk/../../../src/helpers/index.ts","webpack://@cloudbase/js-sdk/../../../src/libs/cache.ts","webpack://@cloudbase/js-sdk/../../../src/libs/events.ts","webpack://@cloudbase/js-sdk/../../../src/libs/util.ts","webpack://@cloudbase/js-sdk/external commonjs2 {\"commonjs\":\"@cloudbase/adapter-interface\",\"commonjs2\":\"@cloudbase/adapter-interface\",\"amd\":\"@cloudbase/adapter-interface\",\"root\":\"@cloudbase/adapter-interface\"}","webpack://@cloudbase/js-sdk/external commonjs2 {\"commonjs\":\"@cloudbase/adapter-wx_mp\",\"commonjs2\":\"@cloudbase/adapter-wx_mp\",\"amd\":\"@cloudbase/adapter-wx_mp\",\"root\":\"@cloudbase/adapter-wx_mp\"}","webpack://@cloudbase/js-sdk/external commonjs2 {\"commonjs\":\"jwt-decode\",\"commonjs2\":\"jwt-decode\",\"amd\":\"jwt-decode\",\"root\":\"jwt-decode\"}","webpack://@cloudbase/js-sdk/webpack/bootstrap","webpack://@cloudbase/js-sdk/webpack/runtime/define property getters","webpack://@cloudbase/js-sdk/webpack/runtime/hasOwnProperty shorthand","webpack://@cloudbase/js-sdk/webpack/runtime/make namespace object","webpack://@cloudbase/js-sdk/webpack/startup"],"sourcesContent":["var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","import { SDKAdapterInterface } from '@cloudbase/adapter-interface'\nimport { adapterForWxMp } from './utilities'\nimport type { AuthOptions } from '@cloudbase/oauth'\n\ndeclare const wx: any\n\nclass OauthClientStorageBase {\n public readonly localStorage\n constructor(config?: { localStorage: any /* StorageInterface */; adapter: SDKAdapterInterface }) {\n try {\n this.localStorage = config?.localStorage || (config?.adapter?.root?.globalThis || globalThis).localStorage\n } catch (error) {\n this.localStorage = config?.localStorage || {}\n }\n }\n /**\n * Get Item\n * @param {string} key\n * @return {Promise<string | null>}\n */\n async getItem(key: string): Promise<string | null> {\n return this.localStorage.getItem(key)\n }\n\n /**\n * Remove Item.\n * @param {string} key\n * @return {Promise<void>}\n */\n async removeItem(key: string) {\n this.localStorage.removeItem(key)\n }\n\n /**\n * Set Item.\n * @param {string} key\n * @param {string} value\n * @return {Promise<void>}\n */\n async setItem(key: string, value: string): Promise<void> {\n this.localStorage.setItem(key, value)\n }\n\n getItemSync(key: string): string | null {\n return this.localStorage.getItem(key)\n }\n\n setItemSync(key: string, value: string) {\n this.localStorage.setItem(key, value)\n }\n\n removeItemSync(key: string) {\n this.localStorage.removeItem(key)\n }\n}\n\n/**\n * copy to git@git.woa.com:QBase/lcap/datasource.git/packages/cloud-sdk/common\n * 同步修改\n */\nconst URL_REG = /^[^:]+:\\/\\/[^/]+(\\/[^?#]+)/\n\nconst dealAdapterRequestData = (res, options) => {\n const requestId = options?.headers?.['x-request-id']\n\n if (!res) {\n res = {}\n }\n\n if (res?.code || res?.data?.error_code) {\n res = {\n error: res.code || res.data.error,\n error_description: res.data.error_description || res.message || res.code || res.data.error_code,\n request_id: res.requestId,\n error_code: res.data?.error_code,\n }\n }\n\n if (!res?.request_id) {\n res.request_id = res.request_id || requestId\n }\n\n if (res?.error) {\n res.error_uri = getUrlPath(options?.url)\n return res\n }\n\n return res?.data || {}\n}\n\nfunction generateOauthClientRequest(reqClass) {\n return async function (\n url: string,\n options?: {\n body?: any | null\n headers?: any | null\n method?: string\n [key: string]: any\n },\n ) {\n return new Promise((resolve, reject) => {\n // Objects must be copied to prevent modification of data such as body.\n const copyOptions = Object.assign({}, options)\n if (copyOptions.body && typeof copyOptions.body !== 'string') {\n copyOptions.body = JSON.stringify(copyOptions.body)\n }\n\n const task = wx.request({\n url,\n data: copyOptions.body,\n timeout: reqClass._timeout,\n method: copyOptions.method || 'GET',\n header: copyOptions.headers,\n success(res) {\n res = dealAdapterRequestData(res, { ...options, url })\n\n if (res.error) {\n reject(res)\n }\n resolve(res)\n },\n fail(err) {\n reject({\n error: 'unreachable',\n error_description: (err as Error).message,\n })\n },\n complete(err) {\n if (!err || !err.errMsg) {\n return\n }\n if (!reqClass._timeout || reqClass._restrictedMethods.indexOf('request') === -1) {\n return\n }\n const { errMsg } = err\n if (errMsg === 'request:fail timeout') {\n console.warn(reqClass._timeoutMsg)\n try {\n task.abort()\n } catch (e) {}\n }\n },\n })\n })\n }\n}\n\n/**\n * Get url path.\n * @param {string} url\n * @return {string}\n */\nfunction getUrlPath(url: string) {\n // return path if matched, or original url\n return URL_REG.test(url) ? RegExp.$1 : url\n}\n\n/**\n * 用户自定义adapter处理\n * @param config\n * @param adapter\n * @returns\n */\nconst dealUserAdapter = (config: AuthOptions, adapter: SDKAdapterInterface) => {\n const data = { ...config }\n\n try {\n if (!config?.storage && adapter?.localStorage) {\n data.storage = new OauthClientStorageBase({ localStorage: adapter.localStorage, adapter })\n }\n\n if (!config.captchaOptions && adapter?.captchaOptions) {\n data.captchaOptions = adapter.captchaOptions\n }\n\n // 用户未传入baseRequest和request时处理\n // OAuth2Client优先以 baseRequest 为准\n // Auth 在没有 request 的时候会初始化 Captcha,从而使用 Captcha 的 request\n if (!config.baseRequest && !config.request && adapter?.reqClass) {\n const reqClassParams = {\n timeout: 10000,\n restrictedMethods: ['get', 'post', 'upload', 'download', 'request'],\n auth: config.auth,\n }\n const adapterReq = new adapter.reqClass(reqClassParams)\n data.baseRequest = async function (url: string, options?: { method?: string; [key: string]: any }) {\n let res: any = {}\n\n const requestType = options.method?.toLocaleLowerCase() || 'post'\n\n const func = adapterReq?.[requestType]?.bind?.(adapterReq)\n\n if (typeof func !== 'function') {\n throw new Error(`invalid 【${requestType}】 request method`)\n }\n\n try {\n // 兼容非小程序的adapter\n if ((!options.headers?.['content-type'] || options.headers?.['content-type'].includes('application/json')) && !['string', 'undefined'].includes(typeof options.body)) {\n options.data = options.data || options.body\n options.body = JSON.stringify(options.body)\n }\n res = await func({ url, ...options })\n res = dealAdapterRequestData(res, { ...options, url })\n } catch (error) {\n res = { ...error?.data, ...error }\n throw res\n }\n\n if (res?.error) {\n throw res\n }\n\n return res\n }\n }\n } catch (e) {\n console.error('user adapter generate fail:', e)\n }\n\n return data\n}\n\n/**\n * 内置默认adapter处理\n * @param config\n * @returns\n */\nconst dealAuthAdapter = (config: AuthOptions, adapter: SDKAdapterInterface) => {\n const data = { ...config }\n const authOptions: any = {}\n\n if (adapter?.captchaOptions) {\n data.captchaOptions = adapter.captchaOptions\n }\n\n if (!adapterForWxMp.isMatch() || (config.storage && config.baseRequest)) return data\n\n try {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { localStorage, reqClass: ReqClass } = adapterForWxMp.genAdapter({})\n if (localStorage) {\n authOptions.storage = new OauthClientStorageBase({ localStorage, adapter })\n }\n if (ReqClass) {\n const reqClass = new ReqClass({\n timeout: 10000,\n restrictedMethods: ['get', 'post', 'upload', 'download', 'request'],\n })\n authOptions.request = generateOauthClientRequest(reqClass)\n }\n\n if (data.captchaOptions) {\n authOptions.baseRequest = authOptions.request\n authOptions.request = undefined\n }\n\n return { ...data, ...authOptions }\n } catch (e) {\n console.error('adapter generate fail:', e)\n }\n\n return data\n}\n\nexport const useAuthAdapter = (config: AuthOptions) => {\n // 兼容微搭cloud-sdk,auth中js-sdk默认的adapter不进行配置\n if (config.adapter && (config.adapter as any).type !== 'default') {\n return dealUserAdapter(config, config.adapter)\n }\n\n return dealAuthAdapter(config, config.adapter)\n}\n","import type { ICloudbase, ICloudbaseConfig, ICloudbasePlatformInfo } from '@cloudbase/types'\nimport type { ICloudbaseCache } from '@cloudbase/types/cache'\nimport type { ICloudbaseRequest } from '@cloudbase/types/request'\nimport type { ICloudbaseAuthConfig, IUser, ILoginState } from '@cloudbase/types/auth'\nimport type { ICloudbaseComponent } from '@cloudbase/types/component'\nimport type { AuthOptions, Credentials } from '@cloudbase/oauth'\nimport {\n CloudbaseOAuth,\n AUTH_API_PREFIX,\n LOGIN_STATE_CHANGED_TYPE,\n EVENTS,\n AUTH_STATE_CHANGED_TYPE,\n OAUTH_TYPE,\n weAppJwtDecodeAll,\n AuthError,\n AuthErrorCategory,\n authModels,\n DEFAULT_NODE_ACCESS_SCOPE,\n} from '@cloudbase/oauth'\nimport { useAuthAdapter } from './adapter'\nimport {\n printWarn,\n throwError,\n ERRORS,\n COMMUNITY_SITE_URL,\n catchErrorsDecorator,\n CloudbaseEventEmitter,\n CloudbaseCache,\n adapterForWxMp,\n useDefaultAdapter,\n} from './utilities'\nimport { saveToBrowserSession, getBrowserSession, removeBrowserSession, addUrlSearch } from './utils'\nimport {\n AuthV1Compat,\n WeixinAuthProvider,\n CustomAuthProvider,\n AnonymousAuthProvider,\n applyUserV1Compat,\n} from './v1-compat'\nimport { utils } from '@cloudbase/utilities'\nimport {\n CommonRes,\n DeleteMeReq,\n GetClaimsRes,\n GetUserIdentitiesRes,\n GetUserRes,\n LinkIdentityReq,\n LinkIdentityRes,\n OnAuthStateChangeCallback,\n ReauthenticateRes,\n ResendReq,\n ResendRes,\n ResetPasswordForEmailRes,\n ResetPasswordForOldReq,\n SetSessionReq,\n SignInAnonymouslyReq,\n SignInOAuthRes,\n SignInRes,\n SignInWithIdTokenReq,\n SignInWithOAuthReq,\n SignInWithOtpReq,\n SignInWithOtpRes,\n SignInWithPasswordReq,\n SignUpRes,\n UnlinkIdentityReq,\n UpdateUserAttributes,\n UpdateUserReq,\n UpdateUserWithVerificationRes,\n VerifyOAuthReq,\n VerifyOAuthRes,\n VerifyOtpReq,\n} from './type'\n\nconst isBrowser = () => typeof window !== 'undefined' && typeof document !== 'undefined'\n\nexport type {\n SignInRes,\n GetUserRes,\n CommonRes,\n SignInWithOtpRes,\n SignInOAuthRes,\n GetClaimsRes,\n ResetPasswordForEmailRes,\n GetUserIdentitiesRes,\n LinkIdentityRes,\n ReauthenticateRes,\n ResendRes,\n UpdateUserWithVerificationRes,\n OnAuthStateChangeCallback,\n SignInWithPasswordReq,\n SignInWithIdTokenReq,\n SignInWithOAuthReq,\n VerifyOAuthReq,\n VerifyOtpReq,\n LinkIdentityReq,\n UnlinkIdentityReq,\n UpdateUserReq,\n SignInWithOtpReq,\n ResetPasswordForOldReq,\n ResendReq,\n SetSessionReq,\n DeleteMeReq,\n SignUpRes,\n} from './type'\n\ndeclare const cloudbase: ICloudbase\ndeclare const wx: any\n\nconst COMPONENT_NAME = 'auth'\n\ninterface UserInfo {\n uid?: string\n gender?: string\n picture?: string\n email?: string\n email_verified?: boolean\n phone_number?: string\n username?: string\n name?: string\n birthdate?: string\n zoneinfo?: string\n locale?: string\n sub?: string\n created_from?: string\n}\n\nconst onCredentialsError = eventBus => (params) => {\n eventBus.fire(EVENTS.LOGIN_STATE_CHANGED, { ...params, eventType: LOGIN_STATE_CHANGED_TYPE.CREDENTIALS_ERROR })\n}\n\ninterface IUserOptions {\n cache: ICloudbaseCache\n oauthInstance: CloudbaseOAuth\n}\n\nexport class User implements IUser {\n public uid?: string\n public gender?: string\n public picture?: string\n public email?: string\n public emailVerified?: boolean\n public phoneNumber?: string\n public username?: string // 用户名称,长度 5-24 位,支持字符中英文、数字、特殊字符(仅支持_-),不支持中文\n public name?: string\n public providers?: {\n id?: string\n providerUserId?: string\n name?: string\n }[]\n public birthdate?: string\n public zoneinfo?: string\n public locale?: string\n public sub?: string\n public createdFrom?: string\n public open_id?: string\n\n private cache: ICloudbaseCache\n private oauthInstance: CloudbaseOAuth // CloudbaseOAuth 类型\n\n constructor(options: IUserOptions) {\n const { cache, oauthInstance } = options\n this.cache = cache\n this.oauthInstance = oauthInstance\n\n this.setUserInfo()\n }\n /**\n * 获取本地用户信息-同步\n */\n public async checkLocalInfo() {\n this.uid = this.getLocalUserInfo('uid') as string\n this.gender = this.getLocalUserInfo('gender') as string\n this.picture = this.getLocalUserInfo('picture') as string\n this.email = this.getLocalUserInfo('email') as string\n this.emailVerified = this.getLocalUserInfo('email_verified') as boolean\n this.phoneNumber = this.getLocalUserInfo('phone_number') as string\n this.username = this.getLocalUserInfo('username') as string\n this.name = this.getLocalUserInfo('name') as string\n this.birthdate = this.getLocalUserInfo('birthdate') as string\n this.zoneinfo = this.getLocalUserInfo('zoneinfo') as string\n this.locale = this.getLocalUserInfo('locale') as string\n this.sub = this.getLocalUserInfo('sub') as string\n this.createdFrom = this.getLocalUserInfo('created_from') as string\n this.providers = this.getLocalUserInfo('providers') as any\n }\n /**\n * 获取本地用户信息-异步\n */\n public async checkLocalInfoAsync() {\n this.uid = await this.getLocalUserInfoAsync('uid')\n this.gender = await this.getLocalUserInfoAsync('gender')\n this.picture = this.getLocalUserInfo('picture') as string\n this.email = await this.getLocalUserInfoAsync('email')\n this.emailVerified = this.getLocalUserInfo('email_verified') as boolean\n this.phoneNumber = this.getLocalUserInfo('phone_number') as string\n this.username = await this.getLocalUserInfoAsync('username')\n this.name = this.getLocalUserInfo('name') as string\n this.birthdate = this.getLocalUserInfo('birthdate') as string\n this.zoneinfo = this.getLocalUserInfo('zoneinfo') as string\n this.locale = this.getLocalUserInfo('locale') as string\n this.sub = this.getLocalUserInfo('sub') as string\n this.createdFrom = this.getLocalUserInfo('created_from') as string\n this.providers = this.getLocalUserInfo('providers') as any\n }\n\n /**\n * 更新用户信息\n * @param userInfo\n */\n @catchErrorsDecorator({\n title: '更新用户信息失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 User.update() 的语法或参数是否正确',\n ' 2 - 用户信息中是否包含非法值',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async update(userInfo: authModels.UserProfile): Promise<void> {\n // const { name, gender, avatarUrl, province, country, city } = userInfo\n const newUserInfo = await this.oauthInstance.authApi.setUserProfile({ ...userInfo })\n\n this.setLocalUserInfo(newUserInfo)\n }\n\n public async updateUserBasicInfo(params: authModels.ModifyUserBasicInfoRequest): Promise<void> {\n await this.oauthInstance.authApi.updateUserBasicInfo({ ...params })\n await this.refresh()\n }\n\n /**\n * 更新密码\n * @param newPassword\n * @param oldPassword\n */\n @catchErrorsDecorator({\n title: '更新密码失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 User.updatePassword() 的语法或参数是否正确',\n ' 3 - 新密码中是否包含非法字符',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public updatePassword(newPassword: string, oldPassword: string) {\n return this.oauthInstance.authApi.updatePasswordByOld({\n old_password: oldPassword,\n new_password: newPassword,\n })\n }\n\n /**\n * 更新用户名\n * @param username\n */\n @catchErrorsDecorator({\n title: '更新用户名失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 User.updateUsername() 的语法或参数是否正确',\n ' 2 - 当前环境是否开通了用户名密码登录',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public updateUsername(username: string) {\n if (typeof username !== 'string') {\n throwError(ERRORS.INVALID_PARAMS, 'username must be a string')\n }\n\n return this.update({\n username,\n })\n }\n\n /**\n * 刷新本地用户信息。当用户在其他客户端更新用户信息之后,可以调用此接口同步更新之后的信息。\n */\n @catchErrorsDecorator({\n title: '刷新本地用户信息失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 User.refresh() 的语法或参数是否正确',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async refresh(params?: { version?: string; query?: any }): Promise<authModels.UserInfo> {\n const newUserInfo = await this.oauthInstance.authApi.getUserInfo(params)\n if ((newUserInfo as any).code === 'INVALID_ACCESS_TOKEN') {\n this.setLocalUserInfo({})\n throw newUserInfo\n }\n this.setLocalUserInfo(newUserInfo)\n return newUserInfo\n }\n\n public getLocalUserInfo(key?: string): string | boolean | Record<string, any> {\n const { userInfoKey } = this.cache.keys\n const userInfo = this.cache.getStore(userInfoKey)\n\n if (!key) return userInfo || {}\n\n return userInfo[key]\n }\n\n public setLocalUserInfo(userInfo: any) {\n const { userInfoKey } = this.cache.keys\n this.cache.setStore(userInfoKey, userInfo)\n this.setUserInfo()\n }\n\n private async getLocalUserInfoAsync(key: string): Promise<string> {\n const { userInfoKey } = this.cache.keys\n const userInfo = await this.cache.getStoreAsync(userInfoKey)\n return userInfo[key]\n }\n\n private setUserInfo() {\n const { userInfoKey } = this.cache.keys\n const userInfo = this.cache.getStore(userInfoKey)\n ;[\n 'uid',\n 'email',\n 'name',\n 'gender',\n 'picture',\n 'email_verified',\n 'phone_number',\n 'birthdate',\n 'zoneinfo',\n 'locale',\n 'sub',\n 'created_from',\n 'providers',\n 'username',\n 'created_at',\n 'open_id',\n ].forEach((infoKey) => {\n this[infoKey] = userInfo[infoKey]\n })\n }\n}\n\n// 应用 v1 兼容方法到 User 类\napplyUserV1Compat(User)\n\ninterface ILoginStateOptions extends IUserOptions {\n envId: string\n}\nexport class LoginState implements ILoginState {\n public user: User\n public oauthLoginState: any\n\n private oauthInstance: CloudbaseOAuth\n private cache: ICloudbaseCache\n\n constructor(options: ILoginStateOptions) {\n const { envId, cache, oauthInstance } = options\n if (!envId) {\n throwError(ERRORS.INVALID_PARAMS, 'envId is not defined')\n }\n this.cache = cache\n this.oauthInstance = oauthInstance\n\n this.user = new User({\n cache: this.cache,\n oauthInstance,\n })\n }\n\n public checkLocalState() {\n this.oauthLoginState = this.oauthInstance?.authApi.hasLoginStateSync()\n this.user.checkLocalInfo()\n }\n\n public async checkLocalStateAsync() {\n await this.oauthInstance?.authApi.getLoginState()\n await this.user.checkLocalInfoAsync()\n }\n}\n\ninterface IAuthConfig extends ICloudbaseAuthConfig {\n cache: ICloudbaseCache\n request?: ICloudbaseRequest\n runtime?: string\n}\n\nclass Auth extends AuthV1Compat {\n readonly config: IAuthConfig\n oauthInstance: CloudbaseOAuth\n readonly cache: ICloudbaseCache\n private listeners: Map<string, Set<OnAuthStateChangeCallback>> = new Map()\n private hasListenerSetUp = false\n\n constructor(config: IAuthConfig) {\n super()\n this.config = config\n this.oauthInstance = config.oauthInstance\n this.cache = config.cache\n this.init()\n this.setAccessKey()\n }\n\n // ========== new auth api methods merged below ==========\n\n /**\n * 匿名登录。无需用户注册即可使用应用功能。\n *\n * **前置条件**:需要在云开发控制台开启「匿名登录」。\n *\n * **重要**:匿名登录必须在使用 watch() 等实时数据库功能之前完成,\n * 否则 WebSocket 连接会因缺少认证信息而失败。\n *\n * @see https://supabase.com/docs/reference/javascript/auth-signinanonymously\n *\n * @example\n * ```typescript\n * const { data, error } = await auth.signInAnonymously();\n * if (!error) {\n * console.log('用户ID:', data.user.id, '是否匿名:', data.user.is_anonymous);\n * // 现在可以使用 watch() 等实时功能\n * }\n * ```\n *\n * @param params 可选参数\n * @returns 登录结果,成功时 data 包含 user 和 session\n */\n async signInAnonymously(params: SignInAnonymouslyReq): Promise<SignInRes> {\n try {\n await this.oauthInstance.authApi.signInAnonymously(params)\n const loginState = await this.createLoginState()\n\n const { data: { session } = {} } = await this.getSession()\n\n // loginState返回是为了兼容v2版本\n return { ...(loginState as any), data: { user: session.user, session }, error: null }\n } catch (error) {\n const authError = new AuthError(error, { method: 'signInAnonymously' })\n // 匿名登录失败时提供明确指引\n if (authError.category === AuthErrorCategory.PROVIDER_NOT_ENABLED) {\n console.error(authError.helpMessage)\n console.error('[CloudBase Auth] 提示:匿名登录需要在控制台开启「匿名登录」。\\n'\n + ' 如果您需要使用用户名密码登录,请改用 auth.signInWithPassword({ username, password })。\\n'\n + ' 不要在匿名登录失败后自动回退到密码登录,这两种方式的使用场景不同。',)\n } else {\n console.warn(`[CloudBase Auth] signInAnonymously 失败 [${authError.category}]: ${authError.message}`)\n if (authError.loginMethodHint) {\n console.warn(authError.loginMethodHint)\n }\n }\n return { data: {}, error: authError }\n }\n }\n\n /**\n * https://supabase.com/docs/reference/javascript/auth-signup\n * Sign up a new user with email or phone using a one-time password (OTP). If the account not exist, a new account will be created.\n * @param params\n * @returns Promise<SignUpRes>\n */\n async signUp(params: authModels.SignUpRequest & { phone?: string }): Promise<SignUpRes> {\n if (params.phone_number || params.verification_code || params.verification_token || params.provider_token) {\n if (params.phone_number) {\n params.phone_number = this.formatPhone(params.phone_number)\n }\n await this.oauthInstance.authApi.signUp(params)\n return this.createLoginState() as any\n }\n try {\n // 参数校验:email或phone必填其一\n this.validateAtLeastOne(params, [['email'], ['phone']], 'You must provide either an email or phone number')\n\n // 第一步:发送验证码并存储 verificationInfo\n const verificationInfo = await this.getVerification(params.email ? { email: params.email } : { phone_number: this.formatPhone(params.phone) },)\n\n return {\n data: {\n // 第二步:等待用户输入验证码(通过 Promise 包装用户输入事件)\n verifyOtp: async ({ token, messageId = verificationInfo.verification_id }): Promise<SignInRes> => {\n try {\n // 第三步:待用户输入完验证码之后,验证短信验证码\n const verificationTokenRes = await this.verify({\n verification_id: messageId || verificationInfo.verification_id,\n verification_code: token,\n })\n\n // 第四步:注册并登录或直接登录\n // 如果用户已经存在,直接登录\n if (verificationInfo.is_user) {\n await this.signIn({\n username: params.email || this.formatPhone(params.phone),\n verification_token: verificationTokenRes.verification_token,\n })\n } else {\n // 如果用户不存在,注册用户\n const data = JSON.parse(JSON.stringify(params))\n delete data.email\n delete data.phone\n\n await this.oauthInstance.authApi.signUp({\n ...data,\n ...(params.email ? { email: params.email } : { phone_number: this.formatPhone(params.phone) }),\n verification_token: verificationTokenRes.verification_token,\n verification_code: token,\n })\n await this.createLoginState()\n }\n\n const { data: { session } = {} } = await this.getSession()\n\n return { data: { user: session.user, session }, error: null }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'signUp' }) }\n }\n },\n },\n error: null,\n }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'signUp' }) }\n }\n }\n\n /**\n * https://supabase.com/docs/reference/javascript/auth-signout\n * const result = await auth.signOut();\n *\n * @param params\n */\n async signOut(params?: authModels.SignoutRequest,): Promise<authModels.SignoutResponse & { data: Object; error: AuthError }> {\n try {\n const { userInfoKey } = this.cache.keys\n const res = await this.oauthInstance.authApi.signOut(params)\n await this.cache.removeStoreAsync(userInfoKey)\n this.setAccessKey()\n\n this.config.eventBus?.fire(EVENTS.LOGIN_STATE_CHANGED, { eventType: LOGIN_STATE_CHANGED_TYPE.SIGN_OUT })\n\n this.config.eventBus?.fire(EVENTS.AUTH_STATE_CHANGED, { event: AUTH_STATE_CHANGED_TYPE.SIGNED_OUT })\n\n // res返回是为了兼容v2版本\n return { ...res, data: {}, error: null }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'signOut' }) }\n }\n }\n\n /**\n * https://supabase.com/docs/reference/javascript/auth-onauthstatechange\n * Receive a notification every time an auth event happens.\n * @param callback\n * @returns Promise<{ data: { subscription: Subscription }, error: Error | null }>\n */\n onAuthStateChange(callback: OnAuthStateChangeCallback) {\n if (!this.hasListenerSetUp) {\n this.setupListeners()\n this.hasListenerSetUp = true\n }\n\n const id = Math.random().toString(36)\n\n if (!this.listeners.has(id)) {\n this.listeners.set(id, new Set())\n }\n\n this.listeners.get(id)!.add(callback)\n\n // 返回 Subscription 对象\n const subscription = {\n id,\n callback,\n unsubscribe: () => {\n const callbacks = this.listeners.get(id)\n if (callbacks) {\n callbacks.delete(callback)\n if (callbacks.size === 0) {\n this.listeners.delete(id)\n }\n }\n },\n }\n\n return {\n data: { subscription },\n }\n }\n\n /**\n * https://supabase.com/docs/reference/javascript/auth-signinwithpassword\n * Log in an existing user with an email and password or phone and password or username and password.\n * @param params\n * @returns Promise<SignInRes>\n */\n async signInWithPassword(params: SignInWithPasswordReq): Promise<SignInRes> {\n try {\n // 参数校验:username/email/phone三选一,password必填\n this.validateAtLeastOne(\n params,\n [['username'], ['email'], ['phone']],\n 'You must provide either username, email, or phone',\n )\n this.validateParams(params, {\n password: { required: true, message: 'Password is required' },\n })\n\n await this.signIn({\n username: params.username || params.email || this.formatPhone(params.phone),\n password: params.password,\n ...(params.is_encrypt ? { isEncrypt: true, version: 'v2' } : {}),\n })\n const { data: { session } = {} } = await this.getSession()\n\n return { data: { user: session.user, session }, error: null }\n } catch (error) {\n const authError = new AuthError(error, { method: 'signInWithPassword' })\n // 根据错误分类输出对应的可操作性指引\n if (authError.category === AuthErrorCategory.PROVIDER_NOT_ENABLED) {\n console.error(authError.helpMessage)\n } else if (authError.category === AuthErrorCategory.INVALID_CREDENTIALS) {\n console.warn(authError.helpMessage)\n } else if (authError.category === AuthErrorCategory.USER_NOT_FOUND) {\n console.warn(authError.helpMessage)\n } else {\n console.warn(`[CloudBase Auth] signInWithPassword 失败 [${authError.category}]: ${authError.message}`)\n }\n if (authError.loginMethodHint) {\n console.info(authError.loginMethodHint)\n }\n return { data: {}, error: authError }\n }\n }\n\n /**\n * https://supabase.com/docs/reference/javascript/auth-signinwithidtoken\n * 第三方平台登录。如果用户不存在,会根据云开发平台-登录方式中对应身份源的登录模式配置,判断是否自动注册\n * @param params\n * @returns Promise<SignInRes>\n */\n async signInWithIdToken(params: SignInWithIdTokenReq): Promise<SignInRes> {\n try {\n // 参数校验:token必填\n this.validateParams(params, {\n token: { required: true, message: 'Token is required' },\n })\n\n await this.signInWithProvider({\n provider_token: params.token,\n })\n const { data: { session } = {} } = await this.getSession()\n\n return { data: { user: session.user, session }, error: null }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'signInWithIdToken' }) }\n }\n }\n\n /**\n * https://supabase.com/docs/reference/javascript/auth-signinwithotp\n * Log in a user using a one-time password (OTP).\n * @param params\n * @returns Promise<SignInWithOtpRes>\n */\n async signInWithOtp(params: SignInWithOtpReq): Promise<SignInWithOtpRes> {\n if (!params.options?.emailRedirectTo && (params.options?.shouldCreateUser === undefined || !!params.options?.shouldCreateUser)) {\n return this.signUp({\n email: params.email,\n phone: params.phone,\n })\n }\n\n try {\n // 参数校验:email或phone必填其一\n this.validateAtLeastOne(params, [['email'], ['phone']], 'You must provide either an email or phone number')\n\n // 第一步:发送验证码并存储 verificationInfo\n const verificationInfo = await this.getVerification({\n email_redirect_to: params.options?.emailRedirectTo,\n ...(params.email ? { email: params.email } : { phone_number: this.formatPhone(params.phone) }),\n })\n\n return {\n data: {\n user: null,\n session: null,\n // 第二步:等待用户输入验证码(通过 Promise 包装用户输入事件)\n verifyOtp: async ({ token, messageId = verificationInfo.verification_id }): Promise<SignInRes> => this.verifyOtp({\n email: params.email,\n phone: params.phone,\n token,\n messageId,\n }),\n },\n error: null,\n }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'signInWithOtp' }) }\n }\n }\n\n /**\n * 校验第三方平台授权登录回调\n * @param params\n * @returns Promise<SignInRes>\n */\n async verifyOAuth(params?: VerifyOAuthReq): Promise<VerifyOAuthRes> {\n const data: any = {}\n try {\n // 回调至 provider_redirect_uri 地址(url query中携带 授权code,state等参数),此时检查 state 是否符合预期(如 自己设置的 wx_open)\n const code = params?.code || utils.getQuery('code')\n const state = params?.state || utils.getQuery('state')\n\n // 参数校验:code和state必填\n if (!code) {\n return { data: {}, error: new AuthError({ message: 'Code is required' }) }\n }\n\n if (!state) {\n return { data: {}, error: new AuthError({ message: 'State is required' }) }\n }\n\n const cacheData = getBrowserSession(state)\n data.type = cacheData?.type\n\n const provider = params?.provider || cacheData?.provider || utils.getQuery('provider')\n\n if (!provider) {\n return { data, error: new AuthError({ message: 'Provider is required' }) }\n }\n\n // state符合预期,则获取该三方平台token\n const { provider_token: token } = await this.grantProviderToken({\n provider_id: provider,\n provider_redirect_uri: location.origin + location.pathname, // 指定三方平台跳回的 url 地址\n provider_code: code, // 第三方平台跳转回页面时,url param 中携带的 code 参数\n })\n\n let res: VerifyOAuthRes\n\n if (cacheData.type === OAUTH_TYPE.BIND_IDENTITY) {\n res = await this.oauthInstance.authApi.toBindIdentity({ provider_token: token, provider, fireEvent: true })\n } else {\n // 通过 provider_token 仅登录或登录并注册(与云开发平台-登录方式-身份源登录模式配置有关)\n res = await this.signInWithIdToken({\n token,\n })\n res.data = { ...data, ...res.data }\n }\n\n const localSearch = new URLSearchParams(location?.search)\n localSearch.delete('code')\n localSearch.delete('state')\n res.data.redirectUrl = addUrlSearch(\n cacheData?.search === undefined ? `?${localSearch.toString()}` : cacheData?.search,\n cacheData?.hash || location.hash,\n )\n removeBrowserSession(state)\n\n return res\n } catch (error) {\n return { data, error: new AuthError(error, { method: 'verifyOAuth' }) }\n }\n }\n\n /**\n * https://supabase.com/docs/reference/javascript/auth-signinwithoauth\n * 生成第三方平台授权 Uri (如微信二维码扫码授权网页)\n * @param params\n * @returns Promise<SignInOAuthRes>\n */\n async signInWithOAuth(params: SignInWithOAuthReq): Promise<SignInOAuthRes> {\n try {\n // 参数校验:provider必填\n this.validateParams(params, {\n provider: { required: true, message: 'Provider is required' },\n })\n\n const href = params.options?.redirectTo || location.href\n\n const urlObject = new URL(href)\n\n const provider_redirect_uri = urlObject.origin + urlObject.pathname\n\n const state = params.options?.state || `prd-${params.provider}-${Math.random().toString(36)\n .slice(2)}`\n\n const { uri } = await this.genProviderRedirectUri({\n provider_id: params.provider,\n provider_redirect_uri,\n state,\n })\n\n // 对 URL 进行解码\n const decodedUri = decodeURIComponent(uri)\n\n // 合并额外的查询参数\n let finalUri = decodedUri\n\n if (params.options?.queryParams) {\n const url = new URL(decodedUri)\n Object.entries(params.options.queryParams).forEach(([key, value]) => {\n url.searchParams.set(key, value)\n })\n finalUri = url.toString()\n }\n\n saveToBrowserSession(state, {\n provider: params.provider,\n search: urlObject.search,\n hash: urlObject.hash,\n type: params.options?.type || OAUTH_TYPE.SIGN_IN,\n })\n\n if (isBrowser() && !params.options?.skipBrowserRedirect) {\n window.location.assign(finalUri)\n }\n\n return { data: { url: finalUri, provider: params.provider }, error: null }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'signInWithOAuth' }) }\n }\n }\n\n // https://supabase.com/docs/reference/javascript/auth-getclaims\n async getClaims(): Promise<GetClaimsRes> {\n try {\n const { accessToken } = await this.getAccessToken()\n const parsedToken = weAppJwtDecodeAll(accessToken)\n return { data: parsedToken, error: null }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'getClaims' }) }\n }\n }\n\n /**\n * https://supabase.com/docs/reference/javascript/auth-resetpasswordforemail\n * 通过 email 或手机号重置密码\n * @param emailOrPhone 邮箱或手机号\n * @returns Promise<ResetPasswordForEmailRes>\n */\n async resetPasswordForEmail(\n emailOrPhone: string,\n options?: { redirectTo?: string },\n ): Promise<ResetPasswordForEmailRes> {\n try {\n // 参数校验:emailOrPhone必填\n this.validateParams(\n { emailOrPhone },\n {\n emailOrPhone: { required: true, message: 'Email or phone is required' },\n },\n )\n\n const { redirectTo } = options || {}\n\n // 判断是邮箱还是手机号\n const isEmail = emailOrPhone.includes('@')\n let verificationParams: { email?: string; phone_number?: string }\n\n if (isEmail) {\n verificationParams = { email: emailOrPhone }\n } else {\n // 正规化手机号\n const formattedPhone = this.formatPhone(emailOrPhone)\n verificationParams = { phone_number: formattedPhone }\n }\n\n // 第一步:发送验证码并存储 verificationInfo\n const verificationInfo = await this.getVerification(verificationParams)\n\n return {\n data: {\n // 第二步:等待用户输入验证码(通过 Promise 包装用户输入事件)\n updateUser: async (attributes: UpdateUserAttributes): Promise<SignInRes> => {\n this.validateParams(attributes, {\n nonce: { required: true, message: 'Nonce is required' },\n password: { required: true, message: 'Password is required' },\n })\n try {\n // 第三步:待用户输入完验证码之后,验证验证码\n const verificationTokenRes = await this.verify({\n verification_id: verificationInfo.verification_id,\n verification_code: attributes.nonce,\n })\n\n await this.oauthInstance.authApi.resetPassword({\n email: isEmail ? emailOrPhone : undefined,\n phone_number: !isEmail ? emailOrPhone : undefined,\n new_password: attributes.password,\n verification_token: verificationTokenRes.verification_token,\n })\n\n this.config.eventBus?.fire(EVENTS.AUTH_STATE_CHANGED, {\n event: AUTH_STATE_CHANGED_TYPE.PASSWORD_RECOVERY,\n })\n\n const res = await this.signInWithPassword({\n email: isEmail ? emailOrPhone : undefined,\n phone: !isEmail ? emailOrPhone : undefined,\n password: attributes.password,\n })\n\n if (redirectTo && isBrowser()) {\n window.location.assign(redirectTo)\n }\n\n return res\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'resetPasswordForEmail' }) }\n }\n },\n },\n error: null,\n }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'resetPasswordForEmail' }) }\n }\n }\n\n /**\n * 通过旧密码重置密码\n * @param new_password\n * @param old_password\n * @returns\n */\n async resetPasswordForOld(params: ResetPasswordForOldReq) {\n try {\n await this.oauthInstance.authApi.updatePasswordByOld({\n old_password: params.old_password,\n new_password: params.new_password,\n })\n\n const { data: { session } = {} } = await this.getSession()\n\n return { data: { user: session.user, session }, error: null }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'resetPasswordForOld' }) }\n }\n }\n\n /**\n * https://supabase.com/docs/reference/javascript/auth-verifyotp\n * Log in a user given a User supplied OTP and verificationId received through mobile or email.\n * @param params\n * @returns Promise<SignInRes>\n */\n async verifyOtp(params: VerifyOtpReq): Promise<SignInRes> {\n try {\n const { type } = params\n // 参数校验:token和verificationInfo必填\n this.validateParams(params, {\n token: { required: true, message: 'Token is required' },\n messageId: { required: true, message: 'messageId is required' },\n })\n\n if (['phone_change', 'email_change'].includes(type)) {\n await this.verify({\n verification_id: params.messageId,\n verification_code: params.token,\n })\n } else {\n await this.signInWithUsername({\n verificationInfo: { verification_id: params.messageId, is_user: true },\n verificationCode: params.token,\n username: params.email || this.formatPhone(params.phone) || '',\n loginType: params.email ? 'email' : 'phone',\n })\n }\n\n const { data: { session } = {} } = await this.getSession()\n\n return { data: { user: session.user, session }, error: null }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'verifyOtp' }) }\n }\n }\n\n /**\n * https://supabase.com/docs/reference/javascript/auth-getSession\n * Returns the session, refreshing it if necessary.\n * @returns Promise<SignInRes>\n */\n async getSession(): Promise<SignInRes> {\n try {\n const credentials: Credentials = await this.oauthInstance.oauth2client.getCredentials()\n\n if (!credentials || credentials.scope === 'accessKey') {\n return { data: { session: null }, error: null }\n }\n\n const { data: { user } = {} } = await this.getUser(false)\n\n return { data: { session: { ...credentials, user }, user }, error: null }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'getSession' }) }\n }\n }\n\n /**\n * https://supabase.com/docs/reference/javascript/auth-refreshsession\n * 无论过期状态如何,都返回一个新的会话\n * @param refresh_token\n * @returns Promise<SignInRes>\n */\n async refreshSession(refresh_token?: string): Promise<SignInRes> {\n try {\n const credentials: Credentials = await this.oauthInstance.oauth2client.localCredentials.getCredentials()\n credentials.refresh_token = refresh_token || credentials.refresh_token\n const newTokens = await this.oauthInstance.oauth2client.refreshToken(credentials)\n const { data: { user } = {} } = await this.getUser(false)\n\n return { data: { user, session: { ...newTokens, user } }, error: null }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'refreshSession' }) }\n }\n }\n\n /**\n * https://supabase.com/docs/reference/javascript/auth-getuser\n * 如果存在现有会话,则获取当前用户详细信息\n * @returns Promise<GetUserRes>\n */\n async getUser(isRefresh = true): Promise<GetUserRes> {\n try {\n const user = this.convertToUser(await this.getCurrentUser(isRefresh))\n return { data: { user }, error: null }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'getUser' }) }\n }\n }\n\n /**\n * 刷新用户信息\n * @returns Promise<CommonRes>\n */\n async refreshUser(): Promise<CommonRes> {\n try {\n await this.currentUser.refresh()\n\n const { data: { session } = {} } = await this.getSession()\n return { data: { user: session.user, session }, error: null }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'refreshUser' }) }\n }\n }\n\n /**\n * https://supabase.com/docs/reference/javascript/auth-updateuser\n * 更新用户信息\n * @param params\n * @returns Promise<GetUserRes | UpdateUserWithVerificationRes>\n */\n async updateUser(params: UpdateUserReq): Promise<GetUserRes | UpdateUserWithVerificationRes> {\n try {\n // 参数校验:至少有一个更新字段被提供\n const hasValue = Object.keys(params).some(key => params[key] !== undefined && params[key] !== null && params[key] !== '',)\n if (!hasValue) {\n throw new AuthError({ message: 'At least one field must be provided for update' })\n }\n\n const { email, phone, ...restParams } = params\n\n // 检查是否需要更新 email 或 phone\n const needsEmailVerification = email !== undefined\n const needsPhoneVerification = phone !== undefined\n\n let extraRes = {}\n\n if (needsEmailVerification || needsPhoneVerification) {\n // 需要发送验证码\n let verificationParams: { email?: string; phone_number?: string }\n let verificationType: 'email_change' | 'phone_change'\n\n if (needsEmailVerification) {\n verificationParams = { email: params.email }\n verificationType = 'email_change'\n } else {\n // 正规化手机号\n const formattedPhone = this.formatPhone(params.phone)\n verificationParams = { phone_number: formattedPhone }\n verificationType = 'phone_change'\n }\n\n // 发送验证码\n const verificationInfo = await this.getVerification(verificationParams)\n\n Object.keys(restParams).length > 0 && (await this.updateUserBasicInfo(restParams))\n\n extraRes = {\n messageId: verificationInfo.verification_id,\n verifyOtp: async (verifyParams: { email?: string; phone?: string; token: string }): Promise<GetUserRes> => {\n try {\n if (verifyParams.email && params.email === verifyParams.email) {\n // 验证码验证\n await this.verifyOtp({\n type: 'email_change',\n email: params.email,\n token: verifyParams.token,\n messageId: verificationInfo.verification_id,\n })\n await this.updateUserBasicInfo({ email: params.email })\n } else if (verifyParams.phone && params.phone === verifyParams.phone) {\n // 验证码验证\n await this.verifyOtp({\n type: 'phone_change',\n phone: params.phone,\n token: verifyParams.token,\n messageId: verificationInfo.verification_id,\n })\n await this.updateUserBasicInfo({ phone: this.formatPhone(params.phone) })\n } else {\n await this.verifyOtp({\n type: verificationType,\n email: needsEmailVerification ? params.email : undefined,\n phone: !needsEmailVerification ? params.phone : undefined,\n token: verifyParams.token,\n messageId: verificationInfo.verification_id,\n })\n // 验证成功后更新用户信息\n await this.updateUserBasicInfo(params)\n }\n\n const {\n data: { user },\n } = await this.getUser(false)\n this.config.eventBus?.fire(EVENTS.AUTH_STATE_CHANGED, { event: AUTH_STATE_CHANGED_TYPE.USER_UPDATED })\n\n return { data: { user }, error: null }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'updateUser' }) }\n }\n },\n }\n } else {\n // 不需要验证,直接更新\n await this.updateUserBasicInfo(params)\n }\n const {\n data: { user },\n } = await this.getUser(false)\n this.config.eventBus?.fire(EVENTS.AUTH_STATE_CHANGED, { event: AUTH_STATE_CHANGED_TYPE.USER_UPDATED })\n\n return { data: { user, ...extraRes }, error: null }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'updateUser' }) }\n }\n }\n\n /**\n * https://supabase.com/docs/reference/javascript/auth-getuseridentities\n * 获取所有身份源\n * @returns Promise<GetUserIdentitiesRes>\n */\n async getUserIdentities(): Promise<GetUserIdentitiesRes> {\n try {\n const providers = await this.oauthInstance.authApi.getProviders()\n\n return {\n data: {\n identities: providers?.data?.filter(v => !!v.bind) as unknown as GetUserIdentitiesRes['data']['identities'],\n },\n error: null,\n }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'getUserIdentities' }) }\n }\n }\n\n /**\n * https://supabase.com/docs/reference/javascript/auth-linkidentity\n * 绑定身份源到当前用户\n * @param params\n * @returns Promise<LinkIdentityRes>\n */\n async linkIdentity(params: LinkIdentityReq): Promise<LinkIdentityRes> {\n try {\n // 参数校验:provider必填\n this.validateParams(params, {\n provider: { required: true, message: 'Provider is required' },\n })\n\n await this.signInWithOAuth({\n provider: params.provider,\n options: {\n type: OAUTH_TYPE.BIND_IDENTITY,\n },\n })\n\n return { data: { provider: params.provider }, error: null }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'linkIdentity' }) }\n }\n }\n\n /**\n * https://supabase.com/docs/reference/javascript/auth-unlinkidentity\n * 解绑身份源\n * @param params\n * @returns Promise<CommonRes>\n */\n async unlinkIdentity(params: UnlinkIdentityReq): Promise<CommonRes> {\n try {\n // 参数校验:provider必填\n this.validateParams(params, {\n provider: { required: true, message: 'Provider is required' },\n })\n\n await this.oauthInstance.authApi.unbindProvider({ provider_id: params.provider })\n\n return { data: {}, error: null }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'unlinkIdentity' }) }\n }\n }\n\n /**\n * https://supabase.com/docs/reference/javascript/auth-reauthentication\n * 重新认证\n * @returns Promise<ReauthenticateRes>\n */\n async reauthenticate(): Promise<ReauthenticateRes> {\n try {\n const {\n data: { user },\n } = await this.getUser(false)\n\n this.validateAtLeastOne(user, [['email', 'phone']], 'You must provide either an email or phone number')\n const userInfo = user.email ? { email: user.email } : { phone_number: this.formatPhone(user.phone) }\n\n // 第一步:发送验证码并存储 verificationInfo\n const verificationInfo = await this.getVerification(userInfo)\n\n return {\n data: {\n // 第二步:等待用户输入验证码(通过 Promise 包装用户输入事件)\n updateUser: async (attributes: UpdateUserAttributes): Promise<SignInRes> => {\n this.validateParams(attributes, {\n nonce: { required: true, message: 'Nonce is required' },\n })\n try {\n if (attributes.password) {\n // 第三步:待用户输入完验证码之后,验证验证码\n const verificationTokenRes = await this.verify({\n verification_id: verificationInfo.verification_id,\n verification_code: attributes.nonce,\n })\n\n // 第四步:获取 sudo_token\n const sudoRes = await this.oauthInstance.authApi.sudo({\n verification_token: verificationTokenRes.verification_token,\n })\n\n await this.oauthInstance.authApi.setPassword({\n new_password: attributes.password,\n sudo_token: sudoRes.sudo_token,\n })\n } else {\n await this.signInWithUsername({\n verificationInfo,\n verificationCode: attributes.nonce,\n ...userInfo,\n loginType: userInfo.email ? 'email' : 'phone',\n })\n }\n\n const { data: { session } = {} } = await this.getSession()\n\n return { data: { user: session.user, session }, error: null }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'reauthenticate' }) }\n }\n },\n },\n error: null,\n }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'reauthenticate' }) }\n }\n }\n\n /**\n * https://supabase.com/docs/reference/javascript/auth-resend\n * 重新发送验证码\n * @param params\n * @returns Promise<ResendRes>\n */\n async resend(params: ResendReq): Promise<ResendRes> {\n try {\n // 参数校验:email或phone必填其一\n this.validateAtLeastOne(params, [['email'], ['phone']], 'You must provide either an email or phone number')\n\n const target = params.type === 'signup' ? 'ANY' : 'USER'\n const data: { email?: string; phone_number?: string; target: 'USER' | 'ANY' } = { target }\n if ('email' in params) {\n data.email = params.email\n }\n\n if ('phone' in params) {\n data.phone_number = this.formatPhone(params.phone)\n }\n\n // 重新发送验证码\n const { verification_id: verificationId } = await this.oauthInstance.authApi.getVerification(data)\n\n return {\n data: { messageId: verificationId },\n error: null,\n }\n } catch (error: any) {\n return {\n data: {},\n error: new AuthError(error, { method: 'resend' }),\n }\n }\n }\n\n /**\n * https://supabase.com/docs/reference/javascript/auth-setsession\n * 使用access_token和refresh_token来设置会话\n * @param params\n * @returns Promise<SignInRes>\n */\n async setSession(params: SetSessionReq): Promise<SignInRes> {\n try {\n this.validateParams(params, {\n access_token: { required: true, message: 'Access token is required' },\n refresh_token: { required: true, message: 'Refresh token is required' },\n })\n\n await this.oauthInstance.oauth2client.refreshToken(params, { throwError: true })\n\n const { data: { session } = {} } = await this.getSession()\n\n this.config.eventBus?.fire(EVENTS.AUTH_STATE_CHANGED, { event: AUTH_STATE_CHANGED_TYPE.SIGNED_IN })\n\n return { data: { user: session.user, session }, error: null }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'setSession' }) }\n }\n }\n\n // https://supabase.com/docs/reference/javascript/auth-exchangecodeforsession\n async exchangeCodeForSession() {\n //\n }\n\n /**\n * 删除当前用户\n * @param params\n * @returns\n */\n async deleteUser(params: DeleteMeReq): Promise<CommonRes> {\n try {\n this.validateParams(params, {\n password: { required: true, message: 'Password is required' },\n })\n\n const { sudo_token } = await this.oauthInstance.authApi.sudo(params)\n\n await this.oauthInstance.authApi.deleteMe({ sudo_token })\n\n return { data: {}, error: null }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'deleteUser' }) }\n }\n }\n\n /**\n * 跳转系统默认登录页\n * @returns {Promise<authModels.ToDefaultLoginPage>}\n * @memberof Auth\n */\n async toDefaultLoginPage(params: authModels.ToDefaultLoginPage = {}): Promise<CommonRes> {\n try {\n const configVersion = params.config_version || 'env'\n const query = Object.keys(params.query || {})\n .map(key => `${key}=${params.query[key]}`)\n .join('&')\n\n if (adapterForWxMp.isMatch()) {\n wx.navigateTo({ url: `/packages/$wd_system/pages/login/index${query ? `?${query}` : ''}` })\n } else {\n const redirectUri = params.redirect_uri || window.location.href\n const urlObj = new URL(redirectUri)\n const loginPage = `${urlObj.origin}/__auth/?app_id=${params.app_id || ''}&env_id=${this.config.env}&client_id=${\n this.config.clientId || this.config.env\n }&config_version=${configVersion}&redirect_uri=${encodeURIComponent(redirectUri)}${query ? `&${query}` : ''}`\n window.location.href = loginPage\n }\n return { data: {}, error: null }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'toDefaultLoginPage' }) }\n }\n }\n\n /**\n * 自定义登录\n * @param getTickFn () => Promise<string>, 获取自定义登录 ticket 的函数\n * @returns\n */\n async signInWithCustomTicket(getTickFn?: authModels.GetCustomSignTicketFn): Promise<SignInRes> {\n if (getTickFn) {\n this.setCustomSignFunc(getTickFn)\n }\n\n try {\n await this.oauthInstance.authApi.signInWithCustomTicket()\n const loginState = await this.createLoginState()\n\n const { data: { session } = {} } = await this.getSession()\n\n // loginState返回是为了兼容v2版本\n return { ...(loginState as any), data: { user: session.user, session }, error: null }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'signInWithCustomTicket' }) }\n }\n }\n\n /**\n * 小程序openId静默登录\n * @param params\n * @returns Promise<SignInRes>\n */\n async signInWithOpenId({ useWxCloud = true } = {}): Promise<SignInRes> {\n if (!adapterForWxMp.isMatch()) {\n throw Error('wx api undefined')\n }\n const wxInfo = wx.getAccountInfoSync().miniProgram\n\n const mainFunc = async (code) => {\n let result: authModels.GrantProviderTokenResponse | undefined = undefined\n let credentials: Credentials | undefined = undefined\n\n try {\n result = await this.oauthInstance.authApi.grantProviderToken(\n {\n provider_id: wxInfo?.appId,\n provider_code: code,\n provider_params: {\n provider_code_type: 'open_id',\n appid: wxInfo?.appId,\n },\n },\n useWxCloud,\n )\n\n if ((result as any)?.error_code || !result.provider_token) {\n throw result\n }\n\n credentials = await this.oauthInstance.authApi.signInWithProvider(\n { provider_token: result.provider_token },\n useWxCloud,\n )\n\n if ((credentials as any)?.error_code) {\n throw credentials\n }\n } catch (error) {\n throw error\n }\n await this.oauthInstance.oauth2client.setCredentials(credentials as Credentials)\n }\n\n try {\n await new Promise((resolve, reject) => {\n wx.login({\n success: async (res: { code: string }) => {\n try {\n await mainFunc(res.code)\n resolve(true)\n } catch (error) {\n reject(error)\n }\n },\n fail: (res: any) => {\n const error = new Error(res?.errMsg)\n ;(error as any).code = res?.errno\n reject(error)\n },\n })\n })\n\n const loginState = await this.createLoginState()\n\n const { data: { session } = {} } = await this.getSession()\n\n // loginState返回是为了兼容v2版本\n return { ...(loginState as any), data: { user: session.user, session }, error: null }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'signInWithOpenId' }) }\n }\n }\n\n /**\n * 小程序手机号授权登录\n * @param params\n * @returns Promise<SignInRes>\n */\n async signInWithPhoneAuth({ phoneCode = '', useWxCloud = false }): Promise<SignInRes> {\n if (!adapterForWxMp.isMatch()) {\n return { data: {}, error: new AuthError({ message: 'wx api undefined' }) }\n }\n const wxInfo = wx.getAccountInfoSync().miniProgram\n const providerInfo = {\n provider_params: { provider_code_type: 'phone', code: phoneCode, appid: wxInfo.appId },\n provider_id: wxInfo.appId,\n }\n\n const { code } = await wx.login()\n ;(providerInfo as any).provider_code = code\n\n try {\n const providerToken = await this.oauthInstance.authApi.grantProviderToken(providerInfo, useWxCloud)\n if (providerToken.error_code) {\n throw providerToken\n }\n\n const signInRes = await this.oauthInstance.authApi.signInWithProvider({\n provider_token: providerToken.provider_token,\n }, useWxCloud)\n\n if ((signInRes as any)?.error_code) {\n throw signInRes\n }\n } catch (error) {\n return { data: {}, error: new AuthError(error, { method: 'signInWithPhoneAuth' }) }\n }\n\n const loginState = await this.createLoginState()\n\n const { data: { session } = {} } = await this.getSession()\n\n // loginState返回是为了兼容v2版本\n return { ...(loginState as any), data: { user: session.user, session }, error: null }\n }\n\n /**\n * 绑定手机号\n * @param phoneNumber\n * @param phoneCode\n */\n @catchErrorsDecorator({\n title: '绑定手机号失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 auth().bindPhoneNumber() 的语法或参数是否正确',\n ' 2 - 当前环境是否开通了短信验证码登录',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async bindPhoneNumber(params: authModels.BindPhoneRequest) {\n return this.oauthInstance.authApi.editContact(params)\n }\n\n /**\n * 解绑三方绑定\n * @param loginType\n */\n @catchErrorsDecorator({\n title: '解除三方绑定失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 auth().unbindProvider() 的语法或参数是否正确',\n ' 2 - 当前账户是否已经与此登录方式解绑',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async unbindProvider(params: authModels.UnbindProviderRequest): Promise<void> {\n return this.oauthInstance.authApi.unbindProvider(params)\n }\n\n /**\n * 更新邮箱地址\n * @param email\n * @param sudo_token\n * @param verification_token\n */\n @catchErrorsDecorator({\n title: '绑定邮箱地址失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 auth().bindEmail() 的语法或参数是否正确',\n ' 2 - 当前环境是否开通了邮箱密码登录',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public bindEmail(params: authModels.BindEmailRequest) {\n return this.oauthInstance.authApi.editContact(params)\n }\n\n /**\n * verify\n * @param {authModels.VerifyRequest} params\n * @returns {Promise<authModels.VerifyResponse>}\n * @memberof User\n */\n @catchErrorsDecorator({\n title: '验证码验证失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 auth().verify() 的语法或参数是否正确',\n ' 2 - 当前环境是否开通了手机验证码/邮箱登录',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async verify(params: authModels.VerifyRequest): Promise<authModels.VerifyResponse> {\n return this.oauthInstance.authApi.verify(params)\n }\n\n /**\n * 获取验证码\n * @param {authModels.GetVerificationRequest} params\n * @returns {Promise<authModels.GetVerificationResponse>}\n * @memberof User\n */\n @catchErrorsDecorator({\n title: '获取验证码失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 auth().getVerification() 的语法或参数是否正确',\n ' 2 - 当前环境是否开通了手机验证码/邮箱登录',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async getVerification(\n params: authModels.GetVerificationRequest,\n options?: { withCaptcha: boolean },\n ): Promise<authModels.GetVerificationResponse> {\n if (params.phone_number) {\n params.phone_number = this.formatPhone(params.phone_number)\n }\n return this.oauthInstance.authApi.getVerification(params, options)\n }\n\n /**\n * 获取当前登录的用户信息-同步\n */\n get currentUser() {\n if (this.cache.mode === 'async') {\n // async storage的平台调用此API提示\n printWarn(\n ERRORS.INVALID_OPERATION,\n 'current platform\\'s storage is asynchronous, please use getCurrentUser instead',\n )\n return\n }\n\n const loginState = this.hasLoginState()\n\n if (loginState) {\n return loginState.user || null\n }\n return null\n }\n\n /**\n * 获取当前登录的用户信息-异步\n */\n @catchErrorsDecorator({\n title: '获取用户信息失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 auth().getCurrentUser() 的语法或参数是否正确',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async getCurrentUser(isRefresh = true): Promise<(authModels.UserInfo & Partial<User>) | null> {\n try {\n if (isRefresh) {\n const loginState = await this.getLoginState()\n if (loginState) {\n // 每次都发请求获取最新用户信息,不走缓存\n await loginState.user.refresh()\n }\n }\n } catch (error) {\n //\n }\n\n const loginState = await this.getLoginState()\n if (loginState) {\n const userInfo = loginState.user.getLocalUserInfo() as authModels.UserInfo\n await loginState.user.checkLocalInfoAsync()\n return { ...loginState.user, ...userInfo } as unknown as authModels.UserInfo & Partial<User>\n }\n return null\n }\n\n /**\n * 匿名登录\n * @returns {Promise<LoginState>}\n * @memberof Auth\n */\n @catchErrorsDecorator({\n title: '小程序匿名登录失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 当前环境是否开启了匿名登录',\n ' 2 - 调用 auth().signInAnonymouslyInWx() 的语法或参数是否正确',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async signInAnonymouslyInWx({\n useWxCloud,\n }: {\n useWxCloud?: boolean\n } = {}): Promise<LoginState> {\n if (!adapterForWxMp.isMatch()) {\n throw Error('wx api undefined')\n }\n const wxInfo = wx.getAccountInfoSync().miniProgram\n\n const mainFunc = async (code) => {\n let result: authModels.GrantProviderTokenResponse | undefined = undefined\n let credentials: Credentials | undefined = undefined\n\n try {\n result = await this.oauthInstance.authApi.grantProviderToken(\n {\n provider_id: wxInfo?.appId,\n provider_code: code,\n provider_params: {\n provider_code_type: 'open_id',\n appid: wxInfo?.appId,\n },\n },\n useWxCloud,\n )\n\n if ((result as any)?.error_code || !result.provider_token) {\n throw result\n }\n\n credentials = await this.oauthInstance.authApi.signInAnonymously(\n { provider_token: result.provider_token },\n useWxCloud,\n )\n\n if ((credentials as any)?.error_code) {\n throw credentials\n }\n } catch (error) {\n throw error\n }\n }\n\n await new Promise((resolve, reject) => {\n wx.login({\n success: async (res: { code: string }) => {\n try {\n await mainFunc(res.code)\n resolve(true)\n } catch (error) {\n reject(error)\n }\n },\n fail: (res: any) => {\n const error = new Error(res?.errMsg)\n ;(error as any).code = res?.errno\n reject(error)\n },\n })\n })\n\n return this.createLoginState(undefined, { asyncRefreshUser: true })\n }\n\n /**\n * 小程序绑定OpenID\n * @returns {Promise<LoginState>}\n * @memberof Auth\n */\n @catchErrorsDecorator({\n title: '小程序绑定OpenID失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 当前环境是否开启了小程序openId静默登录',\n ' 2 - 调用 auth().bindOpenId() 的语法或参数是否正确',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async bindOpenId(): Promise<void> {\n if (!adapterForWxMp.isMatch()) {\n throw Error('wx api undefined')\n }\n const wxInfo = wx.getAccountInfoSync().miniProgram\n\n const mainFunc = async (code) => {\n let result: authModels.GrantProviderTokenResponse | undefined = undefined\n\n try {\n result = await this.oauthInstance.authApi.grantProviderToken({\n provider_id: wxInfo?.appId,\n provider_code: code,\n provider_params: {\n provider_code_type: 'open_id',\n appid: wxInfo?.appId,\n },\n })\n\n if ((result as any)?.error_code || !result.provider_token) {\n throw result\n }\n\n await this.oauthInstance.authApi.bindWithProvider({ provider_token: result.provider_token })\n } catch (error) {\n throw error\n }\n }\n\n await new Promise((resolve, reject) => {\n wx.login({\n success: async (res: { code: string }) => {\n try {\n await mainFunc(res.code)\n resolve(true)\n } catch (error) {\n reject(error)\n }\n },\n fail: (res: any) => {\n const error = new Error(res?.errMsg)\n ;(error as any).code = res?.errno\n reject(error)\n },\n })\n })\n\n return\n }\n\n /**\n * 小程序unionId静默登录\n * @returns {Promise<LoginState>}\n * @memberof Auth\n */\n @catchErrorsDecorator({\n title: '小程序unionId静默登录失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 当前环境是否开启了小程序unionId静默登录',\n ' 2 - 调用 auth().signInWithUnionId() 的语法或参数是否正确',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async signInWithUnionId(): Promise<LoginState> {\n if (!adapterForWxMp.isMatch()) {\n throw Error('wx api undefined')\n }\n try {\n await new Promise((resolve, reject) => {\n const wxInfo = wx.getAccountInfoSync().miniProgram\n wx.login({\n success: async (res: { code: string }) => {\n const providerId = wxInfo?.appId\n try {\n const result = await this.oauthInstance.authApi.grantProviderToken({\n provider_code: res.code,\n provider_id: providerId,\n provider_params: {\n provider_code_type: 'union_id',\n appid: wxInfo?.appId,\n },\n })\n\n const { provider_token: providerToken } = result\n\n if (!providerToken) {\n reject(result)\n return\n }\n\n const signInRes = await this.oauthInstance.authApi.signInWithProvider({\n provider_id: providerId,\n provider_token: providerToken,\n })\n\n if ((signInRes as any)?.error_code) {\n reject(signInRes)\n return\n }\n resolve(true)\n } catch (error) {\n reject(error)\n }\n },\n fail: (res: any) => {\n const error = new Error(res?.errMsg)\n ;(error as any).code = res?.errno\n reject(error)\n },\n })\n })\n } catch (error) {\n throw error\n }\n\n return this.createLoginState()\n }\n\n /**\n * 小程序短信验证码登陆\n * @returns {Promise<LoginState>}\n * @memberof Auth\n */\n @catchErrorsDecorator({\n title: '短信验证码登陆',\n messages: [\n '请确认以下各项:',\n ' 1 - 当前环境是否开启了小程序短信验证码登陆',\n ' 2 - 调用 auth().signInWithSms() 的语法或参数是否正确',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async signInWithSms({\n verificationInfo = { verification_id: '', is_user: false },\n verificationCode = '',\n phoneNum = '',\n bindInfo = undefined,\n }): Promise<LoginState> {\n try {\n return this.signInWithUsername({\n verificationInfo,\n verificationCode,\n bindInfo,\n username: phoneNum,\n loginType: 'sms',\n })\n } catch (error) {\n throw error\n }\n }\n\n /**\n * 邮箱验证码登陆\n * @returns {Promise<LoginState>}\n * @memberof Auth\n */\n @catchErrorsDecorator({\n title: '邮箱验证码登陆',\n messages: [\n '请确认以下各项:',\n ' 1 - 当前环境是否开启了邮箱登陆',\n ' 2 - 调用 auth().signInWithEmail() 的语法或参数是否正确',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async signInWithEmail({\n verificationInfo = { verification_id: '', is_user: false },\n verificationCode = '',\n bindInfo = undefined,\n email = '',\n }): Promise<LoginState> {\n try {\n return this.signInWithUsername({\n verificationInfo,\n verificationCode,\n bindInfo,\n username: email,\n loginType: 'email',\n })\n } catch (error) {\n throw error\n }\n }\n\n /**\n * 设置获取自定义登录 ticket 函数\n * @param {authModels.GetCustomSignTicketFn} getTickFn\n * @memberof Auth\n */\n public setCustomSignFunc(getTickFn: authModels.GetCustomSignTicketFn): void {\n this.oauthInstance.authApi.setCustomSignFunc(getTickFn)\n }\n\n /**\n *\n * @returns {Promise<LoginState>}\n * @memberof Auth\n */\n // @catchErrorsDecorator({\n // title: '自定义登录失败',\n // messages: [\n // '请确认以下各项:',\n // ' 1 - 当前环境是否开启了自定义登录',\n // ' 2 - 调用 auth().signInWithCustomTicket() 的语法或参数是否正确',\n // ' 3 - ticket 是否归属于当前环境',\n // ' 4 - 创建 ticket 的自定义登录私钥是否过期',\n // `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n // ],\n // })\n // public async signInWithCustomTicket(): Promise<LoginState> {\n // await this.oauthInstance.authApi.signInWithCustomTicket()\n // return this.createLoginState()\n // }\n\n /**\n *\n * @param {authModels.SignInRequest} params\n * @returns {Promise<LoginState>}\n * @memberof Auth\n */\n public async signIn(params: authModels.SignInRequest): Promise<LoginState> {\n await this.oauthInstance.authApi.signIn(params)\n return this.createLoginState(params)\n }\n\n // /**\n // *\n // * @param {authModels.SignUpRequest} params\n // * @returns {Promise<LoginState>}\n // * @memberof Auth\n // */\n // @catchErrorsDecorator({\n // title: '注册失败',\n // messages: [\n // '请确认以下各项:',\n // ' 1 - 当前环境是否开启了指定登录方式',\n // ' 2 - 调用 auth().signUp() 的语法或参数是否正确',\n // `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n // ],\n // })\n // public async signUp(params: authModels.SignUpRequest): Promise<any> {\n // await this.oauthInstance.authApi.signUp(params)\n // return this.createLoginState()\n // }\n\n /**\n * 设置密码\n * @param {authModels.SetPasswordRequest} params\n * @returns {Promise<void>}\n * @memberof Auth\n */\n public async setPassword(params: authModels.SetPasswordRequest): Promise<void> {\n return this.oauthInstance.authApi.setPassword(params)\n }\n\n /**\n * 检测用户名是否已经占用\n * @param username\n */\n @catchErrorsDecorator({\n title: '获取用户是否被占用失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 auth().isUsernameRegistered() 的语法或参数是否正确',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async isUsernameRegistered(username: string): Promise<boolean> {\n if (typeof username !== 'string') {\n throwError(ERRORS.INVALID_PARAMS, 'username must be a string')\n }\n\n const { exist } = await this.oauthInstance.authApi.checkIfUserExist({ username })\n return exist\n }\n\n /**\n * 获取本地登录态-同步\n */\n public hasLoginState(): LoginState | null {\n if (this.cache.mode === 'async') {\n // async storage的平台调用此API提示\n printWarn(\n ERRORS.INVALID_OPERATION,\n 'current platform\\'s storage is asynchronous, please use getLoginState instead',\n )\n return\n }\n\n const oauthLoginState = this.oauthInstance?.authApi.hasLoginStateSync()\n if (oauthLoginState) {\n const loginState = new LoginState({\n envId: this.config.env,\n cache: this.cache,\n oauthInstance: this.oauthInstance,\n })\n return loginState\n }\n return null\n }\n\n /**\n * 获取本地登录态-异步\n * 此API为兼容异步storage的平台\n */\n @catchErrorsDecorator({\n title: '获取本地登录态失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 auth().getLoginState() 的语法或参数是否正确',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async getLoginState() {\n let oauthLoginState = null\n\n try {\n oauthLoginState = await this.oauthInstance.authApi.getLoginState()\n } catch (error) {\n return null\n }\n\n if (oauthLoginState) {\n const loginState = new LoginState({\n envId: this.config.env,\n cache: this.cache,\n oauthInstance: this.oauthInstance,\n })\n return loginState\n }\n\n return null\n }\n\n /**\n * @deprecated 使用 getCurrentUser 代替,因为与node-sdk方法名冲突\n * @returns\n */\n @catchErrorsDecorator({\n title: '获取用户信息失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 是否已登录',\n ' 2 - 调用 auth().getUserInfo() 的语法或参数是否正确',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async getUserInfo(): Promise<(authModels.UserInfo & Partial<User>) | null> {\n return this.getCurrentUser()\n }\n\n @catchErrorsDecorator({\n title: '获取微搭插件用户信息失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 是否已登录',\n ' 2 - 调用 auth().getWedaUserInfo() 的语法或参数是否正确',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async getWedaUserInfo(): Promise<any> {\n return this.oauthInstance.authApi.getWedaUserInfo()\n }\n\n public async updateUserBasicInfo(params: authModels.ModifyUserBasicInfoRequest) {\n const loginState = await this.getLoginState()\n if (loginState) {\n await (loginState.user as User).updateUserBasicInfo(params)\n }\n return\n }\n\n /**\n * getAuthHeader 兼容处理\n * 返回空对象\n */\n public getAuthHeader(): {} {\n console.error('Auth.getAuthHeader API 已废弃')\n return {}\n }\n\n /**\n * 为已有账户绑第三方账户\n * @param {authModels.BindWithProviderRequest} params\n * @returns {Promise<void>}\n * @memberof Auth\n */\n @catchErrorsDecorator({\n title: '绑定第三方登录方式失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 auth().bindWithProvider() 的语法或参数是否正确',\n ' 2 - 此账户是否已经绑定此第三方',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async bindWithProvider(params: authModels.BindWithProviderRequest): Promise<void> {\n return this.oauthInstance.authApi.bindWithProvider(params)\n }\n\n /**\n * 查询用户\n * @param {authModels.QueryUserProfileRequest} appended_params\n * @returns {Promise<authModels.UserProfile>}\n * @memberof Auth\n */\n public async queryUser(queryObj: authModels.QueryUserProfileRequest): Promise<authModels.QueryUserProfileResponse> {\n return this.oauthInstance.authApi.queryUserProfile(queryObj)\n }\n\n public async getAccessToken() {\n const oauthAccessTokenRes = await this.oauthInstance.oauth2client.getAccessToken()\n return {\n accessToken: oauthAccessTokenRes,\n env: this.config.env,\n }\n }\n\n public async grantProviderToken(params: authModels.GrantProviderTokenRequest,): Promise<authModels.GrantProviderTokenResponse> {\n return this.oauthInstance.authApi.grantProviderToken(params)\n }\n\n public async patchProviderToken(params: authModels.PatchProviderTokenRequest,): Promise<authModels.PatchProviderTokenResponse> {\n return this.oauthInstance.authApi.patchProviderToken(params)\n }\n\n public async signInWithProvider(params: authModels.SignInWithProviderRequest): Promise<LoginState> {\n await this.oauthInstance.authApi.signInWithProvider(params)\n return this.createLoginState(params)\n }\n\n public async signInWithWechat(params: any = {}) {\n await this.oauthInstance.authApi.signInWithWechat(params)\n return this.createLoginState(params)\n }\n\n public async grantToken(params: authModels.GrantTokenRequest): Promise<LoginState> {\n await this.oauthInstance.authApi.grantToken(params)\n return this.createLoginState()\n }\n\n public async genProviderRedirectUri(params: authModels.GenProviderRedirectUriRequest,): Promise<authModels.GenProviderRedirectUriResponse> {\n return this.oauthInstance.authApi.genProviderRedirectUri(params)\n }\n\n public async resetPassword(params: authModels.ResetPasswordRequest): Promise<void> {\n return this.oauthInstance.authApi.resetPassword(params)\n }\n\n public async deviceAuthorize(params: authModels.DeviceAuthorizeRequest): Promise<authModels.DeviceAuthorizeResponse> {\n return this.oauthInstance.authApi.deviceAuthorize(params)\n }\n\n public async sudo(params: authModels.SudoRequest): Promise<authModels.SudoResponse> {\n return this.oauthInstance.authApi.sudo(params)\n }\n\n public async deleteMe(params: authModels.WithSudoRequest): Promise<authModels.UserProfile> {\n return this.oauthInstance.authApi.deleteMe(params)\n }\n\n public async getProviders(): Promise<authModels.ProvidersResponse> {\n return this.oauthInstance.authApi.getProviders()\n }\n\n public async loginScope(): Promise<string> {\n return this.oauthInstance.authApi.loginScope()\n }\n\n public async loginGroups(): Promise<string[]> {\n return this.oauthInstance.authApi.loginGroups()\n }\n\n public async onLoginStateChanged(callback: Function) {\n this.config.eventBus?.on(EVENTS.LOGIN_STATE_CHANGED, async (params) => {\n // getLoginState会重复触发getCredentials,导致死循环,所以getCredentials出错不再出发getLoginState\n const loginState = params?.data?.eventType !== LOGIN_STATE_CHANGED_TYPE.CREDENTIALS_ERROR ? await this.getLoginState() : {}\n callback.call(this, { ...params, ...loginState })\n })\n // 立刻执行一次回调\n const loginState = await this.getLoginState()\n callback.call(this, loginState)\n }\n\n /**\n * 强制刷新token\n * @param params\n * @returns\n */\n public async refreshTokenForce(params: { version?: string }): Promise<Credentials> {\n return this.oauthInstance.authApi.refreshTokenForce(params)\n }\n\n /**\n * 获取身份信息\n * @returns\n */\n public async getCredentials(): Promise<Credentials> {\n return this.oauthInstance.authApi.getCredentials()\n }\n /**\n * 写入身份信息\n */\n public async setCredentials(credentials: Credentials) {\n await this.oauthInstance.oauth2client.setCredentials(credentials)\n }\n\n @catchErrorsDecorator({\n title: '获取身份源类型',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 auth().getProviderSubType() 的语法或参数是否正确',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async getProviderSubType(): Promise<authModels.ProviderSubType> {\n return this.oauthInstance.authApi.getProviderSubType()\n }\n\n public async createCaptchaData(params: { state: string; redirect_uri?: string }) {\n return this.oauthInstance.authApi.createCaptchaData(params)\n }\n\n public async verifyCaptchaData(params: { token: string; key: string }) {\n return this.oauthInstance.authApi.verifyCaptchaData(params)\n }\n\n public async getMiniProgramQrCode(params: authModels.GetMiniProgramQrCodeRequest,): Promise<authModels.GetMiniProgramQrCodeResponse> {\n return this.oauthInstance.authApi.getMiniProgramCode(params)\n }\n\n public async getMiniProgramQrCodeStatus(params: authModels.GetMiniProgramQrCodeStatusRequest,): Promise<authModels.GetMiniProgramQrCodeStatusResponse> {\n return this.oauthInstance.authApi.getMiniProgramQrCodeStatus(params)\n }\n\n public async modifyPassword(params: authModels.ModifyUserBasicInfoRequest): Promise<void> {\n return this.oauthInstance.authApi.modifyPassword(params)\n }\n\n public async modifyPasswordWithoutLogin(params: authModels.ModifyPasswordWithoutLoginRequest): Promise<void> {\n return this.oauthInstance.authApi.modifyPasswordWithoutLogin(params)\n }\n\n public async getUserBehaviorLog(params: authModels.GetUserBehaviorLog): Promise<authModels.GetUserBehaviorLogRes> {\n return this.oauthInstance.authApi.getUserBehaviorLog(params)\n }\n\n /**\n * sms/email 验证码登录/注册,逻辑一致收敛\n */\n public async signInWithUsername({\n verificationInfo = { verification_id: '', is_user: false },\n verificationCode = '',\n username: rawUsername = '',\n bindInfo = undefined,\n loginType = '',\n }: {\n verificationInfo?: authModels.GetVerificationResponse\n verificationCode?: string\n username?: string\n bindInfo?: any\n loginType?: string\n }): Promise<LoginState> {\n try {\n // 1. 验证验证码\n const verifyRes = await this.oauthInstance.authApi.verify({\n verification_id: verificationInfo.verification_id,\n verification_code: verificationCode,\n })\n\n if ((verifyRes as any)?.error_code) {\n throw verifyRes\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { verification_token } = verifyRes\n\n // 手机登录参数\n let username = this.formatPhone(rawUsername)\n let signUpParam: any = { phone_number: username }\n\n // 邮箱登录参数\n if (loginType === 'email') {\n username = rawUsername\n signUpParam = { email: username }\n }\n\n // 2. 根据是否已经是用户,分别走登录或注册逻辑\n if (verificationInfo.is_user) {\n // 私有化环境或者自定义应用走v1版本的老逻辑\n const signInRes = await this.oauthInstance.authApi.signIn({\n username,\n verification_token,\n })\n\n if ((signInRes as any)?.error_code) {\n throw signInRes\n }\n\n if (bindInfo) {\n const bindRes = await this.oauthInstance.authApi.bindWithProvider({\n provider_token: (bindInfo as any)?.providerToken,\n })\n\n if ((bindRes as any)?.error_code) {\n throw bindRes\n }\n }\n } else {\n // 自定义应用走signUp逻辑\n const signUpRes = await this.oauthInstance.authApi.signUp({\n ...signUpParam,\n verification_token,\n provider_token: (bindInfo as any)?.providerId,\n })\n\n if ((signUpRes as any)?.error_code) {\n throw signUpRes\n }\n }\n\n return this.createLoginState()\n } catch (error) {\n throw error\n }\n }\n\n async createLoginState(\n params?: { version?: string; query?: any },\n options?: { asyncRefreshUser?: boolean; userInfo?: any },\n ): Promise<LoginState> {\n const loginState = new LoginState({\n envId: this.config.env,\n cache: this.cache,\n oauthInstance: this.oauthInstance,\n })\n\n await loginState.checkLocalStateAsync()\n\n if (options?.userInfo) {\n loginState.user.setLocalUserInfo(options.userInfo)\n } else {\n if (options?.asyncRefreshUser) {\n loginState.user.refresh(params)\n } else {\n await loginState.user.refresh(params)\n }\n }\n\n this.config.eventBus?.fire(EVENTS.LOGIN_STATE_CHANGED, { eventType: LOGIN_STATE_CHANGED_TYPE.SIGN_IN })\n\n this.config.eventBus?.fire(EVENTS.AUTH_STATE_CHANGED, { event: AUTH_STATE_CHANGED_TYPE.SIGNED_IN })\n return loginState\n }\n\n async setAccessKey() {\n let accessToken = ''\n let scope = ''\n if (this.config.accessKey) {\n accessToken = this.config.accessKey\n scope = 'accessKey'\n } else if (this.config.auth?.secretId && this.config.auth?.secretKey) {\n accessToken = ''\n scope = DEFAULT_NODE_ACCESS_SCOPE\n }\n\n if (!scope) {\n return\n }\n\n try {\n this.oauthInstance.oauth2client.setAccessKeyCredentials({\n access_token: accessToken,\n token_type: 'Bearer',\n scope,\n expires_at: new Date(+new Date() + +new Date()),\n expires_in: +new Date() + +new Date(),\n })\n } catch (error) {\n console.warn('accessKey error: ', error)\n }\n }\n\n protected formatPhone(phone: string) {\n if (!/\\s+/.test(phone) && /^\\+\\d{1,3}\\d+/.test(phone)) {\n return phone.replace(/^(\\+\\d{1,2})(\\d+)$/, '$1 $2')\n }\n return /^\\+\\d{1,3}\\s+/.test(phone) ? phone : `+86 ${phone}`\n }\n\n private notifyListeners(event, session, info): OnAuthStateChangeCallback {\n this.listeners.forEach((callbacks) => {\n callbacks.forEach((callback) => {\n try {\n callback(event, session, info)\n } catch (error) {\n console.error('Error in auth state change callback:', error)\n }\n })\n })\n return\n }\n\n private setupListeners() {\n this.config.eventBus?.on(EVENTS.AUTH_STATE_CHANGED, async (params) => {\n const event = params?.data?.event\n const info = params?.data?.info\n const {\n data: { session },\n } = await this.getSession()\n\n this.notifyListeners(event, session, info)\n })\n }\n\n private convertToUser(userInfo: authModels.UserInfo & Partial<User>) {\n if (!userInfo) return null\n\n // 优先使用 userInfo 中的数据(V3 API)\n const email = userInfo?.email || ''\n const phone = userInfo?.phone_number || ''\n const userId = userInfo?.sub || userInfo?.uid || ''\n\n return {\n id: userId,\n aud: 'authenticated',\n role: userInfo.groups?.map?.(group => (typeof group === 'string' ? group : group.id)),\n email: email || '',\n email_confirmed_at: userInfo?.email_verified ? userInfo.created_at : userInfo.created_at,\n phone,\n phone_confirmed_at: phone ? userInfo.created_at : undefined,\n confirmed_at: userInfo.created_at,\n last_sign_in_at: (userInfo as any).last_sign_in_at,\n app_metadata: {\n provider: userInfo.loginType?.toLowerCase() || 'cloudbase',\n providers: [userInfo.loginType?.toLowerCase() || 'cloudbase'],\n },\n user_metadata: {\n // V3 API 用户信息\n name: userInfo?.name,\n picture: userInfo?.picture,\n username: userInfo?.username, // 用户名称,长度 5-24 位,支持字符中英文、数字、特殊字符(仅支持_-),不支持中文\n gender: userInfo?.gender,\n locale: userInfo?.locale,\n // V2 API 兼容(使用 any 避免类型错误)\n uid: userInfo.uid,\n nickName: userInfo.nickName || userInfo?.name,\n avatarUrl: userInfo.avatarUrl || userInfo.picture,\n location: userInfo.location,\n hasPassword: userInfo.hasPassword ?? ((userInfo as any).password === 'SET'),\n open_id: userInfo?.open_id,\n },\n identities:\n userInfo?.providers?.map(p => ({\n id: p.id || '',\n identity_id: p.id || '',\n user_id: userId,\n identity_data: {\n provider_id: p.id,\n provider_user_id: p.provider_user_id,\n name: p.name,\n },\n provider: p.id || 'cloudbase',\n created_at: userInfo.created_at,\n updated_at: userInfo.updated_at,\n last_sign_in_at: (userInfo as any).last_sign_in_at,\n })) || [],\n created_at: userInfo.created_at,\n updated_at: userInfo.updated_at,\n is_anonymous: userInfo.name === 'anonymous',\n }\n }\n\n /**\n * 参数校验辅助方法\n */\n private validateParams(params: any, rules: { [key: string]: { required?: boolean; message: string } }): void {\n for (const [key, rule] of Object.entries(rules)) {\n if (rule.required && (params?.[key] === undefined || params?.[key] === null || params?.[key] === '')) {\n throw new AuthError({ message: rule.message })\n }\n }\n }\n\n /**\n * 校验必填参数组(至少有一个参数必须有值)\n */\n private validateAtLeastOne(params: any, fieldGroups: string[][], message: string): void {\n const hasValue = fieldGroups.some(group => group.some(field => params?.[field] !== undefined && params?.[field] !== null && params?.[field] !== ''),)\n\n if (!hasValue) {\n throw new AuthError({ message })\n }\n }\n\n private async init(): Promise<{ error: Error | null }> {\n try {\n const credentials: Credentials = await this.oauthInstance.oauth2client.localCredentials.getCredentials()\n if (credentials) {\n this.config.eventBus?.fire(EVENTS.AUTH_STATE_CHANGED, { event: AUTH_STATE_CHANGED_TYPE.INITIAL_SESSION })\n }\n } catch (error) {\n // Ignore errors when checking for existing credentials\n }\n\n return { error: null }\n }\n}\n\ntype TInitAuthOptions = Pick<\nICloudbaseAuthConfig,\n'region' | 'persistence' | 'i18n' | 'accessKey' | 'useWxCloud' | 'auth'\n> &\nPartial<AuthOptions> & {\n detectSessionInUrl?: boolean\n}\n\nexport function generateAuthInstance(\n config: TInitAuthOptions & { sdkVersion?: string },\n options?: {\n clientId: ICloudbaseConfig['clientId']\n env: ICloudbaseConfig['env']\n apiOrigin: string\n cache?: ICloudbaseCache\n platform?: ICloudbase['platform']\n app?: ICloudbase\n debug?: ICloudbaseAuthConfig['debug']\n detectSessionInUrl?: ICloudbaseAuthConfig['detectSessionInUrl']\n },\n) {\n const { region = 'ap-shanghai', i18n, accessKey, useWxCloud } = config\n const platform = options?.platform || (useDefaultAdapter.bind(options)() as ICloudbasePlatformInfo)\n const { runtime, adapter } = platform\n\n const { env, clientId, debug, cache, app: cloudbase } = options || {}\n let { apiOrigin } = options || {}\n if (!apiOrigin) {\n apiOrigin = `https://${env}.${region}.tcb-api.tencentcloudapi.com`\n }\n\n const commonOpts = {\n env,\n clientId,\n i18n,\n accessKey,\n useWxCloud,\n eventBus: new CloudbaseEventEmitter(),\n }\n\n const oauthInstance = new CloudbaseOAuth(useAuthAdapter({\n ...commonOpts,\n apiOrigin,\n apiPath: config?.apiPath || AUTH_API_PREFIX,\n // @todo 以下最好走adaptor处理,目前oauth模块没按adaptor接口设计\n storage: config?.storage,\n baseRequest: config?.baseRequest,\n request: config?.request,\n anonymousSignInFunc: config?.anonymousSignInFunc,\n captchaOptions: config?.captchaOptions,\n wxCloud: config?.wxCloud,\n adapter,\n onCredentialsError: onCredentialsError(commonOpts.eventBus),\n headers: { 'X-SDK-Version': `@cloudbase/js-sdk/${config.sdkVersion}`, ...(config.headers || {}) },\n detectSessionInUrl: config.detectSessionInUrl,\n debug,\n auth: options.app?.config?.auth,\n }),)\n\n const authInstance = new Auth({\n ...commonOpts,\n region,\n persistence: config.persistence,\n debug,\n cache:\n cache || new CloudbaseCache({\n persistence: config.persistence,\n keys: { userInfoKey: `user_info_${env}` },\n platformInfo: platform,\n }),\n runtime: runtime || 'web',\n _fromApp: cloudbase,\n oauthInstance,\n auth: options.app?.config?.auth,\n })\n\n // Initialize session with user info callback\n // This handles OAuth callback URL detection and creates login state atomically\n oauthInstance.initializeSession(async (data, error) => {\n if (!data) return\n\n if (data.type === OAUTH_TYPE.SIGN_IN) {\n if (error) {\n commonOpts.eventBus.fire(EVENTS.AUTH_STATE_CHANGED, {\n event: AUTH_STATE_CHANGED_TYPE.SIGNED_IN,\n info: { ...data, error },\n })\n } else if (data.user) {\n // 使用已获取的 user 信息创建 LoginState,复用 createLoginState 逻辑\n // 但跳过 refresh() 避免再次请求 API 导致死锁\n authInstance.createLoginState({}, { userInfo: data.user })\n }\n } else if (data.type === OAUTH_TYPE.BIND_IDENTITY) {\n commonOpts.eventBus.fire(EVENTS.AUTH_STATE_CHANGED, {\n event: AUTH_STATE_CHANGED_TYPE.BIND_IDENTITY,\n info: { ...data, error },\n })\n }\n })\n\n return { authInstance, oauthInstance }\n}\n\nconst NAMESPACE = 'auth'\n\n/**\n * 计算两个字符串之间的编辑距离(Levenshtein distance)\n * 用于在用户调用不存在的 Auth 方法时,推荐最相似的方法名\n */\nfunction levenshteinDistance(a: string, b: string): number {\n const matrix: number[][] = []\n for (let i = 0; i <= a.length; i++) {\n matrix[i] = [i]\n }\n for (let j = 0; j <= b.length; j++) {\n matrix[0][j] = j\n }\n for (let i = 1; i <= a.length; i++) {\n for (let j = 1; j <= b.length; j++) {\n const cost = a[i - 1].toLowerCase() === b[j - 1].toLowerCase() ? 0 : 1\n matrix[i][j] = Math.min(\n matrix[i - 1][j] + 1,\n matrix[i][j - 1] + 1,\n matrix[i - 1][j - 1] + cost,\n )\n }\n }\n return matrix[a.length][b.length]\n}\n\n/**\n * 在方法列表中查找与目标名称最相似的方法\n * @returns 最相似的方法名,如果没有足够相似的则返回 null\n */\nfunction findSimilarMethod(target: string, methods: string[]): string | null {\n let bestMatch: string | null = null\n let bestDistance = Infinity\n\n for (const method of methods) {\n // 跳过私有方法和构造函数\n if (method.startsWith('_') || method === 'constructor') continue\n const distance = levenshteinDistance(target, method)\n if (distance < bestDistance) {\n bestDistance = distance\n bestMatch = method\n }\n }\n return bestMatch\n}\n\nconst component: ICloudbaseComponent = {\n name: COMPONENT_NAME,\n namespace: NAMESPACE,\n entity(config?: TInitAuthOptions) {\n const auth = function (config?: TInitAuthOptions) {\n if (this.authInstance && !config) {\n // printWarn(ERRORS.INVALID_OPERATION, 'every cloudbase instance should has only one auth object')\n return this.authInstance\n }\n\n config = config || {\n region: '',\n persistence: 'local',\n apiPath: AUTH_API_PREFIX,\n }\n const { adapter } = this.platform\n // 如不明确指定persistence则优先取各平台adapter首选,其次localStorage\n const newPersistence = config.persistence || adapter.primaryStorage\n if (newPersistence && newPersistence !== this.config.persistence) {\n this.updateConfig({ persistence: newPersistence })\n }\n\n const { authInstance, oauthInstance } = generateAuthInstance(\n {\n wxCloud: this.config.wxCloud,\n storage: this.config.storage,\n ...config,\n persistence: this.config.persistence,\n i18n: this.config.i18n,\n accessKey: this.config.accessKey,\n useWxCloud: this.config.useWxCloud,\n sdkVersion: this.version,\n detectSessionInUrl: this.config.auth?.detectSessionInUrl,\n },\n {\n env: this.config.env,\n clientId: this.config.clientId,\n apiOrigin: this.request.getBaseEndPoint(this.config.endPointMode || 'CLOUD_API'),\n platform: this.platform,\n cache: this.cache,\n app: this,\n debug: this.config.debug,\n },\n )\n\n this.oauthInstance = oauthInstance\n\n this.authInstance = authInstance\n\n return this.authInstance\n }\n\n const authProto = auth.call(this, config)\n Object.assign(auth, authProto)\n Object.setPrototypeOf(auth, Object.getPrototypeOf(authProto))\n\n // 包装 Proxy,当用户调用不存在的方法时提供 \"Did you mean?\" 提示\n const authWithHint = typeof Proxy !== 'undefined'\n ? new Proxy(auth, {\n get(target, prop, receiver) {\n const value = Reflect.get(target, prop, receiver)\n if (value !== undefined || typeof prop !== 'string') {\n return value\n }\n // 查找最相似的方法名\n const allKeys = Object.getOwnPropertyNames(Object.getPrototypeOf(target))\n .concat(Object.keys(target))\n .filter(k => typeof target[k] === 'function')\n const suggestion = findSimilarMethod(prop, allKeys)\n if (suggestion) {\n console.warn(`[CloudBase Auth] auth.${prop} is not a function. Did you mean: auth.${suggestion}() ?`)\n }\n return value\n },\n })\n : auth\n\n this[NAMESPACE] = authWithHint\n return authWithHint\n },\n}\n\ntry {\n // 尝试自动注册至全局变量cloudbase\n // 此行为只在浏览器环境下有效\n cloudbase.registerComponent(component)\n} catch (e) {}\n\nexport { UserInfo, Auth, WeixinAuthProvider, CustomAuthProvider, AnonymousAuthProvider }\n// 导出错误分类枚举和 AuthError,方便开发者进行错误分类处理\nexport { AuthErrorCategory, AuthError } from '@cloudbase/oauth'\n/**\n * @api 手动注册至cloudbase app\n */\nexport function registerAuth(app: Pick<ICloudbase, 'registerComponent'>) {\n try {\n app.registerComponent(component)\n } catch (e) {\n console.warn(e)\n }\n}\n","// 为了减少小程序体积,导出方法并 boudle,同时防止其中使用了 web 运行环境\nexport { printWarn, throwError } from '@cloudbase/utilities/dist/cjs/libs/util'\nexport { ERRORS, COMMUNITY_SITE_URL } from '@cloudbase/utilities/dist/cjs/constants'\nexport { catchErrorsDecorator } from '@cloudbase/utilities/dist/cjs/helpers'\nexport { CloudbaseEventEmitter } from '@cloudbase/utilities/dist/cjs/libs/events'\nexport { CloudbaseCache } from '@cloudbase/utilities/dist/cjs/libs/cache'\nexport { default as adapterForWxMp } from '@cloudbase/adapter-wx_mp'\nexport { useDefaultAdapter } from '@cloudbase/utilities/dist/cjs/adapters'\n","/**\n * 存储参数到浏览器sessionStorage\n * @param key\n * @param value\n */\nexport function saveToBrowserSession(key: string, value: Record<string, any>) {\n try {\n sessionStorage.setItem(key, JSON.stringify(value))\n } catch (error) {\n console.error('Failed to save to browser session:', error)\n }\n}\n\nexport function getBrowserSession(key: string) {\n try {\n const data = JSON.parse(sessionStorage.getItem(key))\n return data\n } catch (error) {\n console.error('Failed to get browser session:', error)\n return null\n }\n}\n\nexport function removeBrowserSession(key: string) {\n try {\n sessionStorage.removeItem(key)\n return true\n } catch (error) {\n console.error('Failed to remove browser session:', error)\n return null\n }\n}\n\nexport function addUrlSearch(search: Location['search'], hash?: Location['hash']): string {\n if (search === undefined) return\n\n // 1. 解析当前 URL\n const url = new URL(window.location.href)\n\n // 2. 操作查询参数\n url.search = search // 覆盖已有参数或新增参数\n\n url.hash = hash || url.hash\n\n // 3. 更新地址栏(保留哈希值)\n window.history.replaceState({}, '', url.href)\n\n return url.href\n}\n\n/**\n * 从 URL 中移除指定的查询参数\n * @param params 要移除的参数名数组\n */\nexport function removeUrlParams(params: string[]) {\n if (typeof window === 'undefined') return\n\n try {\n const url = new URL(window.location.href)\n\n // 移除指定的参数\n params.forEach((param) => {\n url.searchParams.delete(param)\n })\n\n // 使用 replaceState 更新 URL,不会在浏览器历史中留下记录\n window.history.replaceState({}, '', url.href)\n } catch (error) {\n console.error('Failed to remove URL params:', error)\n }\n}\n","/* eslint-disable @typescript-eslint/no-useless-constructor */\n/**\n * v1 兼容层\n * 本文件包含 v1 版本的 Provider 类、Auth v1 兼容方法和 User v1 兼容方法。\n * Auth 类通过 extends AuthV1Compat 来继承 v1 方法。\n * User 类通过 applyUserV1Compat mixin 来扩展 v1 方法。\n */\nimport type { authModels } from '@cloudbase/oauth'\nimport {\n LOGIN_STATE_CHANGED_TYPE,\n AUTH_STATE_CHANGED_TYPE,\n} from '@cloudbase/oauth'\nimport {\n throwError,\n ERRORS,\n} from './utilities'\nimport type { SignUpRes } from './type'\n\n// ========== v1 兼容 Provider 类 ==========\n\n/**\n * v1 微信登录 Provider\n * 使用方式: auth.weixinAuthProvider({ appid, scope }).signInWithRedirect()\n *\n * @deprecated v1 兼容 API。建议使用 auth.signInWithOAuth({ provider }) 替代。\n */\nexport class WeixinAuthProvider {\n constructor(_options: {\n authInstance: any\n appid: string\n scope: string\n }) {\n // v1 兼容类,所有方法均抛出异常提示替代方案\n }\n\n /**\n * @deprecated v1 兼容 API。\n * 建议使用 auth.signInWithOAuth({ provider: 'providerId' }) 替代。\n */\n public signInWithRedirect(): void {\n throw new Error('[v1 兼容] WeixinAuthProvider.signInWithRedirect() 在当前版本中无法实现。'\n + ' 建议使用 auth.signInWithOAuth({ provider: \\'providerId\\' }) 替代。',)\n }\n\n /**\n * @deprecated v1 兼容 API。\n * 建议使用 auth.verifyOAuth({ code, state, provider }) 替代。\n */\n public async getRedirectResult(_options?: {\n createUser?: boolean\n syncUserInfo?: boolean\n }): Promise<any> {\n throw new Error('[v1 兼容] WeixinAuthProvider.getRedirectResult() 在当前版本中无法实现。'\n + ' 建议使用 auth.verifyOAuth({ code, state, provider }) 替代。',)\n }\n\n /**\n * @deprecated v1 兼容 API。\n * 建议使用 auth.linkIdentity({ provider: 'providerId' }) 替代。\n */\n public async getLinkRedirectResult(_options?: {\n withUnionId?: boolean\n }): Promise<void> {\n throw new Error('[v1 兼容] WeixinAuthProvider.getLinkRedirectResult() 在当前版本中无法实现。'\n + ' 建议使用 auth.linkIdentity({ provider: \\'providerId\\' }) 替代。',)\n }\n}\n\n/**\n * v1 自定义登录 Provider\n * 使用方式: auth.customAuthProvider().signIn(ticket)\n *\n * @deprecated v1 兼容 API。建议使用 auth.signInWithCustomTicket(() => Promise.resolve(ticket)) 替代。\n */\nexport class CustomAuthProvider {\n private authInstance: any\n\n constructor(options: {\n authInstance: any\n }) {\n this.authInstance = options.authInstance\n }\n\n /**\n * 使用自定义登录凭据 ticket 登录云开发\n * @param ticket 自定义登录 ticket\n * @deprecated v1 兼容 API。建议使用 auth.signInWithCustomTicket(() => Promise.resolve(ticket)) 替代。\n */\n public async signIn(ticket: string): Promise<void> {\n // 使用 Auth 已有的 signInWithCustomTicket 方法\n await this.authInstance.signInWithCustomTicket(() => Promise.resolve(ticket))\n }\n}\n\n/**\n * v1 匿名登录 Provider\n * 使用方式: auth.anonymousAuthProvider().signIn()\n *\n * @deprecated v1 兼容 API。建议使用 auth.signInAnonymously({}) 替代。\n */\nexport class AnonymousAuthProvider {\n private authInstance: any\n\n constructor(options: {\n authInstance: any\n }) {\n this.authInstance = options.authInstance\n }\n\n /**\n * 匿名登录云开发\n * @deprecated v1 兼容 API。建议使用 auth.signInAnonymously({}) 替代。\n */\n public async signIn(): Promise<void> {\n // 使用 Auth 已有的 signInAnonymously 方法\n await this.authInstance.signInAnonymously({})\n }\n}\n\n// ========== Auth v1 兼容基类 ==========\n\n/**\n * AuthV1Compat 基类,提供 v1 版本的兼容 API 方法。\n * Auth 类通过 extends AuthV1Compat 来继承这些方法。\n *\n * 注意:此类中的方法通过 this 访问子类 Auth 的方法和属性,\n * 包括: signIn, signUp, signInWithCustomTicket, signInAnonymously,\n * getVerification, resetPassword, onLoginStateChanged, onAuthStateChange,\n * createLoginState, formatPhone, config, signInWithOAuth 等。\n */\n// eslint-disable @typescript-eslint/member-ordering -- abstract 基类中 abstract 声明与 public 方法排序不适用常规规则\nexport abstract class AuthV1Compat {\n abstract readonly config: any\n\n // ========== v1 兼容 API 方法 ==========\n\n /**\n * v1 API: 获取用于微信登录的 WeixinAuthProvider // cspell:ignore weixin Weixin\n * @deprecated 建议使用 auth.signInWithOAuth({ provider: appid }) 替代。\n */\n public weixinAuthProvider(options: { appid: string; scope: string }): WeixinAuthProvider {\n return new WeixinAuthProvider({\n authInstance: this,\n appid: options.appid,\n scope: options.scope,\n })\n }\n\n /**\n * v1 API: 获取用于自定义登录的 CustomAuthProvider\n * @deprecated 建议使用 auth.signInWithCustomTicket(() => Promise.resolve(ticket)) 替代。\n */\n public customAuthProvider(): CustomAuthProvider {\n return new CustomAuthProvider({\n authInstance: this,\n })\n }\n\n /**\n * v1 API: 获取用于匿名登录的 AnonymousAuthProvider\n * @deprecated 建议使用 auth.signInAnonymously({}) 替代。\n */\n public anonymousAuthProvider(): AnonymousAuthProvider {\n return new AnonymousAuthProvider({\n authInstance: this,\n })\n }\n\n /**\n * v1 API: 使用邮箱和密码注册云开发账户\n * @deprecated 建议使用 auth.signUp({ email, password }) 替代。\n */\n public async signUpWithEmailAndPassword(email: string, password: string): Promise<SignUpRes> {\n if (typeof email !== 'string') {\n throwError(ERRORS.INVALID_PARAMS, 'email must be a string')\n }\n if (typeof password !== 'string') {\n throwError(ERRORS.INVALID_PARAMS, 'password must be a string')\n }\n\n // 使用 Auth 已有的 signUp 方法\n return await this.signUp({\n email,\n password,\n })\n }\n\n /**\n * v1 API: 使用邮箱和密码登录云开发\n * @deprecated 建议使用 auth.signInWithPassword({ email, password }) 替代。\n */\n public async signInWithEmailAndPassword(email: string, password: string): Promise<any> {\n if (typeof email !== 'string') {\n throwError(ERRORS.INVALID_PARAMS, 'email must be a string')\n }\n if (typeof password !== 'string') {\n throwError(ERRORS.INVALID_PARAMS, 'password must be a string')\n }\n\n // 使用 Auth 已有的 signIn 方法\n await this.signIn({\n username: email,\n password,\n })\n return this.createLoginState()\n }\n\n /**\n * v1 API: 发送重置密码的邮件\n * @deprecated 建议使用 auth.resetPasswordForEmail(email) 替代。\n */\n public async sendPasswordResetEmail(email: string): Promise<void> {\n if (typeof email !== 'string') {\n throwError(ERRORS.INVALID_PARAMS, 'email must be a string')\n }\n\n // 使用 Auth 已有的 getVerification 方法\n await this.getVerification({ email })\n }\n\n /**\n * v1 API: 使用用户名密码登录云开发\n * @deprecated 建议使用 auth.signInWithPassword({ username, password }) 替代。\n */\n public async signInWithUsernameAndPassword(username: string, password: string): Promise<any> {\n if (typeof username !== 'string') {\n throwError(ERRORS.INVALID_PARAMS, 'username must be a string')\n }\n if (typeof password !== 'string') {\n throwError(ERRORS.INVALID_PARAMS, 'password must be a string')\n }\n\n // 使用 Auth 已有的 signIn 方法\n await this.signIn({\n username,\n password,\n })\n return this.createLoginState()\n }\n\n /**\n * v1 API: 发送手机验证码\n * @deprecated 推荐使用 auth.signInWithOtp({ phone }) 替代,可获得\"发送→验证→登录\"完整流程。\n * 此方法仅发送验证码并返回 boolean,不会返回 verifyOtp 回调。\n */\n public async sendPhoneCode(phoneNumber: string): Promise<boolean> {\n if (typeof phoneNumber !== 'string') {\n throwError(ERRORS.INVALID_PARAMS, 'phoneNumber must be a string')\n }\n\n // 使用 Auth 已有的 getVerification 方法\n const formattedPhone = this.formatPhone(phoneNumber)\n await this.getVerification({ phone_number: formattedPhone })\n return true\n }\n\n /**\n * v1 API: 手机号注册(支持短信验证码+密码方式)\n * @deprecated 推荐使用 auth.signUp({ phone, password? }) 替代,支持验证码验证一体化流程。\n */\n public async signUpWithPhoneCode(phoneNumber: string, phoneCode: string, password?: string): Promise<any> {\n if (typeof phoneNumber !== 'string') {\n throwError(ERRORS.INVALID_PARAMS, 'phoneNumber must be a string')\n }\n if (typeof phoneCode !== 'string') {\n throwError(ERRORS.INVALID_PARAMS, 'phoneCode must be a string')\n }\n\n const formattedPhone = this.formatPhone(phoneNumber)\n\n // 使用 Auth 已有的 signUp 方法\n await this.signUp({\n phone_number: formattedPhone,\n verification_code: phoneCode,\n ...(password ? { password } : {}),\n })\n return this.createLoginState()\n }\n\n /**\n * v1 API: 手机号登录(支持短信验证码 or 密码方式)\n * @deprecated 密码方式推荐 auth.signInWithPassword({ phone, password });\n * 验证码方式推荐 auth.signInWithOtp({ phone }),返回 verifyOtp 回调完成验证。\n */\n public async signInWithPhoneCodeOrPassword(params: {\n phoneNumber: string\n phoneCode?: string\n password?: string\n }): Promise<any> {\n const { phoneNumber, phoneCode, password } = params\n if (typeof phoneNumber !== 'string') {\n throwError(ERRORS.INVALID_PARAMS, 'phoneNumber must be a string')\n }\n\n const formattedPhone = this.formatPhone(phoneNumber)\n\n if (password) {\n // 使用 Auth 已有的 signIn 方法进行密码登录\n await this.signIn({\n username: formattedPhone,\n password,\n })\n } else if (phoneCode) {\n // 使用 Auth 已有的 signIn 方法进行验证码登录\n await this.signIn({\n username: formattedPhone,\n verification_token: phoneCode,\n } as any)\n } else {\n throwError(ERRORS.INVALID_PARAMS, 'phoneCode or password must be provided')\n }\n return this.createLoginState()\n }\n\n /**\n * v1 API: 手机号强制重置密码\n * @deprecated 建议使用 auth.resetPasswordForEmail(phoneNumber) 替代。\n */\n public async forceResetPwdByPhoneCode(params: {\n phoneNumber: string\n phoneCode: string\n password: string\n }): Promise<any> {\n const { phoneNumber, phoneCode, password } = params\n if (typeof phoneNumber !== 'string') {\n throwError(ERRORS.INVALID_PARAMS, 'phoneNumber must be a string')\n }\n if (typeof phoneCode !== 'string') {\n throwError(ERRORS.INVALID_PARAMS, 'phoneCode must be a string')\n }\n if (typeof password !== 'string') {\n throwError(ERRORS.INVALID_PARAMS, 'password must be a string')\n }\n\n const formattedPhone = this.formatPhone(phoneNumber)\n\n // 使用 Auth 已有的 resetPassword 方法\n await this.resetPassword({\n phone_number: formattedPhone,\n new_password: password,\n verification_token: phoneCode,\n })\n\n // 重置密码成功后使用 Auth 已有的 signIn 方法自动登录\n await this.signIn({\n username: formattedPhone,\n password,\n })\n return this.createLoginState()\n }\n\n /**\n * v1 API: 接收一个回调函数,在刷新短期访问令牌前调用,根据返回值决定是否刷新\n * @deprecated v1 兼容 API,当前 v3 SDK 中无直接对应方法。\n * 建议使用 auth.onAuthStateChange(callback) 监听 TOKEN_REFRESHED 事件替代。\n */\n public shouldRefreshAccessToken(_callback: () => boolean): void {\n throw new Error('[v1 兼容] shouldRefreshAccessToken() 在当前版本中无法实现。'\n + ' 建议使用 auth.onAuthStateChange(callback) 来监听 TOKEN_REFRESHED 事件替代。',)\n }\n\n /**\n * v1 API: 接收一个回调函数,在登录状态过期时调用\n * @deprecated 建议使用 auth.onAuthStateChange(callback) 替代,监听 SIGNED_OUT 事件。\n */\n public onLoginStateExpired(callback: Function): void {\n // 使用 Auth 已有的 onLoginStateChanged 方法\n this.onLoginStateChanged((params) => {\n if (params?.eventType === LOGIN_STATE_CHANGED_TYPE.CREDENTIALS_ERROR) {\n callback.call(this)\n }\n })\n }\n\n /**\n * v1 API: 接收一个回调函数,在短期访问令牌刷新后调用\n * @deprecated 建议使用 auth.onAuthStateChange(callback) 替代,监听 TOKEN_REFRESHED 事件。\n */\n public onAccessTokenRefreshed(callback: Function): void {\n // 使用 Auth 已有的 onAuthStateChange 方法\n this.onAuthStateChange((event) => {\n if (event === AUTH_STATE_CHANGED_TYPE.TOKEN_REFRESHED) {\n callback.call(this)\n }\n })\n }\n\n /**\n * v1 API: 接收一个回调函数,在匿名登录状态被转换后调用\n * @deprecated 建议使用 auth.onAuthStateChange(callback) 替代,监听 SIGNED_IN 事件。\n */\n public onAnonymousConverted(callback: Function): void {\n // 使用 Auth 已有的 onAuthStateChange 方法\n this.onAuthStateChange((event) => {\n if (event === AUTH_STATE_CHANGED_TYPE.SIGNED_IN) {\n callback.call(this)\n }\n })\n }\n\n /**\n * v1 API: 接收一个回调函数,在登录类型发生变化后调用\n * @deprecated 建议使用 auth.onAuthStateChange(callback) 替代,监听 SIGNED_IN / SIGNED_OUT 事件。\n */\n public onLoginTypeChanged(callback: Function): void {\n // 使用 Auth 已有的 onAuthStateChange 方法\n this.onAuthStateChange((event) => {\n if (event === AUTH_STATE_CHANGED_TYPE.SIGNED_IN || event === AUTH_STATE_CHANGED_TYPE.SIGNED_OUT) {\n callback.call(this)\n }\n })\n }\n\n // ========== 声明子类 Auth 需要提供的方法/属性 ==========\n abstract signIn(params: authModels.SignInRequest): Promise<any>\n abstract signUp(params: authModels.SignUpRequest & { phone?: string }): Promise<SignUpRes>\n abstract signInWithCustomTicket(getTickFn?: authModels.GetCustomSignTicketFn): Promise<any>\n abstract signInAnonymously(params: any): Promise<any>\n abstract getVerification(params: any, options?: any): Promise<authModels.GetVerificationResponse>\n abstract resetPassword(params: authModels.ResetPasswordRequest): Promise<void>\n abstract onLoginStateChanged(callback: Function): Promise<void>\n abstract onAuthStateChange(callback: any): any\n abstract createLoginState(params?: any, options?: any): Promise<any>\n abstract signInWithOAuth(params: any): Promise<any>\n abstract grantProviderToken(params: authModels.GrantProviderTokenRequest): Promise<authModels.GrantProviderTokenResponse>\n abstract bindWithProvider(params: authModels.BindWithProviderRequest): Promise<void>\n protected abstract formatPhone(phone: string): string\n}\n\n// ========== User v1 兼容 mixin ==========\n\n/**\n * 将 v1 兼容方法应用到 User 类的 prototype 上。\n * 在 index.ts 中调用: applyUserV1Compat(User)\n */\nexport function applyUserV1Compat(UserClass: any): void {\n /**\n * v1 API: 将当前账户与自定义登录 Ticket 进行绑定\n * @deprecated v1 兼容 API,当前版本中无法直接实现。\n * 建议使用 auth.signInWithCustomTicket(() => Promise.resolve(ticket)) 替代。\n */\n UserClass.prototype.linkWithTicket = async function (_ticket: string): Promise<void> {\n throw new Error('[v1 兼容] User.linkWithTicket() 在当前版本中无法实现。'\n + ' 建议使用 auth.signInWithCustomTicket(() => Promise.resolve(ticket)) 替代。',)\n }\n\n /**\n * v1 API: 将当前账户与第三方鉴权提供方(以重定向形式)进行绑定\n * @deprecated 建议使用 auth.linkIdentity({ provider: 'providerId' }) 替代。\n */\n UserClass.prototype.linkWithRedirect = function (_provider: any): void {\n throw new Error('[v1 兼容] User.linkWithRedirect() 在当前版本中无法实现。'\n + ' 建议使用 auth.linkIdentity({ provider: \\'providerId\\' }) 替代。',)\n }\n\n /**\n * v1 API: 更新当前的登录邮箱\n * @deprecated 建议使用 auth.updateUser({ email: newEmail }) 替代。\n */\n UserClass.prototype.updateEmail = async function (newEmail: string, _password?: string): Promise<void> {\n if (typeof newEmail !== 'string') {\n throwError(ERRORS.INVALID_PARAMS, 'newEmail must be a string')\n }\n\n // 使用 User 已有的 updateUserBasicInfo 方法\n await this.updateUserBasicInfo({\n email: newEmail,\n })\n }\n\n /**\n * v1 API: 绑定手机号\n * @deprecated v1 兼容 API,当前版本中无法直接在 User 上实现。\n * 建议使用 auth.bindPhoneNumber({ phone_number, verification_token, sudo_token }) 替代。\n */\n UserClass.prototype.linkWithPhoneNumber = async function (_phoneNumber: string, _phoneCode: string): Promise<void> {\n throw new Error('[v1 兼容] User.linkWithPhoneNumber() 在当前版本中无法实现。'\n + ' 建议使用 auth.bindPhoneNumber({ phone_number, verification_token, sudo_token }) 替代。',)\n }\n\n /**\n * v1 API: 更新手机号\n * @deprecated v1 兼容 API,当前版本中无法直接在 User 上实现。\n * 建议使用 auth.updateUser({ phone: newPhoneNumber }) 替代。\n */\n UserClass.prototype.updatePhoneNumber = async function (_phoneNumber: string, _phoneCode: string): Promise<void> {\n throw new Error('[v1 兼容] User.updatePhoneNumber() 在当前版本中无法实现。'\n + ' 建议使用 auth.updateUser({ phone: newPhoneNumber }) 替代。',)\n }\n\n /**\n * v1 API: 解绑某个登录方式\n * @deprecated v1 兼容 API,当前版本中无法直接在 User 上实现。\n * 建议使用 auth.unlinkIdentity({ provider: loginType }) 替代。\n */\n UserClass.prototype.unlink = async function (_loginType: string): Promise<void> {\n throw new Error('[v1 兼容] User.unlink() 在当前版本中无法实现。'\n + ' 建议使用 auth.unlinkIdentity({ provider: loginType }) 替代。',)\n }\n}\n","'use strict'\n\nimport { ApiUrls, ApiUrlsV2, AUTH_STATE_CHANGED_TYPE, ErrorType, EVENTS, OAUTH_TYPE } from './consts'\nimport {\n GetVerificationRequest,\n GetVerificationResponse,\n UserProfile,\n UserInfo,\n SignInRequest,\n SignUpRequest,\n VerifyRequest,\n VerifyResponse,\n GenProviderRedirectUriRequest,\n GenProviderRedirectUriResponse,\n GrantProviderTokenRequest,\n GrantProviderTokenResponse,\n PatchProviderTokenRequest,\n PatchProviderTokenResponse,\n SignInWithProviderRequest,\n SignInCustomRequest,\n BindWithProviderRequest,\n TransByProviderRequest,\n GrantTokenRequest,\n UnbindProviderRequest,\n CheckPasswordRequest,\n SetPasswordRequest,\n ChangeBoundProviderRequest,\n ChangeBoundProviderResponse,\n UpdatePasswordRequest,\n SudoResponse,\n SudoRequest,\n GetCustomSignTicketFn,\n QueryUserProfileRequest,\n QueryUserProfileResponse,\n ResetPasswordRequest,\n DeviceAuthorizeRequest,\n DeviceAuthorizeResponse,\n CheckUsernameRequest,\n CheckIfUserExistRequest,\n CheckIfUserExistResponse,\n WithSudoRequest,\n PublicKey,\n EncryptParams,\n ProviderSubType,\n GetMiniProgramQrCodeRequest,\n GetMiniProgramQrCodeStatusRequest,\n GetMiniProgramQrCodeResponse,\n GetMiniProgramQrCodeStatusResponse,\n ModifyUserBasicInfoRequest,\n EditContactRequest,\n AuthorizeInfoRequest,\n AuthorizeInfoResponse,\n AuthorizeDeviceRequest,\n AuthorizeRequest,\n AuthorizeResponse,\n GetUserBehaviorLog,\n GetUserBehaviorLogRes,\n RevokeDeviceRequest,\n SignoutResponse,\n ProvidersResponse,\n SignoutRequest,\n ModifyPasswordWithoutLoginRequest,\n} from './models'\nimport { SimpleStorage, RequestFunction } from '../oauth2client/interface'\nimport { OAuth2Client, defaultStorage } from '../oauth2client/oauth2client'\nimport { Credentials } from '../oauth2client/models'\nimport { Captcha, CaptchaOptions } from '../captcha/captcha'\nimport { deepClone } from '../utils'\nimport MyURLSearchParams from '../utils/urlSearchParams'\nimport { SDKAdapterInterface } from '@cloudbase/adapter-interface'\nimport { ICloudbaseConfig } from '@cloudbase/types'\nimport { AuthError } from './auth-error'\n\ndeclare const wx: any\n\nasync function getEncryptUtils(isEncrypt, adapter: SDKAdapterInterface) {\n const getUtils = async () => {\n try {\n /* eslint-disable */\n // @ts-ignore\n const utils = require('../utils/encrypt')\n /* eslint-enable */\n return utils\n } catch (error) {\n try {\n // @ts-ignore\n const utils = await import('../utils/encrypt')\n return utils\n } catch (error) {\n return\n }\n }\n }\n\n try {\n if ((adapter?.root?.globalThis || globalThis).IS_MP_BUILD) {\n return\n }\n\n if (!process.env.IS_MP_BUILD && isEncrypt) {\n return getUtils()\n }\n } catch (error) {\n if (isEncrypt) {\n return getUtils()\n }\n }\n}\n\nexport interface AuthOptions {\n apiOrigin: string\n apiPath?: string\n clientId: string\n /**\n * basic auth\n */\n clientSecret?: string\n credentialsClient?: OAuth2Client\n request?: RequestFunction\n baseRequest?: RequestFunction\n storage?: SimpleStorage\n anonymousSignInFunc?: (Credentials) => Promise<Credentials | void>\n captchaOptions?: Partial<CaptchaOptions>\n env?: string\n wxCloud?: any\n adapter?: SDKAdapterInterface\n onCredentialsError?: (data: { msg: string; eventType?: 'credentials_error' }) => void\n headers?: { [key: string]: string }\n i18n?: ICloudbaseConfig['i18n']\n useWxCloud?: boolean\n eventBus?: any\n /**\n * Set to true if you want to automatically detect OAuth grants in the URL\n * and exchange the code for credentials.\n */\n detectSessionInUrl?: boolean\n /**\n * Enable debug logging\n */\n debug?: boolean\n auth?: ICloudbaseConfig['auth']\n}\n\n/**\n * Auth\n */\nexport class Auth {\n private static parseParamsToSearch(params: any): string {\n Object.keys(params).forEach((key) => {\n if (!params[key]) {\n delete params[key]\n }\n })\n const searchParams = new MyURLSearchParams(params as any)\n return searchParams.toString()\n }\n\n private config: AuthOptions\n private getCustomSignTicketFn?: GetCustomSignTicketFn\n\n /**\n * constructor\n * @param {AuthOptions} opts\n */\n constructor(opts: AuthOptions) {\n let { request } = opts\n let oAuth2Client = opts.credentialsClient\n if (!oAuth2Client) {\n const initOptions = {\n apiOrigin: opts.apiOrigin,\n apiPath: opts.apiPath,\n clientId: opts.clientId,\n storage: opts.storage,\n env: opts.env,\n baseRequest: opts.baseRequest /* || opts.request */, // opts.request 废弃不用来表示 oauth rquest\n anonymousSignInFunc: opts.anonymousSignInFunc,\n wxCloud: opts.wxCloud,\n onCredentialsError: opts.onCredentialsError,\n headers: opts.headers || {},\n i18n: opts.i18n,\n debug: opts.debug,\n }\n oAuth2Client = new OAuth2Client(initOptions)\n }\n if (!request) {\n const baseRequest = oAuth2Client.request.bind(oAuth2Client)\n const captcha = new Captcha({\n env: opts.env,\n clientId: opts.clientId,\n request: baseRequest,\n storage: opts.storage,\n adapter: opts.adapter,\n oauthInstance: this,\n ...opts.captchaOptions,\n })\n request = captcha.request.bind(captcha)\n }\n this.config = {\n env: opts.env,\n apiOrigin: opts.apiOrigin,\n apiPath: opts.apiPath,\n clientId: opts.clientId,\n request,\n credentialsClient: oAuth2Client,\n storage: opts.storage || defaultStorage,\n adapter: opts.adapter,\n }\n }\n\n /**\n * 根据版本标识,处理待请求的url和params\n * @param params\n * @param key\n * @returns\n */\n public getParamsByVersion(params: any, key: string) {\n const paramsTemp = deepClone(params)\n const url = { v2: ApiUrlsV2 }[paramsTemp?.version]?.[key] || ApiUrls[key]\n\n if (paramsTemp) {\n delete paramsTemp.version\n }\n\n return { params: paramsTemp, url }\n }\n\n /**\n * Sign in.\n * @param {SignInRequest} params A SignInRequest Object.\n * @return {Promise<Credentials>} A Promise<Credentials> object.\n */\n public async signIn(params: SignInRequest): Promise<Credentials> {\n const version = params.version || 'v1'\n const res = this.getParamsByVersion(params, 'AUTH_SIGN_IN_URL')\n if (res.params.query) {\n delete res.params.query\n }\n\n const body = await this.getEncryptParams(res.params)\n const credentials: Credentials = await this.config.request<Credentials>(res.url, {\n method: 'POST',\n body,\n })\n await this.config.credentialsClient.setCredentials({\n ...credentials,\n version,\n })\n return Promise.resolve(credentials)\n }\n\n /**\n * Sign in Anonymously\n * @return {Promise<Credentials>} A Promise<Credentials> object.\n */\n public async signInAnonymously(\n data: {\n provider_token?: string\n } = {},\n useWxCloud = false,\n ): Promise<Credentials> {\n const credentials: Credentials = await this.config.request<Credentials>(ApiUrls.AUTH_SIGN_IN_ANONYMOUSLY_URL, {\n method: 'POST',\n body: data,\n useWxCloud,\n })\n await this.config.credentialsClient.setCredentials(credentials)\n return Promise.resolve(credentials)\n }\n\n /**\n * Sign up.\n * @param {SignUpRequest} params A SignUpRequest Object.\n * @return {Promise<Credentials>} A Promise<Credentials> object.\n */\n public async signUp(params: SignUpRequest): Promise<Credentials> {\n const data: Credentials = await this.config.request<Credentials>(ApiUrls.AUTH_SIGN_UP_URL, {\n method: 'POST',\n body: params,\n })\n await this.config.credentialsClient.setCredentials(data)\n return Promise.resolve(data)\n }\n\n /**\n * Sign out.\n * @return {Object} A Promise<SignoutRequest> object.\n */\n public async signOut(params?: SignoutRequest): Promise<SignoutResponse> {\n let resp: SignoutResponse = {}\n if (params) {\n try {\n resp = await this.config.request<SignoutResponse>(ApiUrls.AUTH_SIGNOUT_URL, {\n method: 'POST',\n withCredentials: true,\n body: params,\n })\n } catch (err) {\n if (err.error !== ErrorType.UNAUTHENTICATED) {\n console.log('sign_out_error', err)\n }\n }\n await this.config.credentialsClient.setCredentials()\n return resp\n }\n const accessToken: string = await this.config.credentialsClient.getAccessToken()\n const data = await this.config.request(ApiUrls.AUTH_REVOKE_URL, {\n method: 'POST',\n body: {\n token: accessToken,\n },\n })\n await this.config.credentialsClient.setCredentials()\n return Promise.resolve(data)\n }\n\n /**\n * Revoke All Devices\n * @return {Object} A Promise<void> object.\n */\n public async revokeAllDevices(): Promise<void> {\n await this.config.request<void>(ApiUrls.AUTH_REVOKE_ALL_URL, {\n method: 'DELETE',\n withCredentials: true,\n })\n }\n\n /**\n * Revoke Device\n * @return {Object} A Promise<void> object.\n */\n public async revokeDevice(params: RevokeDeviceRequest): Promise<void> {\n await this.config.request<void>(ApiUrls.AUTHORIZED_DEVICES_DELETE_URL + params.device_id, {\n method: 'DELETE',\n withCredentials: true,\n })\n }\n\n /**\n * Get the verification.\n * @param {GetVerificationRequest} params A GetVerificationRequest Object.\n * @return {Promise<GetVerificationResponse>} A Promise<GetVerificationResponse> object.\n */\n public async getVerification(\n params: GetVerificationRequest,\n options?: { withCaptcha: boolean },\n ): Promise<GetVerificationResponse> {\n let withCredentials = false\n // 发送短信时,如果时给当前用户发,则需要带上鉴权信息\n if (params.target === 'CUR_USER') {\n withCredentials = true\n } else {\n const hasLogin = await this.hasLoginState()\n if (hasLogin) {\n withCredentials = true\n }\n }\n\n const body = deepClone(params)\n\n if (body.phone_number && !/^\\+\\d{1,3}\\s+\\d+/.test(body.phone_number)) {\n body.phone_number = `+86 ${body.phone_number}`\n }\n\n return this.config.request<GetVerificationResponse>(ApiUrls.VERIFICATION_URL, {\n method: 'POST',\n body,\n withCaptcha: options?.withCaptcha || false,\n withCredentials,\n })\n }\n\n /**\n * Verify the code\n * @param {VerifyRequest} params A VerifyRequest Object.\n * @return {Promise<VerifyResponse>} A Promise<VerifyResponse> object.\n */\n public async verify(params: VerifyRequest): Promise<VerifyResponse> {\n const res = this.getParamsByVersion(params, 'VERIFY_URL')\n const data = await this.config.request<VerifyResponse>(res.url, {\n method: 'POST',\n body: res.params,\n })\n\n if (params?.version === 'v2') {\n await this.config.credentialsClient.setCredentials({\n ...data,\n version: 'v2',\n })\n }\n\n return data\n }\n\n /**\n * Gen provider redirect uri.\n * @param {GenProviderRedirectUriRequest} params A GenProviderRedirectUriRequest object.\n * @return {Promise<GenProviderRedirectUriResponse>} A Promise<GenProviderRedirectUriResponse> object.\n */\n public async genProviderRedirectUri(params: GenProviderRedirectUriRequest): Promise<GenProviderRedirectUriResponse> {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { provider_redirect_uri: redirect_uri, other_params: otherParams = {}, ...restParams } = params\n if (redirect_uri && !restParams.redirect_uri) {\n restParams.redirect_uri = redirect_uri\n }\n\n let url = `${ApiUrls.PROVIDER_URI_URL}?${Auth.parseParamsToSearch(restParams)}`\n Object.keys(otherParams).forEach((key) => {\n const value = otherParams[key]\n if (key === 'sign_out_uri' && !(value?.length > 0)) {\n return\n }\n url += `&other_params[${key}]=${encodeURIComponent(value)}`\n })\n\n return this.config.request<GenProviderRedirectUriResponse>(url, {\n method: 'GET',\n })\n }\n\n /**\n * Grant provider token.\n * @param {GrantProviderTokenRequest} params A GrantProviderTokenRequest object.\n * @return {Promise<GrantProviderTokenResponse>} A Promise<GrantProviderTokenResponse> object.\n */\n public async grantProviderToken(\n params: GrantProviderTokenRequest,\n useWxCloud = false,\n ): Promise<GrantProviderTokenResponse> {\n return this.config.request<GrantProviderTokenResponse>(ApiUrls.PROVIDER_TOKEN_URL, {\n method: 'POST',\n body: params,\n useWxCloud,\n })\n }\n\n /**\n * Grant provider token.\n * @param {PatchProviderTokenRequest} params A PatchProviderTokenRequest object.\n * @return {Promise<PatchProviderTokenResponse>} A Promise<PatchProviderTokenResponse> object.\n */\n public async patchProviderToken(params: PatchProviderTokenRequest): Promise<PatchProviderTokenResponse> {\n return this.config.request<PatchProviderTokenResponse>(ApiUrls.PROVIDER_TOKEN_URL, {\n method: 'PATCH',\n body: params,\n })\n }\n\n /**\n * Signin with provider request.\n * @param {SignInWithProviderRequest} params A SignInWithProviderRequest object.\n * @return {Promise<Credentials>} A Promise<Credentials> object.\n */\n public async signInWithProvider(params: SignInWithProviderRequest, useWxCloud = false): Promise<Credentials> {\n const res = this.getParamsByVersion(params, 'AUTH_SIGN_IN_WITH_PROVIDER_URL')\n\n const credentials: Credentials = await this.config.request<Credentials>(res.url, {\n method: 'POST',\n body: res.params,\n useWxCloud,\n })\n\n await this.config.credentialsClient.setCredentials({\n ...credentials,\n version: params?.version || 'v1',\n })\n return Promise.resolve(credentials)\n }\n\n public async toBindIdentity(params: {\n provider_token: string\n provider: string\n credentials?: Credentials\n fireEvent?: boolean\n }) {\n const credentials = params.credentials || (await this.config.credentialsClient.localCredentials.getCredentials())\n let res: any\n try {\n await this.bindWithProvider(\n {\n provider_token: params.provider_token,\n },\n credentials,\n )\n res = { data: { type: OAUTH_TYPE.BIND_IDENTITY, provider: params.provider }, error: null }\n } catch (error) {\n res = { data: { type: OAUTH_TYPE.BIND_IDENTITY }, error: new AuthError(error) }\n }\n\n if (params.fireEvent) {\n this.config.eventBus?.fire?.(EVENTS.AUTH_STATE_CHANGED, {\n event: AUTH_STATE_CHANGED_TYPE.BIND_IDENTITY,\n info: res,\n })\n }\n\n return res\n }\n\n /**\n * 获取初始 session(如从 URL 中的 OAuth 回调)。\n * 用于 OAuth2Client.initialize() 回调。\n * 内部处理 URL 检测、OAuth 验证,返回 credentials 和 user。\n * 不调用 setCredentials,由 OAuth2Client 负责保存。\n *\n * @returns { data: { session: Credentials; user?: any } | null, error: Error | null }\n */\n public async getInitialSession(): Promise<{\n data: { session: Credentials; user?: any } | null\n error: Error | null\n }> {\n let data: any = {}\n try {\n // Check if running in browser\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return { data: null, error: null }\n }\n\n // Parse URL parameters\n const localSearch = new URLSearchParams(location?.search)\n const code = localSearch.get('code')\n const state = localSearch.get('state')\n\n // No OAuth callback detected\n if (!code || !state) {\n return { data: null, error: null }\n }\n\n // Get provider from sessionStorage (saved during signInWithOAuth)\n let cacheData: {\n provider?: string\n search?: string\n hash?: string\n type?: (typeof OAUTH_TYPE)[keyof typeof OAUTH_TYPE]\n } | null = null\n try {\n cacheData = JSON.parse(sessionStorage.getItem(state) || 'null')\n } catch {\n // ignore\n }\n data = { type: cacheData?.type }\n // Check for error in URL\n const errorParam = localSearch.get('error')\n const errorDescription = localSearch.get('error_description')\n if (errorParam || errorDescription) {\n return {\n data,\n error: new AuthError({ message: errorDescription || errorParam || 'Unknown error from OAuth provider' }),\n }\n }\n\n const provider = cacheData?.provider || localSearch.get('provider')\n\n if (!provider) {\n return { data, error: new AuthError({ message: 'Provider is required for OAuth verification' }) }\n }\n\n // 获取当前页面的 redirect_uri\n const redirectUri = location.origin + location.pathname\n\n // Step 1: 获取 provider token\n const { provider_token: providerToken } = await this.grantProviderToken({\n provider_id: provider,\n provider_redirect_uri: redirectUri,\n provider_code: code,\n })\n\n let credentials: Credentials\n let user: any = null\n let res: any\n\n if (cacheData.type === OAUTH_TYPE.BIND_IDENTITY) {\n credentials = await this.config.credentialsClient.localCredentials.getCredentials()\n res = await this.toBindIdentity({ provider, provider_token: providerToken, credentials })\n } else if (cacheData.type === OAUTH_TYPE.SIGN_IN) {\n res = this.getParamsByVersion({ provider }, 'AUTH_SIGN_IN_WITH_PROVIDER_URL')\n\n // Step 2: 用 provider token 换取 credentials(直接调用 API,不触发 setCredentials)\n credentials = await this.config.request<Credentials>(res.url, {\n method: 'POST',\n body: { provider_token: providerToken },\n })\n\n // Step 3: 获取 user info,传入 getCredentials 函数避免死锁\n // 不调用 setCredentials,由 OAuth2Client._initialize 负责保存\n try {\n user = await this.getUserInfo({ credentials })\n } catch (e) {\n console.error('get user info error', e)\n // 获取 user 失败不影响登录流程\n }\n\n res = { data: { ...data, session: credentials, user }, error: null }\n }\n\n // Clean up URL parameters and restore original URL state\n localSearch.delete('code')\n localSearch.delete('state')\n localSearch.delete('provider')\n this.restoreUrlState(\n cacheData?.search === undefined ? `?${localSearch.toString()}` : cacheData.search,\n cacheData?.hash || location.hash,\n )\n\n // Remove session storage\n try {\n sessionStorage.removeItem(state)\n } catch {\n // ignore\n }\n\n return res\n } catch (error) {\n return { data, error: new AuthError(error) }\n }\n }\n\n /**\n * Signin with custom.\n * @param {SignInCustomRequest} params A SignInCustomRequest object.\n * @return {Promise<Credentials>} A Promise<Credentials> object.\n */\n public async signInCustom(params: SignInCustomRequest): Promise<Credentials> {\n const credentials: Credentials = await this.config.request<Credentials>(ApiUrls.AUTH_SIGN_IN_CUSTOM, {\n method: 'POST',\n body: params,\n })\n\n await this.config.credentialsClient.setCredentials(credentials)\n return Promise.resolve(credentials)\n }\n\n /**\n * sign in with wechat idendify\n * 需要结合 http overcallFunction 使用\n */\n public async signInWithWechat(params: any = {}): Promise<Credentials> {\n const credentials: Credentials = await this.config.request<Credentials>(ApiUrls.AUTH_SIGN_IN_WITH_WECHAT_URL, {\n method: 'POST',\n body: params,\n })\n await this.config.credentialsClient.setCredentials(credentials)\n return Promise.resolve(credentials)\n }\n\n /**\n * Bind with provider\n * @param {BindWithProviderRequest} params A BindWithProviderRequest object.\n * @return {Promise<void>} A Promise<any> object.\n */\n public async bindWithProvider(params: BindWithProviderRequest, credentials?: Credentials): Promise<void> {\n return this.config.request<any>(ApiUrls.PROVIDER_BIND_URL, {\n method: 'POST',\n body: params,\n withCredentials: true,\n getCredentials: credentials ? () => credentials : undefined,\n })\n }\n\n /**\n * Get the user profile.\n * @return {Promise<UserProfile>} A Promise<UserProfile> object.\n */\n public async getUserProfile(params: { version?: string }): Promise<UserProfile> {\n return this.getUserInfo(params)\n }\n\n /**\n * Get the user info.\n * @param params.getCredentials Optional custom getCredentials function to bypass default getCredentials() and avoid deadlock\n * @return {Promise<UserInfo>} A Promise<UserProfile> object.\n */\n public async getUserInfo(params: {\n version?: string\n query?: string\n credentials?: Credentials\n } = {},): Promise<UserInfo> {\n const res = this.getParamsByVersion(params, 'USER_ME_URL')\n\n if (res.params?.query) {\n const searchParams = new MyURLSearchParams(res.params.query as any)\n res.url += `?${searchParams.toString()}`\n }\n\n const userInfo = await this.config.request<UserInfo>(res.url, {\n method: 'GET',\n withCredentials: true,\n getCredentials: params.credentials ? () => params.credentials : undefined,\n })\n\n if (userInfo.sub) {\n userInfo.uid = userInfo.sub\n }\n\n // 优先从 providers 中找到当前小程序 appId 对应的 provider_user_id 作为 open_id\n if (userInfo.providers?.length) {\n try {\n if (typeof wx !== 'undefined' && wx.getAccountInfoSync) {\n const wxAppId = wx.getAccountInfoSync().miniProgram?.appId\n const matched = userInfo.providers.find(p => p.id === wxAppId)\n if (matched?.provider_user_id) {\n userInfo.open_id = matched.provider_user_id\n }\n }\n } catch (e) {}\n }\n\n return userInfo\n }\n\n /**\n * Get the user info by weda plugin.\n * @return {Promise<any>} A Promise<any> object.\n */\n public async getWedaUserInfo(): Promise<any> {\n const userInfo = await this.config.request<any>(ApiUrls.WEDA_USER_URL, {\n method: 'GET',\n withCredentials: true,\n })\n return userInfo\n }\n\n /**\n * Delete me\n * @param params\n */\n public async deleteMe(params: WithSudoRequest): Promise<UserProfile> {\n const res = this.getParamsByVersion(params, 'USER_ME_URL')\n const url = `${res.url}?${Auth.parseParamsToSearch(res.params)}`\n return this.config.request<UserProfile>(url, {\n method: 'DELETE',\n withCredentials: true,\n })\n }\n\n /**\n * hasLoginState check if has login state\n * @return {Promise<boolean>} A Promise<boolean> object.\n */\n public async hasLoginState(): Promise<boolean> {\n try {\n await this.config.credentialsClient.getAccessToken()\n return true\n } catch (error) {\n return false\n }\n }\n\n public hasLoginStateSync(): Credentials | null {\n const credentials = this.config.credentialsClient.getCredentialsSync()\n return credentials\n }\n\n public async getLoginState(): Promise<Credentials | null> {\n return this.config.credentialsClient.getCredentialsAsync()\n }\n\n /**\n * Trans by provider.\n * @param {TransByProviderRequest} params A TransByProviderRequest object.\n * @return {Promise<Credentials>} A Promise<Credentials> object.\n */\n public async transByProvider(params: TransByProviderRequest): Promise<Credentials> {\n return this.config.request<Credentials>(ApiUrls.USER_TRANS_BY_PROVIDER_URL, {\n method: 'PATCH',\n body: params,\n withCredentials: true,\n })\n }\n\n /**\n * Grant token.\n * @param {GrantTokenRequest} params A GrantTokenRequest object.\n * @return {Promise<Credentials>} A Promise<Credentials> object.\n */\n public async grantToken(params: GrantTokenRequest): Promise<Credentials> {\n const res = this.getParamsByVersion(params, 'AUTH_TOKEN_URL')\n return this.config.request<Credentials>(res.url, {\n method: 'POST',\n body: res.params,\n })\n }\n\n /**\n * Get the provide list.\n * @return {Promise<ProvidersResponse>} A Promise<ProvidersResponse> object.\n */\n public async getProviders(): Promise<ProvidersResponse> {\n return this.config.request<ProvidersResponse>(ApiUrls.PROVIDER_LIST, {\n method: 'GET',\n withCredentials: true,\n })\n }\n\n /**\n * unbind provider.\n * @param {UnbindProviderRequest} params\n * @return {Promise<any>}\n */\n public async unbindProvider(params: UnbindProviderRequest): Promise<void> {\n return this.config.request<any>(`${ApiUrls.PROVIDER_UNBIND_URL}/${params.provider_id}`, {\n method: 'DELETE',\n withCredentials: true,\n })\n }\n\n /**\n * check Password.\n * @param {CheckPasswordRequest} params\n * @return {Promise<any>}\n */\n public async checkPassword(params: CheckPasswordRequest): Promise<void> {\n return this.config.request<any>(`${ApiUrls.CHECK_PWD_URL}`, {\n method: 'POST',\n withCredentials: true,\n body: params,\n })\n }\n\n /**\n * Edit Contact 修改 手机号 或 邮箱\n * @param {EditContactRequest} params\n * @return {Promise<void>}\n */\n public async editContact(params: EditContactRequest): Promise<void> {\n return this.config.request<void>(`${ApiUrls.BIND_CONTACT_URL}`, {\n method: 'PATCH',\n withCredentials: true,\n body: params,\n })\n }\n\n /**\n * Set Password.\n * @param {SetPasswordrRequest} params\n * @return {Promise<any>}\n */\n public async setPassword(params: SetPasswordRequest): Promise<void> {\n return this.config.request<any>(`${ApiUrls.AUTH_SET_PASSWORD}`, {\n method: 'PATCH',\n withCredentials: true,\n body: params,\n })\n }\n\n /**\n * updatePasswordByOld 使用旧密码修改密码,如果已经绑定手机号,请先:sudo,再修改密码\n * @param {SetPasswordrRequest} params\n * @return {Promise<any>}\n */\n public async updatePasswordByOld(params: UpdatePasswordRequest): Promise<void> {\n const sudoToken = await this.sudo({ password: params.old_password })\n return this.setPassword({\n sudo_token: sudoToken.sudo_token,\n new_password: params.new_password,\n })\n }\n\n /**\n * sudo\n * @param {sudo} params\n * @return {Promise<any>}\n */\n public async sudo(params: SudoRequest): Promise<SudoResponse> {\n return this.config.request<SudoResponse>(`${ApiUrls.SUDO_URL}`, {\n method: 'POST',\n withCredentials: true,\n body: params,\n })\n }\n\n /**\n * Get the current user verification.\n * @param {GetVerificationRequest} params A GetVerificationRequest Object.\n * @return {Promise<GetVerificationResponse>} A Promise<GetVerificationResponse> object.\n */\n public async sendVerificationCodeToCurrentUser(params: GetVerificationRequest): Promise<GetVerificationResponse> {\n params.target = 'CUR_USER'\n return this.config.request<GetVerificationResponse>(ApiUrls.VERIFICATION_URL, {\n method: 'POST',\n body: params,\n withCredentials: true,\n withCaptcha: true,\n })\n }\n\n /**\n * change Bound provider.\n * @param {ChangeBoundProviderRequest} params A GetVerificationRequest Object.\n * @return {Promise<ChangeBoundProviderResponse>} A Promise<GetVerificationResponse> object.\n */\n public async changeBoundProvider(params: ChangeBoundProviderRequest): Promise<ChangeBoundProviderResponse> {\n return this.config.request<ChangeBoundProviderResponse>(`${ApiUrls.PROVIDER_LIST}/${params.provider_id}/trans`, {\n method: 'POST',\n body: {\n provider_trans_token: params.trans_token,\n },\n withCredentials: true,\n })\n }\n\n /**\n * Patch the user profile. 没有和数据源同步\n * @deprecated use updateUserBasicInfo\n * @param {UserProfile} params A UserProfile Object.\n * @return {Promise<UserProfile>} A Promise<UserProfile> object.\n */\n public async setUserProfile(params: UserProfile): Promise<UserProfile> {\n return this.config.request<UserProfile>(ApiUrls.USER_PRIFILE_URL, {\n method: 'PATCH',\n body: params,\n withCredentials: true,\n })\n }\n\n /**\n * Update user basic info\n * @return {Promise<void>}\n */\n public async updateUserBasicInfo(params: ModifyUserBasicInfoRequest): Promise<void> {\n return this.config.request(ApiUrls.USER_BASIC_EDIT_URL, {\n method: 'POST',\n withCredentials: true,\n body: params,\n })\n }\n\n /**\n * Patch the user profile.\n * @param {QueryUserProfileReq} appended_params A QueryUserProfileReq Object.\n * @return {Promise<UserProfile>} A Promise<UserProfile> object.\n */\n public async queryUserProfile(params: QueryUserProfileRequest): Promise<QueryUserProfileResponse> {\n // let url = new URL(ApiUrls.USER_QUERY_URL);\n const searchParams = new MyURLSearchParams(params as any)\n // url.search = searchParams.toString();\n return this.config.request<QueryUserProfileResponse>(`${ApiUrls.USER_QUERY_URL}?${searchParams.toString()}`, {\n method: 'GET',\n withCredentials: true,\n })\n }\n\n /**\n * setCustomSignFunc set the get ticket function\n * @param getTickFn\n */\n public setCustomSignFunc(getTickFn: GetCustomSignTicketFn) {\n this.getCustomSignTicketFn = getTickFn\n }\n\n /**\n * SignInWithCustomTicket custom signIn\n * @constructor\n */\n // public async signInWithCustomTicket(params?: { version?: string }): Promise<Credentials> {\n // const customSignTicketFn = this.getCustomSignTicketFn\n // if (!customSignTicketFn) {\n // return Promise.reject({\n // })\n // }\n // const customTicket = await customSignTicketFn()\n // return this.signInWithProvider({\n // ...params,\n // provider_id: 'custom',\n // provider_token: customTicket,\n // })\n // }\n public async signInWithCustomTicket(): Promise<Credentials> {\n const customSignTicketFn = this.getCustomSignTicketFn\n if (!customSignTicketFn) {\n return Promise.reject({\n error: 'failed_precondition',\n error_description: 'please use setCustomSignFunc to set custom sign function',\n })\n }\n const customTicket = await customSignTicketFn()\n return this.signInCustom({\n provider_id: 'custom',\n ticket: customTicket,\n })\n }\n\n /**\n * Reset password\n * @param {ResetPasswordRequest} params\n * @returns {Promise<void>}\n * @memberof Auth\n */\n public async resetPassword(params: ResetPasswordRequest): Promise<void> {\n return this.config.request(ApiUrls.AUTH_RESET_PASSWORD, {\n method: 'POST',\n body: params,\n // withCredentials: true\n })\n }\n\n /**\n * Authorize oauth Authorize\n * @param params\n * @constructor\n */\n public async authorize(params: AuthorizeRequest): Promise<AuthorizeResponse> {\n return this.config.request<AuthorizeResponse>(ApiUrls.AUTHORIZE_URL, {\n method: 'POST',\n withCredentials: true,\n body: params,\n })\n }\n\n /**\n * authorize device\n * @param params\n */\n public async authorizeDevice(params: AuthorizeDeviceRequest): Promise<void> {\n return this.config.request<void>(ApiUrls.AUTHORIZE_DEVICE_URL, {\n method: 'POST',\n withCredentials: true,\n body: params,\n })\n }\n\n /**\n * device authorization\n * @param {DeviceAuthorizeRequest} params\n * @returns {Promise<DeviceAuthorizeResponse>}\n * @memberof Auth\n */\n public async deviceAuthorize(params: DeviceAuthorizeRequest): Promise<DeviceAuthorizeResponse> {\n return this.config.request(ApiUrls.AUTH_GET_DEVICE_CODE, {\n method: 'POST',\n body: params,\n })\n }\n\n /**\n * OAuth get authorize info\n * @param params\n * @constructor\n */\n public async authorizeInfo(params: AuthorizeInfoRequest): Promise<AuthorizeInfoResponse> {\n const url = `${ApiUrls.AUTHORIZE_INFO_URL}?${Auth.parseParamsToSearch(params)}`\n let withBasicAuth = true\n let withCredentials = false\n const hasLogin = await this.hasLoginState()\n if (hasLogin) {\n withCredentials = true\n withBasicAuth = false\n }\n return this.config.request<AuthorizeInfoResponse>(url, {\n method: 'GET',\n withBasicAuth,\n withCredentials,\n })\n }\n\n public async checkUsername(params: CheckUsernameRequest): Promise<void> {\n return this.config.request(ApiUrls.CHECK_USERNAME, {\n method: 'GET',\n body: params,\n withCredentials: true,\n })\n }\n\n public async checkIfUserExist(params: CheckIfUserExistRequest): Promise<CheckIfUserExistResponse> {\n const searchParams = new MyURLSearchParams(params as any)\n\n return this.config.request<CheckIfUserExistResponse>(`${ApiUrls.CHECK_IF_USER_EXIST}?${searchParams.toString()}`, {\n method: 'GET',\n })\n }\n\n public async loginScope(): Promise<string> {\n return this.config.credentialsClient.getScope()\n }\n\n public async loginGroups(): Promise<string[]> {\n return this.config.credentialsClient.getGroups()\n }\n\n public async refreshTokenForce(params: { version?: string }) {\n const credentials: Credentials = await this.config.credentialsClient.getCredentials()\n return await this.config.credentialsClient.refreshToken({\n ...credentials,\n version: params?.version || 'v1',\n })\n }\n\n public async getCredentials() {\n return this.config.credentialsClient.getCredentials()\n }\n\n /**\n * get public key for request params encryption\n * @returns\n */\n public async getPublicKey(): Promise<PublicKey> {\n return this.config.request<PublicKey>(ApiUrlsV2.AUTH_PUBLIC_KEY, {\n method: 'POST',\n body: {},\n })\n }\n\n /**\n * encrypt request params\n * @param params\n * @returns\n */\n public async getEncryptParams(params: Record<any, any>): Promise<EncryptParams> {\n const { isEncrypt } = params\n delete params.isEncrypt\n\n const payload = deepClone(params)\n\n const encryptUtils = await getEncryptUtils(isEncrypt, this.config.adapter)\n\n if (!encryptUtils) {\n return params\n }\n\n let publicKey = ''\n // eslint-disable-next-line @typescript-eslint/naming-convention\n let public_key_thumbprint = ''\n\n try {\n const res = await this.getPublicKey()\n publicKey = res.public_key\n public_key_thumbprint = res.public_key_thumbprint\n\n if (!publicKey || !public_key_thumbprint) {\n throw res\n }\n } catch (error) {\n throw error\n }\n return {\n params: encryptUtils.getEncryptInfo({ publicKey, payload }),\n public_key_thumbprint,\n }\n }\n\n /**\n * get provider sub type\n * @returns\n */\n public async getProviderSubType(): Promise<ProviderSubType> {\n return this.config.request<ProviderSubType>(ApiUrls.GET_PROVIDER_TYPE, {\n method: 'POST',\n body: {\n provider_id: 'weda',\n },\n })\n }\n\n /**\n * get provider sub type\n * @returns\n */\n public async verifyCaptchaData({ token, key }: { token: string; key: string }) {\n return this.config.request<{ captcha_token: string; expires_in: number }>(ApiUrls.VERIFY_CAPTCHA_DATA_URL, {\n method: 'POST',\n body: { token, key },\n withCredentials: false,\n })\n }\n\n public async createCaptchaData({ state, redirect_uri = undefined }) {\n return this.config.request<{ token: string; data: string }>(ApiUrls.CAPTCHA_DATA_URL, {\n method: 'POST',\n body: { state, redirect_uri },\n withCredentials: false,\n })\n }\n\n /**\n * mini-program scan code\n * @returns\n */\n public async getMiniProgramCode(params: GetMiniProgramQrCodeRequest): Promise<GetMiniProgramQrCodeResponse> {\n return this.config.request<GetMiniProgramQrCodeResponse>(ApiUrls.GET_MINIPROGRAM_QRCODE, {\n method: 'POST',\n body: params,\n })\n }\n\n /**\n * mini-program scan code status\n * @returns\n */\n public async getMiniProgramQrCodeStatus(params: GetMiniProgramQrCodeStatusRequest,): Promise<GetMiniProgramQrCodeStatusResponse> {\n return this.config.request<GetMiniProgramQrCodeStatusResponse>(ApiUrls.GET_MINIPROGRAM_QRCODE_STATUS, {\n method: 'POST',\n body: params,\n })\n }\n\n /**\n * get user behavior log\n * @param params\n */\n public async getUserBehaviorLog(params: GetUserBehaviorLog): Promise<GetUserBehaviorLogRes> {\n const action = { LOGIN: 'query[action]=USER_LOGIN', MODIFY: 'ne_query[action]=USER_LOGIN' }\n const url = `${ApiUrls.GET_USER_BEHAVIOR_LOG}?${action[params.type]}&limit=${params.limit}${\n params.page_token ? `&page_token=${params.page_token}` : ''\n }`\n return this.config.request(url, {\n method: 'GET',\n withCredentials: true,\n })\n }\n\n /**\n * 这个方法是用户自己修改自己的密码,不同于/auth/v1/user/password接口,该接口是管理员修改个人的\n * @param {ModifyUserBasicInfoRequest} params A ModifyUserBasicInfoRequest Object.\n * @return {Promise<void>} A Promise<void> object.\n */\n public async modifyPassword(params: ModifyUserBasicInfoRequest): Promise<void> {\n let publicKey = ''\n // eslint-disable-next-line @typescript-eslint/naming-convention\n let public_key_thumbprint = ''\n\n const encryptUtils = await getEncryptUtils(true, this.config.adapter)\n\n if (!encryptUtils) {\n throw new Error('do not support encrypt, a encrypt util required.')\n }\n\n try {\n const res = await this.getPublicKey()\n publicKey = res.public_key\n public_key_thumbprint = res.public_key_thumbprint\n\n if (!publicKey || !public_key_thumbprint) {\n throw res\n }\n } catch (error) {\n throw error\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const encrypt_password = params.password ? encryptUtils.getEncryptInfo({ publicKey, payload: params.password }) : ''\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const encrypt_new_password = encryptUtils.getEncryptInfo({ publicKey, payload: params.new_password })\n return this.config.request(ApiUrls.USER_BASIC_EDIT_URL, {\n method: 'POST',\n withCredentials: true,\n body: {\n user_id: params.user_id,\n encrypt_password,\n encrypt_new_password,\n public_key_thumbprint,\n },\n })\n }\n\n /**\n * 重置密码,该接口无需登录就可以重置密码\n * @param {ModifyPasswordWithoutLoginRequest} params A ModifyPasswordWithoutLoginRequest Object.\n * @return {Promise<void>} A Promise<void> object.\n */\n public async modifyPasswordWithoutLogin(params: ModifyPasswordWithoutLoginRequest): Promise<void> {\n let publicKey = ''\n // eslint-disable-next-line @typescript-eslint/naming-convention\n let public_key_thumbprint = ''\n\n const encryptUtils = await getEncryptUtils(true, this.config.adapter)\n\n if (!encryptUtils) {\n throw new Error('do not support encrypt, a encrypt util required.')\n }\n\n try {\n const res = await this.getPublicKey()\n publicKey = res.public_key\n public_key_thumbprint = res.public_key_thumbprint\n\n if (!publicKey || !public_key_thumbprint) {\n throw res\n }\n } catch (error) {\n throw error\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const encrypt_password = params.password ? encryptUtils.getEncryptInfo({ publicKey, payload: params.password }) : ''\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const encrypt_new_password = encryptUtils.getEncryptInfo({ publicKey, payload: params.new_password })\n return this.config.request(ApiUrlsV2.AUTH_RESET_PASSWORD, {\n method: 'POST',\n body: {\n username: params.username,\n password: encrypt_password,\n new_password: encrypt_new_password,\n public_key_thumbprint,\n },\n })\n }\n\n /**\n * Restore URL state after OAuth callback\n */\n private restoreUrlState(search?: string, hash?: string): void {\n if (search === undefined) return\n try {\n const url = new URL(window.location.href)\n url.search = search\n url.hash = hash || ''\n window.history.replaceState(null, '', url.toString())\n window.location.replace(url.toString())\n } catch {\n // ignore\n }\n }\n}\n","/**\n * 认证错误分类枚举\n * 用于区分不同类型的认证失败场景,方便调用方针对性处理\n */\nimport { ErrorType } from './consts'\n\nexport enum AuthErrorCategory {\n /** 身份源/登录方式未启用 - 需要在控制台开启对应认证方式 */\n PROVIDER_NOT_ENABLED = 'PROVIDER_NOT_ENABLED',\n /** 凭据错误 - 用户名、密码、验证码等不正确 */\n INVALID_CREDENTIALS = 'INVALID_CREDENTIALS',\n /** 用户不存在 */\n USER_NOT_FOUND = 'USER_NOT_FOUND',\n /** 用户状态异常(被封禁、待审核等) */\n USER_STATUS_ABNORMAL = 'USER_STATUS_ABNORMAL',\n /** 网络或服务端错误 */\n SERVICE_ERROR = 'SERVICE_ERROR',\n /** 参数校验失败 */\n INVALID_PARAMS = 'INVALID_PARAMS',\n /** 认证方式不匹配 - 使用了错误的登录方式(如匿名登录失败后用密码登录,但凭据不存在) */\n AUTH_METHOD_MISMATCH = 'AUTH_METHOD_MISMATCH',\n /** 其他未分类错误 */\n UNKNOWN = 'UNKNOWN',\n}\n\n/**\n * 云开发控制台认证配置页面路径\n */\nconst CONSOLE_AUTH_URL = 'https://tcb.cloud.tencent.com/dev?envId=#/identity/login-manage'\n\nconst DOCS_URL = 'https://docs.cloudbase.net/api-reference/webv3-next/initialization'\n\n/**\n * 根据错误信息内容推断错误分类\n *\n * @param message - 错误描述信息(error_description 或 message)\n * @param status - 错误状态码,对应 ErrorType 枚举值(如 'failed_precondition'、'invalid_password' 等)\n * 来源于服务端响应的 error 字段,参考 {@link ErrorType}\n */\nfunction inferErrorCategory(message?: string, status?: string): AuthErrorCategory {\n if (!message && !status) return AuthErrorCategory.UNKNOWN\n\n try {\n const msg = (message || '').toLowerCase()\n\n // 身份源/登录方式未启用\n if (\n status === ErrorType.FAILED_PRECONDITION\n || status === ErrorType.PROVIDER_NOT_ENABLED\n || status === ErrorType.LOGIN_METHOD_DISABLED\n || msg.includes('身份源')\n || msg.includes('开启')\n || msg.includes('identity provider')\n || msg.includes('provider not enabled')\n || msg.includes('login method')\n || msg.includes('登录方式')\n || msg.includes('not enabled')\n || msg.includes('未开启')\n || msg.includes('未启用')\n || msg.includes('请联系开发者')\n || msg.includes('anonymous login is not enabled')\n || msg.includes('匿名登录未开启')\n ) {\n return AuthErrorCategory.PROVIDER_NOT_ENABLED\n }\n\n // 凭据错误\n if (\n status === ErrorType.INVALID_PASSWORD\n || status === ErrorType.INVALID_GRANT\n || status === ErrorType.INVALID_VERIFICATION_CODE\n || status === ErrorType.INVALID_USERNAME_OR_PASSWORD\n || status === ErrorType.INVALID_CREDENTIALS\n || status === ErrorType.WRONG_PASSWORD\n || status === ErrorType.UNAUTHENTICATED\n || status === ErrorType.INVALID_TWO_FACTOR\n || status === ErrorType.INVALID_TWO_FACTOR_RECOVERY\n || status === ErrorType.PASSWORD_NOT_SET\n || msg.includes('密码不正确')\n || msg.includes('password')\n || msg.includes('invalid_password')\n || msg.includes('凭据')\n || msg.includes('credentials')\n || msg.includes('验证码')\n || msg.includes('verification')\n || msg.includes('invalid_verification_code')\n || msg.includes('invalid_username_or_password')\n || msg.includes('username or password')\n || msg.includes('用户名或密码')\n || msg.includes('wrong password')\n || msg.includes('incorrect password')\n ) {\n return AuthErrorCategory.INVALID_CREDENTIALS\n }\n\n // 用户不存在\n if (\n status === ErrorType.NOT_FOUND\n || status === ErrorType.USER_NOT_FOUND\n || msg.includes('用户不存在')\n || msg.includes('not found')\n || msg.includes('user not found')\n || msg.includes('不存在')\n || msg.includes('no such user')\n || msg.includes('user does not exist')\n ) {\n return AuthErrorCategory.USER_NOT_FOUND\n }\n\n // 用户状态异常\n if (\n status === ErrorType.USER_BLOCKED\n || status === ErrorType.USER_PENDING\n || status === ErrorType.UNDER_REVIEW\n || status === ErrorType.INVALID_STATUS\n || msg.includes('被封禁')\n || msg.includes('blocked')\n || msg.includes('pending')\n || msg.includes('审核')\n || msg.includes('review')\n || msg.includes('locked')\n || msg.includes('已锁定')\n ) {\n return AuthErrorCategory.USER_STATUS_ABNORMAL\n }\n\n // 服务端/网络错误\n if (\n status === ErrorType.SERVER_ERROR\n || status === ErrorType.UNAVAILABLE\n || status === ErrorType.TEMPORARILY_UNAVAILABLE\n || status === ErrorType.INTERNAL\n || status === ErrorType.UNREACHABLE\n || status === ErrorType.DEADLINE_EXCEEDED\n || status === ErrorType.DATA_LOSS\n || msg.includes('network')\n || msg.includes('timeout')\n || msg.includes('服务')\n || msg.includes('timed out')\n || msg.includes('超时')\n ) {\n return AuthErrorCategory.SERVICE_ERROR\n }\n\n // 参数错误\n if (\n status === ErrorType.INVALID_ARGUMENT\n || status === ErrorType.INVALID_REQUEST\n || status === ErrorType.INVALID_SCOPE\n || status === ErrorType.INVALID_REQUEST_URI\n || status === ErrorType.INVALID_REQUEST_OBJECT\n ) {\n return AuthErrorCategory.INVALID_PARAMS\n }\n\n // 权限/授权错误 → 归入 PROVIDER_NOT_ENABLED(需要配置)\n if (\n status === ErrorType.PERMISSION_DENIED\n || status === ErrorType.ACCESS_DENIED\n || status === ErrorType.UNAUTHORIZED_CLIENT\n ) {\n return AuthErrorCategory.PROVIDER_NOT_ENABLED\n }\n\n return AuthErrorCategory.UNKNOWN\n } catch (error) {\n return status as any\n }\n}\n\n/**\n * 根据错误分类生成可操作性指引信息\n */\nfunction generateHelpMessage(category: AuthErrorCategory, context?: { method?: string }): string {\n const methodName = context?.method || 'signIn'\n\n // 根据方法名推荐对应需要开启的登录方式\n const methodToProvider: Record<string, string> = {\n signInWithPassword: '「用户名密码登录」',\n signInAnonymously: '「匿名登录」',\n signInWithOtp: '「短信验证码登录」或「邮箱验证码登录」',\n signUp: '「短信验证码登录」或「邮箱验证码登录」',\n signInWithOAuth: '对应的第三方身份源',\n signInWithIdToken: '对应的第三方身份源',\n signInWithOpenId: '「微信小程序 OpenID 登录」',\n signInWithPhoneAuth: '「微信小程序手机号授权登录」',\n signInWithCustomTicket: '「自定义登录」',\n }\n const requiredProvider = methodToProvider[methodName] || '对应的登录方式'\n\n switch (category) {\n case AuthErrorCategory.PROVIDER_NOT_ENABLED:\n return (\n '[CloudBase Auth] 登录方式未开启\\n'\n + '\\n'\n + ` 当前调用的 ${methodName}() 所需的登录方式尚未在云开发控制台启用。\\n`\n + ` 需要开启的登录方式:${requiredProvider}\\n`\n + '\\n'\n + ' 请按以下步骤开启:\\n'\n + ` 1. 打开云开发控制台:${CONSOLE_AUTH_URL}\\n`\n + ' 2. 选择对应的云开发环境\\n'\n + ' 3. 进入「登录授权」页面,在「登录方式」或「身份源列表」中开启所需的登录方式\\n'\n + '\\n'\n + ' 各登录方法与所需登录方式的对应关系:\\n'\n + ' - signInWithPassword → 「用户名密码登录」\\n'\n + ' - signInAnonymously → 「匿名登录」\\n'\n + ' - signInWithOtp/signUp → 「短信验证码登录」或「邮箱验证码登录」\\n'\n + ' - signInWithOAuth/signInWithIdToken → 对应的第三方身份源\\n'\n + '\\n'\n + ' 如使用 CLI/MCP 工具,可通过 auth 工具查询和配置身份源状态。\\n'\n + ` 更多帮助请参考文档:${DOCS_URL}`\n )\n\n case AuthErrorCategory.INVALID_CREDENTIALS:\n return (\n '[CloudBase Auth] 凭据验证失败\\n'\n + '\\n'\n + ` 调用 ${methodName}() 时凭据校验未通过。\\n`\n + '\\n'\n + ' 请按优先级逐项排查:\\n'\n + ' 1. 确认用户名/邮箱/手机号是否拼写正确、格式完整\\n'\n + ' 2. 确认密码是否正确(注意大小写、特殊字符、前后空格)\\n'\n + ' 3. 确认用户账号确实存在(可通过 auth.isUsernameRegistered() 检查)\\n'\n + ' 4. 确认凭据参数来源可靠(环境变量、配置文件中的值是否已正确设置)\\n'\n + ' 5. 如使用加密登录(is_encrypt: true),请确认公钥版本正确\\n'\n + '\\n'\n + ' 如忘记密码,可通过 auth.resetPasswordForEmail() 重置密码。\\n'\n + '\\n'\n + ' 提示:如果是 AI agent / 自动化测试场景,请确认 ENV_ID、USERNAME、PASSWORD\\n'\n + ' 等环境变量已正确传入,且对应用户已在目标环境中注册。'\n )\n\n case AuthErrorCategory.USER_NOT_FOUND:\n return (\n '[CloudBase Auth] 用户不存在\\n'\n + '\\n'\n + ' 请检查以下项目:\\n'\n + ' 1. 确认用户名/邮箱/手机号是否正确\\n'\n + ' 2. 确认是在正确的云开发环境(envId)下操作\\n'\n + ' 3. 如果是新用户,请先通过 auth.signUp() 注册\\n'\n + ` 4. 也可在云开发控制台手动创建用户:${CONSOLE_AUTH_URL}\\n`\n + '\\n'\n + ' 提示:不同环境(开发/测试/生产)的用户库是隔离的,请确认 envId 正确。'\n )\n\n case AuthErrorCategory.USER_STATUS_ABNORMAL:\n return (\n '[CloudBase Auth] 用户状态异常\\n'\n + '\\n'\n + ' 当前用户账号可能处于以下状态之一:\\n'\n + ' - 账号已被封禁\\n'\n + ' - 账号正在审核中\\n'\n + ' - 账号已被锁定(多次密码错误)\\n'\n + '\\n'\n + ` 请联系管理员在云开发控制台检查用户状态:${CONSOLE_AUTH_URL}`\n )\n\n case AuthErrorCategory.SERVICE_ERROR:\n return (\n '[CloudBase Auth] 服务异常\\n'\n + '\\n'\n + ' 请检查以下项目:\\n'\n + ' 1. 网络连接是否正常\\n'\n + ' 2. 云开发环境是否正常运行\\n'\n + ' 3. 稍后重试,如持续失败请联系技术支持\\n'\n + '\\n'\n + ' 提示:如果是超时错误,请检查网络环境和请求频率。'\n )\n\n case AuthErrorCategory.INVALID_PARAMS:\n return (\n '[CloudBase Auth] 参数错误\\n'\n + '\\n'\n + ' 请检查传入的参数是否符合要求,参考 API 文档确认各参数的格式和约束。\\n'\n + ` 文档地址:${DOCS_URL}`\n )\n\n case AuthErrorCategory.AUTH_METHOD_MISMATCH:\n return (\n '[CloudBase Auth] 登录方式不匹配\\n'\n + '\\n'\n + ` 调用 ${methodName}() 时遇到错误,可能原因:\\n`\n + ' - 匿名登录失败后尝试了用户名密码登录,但凭据不正确或用户不存在\\n'\n + ' - 应使用匿名登录但传入了密码参数\\n'\n + ' - 应使用密码登录但未传入正确的凭据\\n'\n + '\\n'\n + ' 建议:\\n'\n + ' 1. 明确当前场景需要的登录方式:\\n'\n + ' - 无需用户注册 → auth.signInAnonymously()\\n'\n + ' - 有用户名和密码 → auth.signInWithPassword({ username, password })\\n'\n + ' - 第三方平台 → auth.signInWithOAuth({ provider })\\n'\n + ' 2. 不要在同一流程中混合使用不同的登录方式\\n'\n + ' 3. 每种登录方式需要在控制台开启对应的身份源\\n'\n + ` 4. 控制台地址:${CONSOLE_AUTH_URL}`\n )\n\n default:\n return (\n '[CloudBase Auth] 操作失败\\n'\n + '\\n'\n + ' 如果问题持续存在,建议:\\n'\n + ` 1. 检查云开发控制台的认证配置:${CONSOLE_AUTH_URL}\\n`\n + ' 2. 到官方问答社区提问:https://cnb.cool/tencent/cloud/cloudbase/community/-/issues\\n'\n + ` 3. 查阅文档:${DOCS_URL}`\n )\n }\n}\n\n/**\n * 根据调用方法推荐最合适的登录方式\n */\nfunction generateLoginMethodHint(method?: string): string {\n if (!method) return ''\n\n const hints: Record<string, string> = {\n signInWithPassword:\n '当前使用「用户名密码登录」,需确保:\\n'\n + ' ✓ 控制台已开启「用户名密码登录」\\n'\n + ' ✓ 用户已注册且凭据正确\\n'\n + ' 如果不需要用户系统,建议改用 auth.signInAnonymously()',\n signInAnonymously:\n '当前使用「匿名登录」,需确保:\\n'\n + ' ✓ 控制台已开启「匿名登录」\\n'\n + ' 注意:匿名用户无需用户名密码,适用于快速体验或临时访问场景',\n signInWithOtp: '当前使用「OTP 验证码登录」,需确保:\\n' + ' ✓ 控制台已开启「短信验证码登录」或「邮箱验证码登录」',\n signInWithOAuth: '当前使用「第三方 OAuth 登录」,需确保:\\n' + ' ✓ 控制台已配置并开启对应的第三方身份源',\n }\n\n return hints[method] || ''\n}\n\nexport class AuthError extends Error {\n /**\n * Error code associated with the error. Most errors coming from\n * HTTP responses will have a code, though some errors that occur\n * before a response is received will not have one present. In that\n * case {@link #status} will also be undefined.\n */\n code: (string & {}) | undefined\n\n /** status code that caused the error. */\n status: string | undefined\n\n /** Request ID associated with the error. */\n requestId: string | undefined\n\n /**\n * 错误分类,用于区分不同类型的认证错误场景。\n * 例如:PROVIDER_NOT_ENABLED(身份源未启用)、INVALID_CREDENTIALS(凭据错误)等。\n */\n category: AuthErrorCategory\n\n /**\n * 可操作性指引信息,包含具体的排查步骤和解决方案。\n * 开发者可以直接使用此信息提示用户或用于调试。\n */\n helpMessage: string\n\n /**\n * 登录方式选择建议。当使用了不恰当的登录方式时,此字段会提供正确的选择指引。\n */\n loginMethodHint: string\n\n protected __isAuthError = true\n\n constructor(error, context?: { method?: string }) {\n const message = error.error_description || error.message\n super(message)\n this.name = 'AuthError'\n this.status = error.error\n this.code = error.error_code\n this.requestId = error.requestId\n this.category = inferErrorCategory(message, this.status)\n this.helpMessage = generateHelpMessage(this.category, context)\n this.loginMethodHint = generateLoginMethodHint(context?.method)\n }\n}\n","export const AUTH_API_PREFIX = '/auth'\n\nexport enum ApiUrls {\n AUTH_SIGN_UP_URL = '/v1/signup',\n AUTH_TOKEN_URL = '/v1/token',\n AUTH_REVOKE_URL = '/v1/revoke',\n WEDA_USER_URL = '/v1/plugin/weda/userinfo',\n AUTH_RESET_PASSWORD = '/v1/reset',\n AUTH_GET_DEVICE_CODE = '/v1/device/code',\n CHECK_USERNAME = '/v1/checkUsername',\n CHECK_IF_USER_EXIST = '/v1/checkIfUserExist',\n GET_PROVIDER_TYPE = '/v1/mgr/provider/providerSubType',\n\n AUTH_SIGN_IN_URL = '/v1/signin',\n AUTH_SIGN_IN_ANONYMOUSLY_URL = '/v1/signin/anonymously',\n AUTH_SIGN_IN_WITH_PROVIDER_URL = '/v1/signin/with/provider',\n AUTH_SIGN_IN_WITH_WECHAT_URL = '/v1/signin/wechat/noauth',\n AUTH_SIGN_IN_CUSTOM = '/v1/signin/custom',\n\n PROVIDER_TOKEN_URL = '/v1/provider/token',\n PROVIDER_URI_URL = '/v1/provider/uri',\n\n USER_ME_URL = '/v1/user/me',\n AUTH_SIGNOUT_URL = '/v1/user/signout',\n USER_QUERY_URL = '/v1/user/query',\n USER_PRIFILE_URL = '/v1/user/profile',\n USER_BASIC_EDIT_URL = '/v1/user/basic/edit',\n USER_TRANS_BY_PROVIDER_URL = '/v1/user/trans/by/provider',\n PROVIDER_LIST = '/v1/user/provider',\n PROVIDER_BIND_URL = '/v1/user/provider/bind',\n PROVIDER_UNBIND_URL = '/v1/user/provider',\n CHECK_PWD_URL = '/v1/user/sudo',\n SUDO_URL = '/v1/user/sudo',\n BIND_CONTACT_URL = '/v1/user/contact',\n AUTH_SET_PASSWORD = '/v1/user/password',\n AUTHORIZE_DEVICE_URL = '/v1/user/device/authorize',\n AUTHORIZE_URL = '/v1/user/authorize',\n AUTHORIZE_INFO_URL = '/v1/user/authorize/info',\n AUTHORIZED_DEVICES_DELETE_URL = '/v1/user/authorized/devices/',\n AUTH_REVOKE_ALL_URL = '/v1/user/revoke/all',\n GET_USER_BEHAVIOR_LOG = '/v1/user/security/history',\n\n VERIFICATION_URL = '/v1/verification',\n VERIFY_URL = '/v1/verification/verify',\n\n CAPTCHA_DATA_URL = '/v1/captcha/data',\n VERIFY_CAPTCHA_DATA_URL = '/v1/captcha/data/verify',\n GET_CAPTCHA_URL = '/v1/captcha/init',\n\n GET_MINIPROGRAM_QRCODE = '/v1/qrcode/generate',\n GET_MINIPROGRAM_QRCODE_STATUS = '/v1/qrcode/get/status',\n}\n\nexport enum ApiUrlsV2 {\n AUTH_SIGN_IN_URL = '/v2/signin/username',\n AUTH_TOKEN_URL = '/v2/token',\n USER_ME_URL = '/v2/user/me',\n VERIFY_URL = '/v2/signin/verificationcode',\n AUTH_SIGN_IN_WITH_PROVIDER_URL = '/v2/signin/with/provider',\n AUTH_PUBLIC_KEY = '/v2/signin/publichkey',\n AUTH_RESET_PASSWORD = '/v2/signin/password/update',\n}\n\nexport enum VerificationUsages {\n REGISTER = 'REGISTER',\n SIGN_IN = 'SIGN_IN',\n PASSWORD_RESET = 'PASSWORD_RESET',\n EMAIL_ADDRESS_CHANGE = 'EMAIL_ADDRESS_CHANGE',\n PHONE_NUMBER_CHANGE = 'PHONE_NUMBER_CHANGE',\n}\n\nexport enum ErrorType {\n UNREACHABLE = 'unreachable',\n LOCAL = 'local',\n CANCELLED = 'cancelled',\n UNKNOWN = 'unknown',\n UNAUTHENTICATED = 'unauthenticated',\n RESOURCE_EXHAUSTED = 'resource_exhausted',\n FAILED_PRECONDITION = 'failed_precondition',\n INVALID_ARGUMENT = 'invalid_argument',\n DEADLINE_EXCEEDED = 'deadline_exceeded',\n NOT_FOUND = 'not_found',\n ALREADY_EXISTS = 'already_exists',\n PERMISSION_DENIED = 'permission_denied',\n ABORTED = 'aborted',\n OUT_OF_RANGE = 'out_of_range',\n UNIMPLEMENTED = 'unimplemented',\n INTERNAL = 'internal',\n UNAVAILABLE = 'unavailable',\n DATA_LOSS = 'data_loss',\n // CommonError\n INVALID_PASSWORD = 'invalid_password',\n PASSWORD_NOT_SET = 'password_not_set',\n INVALID_STATUS = 'invalid_status',\n USER_PENDING = 'user_pending',\n USER_BLOCKED = 'user_blocked',\n INVALID_VERIFICATION_CODE = 'invalid_verification_code',\n TWO_FACTOR_REQUIRED = 'two_factor_required',\n INVALID_TWO_FACTOR = 'invalid_two_factor',\n INVALID_TWO_FACTOR_RECOVERY = 'invalid_two_factor_recovery',\n UNDER_REVIEW = 'under_review',\n INVALID_REQUEST = 'invalid_request',\n UNAUTHORIZED_CLIENT = 'unauthorized_client',\n ACCESS_DENIED = 'access_denied',\n UNSUPPORTED_RESPONSE_TYPE = 'unsupported_response_type',\n INVALID_SCOPE = 'invalid_scope',\n INVALID_GRANT = 'invalid_grant',\n SERVER_ERROR = 'server_error',\n TEMPORARILY_UNAVAILABLE = 'temporarily_unavailable',\n INTERACTION_REQUIRED = 'interaction_required',\n LOGIN_REQUIRED = 'login_required',\n ACCOUNT_SELECTION_REQUIRED = 'account_selection_required',\n CONSENT_REQUIRED = 'consent_required',\n INVALID_REQUEST_URI = 'invalid_request_uri',\n INVALID_REQUEST_OBJECT = 'invalid_request_object',\n REQUEST_NOT_SUPPORTED = 'request_not_supported',\n REQUEST_URI_NOT_SUPPORTED = 'request_uri_not_supported',\n REGISTRATION_NOT_SUPPORTED = 'registration_not_supported',\n CAPTCHA_REQUIRED = 'captcha_required',\n CAPTCHA_INVALID = 'captcha_invalid',\n // 身份源/登录方式相关错误\n PROVIDER_NOT_ENABLED = 'provider_not_enabled',\n LOGIN_METHOD_DISABLED = 'login_method_disabled',\n // 扩展的凭据相关错误码(服务端实际返回格式)\n INVALID_USERNAME_OR_PASSWORD = 'invalid_username_or_password',\n INVALID_CREDENTIALS = 'invalid_credentials',\n WRONG_PASSWORD = 'wrong_password',\n USER_NOT_FOUND = 'user_not_found',\n}\n\nexport const LOGIN_STATE_CHANGED_TYPE = {\n SIGN_OUT: 'sign_out',\n SIGN_IN: 'sign_in',\n CREDENTIALS_ERROR: 'credentials_error',\n}\n\nexport const AUTH_STATE_CHANGED_TYPE = {\n SIGNED_OUT: 'SIGNED_OUT',\n SIGNED_IN: 'SIGNED_IN',\n INITIAL_SESSION: 'INITIAL_SESSION',\n PASSWORD_RECOVERY: 'PASSWORD_RECOVERY',\n TOKEN_REFRESHED: 'TOKEN_REFRESHED',\n USER_UPDATED: 'USER_UPDATED',\n BIND_IDENTITY: 'BIND_IDENTITY',\n}\n\nexport const EVENTS = {\n // 登录态改变后触发\n LOGIN_STATE_CHANGED: 'loginStateChanged',\n // 授权态改变后触发\n AUTH_STATE_CHANGED: 'authStateChanged',\n}\n\nexport const OAUTH_TYPE = {\n SIGN_IN: 'sign_in',\n BIND_IDENTITY: 'bind_identity',\n}\n\nexport const DEFAULT_NODE_ACCESS_SCOPE = 'node-sdk-scope'\n","import { CaptchaToken } from '@cloudbase/adapter-interface'\nimport { CloudbaseEventEmitter } from '@cloudbase/utilities/dist/cjs/libs/events'\nimport { parseCaptcha } from '@cloudbase/utilities/dist/cjs/libs/util'\nimport { Auth } from '../auth/apis'\n\n// 防抖函数实现\nconst debounce = (func: Function, delay: number) => {\n let timeoutId: NodeJS.Timeout\n return (...args: any[]) => {\n clearTimeout(timeoutId)\n timeoutId = setTimeout(() => func.apply(null, args), delay)\n }\n}\n\nconst eventBus = new CloudbaseEventEmitter()\n\nconst CAPTCHA_EVENT = {\n CAPTCHA_DATA_CHANGE: 'captchaDataChange',\n RESOLVE_CAPTCHA_DATA: 'resolveCaptchaData',\n}\n\n// 图形验证码弹窗样式类\nconst CAPTCHA_STYLES = {\n overlay: 'position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.5);z-index:999',\n modal:\n 'position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:320px;padding:20px;background:#fff;border-radius:8px;box-shadow:0 0 10px rgba(0,0,0,0.2);z-index:1000',\n prompt: 'margin-bottom:15px',\n captchaWrap: 'display:flex;align-items:center;justify-content:space-between;margin-bottom:15px',\n captchaImg: 'width:100%;height:auto;border:1px solid #eee',\n refreshBtn:\n 'padding:10px 8px;background:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer;flex:1;white-space:nowrap;margin-left:10px',\n input:\n 'width:100%;padding:14px 16px;margin-bottom:15px;box-sizing:border-box;border:2px solid #e8ecf4;border-radius:10px;font-size:15px',\n confirmBtn: 'width:100%;padding:10px;background:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer',\n loading: 'background:#6c757d;cursor:not-allowed',\n}\n\n/**\n * 显示图形图形验证码\n * @param param0\n */\nconst genCaptchaDom = ({ oauthInstance, captchaState }) => {\n const CAPTCHA_IMG_ID = 'captcha-image'\n\n // 刷新图形验证码函数\n const refreshCaptcha = async () => {\n try {\n const result = await oauthInstance.createCaptchaData({ state: captchaState.state })\n captchaState = { ...captchaState, captchaData: result.data, token: result.token }\n ;(document.getElementById(CAPTCHA_IMG_ID) as HTMLImageElement).src = result.data\n } catch (error) {\n console.error('刷新图形验证码失败', error)\n }\n }\n\n // 创建元素并设置样式\n const createElement = (tag: string, styles?: string, text?: string) => {\n const el = document.createElement(tag)\n if (styles) el.style.cssText = styles\n if (text) el.textContent = text\n return el\n }\n\n // 创建遮罩层和弹窗\n const overlay = createElement('div', CAPTCHA_STYLES.overlay)\n const modal = createElement('div', CAPTCHA_STYLES.modal)\n\n // 添加提示文字\n modal.appendChild(createElement('p', CAPTCHA_STYLES.prompt, '请输入你看到的字符:'))\n\n // 图形验证码区域\n const captchaWrap = createElement('div', CAPTCHA_STYLES.captchaWrap)\n const captchaImg = createElement('img', CAPTCHA_STYLES.captchaImg) as HTMLImageElement\n captchaImg.id = CAPTCHA_IMG_ID\n captchaImg.src = captchaState.captchaData\n captchaWrap.appendChild(captchaImg)\n\n // 刷新按钮\n const refreshBtn = createElement('button', CAPTCHA_STYLES.refreshBtn, '刷新') as HTMLButtonElement\n refreshBtn.onclick = debounce(async () => {\n refreshBtn.textContent = '加载中...'\n refreshBtn.disabled = true\n refreshBtn.style.cssText = `${CAPTCHA_STYLES.refreshBtn};${CAPTCHA_STYLES.loading}`\n\n try {\n await refreshCaptcha()\n } finally {\n refreshBtn.textContent = '刷新'\n refreshBtn.disabled = false\n refreshBtn.style.cssText = CAPTCHA_STYLES.refreshBtn\n }\n }, 500)\n captchaWrap.appendChild(refreshBtn)\n modal.appendChild(captchaWrap)\n\n // 输入框\n const input = createElement('input', CAPTCHA_STYLES.input) as HTMLInputElement\n input.type = 'text'\n input.placeholder = '输入字符'\n input.maxLength = 4\n modal.appendChild(input)\n\n // 错误提示元素\n const errorMsg = createElement(\n 'div',\n 'color:#dc3545;font-size:12px;margin-bottom:10px;display:none;padding:8px;background:#f8d7da;border:1px solid #f5c6cb;border-radius:4px',\n )\n modal.appendChild(errorMsg)\n\n // 显示错误提示\n const showError = (message: string) => {\n errorMsg.textContent = message\n errorMsg.style.display = 'block'\n }\n\n // 确定按钮\n const confirmBtn = createElement('button', CAPTCHA_STYLES.confirmBtn, '确定') as HTMLButtonElement\n confirmBtn.onclick = debounce(async () => {\n const inputValue = input.value.trim()\n if (!inputValue) {\n showError('请输入字符')\n return\n }\n\n // 隐藏之前的错误提示\n errorMsg.style.display = 'none'\n\n confirmBtn.textContent = '验证中...'\n confirmBtn.disabled = true\n confirmBtn.style.cssText = `${CAPTCHA_STYLES.confirmBtn};${CAPTCHA_STYLES.loading}`\n\n try {\n const verifyResult = await oauthInstance.verifyCaptchaData({\n token: captchaState.token,\n key: inputValue,\n })\n eventBus.fire(CAPTCHA_EVENT.RESOLVE_CAPTCHA_DATA, verifyResult)\n console.log('图形验证码校验成功')\n document.body.removeChild(overlay)\n document.body.removeChild(modal)\n } catch (error) {\n console.error('图形验证码校验失败', error)\n // 根据错误类型显示不同的错误提示\n const errorMessage = error.error_description || '图形验证码校验失败'\n showError(errorMessage)\n\n // 清空输入框并刷新图形验证码\n input.value = ''\n input.focus()\n await refreshCaptcha()\n } finally {\n confirmBtn.textContent = '确定'\n confirmBtn.disabled = false\n confirmBtn.style.cssText = CAPTCHA_STYLES.confirmBtn\n }\n }, 500)\n modal.appendChild(confirmBtn)\n\n // 插入页面\n document.body.appendChild(overlay)\n document.body.appendChild(modal)\n}\n\nexport const openURIWithCallback = async (url: string, oauthInstance?: Auth): Promise<CaptchaToken> => {\n // 解析URL中的图形验证码参数\n const { captchaData, state, token } = parseCaptcha(url)\n\n genCaptchaDom({ oauthInstance, captchaState: { captchaData, state, token } })\n\n // 监听图形验证码校验结果\n return new Promise((resolve) => {\n console.log('等待图形验证码校验结果...')\n eventBus.on(CAPTCHA_EVENT.RESOLVE_CAPTCHA_DATA, (res) => {\n // auth.verifyCaptchaData的校验结果\n resolve(res?.data)\n })\n })\n}\n","import { ApiUrls, ErrorType } from '../auth/consts'\nimport { SimpleStorage, RequestFunction } from '../oauth2client/interface'\nimport { AuthClientRequestOptions } from '../oauth2client/models'\nimport { defaultStorage } from '../oauth2client/oauth2client'\nimport { isMp } from '../utils/mp'\nimport { SDKAdapterInterface } from '@cloudbase/adapter-interface'\nimport { openURIWithCallback } from './captcha-dom'\nimport { Auth } from '../auth/apis'\n\nexport interface CaptchaOptions {\n env: string;\n clientId: string\n request: RequestFunction\n storage: SimpleStorage\n // 打开网页并通过URL回调获取 CaptchaToken,针对不通的平台,该函数可以自定义实现, 默认集成浏览器端认证\n openURIWithCallback?: OpenURIWithCallbackFuction\n adapter?: SDKAdapterInterface & { isMatch?: () => boolean }\n oauthInstance?: Auth\n}\n\ntype OpenURIWithCallbackFuction = (url: string) => Promise<CaptchaToken>\n\nexport interface CaptchaToken {\n captcha_token: string\n expires_in: number\n expires_at?: Date | null\n}\n\nexport interface CaptchaRequestOptions extends AuthClientRequestOptions {\n withCaptcha?: boolean\n}\n\nexport interface GetCaptchaResponse {\n captcha_token?: string\n expires_in?: number\n url?: string\n}\n\nexport class Captcha {\n private config: CaptchaOptions\n private tokenSectionName: string\n\n /**\n * constructor\n * @param {CaptchaOptions} opts\n */\n constructor(opts: CaptchaOptions) {\n if (!opts.openURIWithCallback) {\n opts.openURIWithCallback = this.getDefaultOpenURIWithCallback()\n }\n if (!opts.storage) {\n opts.storage = defaultStorage\n }\n\n this.config = opts\n this.tokenSectionName = `captcha_${opts.clientId || opts.env}`\n }\n\n public isMatch() {\n return this.config?.adapter?.isMatch?.() || isMp()\n }\n\n /**\n * request http like simple fetch api, exp:request('/v1/user/me', {withCredentials:true})\n * @param {string} url\n * @param {AuthClientRequestOptions} options\n */\n public async request<T>(url: string, options?: CaptchaRequestOptions): Promise<T> {\n if (!options) {\n options = {}\n }\n if (!options.method) {\n options.method = 'GET'\n }\n const state = `${options.method}:${url}`\n let reqURL = url\n if (options.withCaptcha) {\n reqURL = await this.appendCaptchaTokenToURL(url, state, false)\n }\n\n let resp: T\n try {\n resp = await this.config.request<T>(reqURL, options)\n } catch (err) {\n if (err.error === ErrorType.CAPTCHA_REQUIRED || err.error === ErrorType.CAPTCHA_INVALID) {\n url = await this.appendCaptchaTokenToURL(url, state, err.error === ErrorType.CAPTCHA_INVALID)\n return this.config.request<T>(url, options)\n }\n return Promise.reject(err)\n }\n return resp\n }\n\n private getDefaultOpenURIWithCallback(): OpenURIWithCallbackFuction {\n return (url: string) => openURIWithCallback(url, this.config.oauthInstance)\n }\n\n /**\n * getCaptchaToken 获取captchaToken\n */\n private async getCaptchaToken(forceNewToken: boolean, state: string): Promise<string> {\n if (!forceNewToken) {\n // 如果本地存在,则直接返回\n const captchaToken = await this.findCaptchaToken()\n if (captchaToken) {\n return captchaToken\n }\n }\n\n /**\n * https://iwiki.woa.com/p/4010699417\n */\n const captchaDataResp = await this.config.request<{\n data: string\n type: 'image'\n token: string\n expires_in: number\n }>(ApiUrls.CAPTCHA_DATA_URL, {\n method: 'POST',\n body: {\n state,\n redirect_uri: '',\n },\n withCredentials: false,\n })\n const captchaTokenUrl = `${captchaDataResp.data}?state=${encodeURIComponent(state)}&token=${encodeURIComponent(captchaDataResp.token,)}`\n\n const captchaToken = await this.config.openURIWithCallback(captchaTokenUrl)\n this.saveCaptchaToken(captchaToken)\n return captchaToken.captcha_token\n }\n\n private async appendCaptchaTokenToURL(url: string, state: string, forceNewToken: boolean): Promise<string> {\n const captchaToken = await this.getCaptchaToken(forceNewToken, state)\n if (url.indexOf('?') > 0) {\n url += `&captcha_token=${captchaToken}`\n } else {\n url += `?captcha_token=${captchaToken}`\n }\n return url\n }\n\n private async saveCaptchaToken(token: CaptchaToken) {\n token.expires_at = new Date(Date.now() + (token.expires_in - 10) * 1000)\n const tokenStr: string = JSON.stringify(token)\n await this.config.storage.setItem(this.tokenSectionName, tokenStr)\n }\n\n private async findCaptchaToken(): Promise<string> {\n const tokenStr: string = await this.config.storage.getItem(this.tokenSectionName)\n if (tokenStr !== undefined && tokenStr !== null) {\n try {\n const captchaToken = JSON.parse(tokenStr)\n if (captchaToken?.expires_at) {\n captchaToken.expires_at = new Date(captchaToken.expires_at)\n }\n const isExpired = captchaToken.expires_at < new Date()\n if (isExpired) {\n return null\n }\n return captchaToken.captcha_token\n } catch (error) {\n await this.config.storage.removeItem(this.tokenSectionName)\n return null\n }\n }\n return null\n }\n}\n","import { ErrorType } from './consts'\nimport {\n ApiUrls,\n ApiUrlsV2,\n AUTH_API_PREFIX,\n AUTH_STATE_CHANGED_TYPE,\n DEFAULT_NODE_ACCESS_SCOPE,\n EVENTS,\n} from '../auth/consts'\n\nimport { AuthClient, SimpleStorage } from './interface'\n\nimport {\n Credentials,\n ResponseError,\n RequestOptions,\n RequestFunction,\n OAuth2ClientOptions,\n AuthClientRequestOptions,\n} from './models'\n\nimport { uuidv4 } from '../utils/uuid'\nimport { getPathName } from '../utils/index'\n\nimport { SinglePromise } from '../utils/function/single-promise'\nimport { weBtoa } from '../utils/base64'\nimport { isMp } from '../utils/mp'\nimport { AuthOptions } from '../auth/apis'\nimport { ICloudbaseConfig } from '@cloudbase/types'\nimport { langEvent } from '@cloudbase/utilities'\n\nconst RequestIdHeaderName = 'x-request-id'\nconst DeviceIdHeaderName = 'x-device-id'\nconst DeviceIdSectionName = 'device_id'\n\ndeclare const wx: any\n\nexport interface ToResponseErrorOptions {\n error?: ErrorType\n error_description?: string | null\n error_uri?: string | null\n details?: any | null\n}\n\nexport const defaultRequest: RequestFunction = async function <T>(url: string, options?: RequestOptions): Promise<T> {\n let result: T | null = null\n let responseError: ResponseError | null = null\n try {\n // Objects must be copied to prevent modification of data such as body.\n const copyOptions = Object.assign({}, options)\n if (!copyOptions.method) {\n copyOptions.method = 'GET'\n }\n if (copyOptions.body && typeof copyOptions.body !== 'string') {\n copyOptions.body = JSON.stringify(copyOptions.body)\n }\n const responseResult: Response = await fetch(url, copyOptions)\n const jsonResponse = await responseResult.json()\n if (jsonResponse?.error) {\n responseError = jsonResponse as ResponseError\n responseError.error_uri = new URL(url).pathname\n } else {\n result = jsonResponse as T\n }\n } catch (error) {\n responseError = {\n error: ErrorType.UNREACHABLE,\n error_description: error.message,\n error_uri: new URL(url).pathname,\n }\n }\n if (responseError) {\n throw responseError\n } else {\n return result\n }\n}\n\nexport const toResponseError = (error: ResponseError | Error, options?: ToResponseErrorOptions): ResponseError => {\n let responseError: ResponseError\n const formatOptions: ToResponseErrorOptions = options || {}\n if (error instanceof Error) {\n responseError = {\n error: formatOptions.error || ErrorType.LOCAL,\n error_description: formatOptions.error_description || error.message,\n error_uri: formatOptions.error_uri,\n details: formatOptions.details || error.stack,\n }\n } else {\n const formatError: ToResponseErrorOptions = error || {}\n responseError = {\n error: formatOptions.error || formatError.error || ErrorType.LOCAL,\n error_description: formatOptions.error_description || formatError.error_description,\n error_uri: formatOptions.error_uri || formatError.error_uri,\n details: formatOptions.details || formatError.details,\n }\n }\n return responseError\n}\n\n/**\n * Generate request id.\n * @return {string}\n */\nexport function generateRequestId(): string {\n return uuidv4()\n}\n\n/**\n * Default Storage.\n */\nclass DefaultStorage implements SimpleStorage {\n /**\n * 缓存key统一使用后缀区分\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n private readonly _env: string\n\n constructor(opts?: { env: string }) {\n this._env = opts?.env || ''\n }\n /**\n * Get item.\n * @param {string} key\n */\n async getItem(key: string): Promise<string | null> {\n return window.localStorage.getItem(`${key}${this._env}`)\n }\n\n /**\n * Remove item.\n * @param {string} key\n */\n async removeItem(key: string): Promise<void> {\n window.localStorage.removeItem(`${key}${this._env}`)\n }\n\n /**\n * Set item.\n * @param {string} key\n * @param {string} value\n */\n async setItem(key: string, value: string): Promise<void> {\n window.localStorage.setItem(`${key}${this._env}`, value)\n }\n\n /**\n * Get item sync.\n * @param {string} key\n */\n getItemSync(key: string): string | null {\n return window.localStorage.getItem(`${key}${this._env}`)\n }\n\n /**\n * Remove item sync.\n * @param {string} key\n */\n removeItemSync(key: string): void {\n window.localStorage.removeItem(`${key}${this._env}`)\n }\n\n /**\n * Set item sync.\n * @param {string} key\n * @param {string} value\n */\n setItemSync(key: string, value: string): void {\n window.localStorage.setItem(`${key}${this._env}`, value)\n }\n}\n\nexport const defaultStorage = new DefaultStorage()\n\ninterface LocalCredentialsOptions {\n tokenSectionName: string\n storage: SimpleStorage\n clientId: string\n credentials?: Credentials\n}\n\n/**\n * Check if credentials is expired.\n * @param {Credentials} credentials\n * @return {boolean}\n */\nfunction isCredentialsExpired(credentials: Credentials): boolean {\n let isExpired = true\n if (credentials?.expires_at && credentials?.access_token) {\n isExpired = credentials.expires_at < new Date()\n }\n return isExpired\n}\n\n/**\n * Local credentials.\n * Local credentials, with memory cache and storage cache.\n * If the memory cache expires, the storage cache is automatically loaded.\n */\nclass LocalCredentials {\n private tokenSectionName: string\n\n private storage: SimpleStorage\n\n private clientId: string\n\n private credentials: Credentials | null = null\n // 来自accessKey的身份,不持久化\n private accessKeyCredentials: Credentials | null = null\n\n private singlePromise: SinglePromise = null\n\n /**\n * constructor\n * @param {LocalCredentialsOptions} options\n */\n constructor(options: LocalCredentialsOptions) {\n this.tokenSectionName = options.tokenSectionName\n this.storage = options.storage\n this.clientId = options.clientId\n this.singlePromise = new SinglePromise({ clientId: this.clientId })\n this.credentials = options.credentials || null\n }\n\n public getStorageCredentialsSync(): Credentials | null {\n let credentials: Credentials = null\n const tokenStr: string = this.storage.getItemSync(this.tokenSectionName)\n if (tokenStr !== undefined && tokenStr !== null) {\n try {\n credentials = JSON.parse(tokenStr)\n if (credentials?.expires_at) {\n credentials.expires_at = new Date(credentials.expires_at)\n }\n } catch (error) {\n this.storage.removeItem(this.tokenSectionName)\n credentials = null\n }\n }\n return credentials\n }\n\n /**\n * setCredentials Provides an alternative fetch api request implementation with auth credentials\n * @param {Credentials} credentials\n */\n public async setCredentials(credentials?: Credentials): Promise<void> {\n if (credentials?.expires_in) {\n if (!credentials?.expires_at) {\n credentials.expires_at = new Date(Date.now() + (credentials.expires_in - 30) * 1000)\n }\n if (this.storage) {\n const tokenStr: string = JSON.stringify(credentials)\n await this.storage.setItem(this.tokenSectionName, tokenStr)\n }\n this.credentials = credentials\n } else {\n if (this.storage) {\n await this.storage.removeItem(this.tokenSectionName)\n }\n this.credentials = null\n }\n }\n\n /**\n * set credentials from accessKey\n * @param {Credentials} credentials\n */\n public setAccessKeyCredentials(credentials?: Credentials) {\n this.accessKeyCredentials = credentials\n // node sdk 场景下直接使用accessKey身份\n if (credentials.scope === DEFAULT_NODE_ACCESS_SCOPE) {\n this.credentials = credentials\n }\n }\n\n /**\n * Get credentials.\n * @return {Promise<Credentials | null>}\n */\n public async getCredentials(): Promise<Credentials | null> {\n return this.singlePromise.run('getCredentials', async () => {\n if (isCredentialsExpired(this.credentials)) {\n const { credentials, isAccessKeyCredentials } = await this.getStorageCredentials()\n if (isAccessKeyCredentials) {\n return credentials\n }\n this.credentials = credentials\n }\n return this.credentials\n })\n }\n\n /**\n * Get storage credentials.\n */\n private async getStorageCredentials(): Promise<{ credentials: Credentials | null; isAccessKeyCredentials: boolean }> {\n return this.singlePromise.run('_getStorageCredentials', async () => {\n let credentials: Credentials = null\n let isAccessKeyCredentials = false\n const tokenStr: string = await this.storage.getItem(this.tokenSectionName)\n if (!!tokenStr) {\n try {\n credentials = JSON.parse(tokenStr)\n if (credentials?.expires_at) {\n credentials.expires_at = new Date(credentials.expires_at)\n }\n } catch (error) {\n await this.storage.removeItem(this.tokenSectionName)\n credentials = null\n }\n } else {\n credentials = this.accessKeyCredentials || null\n isAccessKeyCredentials = true\n }\n return { credentials, isAccessKeyCredentials }\n })\n }\n}\n\n/**\n * OAuth2Client\n */\nexport class OAuth2Client implements AuthClient {\n private static defaultRetry = 2\n private static minRetry = 0\n private static maxRetry = 5\n private static retryInterval = 1000\n\n public localCredentials: LocalCredentials\n /**\n * Keeps track of the async client initialization.\n * When null or not yet resolved the auth state is `unknown`\n * Once resolved the auth state is known and it's safe to call any further client methods.\n */\n public initializePromise: Promise<{ error: Error | null }> | null = null\n protected lockAcquired = false\n protected pendingInLock: Promise<any>[] = []\n protected logDebugMessages: boolean\n protected getInitialSession?: () => Promise<{\n data: { session: Credentials; user?: any } | null\n error: Error | null\n }>\n private apiOrigin: string\n private apiPath: string\n private clientId: string\n private i18n: ICloudbaseConfig['i18n']\n private retry: number\n private clientSecret?: string\n private baseRequest: <T>(url: string, options?: RequestOptions) => Promise<T>\n private storage: SimpleStorage\n private deviceID?: string\n private tokenInURL?: boolean\n private refreshTokenFunc: (refreshToken?: string, credentials?: Credentials) => Promise<Credentials>\n private headers?: { [key: string]: string }\n private singlePromise: SinglePromise = null\n private anonymousSignInFunc: (Credentials) => Promise<Credentials | void>\n private wxCloud: any\n private useWxCloud: boolean\n private eventBus: any\n private basicAuth: string\n private onCredentialsError: AuthOptions['onCredentialsError'] | undefined\n private onInitialSessionObtained?: (data: { session: Credentials; user?: any }, error?: any) => void | Promise<void>\n\n /**\n * constructor\n * @param {OAuth2ClientOptions} options\n */\n constructor(options: OAuth2ClientOptions) {\n if (!options.clientSecret) {\n options.clientSecret = ''\n }\n\n if (!options.clientId && options.env) {\n options.clientId = options.env\n }\n\n this.apiOrigin = options.apiOrigin\n this.apiPath = options.apiPath || AUTH_API_PREFIX\n this.clientId = options.clientId\n this.i18n = options.i18n\n this.eventBus = options.eventBus\n this.singlePromise = new SinglePromise({ clientId: this.clientId })\n this.retry = this.formatRetry(options.retry, OAuth2Client.defaultRetry)\n if (options.baseRequest) {\n this.baseRequest = options.baseRequest\n } else {\n this.baseRequest = defaultRequest\n }\n this.tokenInURL = options.tokenInURL\n this.headers = options.headers\n // @ts-ignore\n this.storage = options.storage || defaultStorage\n this.localCredentials = new LocalCredentials({\n tokenSectionName: `credentials_${options.clientId}`,\n storage: this.storage,\n clientId: options.clientId,\n })\n\n this.clientSecret = options.clientSecret\n if (options.clientId) {\n this.basicAuth = `Basic ${weBtoa(`${options.clientId}:${this.clientSecret}`)}`\n }\n this.wxCloud = options.wxCloud\n try {\n if (isMp()) {\n this.useWxCloud = options.useWxCloud\n if (this.wxCloud === undefined && options.env) {\n wx.cloud.init({ env: options.env })\n this.wxCloud = wx.cloud\n }\n }\n } catch (error) {\n //\n }\n this.refreshTokenFunc = options.refreshTokenFunc || this.defaultRefreshTokenFunc\n this.anonymousSignInFunc = options.anonymousSignInFunc\n this.onCredentialsError = options.onCredentialsError\n\n // New options for session detection\n this.getInitialSession = options.getInitialSession\n this.onInitialSessionObtained = options.onInitialSessionObtained\n this.logDebugMessages = options.debug ?? false\n\n langEvent.bus.on(langEvent.LANG_CHANGE_EVENT, (params: any) => {\n this.i18n = params.data?.i18n || this.i18n\n })\n\n // Note: Auto-initialize is NOT called here to allow CloudbaseOAuth to set getInitialSession first\n // CloudbaseOAuth.constructor will call initialize() after setting up the callback\n }\n\n /**\n * Sets the getInitialSession callback.\n * This callback is called during initialize() to get the initial session (e.g., from OAuth callback in URL).\n * @param callback The callback function to get initial session\n */\n public setGetInitialSession(callback: () => Promise<{\n data: { session: Credentials; user?: any } | null\n error: Error | null\n }>,): void {\n this.getInitialSession = callback\n }\n\n /**\n * Sets the onInitialSessionObtained callback.\n * This callback is invoked after initial session is obtained and stored,\n * allowing upper layers to handle user info storage.\n * @param callback The callback function to handle session and user data\n */\n public setOnInitialSessionObtained(callback: (data: { session: Credentials; user?: any }) => void | Promise<void>,): void {\n this.onInitialSessionObtained = callback\n }\n\n /**\n * Initializes the client session either from the url or from storage.\n * This method is automatically called when instantiating the client with detectSessionInUrl=true,\n * but should also be called manually when checking for an error from an auth redirect.\n * @param onInitialSessionObtained Optional callback to set before initialization starts\n */\n async initialize(func?: Promise<{ error: Error | null }>): Promise<{ error: Error | null }> {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (this.initializePromise) {\n return await this.initializePromise\n }\n\n if (func !== undefined) {\n this.initializePromise = func\n return await this.initializePromise\n }\n\n this.initializePromise = (async () => await this._acquireLock(-1, async () => await this._initialize()))()\n\n return await this.initializePromise\n }\n\n /**\n * setCredentials Provides an alternative fetch api request implementation with auth credentials\n * @param {Credentials} credentials\n * @return {Promise<void>}\n */\n public async setCredentials(credentials?: Credentials): Promise<void> {\n // If initialization is in progress, wait for it first\n await this.initializePromise\n return this._acquireLock(-1, async () => this.localCredentials.setCredentials(credentials))\n }\n\n /**\n * set credentials from accessKey\n * @param {Credentials} credentials\n */\n public setAccessKeyCredentials(credentials?: Credentials) {\n return this.localCredentials.setAccessKeyCredentials(credentials)\n }\n\n /**\n * getAccessToken return a validate access token\n */\n public async getAccessToken(): Promise<string> {\n // If initialization is in progress, wait for it first\n await this.initializePromise\n const credentials: Credentials = await this.getCredentials()\n // node sdk 场景下直接返回access_token\n if (credentials?.scope === DEFAULT_NODE_ACCESS_SCOPE) {\n return Promise.resolve(credentials.access_token)\n }\n if (credentials?.access_token) {\n return Promise.resolve(credentials.access_token)\n }\n const respErr: ResponseError = { error: ErrorType.UNAUTHENTICATED }\n return Promise.reject(respErr)\n }\n\n /**\n * request http like simple fetch api, exp:request('/v1/user/me', {withCredentials:true})\n * @param {string} url\n * @param {AuthClientRequestOptions} options\n */\n public async request<T>(url: string, options?: AuthClientRequestOptions): Promise<T> {\n if (!options) {\n options = {}\n }\n const retry: number = this.formatRetry(options.retry, this.retry)\n options.headers = { ...options.headers, [this.i18n?.LANG_HEADER_KEY]: this.i18n?.lang }\n if (this.headers) {\n options.headers = {\n ...this.headers,\n ...options.headers,\n }\n }\n if (!options.headers[RequestIdHeaderName]) {\n options.headers[RequestIdHeaderName] = generateRequestId()\n }\n if (!options.headers[DeviceIdHeaderName]) {\n const deviceId = await this.getDeviceId()\n options.headers[DeviceIdHeaderName] = deviceId\n }\n if (options?.withBasicAuth && this.basicAuth) {\n options.headers.Authorization = this.basicAuth\n }\n if (options?.withCredentials) {\n // Use custom getCredentials function if provided, otherwise use default\n // Custom getCredentials avoids default getCredentials() call which may cause deadlock during initialization\n const credentials = options.getCredentials ? await options.getCredentials() : await this.getCredentials()\n if (credentials) {\n if (this.tokenInURL) {\n if (url.indexOf('?') < 0) {\n url += '?'\n }\n url += `access_token=${credentials.access_token}`\n } else {\n options.headers.Authorization = `${credentials.token_type} ${credentials.access_token}`\n }\n }\n } else {\n if (this.clientId && url.indexOf('client_id') < 0) {\n url += url.indexOf('?') < 0 ? '?' : '&'\n url += `client_id=${this.clientId}`\n }\n }\n if (url.startsWith('/')) {\n url = `${this.apiOrigin}${this.apiPath}${url}`\n }\n let response: T | null = null\n const maxRequestTimes: number = retry + 1\n for (let requestTime = 0; requestTime < maxRequestTimes; requestTime++) {\n try {\n if (options.useWxCloud || this.useWxCloud) {\n response = await this.wxCloudCallFunction<T>(url, options)\n } else {\n response = await this.baseRequest<T>(url, options)\n }\n\n if (!!(response as any)?.code) {\n throw {\n error: (response as any).code,\n error_description: (response as any).message,\n error_uri: new URL(url).pathname,\n }\n }\n\n break\n } catch (responseError) {\n try {\n responseError.requestId = responseError.requestId || options.headers[RequestIdHeaderName] || ''\n } catch (error) {}\n if (options.withCredentials && responseError && responseError.error === ErrorType.UNAUTHENTICATED) {\n await this.setCredentials(null)\n return Promise.reject(responseError)\n }\n\n if (requestTime === retry || !responseError || responseError.error !== 'unreachable') {\n return Promise.reject(responseError)\n }\n }\n await this.sleep(OAuth2Client.retryInterval)\n }\n return response\n }\n\n public async wxCloudCallFunction<T>(url: string, options?: RequestOptions): Promise<T> {\n let result: T | null = null\n let responseError: ResponseError | null = null\n try {\n let userAgent = ''\n try {\n userAgent = await wx.getRendererUserAgent()\n } catch (error) {}\n const { result: responseResult } = await this.wxCloud.callFunction({\n name: 'httpOverCallFunction',\n data: {\n url,\n method: options.method,\n headers: {\n origin: 'https://servicewechat.com',\n 'User-Agent': userAgent,\n ...options.headers,\n },\n body: options.body,\n },\n })\n\n if (responseResult?.body?.error_code) {\n responseError = responseResult?.body as ResponseError\n responseError.error_uri = getPathName(url)\n } else {\n result = responseResult?.body as T\n }\n } catch (error) {\n responseError = {\n error: ErrorType.UNREACHABLE,\n error_description: error.message,\n error_uri: getPathName(url),\n }\n }\n\n if (responseError) {\n throw responseError\n } else {\n return result\n }\n }\n\n /**\n * Get credentials.\n */\n public async getCredentials(): Promise<Credentials | null> {\n // If initialization is in progress, wait for it first\n await this.initializePromise\n\n return this._acquireLock(-1, async () => this._getCredentials())\n }\n\n /**\n * @deprecated 废弃接口,勿用. 如需获取凭证信息请使用 getCredentials 方法\n */\n public getCredentialsSync(): Credentials | null {\n const credentials: Credentials = this.localCredentials.getStorageCredentialsSync()\n return credentials\n }\n\n public getCredentialsAsync(): Promise<Credentials | null> {\n return this.getCredentials()\n }\n\n public async getScope(): Promise<string> {\n const credentials: Credentials = await this.localCredentials.getCredentials()\n if (!credentials) {\n const msg = 'credentials not found'\n this.onCredentialsError?.({ msg })\n return this.unAuthenticatedError(msg)\n }\n return credentials.scope\n }\n\n public async getGroups(): Promise<string[]> {\n const credentials: Credentials = await this.localCredentials.getCredentials()\n if (!credentials) {\n const msg = 'credentials not found'\n this.onCredentialsError?.({ msg })\n return this.unAuthenticatedError(msg)\n }\n return credentials.groups\n }\n\n /**\n * Refresh expired token.\n * @param {Credentials} credentials\n * @return {Promise<Credentials>}\n */\n public async refreshToken(credentials: Credentials, options?: { throwError?: boolean }): Promise<Credentials> {\n // If initialization is in progress, wait for it first\n await this.initializePromise\n\n return this._acquireLock(-1, async () => this._refreshToken(credentials, options))\n }\n\n /**\n * Internal refresh token method (called within lock)\n */\n private async _refreshToken(credentials: Credentials, options?: { throwError?: boolean }): Promise<Credentials> {\n return this.singlePromise.run('_refreshToken', async () => {\n // node sdk 场景下不需要刷新 token\n if (credentials?.scope === DEFAULT_NODE_ACCESS_SCOPE) {\n return credentials\n }\n\n if (!credentials || !credentials.refresh_token) {\n const msg = 'no refresh token found in credentials'\n this.onCredentialsError?.({ msg })\n return this.unAuthenticatedError(msg)\n }\n try {\n const newCredentials: Credentials = await this.refreshTokenFunc(credentials.refresh_token, credentials)\n await this.localCredentials.setCredentials(newCredentials)\n\n this.eventBus?.fire(EVENTS.AUTH_STATE_CHANGED, { event: AUTH_STATE_CHANGED_TYPE.TOKEN_REFRESHED })\n\n return newCredentials\n } catch (error) {\n if (options?.throwError) {\n throw error\n }\n if (error.error === ErrorType.INVALID_GRANT) {\n await this.localCredentials.setCredentials(null)\n const msg = error.error_description\n this.onCredentialsError?.({ msg })\n return this.unAuthenticatedError(msg)\n }\n this.onCredentialsError?.({ msg: error.error_description })\n return Promise.reject(error)\n }\n })\n }\n\n private async anonymousLogin(credentials: Credentials) {\n return this.singlePromise.run('_anonymousLogin', async () => {\n if (this.anonymousSignInFunc) {\n const c = await this.anonymousSignInFunc(credentials)\n credentials = c || (await this.localCredentials.getCredentials())\n } else {\n credentials = await this.anonymousSignIn(credentials)\n }\n\n return credentials\n })\n }\n\n /**\n * Check retry value.\n * @param {number} retry\n * @return {number}\n */\n private checkRetry(retry: number): number {\n let responseError: ResponseError | null = null\n if (typeof retry !== 'number' || retry < OAuth2Client.minRetry || retry > OAuth2Client.maxRetry) {\n responseError = {\n error: ErrorType.UNREACHABLE,\n error_description: 'wrong options param: retry',\n }\n }\n if (responseError) {\n throw responseError\n }\n return retry\n }\n\n /**\n * Format retry value.\n * @param {number} retry\n * @param {number} defaultVale\n * @return {number}\n */\n private formatRetry(retry: number, defaultVale: number): number {\n if (typeof retry === 'undefined') {\n return defaultVale\n }\n return this.checkRetry(retry)\n }\n\n /**\n * Sleep.\n * @param {number} ms\n * @return {Promise<void>}\n */\n private async sleep(ms: number): Promise<void> {\n return new Promise<void>((resolve) => {\n setTimeout(() => {\n resolve()\n }, ms)\n })\n }\n\n /**\n * anonymous signIn\n * @param {Credentials} credentials\n * @return {Promise<Credentials>}\n */\n private async anonymousSignIn(credentials: Credentials): Promise<Credentials> {\n return this.singlePromise.run('_anonymous', async () => {\n if (!credentials || credentials.scope !== 'anonymous') {\n return this.unAuthenticatedError('no anonymous in credentials')\n }\n try {\n const newCredentials: Credentials = await this.request(ApiUrls.AUTH_SIGN_IN_ANONYMOUSLY_URL, {\n method: 'POST',\n withBasicAuth: true,\n body: {},\n })\n await this.localCredentials.setCredentials(newCredentials)\n return newCredentials\n } catch (error) {\n if (error.error === ErrorType.INVALID_GRANT) {\n await this.localCredentials.setCredentials(null)\n return this.unAuthenticatedError(error.error_description)\n }\n return Promise.reject(error)\n }\n })\n }\n\n /**\n * Default refresh token function.\n * @param {string} refreshToken\n * @return {Promise<Credentials>}\n */\n private async defaultRefreshTokenFunc(refreshToken?: string, credentials?: Credentials): Promise<Credentials> {\n if (refreshToken === undefined || refreshToken === '') {\n const msg = 'refresh token not found'\n this.onCredentialsError?.({ msg })\n return this.unAuthenticatedError(msg)\n }\n\n let url: string = ApiUrls.AUTH_TOKEN_URL\n\n if (credentials?.version === 'v2') {\n url = ApiUrlsV2.AUTH_TOKEN_URL\n }\n\n const newCredentials: Credentials = await this.request(url, {\n method: 'POST',\n body: {\n client_id: this.clientId,\n client_secret: this.clientSecret,\n grant_type: 'refresh_token',\n refresh_token: refreshToken,\n },\n })\n\n return { ...newCredentials, version: credentials?.version || 'v1' }\n }\n\n /**\n * Get deviceId\n */\n private async getDeviceId(): Promise<string> {\n if (this.deviceID) {\n return this.deviceID\n }\n let deviceId: string = await this.storage.getItem(DeviceIdSectionName)\n if (!(typeof deviceId === 'string' && deviceId.length >= 16 && deviceId.length <= 48)) {\n deviceId = uuidv4()\n await this.storage.setItem(DeviceIdSectionName, deviceId)\n }\n this.deviceID = deviceId\n return deviceId\n }\n /**\n * Generate unAuthenticated error.\n * @param {string} err\n * @return {Promise<T>}\n */\n private unAuthenticatedError<T>(err?: string): Promise<T> {\n const respErr: ResponseError = {\n error: ErrorType.UNAUTHENTICATED,\n error_description: err,\n }\n return Promise.reject(respErr)\n }\n\n /**\n * Debug logging helper\n */\n private _debug(...args: any[]): void {\n if (this.logDebugMessages) {\n console.log('[OAuth2Client]', ...args)\n }\n }\n\n /**\n * IMPORTANT:\n * 1. Never throw in this method, as it is called from the constructor\n * 2. Never return a session from this method as it would be cached over\n * the whole lifetime of the client\n */\n private async _initialize(): Promise<{ error: Error | null }> {\n try {\n // If no getInitialSession callback is set, nothing to do\n if (!this.getInitialSession) {\n this._debug('#_initialize()', 'no getInitialSession callback set, skipping')\n return { error: null }\n }\n\n this._debug('#_initialize()', 'calling getInitialSession callback')\n\n try {\n const { data, error } = await this.getInitialSession()\n\n if (data?.session) {\n this._debug('#_initialize()', 'session obtained from getInitialSession', data.session)\n await this.localCredentials.setCredentials(data?.session)\n }\n\n // Invoke callback for upper layer to handle user storage\n // This is called BEFORE lock is released so user storage is atomic with session\n if (this.onInitialSessionObtained) {\n this._debug('#_initialize()', 'calling onInitialSessionObtained callback')\n try {\n await this.onInitialSessionObtained(data, error)\n } catch (callbackError) {\n this._debug('#_initialize()', 'error in onInitialSessionObtained', callbackError)\n // Don't fail initialization if callback fails\n }\n }\n if (error) {\n this._debug('#_initialize()', 'error from getInitialSession', error)\n return { error }\n }\n\n return { error: null }\n } catch (err) {\n this._debug('#_initialize()', 'exception during getInitialSession', err)\n return { error: err instanceof Error ? err : new Error(String(err)) }\n }\n } catch (error) {\n this._debug('#_initialize()', 'unexpected error', error)\n return { error: error instanceof Error ? error : new Error(String(error)) }\n } finally {\n this._debug('#_initialize()', 'end')\n }\n }\n\n /**\n * Acquires a global lock based on the client ID.\n * This ensures that only one operation can modify credentials at a time.\n */\n private async _acquireLock<R>(acquireTimeout: number, fn: () => Promise<R>): Promise<R> {\n this._debug('#_acquireLock', 'begin', acquireTimeout)\n\n try {\n if (this.lockAcquired) {\n // Lock is already acquired, queue the operation\n const last = this.pendingInLock.length ? this.pendingInLock[this.pendingInLock.length - 1] : Promise.resolve()\n\n const result = (async () => {\n await last\n return await fn()\n })()\n\n this.pendingInLock.push((async () => {\n try {\n await result\n } catch (_e: any) {\n // we just care if it finished\n }\n })(),)\n\n return result\n }\n\n // Acquire the lock\n this._debug('#_acquireLock', 'acquiring lock for client', this.clientId)\n\n try {\n this.lockAcquired = true\n\n const result = fn()\n\n this.pendingInLock.push((async () => {\n try {\n await result\n } catch (_e: any) {\n // we just care if it finished\n }\n })(),)\n\n await result\n\n // keep draining the queue until there's nothing to wait on\n while (this.pendingInLock.length) {\n const waitOn = [...this.pendingInLock]\n await Promise.all(waitOn)\n this.pendingInLock.splice(0, waitOn.length)\n }\n\n return await result\n } finally {\n this._debug('#_acquireLock', 'releasing lock for client', this.clientId)\n this.lockAcquired = false\n }\n } finally {\n this._debug('#_acquireLock', 'end')\n }\n }\n\n /**\n * Internal method to get credentials (called within lock)\n */\n private async _getCredentials(): Promise<Credentials | null> {\n let credentials: Credentials = await this.localCredentials.getCredentials()\n // node adapter 场景下,scope 为 DEFAULT_NODE_ACCESS_SCOPE,不需要刷新 token\n if (credentials?.scope === DEFAULT_NODE_ACCESS_SCOPE) {\n return credentials\n }\n if (!credentials) {\n const msg = 'credentials not found'\n this.onCredentialsError?.({ msg })\n return this.unAuthenticatedError(msg)\n }\n if (isCredentialsExpired(credentials)) {\n if (credentials.refresh_token) {\n try {\n credentials = await this._refreshToken(credentials)\n } catch (error) {\n if (credentials.scope === 'anonymous') {\n credentials = await this.anonymousLogin(credentials)\n } else {\n this.onCredentialsError?.({ msg: error.error_description })\n return Promise.reject(error)\n }\n }\n } else if (credentials.scope === 'anonymous') {\n credentials = await this.anonymousLogin(credentials)\n } else {\n const msg = 'no refresh token found in credentials'\n this.onCredentialsError?.({ msg })\n return this.unAuthenticatedError(msg)\n }\n }\n return credentials\n }\n}\n","/* eslint-disable */\n// weapp jwt-decode\nconst b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\nconst b64re = /^(?:[A-Za-z\\d+/]{4})*?(?:[A-Za-z\\d+/]{2}(?:==)?|[A-Za-z\\d+/]{3}=?)?$/\n\n// btoa\nexport function weBtoa(string: string) {\n string = String(string)\n let bitmap\n let a\n let b\n let c\n let result = ''\n let i = 0\n const rest = string.length % 3\n\n for (; i < string.length;) {\n if ((a = string.charCodeAt(i++)) > 255 || (b = string.charCodeAt(i++)) > 255 || (c = string.charCodeAt(i++)) > 255) throw new TypeError('Failed to execute \\'btoa\\' on \\'Window\\': The string to be encoded contains characters outside of the Latin1 range.',)\n\n bitmap = (a << 16) | (b << 8) | c\n result\n += b64.charAt((bitmap >> 18) & 63)\n + b64.charAt((bitmap >> 12) & 63)\n + b64.charAt((bitmap >> 6) & 63)\n + b64.charAt(bitmap & 63)\n }\n\n return rest ? result.slice(0, rest - 3) + '==='.substring(rest) : result\n}\n// atob\nexport const weAtob = function (string: string) {\n string = String(string).replace(/[\\t\\n\\f\\r ]+/g, '')\n if (!b64re.test(string)) throw new TypeError('Failed to execute \\'atob\\' on \\'Window\\': The string to be decoded is not correctly encoded.')\n string += '=='.slice(2 - (string.length & 3))\n let bitmap\n let result = ''\n let r1\n let r2\n let i = 0\n for (; i < string.length;) {\n bitmap = (b64.indexOf(string.charAt(i++)) << 18)\n | (b64.indexOf(string.charAt(i++)) << 12)\n | ((r1 = b64.indexOf(string.charAt(i++))) << 6)\n | (r2 = b64.indexOf(string.charAt(i++)))\n\n result\n += r1 === 64\n ? String.fromCharCode((bitmap >> 16) & 255)\n : r2 === 64\n ? String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255)\n : String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255, bitmap & 255)\n }\n return result\n}\n\nfunction b64DecodeUnicode(str: string) {\n return decodeURIComponent(weAtob(str).replace(/(.)/g, (p) => {\n let code = p.charCodeAt(0).toString(16)\n .toUpperCase()\n if (code.length < 2) {\n code = `0${code}`\n }\n return `%${code}`\n }),)\n}\n\nexport function base64_url_decode(str: string) {\n let output = str.replace(/-/g, '+').replace(/_/g, '/')\n switch (output.length % 4) {\n case 0:\n break\n case 2:\n output += '=='\n break\n case 3:\n output += '='\n break\n default:\n throw new Error('Illegal base64url string!')\n }\n\n try {\n return b64DecodeUnicode(output)\n } catch (err) {\n return weAtob(output)\n }\n}\n\nexport function weappJwtDecode(token: string, options?: any) {\n if (typeof token !== 'string') {\n throw new Error('Invalid token specified')\n }\n options = options || {}\n const pos = options.header === true ? 0 : 1\n try {\n return JSON.parse(base64_url_decode(token.split('.')[pos]))\n } catch (e) {\n throw new Error(`Invalid token specified: ${e}` ? (e as any).message : '')\n }\n}\n\nexport function weAppJwtDecodeAll(token: string) {\n if (typeof token !== 'string') {\n throw new Error('Invalid token specified')\n }\n try {\n const parts = token.split('.').map((segment, i) => i === 2 ? segment : JSON.parse(base64_url_decode(segment)))\n return { claims: parts[1], header: parts[0], signature: parts[2]}\n } catch (e) {\n throw new Error(`Invalid token specified: ${e}` ? (e as any).message : '')\n }\n}\n","/**\n * 魔改的 encryptlong 版本, 只支持 encryptLong 方法\n * 小程序上 JSEncrypt 为空不支持 @important\n */\nimport JSEncrypt from './encryptlong'\nimport { deepClone } from './index'\n\n/**\n * 生成RSA公钥加密后的数据\n * @param param0.publicKey RSA公钥\n * @param param0.payload 加密前的数据\n * @returns {string} 加密后的数据\n */\nexport const getEncryptInfo = ({ publicKey = '', payload = {} as any } = {}) => {\n if (!publicKey) return ''\n\n try {\n const params = deepClone(payload)\n // 生成RSA实例\n const rsaInstance = new JSEncrypt()\n // 设置公钥\n rsaInstance.setPublicKey(publicKey)\n // 生成时间戳\n // params.timestamp = +new Date()\n // 确定签名算法\n // const signMethod = 'HmacSHA256'\n // 生成随机数\n // const nonce = WordArray.random(16).toString()\n // 生成签名:基本参数、时间戳 + 随机数\n // const signature = HmacSHA256(JSON.stringify(params), nonce).toString()\n // 将签名放入参数中\n // params.signature = signature\n // params.nonce = nonce\n // params.signMethod = signMethod\n // rsa公钥加密\n const encrypted = rsaInstance.encryptLong(typeof params === 'object' ? JSON.stringify(params) : params)\n\n return encrypted\n } catch (error) {\n console.error('encrypt error:', error)\n }\n\n return ''\n}\n","/**\n * Single Promise\n */\n\nlet jsSdkFnPromiseMap = new Map()\nexport class SinglePromise {\n private clientId: string\n\n constructor(options) {\n this.clientId = options?.clientId || ''\n jsSdkFnPromiseMap = (jsSdkFnPromiseMap || new Map()) as Map<string, Promise<any>>\n }\n\n /**\n * Run single promise.\n * @param {string} key\n * @param {Function} fn\n * @return {Promise<T>}\n */\n async run<T>(key: string, fn: () => Promise<T>): Promise<T> {\n key = `${this.clientId}_${key}`\n let result: Promise<any> = jsSdkFnPromiseMap.get(key)\n\n if (!(result as any)) {\n result = new Promise<any>((resolve, reject) => {\n (async () => {\n try {\n // The idle promise must be run to prevent _fnPromiseMap from\n // storing the current promise function.\n await this.runIdlePromise()\n const fnResult: Promise<T> = fn()\n resolve(await fnResult)\n } catch (error) {\n reject(error)\n } finally {\n jsSdkFnPromiseMap.delete(key)\n }\n })()\n })\n jsSdkFnPromiseMap.set(key, result)\n }\n return result\n }\n /**\n * Run idle promise.\n * @return {Promise<void>}\n */\n private runIdlePromise(): Promise<void> {\n return Promise.resolve()\n }\n}\n","export function isMp() {\n if (typeof globalThis === 'undefined') {\n return false\n }\n\n const { wx } = globalThis as any\n if (typeof wx === 'undefined') {\n return false\n }\n if ((globalThis as any).Page === undefined) {\n return false\n }\n if (!wx.getDeviceInfo) {\n return false\n }\n if (!wx.getStorageSync) {\n return false\n }\n if (!wx.setStorageSync) {\n return false\n }\n if (!wx.connectSocket) {\n return false\n }\n if (!wx.request) {\n return false\n }\n\n try {\n if (!wx.getDeviceInfo()) {\n return false\n }\n\n if (wx.getDeviceInfo().platform === 'qq') {\n return false\n }\n } catch (e) {\n return false\n }\n\n return true\n}\n\nlet IS_IN_MP_WEBVIEW = false\nfunction ready() {\n IS_IN_MP_WEBVIEW = IS_IN_MP_WEBVIEW || (typeof window !== undefined && (window as any).__wxjs_environment === 'miniprogram')\n}\ntry {\n if (!isMp()) {\n IS_IN_MP_WEBVIEW = IS_IN_MP_WEBVIEW\n || !!navigator.userAgent.match(/miniprogram/i)\n || (window as any).__wxjs_environment === 'miniprogram'\n if ((window as any) && (window as any).WeixinJSBridge && (window as any).WeixinJSBridge.invoke) {\n ready()\n } else if (typeof document !== 'undefined') {\n document.addEventListener('WeixinJSBridgeReady', ready, false)\n }\n }\n} catch (e) {}\nexport function isInMpWebView() {\n return IS_IN_MP_WEBVIEW\n}\n","/**\n * 兼容小程序\n */\nclass MyURLSearchParams {\n params: {}\n\n constructor(init) {\n this.params = {}\n if (typeof init === 'string') {\n this.parse(init)\n } else if (init && typeof init === 'object') {\n // eslint-disable-next-line no-restricted-syntax\n for (const key in init) {\n if (Object.prototype.hasOwnProperty.call(init, key)) {\n this.append(key, init[key])\n }\n }\n }\n }\n\n // 解析查询字符串\n parse(str) {\n const params = str.split('&')\n params.forEach((param) => {\n const [key, value] = param.split('=').map(decodeURIComponent)\n this.append(key, value)\n })\n }\n\n // 添加参数\n append(key, value) {\n if (this.params[key]) {\n this.params[key] = this.params[key].concat([value])\n } else {\n this.params[key] = [value]\n }\n }\n\n // 获取参数值(单个值)\n get(key) {\n return this.params[key] ? this.params[key][0] : null\n }\n\n // 获取参数值(所有值)\n getAll(key) {\n return this.params[key] || []\n }\n\n // 删除参数\n delete(key) {\n delete this.params[key]\n }\n\n // 检查参数是否存在\n has(key) {\n return Object.prototype.hasOwnProperty.call(this.params, key)\n }\n\n // 设置参数值\n set(key, value) {\n this.params[key] = [value]\n }\n\n // 返回查询字符串\n toString() {\n const items = []\n // eslint-disable-next-line no-restricted-syntax\n for (const key in this.params) {\n if (Object.prototype.hasOwnProperty.call(this.params, key)) {\n this.params[key].forEach((value) => {\n items.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`)\n })\n }\n }\n return items.join('&')\n }\n}\n\nexport default MyURLSearchParams\n","/**\n * Generate uuidv4 string.\n * @return {string}\n */\nexport function uuidv4(): string {\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0\n const v = c === 'x' ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n}\n","import {\n SDKAdapterInterface,\n AbstractSDKRequest,\n IRequestOptions,\n ResponseObject,\n IUploadRequestOptions,\n IRequestConfig,\n IRequestMethod,\n IFetchOptions,\n} from '@cloudbase/adapter-interface'\nimport { isFormData, formatUrl, toQueryString } from '../../libs/util'\nimport { getProtocol } from '../../constants/common'\n\n/**\n * @class WebRequest\n */\nclass WebRequest extends AbstractSDKRequest {\n // 默认不限超时\n private readonly timeout: number\n // 超时提示文案\n private readonly timeoutMsg: string\n // 超时受限请求类型,默认所有请求均受限\n private readonly restrictedMethods: Array<IRequestMethod>\n constructor(config: IRequestConfig) {\n super()\n const { timeout, timeoutMsg, restrictedMethods } = config\n this.timeout = timeout || 0\n this.timeoutMsg = timeoutMsg || '请求超时'\n this.restrictedMethods = restrictedMethods || ['get', 'post', 'upload', 'download']\n }\n public get(options: IRequestOptions): Promise<ResponseObject> {\n return this.request(\n {\n ...options,\n method: 'get',\n },\n this.restrictedMethods.includes('get'),\n )\n }\n public post(options: IRequestOptions): Promise<ResponseObject> {\n return this.request(\n {\n ...options,\n method: 'post',\n },\n this.restrictedMethods.includes('post'),\n )\n }\n public put(options: IRequestOptions): Promise<ResponseObject> {\n return this.request({\n ...options,\n method: 'put',\n })\n }\n public upload(options: IUploadRequestOptions): Promise<ResponseObject> {\n const { data, file, name, method, headers = {} } = options\n const reqMethod = { post: 'post', put: 'put' }[method?.toLowerCase()] || 'put'\n // 上传方式为post时,需转换为FormData\n const formData = new FormData()\n if (reqMethod === 'post') {\n Object.keys(data).forEach((key) => {\n formData.append(key, data[key])\n })\n formData.append('key', name)\n formData.append('file', file)\n return this.request(\n {\n ...options,\n data: formData,\n method: reqMethod,\n },\n this.restrictedMethods.includes('upload'),\n )\n }\n return this.request(\n {\n ...options,\n method: 'put',\n headers,\n body: file,\n },\n this.restrictedMethods.includes('upload'),\n )\n }\n public async download(options: IRequestOptions): Promise<any> {\n try {\n const { data } = await this.get({\n ...options,\n headers: {}, // 下载资源请求不经过service,header清空\n responseType: 'blob',\n })\n const url = window.URL.createObjectURL(new Blob([data]))\n const fileName = decodeURIComponent(new URL(options.url).pathname.split('/').pop() || '')\n const link = document.createElement('a')\n\n link.href = url\n link.setAttribute('download', fileName)\n link.style.display = 'none'\n\n document.body.appendChild(link)\n link.click()\n // 回收内存\n window.URL.revokeObjectURL(url)\n document.body.removeChild(link)\n } catch (e) {}\n return new Promise((resolve) => {\n resolve({\n statusCode: 200,\n tempFilePath: options.url,\n })\n })\n }\n async fetch(options: IFetchOptions & { shouldThrowOnError?: boolean }): Promise<ResponseObject> {\n const abortController = new AbortController()\n const { url, enableAbort = false, stream = false, signal, timeout: _timeout, shouldThrowOnError = true } = options\n\n const timeout = _timeout ?? this.timeout\n\n if (signal) {\n if (signal.aborted) abortController.abort()\n signal.addEventListener('abort', () => abortController.abort())\n }\n\n let timer = null\n if (enableAbort && timeout) {\n timer = setTimeout(() => {\n console.warn(this.timeoutMsg)\n abortController.abort(new Error(this.timeoutMsg))\n }, timeout)\n }\n\n const res = await fetch(url, {\n ...options,\n signal: abortController.signal,\n })\n .then(async (response) => {\n clearTimeout(timer)\n if (shouldThrowOnError) {\n // 404 等等也会进 resolve,所以要再通过 ok 判断\n return response.ok ? response : Promise.reject(await response.json())\n }\n return response\n })\n .catch((x) => {\n clearTimeout(timer)\n if (shouldThrowOnError) {\n return Promise.reject(x)\n }\n })\n\n return {\n // eslint-disable-next-line no-nested-ternary\n data: stream ? res.body : res.headers.get('content-type')?.includes('application/json') ? res.json() : res.text(),\n statusCode: res.status,\n header: res.headers,\n }\n }\n /**\n * @param {IRequestOptions} options\n * @param {boolean} enableAbort 是否超时中断请求\n */\n protected request(options: IRequestOptions, enableAbort = false): Promise<ResponseObject> {\n const method = String(options.method).toLowerCase() || 'get'\n return new Promise((resolve) => {\n const { url, headers = {}, data, responseType, withCredentials, body, onUploadProgress } = options\n const realUrl = formatUrl(getProtocol(), url, method === 'get' ? data : {})\n const ajax = new XMLHttpRequest()\n ajax.open(method, realUrl)\n responseType && (ajax.responseType = responseType)\n Object.keys(headers).forEach((key) => {\n ajax.setRequestHeader(key, headers[key])\n })\n let timer\n if (onUploadProgress) {\n ajax.upload.addEventListener('progress', onUploadProgress)\n }\n ajax.onreadystatechange = () => {\n const result: ResponseObject = {}\n if (ajax.readyState === 4) {\n const headers = ajax.getAllResponseHeaders()\n const arr = headers.trim().split(/[\\r\\n]+/)\n // Create a map of header names to values\n const headerMap = {}\n arr.forEach((line) => {\n const parts = line.split(': ')\n const header = parts.shift().toLowerCase()\n const value = parts.join(': ')\n headerMap[header] = value\n })\n result.header = headerMap\n result.statusCode = ajax.status\n try {\n // 上传post请求返回数据格式为xml,此处容错\n result.data = responseType === 'blob' ? ajax.response : JSON.parse(ajax.responseText)\n } catch (e) {\n result.data = responseType === 'blob' ? ajax.response : ajax.responseText\n }\n clearTimeout(timer)\n resolve(result)\n }\n }\n if (enableAbort && this.timeout) {\n timer = setTimeout(() => {\n console.warn(this.timeoutMsg)\n ajax.abort()\n }, this.timeout)\n }\n // 处理 payload\n let payload\n if (isFormData(data)) {\n // FormData,不处理\n payload = data\n } else if (headers['content-type'] === 'application/x-www-form-urlencoded') {\n payload = toQueryString(data)\n } else if (body) {\n payload = body\n } else {\n // 其它情况\n payload = data ? JSON.stringify(data) : undefined\n }\n\n if (withCredentials) {\n ajax.withCredentials = true\n }\n ajax.send(payload)\n })\n }\n}\n\nfunction genAdapter() {\n const adapter: SDKAdapterInterface & { type?: 'default' | '' } = {\n type: 'default',\n root: window,\n reqClass: WebRequest,\n wsClass: WebSocket,\n localStorage,\n }\n return adapter\n}\n\nexport { genAdapter, WebRequest }\n","let sdkName = '@cloudbase/js-sdk'\nexport function setSdkName(name: string) {\n sdkName = name\n}\nexport function getSdkName() {\n return sdkName\n}\n\nlet PROTOCOL = 'https:'\n\nexport function setProtocol(protocol: 'http:' | 'https:') {\n PROTOCOL = protocol\n}\n\nexport function getProtocol() {\n return PROTOCOL\n}\n// 是否为开发模式\nexport const IS_DEBUG_MODE = typeof process === 'undefined' || typeof process.env === 'undefined' ? false : process.env.NODE_ENV === 'development'\n// 问答社区链接\nexport const COMMUNITY_SITE_URL = 'https://support.qq.com/products/148793'\n","export const ERRORS = {\n INVALID_PARAMS: 'INVALID_PARAMS',\n INVALID_SYNTAX: 'INVALID_SYNTAX',\n INVALID_OPERATION: 'INVALID_OPERATION',\n OPERATION_FAIL: 'OPERATION_FAIL',\n NETWORK_ERROR: 'NETWORK_ERROR',\n UNKOWN_ERROR: 'UNKOWN_ERROR',\n}\n","import { printGroupLog } from '../libs/util'\nimport { IS_DEBUG_MODE } from '../constants'\n\ninterface ICatchErrorsDecoratorOptions {\n mode?: 'sync' | 'async';\n customInfo?: {\n className?: string;\n methodName?: string;\n };\n title?: string;\n messages?: string[];\n}\n// firefox的stack格式与chrome不同\nlet isFirefox = false\nif (typeof navigator !== 'undefined' && navigator.userAgent) {\n isFirefox = navigator.userAgent.indexOf('Firefox') !== -1\n}\n/**\n * decorate在stack中一般都特定的规范\n */\nconst REG_STACK_DECORATE = isFirefox\n ? /(\\.js\\/)?__decorate(\\$\\d+)?<@.*\\d$/\n : /(\\/\\w+\\.js\\.)?__decorate(\\$\\d+)?\\s*\\(.*\\)$/\nconst REG_STACK_LINK = /https?:\\/\\/.+:\\d*\\/.*\\.js:\\d+:\\d+/\n/**\n * debug模式强化日志信息\n * @param options\n */\nexport function catchErrorsDecorator(options: ICatchErrorsDecoratorOptions) {\n const { mode = 'async', customInfo = {}, title, messages = [] } = options\n\n return function (\n target: any,\n methodName: string,\n descriptor: TypedPropertyDescriptor<Function>\n ) {\n // 生产环境禁用\n if (!IS_DEBUG_MODE) {\n return\n }\n const className = customInfo.className || target.constructor.name\n const fnName = customInfo.methodName || methodName\n const fn = descriptor.value\n\n // 被decorator装饰的源码link\n // 在descriptor.value外部此处创建的stack层次可触达源码\n // 而descriptor.value内部有可能由于stack太深无法触达\n const sourceLink = getSourceLink(new Error())\n\n if (mode === 'sync') {\n descriptor.value = function (...args: any[]) {\n // 此处的stack作用主要是为了获取被decorator装饰的源码class和method名称\n const innerErr: any = getRewritedError({\n err: new Error(),\n className,\n methodName: fnName,\n sourceLink,\n })\n try {\n return fn.apply(this, args)\n } catch (err) {\n let failErr = err\n const { message: errMsg, error, error_description: errorDescription } = err\n const logs: any = {\n title: title || `${className}.${fnName} failed`,\n content: [{\n type: 'error',\n body: err,\n }],\n }\n // 只特殊处理SDK业务逻辑抛出的错误-JSON string\n if (errMsg && /^\\{.*\\}$/.test(errMsg)) {\n const msg = JSON.parse(errMsg)\n logs.subtitle = errMsg\n if (msg.code) {\n if (innerErr) {\n innerErr.code = msg.code\n innerErr.msg = msg.msg\n } else {\n err.code = msg.code\n err.message = msg.msg\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n }\n\n // oauth 错误特殊处理\n if (error && errorDescription) {\n logs.subtitle = errorDescription\n if (innerErr) {\n innerErr.code = error\n innerErr.msg = errorDescription\n } else {\n err.code = error\n err.message = errorDescription\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n printGroupLog(logs)\n throw failErr\n }\n }\n } else {\n descriptor.value = async function (...args: any[]) {\n const innerErr: any = getRewritedError({\n err: new Error(),\n className,\n methodName: fnName,\n sourceLink,\n })\n\n try {\n return await fn.apply(this, args)\n } catch (err) {\n let failErr = err\n const { message: errMsg, error, error_description: errorDescription } = err\n const logs: any = {\n title: title || `${className}.${fnName} failed`,\n content: [{\n type: 'error',\n body: err,\n }],\n }\n // 只特殊处理SDK业务逻辑抛出的错误-JSON string\n if (errMsg && /^\\{.*\\}$/.test(errMsg)) {\n const msg = JSON.parse(errMsg)\n logs.subtitle = msg\n if (msg.code) {\n if (innerErr) {\n innerErr.code = msg.code\n innerErr.message = msg.msg\n } else {\n err.code = msg.code\n err.message = msg.msg\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n }\n\n // oauth 错误特殊处理\n if (error && errorDescription) {\n logs.subtitle = errorDescription\n if (innerErr) {\n innerErr.code = error\n innerErr.msg = errorDescription\n } else {\n err.code = error\n err.message = errorDescription\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n printGroupLog(logs)\n throw failErr\n }\n }\n }\n }\n}\n\n/**\n * 在原始堆栈中查找装饰器条目并返回源码链接link\n * @param err\n */\nfunction getSourceLink(err: Error) {\n let sourceLink = ''\n const outterErrStacks = err.stack.split('\\n')\n const indexOfDecorator = outterErrStacks.findIndex(str => REG_STACK_DECORATE.test(str))\n\n if (indexOfDecorator !== -1) {\n const match = REG_STACK_LINK.exec(outterErrStacks[indexOfDecorator + 1] || '')\n\n sourceLink = match ? match[0] : ''\n }\n return sourceLink\n}\n\n/**\n * 在原始堆栈中查找装饰器条目,剔除其后的无用堆栈,并将链接替换为源码link\n * @param options\n */\nfunction getRewritedError(options: {\n err: Error;\n className: string;\n methodName: string;\n sourceLink: string;\n}) {\n const { err, className, methodName, sourceLink } = options\n // 找不到源码link返回null,后续逻辑将打印原堆栈信息\n if (!sourceLink) {\n return null\n }\n\n const innerErrStack = err.stack.split('\\n')\n const REG_STACK_INNER_METHOD = isFirefox\n ? /^catchErrorsDecorator\\/<\\/descriptor.value@.*\\d$/\n : new RegExp(`${className}\\\\.descriptor.value\\\\s*\\\\[as\\\\s${methodName}\\\\]\\\\s*\\\\(.*\\\\)$`)\n const REG_STACK_INNER_METHOD_WITHOUT_LINK = isFirefox\n ? /^catchErrorsDecorator\\/<\\/descriptor.value/\n : new RegExp(`${className}\\\\.descriptor.value\\\\s*\\\\[as\\\\s${methodName}\\\\]`)\n const indexOfSource = innerErrStack.findIndex(str => REG_STACK_INNER_METHOD.test(str))\n let innerErr: Error\n if (indexOfSource !== -1) {\n // @ts-ignore\n const realErrStack = innerErrStack.filter((v, i) => i > indexOfSource)\n realErrStack.unshift(innerErrStack[indexOfSource]\n .replace(REG_STACK_INNER_METHOD_WITHOUT_LINK, `${className}.${methodName}`)\n .replace(REG_STACK_LINK, sourceLink))\n innerErr = new Error()\n innerErr.stack = `${isFirefox ? '@debugger' : 'Error'}\\n${realErrStack.join('\\n')}`\n }\n return innerErr\n}\n","export default class AbortController {\n listeners: Array<CallableFunction> = []\n signal = {\n aborted: false,\n addEventListener: (e: string, f: CallableFunction) => {\n if (e === 'abort') {\n this.listeners.push(f)\n }\n },\n }\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor() {}\n\n abort() {\n if (this.signal.aborted) return\n\n this.signal.aborted = true\n this.listeners.forEach(f => f())\n }\n}\n","import { StorageInterface, AbstractStorage, SDKAdapterInterface } from '@cloudbase/adapter-interface'\nimport { ICloudbaseCache, ICacheConfig } from '@cloudbase/types/cache'\nimport { KV, Persistence, ICloudbasePlatformInfo } from '@cloudbase/types'\nimport { printWarn } from './util'\nimport { ERRORS, getSdkName } from '../constants'\n\n/**\n * persitence=none时登录态保存在内存中\n */\nclass TcbCacheObject extends AbstractStorage {\n private readonly root: any\n constructor(root: any) {\n super()\n this.root = root\n if (!root.tcbCacheObject) {\n root.tcbCacheObject = {}\n }\n }\n public setItem(key: string, value: any) {\n this.root.tcbCacheObject[key] = value\n }\n public getItem(key: string) {\n return this.root.tcbCacheObject[key]\n }\n public removeItem(key: string) {\n delete this.root.tcbCacheObject[key]\n }\n public clear() {\n delete this.root.tcbCacheObject\n }\n}\n/**\n * 工厂函数\n */\nfunction createStorage(persistence: Persistence, adapter: SDKAdapterInterface): StorageInterface {\n switch (persistence) {\n case 'local':\n if (!adapter.localStorage) {\n printWarn(ERRORS.INVALID_PARAMS, 'localStorage is not supported on current platform')\n // 不支持localstorage的平台降级为none\n return new TcbCacheObject(adapter.root)\n }\n return adapter.localStorage\n case 'none':\n return new TcbCacheObject(adapter.root)\n default:\n if (!adapter.localStorage) {\n printWarn(ERRORS.INVALID_PARAMS, 'localStorage is not supported on current platform')\n // 不支持localstorage的平台降级为none\n return new TcbCacheObject(adapter.root)\n }\n return adapter.localStorage\n }\n}\n\nexport class CloudbaseCache implements ICloudbaseCache {\n public keys: KV<string> = {}\n\n private persistenceTag: Persistence\n private platformInfo: ICloudbasePlatformInfo\n private storage: StorageInterface\n\n constructor(config: ICacheConfig) {\n const { persistence, platformInfo = {}, keys = {} } = config\n this.platformInfo = platformInfo\n if (!this.storage) {\n this.persistenceTag = this.platformInfo.adapter.primaryStorage || persistence\n this.storage = createStorage(this.persistenceTag, this.platformInfo.adapter)\n this.keys = keys\n }\n }\n /**\n * @getter storage模式-同步/异步\n */\n get mode() {\n return this.storage.mode || 'sync'\n }\n get persistence(): Persistence {\n return this.persistenceTag\n }\n\n public setStore(key: string, value: any, version?: any) {\n if (this.mode === 'async') {\n printWarn(ERRORS.INVALID_OPERATION, 'current platform\\'s storage is asynchronous, please use setStoreAsync insteed')\n return\n }\n if (!this.storage) {\n return\n }\n\n try {\n const val = {\n version: version || 'localCachev1',\n content: value,\n }\n this.storage.setItem(key, JSON.stringify(val))\n } catch (e) {\n throw new Error(JSON.stringify({\n code: ERRORS.OPERATION_FAIL,\n msg: `[${getSdkName()}][${ERRORS.OPERATION_FAIL}]setStore failed`,\n info: e,\n }))\n }\n\n return\n }\n public async setStoreAsync(key: string, value: any, version?: any) {\n if (!this.storage) {\n return\n }\n\n try {\n const val = {\n version: version || 'localCachev1',\n content: value,\n }\n await this.storage.setItem(key, JSON.stringify(val))\n } catch (e) {\n return\n }\n\n return\n }\n public getStore(key: string, version?: string) {\n if (this.mode === 'async') {\n printWarn(ERRORS.INVALID_OPERATION, 'current platform\\'s storage is asynchronous, please use getStoreAsync insteed')\n return\n }\n try {\n // 测试用例使用\n if (typeof process !== 'undefined' && process.env?.tcb_token) {\n return process.env.tcb_token\n }\n\n if (!this.storage) {\n return ''\n }\n } catch (e) {\n return ''\n }\n\n version = version || 'localCachev1'\n\n const content = this.storage.getItem(key)\n if (!content) {\n return ''\n }\n\n if (content.indexOf(version) >= 0) {\n const d = JSON.parse(content)\n return d.content\n }\n return ''\n }\n public async getStoreAsync(key: string, version?: string) {\n try {\n // 测试用例使用\n if (typeof process !== 'undefined' && process.env?.tcb_token) {\n return process.env.tcb_token\n }\n\n if (!this.storage) {\n return ''\n }\n } catch (e) {\n return ''\n }\n\n version = version || 'localCachev1'\n\n const content = await this.storage.getItem(key)\n if (!content) {\n return ''\n }\n\n if (content.indexOf(version) >= 0) {\n const d = JSON.parse(content)\n return d.content\n }\n return ''\n }\n public removeStore(key: string) {\n if (this.mode === 'async') {\n printWarn(ERRORS.INVALID_OPERATION, 'current platform\\'s storage is asynchronous, please use removeStoreAsync insteed')\n return\n }\n this.storage.removeItem(key)\n }\n public async removeStoreAsync(key: string) {\n await this.storage.removeItem(key)\n }\n}\n","import { isString, isInstanceOf } from './util'\nimport { Listeners, ICloudbaseEventEmitter } from '@cloudbase/types/events'\n\n\n/**\n * @private\n * @function _addEventListener - 添加监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @param {Listeners} listeners - 已存响应函数集合\n */\nfunction customeAddEventListener(name: string, listener: Function, listeners: Listeners) {\n listeners[name] = listeners[name] || []\n listeners[name].push(listener)\n}\n/**\n * @private\n * @function _removeEventListener - 移除监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @param {Listeners} listeners - 已存响应函数集合\n */\nfunction customRemoveEventListener(name: string, listener: Function, listeners: Listeners) {\n if (listeners?.[name]) {\n const index = listeners[name].indexOf(listener)\n if (index !== -1) {\n listeners[name].splice(index, 1)\n }\n }\n}\ninterface IEvent {\n name: string;\n target: any;\n data: any;\n}\n/**\n * 自定义事件\n * @class CloudbaseEvent\n * @param {string} name - 类型\n * @param {any} data - 数据\n */\nexport class CloudbaseEvent implements IEvent {\n public readonly name: string\n public target: any\n public data: any\n\n constructor(name: string, data: any) {\n this.data = data || null\n this.name = name\n }\n}\n/**\n * 自定义错误事件\n * @class IErrorEvent\n * @extends CloudbaseEvent\n * @param {Error} error - 错误信息对象\n * @param {any} data - 数据\n */\nexport class IErrorEvent extends CloudbaseEvent {\n public readonly error: Error\n constructor(error: Error, data?: any) {\n super('error', { error, data })\n this.error = error\n }\n}\n\n/**\n * @class CloudbaseEventEmitter\n */\nexport class CloudbaseEventEmitter implements ICloudbaseEventEmitter {\n /**\n * @private\n * @readonly\n * @property {Listeners} listeners - 响应函数集合\n * @default `{}`\n */\n private readonly listeners: Listeners = {}\n\n /**\n * @public\n * @method on - 添加监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @return `this`\n */\n public on(name: string, listener: Function): this {\n customeAddEventListener(name, listener, this.listeners)\n return this\n }\n /**\n * @public\n * @method off - 移除监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @return `this`\n */\n public off(name: string, listener: Function): this {\n customRemoveEventListener(name, listener, this.listeners)\n return this\n }\n /**\n * @public\n * @method fire - 触发事件\n * @param {string|CloudbaseEvent} event - event\n * @return `this`\n */\n public fire(event: string | CloudbaseEvent, data?: any): this {\n // 打印错误信息\n if (isInstanceOf(event, IErrorEvent)) {\n console.error((event as IErrorEvent).error)\n return this\n }\n\n const ev: CloudbaseEvent = isString(event) ? new CloudbaseEvent(event as string, data || {}) : event as CloudbaseEvent\n\n const { name } = ev\n\n if (this.listens(name)) {\n ev.target = this\n\n const handlers = this.listeners[name] ? [...this.listeners[name]] : []\n for (const fn of handlers) {\n fn.call(this, ev)\n }\n }\n\n return this\n }\n\n /**\n * @private\n * @method listens - 判断是否监听了name事件\n * @param {string} name - event名称\n * @return `boolean`\n */\n private listens(name: string): boolean {\n return this.listeners[name] && this.listeners[name].length > 0\n }\n}\n\n\nconst eventEmitter = new CloudbaseEventEmitter()\n\nexport function addEventListener(event: string, callback: Function) {\n eventEmitter.on(event, callback)\n}\n\nexport function activateEvent(event: string, data: any = {}) {\n eventEmitter.fire(event, data)\n}\n\nexport function removeEventListener(event: string, callback: Function) {\n eventEmitter.off(event, callback)\n}\n","import { CloudbaseEventEmitter } from './events'\n\nexport const bus = new CloudbaseEventEmitter()\n\nexport const LANG_CHANGE_EVENT = 'lang_change'\n","import { KV } from '@cloudbase/types'\nimport { getSdkName } from '../constants'\n\nexport function isArray(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object Array]'\n}\nexport function isString(val: any): boolean {\n return typeof val === 'string'\n}\nexport function isUndefined(val: any): boolean {\n return typeof val === 'undefined'\n}\nexport function isPalinObject(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object Object]'\n}\nexport function isNull(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object Null]'\n}\nexport function isInstanceOf(instance: any, construct: any): boolean {\n return instance instanceof construct\n}\nexport function isFormData(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object FormData]'\n}\nexport function genSeqId(): string {\n return Math.random().toString(16)\n .slice(2)\n}\nexport function generateRequestId() {\n let d = new Date().getTime()\n let d2 = (Date?.now && Date.now() * 1000) || 0\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n let r = Math.random() * 16\n if (d > 0) {\n r = (d + r) % 16 | 0\n d = Math.floor(d / 16)\n } else {\n r = (d2 + r) % 16 | 0\n d2 = Math.floor(d2 / 16)\n }\n return (c === 'x' ? r : (r & 0x7) | 0x8).toString(16)\n })\n}\nexport function formatUrl(PROTOCOL: string, url: string, query: KV<any> = {}): string {\n const urlHasQuery = /\\?/.test(url)\n let queryString = ''\n Object.keys(query).forEach((key) => {\n if (queryString === '') {\n !urlHasQuery && (url += '?')\n } else {\n queryString += '&'\n }\n queryString += `${key}=${encodeURIComponent(query[key])}`\n })\n url += queryString\n if (/^http(s)?:\\/\\//.test(url)) {\n return url\n }\n return `${PROTOCOL}${url}`\n}\n\nexport function toQueryString(query: KV<any> = {}) {\n const queryString = []\n Object.keys(query).forEach((key) => {\n queryString.push(`${key}=${encodeURIComponent(query[key])}`)\n })\n return queryString.join('&')\n}\n\nexport function getQuery(name: string, url?: string) {\n if (typeof window === 'undefined') {\n return false\n }\n // 参数:变量名,url为空则表从当前页面的url中取\n const u = url || decodeURIComponent(window.location.search)\n const reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`)\n const r = u.substr(u.indexOf('?') + 1).match(reg)\n return r !== null && r !== undefined ? r[2] : ''\n}\n\nexport const getHash = function (name: string) {\n if (typeof window === 'undefined') {\n return ''\n }\n const matches = window.location.hash.match(new RegExp(`[#?&/]${name}=([^&#]*)`))\n return matches ? matches[1] : ''\n}\n\nexport function removeParam(key: string, sourceURL: string) {\n let rtn = sourceURL.split('?')[0]\n let param\n let params = []\n const queryString = sourceURL.indexOf('?') !== -1 ? sourceURL.split('?')[1] : ''\n if (queryString !== '') {\n params = queryString.split('&')\n for (let i = params.length - 1; i >= 0; i -= 1) {\n /* eslint-disable-next-line */\n param = params[i].split('=')[0]\n if (param === key) {\n params.splice(i, 1)\n }\n }\n rtn = `${rtn}?${params.join('&')}`\n }\n return rtn\n}\n\nexport function createPromiseCallback() {\n let cb: any = {}\n if (!Promise) {\n cb = () => {}\n cb.promise = {}\n\n const throwPromiseNotDefined = () => {\n throw new Error('Your Node runtime does support ES6 Promises. '\n + 'Set \"global.Promise\" to your preferred implementation of promises.',)\n }\n\n Object.defineProperty(cb.promise, 'then', { get: throwPromiseNotDefined })\n Object.defineProperty(cb.promise, 'catch', { get: throwPromiseNotDefined })\n return cb\n }\n\n const promise = new Promise((resolve, reject) => {\n cb = (err, data) => {\n if (err) return reject(err)\n return resolve(data)\n }\n })\n cb.promise = promise\n return cb\n}\n\nexport function execCallback(fn: Function | null | undefined, err: any, data = null) {\n if (fn && typeof fn === 'function') {\n return fn(err, data)\n }\n if (err) {\n throw err\n }\n return data\n}\n\nexport function printWarn(error: string, msg: string) {\n console.warn(`[${getSdkName()}][${error}]:${msg}`)\n}\n\nexport function printError(error: string, msg: string) {\n console.error({\n code: error,\n msg: `[${getSdkName()}][${error}]:${msg}`,\n })\n}\nexport function printInfo(error: string, msg: string) {\n console.log(`[${getSdkName()}][${error}]:${msg}`)\n}\nexport function throwError(error: string, msg: string) {\n throw new Error(JSON.stringify({\n code: error,\n msg: `[${getSdkName()}][${error}]:${msg}`,\n }),)\n}\n\ninterface IPrintGroupLogOptions {\n title: string\n subtitle: string | object\n content: {\n type: 'info' | 'warn' | 'error'\n body: string | Error\n }[]\n printTrace?: boolean\n collapsed?: boolean\n}\nexport function printGroupLog(options: IPrintGroupLogOptions) {\n const { title, subtitle = '', content = [], printTrace = false, collapsed = false } = options\n if (collapsed) {\n (console.groupCollapsed || console.error)(title, subtitle)\n } else {\n (console.group || console.error)(title, subtitle)\n }\n for (const tip of content) {\n const { type, body } = tip\n switch (type) {\n case 'info':\n console.log(body)\n break\n case 'warn':\n console.warn(body)\n break\n case 'error':\n console.error(body)\n break\n }\n }\n if (printTrace) {\n (console.trace || console.log)('stack trace:')\n }\n console.groupEnd?.()\n}\n\nexport const sleep = (ms = 0) => new Promise(r => setTimeout(r, ms))\n\nexport function transformPhone(phoneNumber: string) {\n return `+86${phoneNumber}`\n}\n\nexport const parseQueryString = (queryString) => {\n queryString = queryString.replace(/^\\?/, '')\n const params = {}\n const pairs = queryString.split('&')\n\n pairs.forEach((item) => {\n let [key, value] = item.split('=')\n key = decodeURIComponent(key)\n value = decodeURIComponent(value)\n if (key) {\n if (params[key]) {\n if (Array.isArray(params[key])) {\n params[key].push(value)\n } else {\n params[key] = [params[key], value]\n }\n } else {\n params[key] = value\n }\n }\n })\n\n return params\n}\n\n// 解析URL参数\nexport function parseCaptcha(url) {\n let queryObj: any = {}\n const matched = url.match(/^(data:.*?)(\\?[^#\\s]*)?$/)\n if (matched) {\n // eslint-disable-next-line prefer-destructuring\n url = matched[1]\n const search = matched[2]\n if (search) {\n queryObj = parseQueryString(search)\n }\n }\n const { token, ...restQueryObj } = queryObj\n if (/^data:/.test(url) && !token) {\n return {\n error: 'invalid_argument',\n error_description: `invalid captcha data: ${url}`,\n }\n }\n if (!token) {\n return {\n error: 'unimplemented',\n error_description: 'need to impl captcha data',\n }\n }\n // 解析url得到的参数\n return {\n state: restQueryObj.state,\n token, // 验证码token\n captchaData: url, // 验证码base64图片\n }\n}\n","/* eslint-disable */\n/* tslint:disable */\nlet JSEncrypt\nif (!globalThis.IS_MP_BUILD) {\n const navigator = typeof globalThis !== 'undefined' ? globalThis.navigator : window.globalThis\n var BI_RM = '0123456789abcdefghijklmnopqrstuvwxyz'\n function int2char(n) {\n return BI_RM.charAt(n)\n }\n //#region BIT_OPERATIONS\n // (public) this & a\n function op_and(x, y) {\n return x & y\n }\n // (public) this | a\n function op_or(x, y) {\n return x | y\n }\n // (public) this ^ a\n function op_xor(x, y) {\n return x ^ y\n }\n // (public) this & ~a\n function op_andnot(x, y) {\n return x & ~y\n }\n // return index of lowest 1-bit in x, x < 2^31\n function lbit(x) {\n if (x == 0) {\n return -1\n }\n var r = 0\n if ((x & 0xffff) == 0) {\n x >>= 16\n r += 16\n }\n if ((x & 0xff) == 0) {\n x >>= 8\n r += 8\n }\n if ((x & 0xf) == 0) {\n x >>= 4\n r += 4\n }\n if ((x & 3) == 0) {\n x >>= 2\n r += 2\n }\n if ((x & 1) == 0) {\n ++r\n }\n return r\n }\n // return number of 1 bits in x\n function cbit(x) {\n var r = 0\n while (x != 0) {\n x &= x - 1\n ++r\n }\n return r\n }\n //#endregion BIT_OPERATIONS\n\n var b64map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n var b64pad = '='\n function hex2b64(h) {\n var i\n var c\n var ret = ''\n for (i = 0; i + 3 <= h.length; i += 3) {\n c = parseInt(h.substring(i, i + 3), 16)\n ret += b64map.charAt(c >> 6) + b64map.charAt(c & 63)\n }\n if (i + 1 == h.length) {\n c = parseInt(h.substring(i, i + 1), 16)\n ret += b64map.charAt(c << 2)\n } else if (i + 2 == h.length) {\n c = parseInt(h.substring(i, i + 2), 16)\n ret += b64map.charAt(c >> 2) + b64map.charAt((c & 3) << 4)\n }\n while ((ret.length & 3) > 0) {\n ret += b64pad\n }\n return ret\n }\n // convert a base64 string to hex\n function b64tohex(s) {\n var ret = ''\n var i\n var k = 0 // b64 state, 0-3\n var slop = 0\n for (i = 0; i < s.length; ++i) {\n if (s.charAt(i) == b64pad) {\n break\n }\n var v = b64map.indexOf(s.charAt(i))\n if (v < 0) {\n continue\n }\n if (k == 0) {\n ret += int2char(v >> 2)\n slop = v & 3\n k = 1\n } else if (k == 1) {\n ret += int2char((slop << 2) | (v >> 4))\n slop = v & 0xf\n k = 2\n } else if (k == 2) {\n ret += int2char(slop)\n ret += int2char(v >> 2)\n slop = v & 3\n k = 3\n } else {\n ret += int2char((slop << 2) | (v >> 4))\n ret += int2char(v & 0xf)\n k = 0\n }\n }\n if (k == 1) {\n ret += int2char(slop << 2)\n }\n return ret\n }\n\n /*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n /* global Reflect, Promise */\n\n var extendStatics = function (d, b) {\n extendStatics =\n Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array &&\n function (d, b) {\n d.__proto__ = b\n }) ||\n function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]\n }\n return extendStatics(d, b)\n }\n\n // Hex JavaScript decoder\n // Copyright (c) 2008-2013 Lapo Luchini <lapo@lapo.it>\n // Permission to use, copy, modify, and/or distribute this software for any\n // purpose with or without fee is hereby granted, provided that the above\n // copyright notice and this permission notice appear in all copies.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n // ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n /*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\n var decoder\n var Hex = {\n decode: function (a) {\n var i\n if (decoder === undefined) {\n var hex = '0123456789ABCDEF'\n var ignore = ' \\f\\n\\r\\t\\u00A0\\u2028\\u2029'\n decoder = {}\n for (i = 0; i < 16; ++i) {\n decoder[hex.charAt(i)] = i\n }\n hex = hex.toLowerCase()\n for (i = 10; i < 16; ++i) {\n decoder[hex.charAt(i)] = i\n }\n for (i = 0; i < ignore.length; ++i) {\n decoder[ignore.charAt(i)] = -1\n }\n }\n var out = []\n var bits = 0\n var char_count = 0\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i)\n if (c == '=') {\n break\n }\n c = decoder[c]\n if (c == -1) {\n continue\n }\n if (c === undefined) {\n throw new Error('Illegal character at offset ' + i)\n }\n bits |= c\n if (++char_count >= 2) {\n out[out.length] = bits\n bits = 0\n char_count = 0\n } else {\n bits <<= 4\n }\n }\n if (char_count) {\n throw new Error('Hex encoding incomplete: 4 bits missing')\n }\n return out\n },\n }\n\n // Base64 JavaScript decoder\n // Copyright (c) 2008-2013 Lapo Luchini <lapo@lapo.it>\n // Permission to use, copy, modify, and/or distribute this software for any\n // purpose with or without fee is hereby granted, provided that the above\n // copyright notice and this permission notice appear in all copies.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n // ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n /*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\n var decoder$1\n var Base64 = {\n decode: function (a) {\n var i\n if (decoder$1 === undefined) {\n var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n var ignore = '= \\f\\n\\r\\t\\u00A0\\u2028\\u2029'\n decoder$1 = Object.create(null)\n for (i = 0; i < 64; ++i) {\n decoder$1[b64.charAt(i)] = i\n }\n for (i = 0; i < ignore.length; ++i) {\n decoder$1[ignore.charAt(i)] = -1\n }\n }\n var out = []\n var bits = 0\n var char_count = 0\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i)\n if (c == '=') {\n break\n }\n c = decoder$1[c]\n if (c == -1) {\n continue\n }\n if (c === undefined) {\n throw new Error('Illegal character at offset ' + i)\n }\n bits |= c\n if (++char_count >= 4) {\n out[out.length] = bits >> 16\n out[out.length] = (bits >> 8) & 0xff\n out[out.length] = bits & 0xff\n bits = 0\n char_count = 0\n } else {\n bits <<= 6\n }\n }\n switch (char_count) {\n case 1:\n throw new Error('Base64 encoding incomplete: at least 2 bits missing')\n case 2:\n out[out.length] = bits >> 10\n break\n case 3:\n out[out.length] = bits >> 16\n out[out.length] = (bits >> 8) & 0xff\n break\n }\n return out\n },\n re: /-----BEGIN [^-]+-----([A-Za-z0-9+\\/=\\s]+)-----END [^-]+-----|begin-base64[^\\n]+\\n([A-Za-z0-9+\\/=\\s]+)====/,\n unarmor: function (a) {\n var m = Base64.re.exec(a)\n if (m) {\n if (m[1]) {\n a = m[1]\n } else if (m[2]) {\n a = m[2]\n } else {\n throw new Error('RegExp out of sync')\n }\n }\n return Base64.decode(a)\n },\n }\n\n // Big integer base-10 printing library\n // Copyright (c) 2014 Lapo Luchini <lapo@lapo.it>\n // Permission to use, copy, modify, and/or distribute this software for any\n // purpose with or without fee is hereby granted, provided that the above\n // copyright notice and this permission notice appear in all copies.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n // ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n /*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\n var max = 10000000000000 // biggest integer that can still fit 2^53 when multiplied by 256\n class Int10 {\n constructor(value) {\n this.buf = [+value || 0]\n }\n mulAdd(m, c) {\n // assert(m <= 256)\n var b = this.buf\n var l = b.length\n var i\n var t\n for (i = 0; i < l; ++i) {\n t = b[i] * m + c\n if (t < max) {\n c = 0\n } else {\n c = 0 | (t / max)\n t -= c * max\n }\n b[i] = t\n }\n if (c > 0) {\n b[i] = c\n }\n }\n sub(c) {\n // assert(m <= 256)\n var b = this.buf\n var l = b.length\n var i\n var t\n for (i = 0; i < l; ++i) {\n t = b[i] - c\n if (t < 0) {\n t += max\n c = 1\n } else {\n c = 0\n }\n b[i] = t\n }\n while (b[b.length - 1] === 0) {\n b.pop()\n }\n }\n toString(base) {\n if ((base || 10) != 10) {\n throw new Error('only base 10 is supported')\n }\n var b = this.buf\n var s = b[b.length - 1].toString()\n for (var i = b.length - 2; i >= 0; --i) {\n s += (max + b[i]).toString().substring(1)\n }\n return s\n }\n valueOf() {\n var b = this.buf\n var v = 0\n for (var i = b.length - 1; i >= 0; --i) {\n v = v * max + b[i]\n }\n return v\n }\n simplify() {\n var b = this.buf\n return b.length == 1 ? b[0] : this\n }\n }\n\n // ASN.1 JavaScript decoder\n var ellipsis = '\\u2026'\n var reTimeS =\n /^(\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/\n var reTimeL =\n /^(\\d\\d\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/\n function stringCut(str, len) {\n if (str.length > len) {\n str = str.substring(0, len) + ellipsis\n }\n return str\n }\n class Stream {\n constructor(enc, pos) {\n this.hexDigits = '0123456789ABCDEF'\n if (enc instanceof Stream) {\n this.enc = enc.enc\n this.pos = enc.pos\n } else {\n // enc should be an array or a binary string\n this.enc = enc\n this.pos = pos\n }\n }\n get(pos) {\n if (pos === undefined) {\n pos = this.pos++\n }\n if (pos >= this.enc.length) {\n throw new Error('Requesting byte offset ' + pos + ' on a stream of length ' + this.enc.length)\n }\n return 'string' === typeof this.enc ? this.enc.charCodeAt(pos) : this.enc[pos]\n }\n hexByte(b) {\n return this.hexDigits.charAt((b >> 4) & 0xf) + this.hexDigits.charAt(b & 0xf)\n }\n hexDump(start, end, raw) {\n var s = ''\n for (var i = start; i < end; ++i) {\n s += this.hexByte(this.get(i))\n if (raw !== true) {\n switch (i & 0xf) {\n case 0x7:\n s += ' '\n break\n case 0xf:\n s += '\\n'\n break\n default:\n s += ' '\n }\n }\n }\n return s\n }\n isASCII(start, end) {\n for (var i = start; i < end; ++i) {\n var c = this.get(i)\n if (c < 32 || c > 176) {\n return false\n }\n }\n return true\n }\n parseStringISO(start, end) {\n var s = ''\n for (var i = start; i < end; ++i) {\n s += String.fromCharCode(this.get(i))\n }\n return s\n }\n parseStringUTF(start, end) {\n var s = ''\n for (var i = start; i < end; ) {\n var c = this.get(i++)\n if (c < 128) {\n s += String.fromCharCode(c)\n } else if (c > 191 && c < 224) {\n s += String.fromCharCode(((c & 0x1f) << 6) | (this.get(i++) & 0x3f))\n } else {\n s += String.fromCharCode(((c & 0x0f) << 12) | ((this.get(i++) & 0x3f) << 6) | (this.get(i++) & 0x3f))\n }\n }\n return s\n }\n parseStringBMP(start, end) {\n var str = ''\n var hi\n var lo\n for (var i = start; i < end; ) {\n hi = this.get(i++)\n lo = this.get(i++)\n str += String.fromCharCode((hi << 8) | lo)\n }\n return str\n }\n parseTime(start, end, shortYear) {\n var s = this.parseStringISO(start, end)\n var m = (shortYear ? reTimeS : reTimeL).exec(s)\n if (!m) {\n return 'Unrecognized time: ' + s\n }\n if (shortYear) {\n // to avoid querying the timer, use the fixed range [1970, 2069]\n // it will conform with ITU X.400 [-10, +40] sliding window until 2030\n m[1] = +m[1]\n m[1] += +m[1] < 70 ? 2000 : 1900\n }\n s = m[1] + '-' + m[2] + '-' + m[3] + ' ' + m[4]\n if (m[5]) {\n s += ':' + m[5]\n if (m[6]) {\n s += ':' + m[6]\n if (m[7]) {\n s += '.' + m[7]\n }\n }\n }\n if (m[8]) {\n s += ' UTC'\n if (m[8] != 'Z') {\n s += m[8]\n if (m[9]) {\n s += ':' + m[9]\n }\n }\n }\n return s\n }\n parseInteger(start, end) {\n var v = this.get(start)\n var neg = v > 127\n var pad = neg ? 255 : 0\n var len\n var s = ''\n // skip unuseful bits (not allowed in DER)\n while (v == pad && ++start < end) {\n v = this.get(start)\n }\n len = end - start\n if (len === 0) {\n return neg ? -1 : 0\n }\n // show bit length of huge integers\n if (len > 4) {\n s = v\n len <<= 3\n while (((+s ^ pad) & 0x80) == 0) {\n s = +s << 1\n --len\n }\n s = '(' + len + ' bit)\\n'\n }\n // decode the integer\n if (neg) {\n v = v - 256\n }\n var n = new Int10(v)\n for (var i = start + 1; i < end; ++i) {\n n.mulAdd(256, this.get(i))\n }\n return s + n.toString()\n }\n parseBitString(start, end, maxLength) {\n var unusedBit = this.get(start)\n var lenBit = ((end - start - 1) << 3) - unusedBit\n var intro = '(' + lenBit + ' bit)\\n'\n var s = ''\n for (var i = start + 1; i < end; ++i) {\n var b = this.get(i)\n var skip = i == end - 1 ? unusedBit : 0\n for (var j = 7; j >= skip; --j) {\n s += (b >> j) & 1 ? '1' : '0'\n }\n if (s.length > maxLength) {\n return intro + stringCut(s, maxLength)\n }\n }\n return intro + s\n }\n parseOctetString(start, end, maxLength) {\n if (this.isASCII(start, end)) {\n return stringCut(this.parseStringISO(start, end), maxLength)\n }\n var len = end - start\n var s = '(' + len + ' byte)\\n'\n maxLength /= 2 // we work in bytes\n if (len > maxLength) {\n end = start + maxLength\n }\n for (var i = start; i < end; ++i) {\n s += this.hexByte(this.get(i))\n }\n if (len > maxLength) {\n s += ellipsis\n }\n return s\n }\n parseOID(start, end, maxLength) {\n var s = ''\n var n = new Int10()\n var bits = 0\n for (var i = start; i < end; ++i) {\n var v = this.get(i)\n n.mulAdd(128, v & 0x7f)\n bits += 7\n if (!(v & 0x80)) {\n // finished\n if (s === '') {\n n = n.simplify()\n if (n instanceof Int10) {\n n.sub(80)\n s = '2.' + n.toString()\n } else {\n var m = n < 80 ? (n < 40 ? 0 : 1) : 2\n s = m + '.' + (n - m * 40)\n }\n } else {\n s += '.' + n.toString()\n }\n if (s.length > maxLength) {\n return stringCut(s, maxLength)\n }\n n = new Int10()\n bits = 0\n }\n }\n if (bits > 0) {\n s += '.incomplete'\n }\n return s\n }\n }\n class ASN1 {\n constructor(stream, header, length, tag, sub) {\n if (!(tag instanceof ASN1Tag)) {\n throw new Error('Invalid tag value.')\n }\n this.stream = stream\n this.header = header\n this.length = length\n this.tag = tag\n this.sub = sub\n }\n typeName() {\n switch (this.tag.tagClass) {\n case 0: // universal\n switch (this.tag.tagNumber) {\n case 0x00:\n return 'EOC'\n case 0x01:\n return 'BOOLEAN'\n case 0x02:\n return 'INTEGER'\n case 0x03:\n return 'BIT_STRING'\n case 0x04:\n return 'OCTET_STRING'\n case 0x05:\n return 'NULL'\n case 0x06:\n return 'OBJECT_IDENTIFIER'\n case 0x07:\n return 'ObjectDescriptor'\n case 0x08:\n return 'EXTERNAL'\n case 0x09:\n return 'REAL'\n case 0x0a:\n return 'ENUMERATED'\n case 0x0b:\n return 'EMBEDDED_PDV'\n case 0x0c:\n return 'UTF8String'\n case 0x10:\n return 'SEQUENCE'\n case 0x11:\n return 'SET'\n case 0x12:\n return 'NumericString'\n case 0x13:\n return 'PrintableString' // ASCII subset\n case 0x14:\n return 'TeletexString' // aka T61String\n case 0x15:\n return 'VideotexString'\n case 0x16:\n return 'IA5String' // ASCII\n case 0x17:\n return 'UTCTime'\n case 0x18:\n return 'GeneralizedTime'\n case 0x19:\n return 'GraphicString'\n case 0x1a:\n return 'VisibleString' // ASCII subset\n case 0x1b:\n return 'GeneralString'\n case 0x1c:\n return 'UniversalString'\n case 0x1e:\n return 'BMPString'\n }\n return 'Universal_' + this.tag.tagNumber.toString()\n case 1:\n return 'Application_' + this.tag.tagNumber.toString()\n case 2:\n return '[' + this.tag.tagNumber.toString() + ']' // Context\n case 3:\n return 'Private_' + this.tag.tagNumber.toString()\n }\n }\n content(maxLength) {\n if (this.tag === undefined) {\n return null\n }\n if (maxLength === undefined) {\n maxLength = Infinity\n }\n var content = this.posContent()\n var len = Math.abs(this.length)\n if (!this.tag.isUniversal()) {\n if (this.sub !== null) {\n return '(' + this.sub.length + ' elem)'\n }\n return this.stream.parseOctetString(content, content + len, maxLength)\n }\n switch (this.tag.tagNumber) {\n case 0x01: // BOOLEAN\n return this.stream.get(content) === 0 ? 'false' : 'true'\n case 0x02: // INTEGER\n return this.stream.parseInteger(content, content + len)\n case 0x03: // BIT_STRING\n return this.sub\n ? '(' + this.sub.length + ' elem)'\n : this.stream.parseBitString(content, content + len, maxLength)\n case 0x04: // OCTET_STRING\n return this.sub\n ? '(' + this.sub.length + ' elem)'\n : this.stream.parseOctetString(content, content + len, maxLength)\n // case 0x05: // NULL\n case 0x06: // OBJECT_IDENTIFIER\n return this.stream.parseOID(content, content + len, maxLength)\n // case 0x07: // ObjectDescriptor\n // case 0x08: // EXTERNAL\n // case 0x09: // REAL\n // case 0x0A: // ENUMERATED\n // case 0x0B: // EMBEDDED_PDV\n case 0x10: // SEQUENCE\n case 0x11: // SET\n if (this.sub !== null) {\n return '(' + this.sub.length + ' elem)'\n } else {\n return '(no elem)'\n }\n case 0x0c: // UTF8String\n return stringCut(this.stream.parseStringUTF(content, content + len), maxLength)\n case 0x12: // NumericString\n case 0x13: // PrintableString\n case 0x14: // TeletexString\n case 0x15: // VideotexString\n case 0x16: // IA5String\n // case 0x19: // GraphicString\n case 0x1a: // VisibleString\n // case 0x1B: // GeneralString\n // case 0x1C: // UniversalString\n return stringCut(this.stream.parseStringISO(content, content + len), maxLength)\n case 0x1e: // BMPString\n return stringCut(this.stream.parseStringBMP(content, content + len), maxLength)\n case 0x17: // UTCTime\n case 0x18: // GeneralizedTime\n return this.stream.parseTime(content, content + len, this.tag.tagNumber == 0x17)\n }\n return null\n }\n toString() {\n return (\n this.typeName() +\n '@' +\n this.stream.pos +\n '[header:' +\n this.header +\n ',length:' +\n this.length +\n ',sub:' +\n (this.sub === null ? 'null' : this.sub.length) +\n ']'\n )\n }\n toPrettyString(indent) {\n if (indent === undefined) {\n indent = ''\n }\n var s = indent + this.typeName() + ' @' + this.stream.pos\n if (this.length >= 0) {\n s += '+'\n }\n s += this.length\n if (this.tag.tagConstructed) {\n s += ' (constructed)'\n } else if (\n this.tag.isUniversal() &&\n (this.tag.tagNumber == 0x03 || this.tag.tagNumber == 0x04) &&\n this.sub !== null\n ) {\n s += ' (encapsulates)'\n }\n s += '\\n'\n if (this.sub !== null) {\n indent += ' '\n for (var i = 0, max = this.sub.length; i < max; ++i) {\n s += this.sub[i].toPrettyString(indent)\n }\n }\n return s\n }\n posStart() {\n return this.stream.pos\n }\n posContent() {\n return this.stream.pos + this.header\n }\n posEnd() {\n return this.stream.pos + this.header + Math.abs(this.length)\n }\n toHexString() {\n return this.stream.hexDump(this.posStart(), this.posEnd(), true)\n }\n static decodeLength(stream) {\n var buf = stream.get()\n var len = buf & 0x7f\n if (len == buf) {\n return len\n }\n // no reason to use Int10, as it would be a huge buffer anyways\n if (len > 6) {\n throw new Error('Length over 48 bits not supported at position ' + (stream.pos - 1))\n }\n if (len === 0) {\n return null\n } // undefined\n buf = 0\n for (var i = 0; i < len; ++i) {\n buf = buf * 256 + stream.get()\n }\n return buf\n }\n /**\n * Retrieve the hexadecimal value (as a string) of the current ASN.1 element\n * @returns {string}\n * @public\n */\n getHexStringValue() {\n var hexString = this.toHexString()\n var offset = this.header * 2\n var length = this.length * 2\n return hexString.substr(offset, length)\n }\n static decode(str) {\n var stream\n if (!(str instanceof Stream)) {\n stream = new Stream(str, 0)\n } else {\n stream = str\n }\n var streamStart = new Stream(stream)\n var tag = new ASN1Tag(stream)\n var len = ASN1.decodeLength(stream)\n var start = stream.pos\n var header = start - streamStart.pos\n var sub = null\n var getSub = function () {\n var ret = []\n if (len !== null) {\n // definite length\n var end = start + len\n while (stream.pos < end) {\n ret[ret.length] = ASN1.decode(stream)\n }\n if (stream.pos != end) {\n throw new Error('Content size is not correct for container starting at offset ' + start)\n }\n } else {\n // undefined length\n try {\n for (;;) {\n var s = ASN1.decode(stream)\n if (s.tag.isEOC()) {\n break\n }\n ret[ret.length] = s\n }\n len = start - stream.pos // undefined lengths are represented as negative values\n } catch (e) {\n throw new Error('Exception while decoding undefined length content: ' + e)\n }\n }\n return ret\n }\n if (tag.tagConstructed) {\n // must have valid content\n sub = getSub()\n } else if (tag.isUniversal() && (tag.tagNumber == 0x03 || tag.tagNumber == 0x04)) {\n // sometimes BitString and OctetString are used to encapsulate ASN.1\n try {\n if (tag.tagNumber == 0x03) {\n if (stream.get() != 0) {\n throw new Error('BIT STRINGs with unused bits cannot encapsulate.')\n }\n }\n sub = getSub()\n for (var i = 0; i < sub.length; ++i) {\n if (sub[i].tag.isEOC()) {\n throw new Error('EOC is not supposed to be actual content.')\n }\n }\n } catch (e) {\n // but silently ignore when they don't\n sub = null\n }\n }\n if (sub === null) {\n if (len === null) {\n throw new Error(\"We can't skip over an invalid tag with undefined length at offset \" + start)\n }\n stream.pos = start + Math.abs(len)\n }\n return new ASN1(streamStart, header, len, tag, sub)\n }\n }\n class ASN1Tag {\n constructor(stream) {\n var buf = stream.get()\n this.tagClass = buf >> 6\n this.tagConstructed = (buf & 0x20) !== 0\n this.tagNumber = buf & 0x1f\n if (this.tagNumber == 0x1f) {\n // long tag\n var n = new Int10()\n do {\n buf = stream.get()\n n.mulAdd(128, buf & 0x7f)\n } while (buf & 0x80)\n this.tagNumber = n.simplify()\n }\n }\n isUniversal() {\n return this.tagClass === 0x00\n }\n isEOC() {\n return this.tagClass === 0x00 && this.tagNumber === 0x00\n }\n }\n\n // Copyright (c) 2005 Tom Wu\n // Bits per digit\n var dbits\n // JavaScript engine analysis\n var canary = 0xdeadbeefcafe\n var j_lm = (canary & 0xffffff) == 0xefcafe\n //#region\n var lowprimes = [\n 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109,\n 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239,\n 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379,\n 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521,\n 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661,\n 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827,\n 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991,\n 997,\n ]\n var lplim = (1 << 26) / lowprimes[lowprimes.length - 1]\n //#endregion\n // (public) Constructor\n class BigInteger {\n constructor(a, b, c) {\n if (a != null) {\n if ('number' == typeof a) {\n this.fromNumber(a, b, c)\n } else if (b == null && 'string' != typeof a) {\n this.fromString(a, 256)\n } else {\n this.fromString(a, b)\n }\n }\n }\n //#region PUBLIC\n // BigInteger.prototype.toString = bnToString;\n // (public) return string representation in given radix\n toString(b) {\n if (this.s < 0) {\n return '-' + this.negate().toString(b)\n }\n var k\n if (b == 16) {\n k = 4\n } else if (b == 8) {\n k = 3\n } else if (b == 2) {\n k = 1\n } else if (b == 32) {\n k = 5\n } else if (b == 4) {\n k = 2\n } else {\n return this.toRadix(b)\n }\n var km = (1 << k) - 1\n var d\n var m = false\n var r = ''\n var i = this.t\n var p = this.DB - ((i * this.DB) % k)\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) > 0) {\n m = true\n r = int2char(d)\n }\n while (i >= 0) {\n if (p < k) {\n d = (this[i] & ((1 << p) - 1)) << (k - p)\n d |= this[--i] >> (p += this.DB - k)\n } else {\n d = (this[i] >> (p -= k)) & km\n if (p <= 0) {\n p += this.DB\n --i\n }\n }\n if (d > 0) {\n m = true\n }\n if (m) {\n r += int2char(d)\n }\n }\n }\n return m ? r : '0'\n }\n // negate = bnNegate;\n // (public) -this\n negate() {\n var r = nbi()\n BigInteger.ZERO.subTo(this, r)\n return r\n }\n // abs = bnAbs;\n // (public) |this|\n abs() {\n return this.s < 0 ? this.negate() : this\n }\n // compareTo = bnCompareTo;\n // (public) return + if this > a, - if this < a, 0 if equal\n compareTo(a) {\n var r = this.s - a.s\n if (r != 0) {\n return r\n }\n var i = this.t\n r = i - a.t\n if (r != 0) {\n return this.s < 0 ? -r : r\n }\n while (--i >= 0) {\n if ((r = this[i] - a[i]) != 0) {\n return r\n }\n }\n return 0\n }\n // bitLength = bnBitLength;\n // (public) return the number of bits in \"this\"\n bitLength() {\n if (this.t <= 0) {\n return 0\n }\n return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM))\n }\n // mod = bnMod;\n // (public) this mod a\n mod(a) {\n var r = nbi()\n this.abs().divRemTo(a, null, r)\n if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {\n a.subTo(r, r)\n }\n return r\n }\n // modPowInt = bnModPowInt;\n // (public) this^e % m, 0 <= e < 2^32\n modPowInt(e, m) {\n var z\n if (e < 256 || m.isEven()) {\n z = new Classic(m)\n } else {\n z = new Montgomery(m)\n }\n return this.exp(e, z)\n }\n // clone = bnClone;\n // (public)\n clone() {\n var r = nbi()\n this.copyTo(r)\n return r\n }\n // intValue = bnIntValue;\n // (public) return value as integer\n intValue() {\n if (this.s < 0) {\n if (this.t == 1) {\n return this[0] - this.DV\n } else if (this.t == 0) {\n return -1\n }\n } else if (this.t == 1) {\n return this[0]\n } else if (this.t == 0) {\n return 0\n }\n // assumes 16 < DB < 32\n return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]\n }\n // byteValue = bnByteValue;\n // (public) return value as byte\n byteValue() {\n return this.t == 0 ? this.s : (this[0] << 24) >> 24\n }\n // shortValue = bnShortValue;\n // (public) return value as short (assumes DB>=16)\n shortValue() {\n return this.t == 0 ? this.s : (this[0] << 16) >> 16\n }\n // signum = bnSigNum;\n // (public) 0 if this == 0, 1 if this > 0\n signum() {\n if (this.s < 0) {\n return -1\n } else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) {\n return 0\n } else {\n return 1\n }\n }\n // toByteArray = bnToByteArray;\n // (public) convert to bigendian byte array\n toByteArray() {\n var i = this.t\n var r = []\n r[0] = this.s\n var p = this.DB - ((i * this.DB) % 8)\n var d\n var k = 0\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) != (this.s & this.DM) >> p) {\n r[k++] = d | (this.s << (this.DB - p))\n }\n while (i >= 0) {\n if (p < 8) {\n d = (this[i] & ((1 << p) - 1)) << (8 - p)\n d |= this[--i] >> (p += this.DB - 8)\n } else {\n d = (this[i] >> (p -= 8)) & 0xff\n if (p <= 0) {\n p += this.DB\n --i\n }\n }\n if ((d & 0x80) != 0) {\n d |= -256\n }\n if (k == 0 && (this.s & 0x80) != (d & 0x80)) {\n ++k\n }\n if (k > 0 || d != this.s) {\n r[k++] = d\n }\n }\n }\n return r\n }\n // equals = bnEquals;\n equals(a) {\n return this.compareTo(a) == 0\n }\n // min = bnMin;\n min(a) {\n return this.compareTo(a) < 0 ? this : a\n }\n // max = bnMax;\n max(a) {\n return this.compareTo(a) > 0 ? this : a\n }\n // and = bnAnd;\n and(a) {\n var r = nbi()\n this.bitwiseTo(a, op_and, r)\n return r\n }\n // or = bnOr;\n or(a) {\n var r = nbi()\n this.bitwiseTo(a, op_or, r)\n return r\n }\n // xor = bnXor;\n xor(a) {\n var r = nbi()\n this.bitwiseTo(a, op_xor, r)\n return r\n }\n // andNot = bnAndNot;\n andNot(a) {\n var r = nbi()\n this.bitwiseTo(a, op_andnot, r)\n return r\n }\n // not = bnNot;\n // (public) ~this\n not() {\n var r = nbi()\n for (var i = 0; i < this.t; ++i) {\n r[i] = this.DM & ~this[i]\n }\n r.t = this.t\n r.s = ~this.s\n return r\n }\n // shiftLeft = bnShiftLeft;\n // (public) this << n\n shiftLeft(n) {\n var r = nbi()\n if (n < 0) {\n this.rShiftTo(-n, r)\n } else {\n this.lShiftTo(n, r)\n }\n return r\n }\n // shiftRight = bnShiftRight;\n // (public) this >> n\n shiftRight(n) {\n var r = nbi()\n if (n < 0) {\n this.lShiftTo(-n, r)\n } else {\n this.rShiftTo(n, r)\n }\n return r\n }\n // getLowestSetBit = bnGetLowestSetBit;\n // (public) returns index of lowest 1-bit (or -1 if none)\n getLowestSetBit() {\n for (var i = 0; i < this.t; ++i) {\n if (this[i] != 0) {\n return i * this.DB + lbit(this[i])\n }\n }\n if (this.s < 0) {\n return this.t * this.DB\n }\n return -1\n }\n // bitCount = bnBitCount;\n // (public) return number of set bits\n bitCount() {\n var r = 0\n var x = this.s & this.DM\n for (var i = 0; i < this.t; ++i) {\n r += cbit(this[i] ^ x)\n }\n return r\n }\n // testBit = bnTestBit;\n // (public) true iff nth bit is set\n testBit(n) {\n var j = Math.floor(n / this.DB)\n if (j >= this.t) {\n return this.s != 0\n }\n return (this[j] & (1 << n % this.DB)) != 0\n }\n // setBit = bnSetBit;\n // (public) this | (1<<n)\n setBit(n) {\n return this.changeBit(n, op_or)\n }\n // clearBit = bnClearBit;\n // (public) this & ~(1<<n)\n clearBit(n) {\n return this.changeBit(n, op_andnot)\n }\n // flipBit = bnFlipBit;\n // (public) this ^ (1<<n)\n flipBit(n) {\n return this.changeBit(n, op_xor)\n }\n // add = bnAdd;\n // (public) this + a\n add(a) {\n var r = nbi()\n this.addTo(a, r)\n return r\n }\n // subtract = bnSubtract;\n // (public) this - a\n subtract(a) {\n var r = nbi()\n this.subTo(a, r)\n return r\n }\n // multiply = bnMultiply;\n // (public) this * a\n multiply(a) {\n var r = nbi()\n this.multiplyTo(a, r)\n return r\n }\n // divide = bnDivide;\n // (public) this / a\n divide(a) {\n var r = nbi()\n this.divRemTo(a, r, null)\n return r\n }\n // remainder = bnRemainder;\n // (public) this % a\n remainder(a) {\n var r = nbi()\n this.divRemTo(a, null, r)\n return r\n }\n // divideAndRemainder = bnDivideAndRemainder;\n // (public) [this/a,this%a]\n divideAndRemainder(a) {\n var q = nbi()\n var r = nbi()\n this.divRemTo(a, q, r)\n return [q, r]\n }\n // modPow = bnModPow;\n // (public) this^e % m (HAC 14.85)\n modPow(e, m) {\n var i = e.bitLength()\n var k\n var r = nbv(1)\n var z\n if (i <= 0) {\n return r\n } else if (i < 18) {\n k = 1\n } else if (i < 48) {\n k = 3\n } else if (i < 144) {\n k = 4\n } else if (i < 768) {\n k = 5\n } else {\n k = 6\n }\n if (i < 8) {\n z = new Classic(m)\n } else if (m.isEven()) {\n z = new Barrett(m)\n } else {\n z = new Montgomery(m)\n }\n // precomputation\n var g = []\n var n = 3\n var k1 = k - 1\n var km = (1 << k) - 1\n g[1] = z.convert(this)\n if (k > 1) {\n var g2 = nbi()\n z.sqrTo(g[1], g2)\n while (n <= km) {\n g[n] = nbi()\n z.mulTo(g2, g[n - 2], g[n])\n n += 2\n }\n }\n var j = e.t - 1\n var w\n var is1 = true\n var r2 = nbi()\n var t\n i = nbits(e[j]) - 1\n while (j >= 0) {\n if (i >= k1) {\n w = (e[j] >> (i - k1)) & km\n } else {\n w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i)\n if (j > 0) {\n w |= e[j - 1] >> (this.DB + i - k1)\n }\n }\n n = k\n while ((w & 1) == 0) {\n w >>= 1\n --n\n }\n if ((i -= n) < 0) {\n i += this.DB\n --j\n }\n if (is1) {\n // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r)\n is1 = false\n } else {\n while (n > 1) {\n z.sqrTo(r, r2)\n z.sqrTo(r2, r)\n n -= 2\n }\n if (n > 0) {\n z.sqrTo(r, r2)\n } else {\n t = r\n r = r2\n r2 = t\n }\n z.mulTo(r2, g[w], r)\n }\n while (j >= 0 && (e[j] & (1 << i)) == 0) {\n z.sqrTo(r, r2)\n t = r\n r = r2\n r2 = t\n if (--i < 0) {\n i = this.DB - 1\n --j\n }\n }\n }\n return z.revert(r)\n }\n // modInverse = bnModInverse;\n // (public) 1/this % m (HAC 14.61)\n modInverse(m) {\n var ac = m.isEven()\n if ((this.isEven() && ac) || m.signum() == 0) {\n return BigInteger.ZERO\n }\n var u = m.clone()\n var v = this.clone()\n var a = nbv(1)\n var b = nbv(0)\n var c = nbv(0)\n var d = nbv(1)\n while (u.signum() != 0) {\n while (u.isEven()) {\n u.rShiftTo(1, u)\n if (ac) {\n if (!a.isEven() || !b.isEven()) {\n a.addTo(this, a)\n b.subTo(m, b)\n }\n a.rShiftTo(1, a)\n } else if (!b.isEven()) {\n b.subTo(m, b)\n }\n b.rShiftTo(1, b)\n }\n while (v.isEven()) {\n v.rShiftTo(1, v)\n if (ac) {\n if (!c.isEven() || !d.isEven()) {\n c.addTo(this, c)\n d.subTo(m, d)\n }\n c.rShiftTo(1, c)\n } else if (!d.isEven()) {\n d.subTo(m, d)\n }\n d.rShiftTo(1, d)\n }\n if (u.compareTo(v) >= 0) {\n u.subTo(v, u)\n if (ac) {\n a.subTo(c, a)\n }\n b.subTo(d, b)\n } else {\n v.subTo(u, v)\n if (ac) {\n c.subTo(a, c)\n }\n d.subTo(b, d)\n }\n }\n if (v.compareTo(BigInteger.ONE) != 0) {\n return BigInteger.ZERO\n }\n if (d.compareTo(m) >= 0) {\n return d.subtract(m)\n }\n if (d.signum() < 0) {\n d.addTo(m, d)\n } else {\n return d\n }\n if (d.signum() < 0) {\n return d.add(m)\n } else {\n return d\n }\n }\n // BigInteger.prototype.pow = bnPow;\n // (public) this^e\n pow(e) {\n return this.exp(e, new NullExp())\n }\n // gcd = bnGCD;\n // (public) gcd(this,a) (HAC 14.54)\n gcd(a) {\n var x = this.s < 0 ? this.negate() : this.clone()\n var y = a.s < 0 ? a.negate() : a.clone()\n if (x.compareTo(y) < 0) {\n var t = x\n x = y\n y = t\n }\n var i = x.getLowestSetBit()\n var g = y.getLowestSetBit()\n if (g < 0) {\n return x\n }\n if (i < g) {\n g = i\n }\n if (g > 0) {\n x.rShiftTo(g, x)\n y.rShiftTo(g, y)\n }\n while (x.signum() > 0) {\n if ((i = x.getLowestSetBit()) > 0) {\n x.rShiftTo(i, x)\n }\n if ((i = y.getLowestSetBit()) > 0) {\n y.rShiftTo(i, y)\n }\n if (x.compareTo(y) >= 0) {\n x.subTo(y, x)\n x.rShiftTo(1, x)\n } else {\n y.subTo(x, y)\n y.rShiftTo(1, y)\n }\n }\n if (g > 0) {\n y.lShiftTo(g, y)\n }\n return y\n }\n // BigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n // (public) test primality with certainty >= 1-.5^t\n isProbablePrime(t) {\n var i\n var x = this.abs()\n if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {\n for (i = 0; i < lowprimes.length; ++i) {\n if (x[0] == lowprimes[i]) {\n return true\n }\n }\n return false\n }\n if (x.isEven()) {\n return false\n }\n i = 1\n while (i < lowprimes.length) {\n var m = lowprimes[i]\n var j = i + 1\n while (j < lowprimes.length && m < lplim) {\n m *= lowprimes[j++]\n }\n m = x.modInt(m)\n while (i < j) {\n if (m % lowprimes[i++] == 0) {\n return false\n }\n }\n }\n return x.millerRabin(t)\n }\n //#endregion PUBLIC\n //#region PROTECTED\n // copyTo = bnpCopyTo;\n // (protected) copy this to r\n copyTo(r) {\n for (var i = this.t - 1; i >= 0; --i) {\n r[i] = this[i]\n }\n r.t = this.t\n r.s = this.s\n }\n // fromInt = bnpFromInt;\n // (protected) set from integer value x, -DV <= x < DV\n fromInt(x) {\n this.t = 1\n this.s = x < 0 ? -1 : 0\n if (x > 0) {\n this[0] = x\n } else if (x < -1) {\n this[0] = x + this.DV\n } else {\n this.t = 0\n }\n }\n // fromString = bnpFromString;\n // (protected) set from string and radix\n fromString(s, b) {\n var k\n if (b == 16) {\n k = 4\n } else if (b == 8) {\n k = 3\n } else if (b == 256) {\n k = 8\n /* byte array */\n } else if (b == 2) {\n k = 1\n } else if (b == 32) {\n k = 5\n } else if (b == 4) {\n k = 2\n } else {\n this.fromRadix(s, b)\n return\n }\n this.t = 0\n this.s = 0\n var i = s.length\n var mi = false\n var sh = 0\n while (--i >= 0) {\n var x = k == 8 ? +s[i] & 0xff : intAt(s, i)\n if (x < 0) {\n if (s.charAt(i) == '-') {\n mi = true\n }\n continue\n }\n mi = false\n if (sh == 0) {\n this[this.t++] = x\n } else if (sh + k > this.DB) {\n this[this.t - 1] |= (x & ((1 << (this.DB - sh)) - 1)) << sh\n this[this.t++] = x >> (this.DB - sh)\n } else {\n this[this.t - 1] |= x << sh\n }\n sh += k\n if (sh >= this.DB) {\n sh -= this.DB\n }\n }\n if (k == 8 && (+s[0] & 0x80) != 0) {\n this.s = -1\n if (sh > 0) {\n this[this.t - 1] |= ((1 << (this.DB - sh)) - 1) << sh\n }\n }\n this.clamp()\n if (mi) {\n BigInteger.ZERO.subTo(this, this)\n }\n }\n // clamp = bnpClamp;\n // (protected) clamp off excess high words\n clamp() {\n var c = this.s & this.DM\n while (this.t > 0 && this[this.t - 1] == c) {\n --this.t\n }\n }\n // dlShiftTo = bnpDLShiftTo;\n // (protected) r = this << n*DB\n dlShiftTo(n, r) {\n var i\n for (i = this.t - 1; i >= 0; --i) {\n r[i + n] = this[i]\n }\n for (i = n - 1; i >= 0; --i) {\n r[i] = 0\n }\n r.t = this.t + n\n r.s = this.s\n }\n // drShiftTo = bnpDRShiftTo;\n // (protected) r = this >> n*DB\n drShiftTo(n, r) {\n for (var i = n; i < this.t; ++i) {\n r[i - n] = this[i]\n }\n r.t = Math.max(this.t - n, 0)\n r.s = this.s\n }\n // lShiftTo = bnpLShiftTo;\n // (protected) r = this << n\n lShiftTo(n, r) {\n var bs = n % this.DB\n var cbs = this.DB - bs\n var bm = (1 << cbs) - 1\n var ds = Math.floor(n / this.DB)\n var c = (this.s << bs) & this.DM\n for (var i = this.t - 1; i >= 0; --i) {\n r[i + ds + 1] = (this[i] >> cbs) | c\n c = (this[i] & bm) << bs\n }\n for (var i = ds - 1; i >= 0; --i) {\n r[i] = 0\n }\n r[ds] = c\n r.t = this.t + ds + 1\n r.s = this.s\n r.clamp()\n }\n // rShiftTo = bnpRShiftTo;\n // (protected) r = this >> n\n rShiftTo(n, r) {\n r.s = this.s\n var ds = Math.floor(n / this.DB)\n if (ds >= this.t) {\n r.t = 0\n return\n }\n var bs = n % this.DB\n var cbs = this.DB - bs\n var bm = (1 << bs) - 1\n r[0] = this[ds] >> bs\n for (var i = ds + 1; i < this.t; ++i) {\n r[i - ds - 1] |= (this[i] & bm) << cbs\n r[i - ds] = this[i] >> bs\n }\n if (bs > 0) {\n r[this.t - ds - 1] |= (this.s & bm) << cbs\n }\n r.t = this.t - ds\n r.clamp()\n }\n // subTo = bnpSubTo;\n // (protected) r = this - a\n subTo(a, r) {\n var i = 0\n var c = 0\n var m = Math.min(a.t, this.t)\n while (i < m) {\n c += this[i] - a[i]\n r[i++] = c & this.DM\n c >>= this.DB\n }\n if (a.t < this.t) {\n c -= a.s\n while (i < this.t) {\n c += this[i]\n r[i++] = c & this.DM\n c >>= this.DB\n }\n c += this.s\n } else {\n c += this.s\n while (i < a.t) {\n c -= a[i]\n r[i++] = c & this.DM\n c >>= this.DB\n }\n c -= a.s\n }\n r.s = c < 0 ? -1 : 0\n if (c < -1) {\n r[i++] = this.DV + c\n } else if (c > 0) {\n r[i++] = c\n }\n r.t = i\n r.clamp()\n }\n // multiplyTo = bnpMultiplyTo;\n // (protected) r = this * a, r != this,a (HAC 14.12)\n // \"this\" should be the larger one if appropriate.\n multiplyTo(a, r) {\n var x = this.abs()\n var y = a.abs()\n var i = x.t\n r.t = i + y.t\n while (--i >= 0) {\n r[i] = 0\n }\n for (i = 0; i < y.t; ++i) {\n r[i + x.t] = x.am(0, y[i], r, i, 0, x.t)\n }\n r.s = 0\n r.clamp()\n if (this.s != a.s) {\n BigInteger.ZERO.subTo(r, r)\n }\n }\n // squareTo = bnpSquareTo;\n // (protected) r = this^2, r != this (HAC 14.16)\n squareTo(r) {\n var x = this.abs()\n var i = (r.t = 2 * x.t)\n while (--i >= 0) {\n r[i] = 0\n }\n for (i = 0; i < x.t - 1; ++i) {\n var c = x.am(i, x[i], r, 2 * i, 0, 1)\n if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {\n r[i + x.t] -= x.DV\n r[i + x.t + 1] = 1\n }\n }\n if (r.t > 0) {\n r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1)\n }\n r.s = 0\n r.clamp()\n }\n // divRemTo = bnpDivRemTo;\n // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n // r != q, this != m. q or r may be null.\n divRemTo(m, q, r) {\n var pm = m.abs()\n if (pm.t <= 0) {\n return\n }\n var pt = this.abs()\n if (pt.t < pm.t) {\n if (q != null) {\n q.fromInt(0)\n }\n if (r != null) {\n this.copyTo(r)\n }\n return\n }\n if (r == null) {\n r = nbi()\n }\n var y = nbi()\n var ts = this.s\n var ms = m.s\n var nsh = this.DB - nbits(pm[pm.t - 1]) // normalize modulus\n if (nsh > 0) {\n pm.lShiftTo(nsh, y)\n pt.lShiftTo(nsh, r)\n } else {\n pm.copyTo(y)\n pt.copyTo(r)\n }\n var ys = y.t\n var y0 = y[ys - 1]\n if (y0 == 0) {\n return\n }\n var yt = y0 * (1 << this.F1) + (ys > 1 ? y[ys - 2] >> this.F2 : 0)\n var d1 = this.FV / yt\n var d2 = (1 << this.F1) / yt\n var e = 1 << this.F2\n var i = r.t\n var j = i - ys\n var t = q == null ? nbi() : q\n y.dlShiftTo(j, t)\n if (r.compareTo(t) >= 0) {\n r[r.t++] = 1\n r.subTo(t, r)\n }\n BigInteger.ONE.dlShiftTo(ys, t)\n t.subTo(y, y) // \"negative\" y so we can replace sub with am later\n while (y.t < ys) {\n y[y.t++] = 0\n }\n while (--j >= 0) {\n // Estimate quotient digit\n var qd = r[--i] == y0 ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2)\n if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) {\n // Try it out\n y.dlShiftTo(j, t)\n r.subTo(t, r)\n while (r[i] < --qd) {\n r.subTo(t, r)\n }\n }\n }\n if (q != null) {\n r.drShiftTo(ys, q)\n if (ts != ms) {\n BigInteger.ZERO.subTo(q, q)\n }\n }\n r.t = ys\n r.clamp()\n if (nsh > 0) {\n r.rShiftTo(nsh, r)\n } // Denormalize remainder\n if (ts < 0) {\n BigInteger.ZERO.subTo(r, r)\n }\n }\n // invDigit = bnpInvDigit;\n // (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n // justification:\n // xy == 1 (mod m)\n // xy = 1+km\n // xy(2-xy) = (1+km)(1-km)\n // x[y(2-xy)] = 1-k^2m^2\n // x[y(2-xy)] == 1 (mod m^2)\n // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n // JS multiply \"overflows\" differently from C/C++, so care is needed here.\n invDigit() {\n if (this.t < 1) {\n return 0\n }\n var x = this[0]\n if ((x & 1) == 0) {\n return 0\n }\n var y = x & 3 // y == 1/x mod 2^2\n y = (y * (2 - (x & 0xf) * y)) & 0xf // y == 1/x mod 2^4\n y = (y * (2 - (x & 0xff) * y)) & 0xff // y == 1/x mod 2^8\n y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y * (2 - ((x * y) % this.DV))) % this.DV // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return y > 0 ? this.DV - y : -y\n }\n // isEven = bnpIsEven;\n // (protected) true iff this is even\n isEven() {\n return (this.t > 0 ? this[0] & 1 : this.s) == 0\n }\n // exp = bnpExp;\n // (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\n exp(e, z) {\n if (e > 0xffffffff || e < 1) {\n return BigInteger.ONE\n }\n var r = nbi()\n var r2 = nbi()\n var g = z.convert(this)\n var i = nbits(e) - 1\n g.copyTo(r)\n while (--i >= 0) {\n z.sqrTo(r, r2)\n if ((e & (1 << i)) > 0) {\n z.mulTo(r2, g, r)\n } else {\n var t = r\n r = r2\n r2 = t\n }\n }\n return z.revert(r)\n }\n // chunkSize = bnpChunkSize;\n // (protected) return x s.t. r^x < DV\n chunkSize(r) {\n return Math.floor((Math.LN2 * this.DB) / Math.log(r))\n }\n // toRadix = bnpToRadix;\n // (protected) convert to radix string\n toRadix(b) {\n if (b == null) {\n b = 10\n }\n if (this.signum() == 0 || b < 2 || b > 36) {\n return '0'\n }\n var cs = this.chunkSize(b)\n var a = Math.pow(b, cs)\n var d = nbv(a)\n var y = nbi()\n var z = nbi()\n var r = ''\n this.divRemTo(d, y, z)\n while (y.signum() > 0) {\n r = (a + z.intValue()).toString(b).substr(1) + r\n y.divRemTo(d, y, z)\n }\n return z.intValue().toString(b) + r\n }\n // fromRadix = bnpFromRadix;\n // (protected) convert from radix string\n fromRadix(s, b) {\n this.fromInt(0)\n if (b == null) {\n b = 10\n }\n var cs = this.chunkSize(b)\n var d = Math.pow(b, cs)\n var mi = false\n var j = 0\n var w = 0\n for (var i = 0; i < s.length; ++i) {\n var x = intAt(s, i)\n if (x < 0) {\n if (s.charAt(i) == '-' && this.signum() == 0) {\n mi = true\n }\n continue\n }\n w = b * w + x\n if (++j >= cs) {\n this.dMultiply(d)\n this.dAddOffset(w, 0)\n j = 0\n w = 0\n }\n }\n if (j > 0) {\n this.dMultiply(Math.pow(b, j))\n this.dAddOffset(w, 0)\n }\n if (mi) {\n BigInteger.ZERO.subTo(this, this)\n }\n }\n // fromNumber = bnpFromNumber;\n // (protected) alternate constructor\n fromNumber(a, b, c) {\n if ('number' == typeof b) {\n // new BigInteger(int,int,RNG)\n if (a < 2) {\n this.fromInt(1)\n } else {\n this.fromNumber(a, c)\n if (!this.testBit(a - 1)) {\n // force MSB set\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, this)\n }\n if (this.isEven()) {\n this.dAddOffset(1, 0)\n } // force odd\n while (!this.isProbablePrime(b)) {\n this.dAddOffset(2, 0)\n if (this.bitLength() > a) {\n this.subTo(BigInteger.ONE.shiftLeft(a - 1), this)\n }\n }\n }\n } else {\n // new BigInteger(int,RNG)\n var x = []\n var t = a & 7\n x.length = (a >> 3) + 1\n b.nextBytes(x)\n if (t > 0) {\n x[0] &= (1 << t) - 1\n } else {\n x[0] = 0\n }\n this.fromString(x, 256)\n }\n }\n // bitwiseTo = bnpBitwiseTo;\n // (protected) r = this op a (bitwise)\n bitwiseTo(a, op, r) {\n var i\n var f\n var m = Math.min(a.t, this.t)\n for (i = 0; i < m; ++i) {\n r[i] = op(this[i], a[i])\n }\n if (a.t < this.t) {\n f = a.s & this.DM\n for (i = m; i < this.t; ++i) {\n r[i] = op(this[i], f)\n }\n r.t = this.t\n } else {\n f = this.s & this.DM\n for (i = m; i < a.t; ++i) {\n r[i] = op(f, a[i])\n }\n r.t = a.t\n }\n r.s = op(this.s, a.s)\n r.clamp()\n }\n // changeBit = bnpChangeBit;\n // (protected) this op (1<<n)\n changeBit(n, op) {\n var r = BigInteger.ONE.shiftLeft(n)\n this.bitwiseTo(r, op, r)\n return r\n }\n // addTo = bnpAddTo;\n // (protected) r = this + a\n addTo(a, r) {\n var i = 0\n var c = 0\n var m = Math.min(a.t, this.t)\n while (i < m) {\n c += this[i] + a[i]\n r[i++] = c & this.DM\n c >>= this.DB\n }\n if (a.t < this.t) {\n c += a.s\n while (i < this.t) {\n c += this[i]\n r[i++] = c & this.DM\n c >>= this.DB\n }\n c += this.s\n } else {\n c += this.s\n while (i < a.t) {\n c += a[i]\n r[i++] = c & this.DM\n c >>= this.DB\n }\n c += a.s\n }\n r.s = c < 0 ? -1 : 0\n if (c > 0) {\n r[i++] = c\n } else if (c < -1) {\n r[i++] = this.DV + c\n }\n r.t = i\n r.clamp()\n }\n // dMultiply = bnpDMultiply;\n // (protected) this *= n, this >= 0, 1 < n < DV\n dMultiply(n) {\n this[this.t] = this.am(0, n - 1, this, 0, 0, this.t)\n ++this.t\n this.clamp()\n }\n // dAddOffset = bnpDAddOffset;\n // (protected) this += n << w words, this >= 0\n dAddOffset(n, w) {\n if (n == 0) {\n return\n }\n while (this.t <= w) {\n this[this.t++] = 0\n }\n this[w] += n\n while (this[w] >= this.DV) {\n this[w] -= this.DV\n if (++w >= this.t) {\n this[this.t++] = 0\n }\n ++this[w]\n }\n }\n // multiplyLowerTo = bnpMultiplyLowerTo;\n // (protected) r = lower n words of \"this * a\", a.t <= n\n // \"this\" should be the larger one if appropriate.\n multiplyLowerTo(a, n, r) {\n var i = Math.min(this.t + a.t, n)\n r.s = 0 // assumes a,this >= 0\n r.t = i\n while (i > 0) {\n r[--i] = 0\n }\n for (var j = r.t - this.t; i < j; ++i) {\n r[i + this.t] = this.am(0, a[i], r, i, 0, this.t)\n }\n for (var j = Math.min(a.t, n); i < j; ++i) {\n this.am(0, a[i], r, i, 0, n - i)\n }\n r.clamp()\n }\n // multiplyUpperTo = bnpMultiplyUpperTo;\n // (protected) r = \"this * a\" without lower n words, n > 0\n // \"this\" should be the larger one if appropriate.\n multiplyUpperTo(a, n, r) {\n --n\n var i = (r.t = this.t + a.t - n)\n r.s = 0 // assumes a,this >= 0\n while (--i >= 0) {\n r[i] = 0\n }\n for (i = Math.max(n - this.t, 0); i < a.t; ++i) {\n r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n)\n }\n r.clamp()\n r.drShiftTo(1, r)\n }\n // modInt = bnpModInt;\n // (protected) this % n, n < 2^26\n modInt(n) {\n if (n <= 0) {\n return 0\n }\n var d = this.DV % n\n var r = this.s < 0 ? n - 1 : 0\n if (this.t > 0) {\n if (d == 0) {\n r = this[0] % n\n } else {\n for (var i = this.t - 1; i >= 0; --i) {\n r = (d * r + this[i]) % n\n }\n }\n }\n return r\n }\n // millerRabin = bnpMillerRabin;\n // (protected) true if probably prime (HAC 4.24, Miller-Rabin)\n millerRabin(t) {\n var n1 = this.subtract(BigInteger.ONE)\n var k = n1.getLowestSetBit()\n if (k <= 0) {\n return false\n }\n var r = n1.shiftRight(k)\n t = (t + 1) >> 1\n if (t > lowprimes.length) {\n t = lowprimes.length\n }\n var a = nbi()\n for (var i = 0; i < t; ++i) {\n // Pick bases at random, instead of starting at 2\n a.fromInt(lowprimes[Math.floor(Math.random() * lowprimes.length)])\n var y = a.modPow(r, this)\n if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1\n while (j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2, this)\n if (y.compareTo(BigInteger.ONE) == 0) {\n return false\n }\n }\n if (y.compareTo(n1) != 0) {\n return false\n }\n }\n }\n return true\n }\n // square = bnSquare;\n // (public) this^2\n square() {\n var r = nbi()\n this.squareTo(r)\n return r\n }\n //#region ASYNC\n // Public API method\n gcda(a, callback) {\n var x = this.s < 0 ? this.negate() : this.clone()\n var y = a.s < 0 ? a.negate() : a.clone()\n if (x.compareTo(y) < 0) {\n var t = x\n x = y\n y = t\n }\n var i = x.getLowestSetBit()\n var g = y.getLowestSetBit()\n if (g < 0) {\n callback(x)\n return\n }\n if (i < g) {\n g = i\n }\n if (g > 0) {\n x.rShiftTo(g, x)\n y.rShiftTo(g, y)\n }\n // Workhorse of the algorithm, gets called 200 - 800 times per 512 bit keygen.\n var gcda1 = () => {\n if ((i = x.getLowestSetBit()) > 0) {\n x.rShiftTo(i, x)\n }\n if ((i = y.getLowestSetBit()) > 0) {\n y.rShiftTo(i, y)\n }\n if (x.compareTo(y) >= 0) {\n x.subTo(y, x)\n x.rShiftTo(1, x)\n } else {\n y.subTo(x, y)\n y.rShiftTo(1, y)\n }\n if (!(x.signum() > 0)) {\n if (g > 0) {\n y.lShiftTo(g, y)\n }\n setTimeout(function () {\n callback(y)\n }, 0) // escape\n } else {\n setTimeout(gcda1, 0)\n }\n }\n setTimeout(gcda1, 10)\n }\n // (protected) alternate constructor\n fromNumberAsync(a, b, c, callback) {\n if ('number' == typeof b) {\n if (a < 2) {\n this.fromInt(1)\n } else {\n this.fromNumber(a, c)\n if (!this.testBit(a - 1)) {\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, this)\n }\n if (this.isEven()) {\n this.dAddOffset(1, 0)\n }\n var bnp_1 = this\n var bnpfn1_1 = function () {\n bnp_1.dAddOffset(2, 0)\n if (bnp_1.bitLength() > a) {\n bnp_1.subTo(BigInteger.ONE.shiftLeft(a - 1), bnp_1)\n }\n if (bnp_1.isProbablePrime(b)) {\n setTimeout(function () {\n callback()\n }, 0) // escape\n } else {\n setTimeout(bnpfn1_1, 0)\n }\n }\n setTimeout(bnpfn1_1, 0)\n }\n } else {\n var x = []\n var t = a & 7\n x.length = (a >> 3) + 1\n b.nextBytes(x)\n if (t > 0) {\n x[0] &= (1 << t) - 1\n } else {\n x[0] = 0\n }\n this.fromString(x, 256)\n }\n }\n }\n //#region REDUCERS\n //#region NullExp\n var NullExp = /** @class */ (function () {\n function NullExp() {}\n // NullExp.prototype.convert = nNop;\n NullExp.prototype.convert = function (x) {\n return x\n }\n // NullExp.prototype.revert = nNop;\n NullExp.prototype.revert = function (x) {\n return x\n }\n // NullExp.prototype.mulTo = nMulTo;\n NullExp.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r)\n }\n // NullExp.prototype.sqrTo = nSqrTo;\n NullExp.prototype.sqrTo = function (x, r) {\n x.squareTo(r)\n }\n return NullExp\n })()\n // Modular reduction using \"classic\" algorithm\n var Classic = /** @class */ (function () {\n function Classic(m) {\n this.m = m\n }\n // Classic.prototype.convert = cConvert;\n Classic.prototype.convert = function (x) {\n if (x.s < 0 || x.compareTo(this.m) >= 0) {\n return x.mod(this.m)\n } else {\n return x\n }\n }\n // Classic.prototype.revert = cRevert;\n Classic.prototype.revert = function (x) {\n return x\n }\n // Classic.prototype.reduce = cReduce;\n Classic.prototype.reduce = function (x) {\n x.divRemTo(this.m, null, x)\n }\n // Classic.prototype.mulTo = cMulTo;\n Classic.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r)\n this.reduce(r)\n }\n // Classic.prototype.sqrTo = cSqrTo;\n Classic.prototype.sqrTo = function (x, r) {\n x.squareTo(r)\n this.reduce(r)\n }\n return Classic\n })()\n //#endregion\n //#region Montgomery\n // Montgomery reduction\n var Montgomery = /** @class */ (function () {\n function Montgomery(m) {\n this.m = m\n this.mp = m.invDigit()\n this.mpl = this.mp & 0x7fff\n this.mph = this.mp >> 15\n this.um = (1 << (m.DB - 15)) - 1\n this.mt2 = 2 * m.t\n }\n // Montgomery.prototype.convert = montConvert;\n // xR mod m\n Montgomery.prototype.convert = function (x) {\n var r = nbi()\n x.abs().dlShiftTo(this.m.t, r)\n r.divRemTo(this.m, null, r)\n if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {\n this.m.subTo(r, r)\n }\n return r\n }\n // Montgomery.prototype.revert = montRevert;\n // x/R mod m\n Montgomery.prototype.revert = function (x) {\n var r = nbi()\n x.copyTo(r)\n this.reduce(r)\n return r\n }\n // Montgomery.prototype.reduce = montReduce;\n // x = x/R mod m (HAC 14.32)\n Montgomery.prototype.reduce = function (x) {\n while (x.t <= this.mt2) {\n // pad x so am has enough room later\n x[x.t++] = 0\n }\n for (var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i] & 0x7fff\n var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM\n // use am to combine the multiply-shift-add into one call\n j = i + this.m.t\n x[j] += this.m.am(0, u0, x, i, 0, this.m.t)\n // propagate carry\n while (x[j] >= x.DV) {\n x[j] -= x.DV\n x[++j]++\n }\n }\n x.clamp()\n x.drShiftTo(this.m.t, x)\n if (x.compareTo(this.m) >= 0) {\n x.subTo(this.m, x)\n }\n }\n // Montgomery.prototype.mulTo = montMulTo;\n // r = \"xy/R mod m\"; x,y != r\n Montgomery.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r)\n this.reduce(r)\n }\n // Montgomery.prototype.sqrTo = montSqrTo;\n // r = \"x^2/R mod m\"; x != r\n Montgomery.prototype.sqrTo = function (x, r) {\n x.squareTo(r)\n this.reduce(r)\n }\n return Montgomery\n })()\n //#endregion Montgomery\n //#region Barrett\n // Barrett modular reduction\n var Barrett = /** @class */ (function () {\n function Barrett(m) {\n this.m = m\n // setup Barrett\n this.r2 = nbi()\n this.q3 = nbi()\n BigInteger.ONE.dlShiftTo(2 * m.t, this.r2)\n this.mu = this.r2.divide(m)\n }\n // Barrett.prototype.convert = barrettConvert;\n Barrett.prototype.convert = function (x) {\n if (x.s < 0 || x.t > 2 * this.m.t) {\n return x.mod(this.m)\n } else if (x.compareTo(this.m) < 0) {\n return x\n } else {\n var r = nbi()\n x.copyTo(r)\n this.reduce(r)\n return r\n }\n }\n // Barrett.prototype.revert = barrettRevert;\n Barrett.prototype.revert = function (x) {\n return x\n }\n // Barrett.prototype.reduce = barrettReduce;\n // x = x mod m (HAC 14.42)\n Barrett.prototype.reduce = function (x) {\n x.drShiftTo(this.m.t - 1, this.r2)\n if (x.t > this.m.t + 1) {\n x.t = this.m.t + 1\n x.clamp()\n }\n this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3)\n this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2)\n while (x.compareTo(this.r2) < 0) {\n x.dAddOffset(1, this.m.t + 1)\n }\n x.subTo(this.r2, x)\n while (x.compareTo(this.m) >= 0) {\n x.subTo(this.m, x)\n }\n }\n // Barrett.prototype.mulTo = barrettMulTo;\n // r = x*y mod m; x,y != r\n Barrett.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r)\n this.reduce(r)\n }\n // Barrett.prototype.sqrTo = barrettSqrTo;\n // r = x^2 mod m; x != r\n Barrett.prototype.sqrTo = function (x, r) {\n x.squareTo(r)\n this.reduce(r)\n }\n return Barrett\n })()\n //#endregion\n //#endregion REDUCERS\n // return new, unset BigInteger\n function nbi() {\n return new BigInteger(null)\n }\n function parseBigInt(str, r) {\n return new BigInteger(str, r)\n }\n // am: Compute w_j += (x*this_i), propagate carries,\n // c is initial carry, returns final carry.\n // c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n // We need to select the fastest one that works in this environment.\n // am1: use a single mult and divide to get the high bits,\n // max digit bits should be 26 because\n // max internal value = 2*dvalue^2-2*dvalue (< 2^53)\n function am1(i, x, w, j, c, n) {\n while (--n >= 0) {\n var v = x * this[i++] + w[j] + c\n c = Math.floor(v / 0x4000000)\n w[j++] = v & 0x3ffffff\n }\n return c\n }\n // am2 avoids a big mult-and-extract completely.\n // Max digit bits should be <= 30 because we do bitwise ops\n // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\n function am2(i, x, w, j, c, n) {\n var xl = x & 0x7fff\n var xh = x >> 15\n while (--n >= 0) {\n var l = this[i] & 0x7fff\n var h = this[i++] >> 15\n var m = xh * l + h * xl\n l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff)\n c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30)\n w[j++] = l & 0x3fffffff\n }\n return c\n }\n // Alternately, set max digit bits to 28 since some\n // browsers slow down when dealing with 32-bit numbers.\n function am3(i, x, w, j, c, n) {\n var xl = x & 0x3fff\n var xh = x >> 14\n while (--n >= 0) {\n var l = this[i] & 0x3fff\n var h = this[i++] >> 14\n var m = xh * l + h * xl\n l = xl * l + ((m & 0x3fff) << 14) + w[j] + c\n c = (l >> 28) + (m >> 14) + xh * h\n w[j++] = l & 0xfffffff\n }\n return c\n }\n if (j_lm && typeof navigator !== 'undefined' && navigator?.appName == 'Microsoft Internet Explorer') {\n BigInteger.prototype.am = am2\n dbits = 30\n } else if (j_lm && navigator?.appName != 'Netscape') {\n BigInteger.prototype.am = am1\n dbits = 26\n } else {\n // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3\n dbits = 28\n }\n BigInteger.prototype.DB = dbits\n BigInteger.prototype.DM = (1 << dbits) - 1\n BigInteger.prototype.DV = 1 << dbits\n var BI_FP = 52\n BigInteger.prototype.FV = Math.pow(2, BI_FP)\n BigInteger.prototype.F1 = BI_FP - dbits\n BigInteger.prototype.F2 = 2 * dbits - BI_FP\n // Digit conversions\n var BI_RC = []\n var rr\n var vv\n rr = '0'.charCodeAt(0)\n for (vv = 0; vv <= 9; ++vv) {\n BI_RC[rr++] = vv\n }\n rr = 'a'.charCodeAt(0)\n for (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv\n }\n rr = 'A'.charCodeAt(0)\n for (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv\n }\n function intAt(s, i) {\n var c = BI_RC[s.charCodeAt(i)]\n return c == null ? -1 : c\n }\n // return bigint initialized to value\n function nbv(i) {\n var r = nbi()\n r.fromInt(i)\n return r\n }\n // returns bit length of the integer x\n function nbits(x) {\n var r = 1\n var t\n if ((t = x >>> 16) != 0) {\n x = t\n r += 16\n }\n if ((t = x >> 8) != 0) {\n x = t\n r += 8\n }\n if ((t = x >> 4) != 0) {\n x = t\n r += 4\n }\n if ((t = x >> 2) != 0) {\n x = t\n r += 2\n }\n if ((t = x >> 1) != 0) {\n x = t\n r += 1\n }\n return r\n }\n // \"constants\"\n BigInteger.ZERO = nbv(0)\n BigInteger.ONE = nbv(1)\n\n // prng4.js - uses Arcfour as a PRNG\n class Arcfour {\n constructor() {\n this.i = 0\n this.j = 0\n this.S = []\n }\n\n // prototype.init = ARC4init;\n // Initialize arcfour context from key, an array of ints, each from [0..255]\n init(key) {\n var i\n var j\n var t\n for (i = 0; i < 256; ++i) {\n this.S[i] = i\n }\n j = 0\n for (i = 0; i < 256; ++i) {\n j = (j + this.S[i] + key[i % key.length]) & 255\n t = this.S[i]\n this.S[i] = this.S[j]\n this.S[j] = t\n }\n this.i = 0\n this.j = 0\n }\n // next = ARC4next;\n next() {\n var t\n this.i = (this.i + 1) & 255\n this.j = (this.j + this.S[this.i]) & 255\n t = this.S[this.i]\n this.S[this.i] = this.S[this.j]\n this.S[this.j] = t\n return this.S[(t + this.S[this.i]) & 255]\n }\n }\n\n // Plug in your RNG constructor here\n function prng_newstate() {\n return new Arcfour()\n }\n // Pool size must be a multiple of 4 and greater than 32.\n // An array of bytes the size of the pool will be passed to init()\n var rng_psize = 256\n\n // Random number generator - requires a PRNG backend, e.g. prng4.js\n var rng_state\n var rng_pool = null\n var rng_pptr\n // Initialize the pool with junk if needed.\n if (rng_pool == null) {\n rng_pool = []\n rng_pptr = 0\n var t = void 0\n if (typeof window !== 'undefined') {\n if (window?.crypto && window?.crypto.getRandomValues) {\n // Extract entropy (2048 bits) from RNG if available\n var z = new Uint32Array(256)\n window?.crypto.getRandomValues(z)\n for (t = 0; t < z.length; ++t) {\n rng_pool[rng_pptr++] = z[t] & 255\n }\n }\n }\n // Use mouse events for entropy, if we do not have enough entropy by the time\n // we need it, entropy will be generated by Math.random.\n var onMouseMoveListener_1 = function (ev) {\n this.count = this.count || 0\n if (this.count >= 256 || rng_pptr >= rng_psize) {\n if (typeof window !== 'undefined') {\n if (window?.removeEventListener) {\n window?.removeEventListener('mousemove', onMouseMoveListener_1, false)\n } else if (window?.detachEvent) {\n window?.detachEvent('onmousemove', onMouseMoveListener_1)\n }\n }\n return\n }\n try {\n var mouseCoordinates = ev.x + ev.y\n rng_pool[rng_pptr++] = mouseCoordinates & 255\n this.count += 1\n } catch (e) {\n // Sometimes Firefox will deny permission to access event properties for some reason. Ignore.\n }\n }\n if (typeof window !== 'undefined') {\n if (window?.addEventListener) {\n window?.addEventListener('mousemove', onMouseMoveListener_1, false)\n } else if (window?.attachEvent) {\n window?.attachEvent('onmousemove', onMouseMoveListener_1)\n }\n }\n }\n function rng_get_byte() {\n if (rng_state == null) {\n rng_state = prng_newstate()\n // At this point, we may not have collected enough entropy. If not, fall back to Math.random\n while (rng_pptr < rng_psize) {\n var random = Math.floor(65536 * Math.random())\n rng_pool[rng_pptr++] = random & 255\n }\n rng_state.init(rng_pool)\n for (rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) {\n rng_pool[rng_pptr] = 0\n }\n rng_pptr = 0\n }\n // TODO: allow reseeding after first request\n return rng_state.next()\n }\n\n class SecureRandom {\n constructor() {\n //\n }\n nextBytes(ba) {\n for (var i = 0; i < ba.length; ++i) {\n ba[i] = rng_get_byte()\n }\n }\n }\n\n // Depends on jsbn.js and rng.js\n // function linebrk(s,n) {\n // var ret = \"\";\n // var i = 0;\n // while(i + n < s.length) {\n // ret += s.substring(i,i+n) + \"\\n\";\n // i += n;\n // }\n // return ret + s.substring(i,s.length);\n // }\n // function byte2Hex(b) {\n // if(b < 0x10)\n // return \"0\" + b.toString(16);\n // else\n // return b.toString(16);\n // }\n function pkcs1pad1(s, n) {\n if (n < s.length + 22) {\n console.error('Message too long for RSA')\n return null\n }\n var len = n - s.length - 6\n var filler = ''\n for (var f = 0; f < len; f += 2) {\n filler += 'ff'\n }\n var m = '0001' + filler + '00' + s\n return parseBigInt(m, 16)\n }\n // PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint\n function pkcs1pad2(s, n) {\n if (n < s.length + 11) {\n // TODO: fix for utf-8\n console.error('Message too long for RSA')\n return null\n }\n var ba = []\n var i = s.length - 1\n while (i >= 0 && n > 0) {\n var c = s.charCodeAt(i--)\n if (c < 128) {\n // encode using utf-8\n ba[--n] = c\n } else if (c > 127 && c < 2048) {\n ba[--n] = (c & 63) | 128\n ba[--n] = (c >> 6) | 192\n } else {\n ba[--n] = (c & 63) | 128\n ba[--n] = ((c >> 6) & 63) | 128\n ba[--n] = (c >> 12) | 224\n }\n }\n ba[--n] = 0\n var rng = new SecureRandom()\n var x = []\n while (n > 2) {\n // random non-zero pad\n x[0] = 0\n while (x[0] == 0) {\n rng.nextBytes(x)\n }\n ba[--n] = x[0]\n }\n ba[--n] = 2\n ba[--n] = 0\n return new BigInteger(ba)\n }\n\n class RSAKey {\n constructor() {\n this.n = null\n this.e = 0\n this.d = null\n this.p = null\n this.q = null\n this.dmp1 = null\n this.dmq1 = null\n this.coeff = null\n }\n //#region PROTECTED\n // protected\n // doPublic = RSADoPublic;\n // Perform raw public operation on \"x\": return x^e (mod n)\n doPublic(x) {\n return x.modPowInt(this.e, this.n)\n }\n // doPrivate = RSADoPrivate;\n // Perform raw private operation on \"x\": return x^d (mod n)\n doPrivate(x) {\n if (this.p == null || this.q == null) {\n return x.modPow(this.d, this.n)\n }\n // TODO: re-calculate any missing CRT params\n var xp = x.mod(this.p).modPow(this.dmp1, this.p)\n var xq = x.mod(this.q).modPow(this.dmq1, this.q)\n while (xp.compareTo(xq) < 0) {\n xp = xp.add(this.p)\n }\n return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq)\n }\n //#endregion PROTECTED\n //#region PUBLIC\n // setPublic = RSASetPublic;\n // Set the public key fields N and e from hex strings\n setPublic(N, E) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = parseBigInt(N, 16)\n this.e = parseInt(E, 16)\n } else {\n console.error('Invalid RSA public key')\n }\n }\n // encrypt = RSAEncrypt;\n // Return the PKCS#1 RSA encryption of \"text\" as an even-length hex string\n encrypt(text) {\n var m = pkcs1pad2(text, (this.n.bitLength() + 7) >> 3)\n if (m == null) {\n return null\n }\n var c = this.doPublic(m)\n if (c == null) {\n return null\n }\n var h = c.toString(16)\n if ((h.length & 1) == 0) {\n return h\n } else {\n return '0' + h\n }\n }\n /**\n * 长文本加密\n * @param {string} string 待加密长文本\n * @returns {string} 加密后的base64编码\n */\n encryptLong(text) {\n var _this = this\n var maxLength = ((this.n.bitLength() + 7) >> 3) - 11\n try {\n var ct_1 = ''\n if (text.length > maxLength) {\n var lt = text.match(/.{1,117}/g)\n lt.forEach(function (entry) {\n var t1 = _this.encrypt(entry)\n ct_1 += t1\n })\n return hex2b64(ct_1)\n }\n var t = this.encrypt(text)\n var y = hex2b64(t)\n return y\n } catch (ex) {\n return false\n }\n }\n /**\n * 长文本解密\n * @param {string} string 加密后的base64编码\n * @returns {string} 解密后的原文\n */\n decryptLong(text) {\n var _this = this\n var maxLength = (this.n.bitLength() + 7) >> 3\n text = b64tohex(text)\n try {\n if (text.length > maxLength) {\n var ct_2 = ''\n var lt = text.match(/.{1,256}/g) // 128位解密。取256位\n lt.forEach(function (entry) {\n var t1 = _this.decrypt(entry)\n ct_2 += t1\n })\n return ct_2\n }\n var y = this.decrypt(text)\n return y\n } catch (ex) {\n return false\n }\n }\n // setPrivate = RSASetPrivate;\n // Set the private key fields N, e, and d from hex strings\n setPrivate(N, E, D) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = parseBigInt(N, 16)\n this.e = parseInt(E, 16)\n this.d = parseBigInt(D, 16)\n } else {\n console.error('Invalid RSA private key')\n }\n }\n // setPrivateEx = RSASetPrivateEx;\n // Set the private key fields N, e, d and CRT params from hex strings\n setPrivateEx(N, E, D, P, Q, DP, DQ, C) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = parseBigInt(N, 16)\n this.e = parseInt(E, 16)\n this.d = parseBigInt(D, 16)\n this.p = parseBigInt(P, 16)\n this.q = parseBigInt(Q, 16)\n this.dmp1 = parseBigInt(DP, 16)\n this.dmq1 = parseBigInt(DQ, 16)\n this.coeff = parseBigInt(C, 16)\n } else {\n console.error('Invalid RSA private key')\n }\n }\n // generate = RSAGenerate;\n // Generate a new random private key B bits long, using public expt E\n generate(B, E) {\n var rng = new SecureRandom()\n var qs = B >> 1\n this.e = parseInt(E, 16)\n var ee = new BigInteger(E, 16)\n for (;;) {\n for (;;) {\n this.p = new BigInteger(B - qs, 1, rng)\n if (this.p.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.p.isProbablePrime(10)) {\n break\n }\n }\n for (;;) {\n this.q = new BigInteger(qs, 1, rng)\n if (this.q.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.q.isProbablePrime(10)) {\n break\n }\n }\n if (this.p.compareTo(this.q) <= 0) {\n var t = this.p\n this.p = this.q\n this.q = t\n }\n var p1 = this.p.subtract(BigInteger.ONE)\n var q1 = this.q.subtract(BigInteger.ONE)\n var phi = p1.multiply(q1)\n if (phi.gcd(ee).compareTo(BigInteger.ONE) == 0) {\n this.n = this.p.multiply(this.q)\n this.d = ee.modInverse(phi)\n this.dmp1 = this.d.mod(p1)\n this.dmq1 = this.d.mod(q1)\n this.coeff = this.q.modInverse(this.p)\n break\n }\n }\n }\n // decrypt = RSADecrypt;\n // Return the PKCS#1 RSA decryption of \"ctext\".\n // \"ctext\" is an even-length hex string and the output is a plain string.\n decrypt(ctext) {\n var c = parseBigInt(ctext, 16)\n var m = this.doPrivate(c)\n if (m == null) {\n return null\n }\n return pkcs1unpad2(m, (this.n.bitLength() + 7) >> 3)\n }\n // Generate a new random private key B bits long, using public expt E\n generateAsync(B, E, callback) {\n var rng = new SecureRandom()\n var qs = B >> 1\n this.e = parseInt(E, 16)\n var ee = new BigInteger(E, 16)\n var rsa = this\n // These functions have non-descript names because they were originally for(;;) loops.\n // I don't know about cryptography to give them better names than loop1-4.\n var loop1 = () => {\n var loop4 = () => {\n if (rsa.p.compareTo(rsa.q) <= 0) {\n var t = rsa.p\n rsa.p = rsa.q\n rsa.q = t\n }\n var p1 = rsa.p.subtract(BigInteger.ONE)\n var q1 = rsa.q.subtract(BigInteger.ONE)\n var phi = p1.multiply(q1)\n if (phi.gcd(ee).compareTo(BigInteger.ONE) == 0) {\n rsa.n = rsa.p.multiply(rsa.q)\n rsa.d = ee.modInverse(phi)\n rsa.dmp1 = rsa.d.mod(p1)\n rsa.dmq1 = rsa.d.mod(q1)\n rsa.coeff = rsa.q.modInverse(rsa.p)\n setTimeout(function () {\n callback()\n }, 0) // escape\n } else {\n setTimeout(loop1, 0)\n }\n }\n var loop3 = () => {\n rsa.q = nbi()\n rsa.q.fromNumberAsync(qs, 1, rng, function () {\n rsa.q.subtract(BigInteger.ONE).gcda(ee, function (r) {\n if (r.compareTo(BigInteger.ONE) == 0 && rsa.q.isProbablePrime(10)) {\n setTimeout(loop4, 0)\n } else {\n setTimeout(loop3, 0)\n }\n })\n })\n }\n var loop2 = () => {\n rsa.p = nbi()\n rsa.p.fromNumberAsync(B - qs, 1, rng, function () {\n rsa.p.subtract(BigInteger.ONE).gcda(ee, function (r) {\n if (r.compareTo(BigInteger.ONE) == 0 && rsa.p.isProbablePrime(10)) {\n setTimeout(loop3, 0)\n } else {\n setTimeout(loop2, 0)\n }\n })\n })\n }\n setTimeout(loop2, 0)\n }\n setTimeout(loop1, 0)\n }\n }\n // Undo PKCS#1 (type 2, random) padding and, if valid, return the plaintext\n function pkcs1unpad2(d, n) {\n var b = d.toByteArray()\n var i = 0\n while (i < b.length && b[i] == 0) {\n ++i\n }\n if (b.length - i != n - 1 || b[i] != 2) {\n return null\n }\n ++i\n while (b[i] != 0) {\n if (++i >= b.length) {\n return null\n }\n }\n var ret = ''\n while (++i < b.length) {\n var c = b[i] & 255\n if (c < 128) {\n // utf-8 decode\n ret += String.fromCharCode(c)\n } else if (c > 191 && c < 224) {\n ret += String.fromCharCode(((c & 31) << 6) | (b[i + 1] & 63))\n ++i\n } else {\n ret += String.fromCharCode(((c & 15) << 12) | ((b[i + 1] & 63) << 6) | (b[i + 2] & 63))\n i += 2\n }\n }\n return ret\n }\n\n /**\n * Create a new JSEncryptRSAKey that extends Tom Wu's RSA key object.\n * This object is just a decorator for parsing the key parameter\n * @param {string|Object} key - The key in string format, or an object containing\n * the parameters needed to build a RSAKey object.\n */\n class JSEncryptRSAKey extends RSAKey {\n constructor(key = '') {\n super()\n if (key) {\n // If this is a string...\n if (typeof key === 'string') {\n this.parseKey(key)\n } else if (this.hasPrivateKeyProperty(key) || this.hasPublicKeyProperty(key)) {\n // Set the values for the key.\n this.parsePropertiesFrom(key)\n }\n }\n }\n\n /**\n * Method to parse a pem encoded string containing both a public or private key.\n * The method will translate the pem encoded string in a der encoded string and\n * will parse private key and public key parameters. This method accepts public key\n * in the rsaencryption pkcs #1 format (oid: 1.2.840.113549.1.1.1).\n *\n * @todo Check how many rsa formats use the same format of pkcs #1.\n *\n * The format is defined as:\n * PublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * PublicKey BIT STRING\n * }\n * Where AlgorithmIdentifier is:\n * AlgorithmIdentifier ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER, the OID of the enc algorithm\n * parameters ANY DEFINED BY algorithm OPTIONAL (NULL for PKCS #1)\n * }\n * and PublicKey is a SEQUENCE encapsulated in a BIT STRING\n * RSAPublicKey ::= SEQUENCE {\n * modulus INTEGER, -- n\n * publicExponent INTEGER -- e\n * }\n * it's possible to examine the structure of the keys obtained from openssl using\n * an asn.1 dumper as the one used here to parse the components: http://lapo.it/asn1js/\n * @argument {string} pem the pem encoded string, can include the BEGIN/END header/footer\n */\n parseKey(pem) {\n try {\n var modulus = 0\n var public_exponent = 0\n var reHex = /^\\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\\s*)+$/\n var der = reHex.test(pem) ? Hex.decode(pem) : Base64.unarmor(pem)\n var asn1 = ASN1.decode(der)\n // Fixes a bug with OpenSSL 1.0+ private keys\n if (asn1.sub.length === 3) {\n asn1 = asn1.sub[2].sub[0]\n }\n if (asn1.sub.length === 9) {\n // Parse the private key.\n modulus = asn1.sub[1].getHexStringValue() // bigint\n this.n = parseBigInt(modulus, 16)\n public_exponent = asn1.sub[2].getHexStringValue() // int\n this.e = parseInt(public_exponent, 16)\n var private_exponent = asn1.sub[3].getHexStringValue() // bigint\n this.d = parseBigInt(private_exponent, 16)\n var prime1 = asn1.sub[4].getHexStringValue() // bigint\n this.p = parseBigInt(prime1, 16)\n var prime2 = asn1.sub[5].getHexStringValue() // bigint\n this.q = parseBigInt(prime2, 16)\n var exponent1 = asn1.sub[6].getHexStringValue() // bigint\n this.dmp1 = parseBigInt(exponent1, 16)\n var exponent2 = asn1.sub[7].getHexStringValue() // bigint\n this.dmq1 = parseBigInt(exponent2, 16)\n var coefficient = asn1.sub[8].getHexStringValue() // bigint\n this.coeff = parseBigInt(coefficient, 16)\n } else if (asn1.sub.length === 2) {\n // Parse the public key.\n var bit_string = asn1.sub[1]\n var sequence = bit_string.sub[0]\n modulus = sequence.sub[0].getHexStringValue()\n this.n = parseBigInt(modulus, 16)\n public_exponent = sequence.sub[1].getHexStringValue()\n this.e = parseInt(public_exponent, 16)\n } else {\n return false\n }\n return true\n } catch (ex) {\n return false\n }\n }\n\n /**\n * Check if the object contains the necessary parameters to populate the rsa modulus\n * and public exponent parameters.\n * @param {Object} [obj={}] - An object that may contain the two public key\n * parameters\n * @returns {boolean} true if the object contains both the modulus and the public exponent\n * properties (n and e)\n * @todo check for types of n and e. N should be a parseable bigInt object, E should\n * be a parseable integer number\n */\n hasPublicKeyProperty(obj) {\n obj = obj || {}\n return obj.hasOwnProperty('n') && obj.hasOwnProperty('e')\n }\n /**\n * Check if the object contains ALL the parameters of an RSA key.\n * @param {Object} [obj={}] - An object that may contain nine rsa key\n * parameters\n * @returns {boolean} true if the object contains all the parameters needed\n * @todo check for types of the parameters all the parameters but the public exponent\n * should be parseable bigint objects, the public exponent should be a parseable integer number\n */\n hasPrivateKeyProperty(obj) {\n obj = obj || {}\n return (\n obj.hasOwnProperty('n') &&\n obj.hasOwnProperty('e') &&\n obj.hasOwnProperty('d') &&\n obj.hasOwnProperty('p') &&\n obj.hasOwnProperty('q') &&\n obj.hasOwnProperty('dmp1') &&\n obj.hasOwnProperty('dmq1') &&\n obj.hasOwnProperty('coeff')\n )\n }\n /**\n * Parse the properties of obj in the current rsa object. Obj should AT LEAST\n * include the modulus and public exponent (n, e) parameters.\n * @param {Object} obj - the object containing rsa parameters\n */\n parsePropertiesFrom(obj) {\n this.n = obj.n\n this.e = obj.e\n if (obj.hasOwnProperty('d')) {\n this.d = obj.d\n this.p = obj.p\n this.q = obj.q\n this.dmp1 = obj.dmp1\n this.dmq1 = obj.dmq1\n this.coeff = obj.coeff\n }\n }\n }\n\n /**\n *\n * @param {Object} [options = {}] - An object to customize JSEncrypt behaviour\n * possible parameters are:\n * - default_key_size {number} default: 1024 the key size in bit\n * - default_public_exponent {string} default: '010001' the hexadecimal representation of the public exponent\n * - log {boolean} default: false whether log warn/error or not\n */\n\n JSEncrypt = function (options) {\n options = options || {}\n this.default_key_size = parseInt(options.default_key_size, 10) || 1024\n this.default_public_exponent = options.default_public_exponent || '010001' // 65537 default openssl public exponent for rsa key type\n this.log = options.log || false\n // The private and public key.\n this.key = null\n }\n /**\n * Method to set the rsa key parameter (one method is enough to set both the public\n * and the private key, since the private key contains the public key paramenters)\n * Log a warning if logs are enabled\n * @param {Object|string} key the pem encoded string or an object (with or without header/footer)\n * @public\n */\n JSEncrypt.prototype.setKey = function (key) {\n if (this.log && this.key) {\n console.warn('A key was already set, overriding existing.')\n }\n this.key = new JSEncryptRSAKey(key)\n }\n /**\n * Proxy method for setKey, for api compatibility\n * @see setKey\n * @public\n */\n JSEncrypt.prototype.setPrivateKey = function (privkey) {\n // Create the key.\n this.setKey(privkey)\n }\n /**\n * Proxy method for setKey, for api compatibility\n * @see setKey\n * @public\n */\n JSEncrypt.prototype.setPublicKey = function (pubkey) {\n // Sets the public key.\n this.setKey(pubkey)\n }\n /**\n * Proxy method for RSAKey object's decrypt, decrypt the string using the private\n * components of the rsa key object. Note that if the object was not set will be created\n * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor\n * @param {string} str base64 encoded crypted string to decrypt\n * @return {string} the decrypted string\n * @public\n */\n JSEncrypt.prototype.decrypt = function (str) {\n // Return the decrypted string.\n try {\n return this.getKey().decrypt(b64tohex(str))\n } catch (ex) {\n return false\n }\n }\n /**\n * Proxy method for RSAKey object's encrypt, encrypt the string using the public\n * components of the rsa key object. Note that if the object was not set will be created\n * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor\n * @param {string} str the string to encrypt\n * @return {string} the encrypted string encoded in base64\n * @public\n */\n JSEncrypt.prototype.encrypt = function (str) {\n // Return the encrypted string.\n try {\n return hex2b64(this.getKey().encrypt(str))\n } catch (ex) {\n return false\n }\n }\n /**\n * 分段加密长字符串\n * @param {string} str the string to encrypt\n * @return {string} the encrypted string encoded in base64\n * @public\n */\n JSEncrypt.prototype.encryptLong = function (str) {\n try {\n var encrypted = this.getKey().encryptLong(str) || ''\n var uncrypted = this.getKey().decryptLong(encrypted) || ''\n var count = 0\n var reg = /null$/g\n while (reg.test(uncrypted)) {\n // 如果加密出错,重新加密\n count++\n encrypted = this.getKey().encryptLong(str) || ''\n uncrypted = this.getKey().decryptLong(encrypted) || ''\n // console.log('加密出错次数', count)\n if (count > 10) {\n // 重复加密不能大于10次\n // console.log('加密次数过多')\n break\n }\n }\n return encrypted\n } catch (ex) {\n return false\n }\n }\n /**\n * Getter for the current JSEncryptRSAKey object. If it doesn't exists a new object\n * will be created and returned\n * @param {callback} [cb] the callback to be called if we want the key to be generated\n * in an async fashion\n * @returns {JSEncryptRSAKey} the JSEncryptRSAKey object\n * @public\n */\n JSEncrypt.prototype.getKey = function (cb) {\n // Only create new if it does not exist.\n if (!this.key) {\n // Get a new private key.\n this.key = new JSEncryptRSAKey()\n if (cb && {}.toString.call(cb) === '[object Function]') {\n this.key.generateAsync(this.default_key_size, this.default_public_exponent, cb)\n return\n }\n // Generate the key.\n this.key.generate(this.default_key_size, this.default_public_exponent)\n }\n return this.key\n }\n JSEncrypt.version = '3.1.4'\n}\nexport default JSEncrypt\n","import { CloudbaseAdapter, SDKAdapterInterface, NodeAdapterInterface } from '@cloudbase/adapter-interface'\nimport * as Web from './platforms/web'\nimport { isArray } from '../libs/util'\n\nexport enum RUNTIME {\n WEB = 'web',\n WX_MP = 'wx_mp', // 微信小程序\n}\n\ntype ICloudbaseAdapter = CloudbaseAdapter & {\n genAdapter: (options?: any) => SDKAdapterInterface | NodeAdapterInterface\n}\n\nexport function useAdapters(adapters: ICloudbaseAdapter | ICloudbaseAdapter[], options?: any) {\n const adapterList: ICloudbaseAdapter[] = isArray(adapters)\n ? (adapters as ICloudbaseAdapter[])\n : [adapters as ICloudbaseAdapter]\n for (const adapter of adapterList) {\n const { isMatch, genAdapter, runtime } = adapter\n if (isMatch()) {\n return {\n adapter: { isMatch, ...genAdapter(options) },\n runtime,\n }\n }\n }\n}\n\nexport function useDefaultAdapter() {\n return {\n adapter: { ...Web.genAdapter() },\n runtime: RUNTIME.WEB,\n }\n}\n","import {\n SDKAdapterInterface,\n AbstractSDKRequest,\n IRequestOptions,\n ResponseObject,\n IUploadRequestOptions,\n IRequestConfig,\n IRequestMethod,\n IFetchOptions,\n} from '@cloudbase/adapter-interface'\nimport { isFormData, formatUrl, toQueryString } from '../../libs/util'\nimport { getProtocol } from '../../constants/common'\n\n/**\n * @class WebRequest\n */\nclass WebRequest extends AbstractSDKRequest {\n // 默认不限超时\n private readonly timeout: number\n // 超时提示文案\n private readonly timeoutMsg: string\n // 超时受限请求类型,默认所有请求均受限\n private readonly restrictedMethods: Array<IRequestMethod>\n constructor(config: IRequestConfig) {\n super()\n const { timeout, timeoutMsg, restrictedMethods } = config\n this.timeout = timeout || 0\n this.timeoutMsg = timeoutMsg || '请求超时'\n this.restrictedMethods = restrictedMethods || ['get', 'post', 'upload', 'download']\n }\n public get(options: IRequestOptions): Promise<ResponseObject> {\n return this.request(\n {\n ...options,\n method: 'get',\n },\n this.restrictedMethods.includes('get'),\n )\n }\n public post(options: IRequestOptions): Promise<ResponseObject> {\n return this.request(\n {\n ...options,\n method: 'post',\n },\n this.restrictedMethods.includes('post'),\n )\n }\n public put(options: IRequestOptions): Promise<ResponseObject> {\n return this.request({\n ...options,\n method: 'put',\n })\n }\n public upload(options: IUploadRequestOptions): Promise<ResponseObject> {\n const { data, file, name, method, headers = {} } = options\n const reqMethod = { post: 'post', put: 'put' }[method?.toLowerCase()] || 'put'\n // 上传方式为post时,需转换为FormData\n const formData = new FormData()\n if (reqMethod === 'post') {\n Object.keys(data).forEach((key) => {\n formData.append(key, data[key])\n })\n formData.append('key', name)\n formData.append('file', file)\n return this.request(\n {\n ...options,\n data: formData,\n method: reqMethod,\n },\n this.restrictedMethods.includes('upload'),\n )\n }\n return this.request(\n {\n ...options,\n method: 'put',\n headers,\n body: file,\n },\n this.restrictedMethods.includes('upload'),\n )\n }\n public async download(options: IRequestOptions): Promise<any> {\n try {\n const { data } = await this.get({\n ...options,\n headers: {}, // 下载资源请求不经过service,header清空\n responseType: 'blob',\n })\n const url = window.URL.createObjectURL(new Blob([data]))\n const fileName = decodeURIComponent(new URL(options.url).pathname.split('/').pop() || '')\n const link = document.createElement('a')\n\n link.href = url\n link.setAttribute('download', fileName)\n link.style.display = 'none'\n\n document.body.appendChild(link)\n link.click()\n // 回收内存\n window.URL.revokeObjectURL(url)\n document.body.removeChild(link)\n } catch (e) {}\n return new Promise((resolve) => {\n resolve({\n statusCode: 200,\n tempFilePath: options.url,\n })\n })\n }\n async fetch(options: IFetchOptions & { shouldThrowOnError?: boolean }): Promise<ResponseObject> {\n const abortController = new AbortController()\n const { url, enableAbort = false, stream = false, signal, timeout: _timeout, shouldThrowOnError = true } = options\n\n const timeout = _timeout ?? this.timeout\n\n if (signal) {\n if (signal.aborted) abortController.abort()\n signal.addEventListener('abort', () => abortController.abort())\n }\n\n let timer = null\n if (enableAbort && timeout) {\n timer = setTimeout(() => {\n console.warn(this.timeoutMsg)\n abortController.abort(new Error(this.timeoutMsg))\n }, timeout)\n }\n\n const res = await fetch(url, {\n ...options,\n signal: abortController.signal,\n })\n .then(async (response) => {\n clearTimeout(timer)\n if (shouldThrowOnError) {\n // 404 等等也会进 resolve,所以要再通过 ok 判断\n return response.ok ? response : Promise.reject(await response.json())\n }\n return response\n })\n .catch((x) => {\n clearTimeout(timer)\n if (shouldThrowOnError) {\n return Promise.reject(x)\n }\n })\n\n return {\n // eslint-disable-next-line no-nested-ternary\n data: stream ? res.body : res.headers.get('content-type')?.includes('application/json') ? res.json() : res.text(),\n statusCode: res.status,\n header: res.headers,\n }\n }\n /**\n * @param {IRequestOptions} options\n * @param {boolean} enableAbort 是否超时中断请求\n */\n protected request(options: IRequestOptions, enableAbort = false): Promise<ResponseObject> {\n const method = String(options.method).toLowerCase() || 'get'\n return new Promise((resolve) => {\n const { url, headers = {}, data, responseType, withCredentials, body, onUploadProgress } = options\n const realUrl = formatUrl(getProtocol(), url, method === 'get' ? data : {})\n const ajax = new XMLHttpRequest()\n ajax.open(method, realUrl)\n responseType && (ajax.responseType = responseType)\n Object.keys(headers).forEach((key) => {\n ajax.setRequestHeader(key, headers[key])\n })\n let timer\n if (onUploadProgress) {\n ajax.upload.addEventListener('progress', onUploadProgress)\n }\n ajax.onreadystatechange = () => {\n const result: ResponseObject = {}\n if (ajax.readyState === 4) {\n const headers = ajax.getAllResponseHeaders()\n const arr = headers.trim().split(/[\\r\\n]+/)\n // Create a map of header names to values\n const headerMap = {}\n arr.forEach((line) => {\n const parts = line.split(': ')\n const header = parts.shift().toLowerCase()\n const value = parts.join(': ')\n headerMap[header] = value\n })\n result.header = headerMap\n result.statusCode = ajax.status\n try {\n // 上传post请求返回数据格式为xml,此处容错\n result.data = responseType === 'blob' ? ajax.response : JSON.parse(ajax.responseText)\n } catch (e) {\n result.data = responseType === 'blob' ? ajax.response : ajax.responseText\n }\n clearTimeout(timer)\n resolve(result)\n }\n }\n if (enableAbort && this.timeout) {\n timer = setTimeout(() => {\n console.warn(this.timeoutMsg)\n ajax.abort()\n }, this.timeout)\n }\n // 处理 payload\n let payload\n if (isFormData(data)) {\n // FormData,不处理\n payload = data\n } else if (headers['content-type'] === 'application/x-www-form-urlencoded') {\n payload = toQueryString(data)\n } else if (body) {\n payload = body\n } else {\n // 其它情况\n payload = data ? JSON.stringify(data) : undefined\n }\n\n if (withCredentials) {\n ajax.withCredentials = true\n }\n ajax.send(payload)\n })\n }\n}\n\nfunction genAdapter() {\n const adapter: SDKAdapterInterface & { type?: 'default' | '' } = {\n type: 'default',\n root: window,\n reqClass: WebRequest,\n wsClass: WebSocket,\n localStorage,\n }\n return adapter\n}\n\nexport { genAdapter, WebRequest }\n","let sdkName = '@cloudbase/js-sdk'\nexport function setSdkName(name: string) {\n sdkName = name\n}\nexport function getSdkName() {\n return sdkName\n}\n\nlet PROTOCOL = 'https:'\n\nexport function setProtocol(protocol: 'http:' | 'https:') {\n PROTOCOL = protocol\n}\n\nexport function getProtocol() {\n return PROTOCOL\n}\n// 是否为开发模式\nexport const IS_DEBUG_MODE = typeof process === 'undefined' || typeof process.env === 'undefined' ? false : process.env.NODE_ENV === 'development'\n// 问答社区链接\nexport const COMMUNITY_SITE_URL = 'https://support.qq.com/products/148793'\n","export const ERRORS = {\n INVALID_PARAMS: 'INVALID_PARAMS',\n INVALID_SYNTAX: 'INVALID_SYNTAX',\n INVALID_OPERATION: 'INVALID_OPERATION',\n OPERATION_FAIL: 'OPERATION_FAIL',\n NETWORK_ERROR: 'NETWORK_ERROR',\n UNKOWN_ERROR: 'UNKOWN_ERROR',\n}\n","export * from './common'\nexport * from './errors'\n\nexport const OATUH_LOGINTYPE = 'constants'\n","import { printGroupLog } from '../libs/util'\nimport { IS_DEBUG_MODE } from '../constants'\n\ninterface ICatchErrorsDecoratorOptions {\n mode?: 'sync' | 'async';\n customInfo?: {\n className?: string;\n methodName?: string;\n };\n title?: string;\n messages?: string[];\n}\n// firefox的stack格式与chrome不同\nlet isFirefox = false\nif (typeof navigator !== 'undefined' && navigator.userAgent) {\n isFirefox = navigator.userAgent.indexOf('Firefox') !== -1\n}\n/**\n * decorate在stack中一般都特定的规范\n */\nconst REG_STACK_DECORATE = isFirefox\n ? /(\\.js\\/)?__decorate(\\$\\d+)?<@.*\\d$/\n : /(\\/\\w+\\.js\\.)?__decorate(\\$\\d+)?\\s*\\(.*\\)$/\nconst REG_STACK_LINK = /https?:\\/\\/.+:\\d*\\/.*\\.js:\\d+:\\d+/\n/**\n * debug模式强化日志信息\n * @param options\n */\nexport function catchErrorsDecorator(options: ICatchErrorsDecoratorOptions) {\n const { mode = 'async', customInfo = {}, title, messages = [] } = options\n\n return function (\n target: any,\n methodName: string,\n descriptor: TypedPropertyDescriptor<Function>\n ) {\n // 生产环境禁用\n if (!IS_DEBUG_MODE) {\n return\n }\n const className = customInfo.className || target.constructor.name\n const fnName = customInfo.methodName || methodName\n const fn = descriptor.value\n\n // 被decorator装饰的源码link\n // 在descriptor.value外部此处创建的stack层次可触达源码\n // 而descriptor.value内部有可能由于stack太深无法触达\n const sourceLink = getSourceLink(new Error())\n\n if (mode === 'sync') {\n descriptor.value = function (...args: any[]) {\n // 此处的stack作用主要是为了获取被decorator装饰的源码class和method名称\n const innerErr: any = getRewritedError({\n err: new Error(),\n className,\n methodName: fnName,\n sourceLink,\n })\n try {\n return fn.apply(this, args)\n } catch (err) {\n let failErr = err\n const { message: errMsg, error, error_description: errorDescription } = err\n const logs: any = {\n title: title || `${className}.${fnName} failed`,\n content: [{\n type: 'error',\n body: err,\n }],\n }\n // 只特殊处理SDK业务逻辑抛出的错误-JSON string\n if (errMsg && /^\\{.*\\}$/.test(errMsg)) {\n const msg = JSON.parse(errMsg)\n logs.subtitle = errMsg\n if (msg.code) {\n if (innerErr) {\n innerErr.code = msg.code\n innerErr.msg = msg.msg\n } else {\n err.code = msg.code\n err.message = msg.msg\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n }\n\n // oauth 错误特殊处理\n if (error && errorDescription) {\n logs.subtitle = errorDescription\n if (innerErr) {\n innerErr.code = error\n innerErr.msg = errorDescription\n } else {\n err.code = error\n err.message = errorDescription\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n printGroupLog(logs)\n throw failErr\n }\n }\n } else {\n descriptor.value = async function (...args: any[]) {\n const innerErr: any = getRewritedError({\n err: new Error(),\n className,\n methodName: fnName,\n sourceLink,\n })\n\n try {\n return await fn.apply(this, args)\n } catch (err) {\n let failErr = err\n const { message: errMsg, error, error_description: errorDescription } = err\n const logs: any = {\n title: title || `${className}.${fnName} failed`,\n content: [{\n type: 'error',\n body: err,\n }],\n }\n // 只特殊处理SDK业务逻辑抛出的错误-JSON string\n if (errMsg && /^\\{.*\\}$/.test(errMsg)) {\n const msg = JSON.parse(errMsg)\n logs.subtitle = msg\n if (msg.code) {\n if (innerErr) {\n innerErr.code = msg.code\n innerErr.message = msg.msg\n } else {\n err.code = msg.code\n err.message = msg.msg\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n }\n\n // oauth 错误特殊处理\n if (error && errorDescription) {\n logs.subtitle = errorDescription\n if (innerErr) {\n innerErr.code = error\n innerErr.msg = errorDescription\n } else {\n err.code = error\n err.message = errorDescription\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n printGroupLog(logs)\n throw failErr\n }\n }\n }\n }\n}\n\n/**\n * 在原始堆栈中查找装饰器条目并返回源码链接link\n * @param err\n */\nfunction getSourceLink(err: Error) {\n let sourceLink = ''\n const outterErrStacks = err.stack.split('\\n')\n const indexOfDecorator = outterErrStacks.findIndex(str => REG_STACK_DECORATE.test(str))\n\n if (indexOfDecorator !== -1) {\n const match = REG_STACK_LINK.exec(outterErrStacks[indexOfDecorator + 1] || '')\n\n sourceLink = match ? match[0] : ''\n }\n return sourceLink\n}\n\n/**\n * 在原始堆栈中查找装饰器条目,剔除其后的无用堆栈,并将链接替换为源码link\n * @param options\n */\nfunction getRewritedError(options: {\n err: Error;\n className: string;\n methodName: string;\n sourceLink: string;\n}) {\n const { err, className, methodName, sourceLink } = options\n // 找不到源码link返回null,后续逻辑将打印原堆栈信息\n if (!sourceLink) {\n return null\n }\n\n const innerErrStack = err.stack.split('\\n')\n const REG_STACK_INNER_METHOD = isFirefox\n ? /^catchErrorsDecorator\\/<\\/descriptor.value@.*\\d$/\n : new RegExp(`${className}\\\\.descriptor.value\\\\s*\\\\[as\\\\s${methodName}\\\\]\\\\s*\\\\(.*\\\\)$`)\n const REG_STACK_INNER_METHOD_WITHOUT_LINK = isFirefox\n ? /^catchErrorsDecorator\\/<\\/descriptor.value/\n : new RegExp(`${className}\\\\.descriptor.value\\\\s*\\\\[as\\\\s${methodName}\\\\]`)\n const indexOfSource = innerErrStack.findIndex(str => REG_STACK_INNER_METHOD.test(str))\n let innerErr: Error\n if (indexOfSource !== -1) {\n // @ts-ignore\n const realErrStack = innerErrStack.filter((v, i) => i > indexOfSource)\n realErrStack.unshift(innerErrStack[indexOfSource]\n .replace(REG_STACK_INNER_METHOD_WITHOUT_LINK, `${className}.${methodName}`)\n .replace(REG_STACK_LINK, sourceLink))\n innerErr = new Error()\n innerErr.stack = `${isFirefox ? '@debugger' : 'Error'}\\n${realErrStack.join('\\n')}`\n }\n return innerErr\n}\n","export * from './decorators'\n","import { StorageInterface, AbstractStorage, SDKAdapterInterface } from '@cloudbase/adapter-interface'\nimport { ICloudbaseCache, ICacheConfig } from '@cloudbase/types/cache'\nimport { KV, Persistence, ICloudbasePlatformInfo } from '@cloudbase/types'\nimport { printWarn } from './util'\nimport { ERRORS, getSdkName } from '../constants'\n\n/**\n * persitence=none时登录态保存在内存中\n */\nclass TcbCacheObject extends AbstractStorage {\n private readonly root: any\n constructor(root: any) {\n super()\n this.root = root\n if (!root.tcbCacheObject) {\n root.tcbCacheObject = {}\n }\n }\n public setItem(key: string, value: any) {\n this.root.tcbCacheObject[key] = value\n }\n public getItem(key: string) {\n return this.root.tcbCacheObject[key]\n }\n public removeItem(key: string) {\n delete this.root.tcbCacheObject[key]\n }\n public clear() {\n delete this.root.tcbCacheObject\n }\n}\n/**\n * 工厂函数\n */\nfunction createStorage(persistence: Persistence, adapter: SDKAdapterInterface): StorageInterface {\n switch (persistence) {\n case 'local':\n if (!adapter.localStorage) {\n printWarn(ERRORS.INVALID_PARAMS, 'localStorage is not supported on current platform')\n // 不支持localstorage的平台降级为none\n return new TcbCacheObject(adapter.root)\n }\n return adapter.localStorage\n case 'none':\n return new TcbCacheObject(adapter.root)\n default:\n if (!adapter.localStorage) {\n printWarn(ERRORS.INVALID_PARAMS, 'localStorage is not supported on current platform')\n // 不支持localstorage的平台降级为none\n return new TcbCacheObject(adapter.root)\n }\n return adapter.localStorage\n }\n}\n\nexport class CloudbaseCache implements ICloudbaseCache {\n public keys: KV<string> = {}\n\n private persistenceTag: Persistence\n private platformInfo: ICloudbasePlatformInfo\n private storage: StorageInterface\n\n constructor(config: ICacheConfig) {\n const { persistence, platformInfo = {}, keys = {} } = config\n this.platformInfo = platformInfo\n if (!this.storage) {\n this.persistenceTag = this.platformInfo.adapter.primaryStorage || persistence\n this.storage = createStorage(this.persistenceTag, this.platformInfo.adapter)\n this.keys = keys\n }\n }\n /**\n * @getter storage模式-同步/异步\n */\n get mode() {\n return this.storage.mode || 'sync'\n }\n get persistence(): Persistence {\n return this.persistenceTag\n }\n\n public setStore(key: string, value: any, version?: any) {\n if (this.mode === 'async') {\n printWarn(ERRORS.INVALID_OPERATION, 'current platform\\'s storage is asynchronous, please use setStoreAsync insteed')\n return\n }\n if (!this.storage) {\n return\n }\n\n try {\n const val = {\n version: version || 'localCachev1',\n content: value,\n }\n this.storage.setItem(key, JSON.stringify(val))\n } catch (e) {\n throw new Error(JSON.stringify({\n code: ERRORS.OPERATION_FAIL,\n msg: `[${getSdkName()}][${ERRORS.OPERATION_FAIL}]setStore failed`,\n info: e,\n }))\n }\n\n return\n }\n public async setStoreAsync(key: string, value: any, version?: any) {\n if (!this.storage) {\n return\n }\n\n try {\n const val = {\n version: version || 'localCachev1',\n content: value,\n }\n await this.storage.setItem(key, JSON.stringify(val))\n } catch (e) {\n return\n }\n\n return\n }\n public getStore(key: string, version?: string) {\n if (this.mode === 'async') {\n printWarn(ERRORS.INVALID_OPERATION, 'current platform\\'s storage is asynchronous, please use getStoreAsync insteed')\n return\n }\n try {\n // 测试用例使用\n if (typeof process !== 'undefined' && process.env?.tcb_token) {\n return process.env.tcb_token\n }\n\n if (!this.storage) {\n return ''\n }\n } catch (e) {\n return ''\n }\n\n version = version || 'localCachev1'\n\n const content = this.storage.getItem(key)\n if (!content) {\n return ''\n }\n\n if (content.indexOf(version) >= 0) {\n const d = JSON.parse(content)\n return d.content\n }\n return ''\n }\n public async getStoreAsync(key: string, version?: string) {\n try {\n // 测试用例使用\n if (typeof process !== 'undefined' && process.env?.tcb_token) {\n return process.env.tcb_token\n }\n\n if (!this.storage) {\n return ''\n }\n } catch (e) {\n return ''\n }\n\n version = version || 'localCachev1'\n\n const content = await this.storage.getItem(key)\n if (!content) {\n return ''\n }\n\n if (content.indexOf(version) >= 0) {\n const d = JSON.parse(content)\n return d.content\n }\n return ''\n }\n public removeStore(key: string) {\n if (this.mode === 'async') {\n printWarn(ERRORS.INVALID_OPERATION, 'current platform\\'s storage is asynchronous, please use removeStoreAsync insteed')\n return\n }\n this.storage.removeItem(key)\n }\n public async removeStoreAsync(key: string) {\n await this.storage.removeItem(key)\n }\n}\n","import { isString, isInstanceOf } from './util'\nimport { Listeners, ICloudbaseEventEmitter } from '@cloudbase/types/events'\n\n\n/**\n * @private\n * @function _addEventListener - 添加监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @param {Listeners} listeners - 已存响应函数集合\n */\nfunction customeAddEventListener(name: string, listener: Function, listeners: Listeners) {\n listeners[name] = listeners[name] || []\n listeners[name].push(listener)\n}\n/**\n * @private\n * @function _removeEventListener - 移除监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @param {Listeners} listeners - 已存响应函数集合\n */\nfunction customRemoveEventListener(name: string, listener: Function, listeners: Listeners) {\n if (listeners?.[name]) {\n const index = listeners[name].indexOf(listener)\n if (index !== -1) {\n listeners[name].splice(index, 1)\n }\n }\n}\ninterface IEvent {\n name: string;\n target: any;\n data: any;\n}\n/**\n * 自定义事件\n * @class CloudbaseEvent\n * @param {string} name - 类型\n * @param {any} data - 数据\n */\nexport class CloudbaseEvent implements IEvent {\n public readonly name: string\n public target: any\n public data: any\n\n constructor(name: string, data: any) {\n this.data = data || null\n this.name = name\n }\n}\n/**\n * 自定义错误事件\n * @class IErrorEvent\n * @extends CloudbaseEvent\n * @param {Error} error - 错误信息对象\n * @param {any} data - 数据\n */\nexport class IErrorEvent extends CloudbaseEvent {\n public readonly error: Error\n constructor(error: Error, data?: any) {\n super('error', { error, data })\n this.error = error\n }\n}\n\n/**\n * @class CloudbaseEventEmitter\n */\nexport class CloudbaseEventEmitter implements ICloudbaseEventEmitter {\n /**\n * @private\n * @readonly\n * @property {Listeners} listeners - 响应函数集合\n * @default `{}`\n */\n private readonly listeners: Listeners = {}\n\n /**\n * @public\n * @method on - 添加监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @return `this`\n */\n public on(name: string, listener: Function): this {\n customeAddEventListener(name, listener, this.listeners)\n return this\n }\n /**\n * @public\n * @method off - 移除监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @return `this`\n */\n public off(name: string, listener: Function): this {\n customRemoveEventListener(name, listener, this.listeners)\n return this\n }\n /**\n * @public\n * @method fire - 触发事件\n * @param {string|CloudbaseEvent} event - event\n * @return `this`\n */\n public fire(event: string | CloudbaseEvent, data?: any): this {\n // 打印错误信息\n if (isInstanceOf(event, IErrorEvent)) {\n console.error((event as IErrorEvent).error)\n return this\n }\n\n const ev: CloudbaseEvent = isString(event) ? new CloudbaseEvent(event as string, data || {}) : event as CloudbaseEvent\n\n const { name } = ev\n\n if (this.listens(name)) {\n ev.target = this\n\n const handlers = this.listeners[name] ? [...this.listeners[name]] : []\n for (const fn of handlers) {\n fn.call(this, ev)\n }\n }\n\n return this\n }\n\n /**\n * @private\n * @method listens - 判断是否监听了name事件\n * @param {string} name - event名称\n * @return `boolean`\n */\n private listens(name: string): boolean {\n return this.listeners[name] && this.listeners[name].length > 0\n }\n}\n\n\nconst eventEmitter = new CloudbaseEventEmitter()\n\nexport function addEventListener(event: string, callback: Function) {\n eventEmitter.on(event, callback)\n}\n\nexport function activateEvent(event: string, data: any = {}) {\n eventEmitter.fire(event, data)\n}\n\nexport function removeEventListener(event: string, callback: Function) {\n eventEmitter.off(event, callback)\n}\n","import { KV } from '@cloudbase/types'\nimport { getSdkName } from '../constants'\n\nexport function isArray(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object Array]'\n}\nexport function isString(val: any): boolean {\n return typeof val === 'string'\n}\nexport function isUndefined(val: any): boolean {\n return typeof val === 'undefined'\n}\nexport function isPalinObject(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object Object]'\n}\nexport function isNull(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object Null]'\n}\nexport function isInstanceOf(instance: any, construct: any): boolean {\n return instance instanceof construct\n}\nexport function isFormData(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object FormData]'\n}\nexport function genSeqId(): string {\n return Math.random().toString(16)\n .slice(2)\n}\nexport function generateRequestId() {\n let d = new Date().getTime()\n let d2 = (Date?.now && Date.now() * 1000) || 0\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n let r = Math.random() * 16\n if (d > 0) {\n r = (d + r) % 16 | 0\n d = Math.floor(d / 16)\n } else {\n r = (d2 + r) % 16 | 0\n d2 = Math.floor(d2 / 16)\n }\n return (c === 'x' ? r : (r & 0x7) | 0x8).toString(16)\n })\n}\nexport function formatUrl(PROTOCOL: string, url: string, query: KV<any> = {}): string {\n const urlHasQuery = /\\?/.test(url)\n let queryString = ''\n Object.keys(query).forEach((key) => {\n if (queryString === '') {\n !urlHasQuery && (url += '?')\n } else {\n queryString += '&'\n }\n queryString += `${key}=${encodeURIComponent(query[key])}`\n })\n url += queryString\n if (/^http(s)?:\\/\\//.test(url)) {\n return url\n }\n return `${PROTOCOL}${url}`\n}\n\nexport function toQueryString(query: KV<any> = {}) {\n const queryString = []\n Object.keys(query).forEach((key) => {\n queryString.push(`${key}=${encodeURIComponent(query[key])}`)\n })\n return queryString.join('&')\n}\n\nexport function getQuery(name: string, url?: string) {\n if (typeof window === 'undefined') {\n return false\n }\n // 参数:变量名,url为空则表从当前页面的url中取\n const u = url || decodeURIComponent(window.location.search)\n const reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`)\n const r = u.substr(u.indexOf('?') + 1).match(reg)\n return r !== null && r !== undefined ? r[2] : ''\n}\n\nexport const getHash = function (name: string) {\n if (typeof window === 'undefined') {\n return ''\n }\n const matches = window.location.hash.match(new RegExp(`[#?&/]${name}=([^&#]*)`))\n return matches ? matches[1] : ''\n}\n\nexport function removeParam(key: string, sourceURL: string) {\n let rtn = sourceURL.split('?')[0]\n let param\n let params = []\n const queryString = sourceURL.indexOf('?') !== -1 ? sourceURL.split('?')[1] : ''\n if (queryString !== '') {\n params = queryString.split('&')\n for (let i = params.length - 1; i >= 0; i -= 1) {\n /* eslint-disable-next-line */\n param = params[i].split('=')[0]\n if (param === key) {\n params.splice(i, 1)\n }\n }\n rtn = `${rtn}?${params.join('&')}`\n }\n return rtn\n}\n\nexport function createPromiseCallback() {\n let cb: any = {}\n if (!Promise) {\n cb = () => {}\n cb.promise = {}\n\n const throwPromiseNotDefined = () => {\n throw new Error('Your Node runtime does support ES6 Promises. '\n + 'Set \"global.Promise\" to your preferred implementation of promises.',)\n }\n\n Object.defineProperty(cb.promise, 'then', { get: throwPromiseNotDefined })\n Object.defineProperty(cb.promise, 'catch', { get: throwPromiseNotDefined })\n return cb\n }\n\n const promise = new Promise((resolve, reject) => {\n cb = (err, data) => {\n if (err) return reject(err)\n return resolve(data)\n }\n })\n cb.promise = promise\n return cb\n}\n\nexport function execCallback(fn: Function | null | undefined, err: any, data = null) {\n if (fn && typeof fn === 'function') {\n return fn(err, data)\n }\n if (err) {\n throw err\n }\n return data\n}\n\nexport function printWarn(error: string, msg: string) {\n console.warn(`[${getSdkName()}][${error}]:${msg}`)\n}\n\nexport function printError(error: string, msg: string) {\n console.error({\n code: error,\n msg: `[${getSdkName()}][${error}]:${msg}`,\n })\n}\nexport function printInfo(error: string, msg: string) {\n console.log(`[${getSdkName()}][${error}]:${msg}`)\n}\nexport function throwError(error: string, msg: string) {\n throw new Error(JSON.stringify({\n code: error,\n msg: `[${getSdkName()}][${error}]:${msg}`,\n }),)\n}\n\ninterface IPrintGroupLogOptions {\n title: string\n subtitle: string | object\n content: {\n type: 'info' | 'warn' | 'error'\n body: string | Error\n }[]\n printTrace?: boolean\n collapsed?: boolean\n}\nexport function printGroupLog(options: IPrintGroupLogOptions) {\n const { title, subtitle = '', content = [], printTrace = false, collapsed = false } = options\n if (collapsed) {\n (console.groupCollapsed || console.error)(title, subtitle)\n } else {\n (console.group || console.error)(title, subtitle)\n }\n for (const tip of content) {\n const { type, body } = tip\n switch (type) {\n case 'info':\n console.log(body)\n break\n case 'warn':\n console.warn(body)\n break\n case 'error':\n console.error(body)\n break\n }\n }\n if (printTrace) {\n (console.trace || console.log)('stack trace:')\n }\n console.groupEnd?.()\n}\n\nexport const sleep = (ms = 0) => new Promise(r => setTimeout(r, ms))\n\nexport function transformPhone(phoneNumber: string) {\n return `+86${phoneNumber}`\n}\n\nexport const parseQueryString = (queryString) => {\n queryString = queryString.replace(/^\\?/, '')\n const params = {}\n const pairs = queryString.split('&')\n\n pairs.forEach((item) => {\n let [key, value] = item.split('=')\n key = decodeURIComponent(key)\n value = decodeURIComponent(value)\n if (key) {\n if (params[key]) {\n if (Array.isArray(params[key])) {\n params[key].push(value)\n } else {\n params[key] = [params[key], value]\n }\n } else {\n params[key] = value\n }\n }\n })\n\n return params\n}\n\n// 解析URL参数\nexport function parseCaptcha(url) {\n let queryObj: any = {}\n const matched = url.match(/^(data:.*?)(\\?[^#\\s]*)?$/)\n if (matched) {\n // eslint-disable-next-line prefer-destructuring\n url = matched[1]\n const search = matched[2]\n if (search) {\n queryObj = parseQueryString(search)\n }\n }\n const { token, ...restQueryObj } = queryObj\n if (/^data:/.test(url) && !token) {\n return {\n error: 'invalid_argument',\n error_description: `invalid captcha data: ${url}`,\n }\n }\n if (!token) {\n return {\n error: 'unimplemented',\n error_description: 'need to impl captcha data',\n }\n }\n // 解析url得到的参数\n return {\n state: restQueryObj.state,\n token, // 验证码token\n captchaData: url, // 验证码base64图片\n }\n}\n","module.exports = require(\"@cloudbase/adapter-interface\");","module.exports = require(\"@cloudbase/adapter-wx_mp\");","module.exports = require(\"jwt-decode\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(304);\n"],"names":["leafPrototypes","getProto","utilities_1","require","OauthClientStorageBase","config","this","localStorage","_b","_a","adapter","root","globalThis","error","prototype","getItem","key","Promise","removeItem","setItem","value","getItemSync","setItemSync","removeItemSync","URL_REG","dealAdapterRequestData","res","options","url","requestId","headers","code","data","error_code","error_description","message","request_id","_c","error_uri","test","RegExp","$1","exports","type","__assign","storage","captchaOptions","baseRequest","request","reqClass","reqClassParams","timeout","restrictedMethods","auth","adapterReq_1","requestType","method","toLocaleLowerCase","func","bind","call","Error","concat","_d","_e","includes","body","JSON","stringify","_f","sent","error_1","e","console","dealUserAdapter","authOptions","adapterForWxMp","isMatch","genAdapter","ReqClass","resolve","reject","copyOptions","Object","assign","task","wx","_timeout","header","success","fail","err","complete","errMsg","_restrictedMethods","indexOf","warn","_timeoutMsg","abort","generateOauthClientRequest","undefined","dealAuthAdapter","oauth_1","adapter_1","utils_1","v1_compat_1","enumerable","get","WeixinAuthProvider","CustomAuthProvider","AnonymousAuthProvider","utilities_2","isBrowser","window","document","User","cache","oauthInstance","setUserInfo","checkLocalInfo","uid","getLocalUserInfo","gender","picture","email","emailVerified","phoneNumber","username","name","birthdate","zoneinfo","locale","sub","createdFrom","providers","checkLocalInfoAsync","getLocalUserInfoAsync","update","userInfo","authApi","setUserProfile","newUserInfo","setLocalUserInfo","updateUserBasicInfo","params","refresh","updatePassword","newPassword","oldPassword","updatePasswordByOld","old_password","new_password","updateUsername","throwError","ERRORS","INVALID_PARAMS","getUserInfo","userInfoKey","keys","getStore","setStore","getStoreAsync","_this","forEach","infoKey","__decorate","catchErrorsDecorator","title","messages","COMMUNITY_SITE_URL","authModels","UserProfile","applyUserV1Compat","LoginState","envId","user","checkLocalState","oauthLoginState","hasLoginStateSync","checkLocalStateAsync","getLoginState","Auth","_super","listeners","Map","hasListenerSetUp","init","setAccessKey","__extends","signInAnonymously","createLoginState","loginState","getSession","session","authError","AuthError","category","AuthErrorCategory","PROVIDER_NOT_ENABLED","helpMessage","loginMethodHint","signUp","phone_number","verification_code","verification_token","provider_token","formatPhone","validateAtLeastOne","getVerification","phone","verificationInfo_1","verifyOtp","token","messageId","verification_id","verify","verificationTokenRes","is_user","signIn","parse","error_3","error_2","signOut","removeStoreAsync","eventBus","fire","EVENTS","LOGIN_STATE_CHANGED","eventType","LOGIN_STATE_CHANGED_TYPE","SIGN_OUT","AUTH_STATE_CHANGED","event","AUTH_STATE_CHANGED_TYPE","SIGNED_OUT","error_4","onAuthStateChange","callback","setupListeners","id","Math","random","toString","has","set","Set","add","subscription","unsubscribe","callbacks","delete","size","signInWithPassword","validateParams","password","required","is_encrypt","isEncrypt","version","error_5","INVALID_CREDENTIALS","USER_NOT_FOUND","info","signInWithIdToken","signInWithProvider","error_6","signInWithOtp","emailRedirectTo","shouldCreateUser","email_redirect_to","verificationInfo_2","error_7","verifyOAuth","utils","getQuery","state","cacheData","getBrowserSession","provider","grantProviderToken","provider_id","provider_redirect_uri","location","origin","pathname","provider_code","OAUTH_TYPE","BIND_IDENTITY","toBindIdentity","fireEvent","localSearch","URLSearchParams","search","redirectUrl","addUrlSearch","hash","removeBrowserSession","error_8","signInWithOAuth","href","redirectTo","urlObject","URL","slice","genProviderRedirectUri","uri","decodedUri","decodeURIComponent","finalUri","queryParams","url_1","entries","searchParams","saveToBrowserSession","SIGN_IN","skipBrowserRedirect","error_9","getClaims","getAccessToken","accessToken","weAppJwtDecodeAll","error_10","resetPasswordForEmail","emailOrPhone","redirectTo_1","isEmail_1","verificationParams","formattedPhone","verificationInfo_3","updateUser","attributes","__awaiter","nonce","resetPassword","PASSWORD_RECOVERY","error_12","error_11","resetPasswordForOld","error_13","signInWithUsername","verificationInfo","verificationCode","loginType","error_14","oauth2client","getCredentials","credentials","scope","getUser","error_15","refreshSession","refresh_token","localCredentials","refreshToken","newTokens","error_16","isRefresh","convertToUser","getCurrentUser","apply","error_17","refreshUser","currentUser","error_18","some","restParams","__rest","needsPhoneVerification","extraRes","needsEmailVerification_1","verificationType_1","verificationInfo_4","length","verifyParams","user_1","USER_UPDATED","error_20","error_19","getUserIdentities","getProviders","identities","filter","v","error_21","linkIdentity","error_22","unlinkIdentity","unbindProvider","error_23","reauthenticate","userInfo_1","verificationInfo_5","sudo","sudoRes","setPassword","sudo_token","error_25","error_24","resend","target","error_26","setSession","access_token","SIGNED_IN","error_27","exchangeCodeForSession","deleteUser","deleteMe","error_28","toDefaultLoginPage","configVersion","config_version","query","map","join","navigateTo","redirectUri","redirect_uri","urlObj","loginPage","app_id","env","clientId","encodeURIComponent","signInWithCustomTicket","getTickFn","setCustomSignFunc","error_29","signInWithOpenId","useWxCloud","wxInfo","getAccountInfoSync","miniProgram","mainFunc","result","appId","provider_params","provider_code_type","appid","setCredentials","login","error_32","errno","error_30","signInWithPhoneAuth","phoneCode","providerInfo","providerToken","signInRes","error_33","bindPhoneNumber","editContact","bindEmail","defineProperty","mode","hasLoginState","printWarn","INVALID_OPERATION","loginState_1","signInAnonymouslyInWx","error_36","asyncRefreshUser","bindOpenId","bindWithProvider","error_38","signInWithUnionId","providerId","error_40","signInWithSms","phoneNum","bindInfo","signInWithEmail","isUsernameRegistered","checkIfUserExist","exist","getWedaUserInfo","getAuthHeader","queryUser","queryObj","queryUserProfile","patchProviderToken","signInWithWechat","grantToken","deviceAuthorize","loginScope","loginGroups","onLoginStateChanged","on","CREDENTIALS_ERROR","refreshTokenForce","getProviderSubType","createCaptchaData","verifyCaptchaData","getMiniProgramQrCode","getMiniProgramCode","getMiniProgramQrCodeStatus","modifyPassword","modifyPasswordWithoutLogin","getUserBehaviorLog","rawUsername","verifyRes","_g","signUpParam","bindRes","signUpRes","accessKey","secretId","secretKey","DEFAULT_NODE_ACCESS_SCOPE","setAccessKeyCredentials","token_type","expires_at","Date","expires_in","replace","notifyListeners","userId","aud","role","groups","group","email_confirmed_at","email_verified","created_at","phone_confirmed_at","confirmed_at","last_sign_in_at","app_metadata","toLowerCase","user_metadata","nickName","avatarUrl","hasPassword","open_id","p","identity_id","user_id","identity_data","provider_user_id","updated_at","is_anonymous","rules","_i","rule","fieldGroups","field","INITIAL_SESSION","BindPhoneRequest","UnbindProviderRequest","BindEmailRequest","VerifyRequest","_h","_j","GetVerificationRequest","_k","_l","_m","_o","_p","_q","_r","_s","_t","_u","_v","BindWithProviderRequest","_w","_x","_y","AuthV1Compat","generateAuthInstance","region","i18n","platform","useDefaultAdapter","runtime","debug","cloudbase","app","apiOrigin","commonOpts","CloudbaseEventEmitter","CloudbaseOAuth","useAuthAdapter","apiPath","AUTH_API_PREFIX","anonymousSignInFunc","wxCloud","onCredentialsError","sdkVersion","detectSessionInUrl","authInstance","persistence","CloudbaseCache","platformInfo","_fromApp","initializeSession","NAMESPACE","levenshteinDistance","a","b","matrix","i","j","cost","min","component","namespace","entity","newPersistence","primaryStorage","updateConfig","getBaseEndPoint","endPointMode","authProto","setPrototypeOf","getPrototypeOf","authWithHint","Proxy","prop","receiver","Reflect","suggestion","methods","bestMatch","bestDistance","Infinity","methods_1","startsWith","distance","findSimilarMethod","getOwnPropertyNames","k","registerComponent","oauth_2","util_1","constants_1","helpers_1","events_1","cache_1","adapter_wx_mp_1","__importDefault","default","adapters_1","sessionStorage","history","replaceState","param","_options","signInWithRedirect","getRedirectResult","getLinkRedirectResult","ticket","weixinAuthProvider","customAuthProvider","anonymousAuthProvider","signUpWithEmailAndPassword","signInWithEmailAndPassword","sendPasswordResetEmail","signInWithUsernameAndPassword","sendPhoneCode","signUpWithPhoneCode","signInWithPhoneCodeOrPassword","forceResetPwdByPhoneCode","shouldRefreshAccessToken","_callback","onLoginStateExpired","onAccessTokenRefreshed","TOKEN_REFRESHED","onAnonymousConverted","onLoginTypeChanged","UserClass","linkWithTicket","_ticket","linkWithRedirect","_provider","updateEmail","newEmail","_password","linkWithPhoneNumber","_phoneNumber","_phoneCode","updatePhoneNumber","unlink","_loginType","auth_1","registerAuth","consts_1","oauth2client_1","captcha_1","urlSearchParams_1","auth_error_1","getEncryptUtils","getUtils","IS_MP_BUILD","opts","oAuth2Client","credentialsClient","initOptions","OAuth2Client","captcha","Captcha","defaultStorage","parseParamsToSearch","getParamsByVersion","paramsTemp","deepClone","v2","ApiUrlsV2","ApiUrls","getEncryptParams","AUTH_SIGN_IN_ANONYMOUSLY_URL","AUTH_SIGN_UP_URL","resp","AUTH_SIGNOUT_URL","withCredentials","ErrorType","UNAUTHENTICATED","log","err_1","AUTH_REVOKE_URL","revokeAllDevices","AUTH_REVOKE_ALL_URL","revokeDevice","AUTHORIZED_DEVICES_DELETE_URL","device_id","VERIFICATION_URL","withCaptcha","other_params","otherParams","PROVIDER_URI_URL","PROVIDER_TOKEN_URL","getInitialSession","errorParam","errorDescription","e_1","restoreUrlState","signInCustom","AUTH_SIGN_IN_CUSTOM","AUTH_SIGN_IN_WITH_WECHAT_URL","PROVIDER_BIND_URL","getUserProfile","wxAppId_1","matched","find","WEDA_USER_URL","getCredentialsSync","getCredentialsAsync","transByProvider","USER_TRANS_BY_PROVIDER_URL","PROVIDER_LIST","PROVIDER_UNBIND_URL","checkPassword","CHECK_PWD_URL","BIND_CONTACT_URL","AUTH_SET_PASSWORD","sudoToken","SUDO_URL","sendVerificationCodeToCurrentUser","changeBoundProvider","provider_trans_token","trans_token","USER_PRIFILE_URL","USER_BASIC_EDIT_URL","USER_QUERY_URL","getCustomSignTicketFn","customSignTicketFn","customTicket","AUTH_RESET_PASSWORD","authorize","AUTHORIZE_URL","authorizeDevice","AUTHORIZE_DEVICE_URL","AUTH_GET_DEVICE_CODE","authorizeInfo","AUTHORIZE_INFO_URL","withBasicAuth","checkUsername","CHECK_USERNAME","CHECK_IF_USER_EXIST","getScope","getGroups","getPublicKey","AUTH_PUBLIC_KEY","payload","encryptUtils","publicKey","public_key_thumbprint","public_key","getEncryptInfo","GET_PROVIDER_TYPE","VERIFY_CAPTCHA_DATA_URL","CAPTCHA_DATA_URL","GET_MINIPROGRAM_QRCODE","GET_MINIPROGRAM_QRCODE_STATUS","action","LOGIN","MODIFY","GET_USER_BEHAVIOR_LOG","limit","page_token","encrypt_password","encrypt_new_password","CONSOLE_AUTH_URL","DOCS_URL","context","__isAuthError","status","UNKNOWN","msg","FAILED_PRECONDITION","LOGIN_METHOD_DISABLED","INVALID_PASSWORD","INVALID_GRANT","INVALID_VERIFICATION_CODE","INVALID_USERNAME_OR_PASSWORD","WRONG_PASSWORD","INVALID_TWO_FACTOR","INVALID_TWO_FACTOR_RECOVERY","PASSWORD_NOT_SET","NOT_FOUND","USER_BLOCKED","USER_PENDING","UNDER_REVIEW","INVALID_STATUS","USER_STATUS_ABNORMAL","SERVER_ERROR","UNAVAILABLE","TEMPORARILY_UNAVAILABLE","INTERNAL","UNREACHABLE","DEADLINE_EXCEEDED","DATA_LOSS","SERVICE_ERROR","INVALID_ARGUMENT","INVALID_REQUEST","INVALID_SCOPE","INVALID_REQUEST_URI","INVALID_REQUEST_OBJECT","PERMISSION_DENIED","ACCESS_DENIED","UNAUTHORIZED_CLIENT","inferErrorCategory","methodName","requiredProvider","AUTH_METHOD_MISMATCH","generateHelpMessage","VerificationUsages","debounce","delay","timeoutId","args","arguments","clearTimeout","setTimeout","CAPTCHA_EVENT","CAPTCHA_STYLES","parseCaptcha","captchaData","captchaState","CAPTCHA_IMG_ID","refreshCaptcha","getElementById","src","createElement","tag","styles","text","el","style","cssText","textContent","overlay","modal","appendChild","captchaWrap","captchaImg","refreshBtn","onclick","disabled","input","placeholder","maxLength","errorMsg","showError","display","confirmBtn","inputValue","trim","verifyResult","removeChild","errorMessage","focus","genCaptchaDom","mp_1","captcha_dom_1","openURIWithCallback","getDefaultOpenURIWithCallback","tokenSectionName","isMp","reqURL","appendCaptchaTokenToURL","CAPTCHA_REQUIRED","CAPTCHA_INVALID","getCaptchaToken","forceNewToken","findCaptchaToken","captchaToken_1","captchaDataResp","captchaTokenUrl","captchaToken","saveCaptchaToken","captcha_token","now","tokenStr","apis_1","apis_2","__importStar","base64_1","consts_2","setGetInitialSession","onUserObtained","setOnInitialSessionObtained","initialize","Syntax","uuid_1","index_1","single_promise_1","RequestIdHeaderName","DeviceIdHeaderName","DeviceIdSectionName","generateRequestId","uuidv4","responseError","fetch","json","jsonResponse","formatOptions","LOCAL","details","stack","formatError","DefaultStorage","_env","isCredentialsExpired","isExpired","LocalCredentials","accessKeyCredentials","singlePromise","SinglePromise","getStorageCredentialsSync","run","getStorageCredentials","isAccessKeyCredentials","initializePromise","lockAcquired","pendingInLock","clientSecret","retry","formatRetry","defaultRetry","defaultRequest","tokenInURL","basicAuth","weBtoa","cloud","refreshTokenFunc","defaultRefreshTokenFunc","onInitialSessionObtained","logDebugMessages","langEvent","bus","LANG_CHANGE_EVENT","_acquireLock","__generator","_initialize","respErr","LANG_HEADER_KEY","lang","getDeviceId","deviceId","Authorization","response","maxRequestTimes","requestTime","wxCloudCallFunction","responseError_1","sleep","retryInterval","userAgent","getRendererUserAgent","callFunction","responseResult","getPathName","_getCredentials","unAuthenticatedError","_refreshToken","newCredentials","anonymousLogin","c","anonymousSignIn","checkRetry","minRetry","maxRetry","defaultVale","ms","AUTH_TOKEN_URL","client_id","client_secret","grant_type","deviceID","_debug","__spreadArray","callbackError_1","String","acquireTimeout","fn","last_1","result_1","push","result_2","waitOn","all","splice","b64","b64re","base64_url_decode","str","output","weAtob","charCodeAt","toUpperCase","b64DecodeUnicode","string","bitmap","rest","TypeError","charAt","substring","r1","r2","fromCharCode","pos","split","parts","segment","claims","signature","encryptlong_1","rsaInstance","setPublicKey","encryptLong","jsSdkFnPromiseMap","runIdlePromise","fnResult","clone","copiedValue","hasOwnProperty","create","valueOf","source","global","ignoreCase","multiline","sticky","unicode","match","Page","getDeviceInfo","getStorageSync","setStorageSync","connectSocket","IS_IN_MP_WEBVIEW","ready","__wxjs_environment","navigator","WeixinJSBridge","invoke","addEventListener","MyURLSearchParams","append","getAll","items","this_1","r","RUNTIME","Web","adapters","adapterList_1","isArray","WEB","adapter_interface_1","common_1","WebRequest","timeoutMsg","post","put","upload","file","reqMethod","formData","FormData","download","responseType","createObjectURL","Blob","fileName","pop","link","setAttribute","click","revokeObjectURL","statusCode","tempFilePath","abortController","AbortController","enableAbort","stream","signal","shouldThrowOnError","aborted","timer","then","ok","catch","x","onUploadProgress","realUrl","formatUrl","getProtocol","ajax","XMLHttpRequest","open","setRequestHeader","onreadystatechange","readyState","arr","getAllResponseHeaders","headerMap_1","line","shift","responseText","isFormData","toQueryString","send","AbstractSDKRequest","wsClass","WebSocket","sdkName","PROTOCOL","protocol","INVALID_SYNTAX","OPERATION_FAIL","NETWORK_ERROR","UNKOWN_ERROR","__exportStar","isFirefox","REG_STACK_DECORATE","REG_STACK_LINK","getRewritedError","className","sourceLink","innerErr","innerErrStack","REG_STACK_INNER_METHOD","REG_STACK_INNER_METHOD_WITHOUT_LINK","indexOfSource","findIndex","realErrStack","unshift","customInfo","descriptor","IS_DEBUG_MODE","constructor","fnName","outterErrStacks","indexOfDecorator","exec","getSourceLink","failErr","logs","content","subtitle","printGroupLog","constants","events","helpers","abortController_1","jwt","decode","f","TcbCacheObject","tcbCacheObject","clear","AbstractStorage","persistenceTag","createStorage","val","getSdkName","setStoreAsync","process","tcb_token","removeStore","CloudbaseEvent","IErrorEvent","listener","customeAddEventListener","off","index","customRemoveEventListener","isInstanceOf","ev","isString","listens","handlers_1","eventEmitter","instance","construct","d","getTime","d2","floor","urlHasQuery","queryString","u","reg","substr","matches","sourceURL","rtn","cb","promise","throwPromiseNotDefined","printTrace","collapsed","groupCollapsed","content_1","tip","trace","groupEnd","item","Array","parseQueryString","restQueryObj","JSEncrypt","BI_RM","int2char","n","op_and","y","op_or","op_xor","op_andnot","lbit","cbit","b64map","hex2b64","h","ret","parseInt","b64tohex","s","slop","decoder","decoder$1","Hex","hex","ignore","out","bits","char_count","Base64","re","unarmor","m","max","Int10","buf","mulAdd","t","l","base","simplify","dbits","reTimeS","reTimeL","stringCut","len","Stream","enc","hexDigits","hexByte","hexDump","start","end","raw","isASCII","parseStringISO","parseStringUTF","parseStringBMP","hi","lo","parseTime","shortYear","parseInteger","neg","pad","parseBitString","unusedBit","intro","skip","parseOctetString","parseOID","ASN1","ASN1Tag","typeName","tagClass","tagNumber","posContent","abs","isUniversal","toPrettyString","indent","tagConstructed","posStart","posEnd","toHexString","decodeLength","getHexStringValue","hexString","offset","streamStart","getSub","isEOC","lowprimes","lplim","BigInteger","fromNumber","fromString","negate","toRadix","km","DB","nbi","ZERO","subTo","compareTo","bitLength","nbits","DM","mod","divRemTo","modPowInt","z","isEven","Classic","Montgomery","exp","copyTo","intValue","DV","byteValue","shortValue","signum","toByteArray","equals","and","bitwiseTo","or","xor","andNot","not","shiftLeft","rShiftTo","lShiftTo","shiftRight","getLowestSetBit","bitCount","testBit","setBit","changeBit","clearBit","flipBit","addTo","subtract","multiply","multiplyTo","divide","remainder","divideAndRemainder","q","modPow","nbv","Barrett","g","k1","convert","g2","sqrTo","mulTo","w","is1","revert","modInverse","ac","ONE","pow","NullExp","gcd","isProbablePrime","modInt","millerRabin","fromInt","fromRadix","mi","sh","intAt","clamp","dlShiftTo","drShiftTo","bs","cbs","bm","ds","am","squareTo","pm","pt","ts","nsh","ys","y0","yt","F1","F2","d1","FV","qd","invDigit","chunkSize","LN2","cs","dMultiply","dAddOffset","nextBytes","op","multiplyLowerTo","multiplyUpperTo","n1","square","gcda","gcda1","fromNumberAsync","bnp_1","bnpfn1_1","reduce","mp","mpl","mph","um","mt2","u0","q3","mu","parseBigInt","am1","am2","xl","xh","am3","appName","rr","vv","BI_RC","Arcfour","S","next","rng_state","rng_pptr","rng_pool","_window","_window2","crypto","getRandomValues","_window3","Uint32Array","_window8","_window10","_window9","onMouseMoveListener_1","_window4","_window6","_window5","count","removeEventListener","detachEvent","_window7","mouseCoordinates","attachEvent","_window11","rng_get_byte","SecureRandom","ba","pkcs1pad2","rng","RSAKey","dmp1","dmq1","coeff","doPublic","doPrivate","xp","xq","setPublic","N","E","encrypt","ct_1","entry","t1","ex","decryptLong","ct_2","decrypt","setPrivate","D","setPrivateEx","P","Q","DP","DQ","C","generate","B","qs","ee","p1","q1","phi","ctext","pkcs1unpad2","generateAsync","rsa","loop1","loop4","loop3","loop2","JSEncryptRSAKey","super","parseKey","hasPrivateKeyProperty","hasPublicKeyProperty","parsePropertiesFrom","pem","modulus","public_exponent","der","asn1","private_exponent","prime1","prime2","exponent1","exponent2","coefficient","sequence","obj","default_key_size","default_public_exponent","setKey","setPrivateKey","privkey","pubkey","getKey","encrypted","uncrypted","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","__proto__","__esModule","ns","def","current","definition","o","Symbol","toStringTag","__webpack_exports__"],"sourceRoot":""}