@tarojs/taro-h5
Advanced tools
Comparing version 0.0.46 to 0.0.47
{ | ||
"name": "@tarojs/taro-h5", | ||
"version": "0.0.46", | ||
"version": "0.0.47", | ||
"description": "Taro h5 framework", | ||
@@ -12,3 +12,5 @@ "main": "index.js", | ||
"scripts": { | ||
"test": "echo \"Error: no test specified\" && exit 1", | ||
"test": "jest", | ||
"test:dev": "jest --watch", | ||
"test:coverage": "jest --coverage", | ||
"build": "rollup -c rollup.config.js" | ||
@@ -29,6 +31,15 @@ }, | ||
"dependencies": { | ||
"@tarojs/taro": "0.0.46", | ||
"@tarojs/taro": "0.0.47", | ||
"jsonp-retry": "^1.0.3", | ||
"nervjs": "^1.2.18" | ||
}, | ||
"devDependencies": { | ||
"babel-core": "^6.26.3", | ||
"babel-jest": "^23.0.1", | ||
"babel-loader": "^7.1.4", | ||
"babel-preset-env": "^1.7.0", | ||
"jest-localstorage-mock": "^2.2.0", | ||
"jest-mock-console": "^0.3.5", | ||
"mock-socket": "^7.1.0" | ||
} | ||
} |
@@ -1,11 +0,26 @@ | ||
function setStorage (options = {}) { | ||
import { shouleBeObject, getParameterError } from '../utils' | ||
function setStorage (options) { | ||
// options must be an Object | ||
const isObject = shouleBeObject(options) | ||
if (!isObject.res) { | ||
const res = { errMsg: `setStorage${isObject.msg}` } | ||
console.error(res.errMsg) | ||
return Promise.reject(res) | ||
} | ||
const { key, data, success, fail, complete } = options | ||
const res = { errMsg: 'getStorage:ok' } | ||
const res = { errMsg: 'setStorage:ok' } | ||
if (typeof key !== 'string') { | ||
const e = new Error(`setStorage:fail parameter error: parameter should be String instead of ${typeof key}`) | ||
res.errMsg = e.message | ||
fail && fail(res) | ||
complete && complete(res) | ||
return Promise.reject(e) | ||
res.errMsg = getParameterError({ | ||
name: 'setStorage', | ||
para: 'key', | ||
correct: 'String', | ||
wrong: typeof key | ||
}) | ||
console.error(res.errMsg) | ||
typeof fail === 'function' && fail(res) | ||
typeof complete === 'function' && complete(res) | ||
return Promise.reject(res) | ||
} | ||
@@ -15,4 +30,4 @@ | ||
success && success(res) | ||
complete && complete(res) | ||
typeof success === 'function' && success(res) | ||
typeof complete === 'function' && complete(res) | ||
@@ -23,3 +38,10 @@ return Promise.resolve(res) | ||
function setStorageSync (key, data = '') { | ||
if (typeof key !== 'string') throw new Error(`setStorageSync:fail parameter error: parameter should be String instead of ${typeof key}`) | ||
if (typeof key !== 'string') { | ||
console.error(getParameterError({ | ||
name: 'setStorage', | ||
correct: 'String', | ||
wrong: typeof key | ||
})) | ||
return | ||
} | ||
@@ -37,3 +59,11 @@ const type = typeof data | ||
function getStorage (options = {}) { | ||
function getStorage (options) { | ||
// options must be an Object | ||
const isObject = shouleBeObject(options) | ||
if (!isObject.res) { | ||
const res = { errMsg: `getStorage${isObject.msg}` } | ||
console.error(res.errMsg) | ||
return Promise.reject(res) | ||
} | ||
const { key, success, fail, complete } = options | ||
@@ -43,13 +73,26 @@ const res = { errMsg: 'getStorage:ok' } | ||
if (typeof key !== 'string') { | ||
const e = new Error(`getStorage:fail parameter error: parameter should be String instead of ${typeof key}`) | ||
res.errMsg = e.message | ||
fail && fail(res) | ||
complete && complete(res) | ||
return Promise.reject(e) | ||
res.errMsg = getParameterError({ | ||
name: 'getStorage', | ||
para: 'key', | ||
correct: 'String', | ||
wrong: typeof key | ||
}) | ||
console.error(res.errMsg) | ||
typeof fail === 'function' && fail(res) | ||
typeof complete === 'function' && complete(res) | ||
return Promise.reject(res) | ||
} | ||
res.data = getStorageSync(key) | ||
const { result, data } = getItem(key) | ||
if (result) { | ||
res.data = data | ||
} else { | ||
res.errMsg = 'getStorage:fail data not found' | ||
typeof fail === 'function' && fail(res) | ||
typeof complete === 'function' && complete(res) | ||
return Promise.reject(res) | ||
} | ||
success && success(res) | ||
complete && complete(res) | ||
typeof success === 'function' && success(res) | ||
typeof complete === 'function' && complete(res) | ||
@@ -60,7 +103,13 @@ return Promise.resolve(res) | ||
function getStorageSync (key) { | ||
if (typeof key !== 'string') throw new Error(`getStorageSync:fail parameter error: parameter should be String instead of ${typeof key}`) | ||
let res = JSON.parse(localStorage.getItem(key)) | ||
if (typeof key !== 'string') { | ||
console.error(getParameterError({ | ||
name: 'getStorage', | ||
correct: 'String', | ||
wrong: typeof key | ||
})) | ||
return | ||
} | ||
// 只返回使用 Taro.setStorage API 存储的数据 | ||
if (res && res.data) return res.data | ||
let res = getItem(key) | ||
if (res.result) return res.data | ||
@@ -70,2 +119,16 @@ return '' | ||
function getItem (key) { | ||
let item | ||
try { | ||
item = JSON.parse(localStorage.getItem(key)) | ||
} catch (e) {} | ||
// 只返回使用 Taro.setStorage API 存储的数据 | ||
if (item && typeof item === 'object' && item.hasOwnProperty('data')) { | ||
return { result: true, data: item.data } | ||
} else { | ||
return { result: false } | ||
} | ||
} | ||
function getStorageInfo (options = {}) { | ||
@@ -93,3 +156,11 @@ const { success, complete } = options | ||
function removeStorage (options = {}) { | ||
function removeStorage (options) { | ||
// options must be an Object | ||
const isObject = shouleBeObject(options) | ||
if (!isObject.res) { | ||
const res = { errMsg: `removeStorage${isObject.msg}` } | ||
console.error(res.errMsg) | ||
return Promise.reject(res) | ||
} | ||
const { key, success, fail, complete } = options | ||
@@ -99,7 +170,12 @@ const res = { errMsg: 'removeStorage:ok' } | ||
if (typeof key !== 'string') { | ||
const e = new Error(`removeStorage:fail parameter error: parameter should be String instead of ${typeof key}`) | ||
res.errMsg = e.message | ||
fail && fail(res) | ||
complete && complete(res) | ||
return Promise.reject(e) | ||
res.errMsg = getParameterError({ | ||
name: 'removeStorage', | ||
para: 'key', | ||
correct: 'String', | ||
wrong: typeof key | ||
}) | ||
console.error(res.errMsg) | ||
typeof fail === 'function' && fail(res) | ||
typeof complete === 'function' && complete(res) | ||
return Promise.reject(res) | ||
} | ||
@@ -116,3 +192,11 @@ | ||
function removeStorageSync (key) { | ||
if (typeof key !== 'string') throw new Error(`removeStorageSync:fail parameter error: parameter should be String instead of ${typeof key}`) | ||
if (typeof key !== 'string') { | ||
console.error(getParameterError({ | ||
name: 'removeStorage', | ||
correct: 'String', | ||
wrong: typeof key | ||
})) | ||
return | ||
} | ||
localStorage.removeItem(key) | ||
@@ -119,0 +203,0 @@ } |
import SocketTask from './socketTask' | ||
import { shouleBeObject, getParameterError } from '../utils' | ||
@@ -6,9 +7,2 @@ let socketTasks = [] | ||
// 最多支持同时存在两个 websocket 链接 | ||
function checkTasks () { | ||
socketTasks = socketTasks.filter(task => task.readyState !== 3) | ||
if (socketTasks.length <= 1) return true | ||
return false | ||
} | ||
function connectSocket (options) { | ||
@@ -19,14 +13,11 @@ const name = 'connectSocket' | ||
// options must be an Object | ||
const optType = typeof options | ||
if (optType !== 'object') { | ||
const error = getParameterError({ | ||
name, | ||
correct: 'Object', | ||
wrong: optType | ||
}) | ||
console.error(error) | ||
return reject(error) | ||
const isObject = shouleBeObject(options) | ||
if (!isObject.res) { | ||
const res = { errMsg: `${name}${isObject.msg}` } | ||
console.error(res.errMsg) | ||
return reject(res) | ||
} | ||
const { url, protocols, success, fail, complete } = options | ||
const res = { errMsg: 'connectSocket:ok' } | ||
@@ -36,3 +27,3 @@ // options.url must be String | ||
if (urlType !== 'string') { | ||
const error = getParameterError({ | ||
res.errMsg = getParameterError({ | ||
name, | ||
@@ -43,6 +34,5 @@ para: 'url', | ||
}) | ||
const res = { errMsg: error } | ||
console.error(error) | ||
fail && fail(res) | ||
complete && complete(res) | ||
console.error(res.errMsg) | ||
typeof fail === 'function' && fail(res) | ||
typeof complete === 'function' && complete(res) | ||
return reject(res) | ||
@@ -53,7 +43,6 @@ } | ||
if (!url.startsWith('ws://') && !url.startsWith('wss://')) { | ||
const error = `request:fail invalid url "${url}"` | ||
const res = { errMsg: error } | ||
console.error(error) | ||
fail && fail(res) | ||
complete && complete(res) | ||
res.errMsg = `request:fail invalid url "${url}"` | ||
console.error(res.errMsg) | ||
typeof fail === 'function' && fail(res) | ||
typeof complete === 'function' && complete(res) | ||
return reject(res) | ||
@@ -66,14 +55,19 @@ } | ||
// 2 connection at most | ||
if (!checkTasks()) { | ||
const errMsg = '同时最多发起 2 个 socket 请求,更多请参考文档。' | ||
console.error(errMsg) | ||
return reject(errMsg) | ||
if (socketTasks.length > 1) { | ||
res.errMsg = '同时最多发起 2 个 socket 请求,更多请参考文档。' | ||
console.error(res.errMsg) | ||
typeof fail === 'function' && fail(res) | ||
typeof complete === 'function' && complete(res) | ||
return reject(res) | ||
} | ||
const task = new SocketTask(url, _protocols) | ||
task._destroyWhenClose = function () { | ||
socketTasks = socketTasks.filter(socketTask => socketTask !== this) | ||
} | ||
socketTasks.push(task) | ||
const res = { socketTaskId: socketsCounter++, errMsg: 'connectSocket:ok' } | ||
success && success(res) | ||
complete && complete(res) | ||
res.socketTaskId = socketsCounter++ | ||
typeof success === 'function' && success(res) | ||
typeof complete === 'function' && complete(res) | ||
@@ -85,30 +79,25 @@ return resolve(task) | ||
function onSocketOpen () { | ||
console.warin('Deprecated.Please use socketTask.onOpen instead.') | ||
console.warn('Deprecated.Please use socketTask.onOpen instead.') | ||
} | ||
function onSocketError () { | ||
console.warin('Deprecated.Please use socketTask.onError instead.') | ||
console.warn('Deprecated.Please use socketTask.onError instead.') | ||
} | ||
function sendSocketMessage () { | ||
console.warin('Deprecated.Please use socketTask.send instead.') | ||
console.warn('Deprecated.Please use socketTask.send instead.') | ||
} | ||
function onSocketMessage () { | ||
console.warin('Deprecated.Please use socketTask.onMessage instead.') | ||
console.warn('Deprecated.Please use socketTask.onMessage instead.') | ||
} | ||
function closeSocket () { | ||
console.warin('Deprecated.Please use socketTask.close instead.') | ||
console.warn('Deprecated.Please use socketTask.close instead.') | ||
} | ||
function onSocketClose () { | ||
console.warin('Deprecated.Please use socketTask.onClose instead.') | ||
console.warn('Deprecated.Please use socketTask.onClose instead.') | ||
} | ||
function getParameterError ({ name, para, correct, wrong }) { | ||
const parameter = para ? `parameter.${para}` : 'parameter' | ||
return `${name}: fail parameter error: ${parameter} should be ${correct} instead of ${wrong}` | ||
} | ||
export default { | ||
@@ -115,0 +104,0 @@ connectSocket, |
@@ -21,3 +21,12 @@ export default class SocketTask { | ||
const { data = '', success, complete } = obj | ||
const { data = '', success, fail, complete } = obj | ||
if (this.readyState !== 1) { | ||
const res = { errMsg: 'SocketTask.send:fail SocketTask.readState is not OPEN' } | ||
console.error(res.errMsg) | ||
typeof fail === 'function' && fail(res) | ||
typeof complete === 'function' && complete(res) | ||
return Promise.reject(res) | ||
} | ||
this.ws.send(data) | ||
@@ -42,2 +51,4 @@ | ||
this.closeDetail = { code, reason } | ||
// 主动断开时需要重置链接数 | ||
this._destroyWhenClose && this._destroyWhenClose() | ||
this.ws.close() | ||
@@ -61,2 +72,4 @@ | ||
this.ws.onclose = () => { | ||
// 若服务器方断掉也需要重置链接数 | ||
this._destroyWhenClose && this._destroyWhenClose() | ||
func(this.closeDetail || { code: 1006, reason: 'abnormal closure' }) | ||
@@ -63,0 +76,0 @@ } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No tests
QualityPackage does not have any tests. This is a strong signal of a poorly maintained or low quality package.
Found 1 instance in 1 package
923169
26
12310
2
7
+ Added@tarojs/taro@0.0.47(transitive)
- Removed@tarojs/taro@0.0.46(transitive)
Updated@tarojs/taro@0.0.47