From 9c343b09ecca8407129aa062b0090a6758cebbeb Mon Sep 17 00:00:00 2001 From: qiang Date: Fri, 22 Apr 2022 11:44:02 +0800 Subject: [PATCH] feat(App): add requireGlobal --- lib/apis.js | 3 ++- packages/uni-cli-shared/lib/uni-polyfill.js | 16 ++++++++++++-- src/core/helpers/promise.js | 2 +- src/platforms/app-plus/service/api/index.js | 3 ++- .../service/api/plugin/require-global.js | 22 +++++++++++++++++++ 5 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 src/platforms/app-plus/service/api/plugin/require-global.js diff --git a/lib/apis.js b/lib/apis.js index 410072545..37418a33a 100644 --- a/lib/apis.js +++ b/lib/apis.js @@ -237,6 +237,7 @@ const third = [ 'requireNativePlugin', 'upx2px', 'restoreGlobal', + 'requireGlobal', 'getSubNVueById', 'getCurrentSubNVue', 'setPageMeta', @@ -282,4 +283,4 @@ const apis = [ ...plugin ] -module.exports = apis +module.exports = apis diff --git a/packages/uni-cli-shared/lib/uni-polyfill.js b/packages/uni-cli-shared/lib/uni-polyfill.js index 21fc12d34..bf106b433 100644 --- a/packages/uni-cli-shared/lib/uni-polyfill.js +++ b/packages/uni-cli-shared/lib/uni-polyfill.js @@ -12,6 +12,18 @@ if (typeof Promise !== 'undefined' && !Promise.prototype.finally) { }) } } -if (uni.base64ToArrayBuffer) { - ArrayBuffer = uni.base64ToArrayBuffer('').constructor +if (typeof uni !== 'undefined' && uni && uni.requireGlobal) { + const global = uni.requireGlobal() + ArrayBuffer = global.ArrayBuffer + Int8Array = global.Int8Array + Uint8Array = global.Uint8Array + Uint8ClampedArray = global.Uint8ClampedArray + Int16Array = global.Int16Array + Uint16Array = global.Uint16Array + Int32Array = global.Int32Array + Uint32Array = global.Uint32Array + Float32Array = global.Float32Array + Float64Array = global.Float64Array + BigInt64Array = global.BigInt64Array + BigUint64Array = global.BigUint64Array } diff --git a/src/core/helpers/promise.js b/src/core/helpers/promise.js index 202da0e9e..5c1402e66 100644 --- a/src/core/helpers/promise.js +++ b/src/core/helpers/promise.js @@ -8,7 +8,7 @@ import { } from './interceptor' const SYNC_API_RE = - /^\$|Window$|WindowStyle$|sendHostEvent|sendNativeEvent|restoreGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64|getLocale|setLocale|invokePushCallback/ + /^\$|Window$|WindowStyle$|sendHostEvent|sendNativeEvent|restoreGlobal|requireGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64|getLocale|setLocale|invokePushCallback/ const CONTEXT_API_RE = /^create|Manager$/ diff --git a/src/platforms/app-plus/service/api/index.js b/src/platforms/app-plus/service/api/index.js index d1f5f45f5..8c2bd331b 100644 --- a/src/platforms/app-plus/service/api/index.js +++ b/src/platforms/app-plus/service/api/index.js @@ -50,6 +50,7 @@ export * from './plugin/push' export * from './plugin/require-native-plugin' export * from './plugin/share' export * from './plugin/restore-global' +export * from './plugin/require-global' export * from './plugin/sub-nvue' export * from './plugin/on-native-event-receive' export * from './plugin/send-native-event' @@ -83,4 +84,4 @@ export * from './ad/ad' export * from './ad/rewarded-video-ad' export * from './ad/full-screen-video-ad' export * from './ad/interstitial-ad' -export * from './ad/interactive-ad' +export * from './ad/interactive-ad' diff --git a/src/platforms/app-plus/service/api/plugin/require-global.js b/src/platforms/app-plus/service/api/plugin/require-global.js new file mode 100644 index 000000000..8f26aa557 --- /dev/null +++ b/src/platforms/app-plus/service/api/plugin/require-global.js @@ -0,0 +1,22 @@ +export function requireGlobal () { + const list = [ + 'ArrayBuffer', + 'Int8Array', + 'Uint8Array', + 'Uint8ClampedArray', + 'Int16Array', + 'Uint16Array', + 'Int32Array', + 'Uint32Array', + 'Float32Array', + 'Float64Array', + 'BigInt64Array', + 'BigUint64Array', + ] + const object = {} + for (let i = 0; i < list.length; i++) { + const key = list[i] + object[key] = global[key] + } + return object +} -- GitLab