@tarojs/taro-h5 3.3.16 → 3.3.17

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 (169) hide show
  1. package/dist/index.cjs.js +5863 -8163
  2. package/dist/index.js +9044 -0
  3. package/dist/taroApis.js +1 -1
  4. package/package.json +9 -9
  5. package/src/api/ad/index.ts +5 -0
  6. package/src/api/ai/facial.ts +6 -0
  7. package/src/api/ai/index.ts +2 -0
  8. package/src/api/ai/visual.ts +4 -0
  9. package/src/api/alipay/index.ts +4 -0
  10. package/src/api/base/crypto.ts +4 -0
  11. package/src/api/base/debug.ts +5 -0
  12. package/src/api/base/index.ts +23 -0
  13. package/src/api/base/performance.ts +5 -0
  14. package/src/api/base/system/index.ts +2 -0
  15. package/src/api/base/system/info.ts +64 -0
  16. package/src/api/base/system/network.ts +70 -0
  17. package/src/api/base/update.ts +5 -0
  18. package/src/api/base/weapp/app-event.ts +19 -0
  19. package/src/api/base/weapp/life-cycle.ts +5 -0
  20. package/src/api/canvas/CanvasContext.ts +230 -0
  21. package/src/api/canvas/canvasGetImageData.ts +29 -0
  22. package/src/api/canvas/canvasPutImageData.ts +26 -0
  23. package/src/api/canvas/canvasToTempFilePath.ts +26 -0
  24. package/src/api/canvas/createCanvasContext.ts +20 -0
  25. package/src/api/canvas/{index.js → index.ts} +9 -3
  26. package/src/api/cloud/index.ts +27 -0
  27. package/src/api/data-analysis/index.ts +6 -0
  28. package/src/api/device/accelerometer.ts +89 -0
  29. package/src/api/device/accessibility.ts +4 -0
  30. package/src/api/device/battery.ts +5 -0
  31. package/src/api/device/bluetooth-ble.ts +19 -0
  32. package/src/api/device/bluetooth-peripheral.ts +6 -0
  33. package/src/api/device/bluetooth.ts +16 -0
  34. package/src/api/device/calendar.ts +5 -0
  35. package/src/api/device/clipboard.ts +67 -0
  36. package/src/api/device/compass.ts +74 -0
  37. package/src/api/device/contact.ts +5 -0
  38. package/src/api/device/crypto.ts +4 -0
  39. package/src/api/device/gyroscope.ts +7 -0
  40. package/src/api/device/iBeacon.ts +10 -0
  41. package/src/api/device/index.ts +22 -0
  42. package/src/api/device/keyboard.ts +7 -0
  43. package/src/api/device/memory.ts +5 -0
  44. package/src/api/device/motion.ts +92 -0
  45. package/src/api/device/nfc.ts +10 -0
  46. package/src/api/device/phone.ts +30 -0
  47. package/src/api/device/scan.ts +7 -0
  48. package/src/api/device/screen.ts +9 -0
  49. package/src/api/device/vibrate.ts +36 -0
  50. package/src/api/device/wifi.ts +13 -0
  51. package/src/api/ext/index.ts +5 -0
  52. package/src/api/files/index.ts +11 -0
  53. package/src/api/framework/index.ts +10 -0
  54. package/src/api/index.ts +25 -0
  55. package/src/api/location/chooseLocation.ts +106 -0
  56. package/src/api/location/index.ts +19 -0
  57. package/src/api/location/style.css +8 -8
  58. package/src/api/media/audio/index.ts +99 -0
  59. package/src/api/media/background-audio.ts +12 -0
  60. package/src/api/media/camera.ts +4 -0
  61. package/src/api/media/editor.ts +29 -0
  62. package/src/api/media/image/chooseImage.ts +80 -0
  63. package/src/api/{image → media/image}/getImageInfo.js +0 -0
  64. package/src/api/media/image/index.ts +13 -0
  65. package/src/api/{image → media/image}/previewImage.js +4 -0
  66. package/src/api/media/index.ts +13 -0
  67. package/src/api/media/live.ts +5 -0
  68. package/src/api/media/map.ts +4 -0
  69. package/src/api/media/media-recorder.ts +4 -0
  70. package/src/api/media/recorder.ts +6 -0
  71. package/src/api/media/video/index.ts +82 -0
  72. package/src/api/media/video-decoder.ts +4 -0
  73. package/src/api/media/video-processing.ts +4 -0
  74. package/src/api/media/voip.ts +17 -0
  75. package/src/api/navigate/index.ts +7 -0
  76. package/src/api/{fileTransfer/downloadFile.js → network/download.ts} +16 -25
  77. package/src/api/network/index.ts +7 -0
  78. package/src/api/network/mdns.ts +13 -0
  79. package/src/api/{request/index.js → network/request/index.ts} +9 -6
  80. package/src/api/network/tcp.ts +4 -0
  81. package/src/api/network/udp.ts +4 -0
  82. package/src/api/{fileTransfer/uploadFile.js → network/upload.ts} +28 -30
  83. package/src/api/{fileTransfer/utils.js → network/utils.ts} +0 -0
  84. package/src/api/{webSocket/index.js → network/websocket/index.ts} +49 -56
  85. package/src/api/{webSocket/socketTask.js → network/websocket/socketTask.ts} +16 -6
  86. package/src/api/open-api/account.ts +4 -0
  87. package/src/api/open-api/address.ts +4 -0
  88. package/src/api/open-api/authorize.ts +5 -0
  89. package/src/api/open-api/card.ts +5 -0
  90. package/src/api/open-api/channels-live.ts +9 -0
  91. package/src/api/open-api/customer-service.ts +4 -0
  92. package/src/api/open-api/facial.ts +7 -0
  93. package/src/api/open-api/favorites.ts +5 -0
  94. package/src/api/open-api/group.ts +4 -0
  95. package/src/api/open-api/index.ts +18 -0
  96. package/src/api/open-api/invoice.ts +5 -0
  97. package/src/api/open-api/license-plate.ts +4 -0
  98. package/src/api/open-api/login.ts +6 -0
  99. package/src/api/open-api/red-package.ts +4 -0
  100. package/src/api/open-api/settings.ts +5 -0
  101. package/src/api/open-api/soter.ts +6 -0
  102. package/src/api/open-api/subscribe-message.ts +4 -0
  103. package/src/api/open-api/user-info.ts +5 -0
  104. package/src/api/open-api/werun.ts +5 -0
  105. package/src/api/payment/index.ts +5 -0
  106. package/src/api/route/index.ts +10 -0
  107. package/src/api/share/index.ts +13 -0
  108. package/src/api/storage/background-fetch.ts +7 -0
  109. package/src/api/storage/index.ts +193 -0
  110. package/src/api/swan/index.ts +31 -0
  111. package/src/{taro/index.js → api/taro.ts} +133 -149
  112. package/src/api/{createAnimation/index.js → ui/animation/index.ts} +26 -14
  113. package/src/api/ui/background.ts +5 -0
  114. package/src/api/ui/custom-component.ts +4 -0
  115. package/src/api/ui/fonts.ts +4 -0
  116. package/src/api/ui/index.ts +12 -0
  117. package/src/api/ui/interaction/actionSheet.ts +212 -0
  118. package/src/api/{interactive/index.js → ui/interaction/index.ts} +102 -90
  119. package/src/api/ui/interaction/modal.ts +237 -0
  120. package/src/api/{interactive/toast.js → ui/interaction/toast.ts} +35 -33
  121. package/src/api/ui/menu.ts +4 -0
  122. package/src/api/ui/navigation-bar/index.ts +52 -0
  123. package/src/api/ui/pull-down-refresh.ts +32 -0
  124. package/src/api/{scroll/index.js → ui/scroll/index.ts} +16 -28
  125. package/src/api/ui/sticky.ts +4 -0
  126. package/src/api/ui/tab-bar.ts +326 -0
  127. package/src/api/ui/window.ts +37 -0
  128. package/src/api/utils/handler.ts +105 -0
  129. package/src/api/utils/{index.js → index.ts} +23 -86
  130. package/src/api/worker/index.ts +4 -0
  131. package/src/api/wxml/index.ts +9 -0
  132. package/src/api/{createSelectorQuery/index.js → wxml/selectorQuery.ts} +86 -59
  133. package/src/index.ts +6 -0
  134. package/src/types/api.d.ts +4 -0
  135. package/src/types/define.d.ts +2 -0
  136. package/{types → src/types}/index.d.ts +0 -0
  137. package/{types → src/types}/type.ts +1 -1
  138. package/src/api/accelerometer/index.js +0 -105
  139. package/src/api/audio/index.js +0 -137
  140. package/src/api/canvas/canvasGetImageData.js +0 -44
  141. package/src/api/canvas/canvasPutImageData.js +0 -45
  142. package/src/api/canvas/canvasToTempFilePath.js +0 -49
  143. package/src/api/canvas/createCanvasContext.js +0 -340
  144. package/src/api/clipboard/index.js +0 -113
  145. package/src/api/compass/index.js +0 -99
  146. package/src/api/deviceMotion/index.js +0 -105
  147. package/src/api/fileTransfer/index.js +0 -2
  148. package/src/api/image/chooseImage.js +0 -87
  149. package/src/api/image/index.js +0 -7
  150. package/src/api/index.js +0 -29
  151. package/src/api/interactive/actionSheet.js +0 -214
  152. package/src/api/interactive/modal.js +0 -256
  153. package/src/api/location/chooseLocation.js +0 -143
  154. package/src/api/location/index.js +0 -5
  155. package/src/api/navigationBar/index.js +0 -57
  156. package/src/api/open/index.js +0 -5
  157. package/src/api/others/index.js +0 -43
  158. package/src/api/pullDownRefresh/index.js +0 -51
  159. package/src/api/storage/index.js +0 -211
  160. package/src/api/system/index.js +0 -9
  161. package/src/api/system/info.js +0 -36
  162. package/src/api/system/network.js +0 -68
  163. package/src/api/tabBar/index.js +0 -402
  164. package/src/api/unsupportedApi/index.js +0 -278
  165. package/src/api/vibrate/index.js +0 -49
  166. package/src/api/video/index.js +0 -87
  167. package/src/api/window/index.js +0 -38
  168. package/src/index.cjs.js +0 -11
  169. package/src/index.js +0 -6
