diff --git a/package.json b/package.json index 9ab868b0b30c6c48338886e9570cbdb83615e79d..52a142a1c40968a89eceb8ab46bb9bdd4049dfe9 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "@vue/test-utils": "^1.0.0-beta.25", "babel-eslint": "^10.0.1", "babylon": "^6.18.0", + "base64-arraybuffer": "^0.2.0", "browserslist": "^4.4.2", "caniuse-lite": "^1.0.30000940", "chai": "^4.1.2", @@ -59,8 +60,8 @@ "globals": { "App": true, "Page": true, - "Component": true, - "Behavior":true, + "Component": true, + "Behavior": true, "getApp": true, "getCurrentPages": true, "plus": true, @@ -76,8 +77,8 @@ "__PLATFORM__": true, "__VERSION__": true, "__GLOBAL__": true, - "__PLATFORM_TITLE__": true, - "__PLATFORM_PREFIX__":true + "__PLATFORM_TITLE__": true, + "__PLATFORM_PREFIX__": true }, "rules": { "no-tabs": 0, diff --git a/src/core/helpers/promise.js b/src/core/helpers/promise.js index f237401716314169a5774693c26ecd0e50d5a9e0..f83f3cc15d5b77d8f6c426fd36f8fa565e881689 100644 --- a/src/core/helpers/promise.js +++ b/src/core/helpers/promise.js @@ -2,7 +2,7 @@ import { isFn } from 'uni-shared' -const SYNC_API_RE = /subNVue|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$/ +const SYNC_API_RE = /subNVue|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64/ const CONTEXT_API_RE = /^create|Manager$/ @@ -56,18 +56,18 @@ export function promisify (name, api) { success: resolve, fail: reject }), ...params) - /* eslint-disable no-extend-native */ - if (!Promise.prototype.finally) { - Promise.prototype.finally = function (callback) { - const promise = this.constructor - return this.then( - value => promise.resolve(callback()).then(() => value), - reason => promise.resolve(callback()).then(() => { - throw reason - }) - ) - } + /* eslint-disable no-extend-native */ + if (!Promise.prototype.finally) { + Promise.prototype.finally = function (callback) { + const promise = this.constructor + return this.then( + value => promise.resolve(callback()).then(() => value), + reason => promise.resolve(callback()).then(() => { + throw reason + }) + ) + } } })) } -} +} diff --git a/src/core/helpers/protocol/base64.js b/src/core/helpers/protocol/base64.js new file mode 100644 index 0000000000000000000000000000000000000000..9513a7a98dbd0639b7bdafb6f8b41fc07f8acb39 --- /dev/null +++ b/src/core/helpers/protocol/base64.js @@ -0,0 +1,11 @@ +export const base64ToArrayBuffer = [{ + name: 'base64', + type: String, + required: true +}] + +export const arrayBufferToBase64 = [{ + name: 'arrayBuffer', + type: [ArrayBuffer, Uint8Array], + required: true +}] diff --git a/src/core/service/api/base64.js b/src/core/service/api/base64.js new file mode 100644 index 0000000000000000000000000000000000000000..3164fe4c187e52a57f347594c9af24890fab8c22 --- /dev/null +++ b/src/core/service/api/base64.js @@ -0,0 +1,4 @@ +import { encode, decode } from 'base64-arraybuffer' + +export const base64ToArrayBuffer = decode +export const arrayBufferToBase64 = encode