@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.cjs.js","mappings":"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","sources":["webpack://@cloudbase/js-sdk/webpack/runtime/create fake namespace object","webpack://@cloudbase/js-sdk/../../../ai/src/AI.ts","webpack://@cloudbase/js-sdk/../../../ai/src/bot/index.ts","webpack://@cloudbase/js-sdk/../../../ai/src/eventsource_parser/index.ts","webpack://@cloudbase/js-sdk/../../../ai/src/eventsource_parser/parse.ts","webpack://@cloudbase/js-sdk/../../../ai/src/index.ts","webpack://@cloudbase/js-sdk/../../../ai/src/models/Ark/index.ts","webpack://@cloudbase/js-sdk/../../../ai/src/models/DashScope/index.ts","webpack://@cloudbase/js-sdk/../../../ai/src/models/DeepSeek/index.ts","webpack://@cloudbase/js-sdk/../../../ai/src/models/Default/index.ts","webpack://@cloudbase/js-sdk/../../../ai/src/models/HunYuan/index.ts","webpack://@cloudbase/js-sdk/../../../ai/src/models/HunYuan/util.ts","webpack://@cloudbase/js-sdk/../../../ai/src/models/HunYuanBeta/index.ts","webpack://@cloudbase/js-sdk/../../../ai/src/models/HunYuanExp/index.ts","webpack://@cloudbase/js-sdk/../../../ai/src/models/HunYuanOpen/index.ts","webpack://@cloudbase/js-sdk/../../../ai/src/models/Moonshot/index.ts","webpack://@cloudbase/js-sdk/../../../ai/src/models/Yi/index.ts","webpack://@cloudbase/js-sdk/../../../ai/src/models/ZhiPu/index.ts","webpack://@cloudbase/js-sdk/../../../ai/src/models/image-model.ts","webpack://@cloudbase/js-sdk/../../../ai/src/models/index.ts","webpack://@cloudbase/js-sdk/../../../ai/src/models/model.ts","webpack://@cloudbase/js-sdk/../../../ai/src/type.ts","webpack://@cloudbase/js-sdk/../../../ai/src/utils.ts","webpack://@cloudbase/js-sdk/../../../apis/src/callApis.ts","webpack://@cloudbase/js-sdk/../../../apis/src/index.ts","webpack://@cloudbase/js-sdk/../../../app/src/constants/common.ts","webpack://@cloudbase/js-sdk/../../../app/src/index.ts","webpack://@cloudbase/js-sdk/../../../app/src/libs/adapter.ts","webpack://@cloudbase/js-sdk/../../../app/src/libs/cache.ts","webpack://@cloudbase/js-sdk/../../../app/src/libs/component.ts","webpack://@cloudbase/js-sdk/../../../app/src/libs/lang.ts","webpack://@cloudbase/js-sdk/../../../app/src/libs/request.ts","webpack://@cloudbase/js-sdk/../../../auth/src/adapter.ts","webpack://@cloudbase/js-sdk/../../../auth/src/index.ts","webpack://@cloudbase/js-sdk/../../../auth/src/utilities.ts","webpack://@cloudbase/js-sdk/../../../auth/src/utils.ts","webpack://@cloudbase/js-sdk/../../../auth/src/v1-compat.ts","webpack://@cloudbase/js-sdk/../../database/src/index.ts","webpack://@cloudbase/js-sdk/../index.ts","webpack://@cloudbase/js-sdk/../../../cloudrun/src/index.ts","webpack://@cloudbase/js-sdk/../../../functions/src/index.ts","webpack://@cloudbase/js-sdk/../../../model/src/index.ts","webpack://@cloudbase/js-sdk/../../../mysql/src/index.ts","webpack://@cloudbase/js-sdk/../../../oauth/src/auth/apis.ts","webpack://@cloudbase/js-sdk/../../../oauth/src/auth/auth-error.ts","webpack://@cloudbase/js-sdk/../../../oauth/src/auth/consts.ts","webpack://@cloudbase/js-sdk/../../../oauth/src/captcha/captcha-dom.ts","webpack://@cloudbase/js-sdk/../../../oauth/src/captcha/captcha.ts","webpack://@cloudbase/js-sdk/../../../oauth/src/index.ts","webpack://@cloudbase/js-sdk/../../../oauth/src/oauth2client/consts.ts","webpack://@cloudbase/js-sdk/../../../oauth/src/oauth2client/oauth2client.ts","webpack://@cloudbase/js-sdk/../../../oauth/src/utils/base64.ts","webpack://@cloudbase/js-sdk/../../../oauth/src/utils/encrypt.ts","webpack://@cloudbase/js-sdk/../../../oauth/src/utils/function/single-promise.ts","webpack://@cloudbase/js-sdk/../../../oauth/src/utils/index.ts","webpack://@cloudbase/js-sdk/../../../oauth/src/utils/mp.ts","webpack://@cloudbase/js-sdk/../../../oauth/src/utils/urlSearchParams.ts","webpack://@cloudbase/js-sdk/../../../oauth/src/utils/uuid.ts","webpack://@cloudbase/js-sdk/../../../realtime/src/common.ts","webpack://@cloudbase/js-sdk/../../../realtime/src/error.ts","webpack://@cloudbase/js-sdk/../../../realtime/src/index.ts","webpack://@cloudbase/js-sdk/../../../realtime/src/listener.ts","webpack://@cloudbase/js-sdk/../../../realtime/src/message.ts","webpack://@cloudbase/js-sdk/../../../realtime/src/snapshot.ts","webpack://@cloudbase/js-sdk/../../../realtime/src/utils.ts","webpack://@cloudbase/js-sdk/../../../realtime/src/virtual-websocket-client.ts","webpack://@cloudbase/js-sdk/../../../realtime/src/websocket-client.ts","webpack://@cloudbase/js-sdk/../../../realtime/src/ws-event.ts","webpack://@cloudbase/js-sdk/../../../storage/src/index.ts","webpack://@cloudbase/js-sdk/../../../storage/src/supabase/errors.ts","webpack://@cloudbase/js-sdk/../../../utilities/src/adapters/index.ts","webpack://@cloudbase/js-sdk/../../../utilities/src/adapters/platforms/web.ts","webpack://@cloudbase/js-sdk/../../../utilities/src/constants/common.ts","webpack://@cloudbase/js-sdk/../../../utilities/src/constants/errors.ts","webpack://@cloudbase/js-sdk/../../../utilities/src/constants/index.ts","webpack://@cloudbase/js-sdk/../../../utilities/src/helpers/decorators.ts","webpack://@cloudbase/js-sdk/../../../utilities/src/helpers/index.ts","webpack://@cloudbase/js-sdk/../../../utilities/src/index.ts","webpack://@cloudbase/js-sdk/../../../utilities/src/libs/abortController.ts","webpack://@cloudbase/js-sdk/../../../utilities/src/libs/cache.ts","webpack://@cloudbase/js-sdk/../../../utilities/src/libs/events.ts","webpack://@cloudbase/js-sdk/../../../utilities/src/libs/langEvent.ts","webpack://@cloudbase/js-sdk/../../../utilities/src/libs/util.ts","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/constant.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/utils/symbol.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/helper/symbol.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/utils/type.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/geo/lineString.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/geo/polygon.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/geo/multiPoint.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/geo/multiLineString.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/geo/multiPolygon.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/serverDate/index.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/util.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/commands/update.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/validate.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/geo/point.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/lib/util.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/commands/logic.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/commands/query.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/operator-map.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/serializer/datatype.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/serializer/common.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/serializer/update.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/utils/utils.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/document.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/serializer/query.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/query.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/aggregate.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/collection.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/command.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/regexp/index.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/const/code.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/transaction/document.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/transaction/query.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/transaction/collection.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/transaction/index.js","webpack://@cloudbase/js-sdk/../../node_modules/@cloudbase/database/dist/esm/index.js","webpack://@cloudbase/js-sdk/./empty-module.js","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/../../node_modules/lodash/_DataView.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_Hash.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_ListCache.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_Map.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_MapCache.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_Promise.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_Set.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_Stack.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_Symbol.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_Uint8Array.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_WeakMap.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_arrayEach.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_arrayFilter.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_arrayLikeKeys.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_arrayMap.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_arrayPush.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_assignValue.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_assocIndexOf.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_baseAssign.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_baseAssignIn.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_baseAssignValue.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_baseClone.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_baseCreate.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_baseGet.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_baseGetAllKeys.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_baseGetTag.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_baseIsArguments.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_baseIsMap.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_baseIsNative.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_baseIsSet.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_baseIsTypedArray.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_baseKeys.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_baseKeysIn.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_baseSet.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_baseSlice.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_baseTimes.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_baseToString.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_baseUnary.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_baseUnset.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_castPath.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_cloneArrayBuffer.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_cloneBuffer.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_cloneDataView.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_cloneRegExp.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_cloneSymbol.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_cloneTypedArray.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_copyArray.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_copyObject.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_copySymbols.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_copySymbolsIn.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_coreJsData.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_defineProperty.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_freeGlobal.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_getAllKeys.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_getAllKeysIn.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_getMapData.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_getNative.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_getPrototype.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_getRawTag.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_getSymbols.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_getSymbolsIn.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_getTag.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_getValue.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_hashClear.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_hashDelete.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_hashGet.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_hashHas.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_hashSet.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_initCloneArray.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_initCloneByTag.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_initCloneObject.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_isIndex.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_isKey.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_isKeyable.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_isMasked.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_isPrototype.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_listCacheClear.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_listCacheDelete.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_listCacheGet.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_listCacheHas.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_listCacheSet.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_mapCacheClear.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_mapCacheDelete.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_mapCacheGet.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_mapCacheHas.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_mapCacheSet.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_memoizeCapped.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_nativeCreate.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_nativeKeys.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_nativeKeysIn.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_nodeUtil.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_objectToString.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_overArg.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_parent.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_root.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_stackClear.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_stackDelete.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_stackGet.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_stackHas.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_stackSet.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_stringToPath.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_toKey.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/_toSource.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/cloneDeep.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/eq.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/isArguments.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/isArray.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/isArrayLike.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/isBuffer.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/isFunction.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/isLength.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/isMap.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/isObject.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/isObjectLike.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/isSet.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/isSymbol.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/isTypedArray.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/keys.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/keysIn.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/last.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/memoize.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/set.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/stubArray.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/stubFalse.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/toString.js","webpack://@cloudbase/js-sdk/../../node_modules/lodash/unset.js","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\":\"@cloudbase/wx-cloud-client-sdk\",\"commonjs2\":\"@cloudbase/wx-cloud-client-sdk\",\"amd\":\"@cloudbase/wx-cloud-client-sdk\",\"root\":\"@cloudbase/wx-cloud-client-sdk\"}","webpack://@cloudbase/js-sdk/external commonjs2 {\"commonjs\":\"@mattiasbuelens/web-streams-adapter\",\"commonjs2\":\"@mattiasbuelens/web-streams-adapter\",\"amd\":\"@mattiasbuelens/web-streams-adapter\",\"root\":\"@mattiasbuelens/web-streams-adapter\"}","webpack://@cloudbase/js-sdk/external commonjs2 {\"commonjs\":\"bson\",\"commonjs2\":\"bson\",\"amd\":\"bson\",\"root\":\"bson\"}","webpack://@cloudbase/js-sdk/external commonjs2 {\"commonjs\":\"jwt-decode\",\"commonjs2\":\"jwt-decode\",\"amd\":\"jwt-decode\",\"root\":\"jwt-decode\"}","webpack://@cloudbase/js-sdk/external commonjs2 {\"commonjs\":\"text-encoding-shim\",\"commonjs2\":\"text-encoding-shim\",\"amd\":\"text-encoding-shim\",\"root\":\"text-encoding-shim\"}","webpack://@cloudbase/js-sdk/external commonjs2 {\"commonjs\":\"web-streams-polyfill\",\"commonjs2\":\"web-streams-polyfill\",\"amd\":\"web-streams-polyfill\",\"root\":\"web-streams-polyfill\"}","webpack://@cloudbase/js-sdk/webpack/bootstrap","webpack://@cloudbase/js-sdk/webpack/runtime/define property getters","webpack://@cloudbase/js-sdk/webpack/runtime/global","webpack://@cloudbase/js-sdk/webpack/runtime/hasOwnProperty shorthand","webpack://@cloudbase/js-sdk/webpack/runtime/make namespace object","webpack://@cloudbase/js-sdk/webpack/runtime/node module decorator","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};","/* eslint-disable eqeqeq */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport type { SDKRequestInterface } from '@cloudbase/adapter-interface'\nimport { Bot } from './bot'\nimport * as models from './models'\nimport * as types from './type'\nimport { readableStream2JsonObject } from './utils'\nimport { ICloudbaseConfig } from '@cloudbase/types'\nimport { langEvent } from '@cloudbase/utilities'\n\nconst { MODELS } = models\n\nclass AI {\n public aiBaseUrl: string\n public aiBotBaseUrl: string\n public bot: Bot\n public i18n: ICloudbaseConfig['i18n']\n defaultHeaders: { [x: string]: any }\n\n constructor(\n private req: SDKRequestInterface,\n public baseUrl: string,\n i18n: ICloudbaseConfig['i18n'],\n ) {\n this.aiBaseUrl = `${baseUrl}/ai`\n this.aiBotBaseUrl = `${baseUrl}/aibot`\n this.bot = new Bot(this.botRequest, this.aiBotBaseUrl)\n this.i18n = i18n\n\n langEvent.bus.on(langEvent.LANG_CHANGE_EVENT, (params) => {\n this.i18n = params.data?.i18n || this.i18n\n })\n }\n\n async handleResponseData(responseData: Promise<unknown> | ReadableStream<Uint8Array>, header?: Headers) {\n const GO_TO_AI_TEXT = `${this.i18n.t('请检查调用方式,或前往云开发 AI+ 首页查看文档')}:https://tcb.cloud.tencent.com/dev#/ai`\n\n if (typeof responseData === 'object' && responseData && 'then' in responseData) {\n // 非流式请求,直接返回 json 数据\n const json = (await responseData) as Record<string, unknown>\n if (typeof json === 'object' && json && 'code' in json && json.code !== 'NORMAL') {\n throw new Error(`${this.i18n.t('AI+ 请求出错,错误码')}:${json.code},${this.i18n.t('错误信息')}:${\n json.message\n }\\n${GO_TO_AI_TEXT}\\n${JSON.stringify(json, null, 2)}`,)\n }\n\n return responseData\n }\n // 流式请求,如果接口出错,会变成传 json 格式的响应,通过 header 判断格式\n if (header?.get?.('content-type')?.includes('application/json')) {\n const json = await readableStream2JsonObject(responseData as ReadableStream<Uint8Array>)\n if (typeof json === 'object' && json && 'code' in json && json.code !== 'NORMAL') {\n throw new Error(`${this.i18n.t('AI+ 请求出错,错误码')}:${json.code},${this.i18n.t('错误信息')}:${\n json.message\n }\\n${GO_TO_AI_TEXT}\\n${JSON.stringify(json, null, 2)}`,)\n }\n }\n return responseData\n }\n\n createModel(\n model: string,\n options?: {\n defaultModelSubUrl?: string\n },\n ) {\n let simpleModel: types.SimpleChatModel\n\n const SimpleModelConstructor = MODELS[model]\n if (SimpleModelConstructor) {\n simpleModel = new SimpleModelConstructor(this.modelRequest, this.aiBaseUrl)\n } else {\n const subUrl = typeof options?.defaultModelSubUrl === 'string' ? options.defaultModelSubUrl : '/chat/completions'\n\n simpleModel = new models.DefaultSimpleModel(this.modelRequest, this.aiBaseUrl, `${model}${subUrl}`)\n }\n\n const reactModel = new models.ReactModel(simpleModel)\n return reactModel\n }\n\n registerModel(name: string, model: types.ChatModelConstructor) {\n if (MODELS[name] != null) {\n console.warn(`AI model ${name} already exists!`)\n return\n }\n MODELS[name] = model\n }\n\n createImageModel<T extends 'hunyuan-image' | (string & {})>(provider: T) {\n return new models.DefaultImageModel<T>(this.modelRequest, this.aiBaseUrl, provider)\n }\n\n modelRequest: types.ModelReq = async ({ url, data, headers, stream, timeout }) => {\n const fetchHeaders = {\n 'Content-Type': 'application/json',\n }\n // 带 Accept: text/event-stream 请求头显式指定是 SSE 绕过 60s 的限制\n stream && Object.assign(fetchHeaders, { Accept: 'text/event-stream' })\n\n const { data: responseData, header } = (await this.req.fetch({\n method: 'post',\n headers: { [this.i18n?.LANG_HEADER_KEY]: this.i18n?.lang, ...fetchHeaders, ...headers },\n body: JSON.stringify(data),\n url,\n stream,\n timeout,\n })) as { data: Promise<unknown> | ReadableStream<Uint8Array>; header?: Headers }\n\n return this.handleResponseData(responseData, header) as any\n }\n\n botRequest: types.BotReq = async ({ method, url, data = {}, headers, stream, timeout }) => {\n if (method === 'get') {\n return this.handleResponseData((await this.req.fetch({ url: `${url}?${objectToParam(data)}`, method, headers, stream, timeout })).data,)\n }\n\n const fetchHeaders = {\n 'Content-Type': 'application/json',\n }\n // 带 Accept: text/event-stream 请求头显式指定是 SSE 绕过 60s 的限制\n stream && Object.assign(fetchHeaders, { Accept: 'text/event-stream' })\n\n const { data: responseData, header } = (await this.req.fetch({\n url,\n body: JSON.stringify(data),\n headers: {\n [this.i18n?.LANG_HEADER_KEY]: this.i18n?.lang,\n ...fetchHeaders,\n ...headers,\n },\n stream,\n method,\n timeout,\n })) as { data: Promise<unknown> | ReadableStream<Uint8Array>; header?: Headers }\n\n return this.handleResponseData(responseData, header) as any\n\n function objectToParam(obj: Object) {\n return Object.entries(obj)\n .map(([key, value]) => `${key}=${value}`)\n .join('&')\n }\n }\n\n registerFunctionTool(functionTool: types.FunctionTool) {\n if (models.toolMap.has(functionTool.name)) {\n console.warn(`AI function tool ${functionTool.name} already exists and will be overwritten!`)\n }\n models.toolMap.set(functionTool.name, functionTool.fn)\n }\n}\n\nexport { AI }\n","import { type ParsedEvent } from '../eventsource_parser'\nimport { BotReq, ReqOptions } from '../type'\nimport {\n IBotCreateConversation,\n IBotDeleteConversation,\n IBotGetConversation,\n IBotGetTextToSpeechResult,\n IBotPreview,\n IBotSendMessage,\n IBotSpeechToText,\n IBotTextToSpeech,\n IBotUploadFiles,\n ICreateBot,\n IDeleteBot,\n IGenerateBot,\n IGenerateImage,\n IGetBot,\n IGetBotChatRecords,\n IGetBotFeedback,\n IGetBotList,\n IGetBotRecommendQuestions,\n ISendBotFeedback,\n IUpdateBot,\n} from './types'\nimport {\n createAsyncIterable,\n toPolyfillReadable,\n createEventSourceParserTransformStream,\n TextDecoderStream,\n TransformStream,\n} from '../utils'\n\nexport class Bot {\n req: BotReq\n\n constructor(req: BotReq, public baseUrl: string) {\n // eslint-disable-next-line prefer-rest-params\n const token = arguments[2]\n if (typeof token === 'string') {\n this.req = ({ headers = {}, ...rest }) => req({ ...rest, headers: { ...headers, Authorization: `Bearer ${token}` } })\n } else {\n this.req = req\n }\n }\n\n list(props: IGetBotList, options?: ReqOptions) {\n return this.req({\n method: 'get',\n url: this.join('bots'),\n data: props,\n timeout: options?.timeout,\n })\n }\n\n create({ botInfo }: ICreateBot, options?: ReqOptions) {\n return this.req({\n method: 'post',\n url: this.join('bots'),\n data: botInfo,\n timeout: options?.timeout,\n })\n }\n\n get({ botId }: IGetBot, options?: ReqOptions) {\n return this.req({\n method: 'get',\n url: this.join(`bots/${botId}`),\n timeout: options?.timeout,\n })\n }\n\n update({ botId, botInfo }: IUpdateBot, options?: ReqOptions) {\n return this.req({\n method: 'PATCH',\n url: this.join(`bots/${botId}`),\n data: botInfo,\n timeout: options?.timeout,\n })\n }\n\n delete({ botId }: IDeleteBot, options?: ReqOptions) {\n return this.req({ method: 'delete', url: this.join(`bots/${botId}`), timeout: options?.timeout })\n }\n\n getChatRecords(props: IGetBotChatRecords, options?: ReqOptions) {\n return this.req({\n method: 'get',\n url: this.join(`bots/${props.botId}/records`),\n data: props,\n timeout: options?.timeout,\n })\n }\n\n sendFeedback({ userFeedback }: ISendBotFeedback, options?: ReqOptions) {\n return this.req({\n method: 'post',\n url: this.join(`bots/${userFeedback.botId}/feedback`),\n data: userFeedback,\n timeout: options?.timeout,\n })\n }\n\n getFeedback(props: IGetBotFeedback, options?: ReqOptions) {\n return this.req({\n method: 'get',\n url: this.join(`bots/${props.botId}/feedback`),\n data: props,\n timeout: options?.timeout,\n })\n }\n\n async uploadFiles(props: IBotUploadFiles, options?: ReqOptions) {\n return this.req({\n method: 'post',\n url: this.join(`bots/${props.botId}/files`),\n data: props,\n timeout: options?.timeout,\n })\n }\n\n async createConversation({ botId, ...rest }: IBotCreateConversation, options?: ReqOptions) {\n return this.req({\n method: 'post',\n url: this.join(`bots/${botId}/conversation`),\n data: rest,\n timeout: options?.timeout,\n })\n }\n\n async getConversation({ pageSize = 10, pageNumber = 1, botId, ...rest }: IBotGetConversation, options?: ReqOptions) {\n if (pageNumber < 1) throw new Error('pageNumber must be greater than 0')\n const offset = pageSize * (pageNumber - 1)\n const limit = pageSize\n return this.req({\n method: 'get',\n url: this.join(`bots/${botId}/conversation`),\n data: { ...rest, offset, limit },\n timeout: options?.timeout,\n })\n }\n\n async deleteConversation({ botId, conversationId, ...rest }: IBotDeleteConversation, options?: ReqOptions) {\n return this.req({\n method: 'delete',\n url: this.join(`bots/${botId}/conversation/${conversationId}`),\n data: rest,\n timeout: options?.timeout,\n })\n }\n\n async speechToText(props: IBotSpeechToText, options?: ReqOptions) {\n return this.req({\n method: 'post',\n url: this.join(`bots/${props.botId}/speech-to-text`),\n data: props,\n timeout: options?.timeout,\n })\n }\n\n async textToSpeech(props: IBotTextToSpeech, options?: ReqOptions) {\n return this.req({\n method: 'post',\n url: this.join(`bots/${props.botId}/text-to-speech`),\n data: props,\n timeout: options?.timeout,\n })\n }\n\n async getTextToSpeechResult(props: IBotGetTextToSpeechResult, options?: ReqOptions) {\n return this.req({\n method: 'get',\n url: this.join(`bots/${props.botId}/text-to-speech`),\n data: props,\n timeout: options?.timeout,\n })\n }\n\n async getRecommendQuestions(props: IGetBotRecommendQuestions, options?: ReqOptions) {\n const res = await this.req({\n method: 'post',\n url: this.join(`bots/${props.botId}/recommend-questions`),\n data: props,\n stream: true,\n timeout: options?.timeout,\n })\n return new StreamResult(res)\n }\n\n async generateBot(props: IGenerateBot, options?: ReqOptions) {\n const res = await this.req({\n method: 'post',\n url: this.join('generate-bot'),\n data: props,\n stream: true,\n timeout: options?.timeout,\n })\n return new StreamResult(res)\n }\n\n async getPreview(props: IBotPreview, options?: ReqOptions) {\n const res = await this.req({\n method: 'post',\n url: this.join('preview'),\n data: props,\n stream: true,\n timeout: options?.timeout,\n })\n return new StreamResult(res)\n }\n\n generateImage(props: IGenerateImage, options?: ReqOptions) {\n return this.req({ method: 'post', url: this.join('generate-image'), data: props, timeout: options?.timeout })\n }\n\n async sendMessage(props: IBotSendMessage, options?: ReqOptions) {\n const res = await this.req({\n method: 'post',\n url: this.join(`bots/${props.botId}/send-message`),\n data: props,\n stream: true,\n timeout: options?.timeout,\n })\n return new StreamResult(res)\n }\n\n private join(url: string) {\n return `${this.baseUrl}/${url}`\n }\n}\n\ntype BotEventStreamData = { content: string }\n\nclass StreamResult {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n private _eventSourceStream: ReadableStream<ParsedEvent>\n\n constructor(_stream: ReadableStream<Uint8Array>) {\n const stream = toPolyfillReadable(_stream) as typeof _stream\n this._eventSourceStream = stream\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(createEventSourceParserTransformStream())\n }\n\n private get teeedStream() {\n const [s1, s2] = this._eventSourceStream.tee()\n this._eventSourceStream = s2\n return s1\n }\n\n get eventSourceStream() {\n return createAsyncIterable(this.teeedStream)\n }\n\n get dataStream() {\n return createAsyncIterable(this.eventSourceStream.pipeThrough(new TransformStream<ParsedEvent, BotEventStreamData>({\n transform(chunk, controller) {\n try {\n const data = JSON.parse(chunk.data)\n controller.enqueue(data)\n } catch (e) {\n if (chunk.data !== '[DONE]') {\n console.warn('Error when transforming event source data to json', e, chunk)\n } else {\n controller.terminate()\n }\n }\n },\n }),),)\n }\n\n get textStream() {\n return createAsyncIterable(this.dataStream.pipeThrough(new TransformStream<BotEventStreamData, string>({\n transform(chunk, controller) {\n controller.enqueue(chunk?.content ?? '')\n },\n }),),)\n }\n}\n","export type { EventSourceParser, ParsedEvent, ReconnectInterval, ParseEvent, EventSourceParseCallback } from './types'\nexport { createParser } from './parse'\n","/**\n * EventSource/Server-Sent Events parser\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html\n *\n * Based on code from the {@link https://github.com/EventSource/eventsource | EventSource module},\n * which is licensed under the MIT license. And copyrighted the EventSource GitHub organisation.\n */\nimport type { EventSourceParseCallback, EventSourceParser } from './types'\n\n/**\n * Creates a new EventSource parser.\n *\n * @param onParse - Callback to invoke when a new event is parsed, or a new reconnection interval\n * has been sent from the server\n *\n * @returns A new EventSource parser, with `parse` and `reset` methods.\n * @public\n */\nexport function createParser(onParse: EventSourceParseCallback): EventSourceParser {\n // Processing state\n let isFirstChunk: boolean\n let buffer: string\n let startingPosition: number\n let startingFieldLength: number\n\n // Event state\n let eventId: string | undefined\n let eventName: string | undefined\n let data: string\n\n reset()\n return { feed, reset }\n\n function reset(): void {\n isFirstChunk = true\n buffer = ''\n startingPosition = 0\n startingFieldLength = -1\n\n eventId = undefined\n eventName = undefined\n data = ''\n }\n\n function feed(chunk: string): void {\n buffer = buffer ? buffer + chunk : chunk\n\n // Strip any UTF8 byte order mark (BOM) at the start of the stream.\n // Note that we do not strip any non - UTF8 BOM, as eventsource streams are\n // always decoded as UTF8 as per the specification.\n if (isFirstChunk && hasBom(buffer)) {\n buffer = buffer.slice(BOM.length)\n }\n\n isFirstChunk = false\n\n // Set up chunk-specific processing state\n const { length } = buffer\n let position = 0\n let discardTrailingNewline = false\n\n // Read the current buffer byte by byte\n while (position < length) {\n // EventSource allows for carriage return + line feed, which means we\n // need to ignore a linefeed character if the previous character was a\n // carriage return\n // @todo refactor to reduce nesting, consider checking previous byte?\n // @todo but consider multiple chunks etc\n if (discardTrailingNewline) {\n if (buffer[position] === '\\n') {\n position += 1\n }\n discardTrailingNewline = false\n }\n\n let lineLength = -1\n let fieldLength = startingFieldLength\n let character: string\n\n for (let index = startingPosition; lineLength < 0 && index < length; index++) {\n character = buffer[index]\n if (character === ':' && fieldLength < 0) {\n fieldLength = index - position\n } else if (character === '\\r') {\n discardTrailingNewline = true\n lineLength = index - position\n } else if (character === '\\n') {\n lineLength = index - position\n }\n }\n\n if (lineLength < 0) {\n startingPosition = length - position\n startingFieldLength = fieldLength\n break\n } else {\n startingPosition = 0\n startingFieldLength = -1\n }\n\n parseEventStreamLine(buffer, position, fieldLength, lineLength)\n\n position += lineLength + 1\n }\n\n if (position === length) {\n // If we consumed the entire buffer to read the event, reset the buffer\n buffer = ''\n } else if (position > 0) {\n // If there are bytes left to process, set the buffer to the unprocessed\n // portion of the buffer only\n buffer = buffer.slice(position)\n }\n }\n\n function parseEventStreamLine(lineBuffer: string, index: number, fieldLength: number, lineLength: number) {\n if (lineLength === 0) {\n // We reached the last line of this event\n if (data.length > 0) {\n onParse({\n type: 'event',\n id: eventId,\n event: eventName || undefined,\n data: data.slice(0, -1), // remove trailing newline\n })\n\n data = ''\n eventId = undefined\n }\n eventName = undefined\n return\n }\n\n const noValue = fieldLength < 0\n const field = lineBuffer.slice(index, index + (noValue ? lineLength : fieldLength))\n let step = 0\n\n if (noValue) {\n step = lineLength\n } else if (lineBuffer[index + fieldLength + 1] === ' ') {\n step = fieldLength + 2\n } else {\n step = fieldLength + 1\n }\n\n const position = index + step\n const valueLength = lineLength - step\n const value = lineBuffer.slice(position, position + valueLength).toString()\n\n if (field === 'data') {\n data += value ? `${value}\\n` : '\\n'\n } else if (field === 'event') {\n eventName = value\n } else if (field === 'id' && !value.includes('\\u0000')) {\n eventId = value\n } else if (field === 'retry') {\n const retry = parseInt(value, 10)\n if (!Number.isNaN(retry)) {\n onParse({ type: 'reconnect-interval', value: retry })\n }\n }\n }\n}\n\nconst BOM = [239, 187, 191]\n\nfunction hasBom(buffer: string) {\n return BOM.every((charCode: number, index: number) => buffer.charCodeAt(index) === charCode)\n}\n","/* eslint-disable eqeqeq */\nimport type { IFetchOptions, SDKRequestInterface } from '@cloudbase/adapter-interface'\nimport type { ICloudbase, ICloudbaseConfig } from '@cloudbase/types'\nimport type { ICloudbaseComponent } from '@cloudbase/types/component'\nimport { AI } from './AI'\nimport { Bot } from './bot'\nimport * as models from './models'\nimport * as utils from './utils'\n\nconst COMPONENT_NAME = 'ai'\n\nconst { MODELS, ...restModels } = models\n\ninterface IHandleRequestInstance {\n req: SDKRequestInterface\n}\n\ntype HandleRequestInstanceFunc = (options: IHandleRequestInstance) => SDKRequestInterface\n\nconst createRequestInstanceWithAccessTokenHeader = ({\n getAccessToken,\n req,\n}: IHandleRequestInstance & { getAccessToken: () => Promise<{ accessToken: string }> }) => {\n const fetch: typeof req.fetch = async (options: IFetchOptions & { token?: string }) => {\n if (typeof req.fetch !== 'function') {\n throw new Error('req.fetch is not a function')\n }\n\n const { token, headers = {}, ...restOptions } = options\n let accessToken: string\n if (token != null) {\n accessToken = token\n } else {\n accessToken = (await getAccessToken()).accessToken\n }\n\n return req.fetch({\n headers: {\n Authorization: `Bearer ${accessToken}`,\n ...headers,\n },\n ...restOptions,\n })\n }\n\n return {\n download: req.download,\n post: req.post,\n upload: req.upload,\n fetch,\n }\n}\n\ninterface AIInitOption {\n baseUrl?: string\n}\n\ninterface ICreateAI {\n req: SDKRequestInterface\n baseUrl?: string\n env?: string\n getAccessToken?: () => Promise<{ accessToken: string }>\n handleReqInstance?: HandleRequestInstanceFunc\n i18n?: ICloudbaseConfig['i18n']\n}\n\n/**\n * 最简地创建一个接云开发网关服务的 `AI` 实例,请求时会自动带上鉴权请求头。\n * 只需要传入:\n *\n * - `getAccessToken`: 获取 accessToken 的函数\n * - `req`: 请求函数,一般从 adapter 上拿\n * - `env`: 云开发环境 ID\n *\n * 其他参数可按需传入覆盖函数逻辑。\n */\nfunction createAI({ env, baseUrl, req, getAccessToken, handleReqInstance, i18n }: ICreateAI) {\n const getBaseUrl = () => {\n if (baseUrl != null) {\n return baseUrl\n }\n if (env == null) {\n throw new Error('`env` is required when `baseUrl` is not provided!')\n }\n return `https://${env}.api.tcloudbasegateway.com/v1`\n }\n\n const getReq = () => {\n if (handleReqInstance == null) {\n if (getAccessToken == null) {\n throw new Error('`getAccessToken` is required when `handleReqInstance` is not provided!')\n }\n return createRequestInstanceWithAccessTokenHeader({ req, getAccessToken })\n }\n return handleReqInstance({ req })\n }\n\n return new AI(getReq(), getBaseUrl(), i18n)\n}\n\n// 兼容\n/**\n * @deprecated use `createAI`\n */\nconst createAi = createAI\n\n/**\n * 创建 `AI` 实例。\n * 该函数挂载在 js sdk 的 Cloudbase 实例上。\n * 该函数调用了本模块暴露的 `createAI` 函数,但调用时通过传入参数做了逻辑覆盖:\n *\n * - 传入从 Cloudbase 实例上的中心的 `req`\n * - 传入从 Cloudbase 实例上拿到的 `baseUrl`\n * - 传入一个不处理 `req` 的 `handleReqInstance`,由于 `req` 是从 Cloudbase 实例上拿到的,这个中心的 `req` 已经可用了\n * - 不用传入 `env` 了,因为已经传了 `baseUrl`\n * - 不用传入 `getAccessToken` 了,因为传了 `handleReqInstance`\n */\nfunction ai(\n this: ICloudbase & { getEndPointWithKey: (key: 'GATEWAY') => { BASE_URL: string; PROTOCOL: string } },\n options?: AIInitOption,\n) {\n const req = this.request\n\n if (req.fetch == null) {\n throw new Error('cloudbase.request.fetch() unimplemented!')\n }\n\n const getUrlFromCloud = () => {\n const { BASE_URL, PROTOCOL } = this.getEndPointWithKey('GATEWAY')\n return `${PROTOCOL}${BASE_URL}`\n }\n\n const baseUrl = options?.baseUrl ?? getUrlFromCloud()\n\n return createAI({ req, baseUrl, handleReqInstance: ({ req }) => req, i18n: this.config.i18n })\n}\n\nconst component: ICloudbaseComponent = {\n name: COMPONENT_NAME,\n entity: { ai },\n}\n\nfunction registerAi(app: ICloudbase) {\n try {\n app.registerComponent(component)\n } catch (e) {\n console.warn(e)\n }\n}\n\nexport { AI, Bot, createAi, createAI, restModels as models, registerAi, utils }\nexport * from './type'\n\ntry {\n (window as any).registerAi = registerAi\n} catch (e) {}\n","/* eslint-disable eqeqeq */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport {\n createAsyncIterable,\n TransformStream,\n toPolyfillReadable,\n intoStandardStream,\n isToolCallAssistantMessage,\n} from '../../utils'\nimport type { ArkGenerateTextOutput, ArkInputData, ArkStreamTextOutput } from './type'\nimport type {\n ModelReq,\n BaseChatModelInput,\n SimpleChatModel,\n DoGenerateOutput,\n DoStreamOutput,\n BaseDoStreamOutputChunk,\n ReqOptions,\n} from '../../type'\n\nfunction processInput(input: BaseChatModelInput): ArkInputData {\n const { messages, model, temperature, tools, top_p } = input\n\n return {\n ...input,\n messages,\n model,\n tools,\n top_p,\n temperature,\n }\n}\n\nexport class ArkSimpleModel implements SimpleChatModel {\n public subUrl = 'ark/api/v3/chat/completions'\n constructor(private req: ModelReq, public baseUrl: string, subUrl?: string) {\n if (subUrl != null) {\n this.subUrl = subUrl\n }\n }\n\n private get url() {\n return `${this.baseUrl}/${this.subUrl}`\n }\n\n public async doGenerate(data: BaseChatModelInput, options?: ReqOptions): Promise<DoGenerateOutput> {\n const res = (await this.req({\n url: this.url,\n data: {\n ...processInput(data),\n stream: false,\n },\n stream: false,\n timeout: options?.timeout,\n })) as ArkGenerateTextOutput\n return { ...res, rawResponse: res }\n }\n\n public async doStream(data: BaseChatModelInput, options?: ReqOptions): Promise<DoStreamOutput> {\n let isToolCall: null | boolean = null\n const _stream = await this.req({\n url: this.url,\n data: {\n ...processInput(data),\n stream: true,\n },\n stream: true,\n timeout: options?.timeout,\n })\n const stream = toPolyfillReadable(_stream) as typeof _stream\n\n const arkStream = intoStandardStream<ArkStreamTextOutput>(stream)\n const streamWithRaw = arkStream.pipeThrough(new TransformStream<ArkStreamTextOutput, BaseDoStreamOutputChunk & { rawResponse?: any }>({\n transform(chunk, controller) {\n const newChoices = chunk.choices.map((choice) => {\n const message = choice.delta\n if (isToolCall == null) isToolCall = isToolCallAssistantMessage(message)\n if (isToolCall) {\n return {\n ...choice,\n finish_reason: 'tool_calls' as const,\n delta: message,\n }\n }\n return choice\n })\n const newChunk = { ...chunk, choices: newChoices }\n controller.enqueue({ ...newChunk, rawResponse: chunk })\n },\n }),)\n\n return createAsyncIterable(streamWithRaw)\n }\n}\n","/* eslint-disable eqeqeq */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport {\n createAsyncIterable,\n TransformStream,\n intoStandardStream,\n isToolCallAssistantMessage,\n toPolyfillReadable,\n} from '../../utils'\nimport type { DSInput, DSGenerateOutput, DSStreamOutput } from './type'\nimport type {\n ModelReq,\n BaseChatModelInput,\n DoGenerateOutput,\n DoStreamOutput,\n BaseDoStreamOutputChunk,\n SimpleChatModel,\n ReqOptions,\n} from '../../type'\n\nfunction processInput(input: BaseChatModelInput): DSInput {\n const { messages, model, temperature, tools, top_p } = input\n\n return {\n ...input,\n messages,\n model,\n tools,\n top_p,\n temperature,\n }\n}\n\nexport class DSSimpleModel implements SimpleChatModel {\n public subUrl = 'dashscope/compatible-mode/v1/chat/completions'\n\n constructor(private req: ModelReq, public baseUrl: string, subUrl?: string) {\n if (subUrl != null) {\n this.subUrl = subUrl\n }\n }\n\n private get url() {\n return `${this.baseUrl}/${this.subUrl}`\n }\n\n public async doGenerate(data: BaseChatModelInput, options?: ReqOptions): Promise<DoGenerateOutput> {\n const res = (await this.req({\n url: this.url,\n data: {\n ...processInput(data),\n stream: false,\n },\n stream: false,\n timeout: options?.timeout,\n })) as DSGenerateOutput\n return { ...res, rawResponse: res }\n }\n\n public async doStream(data: BaseChatModelInput, options?: ReqOptions): Promise<DoStreamOutput> {\n let isToolCall: null | boolean = null\n const _stream = await this.req({\n url: this.url,\n data: {\n ...processInput(data),\n stream: true,\n },\n stream: true,\n timeout: options?.timeout,\n })\n const stream = toPolyfillReadable(_stream) as typeof _stream\n\n const arkStream = intoStandardStream<DSStreamOutput>(stream)\n const streamWithRaw = arkStream.pipeThrough(new TransformStream<DSStreamOutput, BaseDoStreamOutputChunk & { rawResponse?: any }>({\n transform(chunk, controller) {\n const newChoices = chunk.choices.map((choice) => {\n const message = Object.assign(choice.delta, { role: 'assistant' }) as typeof choice.delta & {\n role: 'assistant'\n }\n if (isToolCall == null) isToolCall = isToolCallAssistantMessage(message)\n if (isToolCall) {\n return {\n ...choice,\n finish_reason: 'tool_calls' as const,\n delta: message,\n }\n }\n return { ...choice, delta: message }\n })\n const newChunk = { ...chunk, choices: newChoices }\n controller.enqueue({ ...newChunk, rawResponse: chunk })\n },\n }),)\n\n return createAsyncIterable(streamWithRaw)\n }\n}\n","/* eslint-disable eqeqeq */\nimport {\n createAsyncIterable,\n TransformStream,\n toPolyfillReadable,\n intoStandardStream,\n isToolCallAssistantMessage,\n} from '../../utils'\nimport type {\n ModelReq,\n BaseChatModelInput,\n SimpleChatModel,\n DoStreamOutput,\n BaseDoStreamOutputChunk,\n DoGenerateOutput,\n ReqOptions,\n} from '../../type'\n\nexport class DeepSeekSimpleModel implements SimpleChatModel {\n public subUrl = 'deepseek/chat/completions'\n constructor(private req: ModelReq, public baseUrl: string, subUrl?: string) {\n if (subUrl != null) {\n this.subUrl = subUrl\n }\n }\n\n private get url() {\n return `${this.baseUrl}/${this.subUrl}`\n }\n\n public async doGenerate(data: BaseChatModelInput, options?: ReqOptions): Promise<DoGenerateOutput> {\n const res = (await this.req({\n url: this.url,\n data: {\n ...data,\n stream: false,\n },\n stream: false,\n timeout: options?.timeout,\n })) as DoGenerateOutput\n return { ...res, rawResponse: res }\n }\n\n public async doStream(data: BaseChatModelInput, options?: ReqOptions): Promise<DoStreamOutput> {\n let isToolCall: null | boolean = null\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const _stream = await this.req({\n url: this.url,\n data: {\n ...data,\n stream: true,\n },\n stream: true,\n timeout: options?.timeout,\n })\n const stream = toPolyfillReadable(_stream) as typeof _stream\n\n const standardStream = intoStandardStream<BaseDoStreamOutputChunk>(stream)\n const streamWithRaw = standardStream.pipeThrough(new TransformStream<BaseDoStreamOutputChunk, BaseDoStreamOutputChunk & { rawResponse?: any }>({\n transform(chunk, controller) {\n const newChoices = chunk.choices.map((choice) => {\n const message = choice.delta\n if (isToolCall == null) isToolCall = isToolCallAssistantMessage(message)\n if (isToolCall) {\n return {\n ...choice,\n finish_reason: 'tool_calls' as const,\n delta: message,\n }\n }\n return choice\n })\n const newChunk = { ...chunk, choices: newChoices }\n controller.enqueue({ ...newChunk, rawResponse: chunk })\n },\n }),)\n\n return createAsyncIterable(streamWithRaw)\n }\n}\n","import {\n createAsyncIterable,\n TransformStream,\n toPolyfillReadable,\n intoStandardStream,\n isToolCallAssistantMessage,\n} from '../../utils'\nimport type {\n ModelReq,\n BaseChatModelInput,\n SimpleChatModel,\n DoStreamOutput,\n BaseDoStreamOutputChunk,\n DoGenerateOutput,\n} from '../../type'\n\nexport class DefaultSimpleModel implements SimpleChatModel {\n constructor(private req: ModelReq, public baseUrl: string, public subUrl: string = '') {}\n\n private get url() {\n return `${this.baseUrl}/${this.subUrl}`\n }\n\n public async doGenerate(data: BaseChatModelInput): Promise<DoGenerateOutput> {\n const res = await this.req({\n url: this.url,\n data: { ...data, stream: false },\n stream: false,\n })\n return { ...res, rawResponse: res }\n }\n\n public async doStream(data: BaseChatModelInput): Promise<DoStreamOutput> {\n let isToolCall: null | boolean = null\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const _stream = await this.req({\n url: this.url,\n data: {\n ...data,\n stream: true,\n },\n stream: true,\n })\n const stream = toPolyfillReadable(_stream) as typeof _stream\n\n const standardStream = intoStandardStream<BaseDoStreamOutputChunk>(stream)\n const streamWithRaw = standardStream.pipeThrough(new TransformStream<BaseDoStreamOutputChunk, BaseDoStreamOutputChunk & { rawResponse?: any }>({\n transform(chunk, controller) {\n const newChoices = chunk.choices.map((choice) => {\n const message = choice.delta\n // eslint-disable-next-line eqeqeq\n if (isToolCall == null) isToolCall = isToolCallAssistantMessage(message)\n if (isToolCall) {\n return {\n ...choice,\n finish_reason: 'tool_calls',\n delta: message,\n }\n }\n return choice\n })\n const newChunk = { ...chunk, choices: newChoices }\n controller.enqueue({ ...newChunk, rawResponse: chunk })\n },\n }),)\n\n return createAsyncIterable(streamWithRaw)\n }\n}\n","/* eslint-disable eqeqeq */\nimport {\n createAsyncIterable,\n TransformStream,\n toPolyfillReadable,\n intoStandardStream,\n isToolCallAssistantMessage,\n} from '../../utils'\nimport type {\n ModelReq,\n BaseChatModelInput,\n BaseDoStreamOutputChunk,\n DoStreamOutput,\n SimpleChatModel,\n DoGenerateOutput,\n ReqOptions,\n} from '../../type'\nimport { processInput, titleCaseToSnakeCase } from './util'\nimport { HunYuanGenerateTextOutput, HunYuanStreamTextOutput } from './type'\n\nexport class HunYuanSimpleModel implements SimpleChatModel {\n public subUrl = 'hunyuan'\n constructor(private req: ModelReq, public baseUrl: string, subUrl?: string) {\n if (subUrl != null) {\n this.subUrl = subUrl\n }\n }\n\n private get url() {\n return `${this.baseUrl}/${this.subUrl}`\n }\n\n public async doGenerate(data: BaseChatModelInput, options?: ReqOptions): Promise<DoGenerateOutput> {\n const res = (await this.req({\n url: this.url,\n headers: {\n 'X-Tc-Action': 'ChatCompletions',\n },\n data: {\n ...processInput(data),\n stream: false,\n },\n stream: false,\n timeout: options?.timeout,\n })) as { Response: any }\n const output = titleCaseToSnakeCase(res.Response) as HunYuanGenerateTextOutput\n return {\n ...output,\n rawResponse: res,\n }\n }\n\n public async doStream(data: BaseChatModelInput, options?: ReqOptions): Promise<DoStreamOutput> {\n let isToolCall: null | boolean = null\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const _stream = await this.req({\n url: this.url,\n headers: {\n 'X-Tc-Action': 'ChatCompletions',\n },\n data: {\n ...data,\n stream: true,\n },\n stream: true,\n timeout: options?.timeout,\n })\n const stream = toPolyfillReadable(_stream) as typeof _stream\n\n const hunyuanStream = intoStandardStream(stream)\n const streamWithRaw = hunyuanStream.pipeThrough(new TransformStream<unknown, BaseDoStreamOutputChunk & { rawResponse?: any }>({\n transform(_chunk, controller) {\n const chunk = titleCaseToSnakeCase(_chunk) as HunYuanStreamTextOutput\n const newChoices = chunk.choices.map((choice) => {\n const message = choice.delta\n if (isToolCall == null) isToolCall = isToolCallAssistantMessage(message)\n if (isToolCall) {\n return {\n ...choice,\n finish_reason: 'tool_calls',\n delta: message,\n }\n }\n return choice\n })\n const newChunk = { ...chunk, choices: newChoices }\n controller.enqueue({ ...newChunk, rawResponse: _chunk })\n },\n }),)\n\n return createAsyncIterable(streamWithRaw)\n }\n}\n","/* eslint-disable eqeqeq */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport { HunYuanInputData } from './type'\nimport { BaseChatModelInput } from '../../type'\n\n/**\n * 这里的 process 只是对不符合的 input 做 warning。\n * 实际上还是会如实传递。\n * 防止未来模型参数更新,SDK 没跟上而导致用户输入无法生效。\n */\nexport function processInput(input: BaseChatModelInput): HunYuanInputData {\n const { messages, model, temperature, tool_choice, tools, top_p } = input\n\n const handleTools = () => {\n if (!tools) return undefined\n tools.forEach((tool) => {\n if (tool.type !== 'function') console.warn('`type` in tool is not \\'function\\'', tool)\n })\n return tools as HunYuanInputData['tools']\n }\n\n const handleMessages = () => {\n messages.forEach((message) => {\n if ('tool_calls' in message) {\n message.tool_calls\n .filter(tool_call => tool_call.type !== 'function')\n .forEach(tool_call => console.warn('`type` in tool_call is not \\'function\\'', tool_call, message))\n }\n })\n return messages as HunYuanInputData['messages']\n }\n\n return {\n ...input,\n messages: handleMessages(),\n model,\n tools: handleTools(),\n top_p,\n tool_choice,\n temperature,\n }\n}\n\nexport function titleCaseToSnakeCase(obj: unknown) {\n if (typeof obj !== 'object' || obj == null) return obj // 如果不是对象或者是null,则直接返回\n\n if (Array.isArray(obj)) return obj.map(item => titleCaseToSnakeCase(item)) // 如果是数组,递归处理每个元素\n\n return Object.entries(obj).reduce((acc, [key, value]) => {\n const snakeCaseKey = toSnakeCase(key)\n\n acc[snakeCaseKey] = typeof value === 'object' ? titleCaseToSnakeCase(value) : value\n return acc\n }, {})\n\n function toSnakeCase(s: string) {\n const ret = s.replace(/[A-Z]/g, match => `_${match.toLowerCase()}`)\n return ret.charAt(0) === '_' ? ret.slice(1) : ret\n }\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable eqeqeq */\nimport {\n createAsyncIterable,\n TransformStream,\n toPolyfillReadable,\n intoStandardStream,\n isToolCallAssistantMessage,\n} from '../../utils'\nimport type {\n ModelReq,\n BaseChatModelInput,\n SimpleChatModel,\n DoStreamOutput,\n BaseDoStreamOutputChunk,\n DoGenerateOutput,\n ReqOptions,\n} from '../../type'\nimport { processInput } from '../HunYuan/util'\nimport { HunYuanGenerateTextOutput, HunYuanStreamTextOutput } from '../HunYuan/type'\n\nexport class HunYuanBetaSimpleModel implements SimpleChatModel {\n public subUrl = 'hunyuan-beta/openapi/v1/chat/completions'\n constructor(private req: ModelReq, public baseUrl: string, subUrl?: string) {\n if (subUrl != null) {\n this.subUrl = subUrl\n }\n }\n\n private get url() {\n return `${this.baseUrl}/${this.subUrl}`\n }\n\n public async doGenerate(data: BaseChatModelInput, options?: ReqOptions): Promise<DoGenerateOutput> {\n const res = (await this.req({\n url: this.url,\n data: {\n ...processInput(data),\n stream: false,\n },\n stream: false,\n timeout: options?.timeout,\n })) as HunYuanGenerateTextOutput\n return { ...res, rawResponse: res }\n }\n\n public async doStream(data: BaseChatModelInput, options?: ReqOptions): Promise<DoStreamOutput> {\n let isToolCall: null | boolean = null\n\n const _stream = await this.req({\n url: this.url,\n data: {\n ...processInput(data),\n stream: true,\n },\n stream: true,\n timeout: options?.timeout,\n })\n const stream = toPolyfillReadable(_stream) as typeof _stream\n\n const hunyuanBetaStream = intoStandardStream<HunYuanStreamTextOutput>(stream)\n const streamWithRaw = hunyuanBetaStream.pipeThrough(new TransformStream<HunYuanStreamTextOutput, BaseDoStreamOutputChunk & { rawResponse?: any }>({\n transform(chunk, controller) {\n const newChoices = chunk.choices.map((choice) => {\n const message = choice.delta\n if (isToolCall == null) isToolCall = isToolCallAssistantMessage(message)\n if (isToolCall) {\n return {\n ...choice,\n finish_reason: 'tool_calls',\n delta: message,\n }\n }\n return choice\n })\n const newChunk = { ...chunk, choices: newChoices }\n controller.enqueue({ ...newChunk, rawResponse: chunk })\n },\n }),)\n\n return createAsyncIterable(streamWithRaw)\n }\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable eqeqeq */\nimport {\n createAsyncIterable,\n TransformStream,\n toPolyfillReadable,\n intoStandardStream,\n isToolCallAssistantMessage,\n} from '../../utils'\nimport type {\n ModelReq,\n BaseChatModelInput,\n SimpleChatModel,\n DoStreamOutput,\n BaseDoStreamOutputChunk,\n DoGenerateOutput,\n} from '../../type'\nimport { processInput } from '../HunYuan/util'\nimport { HunYuanGenerateTextOutput, HunYuanStreamTextOutput } from '../HunYuan/type'\n\nexport class HunYuanExpSimpleModel implements SimpleChatModel {\n public subUrl = 'hunyuan-exp/chat/completions'\n constructor(private req: ModelReq, public baseUrl: string, subUrl?: string) {\n if (subUrl != null) {\n this.subUrl = subUrl\n }\n }\n\n private get url() {\n return `${this.baseUrl}/${this.subUrl}`\n }\n\n public async doGenerate(data: BaseChatModelInput): Promise<DoGenerateOutput> {\n const res = (await this.req({\n url: this.url,\n data: {\n ...processInput(data),\n stream: false,\n },\n stream: false,\n })) as HunYuanGenerateTextOutput\n return { ...res, rawResponse: res }\n }\n\n public async doStream(data: BaseChatModelInput): Promise<DoStreamOutput> {\n let isToolCall: null | boolean = null\n\n const _stream = await this.req({\n url: this.url,\n data: {\n ...processInput(data),\n stream: true,\n },\n stream: true,\n })\n const stream = toPolyfillReadable(_stream) as typeof _stream\n\n const hunyuanBetaStream = intoStandardStream<HunYuanStreamTextOutput>(stream)\n const streamWithRaw = hunyuanBetaStream.pipeThrough(new TransformStream<HunYuanStreamTextOutput, BaseDoStreamOutputChunk & { rawResponse?: any }>({\n transform(chunk, controller) {\n const newChoices = chunk.choices.map((choice) => {\n const message = choice.delta\n if (isToolCall == null) isToolCall = isToolCallAssistantMessage(message)\n if (isToolCall) {\n return {\n ...choice,\n finish_reason: 'tool_calls',\n delta: message,\n }\n }\n return choice\n })\n const newChunk = { ...chunk, choices: newChoices }\n controller.enqueue({ ...newChunk, rawResponse: chunk })\n },\n }),)\n\n return createAsyncIterable(streamWithRaw)\n }\n}\n","/* eslint-disable eqeqeq */\nimport {\n createAsyncIterable,\n TransformStream,\n toPolyfillReadable,\n intoStandardStream,\n isToolCallAssistantMessage,\n} from '../../utils'\nimport type {\n ModelReq,\n BaseChatModelInput,\n SimpleChatModel,\n DoStreamOutput,\n BaseDoStreamOutputChunk,\n DoGenerateOutput,\n ReqOptions,\n} from '../../type'\nimport { processInput } from '../HunYuan/util'\nimport { HunYuanGenerateTextOutput, HunYuanStreamTextOutput } from '../HunYuan/type'\n\nexport class HunYuanOpenSimpleModel implements SimpleChatModel {\n public subUrl = 'hunyuan-open/v1/chat/completions'\n constructor(private req: ModelReq, public baseUrl: string, subUrl?: string) {\n if (subUrl != null) {\n this.subUrl = subUrl\n }\n }\n\n private get url() {\n return `${this.baseUrl}/${this.subUrl}`\n }\n\n public async doGenerate(data: BaseChatModelInput, options?: ReqOptions): Promise<DoGenerateOutput> {\n const res = (await this.req({\n url: this.url,\n data: {\n ...processInput(data),\n stream: false,\n },\n stream: false,\n timeout: options?.timeout,\n })) as HunYuanGenerateTextOutput\n return { ...res, rawResponse: res }\n }\n\n public async doStream(data: BaseChatModelInput, options?: ReqOptions): Promise<DoStreamOutput> {\n let isToolCall: null | boolean = null\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const _stream = await this.req({\n url: this.url,\n data: {\n ...processInput(data),\n stream: true,\n },\n stream: true,\n timeout: options?.timeout,\n })\n const stream = toPolyfillReadable(_stream) as typeof _stream\n\n const hunyuanBetaStream = intoStandardStream<HunYuanStreamTextOutput>(stream)\n const streamWithRaw = hunyuanBetaStream.pipeThrough(new TransformStream<HunYuanStreamTextOutput, BaseDoStreamOutputChunk & { rawResponse?: any }>({\n transform(chunk, controller) {\n const newChoices = chunk.choices.map((choice) => {\n const message = choice.delta\n if (isToolCall == null) isToolCall = isToolCallAssistantMessage(message)\n if (isToolCall) {\n return {\n ...choice,\n finish_reason: 'tool_calls',\n delta: message,\n }\n }\n return choice\n })\n const newChunk = { ...chunk, choices: newChoices }\n controller.enqueue({ ...newChunk, rawResponse: chunk })\n },\n }),)\n\n return createAsyncIterable(streamWithRaw)\n }\n}\n","/* eslint-disable eqeqeq */\nimport {\n createAsyncIterable,\n TransformStream,\n toPolyfillReadable,\n intoStandardStream,\n isToolCallAssistantMessage,\n} from '../../utils'\nimport type { MoonshotGenerateTextOutput, MoonshotStreamTextOutput, MoonshotInputData } from './type'\nimport type {\n ModelReq,\n BaseDoStreamOutputChunk,\n DoGenerateOutput,\n DoStreamOutput,\n SimpleChatModel,\n BaseChatModelInput,\n ReqOptions,\n} from '../../type'\n\nfunction processInput(input: BaseChatModelInput): MoonshotInputData {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { messages, model, temperature, tools, top_p } = input\n\n return {\n ...input,\n messages,\n model,\n tools,\n top_p,\n temperature,\n }\n}\n\nexport class MoonshotSimpleModel implements SimpleChatModel {\n public subUrl = 'moonshot/v1/chat/completions'\n constructor(private req: ModelReq, public baseUrl: string, subUrl?: string) {\n if (subUrl != null) {\n this.subUrl = subUrl\n }\n }\n\n private get url() {\n return `${this.baseUrl}/${this.subUrl}`\n }\n\n public async doGenerate(data: BaseChatModelInput, options?: ReqOptions): Promise<DoGenerateOutput> {\n const res = (await this.req({\n url: this.url,\n data: {\n ...processInput(data),\n stream: false,\n },\n stream: false,\n timeout: options?.timeout,\n })) as MoonshotGenerateTextOutput\n return { ...res, rawResponse: res }\n }\n\n public async doStream(data: BaseChatModelInput, options?: ReqOptions): Promise<DoStreamOutput> {\n let isToolCall: null | boolean = null\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const _stream = await this.req({\n url: this.url,\n data: {\n ...processInput(data),\n stream: true,\n },\n stream: true,\n timeout: options?.timeout,\n })\n const stream = toPolyfillReadable(_stream) as typeof _stream\n\n const arkStream = intoStandardStream<MoonshotStreamTextOutput>(stream)\n const streamWithRaw = arkStream.pipeThrough(new TransformStream<MoonshotStreamTextOutput, BaseDoStreamOutputChunk & { rawResponse?: any }>({\n transform(chunk, controller) {\n const newChoices = chunk.choices.map((choice) => {\n const message = choice.delta\n if (isToolCall == null) isToolCall = isToolCallAssistantMessage(message)\n if (isToolCall) {\n return {\n ...choice,\n finish_reason: 'tool_calls' as const,\n delta: message,\n }\n }\n return choice\n })\n const newChunk = { ...chunk, choices: newChoices }\n controller.enqueue({ ...newChunk, rawResponse: chunk })\n },\n }),)\n\n return createAsyncIterable(streamWithRaw)\n }\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable eqeqeq */\nimport {\n createAsyncIterable,\n TransformStream,\n toPolyfillReadable,\n intoStandardStream,\n isToolCallAssistantMessage,\n} from '../../utils'\nimport type { YiInput, YiGenerateOutput, YiStreamOutput } from './type'\nimport type {\n ModelReq,\n BaseChatModelInput,\n DoGenerateOutput,\n DoStreamOutput,\n BaseDoStreamOutputChunk,\n SimpleChatModel,\n ReqOptions,\n} from '../../type'\n\nfunction processInput(input: BaseChatModelInput): YiInput {\n const { messages, model, temperature, tools, top_p } = input\n\n return {\n ...input,\n messages,\n model,\n tools,\n top_p,\n temperature,\n }\n}\n\nexport class YiSimpleModel implements SimpleChatModel {\n public subUrl = '01-ai/v1/chat/completions'\n\n constructor(private req: ModelReq, public baseUrl: string, subUrl?: string) {\n if (subUrl != null) {\n this.subUrl = subUrl\n }\n }\n\n private get url() {\n return `${this.baseUrl}/${this.subUrl}`\n }\n\n public async doGenerate(data: BaseChatModelInput, options?: ReqOptions): Promise<DoGenerateOutput> {\n const res = (await this.req({\n url: this.url,\n data: {\n ...processInput(data),\n stream: false,\n },\n stream: false,\n timeout: options?.timeout,\n })) as YiGenerateOutput\n return { ...res, rawResponse: res }\n }\n\n public async doStream(data: BaseChatModelInput, options?: ReqOptions): Promise<DoStreamOutput> {\n let isToolCall: null | boolean = null\n const _stream = await this.req({\n url: this.url,\n data: {\n ...processInput(data),\n stream: true,\n },\n stream: true,\n timeout: options?.timeout,\n })\n const stream = toPolyfillReadable(_stream) as typeof _stream\n\n const arkStream = intoStandardStream<YiStreamOutput>(stream)\n const streamWithRaw = arkStream.pipeThrough(new TransformStream<YiStreamOutput, BaseDoStreamOutputChunk & { rawResponse?: any }>({\n transform(chunk, controller) {\n // 非常奇葩\n if (!(chunk?.choices?.[0]?.delta?.content || chunk?.choices?.[0]?.delta?.tool_calls)) return\n\n const newChoices = chunk.choices.map((choice) => {\n const message = Object.assign(choice.delta, { role: 'assistant' }) as typeof choice.delta & {\n role: 'assistant'\n }\n if (isToolCall == null) isToolCall = isToolCallAssistantMessage(message)\n if (isToolCall) {\n return {\n ...choice,\n finish_reason: 'tool_calls' as const,\n delta: message,\n }\n }\n return { ...choice, delta: message }\n })\n const newChunk = { ...chunk, choices: newChoices }\n controller.enqueue({ ...newChunk, rawResponse: chunk })\n },\n }),)\n\n return createAsyncIterable(streamWithRaw)\n }\n}\n","/* eslint-disable eqeqeq */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport {\n createAsyncIterable,\n TransformStream,\n toPolyfillReadable,\n intoStandardStream,\n isToolCallAssistantMessage,\n} from '../../utils'\nimport type { ZhiPuGenerateTextOutput, ZhiPuInputData, ZhiPuStreamTextOutput } from './type'\nimport type {\n ModelReq,\n BaseChatModelInput,\n SimpleChatModel,\n DoStreamOutput,\n BaseDoStreamOutputChunk,\n DoGenerateOutput,\n ReqOptions,\n} from '../../type'\n\nfunction processInput(input: BaseChatModelInput): ZhiPuInputData {\n const { messages, model, temperature, tool_choice, tools, top_p } = input\n\n const processToolChoice = () => {\n if (tool_choice && tool_choice !== 'auto') {\n console.warn('`tool_choice` is not \\'auto\\'')\n }\n return tool_choice as any\n }\n\n return {\n ...input,\n messages,\n model,\n temperature,\n tool_choice: processToolChoice(),\n tools,\n top_p,\n }\n}\n\nexport class ZhiPuSimpleModel implements SimpleChatModel {\n public subUrl = 'zhipu/api/paas/v4/chat/completions'\n constructor(private req: ModelReq, public baseUrl: string, subUrl?: string) {\n if (subUrl != null) {\n this.subUrl = subUrl\n }\n }\n\n private get url() {\n return `${this.baseUrl}/${this.subUrl}`\n }\n\n public async doGenerate(_data: BaseChatModelInput, options?: ReqOptions): Promise<DoGenerateOutput> {\n const data = processInput(_data)\n const res = (await this.req({\n url: this.url,\n data: {\n ...data,\n stream: false,\n },\n stream: false,\n timeout: options?.timeout,\n })) as ZhiPuGenerateTextOutput\n return { ...res, rawResponse: res }\n }\n\n public async doStream(_data: BaseChatModelInput, options?: ReqOptions): Promise<DoStreamOutput> {\n const data = processInput(_data)\n let isToolCall: null | boolean = null\n const _stream = await this.req({\n url: this.url,\n data: {\n ...data,\n stream: true,\n },\n stream: true,\n timeout: options?.timeout,\n })\n const stream = toPolyfillReadable(_stream) as typeof _stream\n\n const zhipuStream = intoStandardStream<ZhiPuStreamTextOutput>(stream)\n const streamWithRaw = zhipuStream.pipeThrough(new TransformStream<ZhiPuStreamTextOutput, BaseDoStreamOutputChunk & { rawResponse?: any }>({\n transform(chunk, controller) {\n const newChoices = chunk.choices.map((choice) => {\n const message = choice.delta\n if (isToolCall == null) isToolCall = isToolCallAssistantMessage(message)\n if (isToolCall) {\n return {\n ...choice,\n finish_reason: 'tool_calls' as const,\n delta: message,\n }\n }\n return choice\n })\n const newChunk = { ...chunk, choices: newChoices }\n controller.enqueue({ ...newChunk, rawResponse: chunk })\n },\n }),)\n\n return createAsyncIterable(streamWithRaw)\n }\n}\n","import type {\n ModelReq,\n // ImageEditInput,\n HunyuanGenerateImageInput,\n HunyuanGenerateImageOutput,\n HunyuanARGenerateImageInput,\n HunyuanARGenerateImageOutput,\n // HunyuanEditImageInput,\n // HunyuanEditImageOutput,\n} from '../type'\n\ninterface HunyuanImageGenerateFn {\n (input: HunyuanARGenerateImageInput): Promise<HunyuanARGenerateImageOutput>\n (input: HunyuanGenerateImageInput): Promise<HunyuanGenerateImageOutput>\n}\n\ntype GenerateImageFn<TProvider> = TProvider extends 'hunyuan-image'\n ? HunyuanImageGenerateFn\n : (input: unknown) => Promise<unknown>\n\nexport class DefaultImageModel<TProvider extends string> {\n public defaultGenerateImageSubUrl = 'images/generations'\n\n public generateImageSubUrlConfig: Record<string, Record<string, string>> = {\n 'hunyuan-image': {\n 'hunyuan-image-v3.0-v1.0.4': 'images/ar/generations',\n 'hunyuan-image-v3.0-v1.0.1': 'images/ar/generations',\n },\n }\n\n /** 生成图片 */\n public generateImage: GenerateImageFn<TProvider>\n\n constructor(private req: ModelReq, public baseUrl: string, public provider: TProvider) {\n this.generateImage = this.generateImageImpl.bind(this) as GenerateImageFn<TProvider>\n }\n\n /** generateImage 的实际实现 */\n private async generateImageImpl(input: HunyuanARGenerateImageInput | HunyuanGenerateImageInput,): Promise<HunyuanARGenerateImageOutput | HunyuanGenerateImageOutput> {\n let subUrl = this.defaultGenerateImageSubUrl\n\n if (typeof input === 'object' && input && 'model' in input && typeof input.model === 'string') {\n const newSubUrl = this.generateImageSubUrlConfig[this.provider]?.[input.model]\n if (newSubUrl) subUrl = newSubUrl\n }\n\n const res = (await this.req({\n url: this.getGenerateUrl(subUrl),\n data: input,\n stream: false,\n })) as HunyuanARGenerateImageOutput | HunyuanGenerateImageOutput\n\n return res\n }\n\n private getGenerateUrl(subUrl: string) {\n return `${this.baseUrl}/${this.provider}/${subUrl}`\n }\n}\n","import { ZhiPuSimpleModel } from './ZhiPu/index'\nimport { HunYuanBetaSimpleModel } from './HunYuanBeta/index'\nimport { HunYuanSimpleModel } from './HunYuan/index'\nimport { ArkSimpleModel } from './Ark/index'\nimport { DSSimpleModel } from './DashScope/index'\nimport { YiSimpleModel } from './Yi/index'\nimport { MoonshotSimpleModel } from './Moonshot/index'\nimport { HunYuanExpSimpleModel } from './HunYuanExp/index'\nimport { HunYuanOpenSimpleModel } from './HunYuanOpen/index'\nimport { DeepSeekSimpleModel } from './DeepSeek'\nimport { DefaultSimpleModel } from './Default'\nimport { DefaultImageModel } from './image-model'\n\nexport const MODELS = {\n hunyuan: HunYuanSimpleModel,\n 'hunyuan-beta': HunYuanBetaSimpleModel,\n ark: ArkSimpleModel,\n dashscope: DSSimpleModel,\n '01-ai': YiSimpleModel,\n moonshot: MoonshotSimpleModel,\n zhipu: ZhiPuSimpleModel,\n 'hunyuan-exp': HunYuanExpSimpleModel,\n 'hunyuan-open': HunYuanOpenSimpleModel,\n deepseek: DeepSeekSimpleModel,\n}\n\nexport {\n ZhiPuSimpleModel,\n HunYuanBetaSimpleModel,\n HunYuanSimpleModel,\n ArkSimpleModel,\n DSSimpleModel,\n YiSimpleModel,\n MoonshotSimpleModel,\n HunYuanExpSimpleModel,\n HunYuanOpenSimpleModel,\n DefaultSimpleModel,\n DefaultImageModel,\n}\n\nexport { ReactModel, toolMap } from './model'\n","/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable eqeqeq */\nimport {\n createAsyncIterable,\n TransformStream,\n createPromise,\n isToolCallAssistantMessage,\n functionToolToModelTool,\n} from '../utils'\nimport {\n BaseChatModelInput,\n BaseDoStreamOutputChunk,\n DoStreamOutput,\n DoGenerateOutput,\n SimpleChatModel,\n ToolCall,\n ChatModelMessage,\n AsyncIterableReadableStream,\n Usage,\n ToolCallAssistantMessage,\n ModelTool,\n FunctionTool,\n ReqOptions,\n} from '../type'\n\ntype ReactModelInput = ReactProps &\nOmit<BaseChatModelInput, 'tools'> & {\n tools?: Array<ModelTool | FunctionTool>\n topP?: number\n toolChoice?: 'none' | 'auto' | 'custom'\n}\n\ninterface IOnStepFinish {\n messages: Array<ChatModelMessage>\n text?: string\n toolCall?: ToolCall\n toolResult?: unknown\n finishReason?: string\n stepUsage?: Usage\n totalUsage?: Usage\n}\n\ninterface ReactProps {\n maxSteps?: number\n onStepFinish?: (prop: IOnStepFinish) => unknown\n abortSignal?: AbortSignal // TODO: 实现 abortSignal\n}\n\nfunction processInput(obj: ReactModelInput): [ReactProps, BaseChatModelInput] {\n const { onStepFinish, abortSignal, maxSteps, topP, toolChoice, ...b } = obj\n\n if (maxSteps != null && maxSteps < 1) {\n throw new Error('`maxSteps` muse be greater than 0.')\n }\n\n return [\n { onStepFinish, abortSignal, maxSteps },\n {\n ...b,\n tools: b.tools?.map((tool) => {\n if ('fn' in tool) {\n return functionToolToModelTool(tool)\n }\n return tool\n }),\n top_p: topP != null ? topP : b.top_p,\n tool_choice: toolChoice != null ? toolChoice : b.tool_choice,\n },\n ]\n}\n\nexport class ReactModel {\n constructor(private model: SimpleChatModel) {}\n\n public async generateText(_input: ReactModelInput, options?: ReqOptions): Promise<{\n text: string\n messages: Array<ChatModelMessage>\n usage: Usage\n rawResponses: Array<unknown>\n error?: any\n }> {\n const rawResponses = []\n const totalUsage: Usage = { completion_tokens: 0, prompt_tokens: 0, total_tokens: 0 }\n\n const [{ onStepFinish, maxSteps = 10 }, input] = processInput(_input)\n\n const doGenerate = () => this.model.doGenerate(input, options) // 后续代码会直接对 input.messages 原地修改,这里一直用同一个对象就行\n let currentRes = await doGenerate()\n let currentStep = 1\n currentRes.rawResponse && rawResponses.push(currentRes.rawResponse)\n\n let toolCall: ToolCall | null = null\n\n // TODO: 一次对话有多个 tool call? 目前没有这种现象,暂时不处理\n while (currentStep < maxSteps && (toolCall = getToolCallFromGenerate(currentRes)) != null) {\n const stepUsage = createSolidUsage(currentRes.usage)\n addToUsage(totalUsage, stepUsage)\n\n // 当判断需要工具调用时\n try {\n const toolCallResult = await callTool(toolCall) // 调用\n\n const choice = currentRes.choices[0] // getToolCallFromGenerate 保证了 choice 肯定存在\n\n await onStepFinish?.({\n finishReason: choice.finish_reason,\n messages: input.messages.slice(),\n text: choice.message.content,\n toolCall,\n toolResult: toolCallResult,\n stepUsage,\n totalUsage: Object.assign({}, totalUsage),\n })\n\n pushNewMessages(input.messages, choice.message as ToolCallAssistantMessage, toolCallResult) // 用调用结果修改最新的消息\n\n currentRes = await doGenerate() // 循环对话\n currentRes.rawResponse && rawResponses.push(currentRes.rawResponse)\n currentStep += 1\n } catch (e) {\n return {\n text: '',\n messages: input.messages,\n usage: totalUsage,\n error: e,\n rawResponses,\n }\n }\n }\n\n const lastChoice = currentRes?.choices?.[0]\n const lastMessage = lastChoice?.message\n\n const text = lastMessage?.content ?? ''\n const messages = lastMessage ? [...input.messages, lastMessage] : input.messages\n\n const stepUsage = createSolidUsage(currentRes.usage)\n addToUsage(totalUsage, stepUsage)\n\n await onStepFinish?.({\n finishReason: lastChoice.finish_reason,\n messages: messages.slice(),\n text,\n toolCall: getToolCallFromGenerate(currentRes),\n toolResult: null,\n stepUsage,\n totalUsage: Object.assign({}, totalUsage),\n })\n\n return {\n text,\n messages,\n usage: totalUsage,\n rawResponses,\n }\n }\n\n public async streamText(_input: ReactModelInput, options?: ReqOptions): Promise<{\n dataStream: DoStreamOutput\n textStream: AsyncIterableReadableStream<string>\n messages: Promise<Array<ChatModelMessage>>\n usage: Promise<Usage>\n error?: any\n }> {\n const totalUsage: Usage = { completion_tokens: 0, prompt_tokens: 0, total_tokens: 0 }\n\n const [{ onStepFinish, maxSteps = 10 }, input] = processInput(_input)\n const doStream = () => this.model.doStream(input, options) // 后续代码会直接对 input.messages 原地修改,这里一直用同一个对象就行\n let currentRes = await doStream()\n const currentStep = 1\n let readResult: { message: ToolCallAssistantMessage; usage: Usage } | null = null\n\n const readCurrentStream = () => {\n const [oldStream, newStream] = currentRes.tee()\n currentRes = createAsyncIterable(oldStream)\n return readFunctionCallStream(newStream)\n }\n\n // TODO: 一次对话有多个 tool call? 目前没有这种现象,暂时不处理\n // 这里和 generateText 不太一样,除了解析出 toolCall 外,还需要从流中构造出其他完整的信息\n while (currentStep < maxSteps && (readResult = await readCurrentStream()) != null) {\n const { message: assistantMessage, usage: stepUsage } = readResult\n addToUsage(totalUsage, stepUsage)\n\n // 当判断需要工具调用时\n const toolCall = assistantMessage.tool_calls?.[0] // 这个 toolCall 一定存在\n try {\n const toolCallResult = await callTool(toolCall) // 调用\n\n await onStepFinish?.({\n finishReason: 'tool_calls',\n messages: input.messages.slice(),\n text: assistantMessage.content,\n toolCall,\n toolResult: toolCallResult,\n stepUsage,\n totalUsage: Object.assign({}, totalUsage),\n })\n\n pushNewMessages(input.messages, assistantMessage, toolCallResult) // 用调用结果修改最新的消息\n currentRes = await doStream() // 循环对话\n } catch (e) {\n const [s1, s2] = currentRes.tee()\n return {\n messages: Promise.resolve(input.messages),\n dataStream: createAsyncIterable(s1),\n textStream: createAsyncIterable(s2.pipeThrough(new TransformStream({\n transform(chunk, controller) {\n const str = chunk?.choices?.[0]?.delta?.content\n if (typeof str === 'string') controller.enqueue(str)\n },\n }),),),\n usage: Promise.resolve(totalUsage),\n error: e,\n }\n }\n }\n\n /**\n * 最后返回时,有几种情况:\n * 1. 没超 maxStep 无工具调用\n * 2. 超了 maxStep 有工具调用\n * 3. 超了 maxStep 无工具调用\n * never. 没超 maxStep,有工具调用,这时候会进到上面的 while 循环 block 中处理\n *\n * 其中 1. 3. 可以合并,没有工具调用就应该直接返回,无论 maxStep\n *\n * 所以合并为:\n * 1. 无工具调用\n * 2. 有工具调用,但是超过 maxStep\n *\n * 这两种情况都没进到 while 循环 block 中处理\n * 我们需要 a. 塞 message b. 算 Usage c. 调用 onStepFinish\n */\n\n readResult = await readCurrentStream()\n\n if (readResult) {\n // 情况 2 有工具调用,但是超过 maxStep\n const { message, usage } = readResult\n addToUsage(totalUsage, usage)\n\n const messages = [...input.messages, message]\n\n onStepFinish({\n messages: messages.slice(),\n finishReason: 'tool_call',\n stepUsage: usage,\n text: message.content,\n toolCall: message.tool_calls[0],\n totalUsage: Object.assign({}, totalUsage),\n })\n\n const [s1, s2] = currentRes.tee()\n return {\n messages: Promise.resolve([...input.messages, message]),\n dataStream: createAsyncIterable(s1),\n textStream: createAsyncIterable(s2.pipeThrough(new TransformStream({\n transform(chunk, controller) {\n const str = chunk?.choices?.[0]?.delta?.content\n if (typeof str === 'string') controller.enqueue(str)\n },\n }),),),\n usage: Promise.resolve(totalUsage),\n }\n }\n // 情况 1 无工具调用\n const messagePromise = createPromise<Array<ChatModelMessage>>()\n const usagePromise = createPromise<Usage>()\n\n const message: ChatModelMessage = {\n role: 'assistant',\n content: '',\n }\n let finishReason = ''\n const stepUsage: Usage = { completion_tokens: 0, prompt_tokens: 0, total_tokens: 0 }\n\n const originStream = currentRes.pipeThrough(new TransformStream({\n transform(chunk, controller) {\n // 不改变 chunk 内容,只是拦截下内容拼最后的结果\n const content = chunk?.choices?.[0]?.delta?.content\n if (typeof content === 'string') {\n message.content += content\n }\n\n const reason = chunk?.choices?.[0]?.finish_reason\n if (reason) finishReason = reason\n\n // TODO: 不同大模型的 stream usage 格式不一样,后续可能要调整.\n // hunyuan 每个 chunk 都会有 usage,逐步增加,以最后一个的为准;\n // zhipu 最后 chunk 会有 usage;\n if (chunk?.usage?.completion_tokens) stepUsage.completion_tokens = chunk.usage.completion_tokens\n if (chunk?.usage?.prompt_tokens) stepUsage.prompt_tokens = chunk.usage.prompt_tokens\n if (chunk?.usage?.total_tokens) stepUsage.total_tokens = chunk.usage.total_tokens\n\n controller.enqueue(chunk)\n },\n flush() {\n messagePromise.res([...input.messages, message])\n addToUsage(totalUsage, stepUsage)\n usagePromise.res(Object.assign({}, totalUsage))\n onStepFinish?.({\n messages: [...input.messages, message],\n finishReason,\n text: message.content,\n stepUsage,\n totalUsage: Object.assign({}, totalUsage),\n })\n },\n }),)\n\n const [s1, s2] = originStream.tee()\n\n return {\n messages: messagePromise.promise,\n dataStream: createAsyncIterable(s1),\n textStream: createAsyncIterable(s2.pipeThrough(new TransformStream({\n transform(chunk, controller) {\n const content = chunk?.choices?.[0]?.delta?.content\n if (typeof content === 'string') {\n controller.enqueue(content)\n }\n },\n }),),),\n usage: usagePromise.promise,\n }\n }\n}\n\nfunction getToolCallFromGenerate(output: DoGenerateOutput) {\n const choice = output?.choices?.[0]\n\n if (!choice) return null\n\n const { finish_reason, message } = choice\n\n if (finish_reason !== 'tool_calls') return null\n if (!message) return null\n if (!isToolCallAssistantMessage(message)) return null\n\n return message.tool_calls[0]\n}\n\nfunction pushNewMessages(\n messages: Array<ChatModelMessage>,\n assistantMessage: ToolCallAssistantMessage,\n toolCallResult: unknown,\n) {\n messages.push(assistantMessage, {\n role: 'tool',\n tool_call_id: assistantMessage.tool_calls[0].id,\n content: JSON.stringify(toolCallResult),\n })\n}\n\nasync function readFunctionCallStream(stream: ReadableStream<BaseDoStreamOutputChunk>,): Promise<{ message: ToolCallAssistantMessage; usage: Usage } | null> {\n const stepUsage: Usage = { completion_tokens: 0, prompt_tokens: 0, total_tokens: 0 }\n const aStream = createAsyncIterable(stream)\n\n const retToolCall: ToolCall = {\n id: '',\n function: {\n name: '',\n arguments: '',\n },\n type: '',\n }\n\n const retMessage: ToolCallAssistantMessage = {\n role: 'assistant',\n content: '',\n tool_calls: [retToolCall],\n }\n\n for await (const chunk of aStream) {\n const choice = chunk?.choices[0]\n if (!choice) return null\n\n const { finish_reason, delta } = choice\n\n if (finish_reason !== 'tool_calls') return null\n if (!delta) continue\n\n if (delta.content) retMessage.content += delta.content\n\n if (!('tool_calls' in delta)) continue\n const toolCall = delta?.tool_calls?.[0]\n if (toolCall?.id) retToolCall.id = toolCall.id\n if (toolCall?.type) retToolCall.type = toolCall.type\n if (toolCall?.function?.name) retToolCall.function.name = toolCall.function.name\n if (toolCall?.function?.arguments) retToolCall.function.arguments += toolCall.function.arguments\n\n // TODO: 不同大模型的 stream usage 格式不一样,后续可能要调整.\n // hunyuan 每个 chunk 都会有 usage,逐步增加,以最后一个的为准;\n // zhipu 最后 chunk 会有 usage;\n if (chunk?.usage?.completion_tokens) stepUsage.completion_tokens = chunk.usage.completion_tokens\n if (chunk?.usage?.prompt_tokens) stepUsage.prompt_tokens = chunk.usage.prompt_tokens\n if (chunk?.usage?.total_tokens) stepUsage.total_tokens = chunk.usage.total_tokens\n }\n\n return {\n message: retMessage,\n usage: stepUsage,\n }\n}\n\nexport const toolMap = new Map<string, CallableFunction>()\n\nfunction callTool(toolCall: ToolCall) {\n return toolMap.get(toolCall.function.name)(JSON.parse(toolCall.function.arguments))\n}\n\nfunction createSolidUsage(usage?: Partial<Usage>): Usage {\n return {\n completion_tokens: usage?.completion_tokens ?? 0,\n prompt_tokens: usage?.prompt_tokens ?? 0,\n total_tokens: usage?.total_tokens ?? 0,\n }\n}\n\nfunction addToUsage(targetUsage: Usage, sourceUsage: Usage) {\n targetUsage.completion_tokens += sourceUsage.completion_tokens\n targetUsage.prompt_tokens += sourceUsage.prompt_tokens\n targetUsage.total_tokens += sourceUsage.total_tokens\n}\n","export abstract class SimpleChatModel {\n public abstract doGenerate(data: BaseChatModelInput, options?: ReqOptions): Promise<DoGenerateOutput>\n\n public abstract doStream(data: BaseChatModelInput, options?: ReqOptions): Promise<DoStreamOutput>\n}\n\ntype RawResponse = { rawResponse?: any }\n\nexport type DoGenerateOutput = BaseDoGenerateOutput & RawResponse\n\nexport type DoStreamOutput = AsyncIterableReadableStream<BaseDoStreamOutputChunk & RawResponse>\n\nexport type ChatModelConstructor = typeof SimpleChatModel\n\nexport type AsyncIterableReadableStream<T> = ReadableStream<T> & {\n [Symbol.asyncIterator]: () => { next(): Promise<IteratorResult<T>> }\n}\n\nexport interface IModelReqInput {\n url: string\n headers?: Record<string, string>\n data?: Object\n stream?: boolean\n timeout?: number\n}\n\nexport type ModelReq = <T extends IModelReqInput>(\n props: T,\n) => T['stream'] extends true ? Promise<ReadableStream<Uint8Array>> : Promise<Object>\n\nexport interface IBotReqInput {\n url: string\n method: string\n headers?: Record<string, string>\n data?: Object\n stream?: boolean\n timeout?: number\n}\n\nexport interface ReqOptions {\n timeout?: number\n}\n\nexport type BotReq = <T extends IBotReqInput>(\n props: T,\n) => T['stream'] extends true ? Promise<ReadableStream<Uint8Array>> : Promise<Object>\n\nexport type UserMessage = {\n role: 'user'\n content: string\n}\n\nexport type SystemMessage = {\n role: 'system'\n content: string\n}\n\nexport type AssistantMessage = PlainAssistantMessage | ToolCallAssistantMessage\n\nexport type PlainAssistantMessage = {\n role: 'assistant'\n content: string\n}\n\nexport type ToolCallAssistantMessage = {\n role: 'assistant'\n tool_calls: Array<ToolCall>\n content?: string\n}\n\nexport type ToolMessage = {\n role: 'tool'\n tool_call_id: string\n content: string\n}\n\nexport type ChatModelMessage = UserMessage | SystemMessage | AssistantMessage | ToolMessage\n\nexport type FunctionTool = {\n name: string\n description: string\n fn: CallableFunction\n parameters: object\n}\n\n// #region 大模型标准输入类型\nexport interface BaseChatModelInput {\n model: string\n messages: Array<ChatModelMessage>\n temperature?: number\n top_p?: number\n tools?: Array<ModelTool>\n tool_choice?: 'none' | 'auto' | 'custom'\n}\n\n/**\n * 给 LLM 发请求时要传的工具\n */\nexport type ModelTool = {\n type: string\n function: ModelToolFunction\n}\n\n/**\n * 给 LLM 发请求时要传的工具函数\n */\nexport type ModelToolFunction = {\n name: string\n description: string\n /**\n * 描述函数参数的 JSON Schema\n */\n parameters: object\n}\n// #endregion\n\n// #region 大模型标准响应类型\nexport type ToolCall = {\n id: string\n type: string\n function: { name: string; arguments: string }\n}\n\ntype FinishReason = 'tool_calls' | (string & {})\n\nexport type Usage = {\n completion_tokens: number\n prompt_tokens: number\n total_tokens: number\n}\n\nexport interface BaseDoGenerateOutput {\n choices?: Array<{\n finish_reason?: FinishReason\n message?: ChatModelMessage\n }>\n usage?: Usage\n}\n\nexport interface BaseDoStreamOutputChunk {\n choices?: Array<{\n finish_reason?: FinishReason\n delta?: ChatModelMessage\n }>\n usage?: Usage\n}\n// #endregion\n\n// #region Image Model Types\n/**\n * 图片生成输入参数\n */\nexport interface ImageGenerateInput {\n model: string // 模型名称,例如 'hunyuan-image'、'dall-e-3'\n prompt: string // 用于描述要生成的图片内容\n size?: string // 尺寸\n n?: number // 张数\n [key: string]: unknown // 允许额外的厂商特定参数\n}\n\n/**\n * 图片编辑输入参数\n */\nexport interface ImageEditInput {\n model: string\n prompt: string\n size?: string // 尺寸\n n?: number // 张数\n [key: string]: unknown // 允许额外的厂商特定参数\n}\n\nexport interface HunyuanGenerateImageInput {\n model: 'hunyuan-image'\n /** 用来生成图像的文本描述 */\n prompt: string\n /**\n * 模型版本,支持 v1.8.1 和 v1.9,默认版本 v1.8.1\n * - v1.8.1: 采用二阶段模型支持文生图任务,针对图像细节、稳定性等要求高的任务较为合适\n * - v1.9: 采用模型矩阵能力支持文生图任务,后端由人像、游戏、通用模型,以及各类功能插件组成,灵活适配多种文生图任务\n */\n version?: 'v1.8.1' | 'v1.9' | (string & {})\n /**\n * 图片尺寸,默认 \"1024x1024\"\n * v1.9 仅支持以下几个尺寸:\n * - 1024x1024\n * - 1024x768, 1152x864\n * - 768x1024, 864x1152\n * - 1280x768 (16:9)\n * - 768x1280 (9:16)\n * - 1280x720 (16:9)\n * - 720x1280 (9:16)\n *\n * 支持用户自定义尺寸,但输入尺寸只支持 768-1280 之间且为 64 的倍数的数字\n */\n size?: string\n /**\n * 仅 v1.9 支持,负向词\n * 如果不传则使用各个模型内部的默认负向词\n */\n negative_prompt?: string\n /**\n * 仅 v1.9 支持,可指定风格:\n * - 古风二次元风格\n * - 都市二次元风格\n * - 悬疑风格\n * - 校园风格\n * - 都市异能风格\n */\n style?: '古风二次元风格' | '都市二次元风格' | '悬疑风格' | '校园风格' | '都市异能风格' | (string & {})\n /**\n * 为 true 时对 prompt 进行改写,实际生成的图片会使用改写后的 prompt 进行生成\n * 多数场景可提升生成的图片效果,默认为 true\n */\n revise?: boolean\n /**\n * 生成图片个数,默认为 1\n * 目前只支持生成一张,固定为 1,传其他的值会报错\n */\n n?: number\n /**\n * 业务自定义水印内容\n * 限制 16 个字符长度(不区分中英文),生成在图片右下角\n */\n footnote?: string\n /**\n * 生成种子,仅当生成图片数为 1 时生效\n * 范围 [1, 4294967295],不传时默认随机\n */\n seed?: number\n}\n\nexport interface HunyuanARGenerateImageInput {\n /** 模型名称:hunyuan-image-v3.0-v1.0.4(推荐)或 hunyuan-image-v3.0-v1.0.1 */\n model: 'hunyuan-image-v3.0-v1.0.4' | 'hunyuan-image-v3.0-v1.0.1'\n /** 生成图片使用的文本,不超过 8192 字符 */\n prompt: string\n /**\n * 图片尺寸,格式 \"${宽}x${高}\",默认 \"1024x1024\"\n * hunyuan-image-v3.0-v1.0.4:宽高 [512, 2048],面积不超过 1024x1024\n * hunyuan-image-v3.0-v1.0.1:支持固定尺寸列表\n */\n size?: string\n /** 生成种子,仅当生成图片数为 1 时生效,范围 [1, 4294967295] */\n seed?: number\n /** 业务自定义水印内容,限制 16 字符,生成在图片右下角 */\n footnote?: string\n /** 是否对 prompt 改写,默认开启。改写会增加约 30s 耗时 */\n revise?: { value: boolean }\n /** 改写是否开启 thinking 模式,默认开启。开启后效果提升但耗时增加(最大 60s) */\n enable_thinking?: { value: boolean }\n}\n\nexport interface HunyuanARGenerateImageOutput {\n /** 此次请求的 id */\n id: string\n /** unix 时间戳 */\n created: number\n /** 返回的图片生成内容 */\n data: Array<{\n /** 生成的图片 url,有效期 24 小时 */\n url: string\n /** 改写后的 prompt */\n revised_prompt?: string\n }>\n}\n\nexport type HunyuanEditImageInput = {\n /** 模型名称,本期为 hunyuan-image,即为商品图编辑场景 */\n model: 'hunyuan-image' | (string & {})\n /** 编辑的文本描述 */\n prompt: string\n /** 模型版本 */\n version?: string\n /**\n * 图片尺寸,默认 \"800x800\"\n * 支持用户自定义尺寸,但输入尺寸只支持 512-1280 之间\n * 目前只支持 1:1、16:9、9:16 三个尺寸\n */\n size?: string\n /**\n * 生成图片个数,默认为 1\n * 目前只支持生成一张,固定为 1,传其他的值会报错\n */\n n?: number\n /**\n * beta 参数,随机种子\n * 范围 [1, 4294967295],不传时默认随机\n */\n seed?: number\n /**\n * 业务自定义角标内容\n * 限制 16 个字符长度(不区分中英文)\n */\n footnote?: string\n /**\n * 图 base64 编码,大小不超过 6M\n * 支持 jpg/jpeg 格式,和 image_url 二选一\n * 长短边比例要求 2:1 内\n */\n image?: string\n /**\n * 图片 url\n * 长短边比例要求 2:1 内,和 image 二选一\n */\n image_url?: string\n} & (\n | {\n mask: string\n mask_url?: never\n }\n | {\n mask?: never\n mask_url: string\n }\n)\n\n/**\n * 混元图片生成输出\n */\nexport interface HunyuanGenerateImageOutput {\n /** 此次请求的 id */\n id: string\n /** unix 时间戳 */\n created: number\n /** 返回的图片生成内容 */\n data: Array<{\n /** 生成的图片 url,有效期为 24 小时 */\n url: string\n /** 原 prompt 改写后的文本。若 revise 为 false,则为原 prompt */\n revised_prompt?: string\n }>\n}\n\n/**\n * 混元图片编辑输出\n */\nexport interface HunyuanEditImageOutput {\n /** 此次请求的 id */\n id: string\n /** unix 时间戳 */\n created: number\n /** 返回的图片生成内容 */\n data: Array<{\n /** 生成的图片 url,有效期为 24 小时 */\n url: string\n }>\n}\n\n// #endregion\n","import { TransformStream as _TransformStream, ReadableStream as _ReadableStream } from 'web-streams-polyfill'\nimport { createReadableStreamWrapper } from '@mattiasbuelens/web-streams-adapter'\nimport { createParser, type EventSourceParser, type ParsedEvent } from './eventsource_parser'\nimport type {\n AsyncIterableReadableStream,\n ChatModelMessage,\n ToolCallAssistantMessage,\n ModelTool,\n FunctionTool,\n} from './type'\nimport { TextDecoder } from 'text-encoding-shim'\n\nexport const ReadableStream = _ReadableStream as {\n prototype: ReadableStream\n\n new (\n underlyingSource: UnderlyingByteSource,\n strategy?: {\n highWaterMark?: number\n },\n ): ReadableStream<Uint8Array>\n new <R = any>(underlyingSource: UnderlyingDefaultSource<R>, strategy?: QueuingStrategy<R>): ReadableStream<R>\n new <R = any>(underlyingSource?: UnderlyingSource<R>, strategy?: QueuingStrategy<R>): ReadableStream<R>\n}\n\nexport const TransformStream = _TransformStream as {\n prototype: TransformStream\n\n new <I = any, O = any>(\n transformer?: Transformer<I, O>,\n writableStrategy?: QueuingStrategy<I>,\n readableStrategy?: QueuingStrategy<O>,\n ): TransformStream<I, O>\n}\n\nexport const createEventSourceParserTransformStream = () => {\n let parser!: EventSourceParser\n\n return new TransformStream<string, ParsedEvent>({\n start(controller) {\n parser = createParser((event) => {\n if (event.type === 'event') {\n controller.enqueue(event)\n }\n })\n },\n transform(chunk) {\n parser.feed(chunk)\n },\n })\n}\n\nexport const toPolyfillReadable = createReadableStreamWrapper(ReadableStream)\n\nexport class TextDecoderStream {\n private handle: TextDecoder\n\n private transform = new TransformStream({\n transform: (chunk, controller) => {\n const value = this.handle.decode(new Uint8Array(chunk), { stream: true })\n\n if (value) {\n controller.enqueue(value)\n }\n },\n flush: (controller) => {\n const value = this.handle.decode()\n if (value) {\n controller.enqueue(value)\n }\n\n controller.terminate()\n },\n })\n\n constructor(encoding = 'utf-8', options: TextDecoderOptions = {}) {\n this.handle = new TextDecoder(encoding, options)\n }\n\n get encoding() {\n return this.handle.encoding\n }\n\n get fatal() {\n return this.handle.fatal\n }\n\n get ignoreBOM() {\n return this.handle.ignoreBOM\n }\n\n get readable() {\n return this.transform.readable\n }\n\n get writable() {\n return this.transform.writable\n }\n\n get [Symbol.toStringTag]() {\n return 'TextDecoderStream'\n }\n}\n\nexport function createAsyncIterable<T>(stream: ReadableStream<T>) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const _stream = stream as AsyncIterableReadableStream<T>\n (_stream as any)[Symbol.asyncIterator] = () => {\n const reader = stream.getReader()\n return {\n async next(): Promise<IteratorResult<T>> {\n const { done, value } = await reader.read()\n return done ? { done: true, value: undefined } : { done: false, value }\n },\n }\n }\n return _stream\n}\n\n/**\n * 将 SSE 二进制流转换为 T 类型的流\n */\nexport function intoStandardStream<T>(stream: ReadableStream<Uint8Array>): ReadableStream<T> {\n return createAsyncIterable(stream\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(createEventSourceParserTransformStream())\n .pipeThrough(new TransformStream<ParsedEvent, T>({\n transform(chunk, controller) {\n try {\n const data = JSON.parse(chunk.data) as T\n controller.enqueue(data)\n } catch (e) {\n if (chunk.data !== '[DONE]') {\n console.warn('Error when transforming event source data to json', e, chunk)\n } else {\n controller.terminate()\n }\n }\n },\n }),),)\n}\n\n/**\n * 将 SSE 二进制流转换为字符串流\n */\nexport function intoTextStream(stream: ReadableStream<Uint8Array>): AsyncIterableReadableStream<string> {\n return createAsyncIterable((toPolyfillReadable(stream) as typeof stream).pipeThrough(new TextDecoderStream()))\n}\n\nexport async function readableStream2JsonObject(stream: ReadableStream) {\n const s = intoTextStream(stream)\n let total = ''\n for await (const chunk of s) {\n total += chunk\n }\n return JSON.parse(total)\n}\n\nexport function createPromise<T = unknown>() {\n let res: (value: T | PromiseLike<T>) => void\n let rej: (reason?: any) => void\n const promise = new Promise<T>((resolve, reject) => {\n res = resolve\n rej = reject\n })\n return { promise, res, rej }\n}\n\nexport function isToolCallAssistantMessage(message: ChatModelMessage): message is ToolCallAssistantMessage {\n // eslint-disable-next-line eqeqeq\n return message.role === 'assistant' && 'tool_calls' in message && message.tool_calls?.[0] != null\n}\n\nexport function functionToolToModelTool(tool: FunctionTool): ModelTool {\n return {\n type: 'function',\n function: {\n description: tool.description,\n name: tool.name,\n parameters: tool.parameters,\n },\n }\n}\n","import { ERRORS } from '@cloudbase/utilities/dist/cjs/constants'\nimport { ICallApiOptions, KV } from '@cloudbase/types'\nimport { ResponseObject, SDKRequestInterface } from '@cloudbase/adapter-interface'\n\nexport async function callApi(callApiOptions: ICallApiOptions, opts?: KV<any>): Promise<ResponseObject['data']> {\n const { name, body, path = '', method = 'POST', headers = {} } = callApiOptions || {}\n const { token } = callApiOptions || {}\n let dataParse = {}\n try {\n dataParse = JSON.parse(body as any)\n } catch (error) {\n dataParse = body || {}\n }\n\n if (!name) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: '[apis] invalid api name',\n }),)\n }\n\n let url = ''\n\n const { gatewayOrigin, getAccessToken, env } = this\n\n if (gatewayOrigin) {\n url = `${gatewayOrigin}/v1`\n } else if (this.getEndPointWithKey) {\n const { BASE_URL, PROTOCOL } = this.getEndPointWithKey('GATEWAY')\n url = `${PROTOCOL}${BASE_URL}`\n } else {\n url = `https://${env}.api.tcloudbasegateway.com/v1`\n }\n const endpoint = `${url}/apis/${name}`\n let reqPath = path.startsWith('/') ? path : `/${path}`\n\n if (getAccessToken) {\n const { accessToken } = await getAccessToken()\n headers.Authorization = `Bearer ${accessToken}`\n }\n\n const isGetAndHead = ['GET', 'HEAD'].includes(method?.toUpperCase?.())\n\n if (isGetAndHead) {\n try {\n reqPath = `${reqPath}${reqPath.includes('?') ? '&' : '?'}${Object.keys(dataParse)\n .map(key => `${key}=${dataParse[key]}`)\n .join('&')}`\n } catch (error) {\n //\n }\n }\n\n const response = await this.request.fetch({\n url: `${endpoint}${reqPath}`,\n method: method || 'POST',\n headers: {\n 'Content-Type': 'application/json; charset=utf-8',\n ...headers,\n },\n // Request with GET/HEAD method cannot have body\n ...(isGetAndHead ? {} : { body: JSON.stringify(dataParse) }),\n token: token?.trim?.() || headers.Authorization?.replace?.(/^Bearer /, '') || null,\n ...opts,\n })\n\n return await response.data\n}\n\nconst SUPPORT_METHODS = ['GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'OPTIONS', 'PATCH', 'REQUEST']\ndeclare type MethodType = 'request' | 'post' | 'get' | 'head' | 'patch' | 'delete' | 'put'\n\nexport function generateCallApis(apiName: string): { [method in MethodType]: typeof callApi } {\n return new Proxy({} as any, {\n get: (_, method) => {\n if (typeof method !== 'string') {\n throw new Error('[apis] method must be string')\n }\n\n const upMethod = method.toLocaleUpperCase()\n\n if (!SUPPORT_METHODS.includes(upMethod)) {\n throw new Error(`[apis] invalid method: ${method}`)\n }\n\n return async (callApiOptions: ICallApiOptions, opts: KV<any>) => await callApi.call(\n this,\n {\n name: apiName,\n method: (upMethod === 'REQUEST' ? callApiOptions.method : upMethod) || 'POST',\n ...callApiOptions,\n },\n opts,\n )\n },\n })\n}\n\nexport function generateApis(params?: {\n env?: string\n request?: SDKRequestInterface\n gatewayOrigin?: string\n getAccessToken?: () => Promise<{ accessToken: string }>\n}): { [apiName: string]: { [method in MethodType]: typeof callApi } } {\n Object.keys(params || {}).forEach((key) => {\n if (params[key] !== undefined) this[key] = params[key]\n })\n\n return new Proxy(\n {},\n {\n get: (_, apiName) => {\n if (typeof apiName === 'string') {\n return generateCallApis.call(this, apiName)\n }\n },\n },\n )\n}\n","import type { ICloudbase } from '@cloudbase/types'\nimport type { ICloudbaseComponent } from '@cloudbase/types/component'\nimport { generateApis } from './callApis'\n\ndeclare const cloudbase: ICloudbase\n\nconst COMPONENT_NAME = 'apis'\n\nconst component: ICloudbaseComponent = {\n name: COMPONENT_NAME,\n IIFE: true,\n entity() {\n Object.defineProperty(this.prototype, COMPONENT_NAME, {\n get() {\n // 这里的 this 是 cloudbase 实例\n return generateApis.call(this)\n },\n configurable: true,\n enumerable: true,\n })\n },\n}\n\nfunction registerApis(app: ICloudbase) {\n try {\n app.registerComponent(component)\n } catch (e) {\n console.warn(e)\n }\n}\n\ntry {\n cloudbase.registerComponent(component)\n} catch (e) {\n}\n\nexport { generateApis, registerApis }\nexport * from './type'\n\ntry {\n (window as any).registerApis = registerApis\n} catch (e) {}\n","import { EndPointKey } from '@cloudbase/types'\nimport { constants } from '@cloudbase/utilities'\n\n// @ts-ignore\nconst { setSdkName: setUtilitiesSdkName, setProtocol: setUtilitiesProtocol } = constants\n/**\n * SDK\n */\nlet sdkVersion = ''\nlet sdkName = '@cloudbase/js-sdk'\n\nexport function setSdkVersion(version: string) {\n sdkVersion = version\n}\nexport function getSdkVersion() {\n return sdkVersion\n}\nexport function setSdkName(name: string) {\n sdkName = name\n setUtilitiesSdkName(name)\n}\nexport function getSdkName() {\n return sdkName\n}\nexport const DATA_VERSION = '2020-01-10'\n\ninterface EndPointInfo {\n env: string\n endPointKey: EndPointKey\n region?: string\n baseUrl?: string\n protocol?: Protocol\n}\n\ntype Protocol = 'http' | 'https' | 'http:' | 'https:'\n\n/**\n * 所有 endPoint 信息\n * 避免直接操作该数组\n * 使用 setEndPointInfo、 getEndPointInfo\n */\nconst END_POINT_INFO_ARR: Array<EndPointInfo> = []\n\n/** 用来查找 endPoint 的字段 */\nconst END_POINT_INFO_SEARCH_KEYS = ['env', 'endPointKey', 'region']\n\nexport const DEFAULT_PROTOCOL: 'http:' | 'https:' = 'https:'\n\nfunction findMatchedInfo(info: EndPointInfo) {\n // eslint-disable-next-line max-len, eqeqeq\n return END_POINT_INFO_ARR.find(targetInfo => END_POINT_INFO_SEARCH_KEYS.filter(searchKey => info[searchKey] != null).every(searchKey => targetInfo[searchKey] === info[searchKey],),)\n}\n\nexport function setEndPointInfo(newInfo: EndPointInfo) {\n if (newInfo.protocol && !/:$/.test(newInfo.protocol)) {\n newInfo.protocol = `${newInfo.protocol}:` as Protocol\n }\n\n const endPointInfo = findMatchedInfo(newInfo)\n if (endPointInfo) {\n // eslint-disable-next-line eqeqeq\n if (newInfo.baseUrl != null) {\n endPointInfo.baseUrl = newInfo.baseUrl\n }\n // eslint-disable-next-line eqeqeq\n if (newInfo.protocol != null) {\n endPointInfo.protocol = newInfo.protocol\n }\n } else {\n END_POINT_INFO_ARR.push({ ...newInfo, protocol: newInfo.protocol ?? DEFAULT_PROTOCOL })\n }\n\n // 保持旧代码逻辑\n if (newInfo.endPointKey === 'CLOUD_API') {\n setUtilitiesProtocol((newInfo.protocol ?? DEFAULT_PROTOCOL) as 'http:' | 'https:')\n }\n}\n\nexport function getEndPointInfo(env: string, endPointKey: EndPointKey, region?: string) {\n return findMatchedInfo({ env, endPointKey, region })\n}\n\nexport interface ISetEndPointWithKey {\n key: EndPointKey\n url?: string\n protocol?: 'http' | 'https'\n}\n\nexport function setGatewayEndPointWithEnv(env: string, protocol?: Protocol, intl?: boolean) {\n let baseUrl = `//${env}.api.tcloudbasegateway.com/v1`\n\n if (intl) {\n baseUrl = `//${env}.api.intl.tcloudbasegateway.com/v1`\n }\n\n setEndPointInfo({ endPointKey: 'GATEWAY', env, baseUrl, protocol })\n}\nexport function setRegionLevelEndpoint(env: string, region: string, protocol?: Protocol) {\n const baseUrl = `//${env}.${region || 'ap-shanghai'}.tcb-api.tencentcloudapi.com/web`\n setEndPointInfo({ env, region, baseUrl, protocol, endPointKey: 'CLOUD_API' })\n}\n\nexport function getBaseEndPoint(env: string, endPointKey: EndPointKey = 'CLOUD_API') {\n const info = getEndPointInfo(env, endPointKey || 'CLOUD_API')\n\n const { protocol: PROTOCOL, baseUrl: BASE_URL } = info\n const webEndpoint = `${PROTOCOL}${BASE_URL}`\n // @todo 临时兼容小程序\n return webEndpoint.match(/(http(s)?:)?\\/\\/([^/?#]*)/)[0]\n // return `${new URL(webEndpoint).origin}`\n}\n\nexport enum LOGINTYPE {\n NULL = 'NULL',\n ANONYMOUS = 'ANONYMOUS',\n WECHAT = 'WECHAT',\n WECHAT_PUBLIC = 'WECHAT-PUBLIC',\n WECHAT_OPEN = 'WECHAT-OPEN',\n CUSTOM = 'CUSTOM',\n EMAIL = 'EMAIL',\n USERNAME = 'USERNAME',\n PHONE = 'PHONE',\n}\n\nexport const OAUTH2_LOGINTYPE_PREFIX = 'OAUTH2'\n","import { adapters, constants, utils, helpers } from '@cloudbase/utilities'\nimport { SDKAdapterInterface, CloudbaseAdapter, IRequestConfig } from '@cloudbase/adapter-interface'\nimport {\n ICloudbaseConfig,\n ICloudbaseUpgradedConfig,\n ICloudbase,\n ICloudbaseExtension,\n KV,\n ICloudbasePlatformInfo,\n EndPointKey,\n ICloudbaseApis,\n} from '@cloudbase/types'\nimport { ICloudbaseAuth } from '@cloudbase/types/auth'\nimport { registerComponent, registerHook } from './libs/component'\nimport { getWxDefaultAdapter, Platform } from './libs/adapter'\nimport { ICloudbaseComponent, ICloudbaseHook } from '@cloudbase/types/component'\nimport { ICloudbaseCache } from '@cloudbase/types/cache'\nimport { initCache, getCacheByEnvId, getLocalCache } from './libs/cache'\nimport { ICloudbaseRequest } from '@cloudbase/types/request'\nimport { initRequest, getRequestByEnvId } from './libs/request'\nimport {\n getSdkName,\n setSdkVersion,\n setRegionLevelEndpoint,\n setSdkName,\n setGatewayEndPointWithEnv,\n type ISetEndPointWithKey,\n setEndPointInfo,\n getEndPointInfo,\n getSdkVersion,\n DEFAULT_PROTOCOL,\n} from './constants/common'\nimport { i18nProxy, LANGS } from './libs/lang'\nexport { getBaseEndPoint } from './constants/common'\nexport { LANGS } from './libs/lang'\nconst { useAdapters, useDefaultAdapter } = adapters\nconst { ERRORS, COMMUNITY_SITE_URL } = constants\nconst { printWarn } = utils\nconst { catchErrorsDecorator } = helpers\n\n/**\n * @constant 默认配置\n */\nconst DEFAULT_INIT_CONFIG: Partial<ICloudbaseConfig> = {\n timeout: 15000,\n persistence: 'local', // 持久化存储类型\n}\n\n// timeout上限10分钟\nconst MAX_TIMEOUT = 1000 * 60 * 10\n// timeout下限100ms\nconst MIN_TIMEOUT = 100\n\nconst extensionMap: KV<ICloudbaseExtension> = {}\n\nclass Cloudbase implements ICloudbase {\n public authInstance: ICloudbaseAuth\n public oauthInstance: any\n public requestClient: any\n public oauthClient: any\n public version: string\n public auth: ICloudbase['auth'] & ICloudbaseAuth\n public apis: ICloudbaseApis\n private cloudbaseConfig: ICloudbaseConfig\n\n constructor(config?: ICloudbaseConfig) {\n this.cloudbaseConfig = config ? config : this.cloudbaseConfig\n this.authInstance = null\n this.oauthInstance = null\n this.version = getSdkVersion()\n }\n\n get config() {\n return this.cloudbaseConfig\n }\n\n get platform(): ICloudbasePlatformInfo {\n return Platform\n }\n\n get cache(): ICloudbaseCache {\n return getCacheByEnvId(this.cloudbaseConfig.env)\n }\n\n get localCache(): ICloudbaseCache {\n return getLocalCache(this.cloudbaseConfig.env)\n }\n\n get request(): ICloudbaseRequest {\n return getRequestByEnvId(this.cloudbaseConfig.env)\n }\n\n @catchErrorsDecorator({\n mode: 'sync',\n title: 'Cloudbase 初始化失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 cloudbase.init() 的语法或参数是否正确',\n ' 2 - 如果是非浏览器环境,是否配置了安全应用来源(https://docs.cloudbase.net/api-reference/webv3/adapter#%E7%AC%AC-2-%E6%AD%A5%E9%85%8D%E7%BD%AE%E5%AE%89%E5%85%A8%E5%BA%94%E7%94%A8%E6%9D%A5%E6%BA%90)',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public init(config: ICloudbaseConfig & { lang?: LANGS } = { env: '' }): Cloudbase {\n config.endPointMode = config.endPointMode || 'GATEWAY'\n\n // 初始化时若未兼容平台,则使用默认adapter\n if (!Platform.adapter) {\n this.useDefaultAdapter()\n }\n\n // 在判断config.env之前,先处理node环境的配置\n config = this.dealNodeAdapterConfig(config)\n\n if (!config.env) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: 'env must not be specified',\n }),)\n }\n\n this.isInitialized(config)\n\n const reqConfig: IRequestConfig & { auth: ICloudbaseConfig['auth'] } = {\n timeout: config.timeout || 15000,\n timeoutMsg: `[${getSdkName()}][REQUEST TIMEOUT] request had been abort since didn't finished within${\n config.timeout / 1000\n }s`,\n auth: config.auth,\n }\n\n this.requestClient = new Platform.adapter.reqClass(reqConfig)\n\n this.cloudbaseConfig = {\n ...DEFAULT_INIT_CONFIG,\n ...config,\n i18n: i18nProxy(Platform, config),\n }\n\n delete (this.cloudbaseConfig as any).lang\n // 修正timeout取值\n this.cloudbaseConfig.timeout = this.formatTimeout(this.cloudbaseConfig.timeout)\n // 初始化cache和request\n const { env, persistence, debug, timeout, oauthClient, i18n } = this.cloudbaseConfig\n initCache({ env, persistence, debug, platformInfo: this.platform })\n\n setRegionLevelEndpoint(env, config.region || '')\n setGatewayEndPointWithEnv(env, DEFAULT_PROTOCOL, config.intl)\n\n const app = new Cloudbase(this.cloudbaseConfig)\n initRequest({\n env,\n region: config.region || '',\n timeout,\n oauthClient,\n _fromApp: app,\n i18n,\n endPointMode: config.endPointMode,\n auth: config.auth,\n })\n app.requestClient = this.requestClient\n ;(this as any)?.fire?.('cloudbase_init', app)\n\n this.try2InitAuth(app)\n\n // node环境可以从adapter获取nodeTool的方法\n if (Platform.adapter?.nodeTool) {\n Platform.adapter?.nodeTool(app, this.cloudbaseConfig)\n }\n\n return app\n }\n\n public updateConfig(config: ICloudbaseUpgradedConfig) {\n const { persistence, debug } = config\n this.cloudbaseConfig.persistence = persistence\n this.cloudbaseConfig.debug = debug\n // persistence改动影响cache\n initCache({ env: this.cloudbaseConfig.env, persistence, debug, platformInfo: this.platform })\n }\n\n public updateLang(lang: LANGS) {\n if (!lang || lang === this.cloudbaseConfig.i18n?.lang) return\n\n this.cloudbaseConfig.i18n.lang = lang\n }\n\n public registerExtension(ext: ICloudbaseExtension) {\n extensionMap[ext.name] = ext\n }\n @catchErrorsDecorator({\n title: '调用扩展能力失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 invokeExtension() 的语法或参数是否正确',\n ' 2 - 被调用的扩展能力是否已经安装并通过 registerExtension() 注册',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async invokeExtension(name: string, opts: any) {\n const ext = extensionMap[name]\n if (!ext) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `extension:${name} must be registered before invoke`,\n }),)\n }\n\n return await ext.invoke(opts, this)\n }\n\n public useAdapters(adapters: CloudbaseAdapter | CloudbaseAdapter[], options?: any) {\n const { adapter, runtime } = useAdapters(adapters, options) || {}\n adapter && (Platform.adapter = adapter as SDKAdapterInterface)\n runtime && (Platform.runtime = runtime as string)\n }\n\n public registerHook(hook: ICloudbaseHook) {\n registerHook(Cloudbase, hook)\n }\n\n public registerComponent(component: ICloudbaseComponent) {\n registerComponent(Cloudbase, component)\n }\n\n public registerVersion(version: string) {\n setSdkVersion(version)\n this.version = version\n }\n\n public registerSdkName(name: string) {\n setSdkName(name)\n }\n\n /**\n * 检查当前 Cloudbase 实例是否已完成初始化\n *\n * @example\n * ```javascript\n * import cloudbase from '@cloudbase/js-sdk'\n *\n * // 初始化前\n * console.log(cloudbase.isInitialized()) // false\n *\n * const app = cloudbase.init({ env: 'your-env-id' })\n *\n * // 初始化后\n * console.log(app.isInitialized()) // true\n * ```\n *\n * @returns {boolean} 是否已初始化\n */\n public isInitialized(config = this.cloudbaseConfig): boolean {\n // 检测常见占位符 env 值,在开发阶段给出友好提示\n const PLACEHOLDER_PATTERNS = [\n 'your-env-id',\n 'your-envid',\n 'your_env_id',\n 'xxx-yyy',\n 'xxxx-yyy',\n 'envId',\n 'env-id',\n 'your-environment-id',\n 'REPLACE_ME',\n ]\n if (PLACEHOLDER_PATTERNS.some(p => config.env.toLowerCase() === p.toLowerCase())) {\n printWarn(\n ERRORS.INVALID_PARAMS,\n `[CloudBase] 检测到环境 ID \"${config.env}\" 可能是占位符,请替换为真实的环境 ID。\\n`\n + ' 获取方式:登录腾讯云开发平台 → 环境管理 → 环境设置 → 环境 ID\\n'\n + ' 建议通过环境变量配置:process.env.CLOUDBASE_ENV 或 import.meta.env.VITE_CLOUDBASE_ENV',\n )\n }\n\n return !!config?.env\n }\n\n /** 设置 tcb api 的 endpoint */\n public registerEndPoint(url: string, protocol?: 'http' | 'https') {\n setEndPointInfo({ baseUrl: url, protocol, env: this.config.env, endPointKey: 'CLOUD_API' })\n }\n\n /** 设置网关/tcb api的 endPoint,通过 key 指定 */\n public registerEndPointWithKey(props: ISetEndPointWithKey) {\n setEndPointInfo({\n env: this.config.env,\n endPointKey: props.key,\n baseUrl: props.url,\n protocol: props.protocol,\n })\n }\n\n /** 拿网关/tcb api的 endPoint,通过 key 指定 */\n public getEndPointWithKey(key: EndPointKey) {\n const info = getEndPointInfo(this.config.env, key)\n return {\n BASE_URL: info.baseUrl,\n PROTOCOL: info.protocol,\n }\n }\n\n // 解析URL参数\n public parseCaptcha(url) {\n return utils.parseCaptcha(url)\n }\n\n private useDefaultAdapter() {\n const { adapter, runtime } = useDefaultAdapter.bind(this)()\n Platform.adapter = adapter as SDKAdapterInterface\n Platform.runtime = runtime as string\n }\n\n private formatTimeout(timeout: number) {\n switch (true) {\n case timeout > MAX_TIMEOUT:\n printWarn(ERRORS.INVALID_PARAMS, 'timeout is greater than maximum value[10min]')\n return MAX_TIMEOUT\n case timeout < MIN_TIMEOUT:\n printWarn(ERRORS.INVALID_PARAMS, 'timeout is less than maximum value[100ms]')\n return MIN_TIMEOUT\n default:\n return timeout\n }\n }\n\n private try2InitAuth(app) {\n try {\n app.auth()\n } catch (error) {\n console.log('try2InitAuth error:', error)\n }\n }\n\n /**\n * 处理 Node 环境下 adapter 的配置信息\n * 在 Node 环境中,通过 adapter 自动获取密钥、环境ID、accessKey 等配置,\n * 减少用户手动传入配置的负担\n * @param config - 云开发初始化配置对象\n * @returns 补充了 Node adapter 信息后的配置对象\n */\n private dealNodeAdapterConfig(config: ICloudbaseConfig) {\n // node环境可以从adapter获取默认的secretId和secretKey\n if (\n typeof process !== 'undefined'\n && typeof process.env !== 'undefined'\n && !process.env.IS_BROWSER_BUILD\n && Platform.adapter?.getSecretInfo\n ) {\n const secretInfo = Platform.adapter?.getSecretInfo(config)\n // 将 adapter 提供的密钥信息写入 config.auth\n config.auth = {\n ...config.auth,\n secretId: secretInfo.secretId,\n secretKey: secretInfo.secretKey,\n sessionToken: secretInfo.sessionToken,\n secretType: secretInfo.secretType as any,\n }\n\n // node 环境可能可以从上下文获取env,用户未显式指定时自动填充\n if (!config.env) {\n config.env = secretInfo.env\n }\n\n // node adapter环境能读取到 process.env.CLOUDBASE_APIKEY 时,在没有传入accessKey时,使用 node adapter 提供的 accessKey(process.env.CLOUDBASE_APIKEY)\n if (!config.accessKey && secretInfo.accessKey) {\n config.accessKey = secretInfo.accessKey\n }\n }\n\n return config\n }\n}\n\n// 类型导出\nexport type { Cloudbase }\n\n// 值导出\nexport const cloudbase: ICloudbase = new Cloudbase()\n\ncloudbase.useAdapters(getWxDefaultAdapter())\n\n// 默认导出实例\nexport default cloudbase\n","import { ICloudbasePlatformInfo } from '@cloudbase/types'\nimport adapterForWxMp, { WxRequest, WxMpWebSocket, wxMpStorage, parseQueryString } from '@cloudbase/adapter-wx_mp'\nimport { IUploadRequestOptions, StorageType } from '@cloudbase/adapter-interface'\n\ndeclare const wx: any\ndeclare const App: any\ndeclare const getApp: any\n\nexport const Platform: ICloudbasePlatformInfo = {}\n\nexport const getWxDefaultAdapter = () => {\n WxRequest.prototype.upload = function (options: IUploadRequestOptions) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this\n return new Promise((resolve) => {\n const { url, file, data, headers } = options\n const fs = wx.getFileSystemManager() // 读取文件 二进制内容\n const task = wx.request({\n url,\n method: options.method,\n header: {\n 'content-type': ' ', // 小程序 content-type 默认为 application/json, 这里一定要强制为 空, 否则签名错误\n ...headers,\n },\n data: fs.readFileSync(file), // 将二进制文件转为字符串直接赋值到 request payload, 不要以 form 的方式传输\n timeout: this._timeout,\n success(res: { statusCode: number; data: unknown }) {\n const result = {\n statusCode: res.statusCode,\n data: res.data || {},\n }\n if (res.statusCode === 200 && data?.success_action_status) {\n result.statusCode = parseInt(data.success_action_status, 10)\n }\n resolve(result)\n },\n fail(err: unknown) {\n resolve(err)\n },\n complete(err: { errMsg: string }) {\n if (!err?.errMsg) {\n return\n }\n if (!self._timeout || self._restrictedMethods.indexOf('upload') === -1) {\n return\n }\n const { errMsg } = err\n if (errMsg === 'request:fail timeout') {\n console.warn(self._timeoutMsg)\n try {\n task.abort()\n } catch (e) {}\n }\n },\n })\n })\n }\n\n function isPlugin() {\n return (\n typeof App === 'undefined'\n && typeof getApp === 'undefined'\n && !wx.onAppHide\n && !wx.offAppHide\n && !wx.onAppShow\n && !wx.offAppShow\n )\n }\n adapterForWxMp.genAdapter = function genAdapter(options) {\n const adapter = {\n root: { globalThis: {} },\n reqClass: WxRequest,\n wsClass: WxMpWebSocket,\n captchaOptions: {\n openURIWithCallback: (_url: string) => {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { EventBus } = options\n let queryObj: Record<string, string> = {}\n let url = _url\n console.log('openURIWithCallback', _url)\n const matched = _url.match(/^(data:.*?)(\\?[^#\\s]*)?$/)\n if (matched) {\n // eslint-disable-next-line prefer-destructuring\n url = matched[1]\n console.log('openURIWithCallback url', url)\n const search = matched[2]\n if (search) {\n queryObj = parseQueryString(search)\n }\n }\n console.log('openURIWithCallback queryObj', queryObj)\n const { token, ...restQueryObj } = queryObj\n if (/^data:/.test(url) && !token) {\n // 如果是 data: 开头的 URL 且没有 token,则直接返回\n return Promise.reject({\n error: 'invalid_argument',\n error_description: `invalie captcha data: ${_url}`,\n })\n }\n if (!token) {\n return Promise.reject({\n error: 'unimplemented',\n error_description: 'need to impl captcha data',\n })\n }\n return new Promise((resolve) => {\n console.log('wait for captcha...')\n EventBus.$emit('CAPTCHA_DATA_CHANGE', { ...restQueryObj, token, url })\n\n // 监听事件总线,等待验证码数据变化\n EventBus.$once('RESOLVE_CAPTCHA_DATA', (res: { captcha_token: string; expires_in: number }) => {\n resolve(res)\n })\n })\n },\n },\n localStorage: wxMpStorage,\n primaryStorage: StorageType.local,\n getAppSign() {\n const info = wx.getAccountInfoSync()\n if (isPlugin()) {\n // 插件环境返回插件appid\n return info && info.plugin ? info.plugin.appId : ''\n }\n return info && info.miniProgram ? info.miniProgram.appId : ''\n },\n }\n return adapter\n }\n\n return adapterForWxMp\n}\n","import { KV } from '@cloudbase/types'\nimport { cache } from '@cloudbase/utilities'\nimport { ICloudbaseCache, ICacheConfig } from '@cloudbase/types/cache'\n\nconst USER_INFO_KEY = 'user_info'\n\nconst { CloudbaseCache } = cache\n\nconst cacheMap: KV<ICloudbaseCache> = {}\n// 本地存储\nconst localCacheMap: KV<ICloudbaseCache> = {}\n\nexport function initCache(config: ICacheConfig & { env: string }) {\n const { env, platformInfo } = config\n\n const userInfoKey = `${USER_INFO_KEY}_${env}`\n\n const keys = {\n userInfoKey,\n }\n // 若指定env已存在cache则尝试更新persistence\n cacheMap[env] = cacheMap[env] || (new CloudbaseCache({\n ...config,\n keys,\n platformInfo,\n }))\n localCacheMap[env] = localCacheMap[env] || new CloudbaseCache({\n ...config,\n keys,\n platformInfo,\n persistence: 'local',\n })\n}\n\nexport function getCacheByEnvId(env: string): ICloudbaseCache {\n return cacheMap[env]\n}\n\nexport function getLocalCache(env: string): ICloudbaseCache {\n return localCacheMap[env]\n}\n","import { KV } from '@cloudbase/types'\nimport { ICloudbaseComponent, ICloudbaseHook } from '@cloudbase/types/component'\nimport { constants } from '@cloudbase/utilities'\n\nconst { ERRORS } = constants\n\nconst components: KV<ICloudbaseComponent> = {}\n\nexport function registerComponent(app: any, component: ICloudbaseComponent) {\n const { name, namespace, entity, injectEvents, IIFE = false } = component\n // 不允许重复注册或命名空间重名\n if (components[name] || (namespace && app[namespace])) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_OPERATION,\n msg: `Duplicate component ${name}`,\n }))\n }\n // IIFE类型的组件以app为scope执行entity函数,不挂载到app.prototype上\n if (IIFE) {\n if (!entity || typeof entity !== 'function') {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: 'IIFE component\\'s entity must be a function',\n }))\n }\n entity.call(app)\n }\n\n components[name] = component\n\n if (namespace) {\n (app as any).prototype[namespace] = entity\n } else {\n deepExtend((app as any).prototype, entity)\n }\n if (injectEvents) {\n const { bus, events } = injectEvents\n if (!bus || !events || events.length === 0) {\n return\n }\n const originCallback = (app as any).prototype.fire || function () {}\n if (!(app as any).prototype.events) {\n (app as any).prototype.events = {}\n }\n const originEvents: KV<any> = (app as any).prototype.events || {}\n if (originEvents[name]) {\n (app as any).prototype.events[name].events = [...(app as any).prototype.events[name].events, ...events]\n } else {\n (app as any).prototype.events[name] = { bus, events }\n }\n (app as any).prototype.fire = function (eventName: string, data?: any) {\n originCallback(eventName, data)\n const eventNames = Object.keys(this.events)\n for (const name of eventNames) {\n const { bus, events: eventList } = this.events[name]\n if (eventList.includes(eventName)) {\n bus.fire(eventName, data)\n break\n }\n }\n }\n }\n}\n\nfunction deepExtend(target: any, source: any): KV<any> {\n if (!(source instanceof Object)) {\n return source\n }\n\n switch (source.constructor) {\n case Date: {\n const dateValue = source as Date\n return new Date(dateValue.getTime())\n }\n case Object:\n if (target === undefined) {\n target = {}\n }\n break\n case Array:\n target = []\n break\n default:\n return source\n }\n const sourceKeys = Object.keys(source)\n for (const key of sourceKeys) {\n if (!Object.prototype.hasOwnProperty.call(source, key)) {\n continue\n }\n target[key] = deepExtend(target[key], source[key])\n }\n\n return target\n}\n\nexport function registerHook(app: any, hook: ICloudbaseHook) {\n const { entity, target } = hook\n if (Object.prototype.hasOwnProperty.call(app, target)) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_OPERATION,\n msg: `target:${target} is not exist`,\n }))\n }\n const originMethod = app.prototype[target]\n if (typeof originMethod !== 'function') {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_OPERATION,\n msg: `target:${target} is not a function which is the only type supports hook`,\n }))\n }\n app.prototype[target] = function (...args: any) {\n entity.call(this, ...args)\n return originMethod.call(this, ...args)\n }\n}\n","import { langEvent } from '@cloudbase/utilities'\n\nexport enum LANGS {\n ZH = 'zh-CN',\n EN = 'en-US',\n}\n\nexport const LANG_HEADER_KEY = 'Accept-Language'\n\nexport const langMap = {\n [LANGS.EN]: {\n '请检查调用方式,或前往云开发 AI+ 首页查看文档':\n 'Please check the calling method or visit the AI+ homepage to view the documentation',\n 'AI+ 请求出错,错误码': 'AI+ request error, error code',\n 错误信息: 'error message',\n 未实现: 'not implemented',\n '小程序不支持 wasm 加载': 'wasm loading is not supported in mini programs',\n '小程序不支持动态 js 加载': 'dynamic js loading is not supported in mini programs',\n 请求超时: 'request timeout',\n '缺少 privatelink sdk 地址': 'missing privatelink sdk address',\n },\n}\n\nexport const t = (text: string, lang: LANGS) => langMap[lang]?.[text] || text\n\nconst getLangCacheKey = config => `lang_${config.clientId || config.env}`\n\nexport const i18nProxy = (platform, config) => {\n const cacheKey = getLangCacheKey(config)\n const { localStorage } = platform.adapter || {}\n const lang = config.lang || localStorage?.getItem?.(cacheKey) || LANGS.ZH\n localStorage?.setItem?.(cacheKey, lang)\n\n return new Proxy(\n {\n t: (text: string) => t(text, lang),\n LANG_HEADER_KEY,\n lang,\n },\n {\n get(target, prop) {\n if (prop === 'lang') {\n return localStorage?.getItem?.(cacheKey) || target[prop]\n }\n return target[prop]\n },\n set(target, prop, newValue) {\n if (prop === 'lang' && newValue !== target[prop]) {\n target[prop] = newValue\n target.t = (text: string) => t(text, newValue)\n localStorage?.setItem?.(cacheKey, newValue)\n langEvent.bus.fire(langEvent.LANG_CHANGE_EVENT, { i18n: target })\n }\n\n target[prop] = newValue\n\n return true\n },\n },\n )\n}\n","import { DATA_VERSION, getSdkVersion, getBaseEndPoint, getEndPointInfo } from '../constants/common'\nimport {\n IRequestOptions,\n SDKRequestInterface,\n ResponseObject,\n IUploadRequestOptions,\n IRequestConfig,\n IFetchOptions,\n} from '@cloudbase/adapter-interface'\nimport { utils, constants, langEvent } from '@cloudbase/utilities'\nimport { EndPointKey, KV } from '@cloudbase/types'\nimport { ICustomReqOpts } from '@cloudbase/types/functions'\nimport {\n IGetAccessTokenResult,\n ICloudbaseRequestConfig,\n IAppendedRequestInfo,\n IRequestBeforeHook,\n} from '@cloudbase/types/request'\nimport { ICloudbaseCache } from '@cloudbase/types/cache'\nimport { getLocalCache } from './cache'\nimport { Platform } from './adapter'\nconst { ERRORS } = constants\nconst { genSeqId, isFormData, formatUrl } = utils\n\n// 下面几种 action 不需要 access token\nconst ACTIONS_WITHOUT_ACCESSTOKEN = [\n 'auth.getJwt',\n 'auth.logout',\n 'auth.signInWithTicket',\n 'auth.signInAnonymously',\n 'auth.signIn',\n 'auth.fetchAccessTokenWithRefreshToken',\n 'auth.signUpWithEmailAndPassword',\n 'auth.activateEndUserMail',\n 'auth.sendPasswordResetEmail',\n 'auth.resetPasswordWithToken',\n 'auth.isUsernameRegistered',\n]\n\nfunction bindHooks(instance: SDKRequestInterface, name: string, hooks: IRequestBeforeHook[]) {\n const originMethod = instance[name]\n instance[name] = function (options: IRequestOptions) {\n const data = {}\n const headers = {}\n hooks.forEach((hook) => {\n const { data: appendedData, headers: appendedHeaders } = hook.call(instance, options)\n Object.assign(data, appendedData)\n Object.assign(headers, appendedHeaders)\n })\n const originData = options.data\n originData\n && (() => {\n if (isFormData(originData)) {\n Object.keys(data).forEach((key) => {\n (originData as FormData).append(key, data[key])\n })\n return\n }\n options.data = {\n ...originData,\n ...data,\n }\n })()\n options.headers = {\n ...(options.headers || {}),\n ...headers,\n }\n return (originMethod as Function).call(instance, options)\n }\n}\nfunction beforeEach(): IAppendedRequestInfo {\n const seqId = genSeqId()\n return {\n data: {\n seqId,\n },\n headers: {\n 'X-SDK-Version': `@cloudbase/js-sdk/${getSdkVersion()}`,\n 'x-seqid': seqId,\n },\n }\n}\nexport interface IGateWayOptions {\n name?: string\n data?: any\n path?: string\n method: string\n header?: {}\n url?: string\n}\nexport interface ICloudbaseRequest {\n post: (options: IRequestOptions) => Promise<ResponseObject>\n upload: (options: IUploadRequestOptions) => Promise<ResponseObject>\n download: (options: IRequestOptions) => Promise<ResponseObject>\n request: (action: string, params: KV<any>, options?: KV<any>) => Promise<ResponseObject>\n send: (action: string, data: KV<any>) => Promise<any>\n fetch: (options: IFetchOptions) => Promise<ResponseObject>\n}\n\n/**\n * @class CloudbaseRequest\n */\nexport class CloudbaseRequest implements ICloudbaseRequest {\n config: ICloudbaseRequestConfig\n private reqClass: SDKRequestInterface\n // 请求失败是否抛出Error\n private throwWhenRequestFail = false\n // 持久化本地存储\n private localCache: ICloudbaseCache\n /**\n * 初始化\n * @param config\n */\n constructor(config: ICloudbaseRequestConfig & { throw?: boolean }) {\n this.config = config\n const reqConfig: IRequestConfig & { auth: ICloudbaseRequestConfig['auth'] } = {\n timeout: this.config.timeout,\n timeoutMsg: `[@cloudbase/js-sdk] 请求在${this.config.timeout / 1000}s内未完成,已中断`,\n restrictedMethods: ['post', 'put'],\n auth: config.auth,\n }\n this.reqClass = new Platform.adapter.reqClass(reqConfig)\n this.throwWhenRequestFail = config.throw || false\n this.localCache = getLocalCache(this.config.env)\n\n if (this.config.endPointMode !== 'GATEWAY') {\n bindHooks(this.reqClass, 'post', [beforeEach])\n bindHooks(this.reqClass, 'upload', [beforeEach])\n bindHooks(this.reqClass, 'download', [beforeEach])\n }\n\n langEvent.bus.on(langEvent.LANG_CHANGE_EVENT, (params) => {\n this.config.i18n = params.data?.i18n || this.config.i18n\n })\n }\n\n public async getAccessToken(token = null) {\n // eslint-disable-next-line eqeqeq\n if (token != null) {\n return token\n }\n const app = this.config._fromApp\n\n if (!app.oauthInstance) {\n throw new Error('you can\\'t request without auth')\n }\n\n const { oauthInstance } = app\n const oauthClient = oauthInstance.oauth2client\n return (await this.getOauthAccessTokenV2(oauthClient)).accessToken\n }\n\n public getDefaultHeaders() {\n return {\n [this.config.i18n?.LANG_HEADER_KEY]: this.config.i18n?.lang,\n 'X-SDK-Version': `@cloudbase/js-sdk/${getSdkVersion()}`,\n }\n }\n\n public async post(options: IRequestOptions, customReqOpts?: ICustomReqOpts): Promise<ResponseObject> {\n const res = await this.reqClass.post({\n ...options,\n headers: { ...options.headers, ...this.getDefaultHeaders() },\n customReqOpts,\n })\n return res\n }\n public async upload(options: IUploadRequestOptions): Promise<ResponseObject> {\n const res = await this.reqClass.upload({ ...options, headers: { ...options.headers, ...this.getDefaultHeaders() } })\n return res\n }\n public async download(options: IRequestOptions): Promise<ResponseObject> {\n const res = await this.reqClass.download({\n ...options,\n headers: { ...options.headers, ...this.getDefaultHeaders() },\n })\n return res\n }\n\n public getBaseEndPoint(endPointKey: EndPointKey = 'CLOUD_API') {\n return getBaseEndPoint(this.config.env, endPointKey)\n }\n\n public async getOauthAccessTokenV2(oauthClient: any): Promise<IGetAccessTokenResult> {\n const validAccessToken = await oauthClient.getAccessToken()\n const credentials = await oauthClient.getCredentials()\n return {\n accessToken: validAccessToken,\n accessTokenExpire: new Date(credentials.expires_at).getTime(),\n }\n }\n\n /* eslint-disable complexity */\n public async request(\n action: string,\n params: KV<any>,\n options?: {\n onUploadProgress?: Function\n pathname?: string\n parse?: boolean\n inQuery?: KV<any>\n search?: string\n defaultQuery?: KV<any>\n headers?: KV<string>\n endPointMode?: 'CLOUD_API' | 'GATEWAY'\n },\n customReqOpts?: ICustomReqOpts,\n ): Promise<ResponseObject> {\n try {\n const tcbTraceKey = `x-tcb-trace_${this.config.env}`\n let contentType = 'application/x-www-form-urlencoded'\n\n const tmpObj: KV<any> = {\n action,\n dataVersion: DATA_VERSION,\n env: this.config.env,\n ...params,\n }\n\n if (ACTIONS_WITHOUT_ACCESSTOKEN.indexOf(action) === -1) {\n const app = this.config._fromApp\n\n if (!app.oauthInstance) {\n throw new Error('you can\\'t request without auth')\n }\n\n const { oauthInstance } = app\n const oauthClient = oauthInstance.oauth2client\n tmpObj.access_token = (await this.getOauthAccessTokenV2(oauthClient)).accessToken\n }\n\n // 拼body和content-type\n let payload\n if (action === 'storage.uploadFile') {\n payload = new FormData()\n Object.keys(payload).forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(payload, key) && payload[key] !== undefined) {\n payload.append(key, tmpObj[key])\n }\n })\n contentType = 'multipart/form-data'\n } else {\n contentType = 'application/json;charset=UTF-8'\n payload = {}\n Object.keys(tmpObj).forEach((key) => {\n if (tmpObj[key] !== undefined) {\n payload[key] = tmpObj[key]\n }\n })\n }\n const opts: any = {\n headers: {\n 'content-type': contentType,\n ...this.getDefaultHeaders(),\n ...options?.headers,\n },\n }\n if (options?.onUploadProgress) {\n opts.onUploadProgress = options.onUploadProgress\n }\n\n if (this.config.region) {\n opts.headers['X-TCB-Region'] = this.config.region\n }\n\n const traceHeader = this.localCache.getStore(tcbTraceKey)\n if (traceHeader) {\n opts.headers['X-TCB-Trace'] = traceHeader\n }\n\n // 发出请求\n // 新的 url 需要携带 env 参数进行 CORS 校验\n // 请求链接支持添加动态 query 参数,方便用户调试定位请求\n const parse = options?.parse !== undefined ? options.parse : params.parse\n const inQuery = options?.inQuery !== undefined ? options.inQuery : params.inQuery\n const search = options?.search !== undefined ? options.search : params.search\n\n let formatQuery: Record<string, any> = {\n ...(options?.defaultQuery || {}),\n env: this.config.env,\n }\n // 尝试解析响应数据为 JSON\n parse && (formatQuery.parse = true)\n inQuery\n && (formatQuery = {\n ...inQuery,\n ...formatQuery,\n })\n\n const endPointMode = options?.endPointMode || this.config.endPointMode || 'CLOUD_API'\n\n const url = getEndPointInfo(this.config.env, endPointMode)\n let BASE_URL = url.baseUrl\n const PROTOCOL = url.protocol\n\n if (endPointMode === 'GATEWAY') {\n if (/^((database)\\.)|(auth\\.wsWebSign)/.test(action)) {\n const url = getEndPointInfo(this.config.env, 'CLOUD_API')\n BASE_URL = `${url.baseUrl.match(/\\/\\/([^/?#]*)/)[0]}/web`\n }\n }\n\n // 生成请求 url\n let newUrl\n if (options.pathname) {\n newUrl = formatUrl(\n PROTOCOL,\n `${getBaseEndPoint(this.config.env, endPointMode)?.replace(/^https?:/, '')}/${options.pathname}`,\n formatQuery,\n )\n } else {\n newUrl = formatUrl(PROTOCOL, BASE_URL, formatQuery)\n }\n\n if (search) {\n newUrl += search\n }\n\n const res: ResponseObject = await this.post(\n {\n url: newUrl,\n data: payload,\n ...opts,\n },\n customReqOpts,\n )\n\n // 保存 trace header\n const resTraceHeader = res.header?.['x-tcb-trace']\n if (resTraceHeader) {\n this.localCache.setStore(tcbTraceKey, resTraceHeader)\n }\n\n if ((Number(res.status) !== 200 && Number(res.statusCode) !== 200) || !res.data) {\n throw new Error('network request error')\n }\n\n return res\n } catch (err) {\n try {\n err.requestId = err.requestId || options?.headers['x-request-id'] || options?.headers['X-Request-Id'] || ''\n } catch (error) {}\n throw err\n }\n }\n\n public async fetch(options: IFetchOptions & { token?: string; withCredentials?: boolean; customReqOpts?: ICustomReqOpts },): Promise<ResponseObject> {\n const { token, headers = {}, withCredentials = true, ...restOptions } = options\n\n const doFetch = async () => {\n const authHeaders: Record<string, string> = {}\n if (withCredentials) {\n authHeaders.Authorization = `Bearer ${await this.getAccessToken(token)}`\n }\n return this.reqClass.fetch({\n headers: {\n // 'Content-Type': 'application/json',\n // 'X-Request-Id': `${utils.generateRequestId()}`,\n // 'X-Request-Timestamp': `${Date.now()}`,\n 'X-SDK-Version': `@cloudbase/js-sdk/${getSdkVersion()}`,\n ...authHeaders,\n ...this.getDefaultHeaders(),\n ...headers,\n },\n ...restOptions,\n })\n }\n\n try {\n const result = await doFetch()\n return result\n } catch (err) {\n try {\n err.requestId = err.requestId || headers['x-request-id'] || headers['X-Request-Id'] || ''\n } catch (error) {}\n if (err?.code === 'ACCESS_TOKEN_EXPIRED') {\n // 如果是因为 token 过期失败,刷 token 后再试一次\n if (typeof this.config?._fromApp?.oauthInstance?.authApi?.refreshTokenForce !== 'function') {\n throw err\n }\n await this.config?._fromApp?.oauthInstance?.authApi?.refreshTokenForce()\n return doFetch()\n }\n // 其他原因向上抛出\n\n throw err\n }\n }\n\n public async send(\n action: string,\n data: KV<any> = {},\n options: KV<any> = {},\n customReqOpts?: ICustomReqOpts,\n ): Promise<any> {\n const response = await this.request(\n action,\n data,\n { ...options, onUploadProgress: data.onUploadProgress },\n customReqOpts,\n )\n\n if (response.data.code && this.throwWhenRequestFail) {\n throw new Error(JSON.stringify({\n code: ERRORS.OPERATION_FAIL,\n msg: `[${response.data.code}] ${response.data.message}`,\n }),)\n }\n\n return response.data\n }\n\n public async gateWay(options: IGateWayOptions, customReqOpts?: ICustomReqOpts) {\n const { url, name, data, path = '', method, header = {} } = options\n\n if ((!name || !path) && !url) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: '[gateWay] invalid function name or path or url',\n }),)\n }\n let jsonData\n try {\n jsonData = data ? JSON.stringify(data) : ''\n } catch (e) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: '[gateWay] invalid data',\n }),)\n }\n\n const requestId = utils.generateRequestId()\n const { baseUrl, protocol } = getEndPointInfo(this.config.env, 'GATEWAY')\n let endpoint = `${protocol}${baseUrl}${url || `/${path}/${name}`}`\n\n const isGetAndHead = ['GET', 'HEAD'].includes(method?.toUpperCase?.())\n\n if (isGetAndHead) {\n try {\n let dataParse = {}\n try {\n dataParse = JSON.parse(data as any)\n } catch (error) {\n dataParse = data || {}\n }\n endpoint = `${endpoint}${endpoint.includes('?') ? '&' : '?'}${Object.keys(dataParse)\n .map(key => `${key}=${dataParse[key]}`)\n .join('&')}`\n } catch (error) {\n //\n }\n }\n\n const response = await this.fetch({\n method: method || 'POST',\n headers: {\n 'Content-Type': 'application/json; charset=utf-8',\n 'X-Request-Id': requestId,\n ...header,\n },\n ...(isGetAndHead ? {} : { body: jsonData }),\n url: endpoint,\n customReqOpts,\n })\n\n return { requestId, ...response, data: await response.data }\n }\n}\n\nconst requestMap: KV<CloudbaseRequest> = {}\n\nexport function initRequest(config: ICloudbaseRequestConfig) {\n requestMap[config.env] = new CloudbaseRequest({\n ...config,\n throw: true,\n })\n}\n\nexport function getRequestByEnvId(env: string): CloudbaseRequest {\n return requestMap[env]\n}\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","import { Db } from '@cloudbase/database'\nimport { ICloudbase } from '@cloudbase/types'\nimport { ICloudbaseComponent } from '@cloudbase/types/component'\nimport cloudbaseNS from '../../index'\nimport { EJSON } from 'bson'\n\ndeclare const cloudbase: ICloudbase\ndeclare type QueryType = 'WHERE' | 'DOC'\n\n/**\n * 数据库配置接口\n */\ninterface IDbConfig {\n /** 实例 ID(可选,默认 '(default)') */\n instance?: string\n /** 数据库名称(可选,默认 '(default)') */\n database?: string\n}\n\ninterface IBaseReq extends IDbConfig {\n collectionName: string\n transactionId?: string\n}\n\ninterface IDocumentsQueryReq extends IBaseReq {\n query?: any\n /** @deprecated 使用 query 替代 */\n queryType?: QueryType\n order?: string[]\n offset?: number\n limit?: number\n projection?: Object\n}\n\ninterface IDocumentsAddReq extends IBaseReq {\n data: Object | Object[]\n}\n\ninterface IDocumentsUpdateReq extends IBaseReq {\n query: Object\n data: Object\n /** 是否批量更新(默认 false) */\n multi?: boolean\n /** 把所有更新数据转为带操作符的 */\n merge?: boolean\n /** 不存在时是否创建(默认 false) */\n upsert?: boolean\n /** 是否替换整个文档(默认 false,为 true 时替换整个文档而非合并更新) */\n replaceMode?: boolean\n /** @deprecated 使用 query 替代 */\n queryType?: QueryType\n}\n\ninterface IDocumentsRemoveReq extends IBaseReq {\n query: Object\n /** 是否批量删除(默认 false) */\n multi?: boolean\n /** @deprecated 使用 query 替代 */\n queryType?: QueryType\n}\n\ninterface IDocumentsCountReq extends IBaseReq {\n query: Object\n /** @deprecated 使用 query 替代 */\n queryType?: QueryType\n}\n\ninterface ICommonRes<T> {\n data?: T & { code?: string }\n requestId: string\n code?: string\n message?: string\n}\n\ninterface IAddRes {\n /** 单条插入时返回的文档 ID(批量插入时不返回) */\n _id?: string\n /** 批量插入时返回的文档 ID 列表 */\n ids?: string[]\n insertedIds: string[]\n}\n\ninterface IRunCommandsReq {\n transactionId?: string\n /** 命令数组,方法会将其转为 MongoDB 原生命令(EJSON 对象格式) */\n commands: Object[]\n}\n\nconst COMPONENT_NAME = 'database'\n\nconst gateWayFunc = {\n /**\n * 过滤响应,移除不必要的字段\n */\n filterRes: function <T>(res: ICommonRes<T> & { header?: any; statusCode?: number }): ICommonRes<T> {\n delete res.header\n delete res.statusCode\n return res\n },\n\n /**\n * 展开响应数据到顶层(用于事务等场景)\n */\n flattenResData: function <T>(res: ICommonRes<T>): any {\n if (typeof res.data === 'object' && res.data !== null) {\n const result = { ...res, ...res.data }\n delete result.data\n return result\n }\n return res\n },\n\n /**\n * 安全解析 EJSON\n */\n safeParseEJSON: function (data: any): any {\n if (typeof data !== 'string') return data\n try {\n return EJSON.parse(data)\n } catch {\n return data\n }\n },\n\n /**\n * 构建 URL 查询参数\n */\n buildQueryParams: function (params: Record<string, any>): string {\n return Object.entries(params)\n .filter(([_, value]) => value !== undefined && value !== null && value !== '')\n .map(([key, value]) => {\n const stringValue = typeof value === 'object' ? JSON.stringify(value) : String(value)\n return `${encodeURIComponent(key)}=${encodeURIComponent(stringValue)}`\n })\n .join('&')\n },\n\n /**\n * 获取 URL 前缀\n */\n getUrlPrefix: function (data: IDbConfig): string {\n const instance = data?.instance || '(default)'\n const database = data?.database || '(default)'\n return `/database/instances/${instance}/databases/${database}`\n },\n\n 'database.queryDocument': async function (\n data: IDocumentsQueryReq,\n ): Promise<ICommonRes<{ offset?: number; limit?: number; list: any[] }>> {\n const isQueryDoc = !!data.query?._id?.$eq\n const queryParams = gateWayFunc.buildQueryParams({\n projection: data.projection,\n transactionId: data.transactionId,\n ...(isQueryDoc\n ? {}\n : {\n offset: data.offset ?? 0,\n limit: data.limit ?? 100,\n order: data.order,\n query: data.query ? EJSON.stringify(data.query, { relaxed: false }) : undefined,\n }),\n })\n\n let url = `${gateWayFunc.getUrlPrefix(data)}/collections/${data.collectionName}/documents?${queryParams}`\n\n // 查询单个文档\n if (isQueryDoc) {\n url = `${gateWayFunc.getUrlPrefix(data)}/collections/${data.collectionName}/documents/${\n data.query._id?.$eq || data.query._id\n }?${queryParams}`\n }\n\n const res = await this.gateWay({\n url,\n method: 'GET',\n })\n\n // 尝试解析 EJSON 格式的数据\n res.data = gateWayFunc.safeParseEJSON(JSON.stringify(res.data))\n\n if (isQueryDoc && !res.code && !res.data?.code) {\n return {\n ...res,\n data: { list: [res.data] }\n }\n }\n\n return gateWayFunc.filterRes(res)\n },\n\n 'database.addDocument': async function (data: IDocumentsAddReq): Promise<ICommonRes<IAddRes>> {\n let res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/collections/${data.collectionName}/documents`,\n method: 'POST',\n data: {\n data: Array.isArray(data.data) ? data.data : [data.data],\n ...(data.transactionId && { transactionId: data.transactionId }),\n },\n })\n\n if (Array.isArray(data.data)) {\n // 数组模式(批量插入),返回 ids 列表\n res = {\n ...res,\n data: {\n ids: res.data?.insertedIds || [],\n ...res.data,\n },\n }\n } else if (res.data?.insertedIds?.[0]) {\n // 非数组模式(单条插入),将 _id 提升到顶层\n res = {\n ...res,\n data: {\n _id: res.data.insertedIds[0],\n ...res.data,\n },\n }\n }\n\n return gateWayFunc.filterRes(res)\n },\n\n 'database.updateDocument': async function (\n data: IDocumentsUpdateReq,\n ): Promise<ICommonRes<{ matched: number; updated: number; upsert_id: string }>> {\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/collections/${data.collectionName}/documents`,\n method: 'PATCH',\n data: {\n query: data.query,\n data: data.data,\n multi: !!data.multi,\n upsert: !!data.upsert,\n replaceMode: !!data.replaceMode,\n ...(data.transactionId && { transactionId: data.transactionId }),\n },\n })\n\n return gateWayFunc.filterRes(res)\n },\n\n 'database.deleteDocument': async function (data: IDocumentsRemoveReq): Promise<ICommonRes<{ deleted: number }>> {\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/collections/${data.collectionName}/documents/remove`,\n method: 'POST',\n data: {\n query: data.query,\n multi: !!data.multi,\n ...(data.transactionId && { transactionId: data.transactionId }),\n },\n })\n\n return gateWayFunc.filterRes(res)\n },\n\n 'database.countDocument': async function (data: IDocumentsCountReq): Promise<ICommonRes<{ total: number }>> {\n const queryParams = gateWayFunc.buildQueryParams({\n count: true,\n query: data.query ? EJSON.stringify(data.query, { relaxed: false }) : undefined,\n })\n\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/collections/${data.collectionName}/documents?${queryParams}`,\n method: 'GET',\n })\n\n return gateWayFunc.filterRes(res)\n },\n\n 'database.addCollection': async function (data: { collectionName: string } & IDbConfig): Promise<ICommonRes<''>> {\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/collections`,\n method: 'POST',\n data: { collectionName: data.collectionName },\n })\n\n return gateWayFunc.filterRes(res)\n },\n\n 'database.aggregate': async function (\n data: { collectionName: string; stages: { stageKey: string; stageValue: any }[] } & IDbConfig,\n ): Promise<ICommonRes<{ list: string }>> {\n const pipeline = data.stages.map((stage) => {\n try {\n // stageValue 可能是字符串或对象,统一处理\n const value = typeof stage.stageValue === 'string' ? JSON.parse(stage.stageValue) : stage.stageValue\n return {\n [stage.stageKey]: EJSON.serialize(value),\n }\n } catch {\n return { [stage.stageKey]: stage.stageValue }\n }\n })\n\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/collections/${data.collectionName}/documents/aggregations`,\n method: 'POST',\n data: { pipeline },\n })\n\n // 将结果列表转为字符串格式(兼容原有逻辑)\n if (Array.isArray(res.data?.list)) {\n res.data.list = JSON.stringify(res.data.list.map((item: any) => JSON.stringify(item)))\n }\n\n return gateWayFunc.filterRes(res)\n },\n\n 'database.startTransaction': async function (data: IDbConfig) {\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/transactions`,\n method: 'POST',\n })\n\n return gateWayFunc.filterRes(gateWayFunc.flattenResData(res))\n },\n\n 'database.commitTransaction': async function (data: { transactionId: string } & IDbConfig) {\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/transactions/${data.transactionId}/commit`,\n method: 'POST',\n })\n\n return gateWayFunc.filterRes(res)\n },\n\n 'database.abortTransaction': async function (data: { transactionId: string } & IDbConfig) {\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/transactions/${data.transactionId}/rollback`,\n method: 'POST',\n })\n\n return gateWayFunc.filterRes(res)\n },\n\n 'database.getInTransaction': async function (data: IDocumentsQueryReq) {\n const res = await gateWayFunc['database.queryDocument'].call(this, data)\n\n if (typeof res.data === 'object' && res.data !== null) {\n if (res.data?.code) {\n return gateWayFunc.flattenResData(res)\n }\n return { ...res, data: JSON.stringify(res.data) as any }\n }\n\n return res\n },\n\n 'database.updateDocInTransaction': async function (data: IDocumentsUpdateReq) {\n // 尝试解析 EJSON 格式的数据\n data.data = gateWayFunc.safeParseEJSON(data.data)\n\n const res = await gateWayFunc['database.updateDocument'].call(this, data)\n return gateWayFunc.flattenResData(res)\n },\n\n 'database.deleteDocInTransaction': async function (data: IDocumentsRemoveReq) {\n const res = await gateWayFunc['database.deleteDocument'].call(this, data)\n return gateWayFunc.flattenResData(res)\n },\n\n 'database.insertDocInTransaction': async function (\n data: IDocumentsAddReq,\n ): Promise<ICommonRes<IAddRes & { inserted?: number }>> {\n // 尝试解析 EJSON 格式的数据\n data.data = gateWayFunc.safeParseEJSON(data.data)\n\n let res = await gateWayFunc['database.addDocument'].call(this, data)\n\n if (typeof res.data === 'object' && res.data !== null) {\n const hasId = !!res.data?._id\n res = {\n ...res,\n inserted: hasId ? 1 : 0,\n ok: hasId ? 1 : 0,\n ...res.data,\n } as any\n } else {\n res = { inserted: 0, ok: 0, ...res } as any\n }\n\n delete res.data\n\n return res\n },\n\n 'database.runCommands': async function (\n data: IRunCommandsReq & IDbConfig,\n ): Promise<ICommonRes<{ list: Object[][] }>> {\n let res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/commands`,\n method: 'POST',\n data: {\n commands: EJSON.serialize(data.commands),\n ...(data.transactionId && { transactionId: data.transactionId }),\n },\n })\n\n if (typeof res.data === 'object' && res.data !== null) {\n res = { ...res, ...res.data }\n delete res.data\n delete res.request_id\n }\n\n // 尝试将结果转换为普通对象\n try {\n res = EJSON.deserialize(res)\n } catch {\n // 忽略转换失败\n }\n\n return gateWayFunc.filterRes(res)\n },\n}\n\nfunction database(dbConfig?: IDbConfig) {\n const { adapter, runtime } = this.platform\n\n class Req extends this.request.constructor {\n constructor(config) {\n super(config)\n }\n\n async send(action: string, data: any) {\n let res = null\n\n if (this.config.endPointMode === 'GATEWAY' && gateWayFunc[action]) {\n res = await gateWayFunc[action].call(this, data)\n } else {\n res = await super.send(action, data)\n }\n\n return res\n }\n }\n\n Db.reqClass = Req\n // 未登录情况下传入空函数\n Db.getAccessToken = this.authInstance ? this.authInstance.getAccessToken.bind(this.authInstance) : () => ''\n Db.runtime = runtime\n if (this.wsClientClass) {\n Db.wsClass = adapter.wsClass\n Db.wsClientClass = this.wsClientClass\n }\n\n if (!Db.ws) {\n Db.ws = null\n }\n\n class NewDb extends Db {\n constructor(config?: IDbConfig) {\n super(config)\n }\n\n async runCommands(params: IRunCommandsReq): Promise<ICommonRes<{ list: Object[][] }>> {\n let request = Db.createRequest(this.config)\n\n return request.send('database.runCommands', params)\n }\n }\n\n return new NewDb({ ...this.config, _fromApp: this, ...dbConfig })\n}\n\nconst component: ICloudbaseComponent = {\n name: COMPONENT_NAME,\n entity: {\n database,\n },\n}\ntry {\n cloudbase.registerComponent(component)\n} catch (e) {}\n\nexport function registerDatabase(app: ICloudbase | typeof cloudbaseNS) {\n try {\n app.registerComponent(component)\n } catch (e) {\n console.warn(e)\n }\n}\n\ntry {\n ;(window as any).registerDatabase = registerDatabase\n} catch (e) {}\n","import cloudbase from '@cloudbase/app'\nimport { registerAuth } from '@cloudbase/auth'\nimport { registerFunctions } from '@cloudbase/functions'\nimport { registerStorage } from '@cloudbase/storage'\nimport { registerRealtime } from '@cloudbase/realtime'\nimport { registerModel } from '@cloudbase/model'\nimport { registerAi } from '@cloudbase/ai'\nimport { registerCloudrun } from '@cloudbase/cloudrun'\nimport { registerMySQL } from '@cloudbase/mysql'\nimport { registerApis } from '@cloudbase/apis'\n// @ts-ignore\nimport { registerDatabase } from '../database/src/index'\nimport { ICloudbase } from '@cloudbase/types'\n\n// __SDK_VERSION__ will be replaced at build time\ndeclare const __SDK_VERSION__: string\nconst version: string = __SDK_VERSION__\ncloudbase.registerVersion(version)\n\ntry {\n registerAuth(cloudbase)\n registerFunctions(cloudbase)\n registerStorage(cloudbase)\n registerDatabase(cloudbase)\n registerRealtime(cloudbase)\n registerModel(cloudbase)\n registerAi(cloudbase)\n registerCloudrun(cloudbase)\n registerMySQL(cloudbase)\n registerApis(cloudbase)\n} catch (e) {}\n\ndeclare global {\n interface Window {\n cloudbase: ICloudbase\n }\n}\ntry {\n (window as Window).cloudbase = cloudbase\n} catch (e) {}\n// @ts-ignore\nexport = cloudbase\nexport default cloudbase\n","import { ICloudbase } from '@cloudbase/types'\nimport { ICloudbaseComponent } from '@cloudbase/types/component'\nimport { ICallFunctionOptions, ICustomReqOpts } from '@cloudbase/types/functions'\nimport { constants } from '@cloudbase/utilities'\n\ndeclare const cloudbase: ICloudbase\n\nconst { ERRORS } = constants\n\nconst COMPONENT_NAME = 'cloudrun'\n\nclass CloudbaseRun {\n public async callContainer(options: ICallFunctionOptions, customReqOpts?: ICustomReqOpts) {\n const { name, data } = options\n\n if (!name) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.callContainer] invalid name`,\n }),)\n }\n let jsonData\n try {\n jsonData = data ? JSON.stringify(data) : ''\n } catch (e) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.callContainer] invalid data`,\n }),)\n }\n\n return await requestContainer.call(this, { ...options, data: jsonData }, customReqOpts)\n }\n}\n\nexport async function requestContainer(this: any, options: ICallFunctionOptions, customReqOpts?: ICustomReqOpts) {\n const { name, data, path = '', method, header = {} } = options\n const { BASE_URL, PROTOCOL } = this.getEndPointWithKey('GATEWAY')\n const endpoint = `${PROTOCOL}${BASE_URL}/cloudrun/${name}`\n let reqPath = path.startsWith('/') ? path : `/${path}`\n const isGetAndHead = ['GET', 'HEAD'].includes(method?.toUpperCase?.())\n\n if (isGetAndHead) {\n try {\n let dataParse = {}\n try {\n dataParse = JSON.parse(data as any)\n } catch (error) {\n dataParse = data || {}\n }\n reqPath = `${reqPath}${reqPath.includes('?') ? '&' : '?'}${Object.keys(dataParse)\n .map(key => `${key}=${dataParse[key]}`)\n .join('&')}`\n } catch (error) {\n //\n }\n }\n\n // @ts-ignore\n const response = await this.request.fetch({\n method: method || 'POST',\n headers: Object.assign(\n {},\n {\n 'Content-Type': 'application/json; charset=utf-8',\n },\n header,\n ),\n // Request with GET/HEAD method cannot have body\n ...(isGetAndHead ? {} : { body: data }),\n url: `${endpoint}${reqPath}`,\n customReqOpts,\n })\n\n if (customReqOpts?.from === 'node-sdk') {\n return response\n }\n\n return await response.data\n}\n\nconst cloudbaseRun = new CloudbaseRun()\n\nconst component: ICloudbaseComponent = {\n name: COMPONENT_NAME,\n entity: {\n callContainer: cloudbaseRun.callContainer,\n },\n}\ntry {\n cloudbase.registerComponent(component)\n} catch (e) {}\n\nexport function registerCloudrun(app: Pick<ICloudbase, 'registerComponent'>) {\n try {\n app.registerComponent(component)\n } catch (e) {\n console.warn(e)\n }\n}\n\ntry {\n (window as any).registerCloudrun = registerCloudrun\n} catch (e) {}\n","import { ICloudbase } from '@cloudbase/types'\nimport { ICloudbaseComponent } from '@cloudbase/types/component'\nimport { ICallFunctionOptions, ICustomReqOpts } from '@cloudbase/types/functions'\nimport { constants, utils, helpers } from '@cloudbase/utilities'\nimport { requestContainer } from '@cloudbase/cloudrun'\n\ndeclare const cloudbase: ICloudbase\n\nconst { getSdkName, ERRORS, COMMUNITY_SITE_URL } = constants\nconst { execCallback } = utils\nconst { catchErrorsDecorator } = helpers\n\nconst COMPONENT_NAME = 'functions'\n\nfunction isWedaFunc(functionName: string): boolean {\n // 微搭运行态链路改造\n // https://iwiki.woa.com/pages/viewpage.action?pageId=1315543040\n // lcap-common-service(合并前,代理除了数据源之外的所有请求)\n // lcap-data-* (合并前,数据源的云函数,每个数据源两个,包括预览和发布)\n // lcap-datasource-test (合并前,数据源测试用的云函数)\n // lowcode-datasource* (合并后,前面三个的合体,共有两个,预览和发布)\n return (\n functionName === 'lcap-common-service'\n || functionName === 'lcap-datasource-test'\n || functionName.startsWith('lcap-data')\n || functionName.startsWith('lowcode-datasource')\n || functionName === 'cloudbase_module'\n )\n}\n\nfunction isCloudBackendFunc(functionName: string): boolean {\n // 云后台运行态链路\n // 包含工作流的调用\n return functionName === 'lowcode-wx-datasource'\n}\n\nclass CloudbaseFunctions {\n @catchErrorsDecorator({\n customInfo: {\n className: 'Cloudbase',\n methodName: 'callFunction',\n },\n title: '函数调用失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 callFunction() 的语法或参数是否正确',\n ' 2 - 当前环境下是否存在此函数',\n ' 3 - 函数安全规则是否限制了当前登录状态访问',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async callFunction(options: ICallFunctionOptions, callback?: Function, customReqOpts?: ICustomReqOpts) {\n const { name, data, query, parse, search, type, path = '', method, header = {} } = options\n\n if (!name) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.callFunction] invalid function name`,\n }),)\n }\n let jsonData\n try {\n jsonData = data ? JSON.stringify(data) : ''\n } catch (e) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.callFunction] invalid data`,\n }),)\n }\n\n if (type === 'cloudrun') {\n const requestId = utils.generateRequestId()\n const result = await requestContainer.call(this, {\n name,\n data: jsonData,\n path,\n method,\n header: { ...header, 'X-Request-Id': requestId },\n })\n\n return {\n result,\n requestId,\n }\n }\n\n // @ts-ignore\n const { request, config } = this\n const action = 'functions.invokeFunction'\n const params = {\n inQuery: query,\n parse,\n search,\n function_name: name,\n request_data: jsonData,\n }\n let res: any = {}\n const toGateWay = config.endPointMode === 'GATEWAY' && !isWedaFunc(name) && !isCloudBackendFunc(name)\n\n try {\n if (toGateWay) {\n const response = await request.gateWay({ ...options, path: 'functions' }, customReqOpts)\n\n res = {\n requestId: response.requestId,\n ...(response.data?.code\n ? response.data\n : {\n data: {\n response_data: response.data,\n },\n }),\n }\n } else {\n res = await request.send(\n action,\n params,\n {\n endPointMode: 'CLOUD_API',\n defaultQuery: data?.params?.action ? { action: data?.params?.action } : {},\n },\n customReqOpts,\n )\n }\n if (res.code) {\n return execCallback(callback, null, res)\n }\n let result = res.data.response_data\n // parse 为 true 时服务端解析 JSON,SDK 不再次解析\n if (parse || toGateWay) {\n return execCallback(callback, null, {\n result,\n requestId: res.requestId,\n })\n }\n try {\n result = JSON.parse(res.data.response_data)\n return execCallback(callback, null, {\n result,\n requestId: res.requestId,\n })\n } catch (e) {\n execCallback(\n callback,\n new Error(`[${getSdkName()}][${ERRORS.INVALID_PARAMS}][${COMPONENT_NAME}.callFunction] response data must be json`,),\n )\n }\n } catch (e) {\n execCallback(callback, e)\n }\n }\n}\n\nconst cloudbaseFunctions = new CloudbaseFunctions()\n\nconst component: ICloudbaseComponent = {\n name: COMPONENT_NAME,\n entity: {\n callFunction: cloudbaseFunctions.callFunction,\n },\n}\ntry {\n cloudbase.registerComponent(component)\n} catch (e) {}\n\nexport function registerFunctions(app: Pick<ICloudbase, 'registerComponent'>) {\n try {\n app.registerComponent(component)\n } catch (e) {\n console.warn(e)\n }\n}\n","import { ICloudbase } from '@cloudbase/types'\nimport { ICloudbaseComponent } from '@cloudbase/types/component'\nimport { generateHTTPClient } from '@cloudbase/wx-cloud-client-sdk'\nimport { events } from '@cloudbase/utilities'\n\nconst { CloudbaseEventEmitter } = events\n\ndeclare const cloudbase: ICloudbase\n\ntype IFetchOptions = Parameters<ICloudbase['request']['fetch']>[0]\n\nconst COMPONENT_NAME = 'models'\n\nfunction getEntity(cloudbase: any) {\n const callFunction = cloudbase.callFunction.bind(cloudbase)\n const cloudbaseFetch = cloudbase.request.fetch.bind(cloudbase.request)\n const fetch = async (fetchOptions: IFetchOptions) => {\n const res = await cloudbaseFetch({\n ...fetchOptions,\n headers: {\n 'Content-Type': 'application/json',\n ...fetchOptions.headers,\n },\n })\n\n return await res.data\n }\n\n const { BASE_URL, PROTOCOL } = cloudbase.getEndPointWithKey('GATEWAY') as {\n BASE_URL: string\n PROTOCOL: string\n }\n const baseUrl = `${PROTOCOL}${BASE_URL}/model`\n const sqlBaseUrl = `${PROTOCOL}${BASE_URL}/sql`\n\n const entity = generateHTTPClient(callFunction, fetch, baseUrl, { sqlBaseUrl })\n\n return entity\n}\n\nconst cloudbaseModelMap = new WeakMap()\n\n/**\n * 创建 models entity 时,需要 baseUrl、fetch,而这两个参数都需要在 cloudbase.init 之后才能获取。\n * 因此需要在 cloudbase.init 之后执行。\n * 此函数将创建 entity 的步骤延后到第一次读取 models 上的属性时执行。\n */\nexport function lazyGetEntity(cloudbase: ICloudbase): ReturnType<typeof getEntity> {\n return new Proxy(\n {},\n {\n get: (_, prop: string) => {\n const { BASE_URL, PROTOCOL } = cloudbase.getEndPointWithKey('GATEWAY')\n const key = { ...cloudbase, BASE_URL, PROTOCOL }\n let entity = cloudbaseModelMap.get(key)\n if (!entity) {\n entity = getEntity(cloudbase)\n cloudbaseModelMap.set(key, entity)\n }\n return entity[prop]\n },\n },\n )\n}\n\nconst CLOUDBASE_INIT_EVENT = 'cloudbase_init'\n\nconst bus = new CloudbaseEventEmitter()\n\nbus.on(CLOUDBASE_INIT_EVENT, ({ data: cloudbase }: { data: ICloudbase }) => {\n Object.assign(cloudbase, { models: lazyGetEntity(cloudbase) })\n})\n\nconst component: ICloudbaseComponent = {\n name: COMPONENT_NAME,\n namespace: COMPONENT_NAME,\n entity: new Proxy(\n {},\n {\n get: (_, prop: string) => {\n console.warn(`【deprecated】Accessing Cloudbase.prototype.models.${prop}.`)\n },\n },\n ),\n injectEvents: {\n bus,\n events: [CLOUDBASE_INIT_EVENT],\n },\n}\n\ntry {\n cloudbase.registerComponent(component)\n} catch (e) {}\n\nexport function registerModel(app: ICloudbase) {\n try {\n app.registerComponent(component)\n } catch (e) {\n console.warn(e)\n }\n}\n\ntry {\n (window as any).registerModel = registerModel\n} catch (e) {}\n\nexport * from '@cloudbase/wx-cloud-client-sdk'\n","import { ICloudbase } from '@cloudbase/types'\nimport { ICloudbaseComponent } from '@cloudbase/types/component'\nimport {\n CloudBaseInstance,\n generateMySQLClient,\n IMySqlOptions,\n generatePGClient,\n IPgOptions,\n} from '@cloudbase/wx-cloud-client-sdk'\n\ndeclare const cloudbase: ICloudbase\n\nfunction getEntity(cloudbase: any & CloudBaseInstance, options: IMySqlOptions, isPg?: boolean) {\n const cloudbaseFetch = cloudbase.request.fetch.bind(cloudbase.request)\n const { instance = isPg ? undefined : 'default', database = isPg ? undefined : cloudbase.config.env } = options || {}\n const fetch = async (url: RequestInfo | URL, options: RequestInit) => {\n let headers = {}\n if (options.headers instanceof Headers) {\n options.headers.forEach((value, key) => {\n headers[key] = value\n })\n } else {\n headers = options.headers || {}\n }\n\n [\n ['X-Db-Instance', instance],\n ['Accept-Profile', database],\n ['Content-Profile', database],\n ].forEach(([key, value]) => {\n if (!headers[key] && !headers[key.toLocaleLowerCase()] && value) {\n headers[key] = value\n }\n })\n\n const result = await cloudbaseFetch({\n url: url.toString(),\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n shouldThrowOnError: false,\n })\n\n let data = {}\n try {\n data = await result.data\n } catch (e) {\n if (!e.message.includes('Unexpected end of JSON input')) {\n // 服务器会返回空字符串,导致解析失败,这时应当作正常处理\n throw e\n }\n }\n\n const res = {\n ok: result?.statusCode >= 200 && result?.statusCode < 300,\n status: result?.statusCode || 200,\n statusText: result?.statusMessage || 'OK',\n json: () => Promise.resolve(data || {}),\n text: () => Promise.resolve(typeof data === 'string' ? data : JSON.stringify(data || {})),\n headers: result?.header,\n }\n\n return res as Response\n }\n const { BASE_URL, PROTOCOL } = cloudbase.getEndPointWithKey('GATEWAY') as {\n BASE_URL: string\n PROTOCOL: string\n }\n const mysqlBaseUrl = `${PROTOCOL}${BASE_URL}/rdb/rest`\n\n const entity = isPg\n ? generatePGClient(cloudbase, {\n pgBaseUrl: mysqlBaseUrl,\n fetch,\n })\n : generateMySQLClient(cloudbase, {\n mysqlBaseUrl,\n fetch,\n })\n\n return entity\n}\n\nconst component: ICloudbaseComponent = {\n name: 'mysql',\n entity: {\n mysql(options: IMySqlOptions) {\n return getEntity(this, options, false)(options)\n },\n },\n}\nconst rdbComponent: ICloudbaseComponent = {\n name: 'rdb',\n entity: {\n rdb(options: IPgOptions) {\n return getEntity(this, options, true)(options)\n },\n },\n}\n\ntry {\n cloudbase.registerComponent(component)\n cloudbase.registerComponent(rdbComponent)\n} catch (e) {}\n\nexport function registerMySQL(app: ICloudbase) {\n try {\n app.registerComponent(component)\n app.registerComponent(rdbComponent)\n } catch (e) {\n console.warn(e)\n }\n}\n\ntry {\n (window as any).registerMySQL = registerMySQL\n} catch (e) {}\n\nexport * from '@cloudbase/wx-cloud-client-sdk'\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 { OAuth2Client } from './oauth2client/oauth2client'\nimport { AuthOptions, Auth } from './auth/apis'\nimport { AUTH_API_PREFIX } from './auth/consts'\nimport { Credentials } from './oauth2client/models'\nexport { Auth } from './auth/apis'\nexport { AuthError, AuthErrorCategory } from './auth/auth-error'\nexport * as authModels from './auth/models'\nexport type { ProviderProfile, UserInfo, ModifyUserBasicInfoRequest } from './auth/models'\nexport type { Credentials, OAuth2ClientOptions, ResponseError, AuthClientRequestOptions } from './oauth2client/models'\nexport type { AuthOptions } from './auth/apis'\nexport { weAppJwtDecodeAll } from './utils/base64'\nexport { AUTH_API_PREFIX, OAUTH_TYPE, DEFAULT_NODE_ACCESS_SCOPE, LOGIN_STATE_CHANGED_TYPE, EVENTS, AUTH_STATE_CHANGED_TYPE } from './auth/consts'\n\nexport class CloudbaseOAuth {\n public oauth2client: OAuth2Client\n public authApi: Auth\n private detectSessionInUrl: boolean\n\n constructor(authOptions: AuthOptions) {\n // eslint-disable-next-line max-len\n const {\n apiOrigin,\n apiPath = AUTH_API_PREFIX,\n clientId,\n env,\n storage,\n request,\n baseRequest,\n anonymousSignInFunc,\n wxCloud,\n adapter,\n onCredentialsError,\n headers,\n i18n,\n useWxCloud,\n eventBus,\n detectSessionInUrl,\n debug,\n } = authOptions\n this.detectSessionInUrl = detectSessionInUrl ?? false\n this.oauth2client = new OAuth2Client({\n apiOrigin,\n apiPath,\n clientId,\n env,\n storage,\n baseRequest: baseRequest || request,\n anonymousSignInFunc,\n wxCloud,\n onCredentialsError,\n headers: headers || {},\n i18n,\n useWxCloud,\n eventBus,\n debug,\n })\n\n this.authApi = new Auth({\n credentialsClient: this.oauth2client,\n ...authOptions,\n // 兼容老逻辑,有值传入则不走Auth内的验证码请求逻辑\n request: request ? this.oauth2client.request.bind(this.oauth2client) : undefined,\n adapter,\n })\n\n // Set the getInitialSession callback after Auth is created\n // This allows Auth.getInitialSession to handle URL detection and OAuth verification\n if (detectSessionInUrl) {\n this.oauth2client.setGetInitialSession(this.authApi.getInitialSession.bind(this.authApi))\n } else {\n // 在授权之前是hash地址的情况下,需要将hash地址替换到url上\n try {\n const url = new URL(window.location.href)\n const code = url.searchParams.get('code')\n const state = url.searchParams.get('state')\n const cacheData = JSON.parse(sessionStorage.getItem(state) || 'null')\n if (code && state && cacheData?.hash) {\n url.hash = cacheData.hash\n window.history.replaceState(null, '', url.toString())\n window.location.replace(url.toString())\n }\n } catch (error) {\n //\n }\n }\n // Note: Do NOT auto-call initialize() here.\n // Upper layer (packages/auth) should call initializeSession() after setting up onInitialSessionObtained callback\n }\n\n /**\n * Setup the onInitialSessionObtained callback and trigger initialization.\n * This should be called by upper layer (packages/auth) after creating Auth instance.\n * @param onUserObtained Callback to handle user info storage after session is obtained\n */\n public initializeSession(onUserObtained?: (data: { session: Credentials; user?: any; type?: string }, error?: any) => void | Promise<void>): void {\n if (!this.detectSessionInUrl) {\n this.oauth2client.initialize(Promise.resolve({ error: null }))\n return\n }\n this.oauth2client.setOnInitialSessionObtained(onUserObtained)\n // Pass callback directly to initialize() to ensure it's set before initialization starts\n this.oauth2client.initialize()\n }\n}\n","export { ErrorType } from '../auth/consts'\nexport enum Syntax {\n CLIENT_ID = 'client_id',\n CLIENT_SECRET = 'client_secret',\n RESPONSE_TYPE = 'response_type',\n SCOPE = 'scope',\n STATE = 'state',\n REDIRECT_URI = 'redirect_uri',\n ERROR = 'error',\n ERROR_DESCRIPTION = 'error_description',\n ERROR_URI = 'error_uri',\n GRANT_TYPE = 'grant_type',\n CODE = 'code',\n ACCESS_TOKEN = 'access_token',\n TOKEN_TYPE = 'token_type',\n EXPIRES_IN = 'expires_in',\n USERNAME = 'username',\n PASSWORD = 'password',\n REFRESH_TOKEN = 'refresh_token',\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","/**\n * 深拷贝\n * @param {*} value 需要拷贝的值\n * @returns {*} 深拷贝后的值\n * @example\n * const obj = { a: 1, b: { c: 2 } };\n * const newObj = deepClone(obj);\n */\nexport const deepClone = (value: any) => {\n const clone = (copiedValue: any) => {\n // eslint-disable-next-line no-restricted-syntax\n for (const key in value) {\n // eslint-disable-next-line no-prototype-builtins\n if (value.hasOwnProperty(key)) {\n copiedValue[key] = deepClone(value[key])\n }\n }\n return copiedValue\n }\n\n const type = value === null || value === undefined ? 'NullOrUndefined' : Object.prototype.toString.call(value).slice(8, -1)\n\n if (\n [\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array',\n 'BigInt64Array',\n 'BigUint64Array',\n ].includes(type)\n ) {\n return value.slice()\n }\n\n switch (type) {\n case 'Object':\n return clone(Object.create(Object.getPrototypeOf(value)))\n case 'Array':\n return clone([])\n case 'Date':\n return new Date(value.valueOf())\n case 'RegExp':\n return new RegExp(\n value.source,\n (value.global ? 'g' : '')\n + (value.ignoreCase ? 'i' : '')\n + (value.multiline ? 'm' : '')\n + (value.sticky ? 'y' : '')\n + (value.unicode ? 'u' : ''),\n )\n default:\n return value\n }\n}\n\nexport const getPathName = (url: string) => {\n // eslint-disable-next-line no-useless-escape\n const regex = /^(?:http(s)?:\\/\\/[^\\/]+)?(\\/[^\\?#]*)/\n const match = url.match(regex)\n\n if (match) {\n return match[2] || ''\n }\n\n return ''\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","let wsClass = null\nlet runtime = 'web'\n\nexport function getWsClass() {\n return wsClass\n}\nexport function setWsClass(val: any) {\n wsClass = val\n}\n\nexport function getRuntime() {\n return runtime\n}\nexport function setRuntime(val: string) {\n runtime = val\n}\n","import { IGenericError } from '@cloudbase/types'\nimport { IResponseMessageErrorMsg } from '@cloudbase/types/realtime'\n\nexport class RealtimeErrorMessageError extends Error {\n isRealtimeErrorMessageError = true\n payload: IResponseMessageErrorMsg\n\n constructor(serverErrorMsg: IResponseMessageErrorMsg) {\n super(`Watch Error ${JSON.stringify(serverErrorMsg.msgData)} (requestid: ${\n serverErrorMsg.requestId\n })`)\n this.payload = serverErrorMsg\n }\n}\n\nexport const isRealtimeErrorMessageError = (e: any): e is RealtimeErrorMessageError => e?.isRealtimeErrorMessageError\n\nexport class TimeoutError extends Error\n implements IGenericError<'timeout', null> {\n type = 'timeout' as const\n payload = null\n generic = true\n}\n\nexport const isTimeoutError = (e: any): e is TimeoutError => e.type === 'timeout'\n\nexport class CancelledError extends Error\n implements IGenericError<'cancelled', null> {\n type = 'cancelled' as const\n payload = null\n generic = true\n}\n\nexport const isCancelledError = (e: any): e is CancelledError => e.type === 'cancelled'\n\nexport class CloudSDKError extends Error {\n public errCode = 'UNKNOWN_ERROR'\n public errMsg: string\n\n public requestID?: string\n\n constructor(options: IErrorConstructorOptions) {\n super(options.errMsg)\n\n Object.defineProperties(this, {\n message: {\n get() {\n return (\n `errCode: ${this.errCode} ${ERR_CODE[this.errCode]\n || ''} | errMsg: ${this.errMsg}`\n )\n },\n set(msg: string) {\n this.errMsg = msg\n },\n },\n })\n\n this.errCode = options.errCode || 'UNKNOWN_ERROR'\n this.errMsg = options.errMsg\n }\n\n get message() {\n return `errCode: ${this.errCode} | errMsg: ${this.errMsg}`\n }\n\n set message(msg: string) {\n this.errMsg = msg\n }\n}\n\ninterface IErrorConstructorOptions {\n errCode?: string\n errMsg: string\n}\n\nexport const ERR_CODE: { [key: string]: string | number } = {\n // \"-1\": \"\",\n UNKNOWN_ERROR: 'UNKNOWN_ERROR',\n SDK_DATABASE_REALTIME_LISTENER_INIT_WATCH_FAIL:\n 'SDK_DATABASE_REALTIME_LISTENER_INIT_WATCH_FAIL',\n // \"realtime listener init watch fail\",\n SDK_DATABASE_REALTIME_LISTENER_RECONNECT_WATCH_FAIL:\n 'SDK_DATABASE_REALTIME_LISTENER_RECONNECT_WATCH_FAIL',\n // \"realtime listener reconnect watch fail\",\n SDK_DATABASE_REALTIME_LISTENER_REBUILD_WATCH_FAIL:\n 'SDK_DATABASE_REALTIME_LISTENER_REBUILD_WATCH_FAIL',\n // \"realtime listener rebuild watch fail\",\n SDK_DATABASE_REALTIME_LISTENER_CLOSE_WATCH_FAIL:\n 'SDK_DATABASE_REALTIME_LISTENER_CLOSE_WATCH_FAIL',\n // \"realtime listener rebuild watch fail\",\n SDK_DATABASE_REALTIME_LISTENER_SERVER_ERROR_MSG:\n 'SDK_DATABASE_REALTIME_LISTENER_SERVER_ERROR_MSG',\n // \"realtime listener receive server error msg\",\n SDK_DATABASE_REALTIME_LISTENER_RECEIVE_INVALID_SERVER_DATA:\n 'SDK_DATABASE_REALTIME_LISTENER_RECEIVE_INVALID_SERVER_DATA',\n // \"realtime listener receive invalid server data\",\n SDK_DATABASE_REALTIME_LISTENER_WEBSOCKET_CONNECTION_ERROR:\n 'SDK_DATABASE_REALTIME_LISTENER_WEBSOCKET_CONNECTION_ERROR',\n // \"realtime listener websocket connection error\",\n SDK_DATABASE_REALTIME_LISTENER_WEBSOCKET_CONNECTION_CLOSED:\n 'SDK_DATABASE_REALTIME_LISTENER_WEBSOCKET_CONNECTION_CLOSED',\n // \"realtime listener websocket connection closed\",\n SDK_DATABASE_REALTIME_LISTENER_CHECK_LAST_FAIL:\n 'SDK_DATABASE_REALTIME_LISTENER_CHECK_LAST_FAIL',\n // \"realtime listener check last fail\",\n SDK_DATABASE_REALTIME_LISTENER_UNEXPECTED_FATAL_ERROR:\n 'SDK_DATABASE_REALTIME_LISTENER_UNEXPECTED_FATAL_ERROR',\n // \"realtime listener unexpected fatal error\"\n}\n","import { ICloudbase } from '@cloudbase/types'\nimport { RealtimeWebSocketClient } from './websocket-client'\nimport { setWsClass, setRuntime } from './common'\nimport { ICloudbaseComponent, ICloudbaseHook } from '@cloudbase/types/component'\n\ndeclare const cloudbase: ICloudbase\n\nconst hook: ICloudbaseHook = {\n target: 'database',\n entity() {\n const { adapter, runtime } = this.platform\n setWsClass(adapter.wsClass)\n setRuntime(runtime)\n },\n}\n\nconst component: ICloudbaseComponent = {\n name: 'realtime',\n IIFE: true,\n entity() {\n this.prototype.wsClientClass = RealtimeWebSocketClient\n },\n}\n\ntry {\n cloudbase.registerComponent(component)\n cloudbase.registerHook(hook)\n} catch (e) {}\n\nexport function registerRealtime(app: Pick<ICloudbase, 'registerComponent'|'registerHook'>) {\n try {\n app.registerComponent(component)\n app.registerHook(hook)\n } catch (e) {\n console.warn(e)\n }\n}\n","import { VirtualWebSocketClient } from './virtual-websocket-client'\nimport {\n IRealtimeListenerConstructorOptions,\n DBRealtimeListener,\n} from '@cloudbase/types/realtime'\n\n// =============== Realtime Listener (Public) ====================\n\ninterface IRealtimeListenerOptions extends IRealtimeListenerConstructorOptions {\n // init\n close: () => void\n // debug\n debug?: boolean\n virtualClient?: VirtualWebSocketClient\n}\n\nexport class RealtimeListener implements DBRealtimeListener {\n close: () => void\n onChange: (res: any) => void\n onError: (error: any) => void\n\n constructor(options: IRealtimeListenerOptions) {\n this.close = options.close\n this.onChange = options.onChange\n this.onError = options.onError\n\n if (options.debug) {\n Object.defineProperty(this, 'virtualClient', {\n get: () => options.virtualClient,\n })\n }\n }\n}\n","import {\n IResponseMessage,\n IResponseMessageInitEventMsg,\n} from '@cloudbase/types/realtime'\n\nexport function genRequestId(prefix = '') {\n return `${prefix ? `${prefix}_` : ''}${+new Date()}_${Math.random()}`\n}\n\nexport function isInitEventMessage(msg: IResponseMessage): msg is IResponseMessageInitEventMsg {\n return msg.msgType === 'INIT_EVENT'\n}\n","import { SnapshotType, ISnapshot } from '@cloudbase/types/realtime'\nimport { ISingleDBEvent } from '@cloudbase/types/database'\n\n// =============== Realtime Snapshot / Change Event (Public) ====================\n\ninterface ISnapshotConstructorOptions {\n id: number\n docChanges: ISingleDBEvent[]\n docs: Record<string, any>[]\n type?: SnapshotType\n // EJSON: any\n msgType?: String\n}\n\nexport class Snapshot implements ISnapshot {\n id!: number\n docChanges!: ISingleDBEvent[]\n docs!: Record<string, any>[]\n type?: 'init'\n // EJSON: any\n\n constructor(options: ISnapshotConstructorOptions) {\n const { id, docChanges, docs, msgType, type } = options\n\n let cachedDocChanges: ISingleDBEvent[]\n let cachedDocs: Record<string, any>[]\n\n Object.defineProperties(this, {\n id: {\n get: () => id,\n enumerable: true,\n },\n docChanges: {\n get: () => {\n if (!cachedDocChanges) {\n cachedDocChanges = JSON.parse(JSON.stringify(docChanges))\n }\n return cachedDocChanges\n },\n enumerable: true,\n },\n docs: {\n get: () => {\n if (!cachedDocs) {\n cachedDocs = JSON.parse(JSON.stringify(docs))\n }\n return cachedDocs\n },\n enumerable: true,\n },\n msgType: {\n get: () => msgType,\n enumerable: true,\n },\n type: {\n get: () => type,\n enumerable: true,\n },\n })\n }\n}\n","export const sleep = (ms = 0) => new Promise(r => setTimeout(r, ms))\n","import set from 'lodash/set'\nimport unset from 'lodash/unset'\nimport cloneDeep from 'lodash/cloneDeep'\nimport { genRequestId } from './message'\nimport {\n IResponseMessage,\n IRequestMessageInitWatchMsg,\n IResponseMessageInitEventMsg,\n IDBEvent,\n IRequestMessageRebuildWatchMsg,\n IRequestMessageCloseWatchMsg,\n IRequestMsgType,\n IResponseMessageNextEventMsg,\n IRequestMessageCheckLastMsg,\n IWatchOptions,\n} from '@cloudbase/types/realtime'\nimport {\n ISingleDBEvent,\n} from '@cloudbase/types/database'\nimport { RealtimeListener } from './listener'\nimport { Snapshot } from './snapshot'\nimport { IWSSendOptions, ILoginResult } from './websocket-client'\nimport {\n ERR_CODE,\n CloudSDKError,\n isTimeoutError,\n CancelledError,\n isCancelledError,\n isRealtimeErrorMessageError,\n RealtimeErrorMessageError,\n TimeoutError,\n} from './error'\nimport { sleep } from './utils'\n\n// =============== Realtime Virtual WebSocket Client (Internal) ====================\n\ninterface IVirtualWebSocketClientConstructorOptions extends IWatchOptions {\n envId?: string\n collectionName: string\n query: string\n limit?: number\n orderBy?: Record<string, string>\n send: <T = any>(opts: IWSSendOptions) => Promise<T>\n login: (envId?: string, refresh?: boolean) => Promise<any>\n isWSConnected: () => boolean\n onceWSConnected: () => Promise<void>\n getWaitExpectedTimeoutLength: () => number\n onWatchStart: (client: VirtualWebSocketClient, queryID: string) => void\n onWatchClose: (client: VirtualWebSocketClient, queryID: string) => void\n debug?: boolean\n}\n\ninterface IWatchSessionInfo {\n queryID: string\n currentEventId: number\n currentDocs: Record<string, any>[]\n expectEventId?: number\n}\n\ninterface IHandleCommonErrorOptions {\n onSignError: (e: RealtimeErrorMessageError) => void\n onTimeoutError: (e: TimeoutError) => void\n onCancelledError: (e: CancelledError) => void\n onNotRetryableError: (e: RealtimeErrorMessageError) => void\n onUnknownError: (e: any) => void\n}\n\ninterface IHandleWatchEstablishmentErrorOptions {\n operationName: 'INIT_WATCH' | 'REBUILD_WATCH'\n resolve: (value?: PromiseLike<void> | undefined) => void\n reject: (e: any) => void\n}\n\nenum WatchStatus {\n LOGGINGIN = 'LOGGINGIN',\n INITING = 'INITING',\n REBUILDING = 'REBUILDING',\n ACTIVE = 'ACTIVE',\n ERRORED = 'ERRORED',\n CLOSING = 'CLOSING',\n CLOSED = 'CLOSED',\n PAUSED = 'PAUSED',\n RESUMING = 'RESUMING'\n}\n\nconst DEFAULT_WAIT_TIME_ON_UNKNOWN_ERROR = 100\nconst DEFAULT_MAX_AUTO_RETRY_ON_ERROR = 2\nconst DEFAULT_MAX_SEND_ACK_AUTO_RETRY_ON_ERROR = 2\nconst DEFAULT_SEND_ACK_DEBOUNCE_TIMEOUT = 10 * 1000\nconst DEFAULT_INIT_WATCH_TIMEOUT = 10 * 1000\nconst DEFAULT_REBUILD_WATCH_TIMEOUT = 10 * 1000\n\nexport class VirtualWebSocketClient {\n // passed over\n watchId: string\n // own\n listener: RealtimeListener\n private envId?: string\n private collectionName: string\n private query: string\n private limit: number\n private orderBy: Record<string, string>\n private send: <T = any>(opts: IWSSendOptions) => Promise<T>\n private login: (envId?: string, refresh?: boolean) => Promise<any>\n private isWSConnected: () => boolean\n private onceWSConnected: () => Promise<void>\n private getWaitExpectedTimeoutLength: () => number\n private onWatchStart: (\n client: VirtualWebSocketClient,\n queryID: string\n ) => void\n private onWatchClose: (\n client: VirtualWebSocketClient,\n queryID: string\n ) => void\n private debug?: boolean\n\n private watchStatus: WatchStatus = WatchStatus.INITING\n private availableRetries: Partial<Record<IRequestMsgType, number>>\n private ackTimeoutId?: number\n private initWatchPromise?: Promise<void>\n private rebuildWatchPromise?: Promise<void>\n\n // obtained\n private sessionInfo?: IWatchSessionInfo\n\n // internal\n private waitExpectedTimeoutId?: number\n\n constructor(options: IVirtualWebSocketClientConstructorOptions) {\n this.watchId = `watchid_${+new Date()}_${Math.random()}`\n this.envId = options.envId\n this.collectionName = options.collectionName\n this.query = options.query\n this.limit = options.limit\n this.orderBy = options.orderBy\n this.send = options.send\n this.login = options.login\n this.isWSConnected = options.isWSConnected\n this.onceWSConnected = options.onceWSConnected\n this.getWaitExpectedTimeoutLength = options.getWaitExpectedTimeoutLength\n this.onWatchStart = options.onWatchStart\n this.onWatchClose = options.onWatchClose\n this.debug = options.debug\n\n this.availableRetries = {\n INIT_WATCH: DEFAULT_MAX_AUTO_RETRY_ON_ERROR,\n REBUILD_WATCH: DEFAULT_MAX_AUTO_RETRY_ON_ERROR,\n CHECK_LAST: DEFAULT_MAX_SEND_ACK_AUTO_RETRY_ON_ERROR,\n }\n\n this.listener = new RealtimeListener({\n close: () => {\n this.closeWatch()\n },\n onChange: options.onChange,\n onError: options.onError,\n debug: this.debug,\n virtualClient: this,\n })\n\n this.initWatch()\n }\n\n onMessage(msg: IResponseMessage) {\n // watchStatus sanity check\n switch (this.watchStatus) {\n case WatchStatus.PAUSED: {\n // ignore all but error message\n if (msg.msgType !== 'ERROR') {\n return\n }\n break\n }\n case WatchStatus.LOGGINGIN:\n case WatchStatus.INITING:\n case WatchStatus.REBUILDING: {\n console.warn(`[realtime listener] internal non-fatal error: unexpected message received while ${this.watchStatus}`)\n return\n }\n case WatchStatus.CLOSED: {\n console.warn('[realtime listener] internal non-fatal error: unexpected message received when the watch has closed')\n return\n }\n case WatchStatus.ERRORED: {\n console.warn('[realtime listener] internal non-fatal error: unexpected message received when the watch has ended with error')\n return\n }\n }\n\n if (!this.sessionInfo) {\n console.warn('[realtime listener] internal non-fatal error: sessionInfo not found while message is received.')\n return\n }\n\n this.scheduleSendACK()\n\n switch (msg.msgType) {\n case 'NEXT_EVENT': {\n // if (process.env.DEBUG) {\n // @ts-ignore\n // if (wx._ignore) {\n console.warn(`nextevent ${msg.msgData.currEvent} ignored`, msg)\n // @ts-ignore\n // wx._ignore = false\n // return\n // }\n // }\n\n this.handleServerEvents(msg)\n break\n }\n case 'CHECK_EVENT': {\n if (this.sessionInfo.currentEventId < msg.msgData.currEvent) {\n // client eventID < server eventID:\n // there might be one or more pending events not yet received but sent by the server\n this.sessionInfo.expectEventId = msg.msgData.currEvent\n this.clearWaitExpectedEvent()\n // @ts-ignore\n this.waitExpectedTimeoutId = setTimeout(() => {\n // must rebuild watch\n this.rebuildWatch()\n }, this.getWaitExpectedTimeoutLength())\n\n console.log(`[realtime] waitExpectedTimeoutLength ${this.getWaitExpectedTimeoutLength()}`)\n }\n break\n }\n case 'ERROR': {\n // receive server error\n this.closeWithError(new CloudSDKError({\n errCode: ERR_CODE.SDK_DATABASE_REALTIME_LISTENER_SERVER_ERROR_MSG as string,\n errMsg: `${msg.msgData.code} - ${msg.msgData.message}`,\n }))\n break\n }\n default: {\n console.warn(\n `[realtime listener] virtual client receive unexpected msg ${msg.msgType}: `,\n msg\n )\n break\n }\n }\n }\n\n closeWithError(error: any) {\n this.watchStatus = WatchStatus.ERRORED\n this.clearACKSchedule()\n this.listener.onError(error)\n this.onWatchClose(\n this,\n (this.sessionInfo?.queryID) || ''\n )\n\n console.log(`[realtime] client closed (${this.collectionName} ${this.query}) (watchId ${this.watchId})`)\n }\n\n pause() {\n this.watchStatus = WatchStatus.PAUSED\n console.log(`[realtime] client paused (${this.collectionName} ${this.query}) (watchId ${this.watchId})`)\n }\n\n\n async resume(): Promise<void> {\n this.watchStatus = WatchStatus.RESUMING\n\n console.log(`[realtime] client resuming with ${\n this.sessionInfo ? 'REBUILD_WATCH' : 'INIT_WATCH'\n } (${this.collectionName} ${this.query}) (${this.watchId})`)\n\n try {\n await (this.sessionInfo ? this.rebuildWatch() : this.initWatch())\n\n console.log(`[realtime] client successfully resumed (${this.collectionName} ${this.query}) (${this.watchId})`)\n } catch (e) {\n console.error(\n `[realtime] client resume failed (${this.collectionName} ${this.query}) (${this.watchId})`,\n e\n )\n }\n }\n\n private wsLogin = async (\n envId?: string,\n refresh?: boolean\n ): Promise<ILoginResult> => {\n this.watchStatus = WatchStatus.LOGGINGIN\n const loginResult = await this.login(envId, refresh)\n if (!this.envId) {\n this.envId = loginResult.envId\n }\n return loginResult\n }\n\n private initWatch = async (forceRefreshLogin?: boolean): Promise<void> => {\n if (this.initWatchPromise !== null && this.initWatchPromise !== undefined) {\n return this.initWatchPromise\n }\n\n this.initWatchPromise = new Promise<void>((resolve, reject) => {\n void (async () => {\n try {\n if (this.watchStatus === WatchStatus.PAUSED) {\n console.log('[realtime] initWatch cancelled on pause')\n return resolve()\n }\n\n const { envId } = await this.wsLogin(this.envId, forceRefreshLogin)\n if ((this.watchStatus as WatchStatus) === WatchStatus.PAUSED) {\n console.log('[realtime] initWatch cancelled on pause')\n return resolve()\n }\n\n this.watchStatus = WatchStatus.INITING\n\n const initWatchMsg: IRequestMessageInitWatchMsg = {\n watchId: this.watchId,\n requestId: genRequestId(),\n msgType: 'INIT_WATCH',\n msgData: {\n envId,\n collName: this.collectionName,\n query: this.query,\n limit: this.limit,\n orderBy: this.orderBy,\n },\n }\n\n const initEventMsg = await this.send<IResponseMessageInitEventMsg>({\n msg: initWatchMsg,\n waitResponse: true,\n skipOnMessage: true,\n timeout: DEFAULT_INIT_WATCH_TIMEOUT,\n })\n\n const { events, currEvent } = initEventMsg.msgData\n\n this.sessionInfo = {\n queryID: initEventMsg.msgData.queryID,\n currentEventId: currEvent - 1,\n currentDocs: [],\n }\n\n // FIX: in initEvent message, all events have id 0, which is inconsistent with currEvent\n if (events.length > 0) {\n for (const e of events) {\n e.ID = currEvent\n }\n this.handleServerEvents(initEventMsg)\n } else {\n this.sessionInfo.currentEventId = currEvent\n const snapshot = new Snapshot({\n id: currEvent,\n docChanges: [],\n docs: [],\n type: 'init',\n })\n this.listener.onChange(snapshot)\n this.scheduleSendACK()\n }\n this.onWatchStart(this, this.sessionInfo.queryID)\n this.watchStatus = WatchStatus.ACTIVE\n this.availableRetries.INIT_WATCH = DEFAULT_MAX_AUTO_RETRY_ON_ERROR\n resolve()\n } catch (e) {\n this.handleWatchEstablishmentError(e, {\n operationName: 'INIT_WATCH',\n resolve,\n reject,\n })\n }\n })()\n })\n\n let success = false\n\n try {\n await this.initWatchPromise\n success = true\n } finally {\n this.initWatchPromise = undefined\n }\n console.log(`[realtime] initWatch ${success ? 'success' : 'fail'}`)\n }\n\n private rebuildWatch = async (forceRefreshLogin?: boolean): Promise<void> => {\n if (this.rebuildWatchPromise !== null && this.rebuildWatchPromise !== undefined) {\n return this.rebuildWatchPromise\n }\n\n this.rebuildWatchPromise = new Promise<void>((resolve, reject) => {\n void (async () => {\n try {\n if (this.watchStatus === WatchStatus.PAUSED) {\n console.log('[realtime] rebuildWatch cancelled on pause')\n return resolve()\n }\n const { envId } = await this.wsLogin(this.envId, forceRefreshLogin)\n\n if (!this.sessionInfo) {\n throw new Error('can not rebuildWatch without a successful initWatch (lack of sessionInfo)')\n }\n\n if ((this.watchStatus as WatchStatus) === WatchStatus.PAUSED) {\n console.log('[realtime] rebuildWatch cancelled on pause')\n return resolve()\n }\n\n this.watchStatus = WatchStatus.REBUILDING\n\n const rebuildWatchMsg: IRequestMessageRebuildWatchMsg = {\n watchId: this.watchId,\n requestId: genRequestId(),\n msgType: 'REBUILD_WATCH',\n msgData: {\n envId,\n collName: this.collectionName,\n queryID: this.sessionInfo.queryID,\n eventID: this.sessionInfo.currentEventId,\n },\n }\n\n const nextEventMsg = await this.send<IResponseMessageNextEventMsg>({\n msg: rebuildWatchMsg,\n waitResponse: true,\n skipOnMessage: false,\n timeout: DEFAULT_REBUILD_WATCH_TIMEOUT,\n })\n\n this.handleServerEvents(nextEventMsg)\n\n this.watchStatus = WatchStatus.ACTIVE\n this.availableRetries.REBUILD_WATCH = DEFAULT_MAX_AUTO_RETRY_ON_ERROR\n resolve()\n } catch (e) {\n this.handleWatchEstablishmentError(e, {\n operationName: 'REBUILD_WATCH',\n resolve,\n reject,\n })\n }\n })()\n })\n\n let success = false\n\n try {\n await this.rebuildWatchPromise\n success = true\n } finally {\n this.rebuildWatchPromise = undefined\n }\n\n console.log(`[realtime] rebuildWatch ${success ? 'success' : 'fail'}`)\n }\n\n private handleWatchEstablishmentError = async (\n e: any,\n options: IHandleWatchEstablishmentErrorOptions\n ) => {\n const isInitWatch = options.operationName === 'INIT_WATCH'\n\n const abortWatch = () => {\n // mock temp comment\n this.closeWithError(new CloudSDKError({\n errCode: isInitWatch\n ? (ERR_CODE.SDK_DATABASE_REALTIME_LISTENER_INIT_WATCH_FAIL as string)\n : (ERR_CODE.SDK_DATABASE_REALTIME_LISTENER_REBUILD_WATCH_FAIL as string),\n errMsg: e,\n }))\n options.reject(e)\n }\n\n const retry = (refreshLogin?: boolean) => {\n if (this.useRetryTicket(options.operationName)) {\n if (isInitWatch) {\n this.initWatchPromise = undefined\n options.resolve(this.initWatch(refreshLogin))\n } else {\n this.rebuildWatchPromise = undefined\n options.resolve(this.rebuildWatch(refreshLogin))\n }\n } else {\n abortWatch()\n }\n }\n\n this.handleCommonError(e, {\n onSignError: () => retry(true),\n onTimeoutError: () => retry(false),\n onNotRetryableError: abortWatch,\n onCancelledError: options.reject,\n onUnknownError: () => {\n (async () => {\n try {\n const onWSDisconnected = async () => {\n this.pause()\n await this.onceWSConnected()\n retry(true)\n }\n\n if (!this.isWSConnected()) {\n await onWSDisconnected()\n } else {\n await sleep(DEFAULT_WAIT_TIME_ON_UNKNOWN_ERROR)\n if (this.watchStatus === WatchStatus.PAUSED) {\n // cancel\n options.reject(new CancelledError(`${options.operationName} cancelled due to pause after unknownError`))\n } else if (!this.isWSConnected()) {\n await onWSDisconnected()\n } else {\n retry(false)\n }\n }\n } catch (e) {\n // unexpected error while handling error, in order to provide maximum effort on SEAMINGLESS FAULT TOLERANCE, just retry\n retry(true)\n }\n })()\n },\n })\n }\n\n private closeWatch = async () => {\n const queryId = this.sessionInfo ? this.sessionInfo.queryID : ''\n\n if (this.watchStatus !== WatchStatus.ACTIVE) {\n this.watchStatus = WatchStatus.CLOSED\n this.onWatchClose(this, queryId)\n return\n }\n\n try {\n this.watchStatus = WatchStatus.CLOSING\n\n const closeWatchMsg: IRequestMessageCloseWatchMsg = {\n watchId: this.watchId,\n requestId: genRequestId(),\n msgType: 'CLOSE_WATCH',\n msgData: null,\n }\n\n await this.send({\n msg: closeWatchMsg,\n })\n\n this.sessionInfo = undefined\n this.watchStatus = WatchStatus.CLOSED\n } catch (e) {\n this.closeWithError(new CloudSDKError({\n errCode: ERR_CODE.SDK_DATABASE_REALTIME_LISTENER_CLOSE_WATCH_FAIL as string,\n errMsg: e,\n }))\n } finally {\n this.onWatchClose(this, queryId)\n }\n }\n\n private scheduleSendACK = () => {\n this.clearACKSchedule()\n\n // TODO: should we check status after timeout\n // @ts-ignore\n this.ackTimeoutId = setTimeout(() => {\n if (this.waitExpectedTimeoutId) {\n this.scheduleSendACK()\n } else {\n this.sendACK()\n }\n }, DEFAULT_SEND_ACK_DEBOUNCE_TIMEOUT)\n }\n\n private clearACKSchedule = () => {\n if (this.ackTimeoutId) {\n clearTimeout(this.ackTimeoutId)\n }\n }\n\n private sendACK = async (): Promise<void> => {\n try {\n if (this.watchStatus !== WatchStatus.ACTIVE) {\n this.scheduleSendACK()\n return\n }\n\n if (!this.sessionInfo) {\n console.warn('[realtime listener] can not send ack without a successful initWatch (lack of sessionInfo)')\n return\n }\n\n const ackMsg: IRequestMessageCheckLastMsg = {\n watchId: this.watchId,\n requestId: genRequestId(),\n msgType: 'CHECK_LAST',\n msgData: {\n queryID: this.sessionInfo.queryID,\n eventID: this.sessionInfo.currentEventId,\n },\n }\n\n await this.send({\n msg: ackMsg,\n })\n\n this.scheduleSendACK()\n } catch (e) {\n // TODO: refactor\n if (isRealtimeErrorMessageError(e)) {\n const msg = e.payload\n switch (msg.msgData.code) {\n // signature error -> retry with refreshed signature\n case 'CHECK_LOGIN_FAILED':\n case 'SIGN_EXPIRED_ERROR':\n case 'SIGN_INVALID_ERROR':\n case 'SIGN_PARAM_INVALID': {\n this.rebuildWatch()\n return\n }\n // other -> throw\n case 'QUERYID_INVALID_ERROR':\n case 'SYS_ERR':\n case 'INVALIID_ENV':\n case 'COLLECTION_PERMISSION_DENIED': {\n // must throw\n this.closeWithError(new CloudSDKError({\n errCode: ERR_CODE.SDK_DATABASE_REALTIME_LISTENER_CHECK_LAST_FAIL as string,\n errMsg: msg.msgData.code,\n }))\n return\n }\n default: {\n break\n }\n }\n }\n\n // maybe retryable\n if (\n this.availableRetries.CHECK_LAST\n && this.availableRetries.CHECK_LAST > 0\n ) {\n this.availableRetries.CHECK_LAST -= 1\n this.scheduleSendACK()\n } else {\n this.closeWithError(new CloudSDKError({\n errCode: ERR_CODE.SDK_DATABASE_REALTIME_LISTENER_CHECK_LAST_FAIL as string,\n errMsg: e,\n }))\n }\n }\n }\n\n private handleCommonError = (\n e: any,\n options: IHandleCommonErrorOptions\n ): void => {\n if (isRealtimeErrorMessageError(e)) {\n const msg = e.payload\n switch (msg.msgData.code) {\n // signature error -> retry with refreshed signature\n case 'CHECK_LOGIN_FAILED':\n case 'SIGN_EXPIRED_ERROR':\n case 'SIGN_INVALID_ERROR':\n case 'SIGN_PARAM_INVALID': {\n options.onSignError(e)\n return\n }\n // not-retryable error -> throw\n case 'QUERYID_INVALID_ERROR':\n case 'SYS_ERR':\n case 'INVALIID_ENV':\n case 'COLLECTION_PERMISSION_DENIED': {\n options.onNotRetryableError(e)\n return\n }\n default: {\n options.onNotRetryableError(e)\n return\n }\n }\n } else if (isTimeoutError(e)) {\n // timeout error\n options.onTimeoutError(e)\n return\n } else if (isCancelledError(e)) {\n // cancelled error\n options.onCancelledError(e)\n return\n }\n\n // unknown error\n options.onUnknownError(e)\n }\n\n // credit a retry chance from availableRetries\n private useRetryTicket(operationName: IRequestMsgType): boolean {\n if (\n this.availableRetries[operationName]\n && this.availableRetries[operationName]! > 0\n ) {\n this.availableRetries[operationName]! -= 1\n console.log(`[realtime] ${operationName} use a retry ticket, now only ${this.availableRetries[operationName]} retry left`)\n\n return true\n }\n return false\n }\n\n private async handleServerEvents(msg: IResponseMessageInitEventMsg | IResponseMessageNextEventMsg) {\n try {\n this.scheduleSendACK()\n await this.handleServerEventsInternel(msg)\n this.postHandleServerEventsValidityCheck(msg)\n } catch (e) {\n // TODO: report\n console.error(\n '[realtime listener] internal non-fatal error: handle server events failed with error: ',\n e\n )\n throw e\n }\n }\n\n private async handleServerEventsInternel(msg: IResponseMessageInitEventMsg | IResponseMessageNextEventMsg) {\n const { requestId } = msg\n\n const { events } = msg.msgData\n const { msgType } = msg\n\n if (!events.length || !this.sessionInfo) {\n return\n }\n\n const { sessionInfo } = this\n\n let allChangeEvents: ISingleDBEvent[]\n try {\n allChangeEvents = events.map(getPublicEvent)\n } catch (e) {\n this.closeWithError(new CloudSDKError({\n errCode: ERR_CODE.SDK_DATABASE_REALTIME_LISTENER_RECEIVE_INVALID_SERVER_DATA as string,\n errMsg: e,\n }))\n return\n }\n\n // aggregate docs\n let docs = [...sessionInfo.currentDocs]\n let initEncountered = false\n for (let i = 0, len = allChangeEvents.length; i < len; i++) {\n const change = allChangeEvents[i]\n\n if (sessionInfo.currentEventId >= change.id) {\n if (!allChangeEvents[i - 1] || change.id > allChangeEvents[i - 1].id) {\n // duplicate event, dropable\n // TODO: report\n // if (process.env.DEBUG) {\n console.warn(`[realtime] duplicate event received, cur ${sessionInfo.currentEventId} but got ${change.id}`)\n // }\n } else {\n // allChangeEvents should be in ascending order according to eventId, this should never happens, must report a non-fatal error\n console.error(`[realtime listener] server non-fatal error: events out of order (the latter event's id is smaller than that of the former) (requestId ${requestId})`)\n }\n continue\n } else if (sessionInfo.currentEventId === change.id - 1) {\n // correct sequence\n // first handle dataType then queueType:\n // 1. dataType: we ONLY populate change.doc if neccessary\n // 2. queueType: we build the data snapshot\n\n switch (change.dataType) {\n case 'update': {\n // only need to populate change.doc when it is not provided\n if (!change.doc) {\n switch (change.queueType) {\n case 'update':\n case 'dequeue': {\n const localDoc = docs.find(doc => doc._id === change.docId)\n if (localDoc) {\n // a partial update\n const doc = cloneDeep(localDoc)\n\n if (change.updatedFields) {\n Object.keys(change.updatedFields).forEach((fieldPath) => {\n set(doc, fieldPath, change.updatedFields[fieldPath])\n })\n }\n\n if (change.removedFields) {\n for (const fieldPath of change.removedFields) {\n unset(doc, fieldPath)\n }\n }\n\n change.doc = doc\n } else {\n // TODO report\n console.error('[realtime listener] internal non-fatal server error: unexpected update dataType event where no doc is associated.')\n }\n break\n }\n case 'enqueue': {\n // doc is provided by server, this should never occur\n const err = new CloudSDKError({\n errCode: ERR_CODE.SDK_DATABASE_REALTIME_LISTENER_UNEXPECTED_FATAL_ERROR as string,\n errMsg: `HandleServerEvents: full doc is not provided with dataType=\"update\" and queueType=\"enqueue\" (requestId ${msg.requestId})`,\n })\n this.closeWithError(err)\n throw err\n }\n default: {\n break\n }\n }\n }\n break\n }\n case 'replace': {\n // validation\n if (!change.doc) {\n // doc is provided by server, this should never occur\n const err = new CloudSDKError({\n errCode: ERR_CODE.SDK_DATABASE_REALTIME_LISTENER_UNEXPECTED_FATAL_ERROR as string,\n errMsg: `HandleServerEvents: full doc is not provided with dataType=\"replace\" (requestId ${msg.requestId})`,\n })\n this.closeWithError(err)\n throw err\n }\n break\n }\n case 'remove': {\n const doc = docs.find(doc => doc._id === change.docId)\n if (doc) {\n change.doc = doc\n } else {\n // TODO report\n console.error('[realtime listener] internal non-fatal server error: unexpected remove event where no doc is associated.')\n }\n break\n }\n case 'limit': {\n if (!change.doc) {\n switch (change.queueType) {\n case 'dequeue': {\n const doc = docs.find(doc => doc._id === change.docId)\n if (doc) {\n change.doc = doc\n } else {\n console.error('[realtime listener] internal non-fatal server error: unexpected limit dataType event where no doc is associated.')\n }\n break\n }\n case 'enqueue': {\n // doc is provided by server, this should never occur\n const err = new CloudSDKError({\n errCode: ERR_CODE.SDK_DATABASE_REALTIME_LISTENER_UNEXPECTED_FATAL_ERROR as string,\n errMsg: `HandleServerEvents: full doc is not provided with dataType=\"limit\" and queueType=\"enqueue\" (requestId ${msg.requestId})`,\n })\n this.closeWithError(err)\n throw err\n }\n default: {\n break\n }\n }\n }\n break\n }\n }\n\n switch (change.queueType) {\n case 'init': {\n if (!initEncountered) {\n initEncountered = true\n docs = [change.doc]\n } else {\n docs.push(change.doc)\n }\n break\n }\n case 'enqueue': {\n docs.push(change.doc)\n break\n }\n case 'dequeue': {\n const ind = docs.findIndex(doc => doc._id === change.docId)\n if (ind > -1) {\n docs.splice(ind, 1)\n } else {\n // TODO report\n console.error('[realtime listener] internal non-fatal server error: unexpected dequeue event where no doc is associated.')\n }\n break\n }\n case 'update': {\n const ind = docs.findIndex(doc => doc._id === change.docId)\n if (ind > -1) {\n docs[ind] = change.doc\n } else {\n // TODO report\n console.error('[realtime listener] internal non-fatal server error: unexpected queueType update event where no doc is associated.')\n }\n break\n }\n }\n\n if (\n i === len - 1\n || (allChangeEvents[i + 1] && allChangeEvents[i + 1].id !== change.id)\n ) {\n // a shallow slice creates a shallow snapshot\n const docsSnapshot = [...docs]\n\n // we slice first cause' if there're allChangeEvents that are of the same id after this change, we don't want to involve it for it is unexpected invalid order\n const docChanges = allChangeEvents\n .slice(0, i + 1)\n .filter(c => c.id === change.id)\n\n // all changes of this event has been handle, we could dispatch the event now\n this.sessionInfo.currentEventId = change.id\n this.sessionInfo.currentDocs = docs\n\n const snapshot = new Snapshot({\n id: change.id,\n docChanges,\n docs: docsSnapshot,\n msgType,\n })\n\n this.listener.onChange(snapshot)\n }\n } else {\n // out-of-order event\n // if (process.env.DEBUG) {\n // TODO: report\n console.warn(`[realtime listener] event received is out of order, cur ${this.sessionInfo.currentEventId} but got ${change.id}`)\n // }\n // rebuild watch\n await this.rebuildWatch()\n return\n }\n }\n }\n\n private postHandleServerEventsValidityCheck(msg: IResponseMessageInitEventMsg | IResponseMessageNextEventMsg) {\n if (!this.sessionInfo) {\n console.error('[realtime listener] internal non-fatal error: sessionInfo lost after server event handling, this should never occur')\n return\n }\n\n if (\n this.sessionInfo.expectEventId\n && this.sessionInfo.currentEventId >= this.sessionInfo.expectEventId\n ) {\n this.clearWaitExpectedEvent()\n }\n\n if (this.sessionInfo.currentEventId < msg.msgData.currEvent) {\n console.warn('[realtime listener] internal non-fatal error: client eventId does not match with server event id after server event handling')\n return\n }\n }\n\n private clearWaitExpectedEvent() {\n if (this.waitExpectedTimeoutId) {\n clearTimeout(this.waitExpectedTimeoutId)\n this.waitExpectedTimeoutId = undefined\n }\n }\n}\n\nfunction getPublicEvent(event: IDBEvent): ISingleDBEvent {\n const e: ISingleDBEvent = {\n id: event.ID,\n dataType: event.DataType,\n queueType: event.QueueType,\n docId: event.DocID,\n doc: event.Doc && event.Doc !== '{}' ? JSON.parse(event.Doc) : undefined,\n }\n\n if (event.DataType === 'update') {\n // @ts-ignore\n if (event.UpdatedFields) {\n e.updatedFields = JSON.parse(event.UpdatedFields)\n }\n // TODO: wait for tcb to change removedFields to RemovedFields\n // @ts-ignore\n if (event.removedFields || event.RemovedFields) {\n // @ts-ignore\n // e.removedFields = event.removedFields\n // ? JSON.parse(event.removedFields)\n // : JSON.parse(event.RemovedFields)\n e.removedFields = JSON.parse(event.removedFields)\n }\n }\n\n return e\n}\n","import { VirtualWebSocketClient } from './virtual-websocket-client'\nimport { genRequestId } from './message'\nimport {\n IDatabaseServiceContext,\n} from '@cloudbase/types/database'\nimport {\n IWatchOptions,\n DBRealtimeListener,\n IRequestMessage,\n IResponseMessage,\n IRequestMessagePingMsg,\n IRequestMessageLoginMsg,\n IResponseMessageLoginResMsg,\n IRequestMessageLoginData,\n} from '@cloudbase/types/realtime'\nimport {\n CloseEventCode,\n CLOSE_EVENT_CODE_INFO,\n getWSCloseError,\n} from './ws-event'\n\nimport { ERR_CODE, TimeoutError, RealtimeErrorMessageError, CloudSDKError } from './error'\nimport { getWsClass, getRuntime } from './common'\nimport { sleep } from './utils'\n\nexport interface IRealtimeWebSocketClientConstructorOptions {\n maxReconnect?: number\n reconnectInterval?: number\n context: IDatabaseServiceContext\n}\n\nexport interface ISignature {\n envId: string\n secretVersion: number\n signStr: string\n wsUrl: string\n expireTS: number\n}\n\nexport interface ILoginInfo {\n loggedIn: boolean\n loggingInPromise?: Promise<ILoginResult>\n loginStartTS?: number\n loginResult?: ILoginResult\n}\n\nexport interface ILoginResult {\n envId: string\n}\n\nexport interface IWSSendOptions {\n msg: IRequestMessage\n waitResponse?: boolean\n // when waitResponse is set to true, if skipOnMessage is true, general onMessage handler will be skipped\n skipOnMessage?: boolean\n timeout?: number\n}\n\nexport interface IWSWatchOptions extends IWatchOptions {\n envId?: string\n collectionName: string\n query: string\n limit?: number\n orderBy?: Record<string, string>\n}\n\ninterface IResolveReject {\n resolve: (value?: any | PromiseLike<any> | undefined) => void\n reject: (reason?: any) => void\n}\n\ninterface IResponseWaitSpec extends IResolveReject {\n skipOnMessage?: boolean\n}\n\ninterface IWsSign {\n signStr: string,\n wsUrl: string,\n secretVersion: string\n envId: string\n expiredTs: number\n}\n\nconst WS_READY_STATE = {\n CONNECTING: 0,\n OPEN: 1,\n CLOSING: 2,\n CLOSED: 3,\n}\n\nconst MAX_RTT_OBSERVED = 3\nconst DEFAULT_EXPECTED_EVENT_WAIT_TIME = 5000\nconst DEFAULT_UNTRUSTED_RTT_THRESHOLD = 10000\nconst DEFAULT_MAX_RECONNECT = 5\nconst DEFAULT_WS_RECONNECT_INTERVAL = 10000\n// const DEFAULT_WS_RECONNECT_MAX_VALID_INTERVAL = 3 * 60 * 1000\nconst DEFAULT_PING_FAIL_TOLERANCE = 2\nconst DEFAULT_PONG_MISS_TOLERANCE = 2\nconst DEFAULT_LOGIN_TIMEOUT = 5000\n\nexport class RealtimeWebSocketClient {\n private virtualWSClient: Set<VirtualWebSocketClient> = new Set()\n // after listener initWatch, the listener has the queryID and can store it here\n private queryIdClientMap: Map<string, VirtualWebSocketClient> = new Map()\n private watchIdClientMap: Map<string, VirtualWebSocketClient> = new Map()\n private maxReconnect: number\n private reconnectInterval: number\n private context: IDatabaseServiceContext\n private ws?: any\n private lastPingSendTS?: number\n private pingFailed = 0\n private pongMissed = 0\n private pingTimeoutId?: number\n private pongTimeoutId?: number\n private logins: Map<string /* envId */, ILoginInfo> = new Map()\n private wsInitPromise?: Promise<void>\n private wsReadySubsribers: IResolveReject[] = []\n private wsResponseWait: Map<\n string /* requestId */,\n IResponseWaitSpec\n > = new Map()\n private rttObserved: number[] = []\n private reconnectState: boolean\n // obtained from the first getSignature with no envId provided\n private wsSign: IWsSign\n\n constructor(options: IRealtimeWebSocketClientConstructorOptions) {\n this.maxReconnect = options.maxReconnect || DEFAULT_MAX_RECONNECT\n this.reconnectInterval = options.reconnectInterval || DEFAULT_WS_RECONNECT_INTERVAL\n this.context = options.context\n }\n\n clearHeartbeat() {\n this.pingTimeoutId && clearTimeout(this.pingTimeoutId)\n this.pongTimeoutId && clearTimeout(this.pongTimeoutId)\n }\n\n send = async <T = any>(opts: IWSSendOptions): Promise<T> => new Promise<T>((_resolve, _reject) => {\n void (async () => {\n let timeoutId: number\n let hasResolved = false\n let hasRejected = false\n\n const resolve: typeof _resolve = (value?: T | PromiseLike<T> | undefined) => {\n hasResolved = true\n timeoutId && clearTimeout(timeoutId)\n _resolve(value)\n }\n\n const reject: typeof _reject = (error: any) => {\n hasRejected = true\n timeoutId && clearTimeout(timeoutId)\n _reject(error)\n }\n\n if (opts.timeout) {\n // @ts-ignore\n timeoutId = setTimeout(() => {\n (async () => {\n if (!hasResolved || !hasRejected) {\n // wait another immediate timeout to allow the success/fail callback to be invoked if ws has already got the result,\n // this is because the timer is registered before ws.send\n await sleep(0)\n if (!hasResolved || !hasRejected) {\n reject(new TimeoutError('wsclient.send timedout'))\n }\n }\n })()\n }, opts.timeout)\n }\n\n try {\n if (this.wsInitPromise !== undefined || this.wsInitPromise !== null) {\n await this.wsInitPromise\n }\n\n if (!this.ws) {\n reject(new Error('invalid state: ws connection not exists, can not send message'))\n return\n }\n\n if (this.ws.readyState !== WS_READY_STATE.OPEN) {\n reject(new Error(`ws readyState invalid: ${this.ws.readyState}, can not send message`))\n return\n }\n\n if (opts.waitResponse) {\n const respWaitSpec: IResponseWaitSpec = {\n resolve,\n reject,\n skipOnMessage: opts.skipOnMessage,\n }\n this.wsResponseWait.set(opts.msg.requestId, respWaitSpec)\n }\n\n // console.log('send msg:', opts.msg)\n try {\n await this.ws.send(JSON.stringify(opts.msg))\n if (!opts.waitResponse) {\n resolve(void 0)\n }\n } catch (err) {\n if (err) {\n reject(err)\n if (opts.waitResponse) {\n this.wsResponseWait.delete(opts.msg.requestId)\n }\n }\n }\n } catch (e) {\n reject(e)\n }\n })()\n })\n\n close(code: CloseEventCode) {\n this.clearHeartbeat()\n\n if (this.ws) {\n this.ws.close(code, CLOSE_EVENT_CODE_INFO[code].name)\n this.ws = undefined\n }\n }\n\n closeAllClients = (error: any) => {\n this.virtualWSClient.forEach((client) => {\n client.closeWithError(error)\n })\n }\n\n pauseClients = (clients?: Set<VirtualWebSocketClient>) => {\n (clients || this.virtualWSClient).forEach((client) => {\n client.pause()\n })\n }\n\n resumeClients = (clients?: Set<VirtualWebSocketClient>) => {\n (clients || this.virtualWSClient).forEach((client) => {\n client.resume()\n })\n }\n\n watch(options: IWSWatchOptions): DBRealtimeListener {\n if (!this.ws && (this.wsInitPromise === undefined || this.wsInitPromise === null)) {\n this.initWebSocketConnection(false)\n }\n\n const virtualClient = new VirtualWebSocketClient({\n ...options,\n send: this.send,\n login: this.webLogin,\n isWSConnected: this.isWSConnected,\n onceWSConnected: this.onceWSConnected,\n getWaitExpectedTimeoutLength: this.getWaitExpectedTimeoutLength,\n onWatchStart: this.onWatchStart,\n onWatchClose: this.onWatchClose,\n debug: true,\n })\n this.virtualWSClient.add(virtualClient)\n this.watchIdClientMap.set(virtualClient.watchId, virtualClient)\n return virtualClient.listener\n }\n\n private initWebSocketConnection = async (\n reconnect: boolean,\n availableRetries: number = this.maxReconnect\n ): Promise<void> => {\n // 当前处于正在重连中的状态\n if (reconnect && this.reconnectState) {\n return // 忽略\n }\n\n if (reconnect) {\n this.reconnectState = true // 重连状态开始\n }\n\n if (this.wsInitPromise !== undefined && this.wsInitPromise !== null) {\n // there already exists a websocket initiation, just wait for it\n return this.wsInitPromise\n }\n\n if (reconnect) {\n this.pauseClients()\n }\n\n this.close(CloseEventCode.ReconnectWebSocket)\n\n this.wsInitPromise = new Promise<void>((resolve, reject) => {\n (async () => {\n try {\n const wsSign = await this.getWsSign()\n\n await new Promise((success) => {\n const url = wsSign.wsUrl || 'wss://tcb-ws.tencentcloudapi.com'\n const wsClass = getWsClass()\n /* eslint-disable-next-line */\n this.ws = wsClass ? new wsClass(url) : new WebSocket(url)\n success(void 0)\n })\n\n if (this.ws.connect) {\n await this.ws.connect()\n }\n\n await this.initWebSocketEvent()\n resolve()\n\n if (reconnect) {\n this.resumeClients()\n this.reconnectState = false // 重连状态结束\n }\n } catch (e) {\n console.error('[realtime] initWebSocketConnection connect fail', e)\n\n if (availableRetries > 0) {\n // this is an optimization, in case of network offline, we don't need to stubbornly sleep for sometime,\n // we only need to wait for the network to be back online, this ensures minimum downtime\n // const { isConnected } = await getNetworkStatus()\n const isConnected = true\n\n this.wsInitPromise = undefined\n\n if (isConnected) {\n await sleep(this.reconnectInterval)\n if (reconnect) {\n this.reconnectState = false // 重连异常也算重连状态结束\n }\n }\n\n resolve(this.initWebSocketConnection(reconnect, availableRetries - 1))\n } else {\n reject(e)\n\n if (reconnect) {\n this.closeAllClients(new CloudSDKError({\n errCode: ERR_CODE.SDK_DATABASE_REALTIME_LISTENER_RECONNECT_WATCH_FAIL as string,\n errMsg: e,\n }))\n }\n }\n }\n })()\n })\n\n try {\n await this.wsInitPromise\n this.wsReadySubsribers.forEach(({ resolve }) => resolve())\n } catch (e) {\n this.wsReadySubsribers.forEach(({ reject }) => reject())\n } finally {\n this.wsInitPromise = undefined\n this.wsReadySubsribers = []\n }\n }\n\n private initWebSocketEvent = () => new Promise<void>((resolve, reject) => {\n if (!this.ws) {\n throw new Error('can not initWebSocketEvent, ws not exists')\n }\n\n let wsOpened = false\n\n this.ws.onopen = (event) => {\n console.warn('[realtime] ws event: open', event)\n wsOpened = true\n resolve()\n }\n\n this.ws.onerror = (event) => {\n // all logins are invalid after disconnection\n this.logins = new Map()\n\n // error写进file\n\n if (!wsOpened) {\n console.error('[realtime] ws open failed with ws event: error', event)\n reject(event)\n } else {\n console.error('[realtime] ws event: error', event)\n\n this.clearHeartbeat()\n this.virtualWSClient.forEach(client => client.closeWithError(new CloudSDKError({\n errCode: ERR_CODE.SDK_DATABASE_REALTIME_LISTENER_WEBSOCKET_CONNECTION_ERROR as string,\n errMsg: event,\n })))\n }\n }\n\n // TODO: reconnect\n this.ws.onclose = (closeEvent) => {\n console.warn('[realtime] ws event: close', closeEvent)\n // all logins are invalid after disconnection\n this.logins = new Map()\n\n this.clearHeartbeat()\n switch (closeEvent.code) {\n case CloseEventCode.ReconnectWebSocket: {\n // just ignore\n break\n }\n case CloseEventCode.NoRealtimeListeners: {\n // quit\n break\n }\n case CloseEventCode.HeartbeatPingError:\n case CloseEventCode.HeartbeatPongTimeoutError:\n case CloseEventCode.NormalClosure:\n case CloseEventCode.AbnormalClosure: {\n // Normal Closure and Abnormal Closure:\n // expected closure, most likely dispatched by wechat client,\n // since this is the status code dispatched in case of network failure,\n // we should retry\n\n if (this.maxReconnect > 0) {\n this.initWebSocketConnection(true, this.maxReconnect)\n } else {\n this.closeAllClients(getWSCloseError(closeEvent.code))\n }\n break\n }\n case CloseEventCode.NoAuthentication: {\n this.closeAllClients(getWSCloseError(closeEvent.code, closeEvent.reason))\n break\n }\n default: {\n // we should retry by default\n if (this.maxReconnect > 0) {\n this.initWebSocketConnection(true, this.maxReconnect)\n } else {\n this.closeAllClients(getWSCloseError(closeEvent.code))\n }\n }\n }\n }\n\n this.ws.onmessage = (res) => {\n // 支付宝小程序会返回res.data.data或res.message\n // 微信小程序返回res.data\n const rawMsg = res.data?.data || res.data\n\n // reset & restart heartbeat\n this.heartbeat()\n\n let msg: IResponseMessage\n\n try {\n msg = typeof rawMsg === 'string' ? JSON.parse(rawMsg as string) : rawMsg\n } catch (e) {\n throw new Error(`[realtime] onMessage parse res.data error: ${e}`)\n }\n\n if (msg.msgType === 'ERROR') {\n // 找到当前监听,并将error返回\n let virtualWatch = null\n this.virtualWSClient.forEach((item) => {\n if (item.watchId === msg.watchId) {\n virtualWatch = item\n }\n })\n\n if (virtualWatch) {\n virtualWatch.listener.onError(msg)\n }\n }\n\n const responseWaitSpec = this.wsResponseWait.get(msg.requestId)\n if (responseWaitSpec) {\n try {\n if (msg.msgType === 'ERROR') {\n responseWaitSpec.reject(new RealtimeErrorMessageError(msg))\n } else {\n responseWaitSpec.resolve(msg)\n }\n } catch (e) {\n console.error(\n 'ws onMessage responseWaitSpec.resolve(msg) errored:',\n e\n )\n } finally {\n this.wsResponseWait.delete(msg.requestId)\n }\n if (responseWaitSpec.skipOnMessage) {\n return\n }\n }\n\n if (msg.msgType === 'PONG') {\n if (this.lastPingSendTS) {\n const rtt = Date.now() - this.lastPingSendTS\n if (rtt > DEFAULT_UNTRUSTED_RTT_THRESHOLD) {\n console.warn(`[realtime] untrusted rtt observed: ${rtt}`)\n return\n }\n if (this.rttObserved.length >= MAX_RTT_OBSERVED) {\n this.rttObserved.splice(\n 0,\n this.rttObserved.length - MAX_RTT_OBSERVED + 1\n )\n }\n this.rttObserved.push(rtt)\n }\n return\n }\n\n let client = msg.watchId && this.watchIdClientMap.get(msg.watchId)\n if (client) {\n client.onMessage(msg)\n } else {\n console.error(\n `[realtime] no realtime listener found responsible for watchId ${msg.watchId}: `,\n msg\n )\n switch (msg.msgType) {\n case 'INIT_EVENT':\n case 'NEXT_EVENT':\n case 'CHECK_EVENT': {\n client = this.queryIdClientMap.get(msg.msgData.queryID)\n if (client) {\n client.onMessage(msg)\n }\n break\n }\n default: {\n for (const [, client] of Array.from(this.watchIdClientMap.entries())) {\n client.onMessage(msg)\n break\n }\n }\n }\n }\n }\n\n this.heartbeat()\n })\n\n private isWSConnected = (): boolean => Boolean(this.ws && this.ws.readyState === WS_READY_STATE.OPEN)\n\n private onceWSConnected = async (): Promise<void> => {\n if (this.isWSConnected()) {\n return\n }\n\n if (this.wsInitPromise !== null && this.wsInitPromise !== undefined) {\n return this.wsInitPromise\n }\n\n return new Promise<void>((resolve, reject) => {\n this.wsReadySubsribers.push({\n resolve,\n reject,\n })\n })\n }\n\n private webLogin = async (\n envId?: string,\n refresh?: boolean\n ): Promise<any> => {\n if (!refresh) {\n if (envId) {\n const loginInfo = this.logins.get(envId)\n if (loginInfo) {\n if (loginInfo.loggedIn && loginInfo.loginResult) {\n return loginInfo.loginResult\n } if (loginInfo.loggingInPromise !== null && loginInfo.loggingInPromise !== undefined) {\n return loginInfo.loggingInPromise\n }\n }\n } else {\n const emptyEnvLoginInfo = this.logins.get('')\n if (emptyEnvLoginInfo?.loggingInPromise !== null && emptyEnvLoginInfo?.loggingInPromise !== undefined) {\n return emptyEnvLoginInfo.loggingInPromise\n }\n }\n }\n\n const promise = new Promise<ILoginResult>((resolve, reject) => {\n (async () => {\n try {\n const wsSign = await this.getWsSign()\n\n const msgData: IRequestMessageLoginData = {\n envId: wsSign.envId || '',\n accessToken: '', // 已废弃字段\n referrer: 'web',\n sdkVersion: '',\n dataVersion: '',\n }\n const loginMsg: IRequestMessageLoginMsg = {\n watchId: undefined,\n requestId: genRequestId(),\n msgType: 'LOGIN',\n msgData,\n exMsgData: {\n runtime: getRuntime(),\n signStr: wsSign.signStr,\n secretVersion: wsSign.secretVersion,\n },\n }\n const loginResMsg = await this.send<IResponseMessageLoginResMsg>({\n msg: loginMsg,\n waitResponse: true,\n skipOnMessage: true,\n timeout: DEFAULT_LOGIN_TIMEOUT,\n })\n\n if (!loginResMsg.msgData.code) {\n // login success\n resolve({\n envId: wsSign.envId,\n })\n } else {\n // login failed\n reject(new Error(`${loginResMsg.msgData.code} ${loginResMsg.msgData.message}`))\n }\n } catch (e) {\n reject(e)\n }\n })()\n })\n\n let loginInfo = envId && this.logins.get(envId)\n\n const loginStartTS = Date.now()\n\n if (loginInfo) {\n loginInfo.loggedIn = false\n loginInfo.loggingInPromise = promise\n loginInfo.loginStartTS = loginStartTS\n } else {\n loginInfo = {\n loggedIn: false,\n loggingInPromise: promise,\n loginStartTS,\n }\n this.logins.set(envId || '', loginInfo)\n }\n\n try {\n const loginResult = await promise\n const curLoginInfo = envId && this.logins.get(envId)\n if (\n curLoginInfo\n && curLoginInfo === loginInfo\n && curLoginInfo.loginStartTS === loginStartTS\n ) {\n loginInfo.loggedIn = true\n loginInfo.loggingInPromise = undefined\n loginInfo.loginStartTS = undefined\n loginInfo.loginResult = loginResult\n return loginResult\n } if (curLoginInfo) {\n if (curLoginInfo.loggedIn && curLoginInfo.loginResult) {\n return curLoginInfo.loginResult\n } if (curLoginInfo.loggingInPromise !== null && curLoginInfo.loggingInPromise !== undefined) {\n return curLoginInfo.loggingInPromise\n }\n throw new Error('ws unexpected login info')\n } else {\n throw new Error('ws login info reset')\n }\n } catch (e) {\n loginInfo.loggedIn = false\n loginInfo.loggingInPromise = undefined\n loginInfo.loginStartTS = undefined\n loginInfo.loginResult = undefined\n throw e\n }\n }\n\n private getWsSign = async (): Promise<IWsSign> => {\n if (this.wsSign && this.wsSign.expiredTs > Date.now()) {\n return this.wsSign\n }\n const expiredTs = Date.now() + 60000\n const res = await this.context.appConfig.request.send('auth.wsWebSign', { runtime: getRuntime() })\n\n if (res.code) {\n throw new Error(`[tcb-js-sdk] 获取实时数据推送登录票据失败: ${res.code}`)\n }\n\n if (res.data) {\n const { signStr, wsUrl, secretVersion, envId } = res.data\n return {\n signStr,\n wsUrl,\n secretVersion,\n envId,\n expiredTs,\n }\n }\n throw new Error('[tcb-js-sdk] 获取实时数据推送登录票据失败')\n }\n\n private getWaitExpectedTimeoutLength = () => {\n if (!this.rttObserved.length) {\n return DEFAULT_EXPECTED_EVENT_WAIT_TIME\n }\n\n // 1.5 * RTT\n return (\n (this.rttObserved.reduce((acc, cur) => acc + cur)\n / this.rttObserved.length)\n * 1.5\n )\n }\n\n private heartbeat(immediate?: boolean) {\n this.clearHeartbeat()\n // @ts-ignore\n this.pingTimeoutId = setTimeout(\n () => {\n (\n async () => {\n try {\n if (!this.ws || this.ws.readyState !== WS_READY_STATE.OPEN) {\n // no need to ping\n return\n }\n\n this.lastPingSendTS = Date.now()\n await this.ping()\n this.pingFailed = 0\n\n // @ts-ignore\n this.pongTimeoutId = setTimeout(() => {\n console.error('pong timed out')\n if (this.pongMissed < DEFAULT_PONG_MISS_TOLERANCE) {\n this.pongMissed += 1\n this.heartbeat(true)\n } else {\n // logical perceived connection lost, even though websocket did not receive error or close event\n this.initWebSocketConnection(true)\n }\n }, this.context.appConfig.realtimePongWaitTimeout)\n } catch (e) {\n if (this.pingFailed < DEFAULT_PING_FAIL_TOLERANCE) {\n this.pingFailed += 1\n this.heartbeat()\n } else {\n this.close(CloseEventCode.HeartbeatPingError)\n }\n }\n }\n )()\n },\n immediate ? 0 : this.context.appConfig.realtimePingInterval\n )\n }\n\n private ping = async () => {\n const msg: IRequestMessagePingMsg = {\n watchId: undefined,\n requestId: genRequestId(),\n msgType: 'PING',\n msgData: null,\n }\n await this.send({\n msg,\n })\n }\n\n private onWatchStart = (client: VirtualWebSocketClient, queryID: string) => {\n this.queryIdClientMap.set(queryID, client)\n }\n\n private onWatchClose = (client: VirtualWebSocketClient, queryID: string) => {\n if (queryID) {\n this.queryIdClientMap.delete(queryID)\n }\n this.watchIdClientMap.delete(client.watchId)\n this.virtualWSClient.delete(client)\n\n if (!this.virtualWSClient.size) {\n // no more existing watch, we should release the websocket connection\n this.close(CloseEventCode.NoRealtimeListeners)\n }\n }\n}\n","import { ERR_CODE, CloudSDKError } from './error'\n\nexport const CLOSE_EVENT_CODE_INFO = {\n 1000: {\n code: 1000,\n name: 'Normal Closure',\n description:\n 'Normal closure; the connection successfully completed whatever purpose for which it was created.',\n },\n 1001: {\n code: 1001,\n name: 'Going Away',\n description:\n 'The endpoint is going away, either because of a server failure or because the browser is navigating away from the page that opened the connection.',\n },\n 1002: {\n code: 1002,\n name: 'Protocol Error',\n description:\n 'The endpoint is terminating the connection due to a protocol error.',\n },\n 1003: {\n code: 1003,\n name: 'Unsupported Data',\n description:\n 'The connection is being terminated because the endpoint received data of a type it cannot accept (for example, a text-only endpoint received binary data).',\n },\n 1005: {\n code: 1005,\n name: 'No Status Received',\n description:\n 'Indicates that no status code was provided even though one was expected.',\n },\n 1006: {\n code: 1006,\n name: 'Abnormal Closure',\n description:\n 'Used to indicate that a connection was closed abnormally (that is, with no close frame being sent) when a status code is expected.',\n },\n 1007: {\n code: 1007,\n name: 'Invalid frame payload data',\n description:\n 'The endpoint is terminating the connection because a message was received that contained inconsistent data (e.g., non-UTF-8 data within a text message).',\n },\n 1008: {\n code: 1008,\n name: 'Policy Violation',\n description:\n 'The endpoint is terminating the connection because it received a message that violates its policy. This is a generic status code, used when codes 1003 and 1009 are not suitable.',\n },\n 1009: {\n code: 1009,\n name: 'Message too big',\n description:\n 'The endpoint is terminating the connection because a data frame was received that is too large.',\n },\n 1010: {\n code: 1010,\n name: 'Missing Extension',\n description:\n 'The client is terminating the connection because it expected the server to negotiate one or more extension, but the server didn\\'t.',\n },\n 1011: {\n code: 1011,\n name: 'Internal Error',\n description:\n 'The server is terminating the connection because it encountered an unexpected condition that prevented it from fulfilling the request.',\n },\n 1012: {\n code: 1012,\n name: 'Service Restart',\n description:\n 'The server is terminating the connection because it is restarting.',\n },\n 1013: {\n code: 1013,\n name: 'Try Again Later',\n description:\n 'The server is terminating the connection due to a temporary condition, e.g. it is overloaded and is casting off some of its clients.',\n },\n 1014: {\n code: 1014,\n name: 'Bad Gateway',\n description:\n 'The server was acting as a gateway or proxy and received an invalid response from the upstream server. This is similar to 502 HTTP Status Code.',\n },\n 1015: {\n code: 1015,\n name: 'TLS Handshake',\n description:\n 'Indicates that the connection was closed due to a failure to perform a TLS handshake (e.g., the server certificate can\\'t be verified).',\n },\n // custom\n 3000: {\n code: 3000,\n name: 'Reconnect WebSocket',\n description:\n 'The client is terminating the connection because it wants to reconnect',\n },\n 3001: {\n code: 3001,\n name: 'No Realtime Listeners',\n description:\n 'The client is terminating the connection because no more realtime listeners exist',\n },\n 3002: {\n code: 3002,\n name: 'Heartbeat Ping Error',\n description:\n 'The client is terminating the connection due to its failure in sending heartbeat messages',\n },\n 3003: {\n code: 3003,\n name: 'Heartbeat Pong Timeout Error',\n description:\n 'The client is terminating the connection because no heartbeat response is received from the server',\n },\n 3050: {\n code: 3050,\n name: 'Server Close',\n description:\n 'The client is terminating the connection because no heartbeat response is received from the server',\n },\n}\n\nexport enum CloseEventCode {\n // spec\n NormalClosure = 1000,\n GoingAway = 1001,\n ProtocolError = 1002,\n UnsupportedData = 1003,\n NoStatusReceived = 1005,\n AbnormalClosure = 1006,\n InvalidFramePayloadData = 1007,\n PolicyViolation = 1008,\n MessageTooBig = 1009,\n MissingExtension = 1010,\n InternalError = 1011,\n ServiceRestart = 1012,\n TryAgainLater = 1013,\n BadGateway = 1014,\n TLSHandshake = 1015,\n // custom - client close itself\n ReconnectWebSocket = 3000,\n NoRealtimeListeners = 3001,\n HeartbeatPingError = 3002,\n HeartbeatPongTimeoutError = 3003,\n // custom - server close\n NoAuthentication = 3050\n}\n\nexport const getWSCloseError = (code: CloseEventCode, reason?: string) => {\n const info = CLOSE_EVENT_CODE_INFO[code]\n const errMsg = !info\n ? `code ${code}`\n : `${info.name}, code ${code}, reason ${reason || info.description}`\n return new CloudSDKError({\n errCode: ERR_CODE.SDK_DATABASE_REALTIME_LISTENER_WEBSOCKET_CONNECTION_CLOSED as string,\n errMsg,\n })\n}\n","import { ICloudbase } from '@cloudbase/types'\nimport { ICloudbaseComponent } from '@cloudbase/types/component'\nimport { Camelize, FileBody, FileObject, FileObjectV2, FileOptions, TransformOptions } from './supabase/types'\nimport { isStorageError, StorageError } from './supabase/errors'\nimport { constants, utils, helpers } from '@cloudbase/utilities'\nimport {\n ICloudbaseFileMetaDataRes,\n ICloudbaseFileInfo,\n ICloudbaseUploadFileParams,\n ICloudbaseUploadFileResult,\n ICloudbaseGetUploadMetadataParams,\n ICloudbaseDeleteFileParams,\n ICloudbaseDeleteFileResult,\n ICloudbaseGetTempFileURLResult,\n ICloudbaseGetTempFileURLParams,\n ICloudbaseDownloadFileResult,\n ICloudbaseDownloadFileParams,\n ICloudbaseCopyFileParams,\n ICloudbaseCopyFileResult,\n} from '@cloudbase/types/storage'\n\nenum EUploadMethod {\n put = 'put',\n post = 'post',\n}\n\ninterface IUploadMetadata {\n url: string\n token: string\n authorization: string\n fileId: string\n cosFileId: string\n download_url?: string\n}\n\nconst { getSdkName, ERRORS, COMMUNITY_SITE_URL } = constants\nconst { isArray, isString, isPalinObject, execCallback } = utils\n/** catchErrorsDecorator 装饰器要放在index入口文件,意面有的编译找不到其sourcemap,例如HBuilderX */\nconst { catchErrorsDecorator } = helpers\n\nexport const COMPONENT_NAME = 'storage'\n\nconst storageGateWay = {\n getUploadInfo: async (\n request,\n params: { path: string; headers?: Record<string, string> },\n customReqOpts: ICloudbaseUploadFileParams['customReqOpts'],\n ) => {\n let res = await request.gateWay(\n {\n path: 'storages',\n name: 'get-objects-upload-info',\n data: [\n {\n objectId: params.path,\n ...(params.headers ? { signedHeader: Object.keys(params.headers).reduce((res, v) => ({ ...res, [v]: [params.headers[v]] }), {}) } : {}),\n },\n ],\n },\n customReqOpts,\n )\n const data = res.data?.[0] || {}\n\n res = {\n ...res,\n data: {\n ...(data.code ? { ...data } : {}),\n authorization: data.authorization,\n token: data.token,\n url: data.uploadUrl,\n fileId: data.cloudObjectId,\n cosFileId: data.cloudObjectMeta,\n download_url: data.downloadUrl,\n },\n }\n\n return res\n },\n getDownLoadInfo: async (\n request,\n params: { convertedFileList: Array<{ fileid: string }> },\n customReqOpts: ICloudbaseUploadFileParams['customReqOpts'],\n ) => {\n let res = await request.gateWay(\n {\n path: 'storages',\n name: 'get-objects-download-info',\n data: params.convertedFileList.map((v: any) => ({ cloudObjectId: v.fileid })),\n },\n customReqOpts,\n )\n res = {\n ...res,\n data: {\n download_list: res.data?.map(v => ({\n code: v.code || 'SUCCESS',\n message: v.message,\n fileid: v.cloudObjectId,\n download_url: v.downloadUrl,\n fileID: v.cloudObjectId,\n tempFileURL: v.downloadUrl,\n })),\n },\n }\n\n return res\n },\n delete: async (\n request,\n params: { fileList: Array<string> },\n customReqOpts: ICloudbaseUploadFileParams['customReqOpts'],\n ) => {\n let res = await request.gateWay(\n {\n path: 'storages',\n name: 'delete-objects',\n data: params.fileList.map(v => ({ cloudObjectId: v })),\n },\n customReqOpts,\n )\n res = {\n ...res,\n data: {\n delete_list: res.data?.map(v => ({\n code: v.code || 'SUCCESS',\n fileID: v.cloudObjectId,\n message: v.message,\n })),\n },\n }\n\n return res\n },\n copyFile: async (\n request,\n params: {\n convertedFileList: Array<{ src_path: string; dst_path: string; overwrite: boolean; remove_original: boolean }>\n },\n customReqOpts: ICloudbaseUploadFileParams['customReqOpts'],\n ) => {\n let res = await request.gateWay(\n {\n path: 'storages',\n name: 'copy-objects',\n data: params.convertedFileList.map((v: any) => ({\n srcPath: v.src_path,\n dstPath: v.dst_path,\n overwrite: v.overwrite,\n removeOriginal: v.remove_original,\n })),\n },\n customReqOpts,\n )\n res = {\n ...res,\n data: {\n copy_list: res.data?.map(v => ({\n code: v.code || 'SUCCESS',\n fileID: v.cloudObjectId,\n message: v.message,\n })),\n },\n }\n\n return res\n },\n}\n\nexport interface ICloudbaseContext {\n config: any\n request: any\n}\n\nexport class CloudbaseStorage {\n public isGateWay() {\n // @ts-ignore\n const { config } = this\n const endPointMode = config.endPointMode || 'CLOUD_API'\n\n return endPointMode === 'GATEWAY'\n }\n\n @catchErrorsDecorator({\n customInfo: {\n className: 'Cloudbase',\n methodName: 'uploadFile',\n },\n title: '上传文件失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 uploadFile() 的语法或参数是否正确',\n ' 2 - 当前域名是否在安全域名列表中:https://console.cloud.tencent.com/tcb/env/safety',\n ' 3 - 云存储安全规则是否限制了当前登录状态访问',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async uploadFile(\n params: Omit<ICloudbaseUploadFileParams, 'filePath'> & { filePath?: string },\n callback?: Function,\n ): Promise<ICloudbaseUploadFileResult> {\n const { cloudPath, filePath, onUploadProgress, method = 'put', headers = {}, fileContent } = params\n if (!isString(cloudPath) || (!filePath && !fileContent)) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.uploadFile] invalid params`,\n }),)\n }\n const uploadMethod = { put: EUploadMethod.put, post: EUploadMethod.post }[method.toLocaleLowerCase()] || EUploadMethod.put\n\n // 调用 getUploadMetadata 获取上传元数据\n const metadataResult = await this.getUploadMetadata({\n cloudPath,\n method: uploadMethod,\n headers: uploadMethod === EUploadMethod.put ? headers : undefined,\n customReqOpts: params.customReqOpts,\n })\n\n const { data: metadata, requestId } = metadataResult\n const { url, authorization, token, fileId, cosFileId, download_url: downloadUrl } = metadata\n\n const commonParams = {\n url,\n file: filePath,\n name: cloudPath,\n onUploadProgress,\n fileContent,\n fileId,\n requestId,\n }\n\n const putParams = {\n ...commonParams,\n method: EUploadMethod.put,\n headers: {\n ...headers,\n authorization,\n 'x-cos-meta-fileid': cosFileId,\n 'x-cos-security-token': token,\n },\n }\n\n const postParams = {\n ...commonParams,\n method: EUploadMethod.post,\n data: {\n key: cloudPath,\n signature: authorization,\n 'x-cos-meta-fileid': cosFileId,\n success_action_status: '201',\n 'x-cos-security-token': token,\n },\n }\n\n const uploadConfig = {\n [EUploadMethod.put]: {\n params: putParams,\n isSuccess: (code: number) => code >= 200 && code < 300,\n },\n [EUploadMethod.post]: {\n params: postParams,\n isSuccess: (code: number) => code === 201,\n },\n }\n\n // @ts-ignore\n const res = await this.request.upload(uploadConfig[uploadMethod].params)\n\n if (uploadConfig[uploadMethod].isSuccess(res.statusCode)) {\n return execCallback(callback, null, {\n fileID: fileId,\n download_url: downloadUrl,\n requestId,\n })\n }\n return execCallback(\n callback,\n new Error(`[${getSdkName()}][${ERRORS.OPERATION_FAIL}][${COMPONENT_NAME}]:${res.data}`),\n )\n }\n @catchErrorsDecorator({\n customInfo: {\n className: 'Cloudbase',\n methodName: 'getUploadMetadata',\n },\n title: '获取上传元信息失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 getUploadMetadata() 的语法或参数是否正确',\n ' 2 - 当前域名是否在安全域名列表中:https://console.cloud.tencent.com/tcb/env/safety',\n ' 3 - 云存储安全规则是否限制了当前登录状态访问',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async getUploadMetadata(\n params: ICloudbaseGetUploadMetadataParams & {\n method?: EUploadMethod\n headers?: Record<string, string>\n },\n callback?: Function,\n ): Promise<{ data: IUploadMetadata; requestId: string }> {\n const { cloudPath, method, headers } = params\n if (!isString(cloudPath)) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.getUploadMetadata] invalid cloudPath`,\n }),)\n }\n // @ts-ignore\n const { request } = this\n const action = 'storage.getUploadMetadata'\n\n try {\n let metaData: ICloudbaseFileMetaDataRes\n\n const metaDataParam: {\n path: string\n method?: EUploadMethod\n headers?: Record<string, string>\n } = { path: cloudPath }\n\n if (method) {\n metaDataParam.method = method\n }\n if (method === EUploadMethod.put && headers) {\n metaDataParam.headers = headers\n }\n\n if (this.isGateWay()) {\n metaData = await storageGateWay.getUploadInfo(request, metaDataParam, params.customReqOpts)\n } else {\n metaData = await request.send(action, metaDataParam, params.customReqOpts)\n }\n return execCallback(callback, null, metaData)\n } catch (err) {\n return execCallback(callback, err)\n }\n }\n @catchErrorsDecorator({\n customInfo: {\n className: 'Cloudbase',\n methodName: 'deleteFile',\n },\n title: '删除文件失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 deleteFile() 的语法或参数是否正确',\n ' 2 - 当前域名是否在安全域名列表中:https://console.cloud.tencent.com/tcb/env/safety',\n ' 3 - 云存储安全规则是否限制了当前登录状态访问',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async deleteFile(\n params: ICloudbaseDeleteFileParams,\n callback?: Function,\n ): Promise<ICloudbaseDeleteFileResult> {\n const { fileList } = params\n\n if (!fileList || !isArray(fileList) || fileList.length === 0) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.deleteFile] fileList must not be empty`,\n }),)\n }\n\n for (const fileId of fileList) {\n if (!fileId || !isString(fileId)) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.deleteFile] fileID must be string`,\n }),)\n }\n }\n\n const action = 'storage.batchDeleteFile'\n // @ts-ignore\n const { request } = this\n let res: any = {}\n\n if (this.isGateWay()) {\n res = await storageGateWay.delete(request, { fileList }, params.customReqOpts)\n } else {\n res = await request.send(\n action,\n {\n fileid_list: fileList,\n },\n params.customReqOpts,\n )\n }\n\n if (res.code) {\n return execCallback(callback, null, res)\n }\n const data = {\n fileList: res.data.delete_list,\n requestId: res.requestId,\n }\n return execCallback(callback, null, data)\n }\n @catchErrorsDecorator({\n customInfo: {\n className: 'Cloudbase',\n methodName: 'getTempFileURL',\n },\n title: '获取文件下载链接',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 getTempFileURL() 的语法或参数是否正确',\n ' 2 - 当前域名是否在安全域名列表中:https://console.cloud.tencent.com/tcb/env/safety',\n ' 3 - 云存储安全规则是否限制了当前登录状态访问',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async getTempFileURL(\n params: ICloudbaseGetTempFileURLParams,\n callback?: Function,\n ): Promise<ICloudbaseGetTempFileURLResult> {\n const { fileList } = params\n\n if (!fileList || !isArray(fileList) || fileList.length === 0) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.getTempFileURL] fileList must not be empty`,\n }),)\n }\n\n const convertedFileList = []\n for (const file of fileList) {\n if (isPalinObject(file)) {\n if (!Object.prototype.hasOwnProperty.call(file, 'fileID')) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.getTempFileURL] file info must include fileID`,\n }),)\n }\n\n convertedFileList.push({\n fileid: (file as ICloudbaseFileInfo).fileID,\n max_age: (file as ICloudbaseFileInfo).maxAge || 7200,\n })\n } else if (isString(file)) {\n convertedFileList.push({\n fileid: file,\n })\n } else {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.getTempFileURL] invalid fileList`,\n }),)\n }\n }\n\n const action = 'storage.batchGetDownloadUrl'\n // @ts-ignore\n const { request } = this\n let res: any = {}\n\n if (this.isGateWay()) {\n res = await storageGateWay.getDownLoadInfo(request, { convertedFileList }, params.customReqOpts)\n } else {\n res = await request.send(action, { file_list: convertedFileList }, params.customReqOpts)\n }\n\n if (res.code) {\n return execCallback(callback, null, res)\n }\n\n return execCallback(callback, null, {\n fileList: res.data.download_list,\n requestId: res.requestId,\n })\n }\n @catchErrorsDecorator({\n customInfo: {\n className: 'Cloudbase',\n methodName: 'downloadFile',\n },\n title: '下载文件失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 downloadFile() 的语法或参数是否正确',\n ' 2 - 当前域名是否在安全域名列表中:https://console.cloud.tencent.com/tcb/env/safety',\n ' 3 - 云存储安全规则是否限制了当前登录状态访问',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async downloadFile(\n params: ICloudbaseDownloadFileParams,\n callback?: Function,\n ): Promise<ICloudbaseDownloadFileResult> {\n const { fileID } = params\n if (!isString(fileID)) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.getTempFileURL] fileID must be string`,\n }),)\n }\n\n const tmpUrlRes = await this.getTempFileURL.call(this, {\n fileList: [\n {\n fileID,\n maxAge: 600,\n },\n ],\n customReqOpts: params.customReqOpts,\n })\n\n const res = tmpUrlRes.fileList[0]\n\n if (res.code !== 'SUCCESS') {\n return execCallback(callback, res)\n }\n // @ts-ignore\n const { request } = this\n\n const tmpUrl = encodeURI(res.download_url)\n\n const result = await request.download({ url: tmpUrl, tempFilePath: params.tempFilePath })\n return execCallback(callback, null, result)\n }\n @catchErrorsDecorator({\n customInfo: {\n className: 'Cloudbase',\n methodName: 'copyFile',\n },\n title: '批量复制文件',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 copyFile() 的语法或参数是否正确',\n ' 2 - 当前域名是否在安全域名列表中:https://console.cloud.tencent.com/tcb/env/safety',\n ' 3 - 云存储安全规则是否限制了当前登录状态访问',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async copyFile(params: ICloudbaseCopyFileParams, callback?: Function): Promise<ICloudbaseCopyFileResult> {\n const { fileList } = params\n\n if (!fileList || !isArray(fileList) || fileList.length === 0) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.copyFile] fileList must not be empty`,\n }),)\n }\n\n const convertedFileList = []\n\n for (const file of fileList) {\n const { srcPath, dstPath } = file\n if (!srcPath || !dstPath || typeof srcPath !== 'string' || typeof dstPath !== 'string') {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.copyFile] srcPath and dstPath may not be empty`,\n }),)\n }\n if (srcPath === dstPath) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.copyFile] srcPath and dstPath can not be the same`,\n }),)\n }\n // if (basename(srcPath) !== basename(dstPath)) {\n // throw new Error(JSON.stringify({\n // code: ERRORS.INVALID_PARAMS,\n // msg: `[${COMPONENT_NAME}.copyFile] srcPath and dstPath file name must be the same`,\n // }),)\n // }\n convertedFileList.push({\n src_path: srcPath,\n dst_path: dstPath,\n overwrite: file.overwrite,\n remove_original: file.removeOriginal,\n })\n }\n\n // @ts-ignore\n const { request } = this\n let res: any = {}\n\n if (this.isGateWay()) {\n res = await storageGateWay.copyFile(request, { convertedFileList }, params.customReqOpts)\n } else {\n const action = 'storage.batchCopyFile'\n res = await request.send(action, { file_list: convertedFileList }, params.customReqOpts)\n }\n\n if (res.code) {\n return execCallback(callback, null, res)\n }\n\n return execCallback(callback, null, {\n fileList: res.data.copy_list,\n requestId: res.requestId,\n })\n }\n\n public async getFileInfo(params: ICloudbaseGetTempFileURLParams): Promise<{\n fileList: (Pick<ICloudbaseGetTempFileURLResult['fileList'][0], 'code' | 'fileID' | 'tempFileURL' | 'message'> & {\n fileName?: string\n cloudId?: ICloudbaseGetTempFileURLResult['fileList'][0]['fileID']\n contentType?: string\n mime?: string\n size?: number\n cacheControl?: string\n lastModified?: string\n etag?: string\n })[]\n requestId: string\n }> {\n const fileInfo = await this.getTempFileURL(params)\n\n if (fileInfo?.fileList && fileInfo?.fileList?.length > 0) {\n const fileList = await Promise.all(fileInfo.fileList.map(async (item: ICloudbaseGetTempFileURLResult['fileList'][0]) => {\n if (item.code !== 'SUCCESS') {\n return {\n code: item.code,\n fileID: item.fileID,\n tempFileURL: item.tempFileURL,\n message: item.message,\n }\n }\n\n try {\n // @ts-ignore\n const { request } = this\n const res = await request.fetch({ url: item.tempFileURL, method: 'HEAD' })\n let { header } = res\n\n if (Headers && header instanceof Headers) {\n header = Object.fromEntries(res.header.entries())\n }\n // eslint-disable-next-line radix\n const fileSize = parseInt(header['content-length']) || 0\n const contentType = header['content-type'] || ''\n\n if ([400, 404].includes(Number(res.statusCode))) {\n return {\n code: 'FILE_NOT_FOUND',\n fileID: item.fileID,\n tempFileURL: item.tempFileURL,\n message: 'file not found',\n }\n }\n\n const fileInfo = {\n code: item.code,\n fileID: item.fileID,\n tempFileURL: item.tempFileURL,\n cloudId: item.fileID,\n fileName: item.fileID.split('/').pop(),\n contentType,\n mime: contentType.split(';')[0].trim(),\n size: fileSize,\n etag: header.etag || '',\n lastModified: header['last-modified'] || '',\n cacheControl: header['cache-control'] || '',\n }\n\n return fileInfo\n } catch (e) {\n return {\n code: 'FETCH_FILE_INFO_ERROR',\n fileID: item.fileID,\n tempFileURL: item.tempFileURL,\n message: e.message,\n }\n }\n }),)\n\n return {\n fileList,\n requestId: fileInfo.requestId,\n }\n }\n\n return {\n fileList: [],\n requestId: fileInfo.requestId,\n }\n }\n}\n\n\ndeclare const cloudbase: ICloudbase\n\nconst storage = new CloudbaseStorage()\nconst component: ICloudbaseComponent = {\n name: COMPONENT_NAME,\n entity: {\n uploadFile: storage.uploadFile,\n deleteFile: storage.deleteFile,\n getTempFileURL: storage.getTempFileURL,\n downloadFile: storage.downloadFile,\n getUploadMetadata: storage.getUploadMetadata,\n copyFile: storage.copyFile,\n getFileInfo: storage.getFileInfo,\n isGateWay: storage.isGateWay,\n },\n}\n\nexport class SupabaseFileAPILikeStorage extends CloudbaseStorage {\n private shouldThrowOnError = false\n private bucketId = ''\n private context: ICloudbaseContext\n\n constructor(context?: ICloudbaseContext) {\n super()\n this.context = context\n }\n\n get config() {\n // @ts-ignore\n return this.context?.config\n }\n\n get request() {\n // @ts-ignore\n return this.context?.request\n }\n\n throwOnError(): this {\n this.shouldThrowOnError = true\n return this\n }\n\n from(bucket?: string) {\n this.bucketId = bucket || ''\n return this\n }\n\n async upload(\n path: string,\n fileBody: FileBody,\n fileOptions?: FileOptions,\n ): Promise<\n { data: { id: string; path: string; fullPath: string }; error: null } | { data: null; error: StorageError }\n > {\n const options = { upsert: true, ...fileOptions }\n const { cacheControl, contentType, metadata } = options\n try {\n const cloudPath = this._getCloudPath(path)\n const uploadFileParams: Parameters<CloudbaseStorage['uploadFile']>[0] = {\n cloudPath,\n filePath: fileBody as any,\n }\n\n if (cacheControl || contentType || metadata) {\n const headers = {}\n if (cacheControl) {\n headers['cache-control'] = cacheControl\n }\n if (contentType) {\n headers['content-type'] = contentType\n }\n\n if (metadata) {\n headers['x-cos-metadata-metadata'] = this.toBase64(JSON.stringify(metadata))\n }\n\n uploadFileParams.headers = headers\n }\n\n const result = await this.uploadFile(uploadFileParams)\n\n // IUploadFileRes 没有 code 字段,如果没有 fileID 则表示失败\n if (!result.fileID) {\n throw new Error(JSON.stringify({\n code: ERRORS.OPERATION_FAIL,\n msg: `[${COMPONENT_NAME}.update] no fileID returned`,\n }),)\n }\n\n return {\n data: {\n id: result.fileID,\n path,\n fullPath: path,\n },\n error: null,\n }\n } catch (error: any) {\n if (this.shouldThrowOnError) throw error\n if (isStorageError(error)) {\n return {\n data: null,\n error,\n }\n }\n throw error\n }\n }\n\n async uploadToSignedUrl(\n path: string,\n _token: string,\n fileBody: FileBody,\n fileOptions?: FileOptions,\n ): Promise<\n { data: { id: string; path: string; fullPath: string }; error: null } | { data: null; error: StorageError }\n > {\n return this.upload(path, fileBody, fileOptions)\n }\n\n async createSignedUploadUrl(path: string): Promise<\n | {\n data: {\n signedUrl: string\n token: string\n path: string\n // CloudBase 额外的元数据字段\n authorization?: string\n id?: string\n cosFileId?: string\n downloadUrl?: string\n }\n error: null\n }\n | { data: null; error: StorageError }\n > {\n try {\n const cloudPath = this._getCloudPath(path)\n\n const { data: metadata } = await this.getUploadMetadata({ cloudPath })\n\n return {\n data: {\n signedUrl: metadata.url,\n token: metadata.token,\n path,\n // 返回 CloudBase 的额外元数据,供 uploadToSignedUrl 使用\n authorization: metadata.authorization,\n id: metadata.fileId,\n cosFileId: metadata.cosFileId,\n downloadUrl: metadata.download_url,\n },\n error: null,\n }\n } catch (error: any) {\n if (this.shouldThrowOnError) throw error\n return {\n data: null,\n error: error instanceof StorageError ? error : new StorageError(error.message),\n }\n }\n }\n\n async update(\n path: string,\n fileBody: FileBody,\n fileOptions?: FileOptions,\n ): Promise<\n { data: { id: string; path: string; fullPath: string }; error: null } | { data: null; error: StorageError }\n > {\n return this.upload(path, fileBody, { ...fileOptions, upsert: true })\n }\n\n async move(\n fromPath: string,\n toPath: string,\n // options?: DestinationOptions,\n ): Promise<{ data: { message: string }; error: null } | { data: null; error: StorageError }> {\n try {\n const result = await this.copyFile({\n fileList: [\n {\n srcPath: this._getCloudPath(fromPath),\n dstPath: this._getCloudPath(toPath),\n overwrite: true,\n removeOriginal: true,\n },\n ],\n })\n\n if (result.fileList[0].code && result.fileList[0].code !== 'SUCCESS') {\n throw new StorageError(result.fileList[0].message || 'Move failed')\n }\n\n return {\n data: { message: `File moved from ${fromPath} to ${toPath}` },\n error: null,\n }\n } catch (error: any) {\n if (this.shouldThrowOnError) throw error\n if (isStorageError(error)) {\n return {\n data: null,\n error,\n }\n }\n throw error\n }\n }\n\n async copy(\n fromPath: string,\n toPath: string,\n // options?: DestinationOptions,\n ): Promise<{ data: { path: string }; error: null } | { data: null; error: StorageError }> {\n try {\n const result = await this.copyFile({\n fileList: [\n {\n srcPath: this._getCloudPath(fromPath),\n dstPath: this._getCloudPath(toPath),\n overwrite: true,\n removeOriginal: false,\n },\n ],\n })\n\n if (result.fileList[0].code && result.fileList[0].code !== 'SUCCESS') {\n throw new StorageError(result.fileList[0].message || 'Copy failed')\n }\n\n return {\n data: { path: this._getCloudPath(toPath) },\n error: null,\n }\n } catch (error: any) {\n if (this.shouldThrowOnError) throw error\n if (isStorageError(error)) {\n return { data: null, error }\n }\n throw error\n }\n }\n\n async createSignedUrl(\n path: string,\n expiresIn: number,\n options?: {\n download?: string | boolean\n transform?: TransformOptions\n },\n ): Promise<{ data: { signedUrl: string }; error: null } | { data: null; error: StorageError }> {\n try {\n const cloudPath = this._normalizeCloudId(path)\n const result = await this.getTempFileURL({\n fileList: [\n {\n fileID: cloudPath,\n maxAge: expiresIn,\n },\n ],\n })\n\n // IGetFileUrlItem 有 code 字段但没有 message 字段\n if (result.fileList[0].code !== 'SUCCESS') {\n throw new StorageError(`Failed to create signed URL: [${result.fileList[0].code}] ${result.fileList[0].fileID}`)\n }\n\n let signedUrl = result.fileList[0].download_url\n\n // 构建查询参数\n const queryParams: string[] = []\n\n // 如果有 download 参数,添加到 URL 中\n if (options?.download !== undefined) {\n if (typeof options.download === 'string') {\n // download 是文件名\n queryParams.push(`download=${encodeURIComponent(options.download)}`)\n } else if (options.download === true) {\n // download 是 true,使用原文件名或默认值\n queryParams.push('download=true')\n }\n }\n\n // 如果有图片转换参数,添加到 URL 中\n if (options?.transform) {\n const transformQuery = this._transformOptsToQueryString(options.transform)\n if (transformQuery) {\n queryParams.push(transformQuery)\n }\n }\n\n // 拼接所有查询参数\n if (queryParams.length > 0) {\n const separator = signedUrl.includes('?') ? '&' : '?'\n signedUrl = `${signedUrl}${separator}${queryParams.join('&')}`\n }\n\n return {\n data: { signedUrl },\n error: null,\n }\n } catch (error: any) {\n if (this.shouldThrowOnError) throw error\n if (isStorageError(error)) {\n return {\n data: null,\n error,\n }\n }\n throw error\n }\n }\n\n async createSignedUrls(\n paths: string[],\n expiresIn: number,\n // options?: {\n // download?: string | boolean\n // },\n ): Promise<\n | { data: Array<{ path: string; signedUrl: string; error: string | null }>; error: null }\n | { data: null; error: StorageError }\n > {\n try {\n const fileList = paths.map(p => ({\n fileID: this._normalizeCloudId(p),\n maxAge: expiresIn,\n }))\n\n const result = await this.getTempFileURL({ fileList })\n\n return {\n data: result.fileList.map((item: any, index: number) => ({\n path: paths[index],\n signedUrl: item.tempFileURL || '',\n error: item.code === 'SUCCESS' ? null : item.message,\n })),\n error: null,\n }\n } catch (error: any) {\n if (this.shouldThrowOnError) throw error\n if (isStorageError(error)) {\n return {\n data: null,\n error,\n }\n }\n throw error\n }\n }\n\n async download(\n path: string,\n options?: TransformOptions,\n ): Promise<{\n data: Blob\n error: StorageError | null\n }> {\n try {\n return {\n data: await (async () => {\n const signedUrlResult = await this.createSignedUrl(path, 600, { transform: options })\n if (signedUrlResult.error) {\n throw signedUrlResult.error\n }\n const tmpUrl = encodeURI(signedUrlResult.data?.signedUrl)\n\n const { data } = await (this as any).request.reqClass.get({\n url: tmpUrl,\n headers: {}, // 下载资源请求不经过service,header清空\n responseType: 'blob',\n })\n\n if (!data) {\n throw new StorageError('Download failed: no file content')\n }\n\n // 将 Buffer 转换为 Uint8Array 以兼容 Blob\n return new Blob([data])\n })(),\n error: null,\n }\n } catch (error: any) {\n if (this.shouldThrowOnError) throw error\n if (isStorageError(error)) {\n return {\n data: null,\n error,\n }\n }\n throw error\n }\n }\n\n /**\n * 获取文件信息\n *\n * @param pathOrFileId - 相对路径(如 'images/photo.jpg')或 CloudBase fileID(以 'cloud://' 开头)\n * @returns 文件信息对象\n *\n * @example\n * ```typescript\n * // 使用相对路径\n * const { data } = await bucket.info('images/photo.jpg')\n *\n * // 使用 CloudBase fileID\n * const { data } = await bucket.info('cloud://env-id.xxxx-xxxx/images/photo.jpg')\n * ```\n */\n async info(pathOrFileId: string,): Promise<{ data: Camelize<FileObjectV2>; error: null } | { data: null; error: StorageError }> {\n try {\n // 判断是 fileID 还是相对路径\n const isFileId = pathOrFileId.startsWith('cloud://')\n const displayName = isFileId ? this._extractPathFromFileId(pathOrFileId) : pathOrFileId\n const bucketId = isFileId ? this._extractBucketFromFileId(pathOrFileId) : this.bucketId\n\n const fileInfo = await this.getFileInfo({\n fileList: [this._normalizeCloudId(pathOrFileId)],\n })\n\n const item = fileInfo.fileList[0]\n\n if (item.code !== 'SUCCESS') {\n throw new StorageError(item.message)\n }\n\n const now = new Date().toISOString()\n const lastModified = (item.lastModified ? new Date(item.lastModified) : new Date()).toISOString()\n return {\n data: {\n id: item.fileID,\n version: '1',\n name: displayName,\n bucketId,\n updatedAt: lastModified,\n createdAt: lastModified,\n lastAccessedAt: now,\n size: item.size,\n cacheControl: item.cacheControl,\n contentType: item.contentType,\n etag: item.etag,\n lastModified,\n metadata: {},\n },\n error: null,\n }\n } catch (error: any) {\n if (this.shouldThrowOnError) throw error\n return {\n data: null,\n error: error instanceof StorageError ? error : new StorageError(error.message),\n }\n }\n }\n\n async exists(pathOrFileId: string): Promise<{ data: boolean; error: null } | { data: null; error: StorageError }> {\n try {\n // 判断是 fileID 还是相对路径\n const fileInfo = await this.getFileInfo({\n fileList: [this._normalizeCloudId(pathOrFileId)],\n })\n\n const item = fileInfo.fileList[0]\n\n if (item.code === 'FILE_NOT_FOUND') {\n return {\n data: false,\n error: null,\n }\n }\n\n if (item.code !== 'SUCCESS') {\n throw new StorageError(item.message)\n }\n\n return { data: true, error: null }\n } catch (error: any) {\n if (this.shouldThrowOnError) throw error\n if (isStorageError(error)) {\n return {\n data: null,\n error,\n }\n }\n throw error\n }\n }\n\n async getPublicUrl(\n path: string,\n options?: {\n download?: string | boolean\n transform?: TransformOptions\n },\n ): Promise<\n | {\n data: { publicUrl: string }\n }\n | { data: null; error: StorageError }\n > {\n const res = await this.createSignedUrl(path, 600, options)\n\n if (res.data) {\n return {\n data: { publicUrl: res.data.signedUrl },\n }\n }\n\n return { data: null, error: res.error as StorageError }\n }\n\n async remove(paths: string[]): Promise<{ data: FileObject[]; error: null } | { data: null; error: StorageError }> {\n try {\n // 分组获取文件信息,每组最多10个\n const chunkSize = 10\n const pathChunks: string[][] = []\n for (let i = 0; i < paths.length; i += chunkSize) {\n pathChunks.push(paths.slice(i, i + chunkSize))\n }\n\n // 并行获取所有分组的文件信息\n const fileInfoResults = await Promise.all(pathChunks.map(chunk => Promise.all(chunk.map(path => this.info(path)))),)\n\n // 合并所有文件信息并构建映射表(path -> fileInfo)\n const fileInfoMap = new Map<string, Camelize<FileObjectV2>>()\n fileInfoResults.flat().forEach((result, index) => {\n if (result.data) {\n fileInfoMap.set(paths[Math.floor(index / chunkSize) * chunkSize + (index % chunkSize)], result.data)\n }\n })\n\n // 执行删除操作\n const fileList = paths.map(p => this._normalizeCloudId(p))\n const result = await this.deleteFile({ fileList })\n\n // IDeleteFileRes 的 fileList 数组中每个项有 code 字段\n const failedFiles = result.fileList.filter(item => item.code !== 'SUCCESS')\n if (failedFiles.length > 0) {\n throw new StorageError(`Delete failed for ${failedFiles.length} file(s)`)\n }\n\n const now = new Date().toISOString()\n\n // 使用获取到的文件信息构建返回数据\n return {\n data: paths.map((p) => {\n const info = fileInfoMap.get(p)\n\n return {\n name: info?.name,\n id: info?.id,\n bucket_id: info?.bucketId,\n owner: undefined, // 无法计算owner\n updated_at: info?.updatedAt || now,\n created_at: info?.createdAt,\n last_accessed_at: info?.lastAccessedAt || now,\n metadata: info?.metadata || {},\n /**\n * TODO: 获取补全 Bucket 信息\n */\n buckets: {\n id: info?.bucketId,\n name: info?.bucketId,\n owner: undefined, // 无法计算owner\n public: false, // 未知\n created_at: '', // 未知\n updated_at: now, // 未知\n },\n }\n }),\n error: null,\n }\n } catch (error: any) {\n if (this.shouldThrowOnError) throw error\n if (isStorageError(error)) {\n return {\n data: null,\n error,\n }\n }\n throw error\n }\n }\n\n async list() {\n throw new StorageError('Not implemented')\n }\n\n private _getCloudPath(path: string): string {\n // 清理路径:移除首尾斜杠,合并多个斜杠\n const cleanPath = path.replace(/^\\/|\\/$/g, '').replace(/\\/+/g, '/')\n\n // 否则返回清理后的相对路径\n return cleanPath\n }\n\n private _normalizeCloudId(path: string) {\n // 如果已经是 cloud:// 格式,直接返回\n if (/^cloud:\\/\\//.test(path)) {\n return path\n }\n const cleanPath = this._getCloudPath(path)\n\n // 如果设置了 bucketId,构建完整的 cloud:// 路径\n if (this.bucketId) {\n // 获取环境 ID\n const envId = this.config?.env || ''\n if (envId) {\n return `cloud://${envId}.${this.bucketId}/${cleanPath}`\n }\n } else {\n throw new StorageError('bucketId is not set')\n }\n }\n\n private toBase64(data: string) {\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(data).toString('base64')\n }\n return btoa(data)\n }\n\n /**\n * 将 TransformOptions 转换为腾讯云数据万象的 imageMogr2 查询字符串\n *\n * 腾讯云数据万象使用 imageMogr2 接口进行图片处理,支持以下参数:\n * - /thumbnail/<Width>x<Height> - 缩放\n * - /format/<Format> - 格式转换\n * - /quality/<Quality> - 质量调整\n * - /rquality/<Quality> - 相对质量\n *\n * @param transform - Supabase TransformOptions\n * @returns 腾讯云数据万象的查询字符串\n *\n * @example\n * ```typescript\n * _transformOptsToQueryString({ width: 300, height: 200, quality: 80, format: 'origin' })\n * // 返回: 'imageMogr2/thumbnail/300x200/quality/80'\n * ```\n */\n private _transformOptsToQueryString(transform: TransformOptions): string {\n const params: string[] = ['imageMogr2']\n\n // 处理缩放参数\n if (transform.width || transform.height) {\n const width = transform.width || ''\n const height = transform.height || ''\n\n // 根据 resize 模式选择不同的缩放方式\n if (transform.resize === 'fill') {\n // fill: 强制缩放到指定尺寸,可能变形\n params.push(`thumbnail/${width}x${height}!`)\n } else if (transform.resize === 'contain') {\n // contain: 等比缩放,完整显示在指定尺寸内\n params.push(`thumbnail/${width}x${height}`)\n } else {\n // cover (默认): 等比缩放,填充指定尺寸,可能裁剪\n // 使用 /thumbnail/<Width>x<Height>^ 表示填充模式\n params.push(`thumbnail/${width}x${height}^`)\n }\n }\n\n // 处理格式转换\n // format: 'origin' 表示保持原格式,不传此参数\n if (transform.format && transform.format !== 'origin') {\n params.push(`format/${transform.format}`)\n }\n\n // 处理质量参数\n if (transform.quality !== undefined) {\n // 腾讯云数据万象的 quality 参数范围是 1-100\n const quality = Math.max(1, Math.min(100, transform.quality))\n params.push(`quality/${quality}`)\n }\n\n return params.join('/')\n }\n\n /**\n * 从 CloudBase fileID 中提取文件路径\n *\n * @param fileId - CloudBase fileID (格式: cloud://env-id.bucket/path/to/file.jpg)\n * @returns 提取的文件路径\n *\n * @example\n * ```typescript\n * _extractPathFromFileId('cloud://test-env.test-bucket/images/photo.jpg')\n * // 返回: 'images/photo.jpg'\n *\n * _extractPathFromFileId('cloud://test-env.test-bucket/file.txt')\n * // 返回: 'file.txt'\n * ```\n */\n private _extractPathFromFileId(fileId: string): string {\n // fileID 格式: cloud://env-id.bucket/path/to/file.jpg\n // 需要提取第一个 / 后面的所有内容(包括 bucket 和路径)\n // 然后再提取 bucket 后面的路径部分\n\n // 移除 cloud:// 前缀\n const withoutProtocol = fileId.replace(/^cloud:\\/\\//, '')\n\n // 分割为 [env-id.bucket, path, to, file.jpg]\n const parts = withoutProtocol.split('/')\n\n if (parts.length < 2) {\n // 如果无法解析,返回完整的 fileID\n return fileId\n }\n\n // 移除第一部分(env-id.bucket),返回剩余路径\n return parts.slice(1).join('/')\n }\n\n /**\n * 从 CloudBase fileID 中提取 bucket 名称\n *\n * @param fileId - CloudBase fileID (格式: cloud://env-id.bucket/path/to/file.jpg)\n * @returns 提取的 bucket 名称\n *\n * @example\n * ```typescript\n * _extractBucketFromFileId('cloud://test-env.test-bucket/images/photo.jpg')\n * // 返回: 'test-bucket'\n *\n * _extractBucketFromFileId('cloud://prod-env.my-bucket/file.txt')\n * // 返回: 'my-bucket'\n * ```\n */\n private _extractBucketFromFileId(fileId: string): string {\n // fileID 格式: cloud://env-id.bucket/path/to/file.jpg\n // 需要提取 env-id.bucket 中的 bucket 部分\n\n // 移除 cloud:// 前缀\n const withoutProtocol = fileId.replace(/^cloud:\\/\\//, '')\n\n // 分割为 [env-id.bucket, path, to, file.jpg]\n const parts = withoutProtocol.split('/')\n\n if (parts.length < 1) {\n // 如果无法解析,返回默认 bucket\n return ''\n }\n\n // 第一部分是 env-id.bucket,提取 bucket 部分\n // 格式: env-id.bucket 或 env-id.bucket-name\n const envAndBucket = parts[0]\n\n // 查找第一个点的位置\n const dotIndex = envAndBucket.indexOf('.')\n\n if (dotIndex === -1) {\n // 如果没有点,返回整个字符串\n return envAndBucket\n }\n\n // 返回点后面的部分(bucket 名称)\n return envAndBucket.substring(dotIndex + 1)\n }\n}\n\nconst supabaseComponent: ICloudbaseComponent = {\n name: `${COMPONENT_NAME}/supabase`,\n IIFE: true,\n entity() {\n // 在 IIFE 中,this 是 Cloudbase 类(构造函数),不是实例\n // 所以我们需要使用 getter 来延迟获取实例的 config 和 request\n\n // 使用 WeakMap 缓存每个实例的 storage 对象\n const storageCache = new WeakMap<any, SupabaseFileAPILikeStorage>()\n\n // 定义 storage 属性的 getter,每个实例只创建一次\n Object.defineProperty(this.prototype, 'storage', {\n get() {\n // 这里的 this 是 cloudbase 实例\n\n // 如果已经创建过,直接返回缓存的实例\n if (storageCache.has(this)) {\n return storageCache.get(this)\n }\n\n // 创建动态 context,从当前实例获取 config 和 request\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const instance = this\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const context = new Proxy<ICloudbaseContext>({} as ICloudbaseContext, {\n get: (_target, prop) => {\n if (prop === 'config') {\n return instance.config\n }\n if (prop === 'request') {\n return instance.request\n }\n return undefined\n },\n })\n\n // 创建新的 storage 实例并缓存\n const storage = new SupabaseFileAPILikeStorage(context)\n storageCache.set(this, storage)\n return storage\n },\n configurable: true,\n enumerable: true,\n })\n },\n}\n\ntry {\n cloudbase.registerComponent(component)\n cloudbase.registerComponent(supabaseComponent)\n} catch (e) {}\n\nexport function registerStorage(app: Pick<ICloudbase, 'registerComponent'>) {\n try {\n app.registerComponent(component)\n app.registerComponent(supabaseComponent)\n } catch (e) {\n console.warn(e)\n }\n}\n\ntry {\n (window as any).registerStorage = registerStorage\n} catch (e) {}\n","export class StorageError extends Error {\n protected __isStorageError = true\n\n constructor(message: string) {\n super(message)\n this.name = 'StorageError'\n }\n}\n\nexport function isStorageError(error: unknown): error is StorageError {\n return typeof error === 'object' && error !== null && '__isStorageError' in error\n}\n\nexport class StorageApiError extends StorageError {\n status: number\n statusCode: string\n\n constructor(message: string, status: number, statusCode: string) {\n super(message)\n this.name = 'StorageApiError'\n this.status = status\n this.statusCode = statusCode\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n status: this.status,\n statusCode: this.statusCode,\n }\n }\n}\n\nexport class StorageUnknownError extends StorageError {\n originalError: unknown\n\n constructor(message: string, originalError: unknown) {\n super(message)\n this.name = 'StorageUnknownError'\n this.originalError = originalError\n }\n}\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 * as constants from './constants'\nimport * as adapters from './adapters'\nimport * as cache from './libs/cache'\nimport * as events from './libs/events'\nimport * as langEvent from './libs/langEvent'\nimport * as utils from './libs/util'\nimport * as helpers from './helpers'\nimport AbortController from './libs/abortController'\nimport jwtDecode from 'jwt-decode'\n\nconst jwt = {\n decode: jwtDecode,\n}\n\nexport { constants, adapters, cache, events, utils, helpers, jwt, AbortController, langEvent }\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","var _a;\nvar ErrorCode;\n(function (ErrorCode) {\n ErrorCode[\"DocIDError\"] = \"\\u6587\\u6863ID\\u4E0D\\u5408\\u6CD5\";\n ErrorCode[\"CollNameError\"] = \"\\u96C6\\u5408\\u540D\\u79F0\\u4E0D\\u5408\\u6CD5\";\n ErrorCode[\"OpStrError\"] = \"\\u64CD\\u4F5C\\u7B26\\u4E0D\\u5408\\u6CD5\";\n ErrorCode[\"DirectionError\"] = \"\\u6392\\u5E8F\\u5B57\\u7B26\\u4E0D\\u5408\\u6CD5\";\n ErrorCode[\"IntergerError\"] = \"must be integer\";\n ErrorCode[\"QueryParamTypeError\"] = \"\\u67E5\\u8BE2\\u53C2\\u6570\\u5FC5\\u987B\\u4E3A\\u5BF9\\u8C61\";\n ErrorCode[\"QueryParamValueError\"] = \"\\u67E5\\u8BE2\\u53C2\\u6570\\u5BF9\\u8C61\\u503C\\u4E0D\\u80FD\\u5747\\u4E3Aundefined\";\n})(ErrorCode || (ErrorCode = {}));\nvar FieldType = {\n String: 'String',\n Number: 'Number',\n Object: 'Object',\n Array: 'Array',\n Boolean: 'Boolean',\n Null: 'Null',\n GeoPoint: 'GeoPoint',\n GeoLineString: 'GeoLineString',\n GeoPolygon: 'GeoPolygon',\n GeoMultiPoint: 'GeoMultiPoint',\n GeoMultiLineString: 'GeoMultiLineString',\n GeoMultiPolygon: 'GeoMultiPolygon',\n Timestamp: 'Date',\n Command: 'Command',\n ServerDate: 'ServerDate',\n BsonDate: 'BsonDate'\n};\nvar OrderDirectionList = ['desc', 'asc'];\nvar WhereFilterOpList = ['<', '<=', '==', '>=', '>'];\nvar Opeartor;\n(function (Opeartor) {\n Opeartor[\"lt\"] = \"<\";\n Opeartor[\"gt\"] = \">\";\n Opeartor[\"lte\"] = \"<=\";\n Opeartor[\"gte\"] = \">=\";\n Opeartor[\"eq\"] = \"==\";\n})(Opeartor || (Opeartor = {}));\nvar OperatorMap = (_a = {},\n _a[Opeartor.eq] = '$eq',\n _a[Opeartor.lt] = '$lt',\n _a[Opeartor.lte] = '$lte',\n _a[Opeartor.gt] = '$gt',\n _a[Opeartor.gte] = '$gte',\n _a);\nvar UpdateOperatorList = [\n '$set',\n '$inc',\n '$mul',\n '$unset',\n '$push',\n '$pop',\n '$unshift',\n '$shift',\n '$currentDate',\n '$each',\n '$position'\n];\nvar QueryType;\n(function (QueryType) {\n QueryType[\"WHERE\"] = \"WHERE\";\n QueryType[\"DOC\"] = \"DOC\";\n})(QueryType || (QueryType = {}));\nexport { ErrorCode, FieldType, WhereFilterOpList, Opeartor, OperatorMap, OrderDirectionList, UpdateOperatorList, QueryType };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar _symbols = [];\nvar __internalMark__ = {};\nvar HiddenSymbol = (function () {\n function HiddenSymbol(target) {\n Object.defineProperties(this, {\n target: {\n enumerable: false,\n writable: false,\n configurable: false,\n value: target,\n },\n });\n }\n return HiddenSymbol;\n}());\nvar InternalSymbol = (function (_super) {\n __extends(InternalSymbol, _super);\n function InternalSymbol(target, __mark__) {\n if (__mark__ !== __internalMark__) {\n throw new TypeError('InternalSymbol cannot be constructed with new operator');\n }\n return _super.call(this, target) || this;\n }\n InternalSymbol.for = function (target) {\n for (var i = 0, len = _symbols.length; i < len; i++) {\n if (_symbols[i].target === target) {\n return _symbols[i].instance;\n }\n }\n var symbol = new InternalSymbol(target, __internalMark__);\n _symbols.push({\n target: target,\n instance: symbol,\n });\n return symbol;\n };\n return InternalSymbol;\n}(HiddenSymbol));\nexport { InternalSymbol };\nexport default InternalSymbol;\n","import InternalSymbol from '../utils/symbol';\nexport * from '../utils/symbol';\nexport var SYMBOL_UNSET_FIELD_NAME = InternalSymbol.for('UNSET_FIELD_NAME');\nexport var SYMBOL_UPDATE_COMMAND = InternalSymbol.for('UPDATE_COMMAND');\nexport var SYMBOL_QUERY_COMMAND = InternalSymbol.for('QUERY_COMMAND');\nexport var SYMBOL_LOGIC_COMMAND = InternalSymbol.for('LOGIC_COMMAND');\nexport var SYMBOL_GEO_POINT = InternalSymbol.for('GEO_POINT');\nexport var SYMBOL_GEO_LINE_STRING = InternalSymbol.for('SYMBOL_GEO_LINE_STRING');\nexport var SYMBOL_GEO_POLYGON = InternalSymbol.for('SYMBOL_GEO_POLYGON');\nexport var SYMBOL_GEO_MULTI_POINT = InternalSymbol.for('SYMBOL_GEO_MULTI_POINT');\nexport var SYMBOL_GEO_MULTI_LINE_STRING = InternalSymbol.for('SYMBOL_GEO_MULTI_LINE_STRING');\nexport var SYMBOL_GEO_MULTI_POLYGON = InternalSymbol.for('SYMBOL_GEO_MULTI_POLYGON');\nexport var SYMBOL_SERVER_DATE = InternalSymbol.for('SERVER_DATE');\nexport var SYMBOL_REGEXP = InternalSymbol.for('REGEXP');\n","import { InternalSymbol } from './symbol';\nexport var getType = function (x) { return Object.prototype.toString.call(x).slice(8, -1).toLowerCase(); };\nexport var isObject = function (x) { return getType(x) === 'object'; };\nexport var isString = function (x) { return getType(x) === 'string'; };\nexport var isNumber = function (x) { return getType(x) === 'number'; };\nexport var isPromise = function (x) { return getType(x) === 'promise'; };\nexport var isFunction = function (x) { return typeof x === 'function'; };\nexport var isArray = function (x) { return Array.isArray(x); };\nexport var isDate = function (x) { return getType(x) === 'date'; };\nexport var isRegExp = function (x) { return getType(x) === 'regexp'; };\nexport var isInternalObject = function (x) { return x && (x._internalType instanceof InternalSymbol); };\nexport var isPlainObject = function (obj) {\n if (typeof obj !== 'object' || obj === null)\n return false;\n var proto = obj;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto;\n};\n","var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { SYMBOL_GEO_LINE_STRING } from '../helper/symbol';\nimport { Point } from './point';\nimport { isArray, isNumber } from '../utils/type';\nvar LineString = (function () {\n function LineString(points) {\n if (!isArray(points)) {\n throw new TypeError(\"\\\"points\\\" must be of type Point[]. Received type \".concat(typeof points));\n }\n if (points.length < 2) {\n throw new Error('\"points\" must contain 2 points at least');\n }\n points.forEach(function (point) {\n if (!(point instanceof Point)) {\n throw new TypeError(\"\\\"points\\\" must be of type Point[]. Received type \".concat(typeof point, \"[]\"));\n }\n });\n this.points = points;\n }\n LineString.prototype.parse = function (key) {\n var _a;\n return _a = {},\n _a[key] = {\n type: 'LineString',\n coordinates: this.points.map(function (point) { return point.toJSON().coordinates; })\n },\n _a;\n };\n LineString.prototype.toJSON = function () {\n return {\n type: 'LineString',\n coordinates: this.points.map(function (point) { return point.toJSON().coordinates; })\n };\n };\n LineString.validate = function (lineString) {\n var e_1, _a;\n if (lineString.type !== 'LineString' || !isArray(lineString.coordinates)) {\n return false;\n }\n try {\n for (var _b = __values(lineString.coordinates), _c = _b.next(); !_c.done; _c = _b.next()) {\n var point = _c.value;\n if (!isNumber(point[0]) || !isNumber(point[1])) {\n return false;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return true;\n };\n LineString.isClosed = function (lineString) {\n var firstPoint = lineString.points[0];\n var lastPoint = lineString.points[lineString.points.length - 1];\n if (firstPoint.latitude === lastPoint.latitude && firstPoint.longitude === lastPoint.longitude) {\n return true;\n }\n };\n Object.defineProperty(LineString.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_GEO_LINE_STRING;\n },\n enumerable: false,\n configurable: true\n });\n return LineString;\n}());\nexport { LineString };\n","var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { SYMBOL_GEO_MULTI_POLYGON } from '../helper/symbol';\nimport { isArray, isNumber } from '../utils/type';\nimport { LineString } from './lineString';\nvar Polygon = (function () {\n function Polygon(lines) {\n if (!isArray(lines)) {\n throw new TypeError(\"\\\"lines\\\" must be of type LineString[]. Received type \".concat(typeof lines));\n }\n if (lines.length === 0) {\n throw new Error('Polygon must contain 1 linestring at least');\n }\n lines.forEach(function (line) {\n if (!(line instanceof LineString)) {\n throw new TypeError(\"\\\"lines\\\" must be of type LineString[]. Received type \".concat(typeof line, \"[]\"));\n }\n if (!LineString.isClosed(line)) {\n throw new Error(\"LineString \".concat(line.points.map(function (p) { return p.toReadableString(); }), \" is not a closed cycle\"));\n }\n });\n this.lines = lines;\n }\n Polygon.prototype.parse = function (key) {\n var _a;\n return _a = {},\n _a[key] = {\n type: 'Polygon',\n coordinates: this.lines.map(function (line) {\n return line.points.map(function (point) { return [point.longitude, point.latitude]; });\n })\n },\n _a;\n };\n Polygon.prototype.toJSON = function () {\n return {\n type: 'Polygon',\n coordinates: this.lines.map(function (line) {\n return line.points.map(function (point) { return [point.longitude, point.latitude]; });\n })\n };\n };\n Polygon.validate = function (polygon) {\n var e_1, _a, e_2, _b;\n if (polygon.type !== 'Polygon' || !isArray(polygon.coordinates)) {\n return false;\n }\n try {\n for (var _c = __values(polygon.coordinates), _d = _c.next(); !_d.done; _d = _c.next()) {\n var line = _d.value;\n if (!this.isCloseLineString(line)) {\n return false;\n }\n try {\n for (var line_1 = (e_2 = void 0, __values(line)), line_1_1 = line_1.next(); !line_1_1.done; line_1_1 = line_1.next()) {\n var point = line_1_1.value;\n if (!isNumber(point[0]) || !isNumber(point[1])) {\n return false;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (line_1_1 && !line_1_1.done && (_b = line_1.return)) _b.call(line_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return true;\n };\n Polygon.isCloseLineString = function (lineString) {\n var firstPoint = lineString[0];\n var lastPoint = lineString[lineString.length - 1];\n if (firstPoint[0] !== lastPoint[0] || firstPoint[1] !== lastPoint[1]) {\n return false;\n }\n return true;\n };\n Object.defineProperty(Polygon.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_GEO_MULTI_POLYGON;\n },\n enumerable: false,\n configurable: true\n });\n return Polygon;\n}());\nexport { Polygon };\n","var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { SYMBOL_GEO_MULTI_POINT } from '../helper/symbol';\nimport { Point } from './point';\nimport { isArray, isNumber } from '../utils/type';\nvar MultiPoint = (function () {\n function MultiPoint(points) {\n if (!isArray(points)) {\n throw new TypeError(\"\\\"points\\\" must be of type Point[]. Received type \".concat(typeof points));\n }\n if (points.length === 0) {\n throw new Error('\"points\" must contain 1 point at least');\n }\n points.forEach(function (point) {\n if (!(point instanceof Point)) {\n throw new TypeError(\"\\\"points\\\" must be of type Point[]. Received type \".concat(typeof point, \"[]\"));\n }\n });\n this.points = points;\n }\n MultiPoint.prototype.parse = function (key) {\n var _a;\n return _a = {},\n _a[key] = {\n type: 'MultiPoint',\n coordinates: this.points.map(function (point) { return point.toJSON().coordinates; })\n },\n _a;\n };\n MultiPoint.prototype.toJSON = function () {\n return {\n type: 'MultiPoint',\n coordinates: this.points.map(function (point) { return point.toJSON().coordinates; })\n };\n };\n MultiPoint.validate = function (multiPoint) {\n var e_1, _a;\n if (multiPoint.type !== 'MultiPoint' || !isArray(multiPoint.coordinates)) {\n return false;\n }\n try {\n for (var _b = __values(multiPoint.coordinates), _c = _b.next(); !_c.done; _c = _b.next()) {\n var point = _c.value;\n if (!isNumber(point[0]) || !isNumber(point[1])) {\n return false;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return true;\n };\n Object.defineProperty(MultiPoint.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_GEO_MULTI_POINT;\n },\n enumerable: false,\n configurable: true\n });\n return MultiPoint;\n}());\nexport { MultiPoint };\n","var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { SYMBOL_GEO_MULTI_LINE_STRING } from '../helper/symbol';\nimport { isArray, isNumber } from '../utils/type';\nimport { LineString } from './lineString';\nvar MultiLineString = (function () {\n function MultiLineString(lines) {\n if (!isArray(lines)) {\n throw new TypeError(\"\\\"lines\\\" must be of type LineString[]. Received type \".concat(typeof lines));\n }\n if (lines.length === 0) {\n throw new Error('Polygon must contain 1 linestring at least');\n }\n lines.forEach(function (line) {\n if (!(line instanceof LineString)) {\n throw new TypeError(\"\\\"lines\\\" must be of type LineString[]. Received type \".concat(typeof line, \"[]\"));\n }\n });\n this.lines = lines;\n }\n MultiLineString.prototype.parse = function (key) {\n var _a;\n return _a = {},\n _a[key] = {\n type: 'MultiLineString',\n coordinates: this.lines.map(function (line) {\n return line.points.map(function (point) { return [point.longitude, point.latitude]; });\n })\n },\n _a;\n };\n MultiLineString.prototype.toJSON = function () {\n return {\n type: 'MultiLineString',\n coordinates: this.lines.map(function (line) {\n return line.points.map(function (point) { return [point.longitude, point.latitude]; });\n })\n };\n };\n MultiLineString.validate = function (multiLineString) {\n var e_1, _a, e_2, _b;\n if (multiLineString.type !== 'MultiLineString' || !isArray(multiLineString.coordinates)) {\n return false;\n }\n try {\n for (var _c = __values(multiLineString.coordinates), _d = _c.next(); !_d.done; _d = _c.next()) {\n var line = _d.value;\n try {\n for (var line_1 = (e_2 = void 0, __values(line)), line_1_1 = line_1.next(); !line_1_1.done; line_1_1 = line_1.next()) {\n var point = line_1_1.value;\n if (!isNumber(point[0]) || !isNumber(point[1])) {\n return false;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (line_1_1 && !line_1_1.done && (_b = line_1.return)) _b.call(line_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return true;\n };\n Object.defineProperty(MultiLineString.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_GEO_MULTI_LINE_STRING;\n },\n enumerable: false,\n configurable: true\n });\n return MultiLineString;\n}());\nexport { MultiLineString };\n","var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { SYMBOL_GEO_POLYGON } from '../helper/symbol';\nimport { isArray, isNumber } from '../utils/type';\nimport { Polygon } from './polygon';\nvar MultiPolygon = (function () {\n function MultiPolygon(polygons) {\n var e_1, _a;\n if (!isArray(polygons)) {\n throw new TypeError(\"\\\"polygons\\\" must be of type Polygon[]. Received type \".concat(typeof polygons));\n }\n if (polygons.length === 0) {\n throw new Error('MultiPolygon must contain 1 polygon at least');\n }\n try {\n for (var polygons_1 = __values(polygons), polygons_1_1 = polygons_1.next(); !polygons_1_1.done; polygons_1_1 = polygons_1.next()) {\n var polygon = polygons_1_1.value;\n if (!(polygon instanceof Polygon)) {\n throw new TypeError(\"\\\"polygon\\\" must be of type Polygon[]. Received type \".concat(typeof polygon, \"[]\"));\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (polygons_1_1 && !polygons_1_1.done && (_a = polygons_1.return)) _a.call(polygons_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n this.polygons = polygons;\n }\n MultiPolygon.prototype.parse = function (key) {\n var _a;\n return _a = {},\n _a[key] = {\n type: 'MultiPolygon',\n coordinates: this.polygons.map(function (polygon) {\n return polygon.lines.map(function (line) {\n return line.points.map(function (point) { return [point.longitude, point.latitude]; });\n });\n })\n },\n _a;\n };\n MultiPolygon.prototype.toJSON = function () {\n return {\n type: 'MultiPolygon',\n coordinates: this.polygons.map(function (polygon) {\n return polygon.lines.map(function (line) {\n return line.points.map(function (point) { return [point.longitude, point.latitude]; });\n });\n })\n };\n };\n MultiPolygon.validate = function (multiPolygon) {\n var e_2, _a, e_3, _b, e_4, _c;\n if (multiPolygon.type !== 'MultiPolygon' || !isArray(multiPolygon.coordinates)) {\n return false;\n }\n try {\n for (var _d = __values(multiPolygon.coordinates), _e = _d.next(); !_e.done; _e = _d.next()) {\n var polygon = _e.value;\n try {\n for (var polygon_1 = (e_3 = void 0, __values(polygon)), polygon_1_1 = polygon_1.next(); !polygon_1_1.done; polygon_1_1 = polygon_1.next()) {\n var line = polygon_1_1.value;\n try {\n for (var line_1 = (e_4 = void 0, __values(line)), line_1_1 = line_1.next(); !line_1_1.done; line_1_1 = line_1.next()) {\n var point = line_1_1.value;\n if (!isNumber(point[0]) || !isNumber(point[1])) {\n return false;\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (line_1_1 && !line_1_1.done && (_c = line_1.return)) _c.call(line_1);\n }\n finally { if (e_4) throw e_4.error; }\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (polygon_1_1 && !polygon_1_1.done && (_b = polygon_1.return)) _b.call(polygon_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return true;\n };\n Object.defineProperty(MultiPolygon.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_GEO_POLYGON;\n },\n enumerable: false,\n configurable: true\n });\n return MultiPolygon;\n}());\nexport { MultiPolygon };\n","import { SYMBOL_SERVER_DATE } from '../helper/symbol';\nvar ServerDate = (function () {\n function ServerDate(_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.offset, offset = _c === void 0 ? 0 : _c;\n this.offset = offset;\n }\n Object.defineProperty(ServerDate.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_SERVER_DATE;\n },\n enumerable: false,\n configurable: true\n });\n ServerDate.prototype.parse = function () {\n return {\n $date: {\n offset: this.offset\n }\n };\n };\n return ServerDate;\n}());\nexport { ServerDate };\nexport function ServerDateConstructor(opt) {\n return new ServerDate(opt);\n}\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { FieldType } from './constant';\nimport { Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon } from './geo/index';\nimport { ServerDate } from './serverDate/index';\nvar Util = (function () {\n function Util() {\n }\n Util.formatResDocumentData = function (documents) {\n return documents.map(function (document) {\n return Util.formatField(document);\n });\n };\n Util.formatField = function (document) {\n var keys = Object.keys(document);\n var protoField = {};\n if (Array.isArray(document)) {\n protoField = [];\n }\n keys.forEach(function (key) {\n var item = document[key];\n var type = Util.whichType(item);\n var realValue;\n switch (type) {\n case FieldType.GeoPoint:\n realValue = new Point(item.coordinates[0], item.coordinates[1]);\n break;\n case FieldType.GeoLineString:\n realValue = new LineString(item.coordinates.map(function (point) { return new Point(point[0], point[1]); }));\n break;\n case FieldType.GeoPolygon:\n realValue = new Polygon(item.coordinates.map(function (line) { return new LineString(line.map(function (_a) {\n var _b = __read(_a, 2), lng = _b[0], lat = _b[1];\n return new Point(lng, lat);\n })); }));\n break;\n case FieldType.GeoMultiPoint:\n realValue = new MultiPoint(item.coordinates.map(function (point) { return new Point(point[0], point[1]); }));\n break;\n case FieldType.GeoMultiLineString:\n realValue = new MultiLineString(item.coordinates.map(function (line) { return new LineString(line.map(function (_a) {\n var _b = __read(_a, 2), lng = _b[0], lat = _b[1];\n return new Point(lng, lat);\n })); }));\n break;\n case FieldType.GeoMultiPolygon:\n realValue = new MultiPolygon(item.coordinates.map(function (polygon) {\n return new Polygon(polygon.map(function (line) { return new LineString(line.map(function (_a) {\n var _b = __read(_a, 2), lng = _b[0], lat = _b[1];\n return new Point(lng, lat);\n })); }));\n }));\n break;\n case FieldType.Timestamp:\n realValue = new Date(item.$timestamp * 1000);\n break;\n case FieldType.Object:\n case FieldType.Array:\n realValue = Util.formatField(item);\n break;\n case FieldType.ServerDate:\n realValue = new Date(item.$date);\n break;\n default:\n realValue = item;\n }\n if (Array.isArray(protoField)) {\n protoField.push(realValue);\n }\n else {\n protoField[key] = realValue;\n }\n });\n return protoField;\n };\n Util.whichType = function (obj) {\n var type = Object.prototype.toString.call(obj).slice(8, -1);\n if (type === FieldType.Timestamp) {\n return FieldType.BsonDate;\n }\n if (type === FieldType.Object) {\n if (obj instanceof Point) {\n return FieldType.GeoPoint;\n }\n else if (obj instanceof Date) {\n return FieldType.Timestamp;\n }\n else if (obj instanceof ServerDate) {\n return FieldType.ServerDate;\n }\n if (obj.$timestamp) {\n type = FieldType.Timestamp;\n }\n else if (obj.$date) {\n type = FieldType.ServerDate;\n }\n else if (Point.validate(obj)) {\n type = FieldType.GeoPoint;\n }\n else if (LineString.validate(obj)) {\n type = FieldType.GeoLineString;\n }\n else if (Polygon.validate(obj)) {\n type = FieldType.GeoPolygon;\n }\n else if (MultiPoint.validate(obj)) {\n type = FieldType.GeoMultiPoint;\n }\n else if (MultiLineString.validate(obj)) {\n type = FieldType.GeoMultiLineString;\n }\n else if (MultiPolygon.validate(obj)) {\n type = FieldType.GeoMultiPolygon;\n }\n }\n return type;\n };\n Util.generateDocId = function () {\n var chars = 'ABCDEFabcdef0123456789';\n var autoId = '';\n for (var i = 0; i < 24; i++) {\n autoId += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return autoId;\n };\n return Util;\n}());\nexport { Util };\n","import { SYMBOL_UNSET_FIELD_NAME, SYMBOL_UPDATE_COMMAND } from '../helper/symbol';\nexport var UPDATE_COMMANDS_LITERAL;\n(function (UPDATE_COMMANDS_LITERAL) {\n UPDATE_COMMANDS_LITERAL[\"SET\"] = \"set\";\n UPDATE_COMMANDS_LITERAL[\"REMOVE\"] = \"remove\";\n UPDATE_COMMANDS_LITERAL[\"INC\"] = \"inc\";\n UPDATE_COMMANDS_LITERAL[\"MUL\"] = \"mul\";\n UPDATE_COMMANDS_LITERAL[\"PUSH\"] = \"push\";\n UPDATE_COMMANDS_LITERAL[\"PULL\"] = \"pull\";\n UPDATE_COMMANDS_LITERAL[\"PULL_ALL\"] = \"pullAll\";\n UPDATE_COMMANDS_LITERAL[\"POP\"] = \"pop\";\n UPDATE_COMMANDS_LITERAL[\"SHIFT\"] = \"shift\";\n UPDATE_COMMANDS_LITERAL[\"UNSHIFT\"] = \"unshift\";\n UPDATE_COMMANDS_LITERAL[\"ADD_TO_SET\"] = \"addToSet\";\n UPDATE_COMMANDS_LITERAL[\"BIT\"] = \"bit\";\n UPDATE_COMMANDS_LITERAL[\"RENAME\"] = \"rename\";\n UPDATE_COMMANDS_LITERAL[\"MAX\"] = \"max\";\n UPDATE_COMMANDS_LITERAL[\"MIN\"] = \"min\";\n})(UPDATE_COMMANDS_LITERAL || (UPDATE_COMMANDS_LITERAL = {}));\nvar UpdateCommand = (function () {\n function UpdateCommand(operator, operands, fieldName) {\n this._internalType = SYMBOL_UPDATE_COMMAND;\n Object.defineProperties(this, {\n _internalType: {\n enumerable: false,\n configurable: false,\n },\n });\n this.operator = operator;\n this.operands = operands;\n this.fieldName = fieldName || SYMBOL_UNSET_FIELD_NAME;\n }\n UpdateCommand.prototype._setFieldName = function (fieldName) {\n var command = new UpdateCommand(this.operator, this.operands, fieldName);\n return command;\n };\n return UpdateCommand;\n}());\nexport { UpdateCommand };\nexport function isUpdateCommand(object) {\n return object && (object instanceof UpdateCommand) && (object._internalType === SYMBOL_UPDATE_COMMAND);\n}\nexport function isKnownUpdateCommand(object) {\n return isUpdateCommand(object) && (object.operator.toUpperCase() in UPDATE_COMMANDS_LITERAL);\n}\nexport default UpdateCommand;\n","import { ErrorCode, WhereFilterOpList, OrderDirectionList, FieldType } from './constant';\nimport { Util } from './util';\nvar Validate = (function () {\n function Validate() {\n }\n Validate.isGeopoint = function (point, degree) {\n if (Util.whichType(degree) !== FieldType.Number) {\n throw new Error('Geo Point must be number type');\n }\n var degreeAbs = Math.abs(degree);\n if (point === 'latitude' && degreeAbs > 90) {\n throw new Error('latitude should be a number ranges from -90 to 90');\n }\n else if (point === 'longitude' && degreeAbs > 180) {\n throw new Error('longitude should be a number ranges from -180 to 180');\n }\n return true;\n };\n Validate.isInteger = function (param, num) {\n if (!Number.isInteger(num)) {\n throw new Error(param + ErrorCode.IntergerError);\n }\n return true;\n };\n Validate.isFieldOrder = function (direction) {\n if (OrderDirectionList.indexOf(direction) === -1) {\n throw new Error(ErrorCode.DirectionError);\n }\n return true;\n };\n Validate.isFieldPath = function (path) {\n if (!/^[a-zA-Z0-9-_\\.]/.test(path)) {\n throw new Error();\n }\n return true;\n };\n Validate.isOperator = function (op) {\n if (WhereFilterOpList.indexOf(op) === -1) {\n throw new Error(ErrorCode.OpStrError);\n }\n return true;\n };\n Validate.isCollName = function (name) {\n if (!/^[a-zA-Z0-9]([a-zA-Z0-9-_]){1,32}$/.test(name)) {\n throw new Error(ErrorCode.CollNameError);\n }\n return true;\n };\n Validate.isDocID = function (docId) {\n if (!/^([a-fA-F0-9]){24}$/.test(docId)) {\n throw new Error(ErrorCode.DocIDError);\n }\n return true;\n };\n return Validate;\n}());\nexport { Validate };\n","import { Validate } from '../validate';\nimport { SYMBOL_GEO_POINT } from '../helper/symbol';\nimport { isArray } from '../utils/type';\nvar Point = (function () {\n function Point(longitude, latitude) {\n Validate.isGeopoint('longitude', longitude);\n Validate.isGeopoint('latitude', latitude);\n this.longitude = longitude;\n this.latitude = latitude;\n }\n Point.prototype.parse = function (key) {\n var _a;\n return _a = {},\n _a[key] = {\n type: 'Point',\n coordinates: [this.longitude, this.latitude]\n },\n _a;\n };\n Point.prototype.toJSON = function () {\n return {\n type: 'Point',\n coordinates: [\n this.longitude,\n this.latitude,\n ],\n };\n };\n Point.prototype.toReadableString = function () {\n return \"[\".concat(this.longitude, \",\").concat(this.latitude, \"]\");\n };\n Point.validate = function (point) {\n return point.type === 'Point' &&\n isArray(point.coordinates) &&\n Validate.isGeopoint('longitude', point.coordinates[0]) &&\n Validate.isGeopoint('latitude', point.coordinates[1]);\n };\n Object.defineProperty(Point.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_GEO_POINT;\n },\n enumerable: false,\n configurable: true\n });\n return Point;\n}());\nexport { Point };\n","export var createPromiseCallback = function () {\n var cb = function () { };\n if (!Promise) {\n cb.promise = {};\n var throwPromiseNotDefined = function () {\n throw new Error('Your Node runtime does support ES6 Promises. ' +\n 'Set \"global.Promise\" to your preferred implementation of promises.');\n };\n Object.defineProperty(cb.promise, 'then', { get: throwPromiseNotDefined });\n Object.defineProperty(cb.promise, 'catch', { get: throwPromiseNotDefined });\n return cb;\n }\n var promise = new Promise(function (resolve, reject) {\n cb = function (err, data) {\n if (err)\n return reject(err);\n return resolve(data);\n };\n });\n cb.promise = promise;\n return cb;\n};\n","import { SYMBOL_UNSET_FIELD_NAME, SYMBOL_LOGIC_COMMAND } from '../helper/symbol';\nimport { isQueryCommand } from './query';\nexport var AND = 'and';\nexport var OR = 'or';\nexport var NOT = 'not';\nexport var NOR = 'nor';\nexport var LOGIC_COMMANDS_LITERAL;\n(function (LOGIC_COMMANDS_LITERAL) {\n LOGIC_COMMANDS_LITERAL[\"AND\"] = \"and\";\n LOGIC_COMMANDS_LITERAL[\"OR\"] = \"or\";\n LOGIC_COMMANDS_LITERAL[\"NOT\"] = \"not\";\n LOGIC_COMMANDS_LITERAL[\"NOR\"] = \"nor\";\n})(LOGIC_COMMANDS_LITERAL || (LOGIC_COMMANDS_LITERAL = {}));\nvar LogicCommand = (function () {\n function LogicCommand(operator, operands, fieldName) {\n this._internalType = SYMBOL_LOGIC_COMMAND;\n Object.defineProperties(this, {\n _internalType: {\n enumerable: false,\n configurable: false,\n },\n });\n this.operator = operator;\n this.operands = operands;\n this.fieldName = fieldName || SYMBOL_UNSET_FIELD_NAME;\n if (this.fieldName !== SYMBOL_UNSET_FIELD_NAME) {\n if (Array.isArray(operands)) {\n operands = operands.slice();\n this.operands = operands;\n for (var i = 0, len = operands.length; i < len; i++) {\n var query = operands[i];\n if (isLogicCommand(query) || isQueryCommand(query)) {\n operands[i] = query._setFieldName(this.fieldName);\n }\n }\n }\n else {\n var query = operands;\n if (isLogicCommand(query) || isQueryCommand(query)) {\n operands = query._setFieldName(this.fieldName);\n }\n }\n }\n }\n LogicCommand.prototype._setFieldName = function (fieldName) {\n var operands = this.operands.map(function (operand) {\n if (operand instanceof LogicCommand) {\n return operand._setFieldName(fieldName);\n }\n else {\n return operand;\n }\n });\n var command = new LogicCommand(this.operator, operands, fieldName);\n return command;\n };\n LogicCommand.prototype.and = function () {\n var __expressions__ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n __expressions__[_i] = arguments[_i];\n }\n var expressions = Array.isArray(arguments[0]) ? arguments[0] : Array.from(arguments);\n expressions.unshift(this);\n return new LogicCommand(LOGIC_COMMANDS_LITERAL.AND, expressions, this.fieldName);\n };\n LogicCommand.prototype.or = function () {\n var __expressions__ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n __expressions__[_i] = arguments[_i];\n }\n var expressions = Array.isArray(arguments[0]) ? arguments[0] : Array.from(arguments);\n expressions.unshift(this);\n return new LogicCommand(LOGIC_COMMANDS_LITERAL.OR, expressions, this.fieldName);\n };\n return LogicCommand;\n}());\nexport { LogicCommand };\nexport function isLogicCommand(object) {\n return object && (object instanceof LogicCommand) && (object._internalType === SYMBOL_LOGIC_COMMAND);\n}\nexport function isKnownLogicCommand(object) {\n return isLogicCommand && (object.operator.toUpperCase() in LOGIC_COMMANDS_LITERAL);\n}\nexport default LogicCommand;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { LogicCommand } from './logic';\nimport { SYMBOL_QUERY_COMMAND } from '../helper/symbol';\nimport { Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon } from '../geo/index';\nimport { isNumber } from '../utils/type';\nexport var EQ = 'eq';\nexport var NEQ = 'neq';\nexport var GT = 'gt';\nexport var GTE = 'gte';\nexport var LT = 'lt';\nexport var LTE = 'lte';\nexport var IN = 'in';\nexport var NIN = 'nin';\nexport var ALL = 'all';\nexport var ELEM_MATCH = 'elemMatch';\nexport var EXISTS = 'exists';\nexport var SIZE = 'size';\nexport var MOD = 'mod';\nexport var QUERY_COMMANDS_LITERAL;\n(function (QUERY_COMMANDS_LITERAL) {\n QUERY_COMMANDS_LITERAL[\"EQ\"] = \"eq\";\n QUERY_COMMANDS_LITERAL[\"NEQ\"] = \"neq\";\n QUERY_COMMANDS_LITERAL[\"GT\"] = \"gt\";\n QUERY_COMMANDS_LITERAL[\"GTE\"] = \"gte\";\n QUERY_COMMANDS_LITERAL[\"LT\"] = \"lt\";\n QUERY_COMMANDS_LITERAL[\"LTE\"] = \"lte\";\n QUERY_COMMANDS_LITERAL[\"IN\"] = \"in\";\n QUERY_COMMANDS_LITERAL[\"NIN\"] = \"nin\";\n QUERY_COMMANDS_LITERAL[\"ALL\"] = \"all\";\n QUERY_COMMANDS_LITERAL[\"ELEM_MATCH\"] = \"elemMatch\";\n QUERY_COMMANDS_LITERAL[\"EXISTS\"] = \"exists\";\n QUERY_COMMANDS_LITERAL[\"SIZE\"] = \"size\";\n QUERY_COMMANDS_LITERAL[\"MOD\"] = \"mod\";\n QUERY_COMMANDS_LITERAL[\"GEO_NEAR\"] = \"geoNear\";\n QUERY_COMMANDS_LITERAL[\"GEO_WITHIN\"] = \"geoWithin\";\n QUERY_COMMANDS_LITERAL[\"GEO_INTERSECTS\"] = \"geoIntersects\";\n})(QUERY_COMMANDS_LITERAL || (QUERY_COMMANDS_LITERAL = {}));\nvar QueryCommand = (function (_super) {\n __extends(QueryCommand, _super);\n function QueryCommand(operator, operands, fieldName) {\n var _this = _super.call(this, operator, operands, fieldName) || this;\n _this.operator = operator;\n _this._internalType = SYMBOL_QUERY_COMMAND;\n return _this;\n }\n QueryCommand.prototype.toJSON = function () {\n var _a, _b;\n switch (this.operator) {\n case QUERY_COMMANDS_LITERAL.IN:\n case QUERY_COMMANDS_LITERAL.NIN:\n return _a = {},\n _a['$' + this.operator] = this.operands,\n _a;\n default:\n return _b = {},\n _b['$' + this.operator] = this.operands[0],\n _b;\n }\n };\n QueryCommand.prototype._setFieldName = function (fieldName) {\n var command = new QueryCommand(this.operator, this.operands, fieldName);\n return command;\n };\n QueryCommand.prototype.eq = function (val) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.EQ, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.neq = function (val) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.NEQ, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.gt = function (val) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.GT, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.gte = function (val) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.GTE, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.lt = function (val) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.LT, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.lte = function (val) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.LTE, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.in = function (list) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.IN, list, this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.nin = function (list) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.NIN, list, this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.geoNear = function (val) {\n if (!(val.geometry instanceof Point)) {\n throw new TypeError(\"\\\"geometry\\\" must be of type Point. Received type \".concat(typeof val.geometry));\n }\n if (val.maxDistance !== undefined && !isNumber(val.maxDistance)) {\n throw new TypeError(\"\\\"maxDistance\\\" must be of type Number. Received type \".concat(typeof val.maxDistance));\n }\n if (val.minDistance !== undefined && !isNumber(val.minDistance)) {\n throw new TypeError(\"\\\"minDistance\\\" must be of type Number. Received type \".concat(typeof val.minDistance));\n }\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.GEO_NEAR, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.geoWithin = function (val) {\n if (!(val.geometry instanceof MultiPolygon) && !(val.geometry instanceof Polygon)) {\n throw new TypeError(\"\\\"geometry\\\" must be of type Polygon or MultiPolygon. Received type \".concat(typeof val.geometry));\n }\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.GEO_WITHIN, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.geoIntersects = function (val) {\n if (!(val.geometry instanceof Point) &&\n !(val.geometry instanceof LineString) &&\n !(val.geometry instanceof Polygon) &&\n !(val.geometry instanceof MultiPoint) &&\n !(val.geometry instanceof MultiLineString) &&\n !(val.geometry instanceof MultiPolygon)) {\n throw new TypeError(\"\\\"geometry\\\" must be of type Point, LineString, Polygon, MultiPoint, MultiLineString or MultiPolygon. Received type \".concat(typeof val.geometry));\n }\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.GEO_INTERSECTS, [val], this.fieldName);\n return this.and(command);\n };\n return QueryCommand;\n}(LogicCommand));\nexport { QueryCommand };\nexport function isQueryCommand(object) {\n return object && object instanceof QueryCommand && object._internalType === SYMBOL_QUERY_COMMAND;\n}\nexport function isKnownQueryCommand(object) {\n return isQueryCommand(object) && object.operator.toUpperCase() in QUERY_COMMANDS_LITERAL;\n}\nexport function isComparisonCommand(object) {\n return isQueryCommand(object);\n}\nexport default QueryCommand;\n","import { QUERY_COMMANDS_LITERAL } from './commands/query';\nimport { LOGIC_COMMANDS_LITERAL } from './commands/logic';\nimport { UPDATE_COMMANDS_LITERAL } from './commands/update';\nexport var OperatorMap = {};\nfor (var key in QUERY_COMMANDS_LITERAL) {\n OperatorMap[key] = '$' + key;\n}\nfor (var key in LOGIC_COMMANDS_LITERAL) {\n OperatorMap[key] = '$' + key;\n}\nfor (var key in UPDATE_COMMANDS_LITERAL) {\n OperatorMap[key] = '$' + key;\n}\nOperatorMap[QUERY_COMMANDS_LITERAL.NEQ] = '$ne';\nOperatorMap[UPDATE_COMMANDS_LITERAL.REMOVE] = '$unset';\nOperatorMap[UPDATE_COMMANDS_LITERAL.SHIFT] = '$pop';\nOperatorMap[UPDATE_COMMANDS_LITERAL.UNSHIFT] = '$push';\nexport function operatorToString(operator) {\n return OperatorMap[operator] || '$' + operator;\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { SYMBOL_GEO_POINT, SYMBOL_SERVER_DATE, SYMBOL_REGEXP } from '../helper/symbol';\nimport { getType, isObject, isArray, isDate, isNumber, isInternalObject, isRegExp } from '../utils/type';\nimport { Point } from '../geo/index';\nimport { ServerDate } from '../serverDate/index';\nexport function serialize(val) {\n return serializeHelper(val, [val]);\n}\nfunction serializeHelper(val, visited) {\n if (isInternalObject(val)) {\n switch (val._internalType) {\n case SYMBOL_GEO_POINT: {\n return val.toJSON();\n }\n case SYMBOL_SERVER_DATE: {\n return val.parse();\n }\n case SYMBOL_REGEXP: {\n return val.parse();\n }\n default: {\n return val.toJSON ? val.toJSON() : val;\n }\n }\n }\n else if (isDate(val)) {\n return {\n $date: +val,\n };\n }\n else if (isRegExp(val)) {\n return {\n $regex: val.source,\n $options: val.flags,\n };\n }\n else if (isArray(val)) {\n return val.map(function (item) {\n if (visited.indexOf(item) > -1) {\n throw new Error('Cannot convert circular structure to JSON');\n }\n return serializeHelper(item, __spreadArray(__spreadArray([], __read(visited), false), [\n item,\n ], false));\n });\n }\n else if (isObject(val)) {\n var ret = __assign({}, val);\n for (var key in ret) {\n if (visited.indexOf(ret[key]) > -1) {\n throw new Error('Cannot convert circular structure to JSON');\n }\n ret[key] = serializeHelper(ret[key], __spreadArray(__spreadArray([], __read(visited), false), [\n ret[key],\n ], false));\n }\n return ret;\n }\n else {\n return val;\n }\n}\nexport function deserialize(object) {\n var ret = __assign({}, object);\n for (var key in ret) {\n switch (key) {\n case '$date': {\n switch (getType(ret[key])) {\n case 'number': {\n return new Date(ret[key]);\n }\n case 'object': {\n return new ServerDate(ret[key]);\n }\n }\n break;\n }\n case 'type': {\n switch (ret.type) {\n case 'Point': {\n if (isArray(ret.coordinates) && isNumber(ret.coordinates[0]) && isNumber(ret.coordinates[1])) {\n return new Point(ret.coordinates[0], ret.coordinates[1]);\n }\n break;\n }\n }\n break;\n }\n }\n }\n return object;\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { getType, isObject, isArray, isDate, isRegExp, isInternalObject } from '../utils/type';\nimport { serialize as serializeInternalDataType, deserialize as deserializeInternalDataType } from './datatype';\nfunction flatten(query, shouldPreserverObject, parents, visited) {\n var cloned = __assign({}, query);\n for (var key in query) {\n if (/^\\$/.test(key))\n continue;\n var value = query[key];\n if (!value)\n continue;\n if (isObject(value) && !shouldPreserverObject(value)) {\n if (visited.indexOf(value) > -1) {\n throw new Error('Cannot convert circular structure to JSON');\n }\n var newParents = __spreadArray(__spreadArray([], __read(parents), false), [\n key,\n ], false);\n var newVisited = __spreadArray(__spreadArray([], __read(visited), false), [\n value,\n ], false);\n var flattenedChild = flatten(value, shouldPreserverObject, newParents, newVisited);\n cloned[key] = flattenedChild;\n var hasKeyNotCombined = false;\n for (var childKey in flattenedChild) {\n if (!/^\\$/.test(childKey)) {\n cloned[\"\".concat(key, \".\").concat(childKey)] = flattenedChild[childKey];\n delete cloned[key][childKey];\n }\n else {\n hasKeyNotCombined = true;\n }\n }\n if (!hasKeyNotCombined) {\n delete cloned[key];\n }\n }\n }\n return cloned;\n}\nexport function flattenQueryObject(query) {\n return flatten(query, isConversionRequired, [], [query]);\n}\nexport function flattenObject(object) {\n return flatten(object, function (_) { return false; }, [], [object]);\n}\nexport function mergeConditionAfterEncode(query, condition, key) {\n if (!condition[key]) {\n delete query[key];\n }\n for (var conditionKey in condition) {\n if (query[conditionKey]) {\n if (isArray(query[conditionKey])) {\n query[conditionKey].push(condition[conditionKey]);\n }\n else if (isObject(query[conditionKey])) {\n if (isObject(condition[conditionKey])) {\n Object.assign(query[conditionKey], condition[conditionKey]);\n }\n else {\n console.warn(\"unmergable condition, query is object but condition is \".concat(getType(condition), \", can only overwrite\"), condition, key);\n query[conditionKey] = condition[conditionKey];\n }\n }\n else {\n console.warn(\"to-merge query is of type \".concat(getType(query), \", can only overwrite\"), query, condition, key);\n query[conditionKey] = condition[conditionKey];\n }\n }\n else {\n query[conditionKey] = condition[conditionKey];\n }\n }\n}\nexport function isConversionRequired(val) {\n return isInternalObject(val) || isDate(val) || isRegExp(val);\n}\nexport function encodeInternalDataType(val) {\n return serializeInternalDataType(val);\n}\nexport function decodeInternalDataType(object) {\n return deserializeInternalDataType(object);\n}\n","import { UpdateCommand, isUpdateCommand, UPDATE_COMMANDS_LITERAL } from '../commands/update';\nimport { SYMBOL_UNSET_FIELD_NAME } from '../helper/symbol';\nimport { getType, isArray } from '../utils/type';\nimport { operatorToString } from '../operator-map';\nimport { flattenQueryObject, encodeInternalDataType, mergeConditionAfterEncode } from './common';\nvar UpdateSerializer = (function () {\n function UpdateSerializer() {\n }\n UpdateSerializer.encode = function (query) {\n var stringifier = new UpdateSerializer();\n return stringifier.encodeUpdate(query);\n };\n UpdateSerializer.prototype.encodeUpdate = function (query) {\n if (isUpdateCommand(query)) {\n return this.encodeUpdateCommand(query);\n }\n else if (getType(query) === 'object') {\n return this.encodeUpdateObject(query);\n }\n else {\n return query;\n }\n };\n UpdateSerializer.prototype.encodeUpdateCommand = function (query) {\n if (query.fieldName === SYMBOL_UNSET_FIELD_NAME) {\n throw new Error('Cannot encode a comparison command with unset field name');\n }\n switch (query.operator) {\n case UPDATE_COMMANDS_LITERAL.PUSH:\n case UPDATE_COMMANDS_LITERAL.PULL:\n case UPDATE_COMMANDS_LITERAL.PULL_ALL:\n case UPDATE_COMMANDS_LITERAL.POP:\n case UPDATE_COMMANDS_LITERAL.SHIFT:\n case UPDATE_COMMANDS_LITERAL.UNSHIFT:\n case UPDATE_COMMANDS_LITERAL.ADD_TO_SET: {\n return this.encodeArrayUpdateCommand(query);\n }\n default: {\n return this.encodeFieldUpdateCommand(query);\n }\n }\n };\n UpdateSerializer.prototype.encodeFieldUpdateCommand = function (query) {\n var _a, _b, _c, _d;\n var $op = operatorToString(query.operator);\n switch (query.operator) {\n case UPDATE_COMMANDS_LITERAL.REMOVE: {\n return _a = {},\n _a[$op] = (_b = {},\n _b[query.fieldName] = '',\n _b),\n _a;\n }\n default: {\n return _c = {},\n _c[$op] = (_d = {},\n _d[query.fieldName] = query.operands[0],\n _d),\n _c;\n }\n }\n };\n UpdateSerializer.prototype.encodeArrayUpdateCommand = function (query) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n var $op = operatorToString(query.operator);\n switch (query.operator) {\n case UPDATE_COMMANDS_LITERAL.PUSH: {\n var modifiers = void 0;\n if (isArray(query.operands)) {\n modifiers = {\n $each: query.operands.map(encodeInternalDataType)\n };\n }\n else {\n modifiers = query.operands;\n }\n return _a = {},\n _a[$op] = (_b = {},\n _b[query.fieldName] = modifiers,\n _b),\n _a;\n }\n case UPDATE_COMMANDS_LITERAL.UNSHIFT: {\n var modifiers = {\n $each: query.operands.map(encodeInternalDataType),\n $position: 0\n };\n return _c = {},\n _c[$op] = (_d = {},\n _d[query.fieldName] = modifiers,\n _d),\n _c;\n }\n case UPDATE_COMMANDS_LITERAL.POP: {\n return _e = {},\n _e[$op] = (_f = {},\n _f[query.fieldName] = 1,\n _f),\n _e;\n }\n case UPDATE_COMMANDS_LITERAL.SHIFT: {\n return _g = {},\n _g[$op] = (_h = {},\n _h[query.fieldName] = -1,\n _h),\n _g;\n }\n default: {\n return _j = {},\n _j[$op] = (_k = {},\n _k[query.fieldName] = encodeInternalDataType(query.operands),\n _k),\n _j;\n }\n }\n };\n UpdateSerializer.prototype.encodeUpdateObject = function (query) {\n var flattened = flattenQueryObject(query);\n for (var key in flattened) {\n if (/^\\$/.test(key))\n continue;\n var val = flattened[key];\n if (isUpdateCommand(val)) {\n flattened[key] = val._setFieldName(key);\n var condition = this.encodeUpdateCommand(flattened[key]);\n mergeConditionAfterEncode(flattened, condition, key);\n }\n else {\n flattened[key] = val = encodeInternalDataType(val);\n var $setCommand = new UpdateCommand(UPDATE_COMMANDS_LITERAL.SET, [val], key);\n var condition = this.encodeUpdateCommand($setCommand);\n mergeConditionAfterEncode(flattened, condition, key);\n }\n }\n return flattened;\n };\n return UpdateSerializer;\n}());\nexport { UpdateSerializer };\n","import { Db } from '../';\nexport var sleep = function (ms) {\n if (ms === void 0) { ms = 0; }\n return new Promise(function (r) { return setTimeout(r, ms); });\n};\nvar counters = {};\nexport var autoCount = function (domain) {\n if (domain === void 0) { domain = 'any'; }\n if (!counters[domain]) {\n counters[domain] = 0;\n }\n return counters[domain]++;\n};\nvar wsList = {};\nexport function getWsInstance(db) {\n if (!Db.wsClientClass) {\n throw new Error('to use realtime you must import realtime module first');\n }\n var env = db.config.env;\n if (!wsList[env]) {\n wsList[env] = new Db.wsClientClass({\n context: {\n appConfig: {\n docSizeLimit: 1000,\n realtimePingInterval: 10000,\n realtimePongWaitTimeout: 5000,\n request: Db.createRequest(db.config)\n }\n }\n });\n }\n return wsList[env];\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { createPromiseCallback } from './lib/util';\nimport { Db } from './index';\nimport { Util } from './util';\nimport { UpdateSerializer } from './serializer/update';\nimport { serialize } from './serializer/datatype';\nimport { UpdateCommand } from './commands/update';\nimport { QueryType } from './constant';\nimport { getWsInstance } from './utils/utils';\nvar DocumentReference = (function () {\n function DocumentReference(db, coll, docID, projection) {\n if (projection === void 0) { projection = {}; }\n var _this = this;\n this.watch = function (options) {\n var ws = getWsInstance(_this._db);\n return ws.watch(__assign(__assign({}, options), { envId: _this._db.config.env, collectionName: _this._coll, query: JSON.stringify({\n _id: _this.id\n }) }));\n };\n this._db = db;\n this._coll = coll;\n this.id = docID;\n this.request = Db.createRequest(this._db.config);\n this.projection = projection;\n }\n DocumentReference.prototype.create = function (data, callback) {\n callback = callback || createPromiseCallback();\n var isBatch = Array.isArray(data);\n var params = {\n collectionName: this._coll,\n data: isBatch ? data.map(function (item) { return serialize(item); }) : serialize(data)\n };\n if (!isBatch && this.id) {\n params['_id'] = this.id;\n }\n this.request\n .send('database.addDocument', params)\n .then(function (res) {\n var _a;\n if (res.code) {\n callback(0, res);\n }\n else {\n if (isBatch) {\n callback(0, {\n ids: ((_a = res.data) === null || _a === void 0 ? void 0 : _a.insertedIds) || [],\n requestId: res.requestId\n });\n }\n else {\n callback(0, {\n id: res.data._id,\n requestId: res.requestId\n });\n }\n }\n })\n .catch(function (err) {\n callback(err);\n });\n return callback.promise;\n };\n DocumentReference.prototype.set = function (data, callback) {\n callback = callback || createPromiseCallback();\n if (!this.id) {\n return Promise.resolve({\n code: 'INVALID_PARAM',\n message: 'docId不能为空'\n });\n }\n if (!data || typeof data !== 'object') {\n return Promise.resolve({\n code: 'INVALID_PARAM',\n message: '参数必需是非空对象'\n });\n }\n if (data.hasOwnProperty('_id')) {\n return Promise.resolve({\n code: 'INVALID_PARAM',\n message: '不能更新_id的值'\n });\n }\n var hasOperator = false;\n var checkMixed = function (objs) {\n if (typeof objs === 'object') {\n for (var key in objs) {\n if (objs[key] instanceof UpdateCommand) {\n hasOperator = true;\n }\n else if (typeof objs[key] === 'object') {\n checkMixed(objs[key]);\n }\n }\n }\n };\n checkMixed(data);\n if (hasOperator) {\n return Promise.resolve({\n code: 'DATABASE_REQUEST_FAILED',\n message: 'update operator complicit'\n });\n }\n var merge = false;\n var param = {\n collectionName: this._coll,\n queryType: QueryType.DOC,\n data: serialize(data),\n multi: false,\n merge: merge,\n upsert: true\n };\n if (this.id) {\n param['query'] = { _id: this.id };\n }\n this.request\n .send('database.updateDocument', param)\n .then(function (res) {\n if (res.code) {\n callback(0, res);\n }\n else {\n callback(0, {\n updated: res.data.updated,\n upsertedId: res.data.upserted_id,\n requestId: res.requestId\n });\n }\n })\n .catch(function (err) {\n callback(err);\n });\n return callback.promise;\n };\n DocumentReference.prototype.update = function (data, callback) {\n callback = callback || createPromiseCallback();\n if (!data || typeof data !== 'object') {\n return Promise.resolve({\n code: 'INVALID_PARAM',\n message: '参数必需是非空对象'\n });\n }\n if (data.hasOwnProperty('_id')) {\n return Promise.resolve({\n code: 'INVALID_PARAM',\n message: '不能更新_id的值'\n });\n }\n var query = { _id: this.id };\n var merge = true;\n var param = {\n collectionName: this._coll,\n data: UpdateSerializer.encode(data),\n query: query,\n queryType: QueryType.DOC,\n multi: false,\n merge: merge,\n upsert: false\n };\n this.request\n .send('database.updateDocument', param)\n .then(function (res) {\n if (res.code) {\n callback(0, res);\n }\n else {\n callback(0, {\n updated: res.data.updated,\n upsertedId: res.data.upserted_id,\n requestId: res.requestId\n });\n }\n })\n .catch(function (err) {\n callback(err);\n });\n return callback.promise;\n };\n DocumentReference.prototype.remove = function (callback) {\n callback = callback || createPromiseCallback();\n var query = { _id: this.id };\n var param = {\n collectionName: this._coll,\n query: query,\n queryType: QueryType.DOC,\n multi: false\n };\n this.request\n .send('database.deleteDocument', param)\n .then(function (res) {\n if (res.code) {\n callback(0, res);\n }\n else {\n callback(0, {\n deleted: res.data.deleted,\n requestId: res.requestId\n });\n }\n })\n .catch(function (err) {\n callback(err);\n });\n return callback.promise;\n };\n DocumentReference.prototype.get = function (callback) {\n callback = callback || createPromiseCallback();\n var query = { _id: this.id };\n var param = {\n collectionName: this._coll,\n query: query,\n queryType: QueryType.DOC,\n multi: false,\n projection: this.projection\n };\n this.request\n .send('database.queryDocument', param)\n .then(function (res) {\n if (res.code) {\n callback(0, res);\n }\n else {\n var documents = Util.formatResDocumentData(res.data.list);\n callback(0, {\n data: documents,\n requestId: res.requestId\n });\n }\n })\n .catch(function (err) {\n callback(err);\n });\n return callback.promise;\n };\n DocumentReference.prototype.field = function (projection) {\n for (var k in projection) {\n if (projection[k]) {\n projection[k] = 1;\n }\n else {\n projection[k] = 0;\n }\n }\n return new DocumentReference(this._db, this._coll, this.id, projection);\n };\n return DocumentReference;\n}());\nexport { DocumentReference };\n","import { isQueryCommand, isComparisonCommand, QUERY_COMMANDS_LITERAL } from '../commands/query';\nimport { isLogicCommand, LOGIC_COMMANDS_LITERAL } from '../commands/logic';\nimport { SYMBOL_UNSET_FIELD_NAME } from '../helper/symbol';\nimport { getType, isObject, isArray, isRegExp } from '../utils/type';\nimport { operatorToString } from '../operator-map';\nimport { flattenQueryObject, isConversionRequired, encodeInternalDataType } from './common';\nvar QuerySerializer = (function () {\n function QuerySerializer() {\n }\n QuerySerializer.encode = function (query) {\n var encoder = new QueryEncoder();\n return encoder.encodeQuery(query);\n };\n return QuerySerializer;\n}());\nexport { QuerySerializer };\nvar QueryEncoder = (function () {\n function QueryEncoder() {\n }\n QueryEncoder.prototype.encodeQuery = function (query, key) {\n var _a;\n if (isConversionRequired(query)) {\n if (isLogicCommand(query)) {\n return this.encodeLogicCommand(query);\n }\n else if (isQueryCommand(query)) {\n return this.encodeQueryCommand(query);\n }\n else {\n return _a = {}, _a[key] = this.encodeQueryObject(query), _a;\n }\n }\n else {\n if (isObject(query)) {\n return this.encodeQueryObject(query);\n }\n else {\n return query;\n }\n }\n };\n QueryEncoder.prototype.encodeRegExp = function (query) {\n return {\n $regex: query.source,\n $options: query.flags\n };\n };\n QueryEncoder.prototype.encodeLogicCommand = function (query) {\n var _a, _b, _c, _d, _e, _f, _g;\n var _this = this;\n switch (query.operator) {\n case LOGIC_COMMANDS_LITERAL.NOR:\n case LOGIC_COMMANDS_LITERAL.AND:\n case LOGIC_COMMANDS_LITERAL.OR: {\n var $op = operatorToString(query.operator);\n var subqueries = query.operands.map(function (oprand) {\n return _this.encodeQuery(oprand, query.fieldName);\n });\n return _a = {},\n _a[$op] = subqueries,\n _a;\n }\n case LOGIC_COMMANDS_LITERAL.NOT: {\n var $op = operatorToString(query.operator);\n var operatorExpression = query.operands[0];\n if (isRegExp(operatorExpression)) {\n return _b = {},\n _b[query.fieldName] = (_c = {},\n _c[$op] = this.encodeRegExp(operatorExpression),\n _c),\n _b;\n }\n else {\n var subqueries = this.encodeQuery(operatorExpression)[query.fieldName];\n return _d = {},\n _d[query.fieldName] = (_e = {},\n _e[$op] = subqueries,\n _e),\n _d;\n }\n }\n default: {\n var $op = operatorToString(query.operator);\n if (query.operands.length === 1) {\n var subquery = this.encodeQuery(query.operands[0]);\n return _f = {},\n _f[$op] = subquery,\n _f;\n }\n else {\n var subqueries = query.operands.map(this.encodeQuery.bind(this));\n return _g = {},\n _g[$op] = subqueries,\n _g;\n }\n }\n }\n };\n QueryEncoder.prototype.encodeQueryCommand = function (query) {\n if (isComparisonCommand(query)) {\n return this.encodeComparisonCommand(query);\n }\n else {\n return this.encodeComparisonCommand(query);\n }\n };\n QueryEncoder.prototype.encodeComparisonCommand = function (query) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n if (query.fieldName === SYMBOL_UNSET_FIELD_NAME) {\n throw new Error('Cannot encode a comparison command with unset field name');\n }\n var $op = operatorToString(query.operator);\n switch (query.operator) {\n case QUERY_COMMANDS_LITERAL.EQ:\n case QUERY_COMMANDS_LITERAL.NEQ:\n case QUERY_COMMANDS_LITERAL.LT:\n case QUERY_COMMANDS_LITERAL.LTE:\n case QUERY_COMMANDS_LITERAL.GT:\n case QUERY_COMMANDS_LITERAL.GTE:\n case QUERY_COMMANDS_LITERAL.ELEM_MATCH:\n case QUERY_COMMANDS_LITERAL.EXISTS:\n case QUERY_COMMANDS_LITERAL.SIZE:\n case QUERY_COMMANDS_LITERAL.MOD: {\n return _a = {},\n _a[query.fieldName] = (_b = {},\n _b[$op] = encodeInternalDataType(query.operands[0]),\n _b),\n _a;\n }\n case QUERY_COMMANDS_LITERAL.IN:\n case QUERY_COMMANDS_LITERAL.NIN:\n case QUERY_COMMANDS_LITERAL.ALL: {\n return _c = {},\n _c[query.fieldName] = (_d = {},\n _d[$op] = encodeInternalDataType(query.operands),\n _d),\n _c;\n }\n case QUERY_COMMANDS_LITERAL.GEO_NEAR: {\n var options = query.operands[0];\n return _e = {},\n _e[query.fieldName] = {\n $nearSphere: {\n $geometry: options.geometry.toJSON(),\n $maxDistance: options.maxDistance,\n $minDistance: options.minDistance\n }\n },\n _e;\n }\n case QUERY_COMMANDS_LITERAL.GEO_WITHIN: {\n var options = query.operands[0];\n return _f = {},\n _f[query.fieldName] = {\n $geoWithin: {\n $geometry: options.geometry.toJSON()\n }\n },\n _f;\n }\n case QUERY_COMMANDS_LITERAL.GEO_INTERSECTS: {\n var options = query.operands[0];\n return _g = {},\n _g[query.fieldName] = {\n $geoIntersects: {\n $geometry: options.geometry.toJSON()\n }\n },\n _g;\n }\n default: {\n return _h = {},\n _h[query.fieldName] = (_j = {},\n _j[$op] = encodeInternalDataType(query.operands[0]),\n _j),\n _h;\n }\n }\n };\n QueryEncoder.prototype.encodeQueryObject = function (query) {\n var flattened = flattenQueryObject(query);\n for (var key in flattened) {\n var val = flattened[key];\n if (isLogicCommand(val)) {\n flattened[key] = val._setFieldName(key);\n var condition = this.encodeLogicCommand(flattened[key]);\n this.mergeConditionAfterEncode(flattened, condition, key);\n }\n else if (isComparisonCommand(val)) {\n flattened[key] = val._setFieldName(key);\n var condition = this.encodeComparisonCommand(flattened[key]);\n this.mergeConditionAfterEncode(flattened, condition, key);\n }\n else if (isConversionRequired(val)) {\n flattened[key] = encodeInternalDataType(val);\n }\n }\n return flattened;\n };\n QueryEncoder.prototype.mergeConditionAfterEncode = function (query, condition, key) {\n if (!condition[key]) {\n delete query[key];\n }\n for (var conditionKey in condition) {\n if (query[conditionKey]) {\n if (isArray(query[conditionKey])) {\n query[conditionKey] = query[conditionKey].concat(condition[conditionKey]);\n }\n else if (isObject(query[conditionKey])) {\n if (isObject(condition[conditionKey])) {\n Object.assign(query, condition);\n }\n else {\n console.warn(\"unmergable condition, query is object but condition is \".concat(getType(condition), \", can only overwrite\"), condition, key);\n query[conditionKey] = condition[conditionKey];\n }\n }\n else {\n console.warn(\"to-merge query is of type \".concat(getType(query), \", can only overwrite\"), query, condition, key);\n query[conditionKey] = condition[conditionKey];\n }\n }\n else {\n query[conditionKey] = condition[conditionKey];\n }\n }\n };\n return QueryEncoder;\n}());\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { createPromiseCallback } from './lib/util';\nimport { QueryType } from './constant';\nimport { Db } from './index';\nimport { Validate } from './validate';\nimport { Util } from './util';\nimport { QuerySerializer } from './serializer/query';\nimport { UpdateSerializer } from './serializer/update';\nimport { ErrorCode } from './constant';\nimport { getWsInstance } from './utils/utils';\nvar Query = (function () {\n function Query(db, coll, fieldFilters, fieldOrders, queryOptions) {\n var _this = this;\n this.watch = function (options) {\n var ws = getWsInstance(_this._db);\n return ws.watch(__assign(__assign({}, options), { envId: _this._db.config.env, collectionName: _this._coll, query: JSON.stringify(_this._fieldFilters || {}), limit: _this._queryOptions.limit, orderBy: _this._fieldOrders\n ? _this._fieldOrders.reduce(function (acc, cur) {\n acc[cur.field] = cur.direction;\n return acc;\n }, {})\n : undefined }));\n };\n this._db = db;\n this._coll = coll;\n this._fieldFilters = fieldFilters;\n this._fieldOrders = fieldOrders || [];\n this._queryOptions = queryOptions || {};\n this._request = Db.createRequest(this._db.config);\n }\n Query.prototype.get = function (callback) {\n callback = callback || createPromiseCallback();\n var newOder = [];\n if (this._fieldOrders) {\n this._fieldOrders.forEach(function (order) {\n newOder.push(order);\n });\n }\n var param = {\n collectionName: this._coll,\n queryType: QueryType.WHERE\n };\n if (this._fieldFilters) {\n param.query = this._fieldFilters;\n }\n if (newOder.length > 0) {\n param.order = newOder;\n }\n if (this._queryOptions.offset) {\n param.offset = this._queryOptions.offset;\n }\n if (this._queryOptions.limit) {\n param.limit = this._queryOptions.limit < 1000 ? this._queryOptions.limit : 1000;\n }\n else {\n param.limit = 100;\n }\n if (this._queryOptions.projection) {\n param.projection = this._queryOptions.projection;\n }\n this._request\n .send('database.queryDocument', param)\n .then(function (res) {\n if (res.code) {\n callback(0, res);\n }\n else {\n var documents = Util.formatResDocumentData(res.data.list);\n var result = {\n data: documents,\n requestId: res.requestId\n };\n if (res.total !== undefined)\n result.total = res.total;\n if (res.limit !== undefined)\n result.limit = res.limit;\n if (res.offset !== undefined)\n result.offset = res.offset;\n callback(0, result);\n }\n })\n .catch(function (err) {\n callback(err);\n });\n return callback.promise;\n };\n Query.prototype.count = function (callback) {\n callback = callback || createPromiseCallback();\n var param = {\n collectionName: this._coll,\n queryType: QueryType.WHERE\n };\n if (this._fieldFilters) {\n param.query = this._fieldFilters;\n }\n this._request\n .send('database.countDocument', param)\n .then(function (res) {\n if (res.code) {\n callback(0, res);\n }\n else {\n callback(0, {\n requestId: res.requestId,\n total: res.data.total\n });\n }\n })\n .catch(function (e) {\n callback(e);\n });\n return callback.promise;\n };\n Query.prototype.where = function (query) {\n if (Object.prototype.toString.call(query).slice(8, -1) !== 'Object') {\n throw Error(ErrorCode.QueryParamTypeError);\n }\n var keys = Object.keys(query);\n var checkFlag = keys.some(function (item) {\n return query[item] !== undefined;\n });\n if (keys.length && !checkFlag) {\n throw Error(ErrorCode.QueryParamValueError);\n }\n return new Query(this._db, this._coll, QuerySerializer.encode(query), this._fieldOrders, this._queryOptions);\n };\n Query.prototype.orderBy = function (fieldPath, directionStr) {\n Validate.isFieldPath(fieldPath);\n Validate.isFieldOrder(directionStr);\n var newOrder = {\n field: fieldPath,\n direction: directionStr\n };\n var combinedOrders = this._fieldOrders.concat(newOrder);\n return new Query(this._db, this._coll, this._fieldFilters, combinedOrders, this._queryOptions);\n };\n Query.prototype.limit = function (limit) {\n Validate.isInteger('limit', limit);\n var option = __assign({}, this._queryOptions);\n option.limit = limit;\n return new Query(this._db, this._coll, this._fieldFilters, this._fieldOrders, option);\n };\n Query.prototype.skip = function (offset) {\n Validate.isInteger('offset', offset);\n var option = __assign({}, this._queryOptions);\n option.offset = offset;\n return new Query(this._db, this._coll, this._fieldFilters, this._fieldOrders, option);\n };\n Query.prototype.update = function (data, callback) {\n callback = callback || createPromiseCallback();\n if (!data || typeof data !== 'object') {\n return Promise.resolve({\n code: 'INVALID_PARAM',\n message: '参数必需是非空对象'\n });\n }\n if (data.hasOwnProperty('_id')) {\n return Promise.resolve({\n code: 'INVALID_PARAM',\n message: '不能更新_id的值'\n });\n }\n var param = {\n collectionName: this._coll,\n query: this._fieldFilters,\n queryType: QueryType.WHERE,\n multi: true,\n merge: true,\n upsert: false,\n data: UpdateSerializer.encode(data)\n };\n this._request\n .send('database.updateDocument', param)\n .then(function (res) {\n if (res.code) {\n callback(0, res);\n }\n else {\n callback(0, {\n requestId: res.requestId,\n updated: res.data.updated,\n upsertId: res.data.upsert_id\n });\n }\n })\n .catch(function (e) {\n callback(e);\n });\n return callback.promise;\n };\n Query.prototype.field = function (projection) {\n for (var k in projection) {\n if (projection[k]) {\n if (typeof projection[k] !== 'object') {\n projection[k] = 1;\n }\n }\n else {\n projection[k] = 0;\n }\n }\n var option = __assign({}, this._queryOptions);\n option.projection = projection;\n return new Query(this._db, this._coll, this._fieldFilters, this._fieldOrders, option);\n };\n Query.prototype.remove = function (callback) {\n callback = callback || createPromiseCallback();\n if (Object.keys(this._queryOptions).length > 0) {\n console.warn('`offset`, `limit` and `projection` are not supported in remove() operation');\n }\n if (this._fieldOrders.length > 0) {\n console.warn('`orderBy` is not supported in remove() operation');\n }\n var param = {\n collectionName: this._coll,\n query: QuerySerializer.encode(this._fieldFilters),\n queryType: QueryType.WHERE,\n multi: true\n };\n this._request\n .send('database.deleteDocument', param)\n .then(function (res) {\n if (res.code) {\n callback(0, res);\n }\n else {\n callback(0, {\n requestId: res.requestId,\n deleted: res.data.deleted\n });\n }\n })\n .catch(function (e) {\n callback(e);\n });\n return callback.promise;\n };\n return Query;\n}());\nexport { Query };\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { Db } from './index';\nimport { EJSON } from 'bson';\nimport { QuerySerializer } from './serializer/query';\nimport { Point } from './geo';\nvar Aggregation = (function () {\n function Aggregation(db, collectionName) {\n this._stages = [];\n if (db && collectionName) {\n this._db = db;\n this._request = Db.createRequest(this._db.config);\n this._collectionName = collectionName;\n }\n }\n Aggregation.prototype.end = function () {\n return __awaiter(this, void 0, void 0, function () {\n var result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._collectionName || !this._db) {\n throw new Error('Aggregation pipeline cannot send request');\n }\n return [4, this._request.send('database.aggregate', {\n collectionName: this._collectionName,\n stages: this._stages\n })];\n case 1:\n result = _a.sent();\n if (result && result.data && result.data.list) {\n return [2, {\n requestId: result.requestId,\n data: JSON.parse(result.data.list).map(EJSON.parse)\n }];\n }\n return [2, result];\n }\n });\n });\n };\n Aggregation.prototype.unwrap = function () {\n return this._stages;\n };\n Aggregation.prototype.done = function () {\n return this._stages.map(function (_a) {\n var _b;\n var stageKey = _a.stageKey, stageValue = _a.stageValue;\n return _b = {},\n _b[stageKey] = JSON.parse(stageValue),\n _b;\n });\n };\n Aggregation.prototype._pipe = function (stage, param) {\n this._stages.push({\n stageKey: \"$\".concat(stage),\n stageValue: JSON.stringify(param)\n });\n return this;\n };\n Aggregation.prototype.addFields = function (param) {\n return this._pipe('addFields', param);\n };\n Aggregation.prototype.bucket = function (param) {\n return this._pipe('bucket', param);\n };\n Aggregation.prototype.bucketAuto = function (param) {\n return this._pipe('bucketAuto', param);\n };\n Aggregation.prototype.count = function (param) {\n return this._pipe('count', param);\n };\n Aggregation.prototype.geoNear = function (param) {\n if (param.query) {\n param.query = QuerySerializer.encode(param.query);\n }\n if (param.distanceMultiplier && typeof (param.distanceMultiplier) === 'number') {\n param.distanceMultiplier = param.distanceMultiplier;\n }\n if (param.near) {\n param.near = new Point(param.near.longitude, param.near.latitude).toJSON();\n }\n return this._pipe('geoNear', param);\n };\n Aggregation.prototype.group = function (param) {\n return this._pipe('group', param);\n };\n Aggregation.prototype.limit = function (param) {\n return this._pipe('limit', param);\n };\n Aggregation.prototype.match = function (param) {\n return this._pipe('match', QuerySerializer.encode(param));\n };\n Aggregation.prototype.project = function (param) {\n return this._pipe('project', param);\n };\n Aggregation.prototype.lookup = function (param) {\n return this._pipe('lookup', param);\n };\n Aggregation.prototype.replaceRoot = function (param) {\n return this._pipe('replaceRoot', param);\n };\n Aggregation.prototype.sample = function (param) {\n return this._pipe('sample', param);\n };\n Aggregation.prototype.skip = function (param) {\n return this._pipe('skip', param);\n };\n Aggregation.prototype.sort = function (param) {\n return this._pipe('sort', param);\n };\n Aggregation.prototype.sortByCount = function (param) {\n return this._pipe('sortByCount', param);\n };\n Aggregation.prototype.unwind = function (param) {\n return this._pipe('unwind', param);\n };\n return Aggregation;\n}());\nexport default Aggregation;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { DocumentReference } from './document';\nimport { Query } from './query';\nimport Aggregation from './aggregate';\nvar CollectionReference = (function (_super) {\n __extends(CollectionReference, _super);\n function CollectionReference(db, coll) {\n return _super.call(this, db, coll) || this;\n }\n Object.defineProperty(CollectionReference.prototype, \"name\", {\n get: function () {\n return this._coll;\n },\n enumerable: false,\n configurable: true\n });\n CollectionReference.prototype.doc = function (docID) {\n if (typeof docID !== 'string' && typeof docID !== 'number') {\n throw new Error('docId必须为字符串或数字');\n }\n return new DocumentReference(this._db, this._coll, docID);\n };\n CollectionReference.prototype.add = function (data, callback) {\n var docRef = new DocumentReference(this._db, this._coll, undefined);\n return docRef.create(data, callback);\n };\n CollectionReference.prototype.aggregate = function () {\n return new Aggregation(this._db, this._coll);\n };\n return CollectionReference;\n}(Query));\nexport { CollectionReference };\n","import { QueryCommand, QUERY_COMMANDS_LITERAL } from './commands/query';\nimport { LogicCommand, LOGIC_COMMANDS_LITERAL } from './commands/logic';\nimport { UpdateCommand, UPDATE_COMMANDS_LITERAL } from './commands/update';\nimport { isArray, isObject, isString } from './utils/type';\nimport Aggregation from './aggregate';\nexport var Command = {\n eq: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.EQ, [val]);\n },\n neq: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.NEQ, [val]);\n },\n lt: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.LT, [val]);\n },\n lte: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.LTE, [val]);\n },\n gt: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.GT, [val]);\n },\n gte: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.GTE, [val]);\n },\n in: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.IN, val);\n },\n nin: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.NIN, val);\n },\n all: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.ALL, val);\n },\n elemMatch: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.ELEM_MATCH, [val]);\n },\n exists: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.EXISTS, [val]);\n },\n size: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.SIZE, [val]);\n },\n mod: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.MOD, [val]);\n },\n geoNear: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.GEO_NEAR, [val]);\n },\n geoWithin: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.GEO_WITHIN, [val]);\n },\n geoIntersects: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.GEO_INTERSECTS, [val]);\n },\n and: function () {\n var __expressions__ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n __expressions__[_i] = arguments[_i];\n }\n var expressions = isArray(arguments[0]) ? arguments[0] : Array.from(arguments);\n return new LogicCommand(LOGIC_COMMANDS_LITERAL.AND, expressions);\n },\n nor: function () {\n var __expressions__ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n __expressions__[_i] = arguments[_i];\n }\n var expressions = isArray(arguments[0]) ? arguments[0] : Array.from(arguments);\n return new LogicCommand(LOGIC_COMMANDS_LITERAL.NOR, expressions);\n },\n or: function () {\n var __expressions__ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n __expressions__[_i] = arguments[_i];\n }\n var expressions = isArray(arguments[0]) ? arguments[0] : Array.from(arguments);\n return new LogicCommand(LOGIC_COMMANDS_LITERAL.OR, expressions);\n },\n not: function () {\n var __expressions__ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n __expressions__[_i] = arguments[_i];\n }\n var expressions = isArray(arguments[0]) ? arguments[0] : Array.from(arguments);\n return new LogicCommand(LOGIC_COMMANDS_LITERAL.NOT, expressions);\n },\n set: function (val) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.SET, [val]);\n },\n remove: function () {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.REMOVE, []);\n },\n inc: function (val) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.INC, [val]);\n },\n mul: function (val) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.MUL, [val]);\n },\n push: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var values;\n if (isObject(args[0]) && args[0].hasOwnProperty('each')) {\n var options = args[0];\n values = {\n $each: options.each,\n $position: options.position,\n $sort: options.sort,\n $slice: options.slice\n };\n }\n else if (isArray(args[0])) {\n values = args[0];\n }\n else {\n values = Array.from(args);\n }\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.PUSH, values);\n },\n pull: function (values) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.PULL, values);\n },\n pullAll: function (values) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.PULL_ALL, values);\n },\n pop: function () {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.POP, []);\n },\n shift: function () {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.SHIFT, []);\n },\n unshift: function () {\n var __values__ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n __values__[_i] = arguments[_i];\n }\n var values = isArray(arguments[0]) ? arguments[0] : Array.from(arguments);\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.UNSHIFT, values);\n },\n addToSet: function (values) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.ADD_TO_SET, values);\n },\n rename: function (values) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.RENAME, [values]);\n },\n bit: function (values) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.BIT, [values]);\n },\n max: function (values) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.MAX, [values]);\n },\n min: function (values) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.MIN, [values]);\n },\n expr: function (values) {\n return {\n $expr: values\n };\n },\n jsonSchema: function (schema) {\n return {\n $jsonSchema: schema\n };\n },\n text: function (values) {\n if (isString(values)) {\n return {\n $search: values.search\n };\n }\n else {\n return {\n $search: values.search,\n $language: values.language,\n $caseSensitive: values.caseSensitive,\n $diacriticSensitive: values.diacriticSensitive\n };\n }\n },\n aggregate: {\n pipeline: function () {\n return new Aggregation();\n },\n abs: function (param) { return new AggregationOperator('abs', param); },\n add: function (param) { return new AggregationOperator('add', param); },\n ceil: function (param) { return new AggregationOperator('ceil', param); },\n divide: function (param) { return new AggregationOperator('divide', param); },\n exp: function (param) { return new AggregationOperator('exp', param); },\n floor: function (param) { return new AggregationOperator('floor', param); },\n ln: function (param) { return new AggregationOperator('ln', param); },\n log: function (param) { return new AggregationOperator('log', param); },\n log10: function (param) { return new AggregationOperator('log10', param); },\n mod: function (param) { return new AggregationOperator('mod', param); },\n multiply: function (param) { return new AggregationOperator('multiply', param); },\n pow: function (param) { return new AggregationOperator('pow', param); },\n sqrt: function (param) { return new AggregationOperator('sqrt', param); },\n subtract: function (param) { return new AggregationOperator('subtract', param); },\n trunc: function (param) { return new AggregationOperator('trunc', param); },\n arrayElemAt: function (param) { return new AggregationOperator('arrayElemAt', param); },\n arrayToObject: function (param) { return new AggregationOperator('arrayToObject', param); },\n concatArrays: function (param) { return new AggregationOperator('concatArrays', param); },\n filter: function (param) { return new AggregationOperator('filter', param); },\n in: function (param) { return new AggregationOperator('in', param); },\n indexOfArray: function (param) { return new AggregationOperator('indexOfArray', param); },\n isArray: function (param) { return new AggregationOperator('isArray', param); },\n map: function (param) { return new AggregationOperator('map', param); },\n range: function (param) { return new AggregationOperator('range', param); },\n reduce: function (param) { return new AggregationOperator('reduce', param); },\n reverseArray: function (param) { return new AggregationOperator('reverseArray', param); },\n size: function (param) { return new AggregationOperator('size', param); },\n slice: function (param) { return new AggregationOperator('slice', param); },\n zip: function (param) { return new AggregationOperator('zip', param); },\n and: function (param) { return new AggregationOperator('and', param); },\n not: function (param) { return new AggregationOperator('not', param); },\n or: function (param) { return new AggregationOperator('or', param); },\n cmp: function (param) { return new AggregationOperator('cmp', param); },\n eq: function (param) { return new AggregationOperator('eq', param); },\n gt: function (param) { return new AggregationOperator('gt', param); },\n gte: function (param) { return new AggregationOperator('gte', param); },\n lt: function (param) { return new AggregationOperator('lt', param); },\n lte: function (param) { return new AggregationOperator('lte', param); },\n neq: function (param) { return new AggregationOperator('ne', param); },\n cond: function (param) { return new AggregationOperator('cond', param); },\n ifNull: function (param) { return new AggregationOperator('ifNull', param); },\n switch: function (param) { return new AggregationOperator('switch', param); },\n dateFromParts: function (param) { return new AggregationOperator('dateFromParts', param); },\n dateFromString: function (param) { return new AggregationOperator('dateFromString', param); },\n dayOfMonth: function (param) { return new AggregationOperator('dayOfMonth', param); },\n dayOfWeek: function (param) { return new AggregationOperator('dayOfWeek', param); },\n dayOfYear: function (param) { return new AggregationOperator('dayOfYear', param); },\n isoDayOfWeek: function (param) { return new AggregationOperator('isoDayOfWeek', param); },\n isoWeek: function (param) { return new AggregationOperator('isoWeek', param); },\n isoWeekYear: function (param) { return new AggregationOperator('isoWeekYear', param); },\n millisecond: function (param) { return new AggregationOperator('millisecond', param); },\n minute: function (param) { return new AggregationOperator('minute', param); },\n month: function (param) { return new AggregationOperator('month', param); },\n second: function (param) { return new AggregationOperator('second', param); },\n hour: function (param) { return new AggregationOperator('hour', param); },\n week: function (param) { return new AggregationOperator('week', param); },\n year: function (param) { return new AggregationOperator('year', param); },\n literal: function (param) { return new AggregationOperator('literal', param); },\n mergeObjects: function (param) { return new AggregationOperator('mergeObjects', param); },\n objectToArray: function (param) { return new AggregationOperator('objectToArray', param); },\n allElementsTrue: function (param) { return new AggregationOperator('allElementsTrue', param); },\n anyElementTrue: function (param) { return new AggregationOperator('anyElementTrue', param); },\n setDifference: function (param) { return new AggregationOperator('setDifference', param); },\n setEquals: function (param) { return new AggregationOperator('setEquals', param); },\n setIntersection: function (param) { return new AggregationOperator('setIntersection', param); },\n setIsSubset: function (param) { return new AggregationOperator('setIsSubset', param); },\n setUnion: function (param) { return new AggregationOperator('setUnion', param); },\n concat: function (param) { return new AggregationOperator('concat', param); },\n dateToString: function (param) { return new AggregationOperator('dateToString', param); },\n indexOfBytes: function (param) { return new AggregationOperator('indexOfBytes', param); },\n indexOfCP: function (param) { return new AggregationOperator('indexOfCP', param); },\n split: function (param) { return new AggregationOperator('split', param); },\n strLenBytes: function (param) { return new AggregationOperator('strLenBytes', param); },\n strLenCP: function (param) { return new AggregationOperator('strLenCP', param); },\n strcasecmp: function (param) { return new AggregationOperator('strcasecmp', param); },\n substr: function (param) { return new AggregationOperator('substr', param); },\n substrBytes: function (param) { return new AggregationOperator('substrBytes', param); },\n substrCP: function (param) { return new AggregationOperator('substrCP', param); },\n toLower: function (param) { return new AggregationOperator('toLower', param); },\n toUpper: function (param) { return new AggregationOperator('toUpper', param); },\n meta: function (param) { return new AggregationOperator('meta', param); },\n addToSet: function (param) { return new AggregationOperator('addToSet', param); },\n avg: function (param) { return new AggregationOperator('avg', param); },\n first: function (param) { return new AggregationOperator('first', param); },\n last: function (param) { return new AggregationOperator('last', param); },\n max: function (param) { return new AggregationOperator('max', param); },\n min: function (param) { return new AggregationOperator('min', param); },\n push: function (param) { return new AggregationOperator('push', param); },\n stdDevPop: function (param) { return new AggregationOperator('stdDevPop', param); },\n stdDevSamp: function (param) { return new AggregationOperator('stdDevSamp', param); },\n sum: function (param) { return new AggregationOperator('sum', param); },\n let: function (param) { return new AggregationOperator('let', param); }\n },\n project: {\n slice: function (param) { return new ProjectionOperator('slice', param); },\n elemMatch: function (param) { return new ProjectionOperator('elemMatch', param); }\n }\n};\nvar AggregationOperator = (function () {\n function AggregationOperator(name, param) {\n this['$' + name] = param;\n }\n return AggregationOperator;\n}());\nvar ProjectionOperator = (function () {\n function ProjectionOperator(name, param) {\n this['$' + name] = param;\n }\n return ProjectionOperator;\n}());\nexport default Command;\n","import { SYMBOL_REGEXP } from '../helper/symbol';\nvar RegExp = (function () {\n function RegExp(_a) {\n var regexp = _a.regexp, options = _a.options;\n if (!regexp) {\n throw new TypeError('regexp must be a string');\n }\n this.$regex = regexp;\n this.$options = options;\n }\n RegExp.prototype.parse = function () {\n return {\n $regex: this.$regex,\n $options: this.$options\n };\n };\n Object.defineProperty(RegExp.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_REGEXP;\n },\n enumerable: false,\n configurable: true\n });\n return RegExp;\n}());\nexport { RegExp };\nexport function RegExpConstructor(param) {\n return new RegExp(param);\n}\n","export var ERRORS = {\n CREATE_WATCH_NET_ERROR: {\n code: 'CREATE_WATCH_NET_ERROR',\n message: 'create watch network error'\n },\n CREATE_WACTH_EXCEED_ERROR: {\n code: 'CREATE_WACTH_EXCEED_ERROR',\n message: 'maximum connections exceed'\n },\n CREATE_WATCH_SERVER_ERROR: {\n code: 'CREATE_WATCH_SERVER_ERROR',\n message: 'create watch server error'\n },\n CONN_ERROR: {\n code: 'CONN_ERROR',\n message: 'connection error'\n },\n INVALID_PARAM: {\n code: 'INVALID_PARAM',\n message: 'Invalid request param'\n },\n INSERT_DOC_FAIL: {\n code: 'INSERT_DOC_FAIL',\n message: 'insert document failed'\n },\n DATABASE_TRANSACTION_CONFLICT: {\n code: 'DATABASE_TRANSACTION_CONFLICT',\n message: 'database transaction conflict'\n }\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { EJSON } from 'bson';\nimport { ERRORS } from '../const/code';\nimport { UpdateSerializer } from '../serializer/update';\nimport { serialize } from '../serializer/datatype';\nimport { Util } from '../util';\nvar GET_DOC = 'database.getInTransaction';\nvar UPDATE_DOC = 'database.updateDocInTransaction';\nvar DELETE_DOC = 'database.deleteDocInTransaction';\nvar INSERT_DOC = 'database.insertDocInTransaction';\nvar DocumentReference = (function () {\n function DocumentReference(transaction, coll, docID) {\n this._coll = coll;\n this.id = docID;\n this._transaction = transaction;\n this._request = this._transaction.getRequestMethod();\n this._transactionId = this._transaction.getTransactionId();\n }\n DocumentReference.prototype.create = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var params, res, inserted, ok;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n params = {\n collectionName: this._coll,\n transactionId: this._transactionId,\n data: EJSON.stringify(serialize(data), { relaxed: false })\n };\n if (this.id) {\n params['_id'] = this.id;\n }\n return [4, this._request.send(INSERT_DOC, params)];\n case 1:\n res = _a.sent();\n if (res.code) {\n throw res;\n }\n inserted = EJSON.parse(res.inserted);\n ok = EJSON.parse(res.ok);\n if (ok == 1 && inserted == 1) {\n return [2, __assign(__assign({}, res), { ok: ok, inserted: inserted })];\n }\n else {\n throw new Error(ERRORS.INSERT_DOC_FAIL.message);\n }\n return [2];\n }\n });\n });\n };\n DocumentReference.prototype.get = function () {\n return __awaiter(this, void 0, void 0, function () {\n var param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n param = {\n collectionName: this._coll,\n transactionId: this._transactionId,\n query: {\n _id: { $eq: this.id }\n }\n };\n return [4, this._request.send(GET_DOC, param)];\n case 1:\n res = _a.sent();\n if (res.code)\n throw res;\n return [2, {\n data: res.data !== 'null' ? Util.formatField(EJSON.parse(res.data)) : EJSON.parse(res.data),\n requestId: res.requestId\n }];\n }\n });\n });\n };\n DocumentReference.prototype.set = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n param = {\n collectionName: this._coll,\n transactionId: this._transactionId,\n query: {\n _id: { $eq: this.id }\n },\n data: EJSON.stringify(serialize(data), { relaxed: false }),\n upsert: true\n };\n return [4, this._request.send(UPDATE_DOC, param)];\n case 1:\n res = _a.sent();\n if (res.code)\n throw res;\n return [2, __assign(__assign({}, res), { updated: EJSON.parse(res.updated), upserted: res.upserted\n ? JSON.parse(res.upserted)\n : null })];\n }\n });\n });\n };\n DocumentReference.prototype.update = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n param = {\n collectionName: this._coll,\n transactionId: this._transactionId,\n query: {\n _id: { $eq: this.id }\n },\n data: EJSON.stringify(UpdateSerializer.encode(data), {\n relaxed: false\n })\n };\n return [4, this._request.send(UPDATE_DOC, param)];\n case 1:\n res = _a.sent();\n if (res.code)\n throw res;\n return [2, __assign(__assign({}, res), { updated: EJSON.parse(res.updated) })];\n }\n });\n });\n };\n DocumentReference.prototype.delete = function () {\n return __awaiter(this, void 0, void 0, function () {\n var param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n param = {\n collectionName: this._coll,\n transactionId: this._transactionId,\n query: {\n _id: { $eq: this.id }\n }\n };\n return [4, this._request.send(DELETE_DOC, param)];\n case 1:\n res = _a.sent();\n if (res.code)\n throw res;\n return [2, __assign(__assign({}, res), { deleted: EJSON.parse(res.deleted) })];\n }\n });\n });\n };\n return DocumentReference;\n}());\nexport { DocumentReference };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { EJSON } from 'bson';\nimport { ErrorCode } from '../constant';\nimport { Validate } from '../validate';\nimport { QuerySerializer } from '../serializer/query';\nimport { UpdateSerializer } from '../serializer/update';\nimport { Util } from '../util';\nvar GET_DOC = 'database.getInTransaction';\nvar UPDATE_DOC = 'database.updateDocInTransaction';\nvar DELETE_DOC = 'database.deleteDocInTransaction';\nvar Query = (function () {\n function Query(transaction, coll, fieldFilters, fieldOrders, queryOptions) {\n this._coll = coll;\n this._transaction = transaction;\n this._fieldFilters = fieldFilters;\n this._fieldOrders = fieldOrders || [];\n this._queryOptions = queryOptions || {};\n this._request = this._transaction.getRequestMethod();\n this._transactionId = this._transaction.getTransactionId();\n }\n Query.prototype.where = function (query) {\n if (Object.prototype.toString.call(query).slice(8, -1) !== 'Object') {\n throw Error(ErrorCode.QueryParamTypeError);\n }\n var keys = Object.keys(query);\n var checkFlag = keys.some(function (item) {\n return query[item] !== undefined;\n });\n if (keys.length && !checkFlag) {\n throw Error(ErrorCode.QueryParamValueError);\n }\n return new Query(this._transaction, this._coll, QuerySerializer.encode(query), this._fieldOrders, this._queryOptions);\n };\n Query.prototype.orderBy = function (fieldPath, directionStr) {\n Validate.isFieldPath(fieldPath);\n Validate.isFieldOrder(directionStr);\n var newOrder = {\n field: fieldPath,\n direction: directionStr\n };\n var combinedOrders = this._fieldOrders.concat(newOrder);\n return new Query(this._transaction, this._coll, this._fieldFilters, combinedOrders, this._queryOptions);\n };\n Query.prototype.limit = function (limit) {\n Validate.isInteger('limit', limit);\n var option = __assign({}, this._queryOptions);\n option.limit = limit;\n return new Query(this._transaction, this._coll, this._fieldFilters, this._fieldOrders, option);\n };\n Query.prototype.skip = function (offset) {\n Validate.isInteger('offset', offset);\n var option = __assign({}, this._queryOptions);\n option.offset = offset;\n return new Query(this._transaction, this._coll, this._fieldFilters, this._fieldOrders, option);\n };\n Query.prototype.field = function (projection) {\n for (var k in projection) {\n if (projection[k]) {\n if (typeof projection[k] !== 'object') {\n projection[k] = 1;\n }\n }\n else {\n projection[k] = 0;\n }\n }\n var option = __assign({}, this._queryOptions);\n option.projection = projection;\n return new Query(this._transaction, this._coll, this._fieldFilters, this._fieldOrders, option);\n };\n Query.prototype.get = function () {\n return __awaiter(this, void 0, void 0, function () {\n var newOrder, param, res, data, documents, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n newOrder = [];\n if (this._fieldOrders) {\n this._fieldOrders.forEach(function (order) {\n newOrder.push(order);\n });\n }\n param = {\n collectionName: this._coll,\n transactionId: this._transactionId\n };\n if (this._fieldFilters) {\n param.query = this._fieldFilters;\n }\n if (newOrder.length > 0) {\n param.order = newOrder;\n }\n if (this._queryOptions.offset) {\n param.offset = this._queryOptions.offset;\n }\n if (this._queryOptions.limit) {\n param.limit = this._queryOptions.limit < 1000 ? this._queryOptions.limit : 1000;\n }\n else {\n param.limit = 100;\n }\n if (this._queryOptions.projection) {\n param.projection = this._queryOptions.projection;\n }\n return [4, this._request.send(GET_DOC, param)];\n case 1:\n res = _a.sent();\n if (res.code)\n throw res;\n data = res.data !== 'null' ? EJSON.parse(res.data) : null;\n documents = data ? (Array.isArray(data) ? Util.formatResDocumentData(data) : [Util.formatField(data)]) : [];\n result = {\n data: documents,\n requestId: res.requestId\n };\n if (res.total !== undefined)\n result.total = res.total;\n if (res.limit !== undefined)\n result.limit = res.limit;\n if (res.offset !== undefined)\n result.offset = res.offset;\n return [2, result];\n }\n });\n });\n };\n Query.prototype.count = function () {\n return __awaiter(this, void 0, void 0, function () {\n var param, res, data, total;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n param = {\n collectionName: this._coll,\n transactionId: this._transactionId\n };\n if (this._fieldFilters) {\n param.query = this._fieldFilters;\n }\n return [4, this._request.send(GET_DOC, param)];\n case 1:\n res = _a.sent();\n if (res.code)\n throw res;\n data = res.data !== 'null' ? EJSON.parse(res.data) : null;\n total = Array.isArray(data) ? data.length : (data ? 1 : 0);\n return [2, {\n requestId: res.requestId,\n total: res.total !== undefined ? res.total : total\n }];\n }\n });\n });\n };\n Query.prototype.update = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!data || typeof data !== 'object') {\n throw new Error('参数必需是非空对象');\n }\n if (data.hasOwnProperty('_id')) {\n throw new Error('不能更新_id的值');\n }\n param = {\n collectionName: this._coll,\n transactionId: this._transactionId,\n query: this._fieldFilters,\n data: EJSON.stringify(UpdateSerializer.encode(data), { relaxed: false })\n };\n return [4, this._request.send(UPDATE_DOC, param)];\n case 1:\n res = _a.sent();\n if (res.code)\n throw res;\n return [2, __assign(__assign({}, res), { updated: EJSON.parse(res.updated) })];\n }\n });\n });\n };\n Query.prototype.remove = function () {\n return __awaiter(this, void 0, void 0, function () {\n var param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (Object.keys(this._queryOptions).length > 0) {\n console.warn('`offset`, `limit` and `projection` are not supported in remove() operation');\n }\n if (this._fieldOrders.length > 0) {\n console.warn('`orderBy` is not supported in remove() operation');\n }\n param = {\n collectionName: this._coll,\n transactionId: this._transactionId,\n query: this._fieldFilters\n };\n return [4, this._request.send(DELETE_DOC, param)];\n case 1:\n res = _a.sent();\n if (res.code)\n throw res;\n return [2, __assign(__assign({}, res), { deleted: EJSON.parse(res.deleted) })];\n }\n });\n });\n };\n return Query;\n}());\nexport { Query };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { DocumentReference } from './document';\nimport { Query } from './query';\nvar CollectionReference = (function (_super) {\n __extends(CollectionReference, _super);\n function CollectionReference(transaction, coll) {\n return _super.call(this, transaction, coll) || this;\n }\n Object.defineProperty(CollectionReference.prototype, \"name\", {\n get: function () {\n return this._coll;\n },\n enumerable: false,\n configurable: true\n });\n CollectionReference.prototype.doc = function (docID) {\n if (typeof docID !== 'string' && typeof docID !== 'number') {\n throw new Error('docId必须为字符串或数字');\n }\n return new DocumentReference(this._transaction, this._coll, docID);\n };\n CollectionReference.prototype.add = function (data) {\n var docID;\n if (data._id !== undefined) {\n docID = data._id;\n }\n var docRef = new DocumentReference(this._transaction, this._coll, docID);\n return docRef.create(data);\n };\n return CollectionReference;\n}(Query));\nexport { CollectionReference };\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { Db } from '../index';\nimport { CollectionReference } from './collection';\nimport { ERRORS } from '../const/code';\nvar START = 'database.startTransaction';\nvar COMMIT = 'database.commitTransaction';\nvar ABORT = 'database.abortTransaction';\nvar Transaction = (function () {\n function Transaction(db) {\n this._db = db;\n this._request = Db.createRequest(this._db.config);\n this.aborted = false;\n this.commited = false;\n this.inited = false;\n }\n Transaction.prototype.init = function () {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4, this._request.send(START)];\n case 1:\n res = _a.sent();\n if (res.code) {\n throw res;\n }\n this.inited = true;\n this._id = res.transactionId;\n return [2];\n }\n });\n });\n };\n Transaction.prototype.collection = function (collName) {\n if (!collName) {\n throw new Error('Collection name is required');\n }\n return new CollectionReference(this, collName);\n };\n Transaction.prototype.getTransactionId = function () {\n return this._id;\n };\n Transaction.prototype.getRequestMethod = function () {\n return this._request;\n };\n Transaction.prototype.commit = function () {\n return __awaiter(this, void 0, void 0, function () {\n var param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n param = {\n transactionId: this._id\n };\n return [4, this._request.send(COMMIT, param)];\n case 1:\n res = _a.sent();\n if (res.code)\n throw res;\n this.commited = true;\n return [2, res];\n }\n });\n });\n };\n Transaction.prototype.rollback = function (customRollbackRes) {\n return __awaiter(this, void 0, void 0, function () {\n var param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n param = {\n transactionId: this._id\n };\n return [4, this._request.send(ABORT, param)];\n case 1:\n res = _a.sent();\n if (res.code)\n throw res;\n this.aborted = true;\n this.abortReason = customRollbackRes;\n return [2, res];\n }\n });\n });\n };\n return Transaction;\n}());\nexport { Transaction };\nexport function startTransaction() {\n return __awaiter(this, void 0, void 0, function () {\n var transaction;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n transaction = new Transaction(this);\n return [4, transaction.init()];\n case 1:\n _a.sent();\n return [2, transaction];\n }\n });\n });\n}\nexport function runTransaction(callback, times) {\n if (times === void 0) { times = 3; }\n return __awaiter(this, void 0, void 0, function () {\n var transaction, callbackRes, error_1, throwWithRollback;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 4, , 10]);\n transaction = new Transaction(this);\n return [4, transaction.init()];\n case 1:\n _a.sent();\n return [4, callback(transaction)];\n case 2:\n callbackRes = _a.sent();\n if (transaction.aborted === true) {\n throw transaction.abortReason;\n }\n return [4, transaction.commit()];\n case 3:\n _a.sent();\n return [2, callbackRes];\n case 4:\n error_1 = _a.sent();\n if (transaction.inited === false) {\n throw error_1;\n }\n throwWithRollback = function (error) { return __awaiter(_this, void 0, void 0, function () {\n var err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(!transaction.aborted && !transaction.commited)) return [3, 5];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4, transaction.rollback()];\n case 2:\n _a.sent();\n return [3, 4];\n case 3:\n err_1 = _a.sent();\n return [3, 4];\n case 4: throw error;\n case 5:\n if (transaction.aborted === true) {\n throw transaction.abortReason;\n }\n throw error;\n }\n });\n }); };\n if (!(times <= 0)) return [3, 6];\n return [4, throwWithRollback(error_1)];\n case 5:\n _a.sent();\n _a.label = 6;\n case 6:\n if (!(error_1 && error_1.code === ERRORS.DATABASE_TRANSACTION_CONFLICT.code)) return [3, 8];\n return [4, runTransaction.bind(this)(callback, --times)];\n case 7: return [2, _a.sent()];\n case 8: return [4, throwWithRollback(error_1)];\n case 9:\n _a.sent();\n return [3, 10];\n case 10: return [2];\n }\n });\n });\n}\n","import * as Geo from './geo/index';\nimport { CollectionReference } from './collection';\nimport { Command } from './command';\nimport { ServerDateConstructor } from './serverDate/index';\nimport { RegExpConstructor } from './regexp/index';\nimport { startTransaction, runTransaction } from './transaction/index';\nimport { LogicCommand } from './commands/logic';\nimport { QueryCommand } from './commands/query';\nimport { UpdateCommand } from './commands/update';\nexport { Query } from './query';\nexport { CollectionReference } from './collection';\nexport { DocumentReference } from './document';\nvar Db = (function () {\n function Db(config) {\n this.config = config;\n this.Geo = Geo;\n this.serverDate = ServerDateConstructor;\n this.command = Command;\n this.RegExp = RegExpConstructor;\n this.startTransaction = startTransaction;\n this.runTransaction = runTransaction;\n this.logicCommand = LogicCommand;\n this.updateCommand = UpdateCommand;\n this.queryCommand = QueryCommand;\n }\n Db.createRequest = function (config) {\n var request = new Db.reqClass(config);\n var originalSend = request.send;\n request.send = function (action, data) {\n if (config.instance) {\n data.instance = config.instance;\n }\n if (config.database) {\n data.database = config.database;\n }\n return originalSend.call(this, action, data);\n };\n return request;\n };\n Db.prototype.collection = function (collName) {\n if (!collName) {\n throw new Error('Collection name is required');\n }\n return new CollectionReference(this, collName);\n };\n Db.prototype.createCollection = function (collName) {\n var request = Db.createRequest(this.config);\n var params = {\n collectionName: collName\n };\n return request.send('database.addCollection', params);\n };\n return Db;\n}());\nexport { Db };\n","// 空模块占位文件,用于 webpack 解析纯类型包(@cloudbase/types)的子路径引用\n// 这些引用只有 TypeScript 类型,编译后会被擦除,运行时不需要任何内容\nmodule.exports = {}\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","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var castPath = require('./_castPath'),\n last = require('./last'),\n parent = require('./_parent'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var baseGet = require('./_baseGet'),\n baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseUnset = require('./_baseUnset');\n\n/**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\nfunction unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n}\n\nmodule.exports = unset;\n","module.exports = require(\"@cloudbase/adapter-interface\");","module.exports = require(\"@cloudbase/adapter-wx_mp\");","module.exports = require(\"@cloudbase/wx-cloud-client-sdk\");","module.exports = require(\"@mattiasbuelens/web-streams-adapter\");","module.exports = require(\"bson\");","module.exports = require(\"jwt-decode\");","module.exports = require(\"text-encoding-shim\");","module.exports = require(\"web-streams-polyfill\");","// 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\tid: moduleId,\n\t\tloaded: false,\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// Flag the module as loaded\n\tmodule.loaded = true;\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__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\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};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\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__(8795);\n"],"names":["leafPrototypes","getProto","bot_1","require","models","__importStar","utils_1","utilities_1","MODELS","AI","req","baseUrl","i18n","_this","modelRequest","_a","url","data","headers","stream","timeout","fetchHeaders","Object","assign","Accept","this","fetch","method","__assign","_c","_d","LANG_HEADER_KEY","_e","lang","body","JSON","stringify","_b","_f","sent","responseData","header","handleResponseData","botRequest","concat","obj","entries","map","key","value","join","apply","_h","_g","aiBaseUrl","aiBotBaseUrl","bot","Bot","langEvent","bus","on","LANG_CHANGE_EVENT","params","prototype","GO_TO_AI_TEXT","t","json","code","Error","message","get","call","includes","readableStream2JsonObject","createModel","model","options","simpleModel","SimpleModelConstructor","subUrl","defaultModelSubUrl","DefaultSimpleModel","ReactModel","registerModel","name","console","warn","createImageModel","provider","DefaultImageModel","registerFunctionTool","functionTool","toolMap","has","set","fn","exports","token","arguments","rest","__rest","Authorization","list","props","create","botInfo","botId","update","delete","getChatRecords","sendFeedback","userFeedback","getFeedback","uploadFiles","createConversation","getConversation","pageSize","pageNumber","offset","limit","deleteConversation","conversationId","speechToText","textToSpeech","getTextToSpeechResult","getRecommendQuestions","res","StreamResult","generateBot","getPreview","generateImage","sendMessage","_stream","toPolyfillReadable","_eventSourceStream","pipeThrough","TextDecoderStream","createEventSourceParserTransformStream","defineProperty","tee","s1","s2","createAsyncIterable","teeedStream","eventSourceStream","TransformStream","transform","chunk","controller","parse","enqueue","e","terminate","dataStream","content","parse_1","enumerable","createParser","onParse","isFirstChunk","buffer","startingPosition","startingFieldLength","eventId","eventName","reset","feed","BOM","every","charCode","index","charCodeAt","hasBom","slice","length","position","discardTrailingNewline","lineLength","fieldLength","character","parseEventStreamLine","undefined","lineBuffer","type","id","event","step","noValue","field","valueLength","toString","retry","parseInt","Number","isNaN","AI_1","utils","restModels","createAI","env","getAccessToken","handleReqInstance","download","post","upload","__awaiter","restOptions","accessToken","createRequestInstanceWithAccessTokenHeader","getReq","getBaseUrl","createAi","component","entity","ai","request","getEndPointWithKey","BASE_URL","PROTOCOL","getUrlFromCloud","config","registerAi","app","registerComponent","__exportStar","window","processInput","input","messages","temperature","tools","top_p","ArkSimpleModel","doGenerate","Promise","rawResponse","doStream","isToolCall","arkStream","intoStandardStream","streamWithRaw","newChoices","choices","choice","delta","isToolCallAssistantMessage","finish_reason","newChunk","DSSimpleModel","role","DeepSeekSimpleModel","standardStream","util_1","HunYuanSimpleModel","output","titleCaseToSnakeCase","Response","hunyuanStream","_chunk","tool_choice","forEach","tool_calls","filter","tool_call","tool","handleTools","Array","isArray","item","reduce","acc","ret","replace","match","toLowerCase","charAt","HunYuanBetaSimpleModel","hunyuanBetaStream","HunYuanExpSimpleModel","HunYuanOpenSimpleModel","MoonshotSimpleModel","YiSimpleModel","ZhiPuSimpleModel","_data","zhipuStream","defaultGenerateImageSubUrl","generateImageSubUrlConfig","generateImageImpl","bind","newSubUrl","getGenerateUrl","index_1","index_2","index_3","index_4","index_5","index_6","index_7","index_8","index_9","DeepSeek_1","Default_1","image_model_1","hunyuan","ark","dashscope","moonshot","zhipu","deepseek","model_1","onStepFinish","abortSignal","maxSteps","topP","toolChoice","b","functionToolToModelTool","generateText","_input","rawResponses","totalUsage","completion_tokens","prompt_tokens","total_tokens","currentRes","currentStep","push","toolCall","getToolCallFromGenerate","stepUsage_1","createSolidUsage","usage","addToUsage","callTool","toolCallResult","finishReason","text","toolResult","stepUsage","pushNewMessages","error","e_1","lastChoice","lastMessage","__spreadArray","streamText","_j","readResult","readCurrentStream","oldStream","newStream","aStream","retMessage","retToolCall","function","aStream_1","__asyncValues","aStream_1_1","_k","readFunctionCallStream","assistantMessage","stepUsage_2","s1_1","s2_1","resolve","textStream","str","e_2","message_1","s1_2","s2_2","messagePromise","createPromise","usagePromise","originStream","reason","flush","promise","tool_call_id","targetUsage","sourceUsage","Map","web_streams_polyfill_1","web_streams_adapter_1","eventsource_parser_1","text_encoding_shim_1","ReadableStream","parser","start","createReadableStreamWrapper","encoding","handle","decode","Uint8Array","TextDecoder","fatal","ignoreBOM","readable","writable","Symbol","toStringTag","asyncIterator","reader","getReader","next","read","done","intoTextStream","s","total","s_1","s_1_1","rej","reject","description","parameters","constants_1","callApi","callApiOptions","opts","path","dataParse","ERRORS","INVALID_PARAMS","msg","gatewayOrigin","endpoint","reqPath","startsWith","_l","isGetAndHead","toUpperCase","keys","trim","SUPPORT_METHODS","generateCallApis","apiName","Proxy","_","upMethod","toLocaleUpperCase","callApis_1","generateApis","COMPONENT_NAME","IIFE","configurable","registerApis","cloudbase","setUtilitiesSdkName","constants","setSdkName","setUtilitiesProtocol","setProtocol","sdkVersion","sdkName","version","LOGINTYPE","END_POINT_INFO_ARR","END_POINT_INFO_SEARCH_KEYS","findMatchedInfo","info","find","targetInfo","searchKey","setEndPointInfo","newInfo","protocol","test","endPointInfo","DEFAULT_PROTOCOL","endPointKey","getEndPointInfo","region","intl","component_1","adapter_1","cache_1","request_1","common_1","lang_1","common_2","getBaseEndPoint","lang_2","LANGS","useAdapters","adapters","useDefaultAdapter","COMMUNITY_SITE_URL","printWarn","catchErrorsDecorator","helpers","DEFAULT_INIT_CONFIG","persistence","MAX_TIMEOUT","extensionMap","Cloudbase","cloudbaseConfig","authInstance","oauthInstance","getSdkVersion","Platform","getCacheByEnvId","getLocalCache","getRequestByEnvId","init","endPointMode","adapter","dealNodeAdapterConfig","isInitialized","reqConfig","timeoutMsg","getSdkName","auth","requestClient","reqClass","i18nProxy","formatTimeout","debug","oauthClient","initCache","platformInfo","platform","setRegionLevelEndpoint","setGatewayEndPointWithEnv","initRequest","_fromApp","fire","try2InitAuth","nodeTool","updateConfig","updateLang","registerExtension","ext","invokeExtension","invoke","runtime","registerHook","hook","registerVersion","setSdkVersion","registerSdkName","some","p","registerEndPoint","registerEndPointWithKey","parseCaptcha","log","__decorate","mode","title","getWxDefaultAdapter","adapter_wx_mp_1","adapter_interface_1","WxRequest","self","file","fs","wx","getFileSystemManager","task","readFileSync","_timeout","success","result","statusCode","success_action_status","fail","err","complete","errMsg","_restrictedMethods","indexOf","_timeoutMsg","abort","default","genAdapter","root","globalThis","wsClass","WxMpWebSocket","captchaOptions","openURIWithCallback","_url","EventBus","queryObj","matched","search","parseQueryString","restQueryObj","error_description","$emit","$once","localStorage","wxMpStorage","primaryStorage","StorageType","local","getAppSign","getAccountInfoSync","App","getApp","onAppHide","offAppHide","onAppShow","offAppShow","miniProgram","appId","plugin","CloudbaseCache","cache","cacheMap","localCacheMap","userInfoKey","components","deepExtend","target","source","constructor","Date","getTime","_i","sourceKeys_1","hasOwnProperty","namespace","injectEvents","INVALID_OPERATION","events","originCallback_1","eventNames_1","name_1","bus_1","originMethod","args","EN","错误信息","未实现","请求超时","langMap","cacheKey","clientId","getLangCacheKey","getItem","ZH","setItem","prop","newValue","genSeqId","isFormData","formatUrl","ACTIONS_WITHOUT_ACCESSTOKEN","bindHooks","instance","hooks","appendedData","appendedHeaders","originData","append","beforeEach","seqId","CloudbaseRequest","throwWhenRequestFail","restrictedMethods","throw","localCache","oauth2client","getOauthAccessTokenV2","getDefaultHeaders","customReqOpts","validAccessToken","getCredentials","credentials","accessTokenExpire","expires_at","action","tcbTraceKey","contentType","tmpObj_1","dataVersion","DATA_VERSION","access_token","payload_1","FormData","onUploadProgress","traceHeader","getStore","inQuery","formatQuery","defaultQuery","url_1","newUrl","pathname","resTraceHeader","setStore","status","err_1","requestId","withCredentials","doFetch","authHeaders","err_2","authApi","refreshTokenForce","send","response","OPERATION_FAIL","gateWay","jsonData","generateRequestId","dataParse_1","requestMap","OauthClientStorageBase","removeItem","getItemSync","setItemSync","removeItemSync","URL_REG","dealAdapterRequestData","error_code","request_id","error_uri","RegExp","$1","storage","baseRequest","reqClassParams","adapterReq_1","requestType","toLocaleLowerCase","func","error_1","dealUserAdapter","authOptions","adapterForWxMp","isMatch","ReqClass","copyOptions","generateOauthClientRequest","dealAuthAdapter","oauth_1","v1_compat_1","WeixinAuthProvider","CustomAuthProvider","AnonymousAuthProvider","utilities_2","isBrowser","document","User","setUserInfo","checkLocalInfo","uid","getLocalUserInfo","gender","picture","email","emailVerified","phoneNumber","username","birthdate","zoneinfo","locale","sub","createdFrom","providers","checkLocalInfoAsync","getLocalUserInfoAsync","userInfo","setUserProfile","newUserInfo","setLocalUserInfo","updateUserBasicInfo","refresh","updatePassword","newPassword","oldPassword","updatePasswordByOld","old_password","new_password","updateUsername","throwError","getUserInfo","getStoreAsync","infoKey","authModels","UserProfile","applyUserV1Compat","LoginState","envId","user","checkLocalState","oauthLoginState","hasLoginStateSync","checkLocalStateAsync","getLoginState","Auth","_super","listeners","hasListenerSetUp","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","messageId","verification_id","verify","verificationTokenRes","is_user","signIn","error_3","error_2","signOut","removeStoreAsync","eventBus","EVENTS","LOGIN_STATE_CHANGED","eventType","LOGIN_STATE_CHANGED_TYPE","SIGN_OUT","AUTH_STATE_CHANGED","AUTH_STATE_CHANGED_TYPE","SIGNED_OUT","error_4","onAuthStateChange","callback","setupListeners","Math","random","Set","add","subscription","unsubscribe","callbacks","size","signInWithPassword","validateParams","password","required","is_encrypt","isEncrypt","error_5","INVALID_CREDENTIALS","USER_NOT_FOUND","signInWithIdToken","signInWithProvider","error_6","signInWithOtp","emailRedirectTo","shouldCreateUser","email_redirect_to","verificationInfo_2","error_7","verifyOAuth","getQuery","state","cacheData","getBrowserSession","grantProviderToken","provider_id","provider_redirect_uri","location","origin","provider_code","OAUTH_TYPE","BIND_IDENTITY","toBindIdentity","fireEvent","localSearch","URLSearchParams","redirectUrl","addUrlSearch","hash","removeBrowserSession","error_8","signInWithOAuth","href","redirectTo","urlObject","URL","genProviderRedirectUri","uri","decodedUri","decodeURIComponent","finalUri","queryParams","searchParams","saveToBrowserSession","SIGN_IN","skipBrowserRedirect","error_9","getClaims","weAppJwtDecodeAll","error_10","resetPasswordForEmail","emailOrPhone","redirectTo_1","isEmail_1","verificationParams","formattedPhone","verificationInfo_3","updateUser","attributes","nonce","resetPassword","PASSWORD_RECOVERY","error_12","error_11","resetPasswordForOld","error_13","signInWithUsername","verificationInfo","verificationCode","loginType","error_14","scope","getUser","error_15","refreshSession","refresh_token","localCredentials","refreshToken","newTokens","error_16","isRefresh","convertToUser","getCurrentUser","error_17","refreshUser","currentUser","error_18","restParams","needsPhoneVerification","extraRes","needsEmailVerification_1","verificationType_1","verificationInfo_4","verifyParams","user_1","USER_UPDATED","error_20","error_19","getUserIdentities","getProviders","identities","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","error_26","setSession","SIGNED_IN","error_27","exchangeCodeForSession","deleteUser","deleteMe","error_28","toDefaultLoginPage","configVersion","config_version","query","navigateTo","redirectUri","redirect_uri","urlObj","loginPage","app_id","encodeURIComponent","signInWithCustomTicket","getTickFn","setCustomSignFunc","error_29","signInWithOpenId","useWxCloud","wxInfo","mainFunc","provider_params","provider_code_type","appid","setCredentials","login","error_32","errno","error_30","signInWithPhoneAuth","phoneCode","providerInfo","providerToken","signInRes","error_33","bindPhoneNumber","editContact","bindEmail","hasLoginState","loginState_1","signInAnonymouslyInWx","error_36","asyncRefreshUser","bindOpenId","bindWithProvider","error_38","signInWithUnionId","providerId","error_40","signInWithSms","phoneNum","bindInfo","signInWithEmail","isUsernameRegistered","checkIfUserExist","exist","getWedaUserInfo","getAuthHeader","queryUser","queryUserProfile","patchProviderToken","signInWithWechat","grantToken","deviceAuthorize","loginScope","loginGroups","onLoginStateChanged","CREDENTIALS_ERROR","getProviderSubType","createCaptchaData","verifyCaptchaData","getMiniProgramQrCode","getMiniProgramCode","getMiniProgramQrCodeStatus","modifyPassword","modifyPasswordWithoutLogin","getUserBehaviorLog","rawUsername","verifyRes","signUpParam","bindRes","signUpRes","accessKey","secretId","secretKey","DEFAULT_NODE_ACCESS_SCOPE","setAccessKeyCredentials","token_type","expires_in","notifyListeners","userId","aud","groups","group","email_confirmed_at","email_verified","created_at","phone_confirmed_at","confirmed_at","last_sign_in_at","app_metadata","user_metadata","nickName","avatarUrl","hasPassword","open_id","identity_id","user_id","identity_data","provider_user_id","updated_at","is_anonymous","rules","rule","fieldGroups","INITIAL_SESSION","BindPhoneRequest","UnbindProviderRequest","BindEmailRequest","VerifyRequest","GetVerificationRequest","_m","_o","_p","_q","_r","_s","_t","_u","_v","BindWithProviderRequest","_w","_x","_y","AuthV1Compat","generateAuthInstance","apiOrigin","commonOpts","CloudbaseEventEmitter","CloudbaseOAuth","useAuthAdapter","apiPath","AUTH_API_PREFIX","anonymousSignInFunc","wxCloud","onCredentialsError","detectSessionInUrl","initializeSession","NAMESPACE","levenshteinDistance","a","matrix","i","j","cost","min","newPersistence","authProto","setPrototypeOf","getPrototypeOf","authWithHint","receiver","Reflect","suggestion","methods","bestMatch","bestDistance","Infinity","methods_1","distance","findSimilarMethod","getOwnPropertyNames","k","oauth_2","helpers_1","events_1","__importDefault","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","database_1","bson_1","gateWayFunc","filterRes","flattenResData","safeParseEJSON","EJSON","buildQueryParams","stringValue","String","getUrlPrefix","database","isQueryDoc","_id","$eq","projection","transactionId","order","relaxed","collectionName","ids","insertedIds","multi","upsert","replaceMode","count","pipeline","stages","stage","stageValue","stageKey","serialize","hasId","inserted","ok","commands","deserialize","dbConfig","Req","Db","wsClientClass","ws","NewDb","runCommands","createRequest","registerDatabase","app_1","auth_1","functions_1","storage_1","realtime_1","ai_1","cloudrun_1","mysql_1","apis_1","__SDK_VERSION__","registerAuth","registerFunctions","registerStorage","registerRealtime","registerCloudrun","registerMySQL","module","CloudbaseRun","callContainer","requestContainer","from","cloudbaseRun","execCallback","cloudbaseFunctions","CloudbaseFunctions","callFunction","function_name","request_data","toGateWay","functionName","isCloudBackendFunc","response_data","customInfo","className","methodName","ICallFunctionOptions","Function","ICustomReqOpts","wx_cloud_client_sdk_1","cloudbaseModelMap","WeakMap","lazyGetEntity","cloudbaseFetch","sqlBaseUrl","generateHTTPClient","fetchOptions","getEntity","CLOUDBASE_INIT_EVENT","isPg","Headers","shouldThrowOnError","statusText","statusMessage","mysqlBaseUrl","generatePGClient","pgBaseUrl","generateMySQLClient","mysql","rdbComponent","rdb","consts_1","oauth2client_1","captcha_1","urlSearchParams_1","auth_error_1","getEncryptUtils","getUtils","IS_MP_BUILD","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","ErrorType","UNAUTHENTICATED","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","restoreUrlState","signInCustom","AUTH_SIGN_IN_CUSTOM","AUTH_SIGN_IN_WITH_WECHAT_URL","PROVIDER_BIND_URL","getUserProfile","wxAppId_1","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","LOGIN","MODIFY","GET_USER_BEHAVIOR_LOG","page_token","encrypt_password","encrypt_new_password","CONSOLE_AUTH_URL","DOCS_URL","context","__isAuthError","UNKNOWN","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","requiredProvider","AUTH_METHOD_MISMATCH","generateHelpMessage","VerificationUsages","debounce","delay","timeoutId","clearTimeout","setTimeout","CAPTCHA_EVENT","CAPTCHA_STYLES","captchaData","captchaState","CAPTCHA_IMG_ID","refreshCaptcha","getElementById","src","createElement","tag","styles","el","style","cssText","textContent","overlay","modal","appendChild","captchaWrap","captchaImg","refreshBtn","onclick","disabled","placeholder","maxLength","errorMsg","showError","display","confirmBtn","inputValue","verifyResult","removeChild","errorMessage","focus","genCaptchaDom","mp_1","captcha_dom_1","getDefaultOpenURIWithCallback","tokenSectionName","isMp","reqURL","appendCaptchaTokenToURL","CAPTCHA_REQUIRED","CAPTCHA_INVALID","getCaptchaToken","forceNewToken","findCaptchaToken","captchaToken_1","captchaDataResp","captchaTokenUrl","captchaToken","saveCaptchaToken","captcha_token","now","tokenStr","apis_2","base64_1","consts_2","setGetInitialSession","onUserObtained","setOnInitialSessionObtained","initialize","Syntax","uuid_1","single_promise_1","RequestIdHeaderName","DeviceIdHeaderName","DeviceIdSectionName","uuidv4","responseError","jsonResponse","formatOptions","LOCAL","details","stack","formatError","DefaultStorage","_env","isCredentialsExpired","isExpired","LocalCredentials","accessKeyCredentials","singlePromise","SinglePromise","getStorageCredentialsSync","run","getStorageCredentials","isAccessKeyCredentials","initializePromise","lockAcquired","pendingInLock","clientSecret","formatRetry","defaultRetry","defaultRequest","tokenInURL","basicAuth","weBtoa","cloud","refreshTokenFunc","defaultRefreshTokenFunc","onInitialSessionObtained","logDebugMessages","_acquireLock","__generator","_initialize","respErr","getDeviceId","deviceId","maxRequestTimes","requestTime","wxCloudCallFunction","responseError_1","sleep","retryInterval","userAgent","getRendererUserAgent","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","callbackError_1","acquireTimeout","last_1","result_1","result_2","waitOn","all","splice","b64","b64re","base64_url_decode","weAtob","b64DecodeUnicode","string","bitmap","TypeError","substring","r1","r2","fromCharCode","pos","split","parts","segment","claims","signature","encryptlong_1","rsaInstance","setPublicKey","encryptLong","jsSdkFnPromiseMap","runIdlePromise","fnResult","clone","copiedValue","valueOf","global","ignoreCase","multiline","sticky","unicode","Page","getDeviceInfo","getStorageSync","setStorageSync","connectSocket","IS_IN_MP_WEBVIEW","ready","__wxjs_environment","navigator","WeixinJSBridge","addEventListener","MyURLSearchParams","getAll","items","this_1","r","val","RealtimeErrorMessageError","serverErrorMsg","msgData","isRealtimeErrorMessageError","TimeoutError","generic","CancelledError","CloudSDKError","errCode","defineProperties","ERR_CODE","UNKNOWN_ERROR","SDK_DATABASE_REALTIME_LISTENER_INIT_WATCH_FAIL","SDK_DATABASE_REALTIME_LISTENER_RECONNECT_WATCH_FAIL","SDK_DATABASE_REALTIME_LISTENER_REBUILD_WATCH_FAIL","SDK_DATABASE_REALTIME_LISTENER_CLOSE_WATCH_FAIL","SDK_DATABASE_REALTIME_LISTENER_SERVER_ERROR_MSG","SDK_DATABASE_REALTIME_LISTENER_RECEIVE_INVALID_SERVER_DATA","SDK_DATABASE_REALTIME_LISTENER_WEBSOCKET_CONNECTION_ERROR","SDK_DATABASE_REALTIME_LISTENER_WEBSOCKET_CONNECTION_CLOSED","SDK_DATABASE_REALTIME_LISTENER_CHECK_LAST_FAIL","SDK_DATABASE_REALTIME_LISTENER_UNEXPECTED_FATAL_ERROR","websocket_client_1","setWsClass","setRuntime","RealtimeWebSocketClient","close","onChange","onError","virtualClient","prefix","msgType","cachedDocChanges","cachedDocs","docChanges","docs","WatchStatus","set_1","unset_1","cloneDeep_1","listener_1","snapshot_1","VirtualWebSocketClient","watchStatus","INITING","wsLogin","LOGGINGIN","loginResult","initWatch","forceRefreshLogin","initWatchPromise","PAUSED","initWatchMsg","watchId","genRequestId","collName","orderBy","waitResponse","skipOnMessage","initEventMsg","currEvent","sessionInfo","queryID","currentEventId","currentDocs","ID","handleServerEvents","snapshot","Snapshot","listener","scheduleSendACK","onWatchStart","ACTIVE","availableRetries","INIT_WATCH","handleWatchEstablishmentError","operationName","rebuildWatch","rebuildWatchPromise","REBUILDING","rebuildWatchMsg","eventID","nextEventMsg","REBUILD_WATCH","isInitWatch","abortWatch","closeWithError","refreshLogin","useRetryTicket","handleCommonError","onSignError","onTimeoutError","onNotRetryableError","onCancelledError","onUnknownError","onWSDisconnected","pause","onceWSConnected","isWSConnected","closeWatch","queryId","CLOSED","onWatchClose","CLOSING","closeWatchMsg","e_4","clearACKSchedule","ackTimeoutId","waitExpectedTimeoutId","sendACK","ackMsg","e_5","CHECK_LAST","isTimeoutError","isCancelledError","getWaitExpectedTimeoutLength","RealtimeListener","onMessage","ERRORED","expectEventId","clearWaitExpectedEvent","resume","RESUMING","e_6","handleServerEventsInternel","postHandleServerEventsValidityCheck","e_7","allChangeEvents","getPublicEvent","initEncountered","len","change","dataType","doc","queueType","localDoc","docId","doc_1","updatedFields","fieldPath","removedFields","ind","findIndex","docsSnapshot","DataType","QueueType","DocID","Doc","UpdatedFields","RemovedFields","virtual_websocket_client_1","ws_event_1","virtualWSClient","queryIdClientMap","watchIdClientMap","pingFailed","pongMissed","logins","wsReadySubsribers","wsResponseWait","rttObserved","_resolve","_reject","hasResolved","hasRejected","wsInitPromise","readyState","respWaitSpec","closeAllClients","client","pauseClients","clients","resumeClients","initWebSocketConnection","reconnect","maxReconnect","reconnectState","CloseEventCode","ReconnectWebSocket","getWsSign","wsSign_1","wsUrl","getWsClass","WebSocket","connect","initWebSocketEvent","e_3","reconnectInterval","wsOpened","onopen","onerror","clearHeartbeat","onclose","closeEvent","NoRealtimeListeners","HeartbeatPingError","HeartbeatPongTimeoutError","NormalClosure","AbnormalClosure","getWSCloseError","NoAuthentication","onmessage","rawMsg","heartbeat","virtualWatch_1","responseWaitSpec","lastPingSendTS","rtt","Boolean","webLogin","loginInfo_1","loggedIn","loggingInPromise","emptyEnvLoginInfo","wsSign","referrer","loginMsg","exMsgData","getRuntime","signStr","secretVersion","loginResMsg","loginInfo","loginStartTS","curLoginInfo","expiredTs","appConfig","cur","ping","pingTimeoutId","pongTimeoutId","CLOSE_EVENT_CODE_INFO","watch","immediate","realtimePongWaitTimeout","realtimePingInterval","EUploadMethod","errors_1","isString","isPalinObject","storageGateWay","objectId","signedHeader","authorization","uploadUrl","fileId","cloudObjectId","cosFileId","cloudObjectMeta","download_url","downloadUrl","convertedFileList","fileid","download_list","fileID","tempFileURL","fileList","delete_list","srcPath","src_path","dstPath","dst_path","overwrite","removeOriginal","remove_original","copy_list","CloudbaseStorage","isGateWay","uploadFile","cloudPath","filePath","fileContent","uploadMethod","put","getUploadMetadata","metadataResult","metadata","putParams","commonParams","postParams","isSuccess","uploadConfig","metaData","metaDataParam","deleteFile","fileList_1","fileid_list","getTempFileURL","fileList_2","max_age","maxAge","file_list","downloadFile","tmpUrlRes","tmpUrl","encodeURI","tempFilePath","copyFile","fileList_3","getFileInfo","fileInfo","fromEntries","fileSize","cloudId","fileName","pop","mime","etag","lastModified","cacheControl","ICloudbaseDeleteFileParams","ICloudbaseGetTempFileURLParams","ICloudbaseDownloadFileParams","ICloudbaseCopyFileParams","SupabaseFileAPILikeStorage","bucketId","throwOnError","bucket","fileBody","fileOptions","_getCloudPath","uploadFileParams","toBase64","fullPath","isStorageError","uploadToSignedUrl","_token","createSignedUploadUrl","signedUrl","StorageError","move","fromPath","toPath","copy","createSignedUrl","expiresIn","_normalizeCloudId","transformQuery","_transformOptsToQueryString","separator","createSignedUrls","paths","signedUrlResult","responseType","Blob","pathOrFileId","isFileId","displayName","_extractPathFromFileId","_extractBucketFromFileId","toISOString","updatedAt","createdAt","lastAccessedAt","exists","getPublicUrl","publicUrl","remove","chunkSize_1","pathChunks","fileInfoResults","fileInfoMap_1","flat","floor","failedFiles","now_1","bucket_id","owner","last_accessed_at","buckets","public","cleanPath","Buffer","btoa","width","height","resize","format","quality","max","envAndBucket","dotIndex","supabaseComponent","storageCache","_target","__isStorageError","StorageApiError","toJSON","StorageUnknownError","originalError","RUNTIME","Web","adapterList_1","WEB","WebRequest","reqMethod","formData","createObjectURL","link","setAttribute","click","revokeObjectURL","abortController","AbortController","enableAbort","signal","aborted","timer","then","catch","x","realUrl","getProtocol","ajax","XMLHttpRequest","open","setRequestHeader","onreadystatechange","arr","getAllResponseHeaders","headerMap_1","line","shift","responseText","toQueryString","AbstractSDKRequest","INVALID_SYNTAX","NETWORK_ERROR","UNKOWN_ERROR","isFirefox","REG_STACK_DECORATE","REG_STACK_LINK","getRewritedError","sourceLink","innerErr","innerErrStack","REG_STACK_INNER_METHOD","REG_STACK_INNER_METHOD_WITHOUT_LINK","indexOfSource","realErrStack","unshift","descriptor","IS_DEBUG_MODE","fnName","outterErrStacks","indexOfDecorator","exec","getSourceLink","failErr","logs","subtitle","printGroupLog","abortController_1","jwt","f","TcbCacheObject","tcbCacheObject","clear","AbstractStorage","persistenceTag","createStorage","setStoreAsync","process","tcb_token","removeStore","CloudbaseEvent","IErrorEvent","customeAddEventListener","off","customRemoveEventListener","isInstanceOf","ev","listens","handlers_1","eventEmitter","construct","d","d2","urlHasQuery","queryString","u","reg","substr","matches","sourceURL","rtn","cb","throwPromiseNotDefined","printTrace","collapsed","groupCollapsed","content_1","tip","trace","groupEnd","ErrorCode","Opeartor","QueryType","FieldType","OrderDirectionList","WhereFilterOpList","eq","lt","lte","gt","gte","extendStatics","__proto__","__","_symbols","__internalMark__","InternalSymbol","__mark__","for","symbol","SYMBOL_UNSET_FIELD_NAME","SYMBOL_UPDATE_COMMAND","SYMBOL_QUERY_COMMAND","SYMBOL_LOGIC_COMMAND","SYMBOL_GEO_POINT","SYMBOL_GEO_LINE_STRING","SYMBOL_GEO_POLYGON","SYMBOL_GEO_MULTI_POINT","SYMBOL_GEO_MULTI_LINE_STRING","SYMBOL_GEO_MULTI_POLYGON","SYMBOL_SERVER_DATE","SYMBOL_REGEXP","getType","isObject","isNumber","isDate","isRegExp","isInternalObject","_internalType","LineString","points","point","Point","coordinates","validate","lineString","o","iterator","m","__values","e_1_1","return","isClosed","firstPoint","lastPoint","latitude","longitude","Polygon","lines","toReadableString","polygon","isCloseLineString","line_1","line_1_1","e_2_1","MultiPoint","multiPoint","MultiLineString","multiLineString","MultiPolygon","polygons","polygons_1","polygons_1_1","multiPolygon","polygon_1","polygon_1_1","e_4_1","e_3_1","ServerDate","$date","ServerDateConstructor","opt","UPDATE_COMMANDS_LITERAL","__read","n","ar","Util","formatResDocumentData","documents","formatField","protoField","realValue","whichType","lng","lat","$timestamp","generateDocId","autoId","chars","Validate","isGeopoint","degree","degreeAbs","abs","isInteger","num","IntergerError","isFieldOrder","direction","DirectionError","isFieldPath","isOperator","op","OpStrError","isCollName","CollNameError","isDocID","DocIDError","createPromiseCallback","LOGIC_COMMANDS_LITERAL","UpdateCommand","operator","operands","fieldName","_setFieldName","isUpdateCommand","object","LogicCommand","isLogicCommand","isQueryCommand","operand","and","__expressions__","expressions","AND","or","OR","QUERY_COMMANDS_LITERAL","QueryCommand","IN","NIN","command","EQ","neq","NEQ","GT","GTE","LT","LTE","in","nin","geoNear","geometry","maxDistance","minDistance","GEO_NEAR","geoWithin","GEO_WITHIN","geoIntersects","GEO_INTERSECTS","isComparisonCommand","OperatorMap","operatorToString","REMOVE","SHIFT","UNSHIFT","to","pack","l","serializeHelper","visited","$regex","$options","flags","flatten","shouldPreserverObject","parents","cloned","flattenedChild","hasKeyNotCombined","childKey","flattenQueryObject","isConversionRequired","mergeConditionAfterEncode","condition","conditionKey","encodeInternalDataType","serializeInternalDataType","UpdateSerializer","encode","encodeUpdate","encodeUpdateCommand","encodeUpdateObject","PUSH","PULL","PULL_ALL","POP","ADD_TO_SET","encodeArrayUpdateCommand","encodeFieldUpdateCommand","$op","modifiers","$each","$position","flattened","$setCommand","SET","wsList","getWsInstance","db","docSizeLimit","DocumentReference","coll","docID","_db","_coll","isBatch","hasOperator","checkMixed","objs","queryType","DOC","merge","updated","upsertedId","upserted_id","deleted","QuerySerializer","QueryEncoder","encodeQuery","encodeLogicCommand","encodeQueryCommand","encodeQueryObject","encodeRegExp","NOR","subqueries","oprand","NOT","operatorExpression","subquery","encodeComparisonCommand","ELEM_MATCH","EXISTS","SIZE","MOD","ALL","$nearSphere","$geometry","$maxDistance","$minDistance","$geoWithin","$geoIntersects","Query","fieldFilters","fieldOrders","queryOptions","_fieldFilters","_queryOptions","_fieldOrders","_request","newOder","WHERE","where","QueryParamTypeError","checkFlag","QueryParamValueError","directionStr","newOrder","combinedOrders","option","skip","upsertId","upsert_id","Aggregation","_stages","_collectionName","end","thisArg","_arguments","generator","y","g","label","trys","ops","verb","P","fulfilled","rejected","unwrap","_pipe","addFields","bucketAuto","distanceMultiplier","near","project","lookup","replaceRoot","sample","sort","sortByCount","unwind","CollectionReference","aggregate","Command","elemMatch","mod","nor","not","inc","INC","mul","MUL","values","each","$sort","$slice","pull","pullAll","__values__","addToSet","rename","RENAME","bit","BIT","MAX","MIN","expr","$expr","jsonSchema","schema","$jsonSchema","$search","$language","language","$caseSensitive","caseSensitive","$diacriticSensitive","diacriticSensitive","AggregationOperator","ceil","divide","exp","ln","log10","multiply","pow","sqrt","subtract","trunc","arrayElemAt","arrayToObject","concatArrays","indexOfArray","range","reverseArray","zip","cmp","cond","ifNull","switch","dateFromParts","dateFromString","dayOfMonth","dayOfWeek","dayOfYear","isoDayOfWeek","isoWeek","isoWeekYear","millisecond","minute","month","second","hour","week","year","literal","mergeObjects","objectToArray","allElementsTrue","anyElementTrue","setDifference","setEquals","setIntersection","setIsSubset","setUnion","dateToString","indexOfBytes","indexOfCP","strLenBytes","strLenCP","strcasecmp","substrBytes","substrCP","toLower","toUpper","meta","avg","first","last","stdDevPop","stdDevSamp","sum","let","ProjectionOperator","regexp","RegExpConstructor","UPDATE_DOC","transaction","_transaction","getRequestMethod","_transactionId","getTransactionId","upserted","GET_DOC","Transaction","commited","inited","collection","commit","rollback","customRollbackRes","abortReason","startTransaction","runTransaction","times","callbackRes","throwWithRollback","Geo","serverDate","logicCommand","updateCommand","queryCommand","originalSend","createCollection","JSEncrypt","BI_RM","int2char","op_and","op_or","op_xor","op_andnot","lbit","cbit","b64map","hex2b64","h","b64tohex","slop","decoder","decoder$1","Hex","hex","ignore","out","bits","char_count","Base64","re","unarmor","Int10","buf","mulAdd","base","simplify","dbits","reTimeS","reTimeL","stringCut","Stream","enc","hexDigits","hexByte","hexDump","raw","isASCII","parseStringISO","parseStringUTF","parseStringBMP","hi","lo","parseTime","shortYear","parseInteger","neg","pad","parseBitString","unusedBit","intro","parseOctetString","parseOID","ASN1","ASN1Tag","typeName","tagClass","tagNumber","posContent","isUniversal","toPrettyString","indent","tagConstructed","posStart","posEnd","toHexString","decodeLength","getHexStringValue","hexString","streamStart","getSub","isEOC","lowprimes","lplim","BigInteger","fromNumber","fromString","negate","toRadix","km","DB","nbi","ZERO","subTo","compareTo","bitLength","nbits","DM","divRemTo","modPowInt","z","isEven","Classic","Montgomery","copyTo","intValue","DV","byteValue","shortValue","signum","toByteArray","equals","bitwiseTo","xor","andNot","shiftLeft","rShiftTo","lShiftTo","shiftRight","getLowestSetBit","bitCount","testBit","setBit","changeBit","clearBit","flipBit","addTo","multiplyTo","remainder","divideAndRemainder","q","modPow","nbv","Barrett","k1","convert","g2","sqrTo","mulTo","w","is1","revert","modInverse","ac","ONE","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","multiplyLowerTo","multiplyUpperTo","n1","square","gcda","gcda1","fromNumberAsync","bnp_1","bnpfn1_1","mp","mpl","mph","um","mt2","u0","q3","mu","parseBigInt","am1","am2","xl","xh","am3","appName","rr","vv","BI_RC","Arcfour","S","rng_state","rng_pptr","rng_pool","_window","_window2","crypto","getRandomValues","_window3","Uint32Array","_window8","_window10","_window9","onMouseMoveListener_1","_window4","_window6","_window5","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","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","default_key_size","default_public_exponent","setKey","setPrivateKey","privkey","pubkey","getKey","encrypted","uncrypted","DataView","getNative","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","__data__","array","iteratee","predicate","resIndex","baseTimes","isArguments","isBuffer","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseAssignValue","objValue","copyObject","keysIn","arrayEach","assignValue","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","getTag","initCloneArray","initCloneByTag","initCloneObject","isMap","isSet","argsTag","funcTag","objectTag","cloneableTags","baseClone","bitmask","customizer","isDeep","isFlat","isFull","isFunc","stacked","subValue","objectCreate","baseCreate","proto","castPath","toKey","arrayPush","keysFunc","symbolsFunc","getRawTag","objectToString","symToStringTag","baseGetTag","isObjectLike","isFunction","isMasked","toSource","reIsHostCtor","funcProto","objectProto","funcToString","reIsNative","isLength","typedArrayTags","isPrototype","nativeKeys","nativeKeysIn","isProto","lastIndex","nested","arrayMap","isSymbol","symbolProto","symbolToString","baseToString","parent","isKey","stringToPath","arrayBuffer","byteLength","freeExports","nodeType","freeModule","allocUnsafe","cloneArrayBuffer","dataView","byteOffset","reFlags","symbolValueOf","typedArray","isNew","getSymbols","getSymbolsIn","coreJsData","freeGlobal","baseGetAllKeys","isKeyable","baseIsNative","getValue","getPrototype","overArg","nativeObjectToString","isOwn","unmasked","arrayFilter","stubArray","propertyIsEnumerable","nativeGetSymbols","getOwnPropertySymbols","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ArrayBuffer","Ctor","ctorString","nativeCreate","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","reIsUint","reIsDeepProp","reIsPlainProp","maskSrcKey","IE_PROTO","assocIndexOf","getMapData","memoize","freeProcess","nodeUtil","types","binding","arg","baseGet","baseSlice","freeSelf","pairs","LARGE_ARRAY_SIZE","memoizeCapped","rePropName","reEscapeChar","number","quote","subString","CLONE_DEEP_FLAG","other","baseIsArguments","stubFalse","baseIsMap","baseUnary","nodeIsMap","baseIsSet","nodeIsSet","baseIsTypedArray","nodeIsTypedArray","arrayLikeKeys","baseKeys","isArrayLike","baseKeysIn","resolver","memoized","Cache","baseSet","baseUnset","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","__esModule","ns","def","current","definition","nmd","children","__webpack_exports__"],"sourceRoot":""}