@@ -1,143 +0,0 @@
1
- import './style.css'
2
-
3
- function createLocaltionChooser (handler) {
4
- const html = `
5
- <div class='taro_chooselocation'>
6
- <div class='taro_chooselocation_bar'>
7
- <div class='taro_chooselocation_back'></div>
8
- <p class='taro_chooselocation_title'>位置</p>
9
- <button class='taro_chooselocation_submit'>完成</button>
10
- </div>
11
- <iframe class='taro_chooselocation_frame' frameborder='0' src='https://apis.map.qq.com/tools/locpicker?search=1&type=1&key=${LOCATION_APIKEY}&referer=myapp'></iframe>
12
- </div>
13
- `
14
- const container = document.createElement('div')
15
- container.innerHTML = html
16
- const main = container.querySelector('.taro_chooselocation')
17
-
18
- function show () {
19
- setTimeout(() => {
20
- main.style.top = '0'
21
- })
22
- }
23
-
24
- function hide () {
25
- main.style.top = '100%'
26
- }
27
-
28
- function back () {
29
- handler({ errMsg: 'chooseLOcation:fail cancel' })
30
- hide()
31
- }
32
-
33
- function submit () {
34
- handler()
35
- hide()
36
- }
37
-
38
- function remove () {
39
- container.remove()
40
- window.removeEventListener('popstate', back)
41
- }
42
-
43
- container.querySelector('.taro_chooselocation_back').addEventListener('click', back)
44
- container.querySelector('.taro_chooselocation_submit').addEventListener('click', submit)
45
-
46
- window.addEventListener('popstate', back)
47
-
48
- return {
49
- show,
50
- remove,
51
- container
52
- }
53
- }
54
-
55
- /**
56
- * @typedef {Object} OriginalLocationObject
57
- * @property {string} module
58
- * @property {{ lat: number, lng: number }} latlng
59
- * @property {string} poiaddress
60
- * @property {string} poiname
61
- * @property {string} cityname
62
- */
63
-
64
- /**
65
- * @typedef {Object} LocationObject
66
- * @property {string} errMsg 信息
67
- * @property {string} name 位置名称
68
- * @property {string} address 详细地址
69
- * @property {string} latitude 纬度,浮点数,范围为-90~90,负数表示南纬。使用 gcj02 国测局坐标系
70
- * @property {string} longitude 经度,浮点数,范围为-180~180,负数表示西经。使用 gcj02 国测局坐标系
71
- */
72
-
73
- /**
74
- * 打开地图选择位置。
75
- * @param {Object} object 参数
76
- * @param {(obj: LocationObject) => void} [object.success] 接口调用成功的回调函数
77
- * @param {Function} [object.fail] 接口调用失败的回调函数
78
- * @param {Function} [object.complete] 接口调用结束的回调函数(调用成功、失败都会执行)
79
- */
80
- const chooseLocation = ({ success, fail, complete } = {}) => {
81
- return new Promise((resolve, reject) => {
82
- const choosenLocation = {}
83
- const onSuccess = res => {
84
- success && success(res)
85
- complete && complete(res)
86
- resolve(res)
87
- }
88
- const onError = res => {
89
- fail && fail(res)
90
- complete && complete(res)
91
- reject(res)
92
- }
93
-
94
- // eslint-disable-next-line
95
- if (!LOCATION_APIKEY) {
96
- const errMsg = 'chooseLocation:fail LOCATION_APIKEY needed'
97
- console.warn('chooseLocation api 依赖腾讯地图定位api,需要在defineConstants中配置LOCATION_APIKEY')
98
- return onError({ errMsg })
99
- }
100
-
101
- const onMessage = event => {
102
- // 接收位置信息,用户选择确认位置点后选点组件会触发该事件,回传用户的位置信息
103
- /** @type {OriginalLocationObject} */
104
- const loc = event.data
105
-
106
- // 防止其他应用也会向该页面post信息,需判断module是否为'locationPicker'
107
- if (!loc || loc.module !== 'locationPicker') return
108
-
109
- choosenLocation.name = loc.poiname
110
- choosenLocation.address = loc.poiaddress
111
- choosenLocation.latitude = loc.latlng.lat
112
- choosenLocation.longitude = loc.latlng.lng
113
- }
114
-
115
- const chooser = createLocaltionChooser(res => {
116
- if (res) {
117
- onError(res)
118
- } else {
119
- if (choosenLocation.latitude && choosenLocation.longitude) {
120
- onSuccess({
121
- errMsg: 'chooseLocation:ok',
122
- ...choosenLocation
123
- })
124
- } else {
125
- onError({
126
- errMsg: 'chooseLocation:fail'
127
- })
128
- }
129
- }
130
- window.removeEventListener('message', onMessage, false)
131
- setTimeout(() => {
132
- chooser.remove()
133
- }, 300)
134
- })
135
-
136
- document.body.appendChild(chooser.container)
137
-
138
- window.addEventListener('message', onMessage, false)
139
- chooser.show()
140
- })
141
- }
142
-
143
- export default chooseLocation
@@ -1,5 +0,0 @@
1
- import { processOpenapi } from '../utils/index'
2
-
3
- export { default as chooseLocation } from './chooseLocation'
4
- export const getLocation = processOpenapi('getLocation')
5
- export const openLocation = processOpenapi('openLocation', { scale: 18 })
@@ -1,57 +0,0 @@
1
- import { shouldBeObject, getParameterError } from '../utils'
2
-
3
- export function setNavigationBarTitle (options) {
4
- // options must be an Object
5
- const isObject = shouldBeObject(options)
6
- if (!isObject.res) {
7
- const res = { errMsg: `setNavigationBarTitle${isObject.msg}` }
8
- console.error(res.errMsg)
9
- return Promise.reject(res)
10
- }
11
-
12
- const { title, success, fail, complete } = options
13
- const res = { errMsg: 'setNavigationBarTitle:ok' }
14
-
15
- if (!title || typeof title !== 'string') {
16
- res.errMsg = getParameterError({
17
- name: 'setNavigationBarTitle',
18
- para: 'title',
19
- correct: 'String',
20
- wrong: title
21
- })
22
- console.error(res.errMsg)
23
- typeof fail === 'function' && fail(res)
24
- typeof complete === 'function' && complete(res)
25
- return Promise.reject(res)
26
- }
27
-
28
- if (document.title !== title) {
29
- document.title = title
30
- }
31
-
32
- typeof success === 'function' && success(res)
33
- typeof complete === 'function' && complete(res)
34
-
35
- return Promise.resolve(res)
36
- }
37
-
38
- /**
39
- * @typedef {Object} NavigationBarColorParam
40
- * @property {string} frontColor 前景颜色值,包括按钮、标题、状态栏的颜色,仅支持 #ffffff 和 #000000
41
- * @property {string} backgroundColor 背景颜色值,有效值为十六进制颜色
42
- * @property {{duration: number, timingFunc: string}} animation 动画效果
43
- * @property {function} [success] 接口调用成功的回调函数
44
- * @property {function} [fail] 接口调用失败的回调函数
45
- * @property {function} [complete] 接口调用结束的回调函数(调用成功、失败都会执行)
46
- */
47
-
48
- /**
49
- * 设置页面导航条颜色
50
- * @param {NavigationBarColorParam} options
51
- */
52
- export function setNavigationBarColor (options) {
53
- const meta = document.createElement('meta')
54
- meta.setAttribute('name', 'theme-color')
55
- meta.setAttribute('content', options.backgroundColor)
56
- document.head.appendChild(meta)
57
- }
@@ -1,5 +0,0 @@
1
- import { processOpenapi } from '../utils'
2
-
3
- export const requestPayment = processOpenapi('chooseWXPay', undefined, undefined, options => {
4
- return Object.assign(options, { timestamp: Number.parseInt(options.timeStamp, 10) })
5
- })
@@ -1,43 +0,0 @@
1
- import { fromByteArray, toByteArray } from 'base64-js'
2
- import { shouldBeObject, getParameterError } from '../utils'
3
-
4
- export function arrayBufferToBase64 (arrayBuffer) {
5
- return fromByteArray(arrayBuffer)
6
- }
7
-
8
- export function base64ToArrayBuffer (base64) {
9
- return toByteArray(base64)
10
- }
11
-
12
- export function makePhoneCall (options) {
13
- // options must be an Object
14
- const isObject = shouldBeObject(options)
15
- if (!isObject.res) {
16
- const res = { errMsg: `makePhoneCall${isObject.msg}` }
17
- console.error(res.errMsg)
18
- return Promise.reject(res)
19
- }
20
-
21
- const { phoneNumber, success, fail, complete } = options
22
- const res = { errMsg: 'makePhoneCall:ok' }
23
-
24
- if (typeof phoneNumber !== 'string') {
25
- res.errMsg = getParameterError({
26
- name: 'makePhoneCall',
27
- para: 'phoneNumber',
28
- correct: 'String',
29
- wrong: phoneNumber
30
- })
31
- console.error(res.errMsg)
32
- typeof fail === 'function' && fail(res)
33
- typeof complete === 'function' && complete(res)
34
- return Promise.reject(res)
35
- }
36
-
37
- window.location.href = `tel:${phoneNumber}`
38
-
39
- typeof success === 'function' && success(res)
40
- typeof complete === 'function' && complete(res)
41
-
42
- return Promise.resolve(res)
43
- }
@@ -1,51 +0,0 @@
1
- import Taro from '@tarojs/api'
2
- /**
3
- * 开始下拉刷新。调用后触发下拉刷新动画,效果与用户手动下拉刷新一致。
4
- * @param {Object} object 参数
5
- */
6
- const startPullDownRefresh = function (object = {}) {
7
- return new Promise((resolve, reject) => {
8
- const { success, fail, complete } = object
9
- const res = {}
10
- Taro.eventCenter.trigger('__taroStartPullDownRefresh', {
11
- successHandler: () => {
12
- success && success(res)
13
- complete && complete()
14
- resolve(res)
15
- },
16
- errorHandler: () => {
17
- fail && fail(res)
18
- complete && complete()
19
- reject(res)
20
- }
21
- })
22
- })
23
- }
24
-
25
- /**
26
- * 停止当前页面下拉刷新。
27
- * @param {Object} object 参数
28
- */
29
- const stopPullDownRefresh = function (object = {}) {
30
- return new Promise((resolve, reject) => {
31
- const { success, fail, complete } = object
32
- const res = {}
33
- Taro.eventCenter.trigger('__taroStopPullDownRefresh', {
34
- successHandler: () => {
35
- success && success(res)
36
- complete && complete()
37
- resolve(res)
38
- },
39
- errorHandler: () => {
40
- fail && fail(res)
41
- complete && complete()
42
- reject(res)
43
- }
44
- })
45
- })
46
- }
47
-
48
- export {
49
- startPullDownRefresh,
50
- stopPullDownRefresh
51
- }
@@ -1,211 +0,0 @@
1
- import { shouldBeObject, getParameterError } from '../utils'
2
-
3
- function setStorage (options) {
4
- // options must be an Object
5
- const isObject = shouldBeObject(options)
6
- if (!isObject.res) {
7
- const res = { errMsg: `setStorage${isObject.msg}` }
8
- console.error(res.errMsg)
9
- return Promise.reject(res)
10
- }
11
-
12
- const { key, data, success, fail, complete } = options
13
- const res = { errMsg: 'setStorage:ok' }
14
-
15
- if (typeof key !== 'string') {
16
- res.errMsg = getParameterError({
17
- name: 'setStorage',
18
- para: 'key',
19
- correct: 'String',
20
- wrong: key
21
- })
22
- console.error(res.errMsg)
23
- typeof fail === 'function' && fail(res)
24
- typeof complete === 'function' && complete(res)
25
- return Promise.reject(res)
26
- }
27
-
28
- setStorageSync(key, data)
29
-
30
- typeof success === 'function' && success(res)
31
- typeof complete === 'function' && complete(res)
32
-
33
- return Promise.resolve(res)
34
- }
35
-
36
- function setStorageSync (key, data = '') {
37
- if (typeof key !== 'string') {
38
- console.error(getParameterError({
39
- name: 'setStorage',
40
- correct: 'String',
41
- wrong: key
42
- }))
43
- return
44
- }
45
-
46
- const type = typeof data
47
- let obj = {}
48
-
49
- if (type === 'symbol') {
50
- obj = { data: '' }
51
- } else {
52
- obj = { data }
53
- }
54
- localStorage.setItem(key, JSON.stringify(obj))
55
- }
56
-
57
- function getStorage (options) {
58
- // options must be an Object
59
- const isObject = shouldBeObject(options)
60
- if (!isObject.res) {
61
- const res = { errMsg: `getStorage${isObject.msg}` }
62
- console.error(res.errMsg)
63
- return Promise.reject(res)
64
- }
65
-
66
- const { key, success, fail, complete } = options
67
- const res = { errMsg: 'getStorage:ok' }
68
-
69
- if (typeof key !== 'string') {
70
- res.errMsg = getParameterError({
71
- name: 'getStorage',
72
- para: 'key',
73
- correct: 'String',
74
- wrong: key
75
- })
76
- console.error(res.errMsg)
77
- typeof fail === 'function' && fail(res)
78
- typeof complete === 'function' && complete(res)
79
- return Promise.reject(res)
80
- }
81
-
82
- const { result, data } = getItem(key)
83
- if (result) {
84
- res.data = data
85
- } else {
86
- res.errMsg = 'getStorage:fail data not found'
87
- typeof fail === 'function' && fail(res)
88
- typeof complete === 'function' && complete(res)
89
- return Promise.reject(res)
90
- }
91
-
92
- typeof success === 'function' && success(res)
93
- typeof complete === 'function' && complete(res)
94
-
95
- return Promise.resolve(res)
96
- }
97
-
98
- function getStorageSync (key) {
99
- if (typeof key !== 'string') {
100
- console.error(getParameterError({
101
- name: 'getStorage',
102
- correct: 'String',
103
- wrong: key
104
- }))
105
- return
106
- }
107
-
108
- const res = getItem(key)
109
- if (res.result) return res.data
110
-
111
- return ''
112
- }
113
-
114
- function getItem (key) {
115
- let item
116
- try {
117
- item = JSON.parse(localStorage.getItem(key))
118
- } catch (e) {}
119
-
120
- // 只返回使用 Taro.setStorage API 存储的数据
121
- if (item && typeof item === 'object' && item.hasOwnProperty('data')) {
122
- return { result: true, data: item.data }
123
- } else {
124
- return { result: false }
125
- }
126
- }
127
-
128
- function getStorageInfo (options = {}) {
129
- const { success, complete } = options
130
- const res = { errMsg: 'getStorageInfo:ok' }
131
-
132
- const info = getStorageInfoSync()
133
-
134
- Object.assign(res, info)
135
-
136
- success && success(res)
137
- complete && complete(res)
138
-
139
- return Promise.resolve(res)
140
- }
141
-
142
- function getStorageInfoSync () {
143
- const res = {}
144
- res.keys = Object.keys(localStorage)
145
- res.limitSize = null
146
- res.currentSize = null
147
- return res
148
- }
149
-
150
- function removeStorage (options) {
151
- // options must be an Object
152
- const isObject = shouldBeObject(options)
153
- if (!isObject.res) {
154
- const res = { errMsg: `removeStorage${isObject.msg}` }
155
- console.error(res.errMsg)
156
- return Promise.reject(res)
157
- }
158
-
159
- const { key, success, fail, complete } = options
160
- const res = { errMsg: 'removeStorage:ok' }
161
-
162
- if (typeof key !== 'string') {
163
- res.errMsg = getParameterError({
164
- name: 'removeStorage',
165
- para: 'key',
166
- correct: 'String',
167
- wrong: key
168
- })
169
- console.error(res.errMsg)
170
- typeof fail === 'function' && fail(res)
171
- typeof complete === 'function' && complete(res)
172
- return Promise.reject(res)
173
- }
174
-
175
- removeStorageSync(key)
176
-
177
- success && success(res)
178
- complete && complete(res)
179
-
180
- return Promise.resolve(res)
181
- }
182
-
183
- function removeStorageSync (key) {
184
- if (typeof key !== 'string') {
185
- console.error(getParameterError({
186
- name: 'removeStorage',
187
- correct: 'String',
188
- wrong: key
189
- }))
190
- return
191
- }
192
-
193
- localStorage.removeItem(key)
194
- }
195
-
196
- function clearStorage () {
197
- localStorage.clear()
198
- }
199
-
200
- export {
201
- setStorage,
202
- setStorageSync,
203
- getStorage,
204
- getStorageSync,
205
- getStorageInfo,
206
- getStorageInfoSync,
207
- removeStorage,
208
- removeStorageSync,
209
- clearStorage,
210
- clearStorage as clearStorageSync
211
- }
@@ -1,9 +0,0 @@
1
- import { getSystemInfo, getSystemInfoSync } from './info'
2
- import { getNetworkType, onNetworkStatusChange } from './network'
3
- import { processOpenapi } from '../utils'
4
-
5
- export const scanCode = processOpenapi('scanQRCode', { needResult: 1 }, res => ({
6
- errMsg: res.errMsg === 'scanQRCode:ok' ? 'scanCode:ok' : res.errMsg,
7
- result: res.resultStr
8
- }))
9
- export { getSystemInfo, getSystemInfoSync, getNetworkType, onNetworkStatusChange }
@@ -1,36 +0,0 @@
1
- import MobileDetect from 'mobile-detect'
2
-
3
- function getSystemInfoSync () {
4
- const md = new MobileDetect(navigator.userAgent)
5
-
6
- const info = {
7
- brand: md.mobile(), // 手机品牌
8
- model: md.mobile(), // 手机型号
9
- system: md.os(), // 操作系统版本
10
- pixelRatio: window.devicePixelRatio, // 设备像素比
11
- screenWidth: window.screen.width, // 屏幕宽度
12
- screenHeight: window.screen.height, // 屏幕高度
13
- windowWidth: document.documentElement.clientWidth, // 可使用窗口宽度
14
- windowHeight: document.documentElement.clientHeight, // 可使用窗口高度
15
- version: '', // 微信版本号
16
- statusBarHeight: '', // 状态栏的高度
17
- platform: navigator.platform, // 客户端平台
18
- language: navigator.language, // 微信设置的语言
19
- fontSizeSetting: '', // 用户字体大小设置。以“我-设置-通用-字体大小”中的设置为准,单位:px
20
- SDKVersion: '' // 客户端基础库版本
21
- }
22
-
23
- return info
24
- }
25
-
26
- function getSystemInfo (options = {}) {
27
- const { success, complete } = options
28
- return new Promise(resolve => {
29
- const info = getSystemInfoSync()
30
- typeof success === 'function' && success(info)
31
- typeof complete === 'function' && complete(info)
32
- resolve(info)
33
- })
34
- }
35
-
36
- export { getSystemInfoSync, getSystemInfo }
@@ -1,68 +0,0 @@
1
- function getConnection () {
2
- return navigator.connection || navigator.mozConnection || navigator.webkitConnection || navigator.msConnection
3
- }
4
-
5
- function getNetworkType (options = {}) {
6
- const connection = getConnection()
7
- const { success, complete } = options
8
- const res = {
9
- errMsg: 'getNetworkType:ok'
10
- }
11
-
12
- // 浏览器不支持获取网络状态
13
- if (!connection) {
14
- res.networkType = 'unknown'
15
- typeof success === 'function' && success(res)
16
- typeof complete === 'function' && complete(res)
17
- return Promise.resolve(res)
18
- }
19
-
20
- let type = 'unknown'
21
-
22
- // Supports only the navigator.connection.type value which doesn't match the latest spec.
23
- // https://www.davidbcalhoun.com/2010/using-navigator-connection-android/
24
- if (!isNaN(Number(connection.type))) {
25
- switch (connection.type) {
26
- case connection.WIFI:
27
- type = 'wifi'
28
- break
29
- case connection.CELL_3G:
30
- type = '3g'
31
- break
32
- case connection.CELL_2G:
33
- type = '2g'
34
- break
35
- default:
36
- // ETHERNET, UNKNOWN
37
- type = 'unknown'
38
- }
39
- } else if (connection.type) {
40
- // Only supports the type value.
41
- type = connection.type
42
- } else if (connection.effectiveType) {
43
- // effectiveType
44
- type = connection.effectiveType
45
- }
46
-
47
- res.networkType = type
48
- typeof success === 'function' && success(res)
49
- typeof complete === 'function' && complete(res)
50
- return Promise.resolve(res)
51
- }
52
-
53
- function onNetworkStatusChange (cb) {
54
- const connection = getConnection()
55
- if (connection) {
56
- connection.addEventListener('change', function () {
57
- getNetworkType()
58
- .then(res => {
59
- const { networkType } = res
60
- const isConnected = networkType !== 'none'
61
- const obj = { isConnected, networkType }
62
- cb(obj)
63
- })
64
- })
65
- }
66
- }
67
-
68
- export { getNetworkType, onNetworkStatusChange }