Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
菜鸟程序猿_c
uni-app
提交
6f15a5a1
U
uni-app
项目概览
菜鸟程序猿_c
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
6f15a5a1
编写于
2月 22, 2022
作者:
fxy060608
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor: onCreateVueApp
上级
f55c7d58
变更
21
展开全部
隐藏空白更改
内联
并排
Showing
21 changed file
with
738 addition
and
716 deletion
+738
-716
packages/uni-api/src/index.ts
packages/uni-api/src/index.ts
+1
-1
packages/uni-app-plus/dist/uni-app-service.es.js
packages/uni-app-plus/dist/uni-app-service.es.js
+243
-247
packages/uni-h5-vite/lib/api.json
packages/uni-h5-vite/lib/api.json
+1
-1
packages/uni-h5/dist/uni-h5.cjs.js
packages/uni-h5/dist/uni-h5.cjs.js
+141
-145
packages/uni-h5/dist/uni-h5.es.js
packages/uni-h5/dist/uni-h5.es.js
+145
-156
packages/uni-mp-alipay/dist/uni.api.esm.js
packages/uni-mp-alipay/dist/uni.api.esm.js
+18
-18
packages/uni-mp-baidu/dist/uni.api.esm.js
packages/uni-mp-baidu/dist/uni.api.esm.js
+18
-18
packages/uni-mp-core/src/api/index.ts
packages/uni-mp-core/src/api/index.ts
+1
-1
packages/uni-mp-kuaishou/dist/uni.api.esm.js
packages/uni-mp-kuaishou/dist/uni.api.esm.js
+18
-18
packages/uni-mp-lark/dist/uni.api.esm.js
packages/uni-mp-lark/dist/uni.api.esm.js
+18
-18
packages/uni-mp-qq/dist/uni.api.esm.js
packages/uni-mp-qq/dist/uni.api.esm.js
+18
-18
packages/uni-mp-toutiao/dist/uni.api.esm.js
packages/uni-mp-toutiao/dist/uni.api.esm.js
+18
-18
packages/uni-mp-weixin/dist/uni.api.esm.js
packages/uni-mp-weixin/dist/uni.api.esm.js
+18
-18
packages/uni-quickapp-webview/dist/uni.api.esm.js
packages/uni-quickapp-webview/dist/uni.api.esm.js
+18
-18
packages/uni-shared/dist/uni-shared.cjs.js
packages/uni-shared/dist/uni-shared.cjs.js
+20
-0
packages/uni-shared/dist/uni-shared.d.ts
packages/uni-shared/dist/uni-shared.d.ts
+11
-0
packages/uni-shared/dist/uni-shared.es.js
packages/uni-shared/dist/uni-shared.es.js
+19
-1
packages/uni-shared/src/index.ts
packages/uni-shared/src/index.ts
+1
-0
packages/uni-shared/src/onCreateVueApp.ts
packages/uni-shared/src/onCreateVueApp.ts
+0
-0
packages/uni-stat/dist/uni-stat.es.js
packages/uni-stat/dist/uni-stat.es.js
+10
-17
packages/uni-vue/src/index.ts
packages/uni-vue/src/index.ts
+1
-3
未找到文件。
packages/uni-api/src/index.ts
浏览文件 @
6f15a5a1
...
...
@@ -103,7 +103,7 @@ export * from './protocols/ad/fullScreenVideoAd'
export
*
from
'
./protocols/ad/interstitialAd
'
export
*
from
'
./protocols/ad/interactiveAd
'
export
{
onCreateVueApp
}
from
'
@dcloudio/uni-
vue
'
export
{
onCreateVueApp
}
from
'
@dcloudio/uni-
shared
'
// helpers
export
{
...
...
packages/uni-app-plus/dist/uni-app-service.es.js
浏览文件 @
6f15a5a1
...
...
@@ -696,6 +696,24 @@ var serviceContext = (function (vue) {
ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED,
];
let vueApp$1;
const createVueAppHooks = [];
/**
* 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑
* @param hook
*/
function onCreateVueApp(hook) {
// TODO 每个 nvue 页面都会触发
if (vueApp$1) {
return hook(vueApp$1);
}
createVueAppHooks.push(hook);
}
function invokeCreateVueAppHook(app) {
vueApp$1 = app;
createVueAppHooks.forEach((hook) => hook(app));
}
const E = function () {
// Keep this empty so it's easier to inherit from
// (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)
...
...
@@ -11634,10 +11652,6 @@ var serviceContext = (function (vue) {
});
});
({
[ON_SHOW]: [],
[ON_HIDE]: [],
});
const API_GET_ENTER_OPTIONS_SYNC = 'getEnterOptionsSync';
const getEnterOptionsSync = defineSyncApi(API_GET_ENTER_OPTIONS_SYNC, () => {
return getEnterOptions();
...
...
@@ -13165,249 +13179,6 @@ var serviceContext = (function (vue) {
},
};
function injectLifecycleHook(name, hook, publicThis, instance) {
if (isFunction(hook)) {
vue.injectHook(name, hook.bind(publicThis), instance);
}
}
function initHooks(options, instance, publicThis) {
const mpType = options.mpType || publicThis.$mpType;
// 为了组件也可以监听部分生命周期,故不再判断mpType,统一添加on开头的生命周期
Object.keys(options).forEach((name) => {
if (name.indexOf('on') === 0) {
const hooks = options[name];
if (isArray$1(hooks)) {
hooks.forEach((hook) => injectLifecycleHook(name, hook, publicThis, instance));
}
else {
injectLifecycleHook(name, hooks, publicThis, instance);
}
}
});
if (mpType === 'page') {
instance.__isVisible = true;
try {
invokeHook(publicThis, ON_LOAD, instance.attrs.__pageQuery);
delete instance.attrs.__pageQuery;
}
catch (e) {
console.error(e.message + LINEFEED + e.stack);
}
vue.nextTick(() => {
// 延迟onShow,保证组件的onShow也可以监听到
invokeHook(publicThis, ON_SHOW);
});
}
}
function initRenderjs(options, instance) {
initModules(instance, options.$renderjs, options['$' + RENDERJS_MODULES]);
}
function initModules(instance, modules, moduleIds = {}) {
if (!isArray$1(modules)) {
return;
}
const ownerId = instance.uid;
// 在vue的定制内核中,通过$wxsModules来判断事件函数源码中是否包含该模块调用
// !$wxsModules.find(module => invokerSourceCode.indexOf('.' + module + '.') > -1)
const $wxsModules = (instance.$wxsModules ||
(instance.$wxsModules = []));
const ctx = instance.ctx;
modules.forEach((module) => {
if (moduleIds[module]) {
ctx[module] = proxyModule(ownerId, moduleIds[module], module);
$wxsModules.push(module);
}
else {
if ((process.env.NODE_ENV !== 'production')) {
console.error(formatLog('initModules', modules, moduleIds));
}
}
});
}
function proxyModule(ownerId, moduleId, module) {
const target = {};
return new Proxy(target, {
get(_, p) {
return (target[p] ||
(target[p] = createModuleFunction(ownerId, moduleId, module, p)));
},
});
}
function createModuleFunction(ownerId, moduleId, module, name) {
const target = () => { };
const toJSON = () => WXS_PROTOCOL + JSON.stringify([ownerId, moduleId, module + '.' + name]);
return new Proxy(target, {
get(_, p) {
if (p === 'toJSON') {
return toJSON;
}
return (target[p] ||
(target[p] = createModuleFunction(ownerId, moduleId, module + '.' + name, p)));
},
apply(_target, _thisArg, args) {
return (WXS_PROTOCOL +
JSON.stringify([ownerId, moduleId, module + '.' + name, [...args]]));
},
});
}
function initWxs(options, instance) {
initModules(instance, options.$wxs, options['$' + WXS_MODULES]);
}
function applyOptions(options, instance, publicThis) {
{
initWxs(options, instance);
initRenderjs(options, instance);
}
initHooks(options, instance, publicThis);
}
function set(target, key, val) {
return (target[key] = val);
}
function errorHandler(err, instance, info) {
if (!instance) {
throw err;
}
const app = getApp();
if (!app || !app.$vm) {
throw err;
}
{
invokeHook(app.$vm, ON_ERROR, err);
}
}
function mergeAsArray(to, from) {
return to ? [...new Set([].concat(to, from))] : from;
}
function initOptionMergeStrategies(optionMergeStrategies) {
UniLifecycleHooks.forEach((name) => {
optionMergeStrategies[name] = mergeAsArray;
});
}
let realAtob;
const b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
const b64re = /^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;
if (typeof atob !== 'function') {
realAtob = function (str) {
str = String(str).replace(/[\t\n\f\r ]+/g, '');
if (!b64re.test(str)) {
throw new Error("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");
}
// Adding the padding if missing, for semplicity
str += '=='.slice(2 - (str.length & 3));
var bitmap;
var result = '';
var r1;
var r2;
var i = 0;
for (; i < str.length;) {
bitmap =
(b64.indexOf(str.charAt(i++)) << 18) |
(b64.indexOf(str.charAt(i++)) << 12) |
((r1 = b64.indexOf(str.charAt(i++))) << 6) |
(r2 = b64.indexOf(str.charAt(i++)));
result +=
r1 === 64
? String.fromCharCode((bitmap >> 16) & 255)
: r2 === 64
? String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255)
: String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255, bitmap & 255);
}
return result;
};
}
else {
// 注意atob只能在全局对象上调用,例如:`const Base64 = {atob};Base64.atob('xxxx')`是错误的用法
realAtob = atob;
}
function b64DecodeUnicode(str) {
return decodeURIComponent(realAtob(str)
.split('')
.map(function (c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
})
.join(''));
}
function getCurrentUserInfo() {
const token = uni.getStorageSync('uni_id_token') || '';
const tokenArr = token.split('.');
if (!token || tokenArr.length !== 3) {
return {
uid: null,
role: [],
permission: [],
tokenExpired: 0,
};
}
let userInfo;
try {
userInfo = JSON.parse(b64DecodeUnicode(tokenArr[1]));
}
catch (error) {
throw new Error('获取当前用户信息出错,详细错误信息为:' + error.message);
}
userInfo.tokenExpired = userInfo.exp * 1000;
delete userInfo.exp;
delete userInfo.iat;
return userInfo;
}
function uniIdMixin(globalProperties) {
globalProperties.uniIDHasRole = function (roleId) {
const { role } = getCurrentUserInfo();
return role.indexOf(roleId) > -1;
};
globalProperties.uniIDHasPermission = function (permissionId) {
const { permission } = getCurrentUserInfo();
return this.uniIDHasRole('admin') || permission.indexOf(permissionId) > -1;
};
globalProperties.uniIDTokenValid = function () {
const { tokenExpired } = getCurrentUserInfo();
return tokenExpired > Date.now();
};
}
let vueApp$1;
const createVueAppHooks = [];
/**
* 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑
* @param hook
*/
function onCreateVueApp(hook) {
// TODO 每个 nvue 页面都会触发
if (vueApp$1) {
return hook(vueApp$1);
}
createVueAppHooks.push(hook);
}
function invokeCreateVueAppHook(app) {
vueApp$1 = app;
createVueAppHooks.forEach((hook) => hook(app));
}
function initApp(app) {
const appConfig = app._context.config;
if (isFunction(app._component.onError)) {
appConfig.errorHandler = errorHandler;
}
initOptionMergeStrategies(appConfig.optionMergeStrategies);
const globalProperties = appConfig.globalProperties;
{
uniIdMixin(globalProperties);
}
{
globalProperties.$set = set;
globalProperties.$applyOptions = applyOptions;
}
{
invokeCreateVueAppHook(app);
}
}
function warpPlusSuccessCallback(resolve, after) {
return function successCallback(data) {
delete data.code;
...
...
@@ -17356,6 +17127,231 @@ var serviceContext = (function (vue) {
}, errorCallback);
}, RequestPaymentProtocol);
function injectLifecycleHook(name, hook, publicThis, instance) {
if (isFunction(hook)) {
vue.injectHook(name, hook.bind(publicThis), instance);
}
}
function initHooks(options, instance, publicThis) {
const mpType = options.mpType || publicThis.$mpType;
// 为了组件也可以监听部分生命周期,故不再判断mpType,统一添加on开头的生命周期
Object.keys(options).forEach((name) => {
if (name.indexOf('on') === 0) {
const hooks = options[name];
if (isArray$1(hooks)) {
hooks.forEach((hook) => injectLifecycleHook(name, hook, publicThis, instance));
}
else {
injectLifecycleHook(name, hooks, publicThis, instance);
}
}
});
if (mpType === 'page') {
instance.__isVisible = true;
try {
invokeHook(publicThis, ON_LOAD, instance.attrs.__pageQuery);
delete instance.attrs.__pageQuery;
}
catch (e) {
console.error(e.message + LINEFEED + e.stack);
}
vue.nextTick(() => {
// 延迟onShow,保证组件的onShow也可以监听到
invokeHook(publicThis, ON_SHOW);
});
}
}
function initRenderjs(options, instance) {
initModules(instance, options.$renderjs, options['$' + RENDERJS_MODULES]);
}
function initModules(instance, modules, moduleIds = {}) {
if (!isArray$1(modules)) {
return;
}
const ownerId = instance.uid;
// 在vue的定制内核中,通过$wxsModules来判断事件函数源码中是否包含该模块调用
// !$wxsModules.find(module => invokerSourceCode.indexOf('.' + module + '.') > -1)
const $wxsModules = (instance.$wxsModules ||
(instance.$wxsModules = []));
const ctx = instance.ctx;
modules.forEach((module) => {
if (moduleIds[module]) {
ctx[module] = proxyModule(ownerId, moduleIds[module], module);
$wxsModules.push(module);
}
else {
if ((process.env.NODE_ENV !== 'production')) {
console.error(formatLog('initModules', modules, moduleIds));
}
}
});
}
function proxyModule(ownerId, moduleId, module) {
const target = {};
return new Proxy(target, {
get(_, p) {
return (target[p] ||
(target[p] = createModuleFunction(ownerId, moduleId, module, p)));
},
});
}
function createModuleFunction(ownerId, moduleId, module, name) {
const target = () => { };
const toJSON = () => WXS_PROTOCOL + JSON.stringify([ownerId, moduleId, module + '.' + name]);
return new Proxy(target, {
get(_, p) {
if (p === 'toJSON') {
return toJSON;
}
return (target[p] ||
(target[p] = createModuleFunction(ownerId, moduleId, module + '.' + name, p)));
},
apply(_target, _thisArg, args) {
return (WXS_PROTOCOL +
JSON.stringify([ownerId, moduleId, module + '.' + name, [...args]]));
},
});
}
function initWxs(options, instance) {
initModules(instance, options.$wxs, options['$' + WXS_MODULES]);
}
function applyOptions(options, instance, publicThis) {
{
initWxs(options, instance);
initRenderjs(options, instance);
}
initHooks(options, instance, publicThis);
}
function set(target, key, val) {
return (target[key] = val);
}
function errorHandler(err, instance, info) {
if (!instance) {
throw err;
}
const app = getApp();
if (!app || !app.$vm) {
throw err;
}
{
invokeHook(app.$vm, ON_ERROR, err);
}
}
function mergeAsArray(to, from) {
return to ? [...new Set([].concat(to, from))] : from;
}
function initOptionMergeStrategies(optionMergeStrategies) {
UniLifecycleHooks.forEach((name) => {
optionMergeStrategies[name] = mergeAsArray;
});
}
let realAtob;
const b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
const b64re = /^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;
if (typeof atob !== 'function') {
realAtob = function (str) {
str = String(str).replace(/[\t\n\f\r ]+/g, '');
if (!b64re.test(str)) {
throw new Error("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");
}
// Adding the padding if missing, for semplicity
str += '=='.slice(2 - (str.length & 3));
var bitmap;
var result = '';
var r1;
var r2;
var i = 0;
for (; i < str.length;) {
bitmap =
(b64.indexOf(str.charAt(i++)) << 18) |
(b64.indexOf(str.charAt(i++)) << 12) |
((r1 = b64.indexOf(str.charAt(i++))) << 6) |
(r2 = b64.indexOf(str.charAt(i++)));
result +=
r1 === 64
? String.fromCharCode((bitmap >> 16) & 255)
: r2 === 64
? String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255)
: String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255, bitmap & 255);
}
return result;
};
}
else {
// 注意atob只能在全局对象上调用,例如:`const Base64 = {atob};Base64.atob('xxxx')`是错误的用法
realAtob = atob;
}
function b64DecodeUnicode(str) {
return decodeURIComponent(realAtob(str)
.split('')
.map(function (c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
})
.join(''));
}
function getCurrentUserInfo() {
const token = uni.getStorageSync('uni_id_token') || '';
const tokenArr = token.split('.');
if (!token || tokenArr.length !== 3) {
return {
uid: null,
role: [],
permission: [],
tokenExpired: 0,
};
}
let userInfo;
try {
userInfo = JSON.parse(b64DecodeUnicode(tokenArr[1]));
}
catch (error) {
throw new Error('获取当前用户信息出错,详细错误信息为:' + error.message);
}
userInfo.tokenExpired = userInfo.exp * 1000;
delete userInfo.exp;
delete userInfo.iat;
return userInfo;
}
function uniIdMixin(globalProperties) {
globalProperties.uniIDHasRole = function (roleId) {
const { role } = getCurrentUserInfo();
return role.indexOf(roleId) > -1;
};
globalProperties.uniIDHasPermission = function (permissionId) {
const { permission } = getCurrentUserInfo();
return this.uniIDHasRole('admin') || permission.indexOf(permissionId) > -1;
};
globalProperties.uniIDTokenValid = function () {
const { tokenExpired } = getCurrentUserInfo();
return tokenExpired > Date.now();
};
}
function initApp(app) {
const appConfig = app._context.config;
if (isFunction(app._component.onError)) {
appConfig.errorHandler = errorHandler;
}
initOptionMergeStrategies(appConfig.optionMergeStrategies);
const globalProperties = appConfig.globalProperties;
{
uniIdMixin(globalProperties);
}
{
globalProperties.$set = set;
globalProperties.$applyOptions = applyOptions;
}
{
invokeCreateVueAppHook(app);
}
}
let isInitEntryPage = false;
function initEntry() {
if (isInitEntryPage) {
...
...
packages/uni-h5-vite/lib/api.json
浏览文件 @
6f15a5a1
[
"onCreateVueApp"
,
"$emit"
,
"$off"
,
"$on"
,
...
...
@@ -80,7 +81,6 @@
"offWindowResize"
,
"onAccelerometerChange"
,
"onCompassChange"
,
"onCreateVueApp"
,
"onGyroscopeChange"
,
"onLocaleChange"
,
"onMemoryWarning"
,
...
...
packages/uni-h5/dist/uni-h5.cjs.js
浏览文件 @
6f15a5a1
...
...
@@ -1455,151 +1455,6 @@ const SetNavigationBarTitleProtocol = {
};
const
API_SHOW_NAVIGATION_BAR_LOADING
=
"
showNavigationBarLoading
"
;
const
API_HIDE_NAVIGATION_BAR_LOADING
=
"
hideNavigationBarLoading
"
;
function
injectLifecycleHook
(
name
,
hook
,
publicThis
,
instance
)
{
if
(
shared
.
isFunction
(
hook
))
{
vue
.
injectHook
(
name
,
hook
.
bind
(
publicThis
),
instance
);
}
}
function
initHooks
(
options
,
instance
,
publicThis
)
{
const
mpType
=
options
.
mpType
||
publicThis
.
$mpType
;
Object
.
keys
(
options
).
forEach
((
name
)
=>
{
if
(
name
.
indexOf
(
"
on
"
)
===
0
)
{
const
hooks
=
options
[
name
];
if
(
shared
.
isArray
(
hooks
))
{
hooks
.
forEach
((
hook
)
=>
injectLifecycleHook
(
name
,
hook
,
publicThis
,
instance
));
}
else
{
injectLifecycleHook
(
name
,
hooks
,
publicThis
,
instance
);
}
}
});
if
(
mpType
===
"
page
"
)
{
instance
.
__isVisible
=
true
;
try
{
invokeHook
(
publicThis
,
uniShared
.
ON_LOAD
,
instance
.
attrs
.
__pageQuery
);
delete
instance
.
attrs
.
__pageQuery
;
}
catch
(
e2
)
{
console
.
error
(
e2
.
message
+
uniShared
.
LINEFEED
+
e2
.
stack
);
}
vue
.
nextTick
(()
=>
{
invokeHook
(
publicThis
,
uniShared
.
ON_SHOW
);
});
}
}
function
applyOptions
(
options
,
instance
,
publicThis
)
{
initHooks
(
options
,
instance
,
publicThis
);
}
function
set
(
target
,
key
,
val
)
{
return
target
[
key
]
=
val
;
}
function
errorHandler
(
err
,
instance
,
info
)
{
if
(
!
instance
)
{
throw
err
;
}
const
app
=
getApp
();
if
(
!
app
||
!
app
.
$vm
)
{
throw
err
;
}
{
invokeHook
(
app
.
$vm
,
uniShared
.
ON_ERROR
,
err
);
}
}
function
mergeAsArray
(
to
,
from
)
{
return
to
?
[...
new
Set
([].
concat
(
to
,
from
))]
:
from
;
}
function
initOptionMergeStrategies
(
optionMergeStrategies
)
{
uniShared
.
UniLifecycleHooks
.
forEach
((
name
)
=>
{
optionMergeStrategies
[
name
]
=
mergeAsArray
;
});
}
let
realAtob
;
const
b64
=
"
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
"
;
const
b64re
=
/^
(?:[
A-Za-z
\d
+
/]{4})
*
?(?:[
A-Za-z
\d
+
/]{2}(?:
==
)?
|
[
A-Za-z
\d
+
/]{3}
=
?)?
$/
;
if
(
typeof
atob
!==
"
function
"
)
{
realAtob
=
function
(
str
)
{
str
=
String
(
str
).
replace
(
/
[\t\n\f\r
]
+/g
,
""
);
if
(
!
b64re
.
test
(
str
))
{
throw
new
Error
(
"
Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.
"
);
}
str
+=
"
==
"
.
slice
(
2
-
(
str
.
length
&
3
));
var
bitmap
;
var
result
=
""
;
var
r1
;
var
r2
;
var
i
=
0
;
for
(;
i
<
str
.
length
;
)
{
bitmap
=
b64
.
indexOf
(
str
.
charAt
(
i
++
))
<<
18
|
b64
.
indexOf
(
str
.
charAt
(
i
++
))
<<
12
|
(
r1
=
b64
.
indexOf
(
str
.
charAt
(
i
++
)))
<<
6
|
(
r2
=
b64
.
indexOf
(
str
.
charAt
(
i
++
)));
result
+=
r1
===
64
?
String
.
fromCharCode
(
bitmap
>>
16
&
255
)
:
r2
===
64
?
String
.
fromCharCode
(
bitmap
>>
16
&
255
,
bitmap
>>
8
&
255
)
:
String
.
fromCharCode
(
bitmap
>>
16
&
255
,
bitmap
>>
8
&
255
,
bitmap
&
255
);
}
return
result
;
};
}
else
{
realAtob
=
atob
;
}
function
b64DecodeUnicode
(
str
)
{
return
decodeURIComponent
(
realAtob
(
str
).
split
(
""
).
map
(
function
(
c
)
{
return
"
%
"
+
(
"
00
"
+
c
.
charCodeAt
(
0
).
toString
(
16
)).
slice
(
-
2
);
}).
join
(
""
));
}
function
getCurrentUserInfo
()
{
const
token
=
uni
.
getStorageSync
(
"
uni_id_token
"
)
||
""
;
const
tokenArr
=
token
.
split
(
"
.
"
);
if
(
!
token
||
tokenArr
.
length
!==
3
)
{
return
{
uid
:
null
,
role
:
[],
permission
:
[],
tokenExpired
:
0
};
}
let
userInfo
;
try
{
userInfo
=
JSON
.
parse
(
b64DecodeUnicode
(
tokenArr
[
1
]));
}
catch
(
error
)
{
throw
new
Error
(
"
\
u83B7
\
u53D6
\
u5F53
\
u524D
\
u7528
\
u6237
\
u4FE1
\
u606F
\
u51FA
\
u9519
\
uFF0C
\
u8BE6
\
u7EC6
\
u9519
\
u8BEF
\
u4FE1
\
u606F
\
u4E3A
\
uFF1A
"
+
error
.
message
);
}
userInfo
.
tokenExpired
=
userInfo
.
exp
*
1
e3
;
delete
userInfo
.
exp
;
delete
userInfo
.
iat
;
return
userInfo
;
}
function
uniIdMixin
(
globalProperties
)
{
globalProperties
.
uniIDHasRole
=
function
(
roleId
)
{
const
{
role
}
=
getCurrentUserInfo
();
return
role
.
indexOf
(
roleId
)
>
-
1
;
};
globalProperties
.
uniIDHasPermission
=
function
(
permissionId
)
{
const
{
permission
}
=
getCurrentUserInfo
();
return
this
.
uniIDHasRole
(
"
admin
"
)
||
permission
.
indexOf
(
permissionId
)
>
-
1
;
};
globalProperties
.
uniIDTokenValid
=
function
()
{
const
{
tokenExpired
}
=
getCurrentUserInfo
();
return
tokenExpired
>
Date
.
now
();
};
}
const
createVueAppHooks
=
[];
function
invokeCreateVueAppHook
(
app
)
{
createVueAppHooks
.
forEach
((
hook
)
=>
hook
(
app
));
}
function
initApp$1
(
app
)
{
const
appConfig
=
app
.
_context
.
config
;
if
(
shared
.
isFunction
(
app
.
_component
.
onError
))
{
appConfig
.
errorHandler
=
errorHandler
;
}
initOptionMergeStrategies
(
appConfig
.
optionMergeStrategies
);
const
globalProperties
=
appConfig
.
globalProperties
;
{
if
(
__UNI_FEATURE_UNI_CLOUD__
)
{
uniIdMixin
(
globalProperties
);
}
}
{
globalProperties
.
$set
=
set
;
globalProperties
.
$applyOptions
=
applyOptions
;
}
{
invokeCreateVueAppHook
(
app
);
}
}
function
saveImage
(
base64
,
dirname
,
callback
)
{
callback
(
null
,
base64
);
}
...
...
@@ -6687,6 +6542,147 @@ function useContextInfo(_id) {
const
id
=
_id
||
vm
.
id
||
`context
${
index$g
++
}
`
;
return
`
${
type
}
.
${
id
}
`
;
}
function
injectLifecycleHook
(
name
,
hook
,
publicThis
,
instance
)
{
if
(
shared
.
isFunction
(
hook
))
{
vue
.
injectHook
(
name
,
hook
.
bind
(
publicThis
),
instance
);
}
}
function
initHooks
(
options
,
instance
,
publicThis
)
{
const
mpType
=
options
.
mpType
||
publicThis
.
$mpType
;
Object
.
keys
(
options
).
forEach
((
name
)
=>
{
if
(
name
.
indexOf
(
"
on
"
)
===
0
)
{
const
hooks
=
options
[
name
];
if
(
shared
.
isArray
(
hooks
))
{
hooks
.
forEach
((
hook
)
=>
injectLifecycleHook
(
name
,
hook
,
publicThis
,
instance
));
}
else
{
injectLifecycleHook
(
name
,
hooks
,
publicThis
,
instance
);
}
}
});
if
(
mpType
===
"
page
"
)
{
instance
.
__isVisible
=
true
;
try
{
invokeHook
(
publicThis
,
uniShared
.
ON_LOAD
,
instance
.
attrs
.
__pageQuery
);
delete
instance
.
attrs
.
__pageQuery
;
}
catch
(
e2
)
{
console
.
error
(
e2
.
message
+
uniShared
.
LINEFEED
+
e2
.
stack
);
}
vue
.
nextTick
(()
=>
{
invokeHook
(
publicThis
,
uniShared
.
ON_SHOW
);
});
}
}
function
applyOptions
(
options
,
instance
,
publicThis
)
{
initHooks
(
options
,
instance
,
publicThis
);
}
function
set
(
target
,
key
,
val
)
{
return
target
[
key
]
=
val
;
}
function
errorHandler
(
err
,
instance
,
info
)
{
if
(
!
instance
)
{
throw
err
;
}
const
app
=
getApp
();
if
(
!
app
||
!
app
.
$vm
)
{
throw
err
;
}
{
invokeHook
(
app
.
$vm
,
uniShared
.
ON_ERROR
,
err
);
}
}
function
mergeAsArray
(
to
,
from
)
{
return
to
?
[...
new
Set
([].
concat
(
to
,
from
))]
:
from
;
}
function
initOptionMergeStrategies
(
optionMergeStrategies
)
{
uniShared
.
UniLifecycleHooks
.
forEach
((
name
)
=>
{
optionMergeStrategies
[
name
]
=
mergeAsArray
;
});
}
let
realAtob
;
const
b64
=
"
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
"
;
const
b64re
=
/^
(?:[
A-Za-z
\d
+
/]{4})
*
?(?:[
A-Za-z
\d
+
/]{2}(?:
==
)?
|
[
A-Za-z
\d
+
/]{3}
=
?)?
$/
;
if
(
typeof
atob
!==
"
function
"
)
{
realAtob
=
function
(
str
)
{
str
=
String
(
str
).
replace
(
/
[\t\n\f\r
]
+/g
,
""
);
if
(
!
b64re
.
test
(
str
))
{
throw
new
Error
(
"
Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.
"
);
}
str
+=
"
==
"
.
slice
(
2
-
(
str
.
length
&
3
));
var
bitmap
;
var
result
=
""
;
var
r1
;
var
r2
;
var
i
=
0
;
for
(;
i
<
str
.
length
;
)
{
bitmap
=
b64
.
indexOf
(
str
.
charAt
(
i
++
))
<<
18
|
b64
.
indexOf
(
str
.
charAt
(
i
++
))
<<
12
|
(
r1
=
b64
.
indexOf
(
str
.
charAt
(
i
++
)))
<<
6
|
(
r2
=
b64
.
indexOf
(
str
.
charAt
(
i
++
)));
result
+=
r1
===
64
?
String
.
fromCharCode
(
bitmap
>>
16
&
255
)
:
r2
===
64
?
String
.
fromCharCode
(
bitmap
>>
16
&
255
,
bitmap
>>
8
&
255
)
:
String
.
fromCharCode
(
bitmap
>>
16
&
255
,
bitmap
>>
8
&
255
,
bitmap
&
255
);
}
return
result
;
};
}
else
{
realAtob
=
atob
;
}
function
b64DecodeUnicode
(
str
)
{
return
decodeURIComponent
(
realAtob
(
str
).
split
(
""
).
map
(
function
(
c
)
{
return
"
%
"
+
(
"
00
"
+
c
.
charCodeAt
(
0
).
toString
(
16
)).
slice
(
-
2
);
}).
join
(
""
));
}
function
getCurrentUserInfo
()
{
const
token
=
uni
.
getStorageSync
(
"
uni_id_token
"
)
||
""
;
const
tokenArr
=
token
.
split
(
"
.
"
);
if
(
!
token
||
tokenArr
.
length
!==
3
)
{
return
{
uid
:
null
,
role
:
[],
permission
:
[],
tokenExpired
:
0
};
}
let
userInfo
;
try
{
userInfo
=
JSON
.
parse
(
b64DecodeUnicode
(
tokenArr
[
1
]));
}
catch
(
error
)
{
throw
new
Error
(
"
\
u83B7
\
u53D6
\
u5F53
\
u524D
\
u7528
\
u6237
\
u4FE1
\
u606F
\
u51FA
\
u9519
\
uFF0C
\
u8BE6
\
u7EC6
\
u9519
\
u8BEF
\
u4FE1
\
u606F
\
u4E3A
\
uFF1A
"
+
error
.
message
);
}
userInfo
.
tokenExpired
=
userInfo
.
exp
*
1
e3
;
delete
userInfo
.
exp
;
delete
userInfo
.
iat
;
return
userInfo
;
}
function
uniIdMixin
(
globalProperties
)
{
globalProperties
.
uniIDHasRole
=
function
(
roleId
)
{
const
{
role
}
=
getCurrentUserInfo
();
return
role
.
indexOf
(
roleId
)
>
-
1
;
};
globalProperties
.
uniIDHasPermission
=
function
(
permissionId
)
{
const
{
permission
}
=
getCurrentUserInfo
();
return
this
.
uniIDHasRole
(
"
admin
"
)
||
permission
.
indexOf
(
permissionId
)
>
-
1
;
};
globalProperties
.
uniIDTokenValid
=
function
()
{
const
{
tokenExpired
}
=
getCurrentUserInfo
();
return
tokenExpired
>
Date
.
now
();
};
}
function
initApp$1
(
app
)
{
const
appConfig
=
app
.
_context
.
config
;
if
(
shared
.
isFunction
(
app
.
_component
.
onError
))
{
appConfig
.
errorHandler
=
errorHandler
;
}
initOptionMergeStrategies
(
appConfig
.
optionMergeStrategies
);
const
globalProperties
=
appConfig
.
globalProperties
;
{
if
(
__UNI_FEATURE_UNI_CLOUD__
)
{
uniIdMixin
(
globalProperties
);
}
}
{
globalProperties
.
$set
=
set
;
globalProperties
.
$applyOptions
=
applyOptions
;
}
{
uniShared
.
invokeCreateVueAppHook
(
app
);
}
}
const
pageMetaKey
=
PolySymbol
(
process
.
env
.
NODE_ENV
!==
"
production
"
?
"
UniPageMeta
"
:
"
upm
"
);
function
usePageMeta
()
{
return
vue
.
inject
(
pageMetaKey
);
...
...
packages/uni-h5/dist/uni-h5.es.js
浏览文件 @
6f15a5a1
此差异已折叠。
点击以展开。
packages/uni-mp-alipay/dist/uni.api.esm.js
浏览文件 @
6f15a5a1
import
{
isArray
,
hasOwn
,
isString
,
isPlainObject
,
isObject
,
capitalize
,
toRawType
,
makeMap
,
isFunction
,
isPromise
,
extend
}
from
'
@vue/shared
'
;
let
vueApp
;
const
createVueAppHooks
=
[];
/**
* 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑
* @param hook
*/
function
onCreateVueApp
(
hook
)
{
// TODO 每个 nvue 页面都会触发
if
(
vueApp
)
{
return
hook
(
vueApp
);
}
createVueAppHooks
.
push
(
hook
);
}
function
invokeCreateVueAppHook
(
app
)
{
vueApp
=
app
;
createVueAppHooks
.
forEach
((
hook
)
=>
hook
(
app
));
}
const
eventChannels
=
{};
const
eventChannelStack
=
[];
let
id
=
0
;
...
...
@@ -661,24 +679,6 @@ const offPushMessage = (fn) => {
}
};
let
vueApp
;
const
createVueAppHooks
=
[];
/**
* 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑
* @param hook
*/
function
onCreateVueApp
(
hook
)
{
// TODO 每个 nvue 页面都会触发
if
(
vueApp
)
{
return
hook
(
vueApp
);
}
createVueAppHooks
.
push
(
hook
);
}
function
invokeCreateVueAppHook
(
app
)
{
vueApp
=
app
;
createVueAppHooks
.
forEach
((
hook
)
=>
hook
(
app
));
}
const
SYNC_API_RE
=
/^
\$
|getLocale|setLocale|sendNativeEvent|restoreGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64/
;
const
CONTEXT_API_RE
=
/^create|Manager$/
;
// Context例外情况
...
...
packages/uni-mp-baidu/dist/uni.api.esm.js
浏览文件 @
6f15a5a1
import
{
isArray
,
hasOwn
,
isString
,
isPlainObject
,
isObject
,
capitalize
,
toRawType
,
makeMap
,
isFunction
,
isPromise
,
extend
}
from
'
@vue/shared
'
;
let
vueApp
;
const
createVueAppHooks
=
[];
/**
* 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑
* @param hook
*/
function
onCreateVueApp
(
hook
)
{
// TODO 每个 nvue 页面都会触发
if
(
vueApp
)
{
return
hook
(
vueApp
);
}
createVueAppHooks
.
push
(
hook
);
}
function
invokeCreateVueAppHook
(
app
)
{
vueApp
=
app
;
createVueAppHooks
.
forEach
((
hook
)
=>
hook
(
app
));
}
const
eventChannels
=
{};
const
eventChannelStack
=
[];
let
id
=
0
;
...
...
@@ -661,24 +679,6 @@ const offPushMessage = (fn) => {
}
};
let
vueApp
;
const
createVueAppHooks
=
[];
/**
* 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑
* @param hook
*/
function
onCreateVueApp
(
hook
)
{
// TODO 每个 nvue 页面都会触发
if
(
vueApp
)
{
return
hook
(
vueApp
);
}
createVueAppHooks
.
push
(
hook
);
}
function
invokeCreateVueAppHook
(
app
)
{
vueApp
=
app
;
createVueAppHooks
.
forEach
((
hook
)
=>
hook
(
app
));
}
const
SYNC_API_RE
=
/^
\$
|getLocale|setLocale|sendNativeEvent|restoreGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64/
;
const
CONTEXT_API_RE
=
/^create|Manager$/
;
// Context例外情况
...
...
packages/uni-mp-core/src/api/index.ts
浏览文件 @
6f15a5a1
...
...
@@ -18,7 +18,7 @@ import {
offPushMessage
,
invokePushCallback
,
}
from
'
@dcloudio/uni-api/src/service/plugin/push
'
import
{
invokeCreateVueAppHook
,
onCreateVueApp
}
from
'
@dcloudio/uni-
vue
'
import
{
invokeCreateVueAppHook
,
onCreateVueApp
}
from
'
@dcloudio/uni-
shared
'
import
{
promisify
}
from
'
./promise
'
import
{
initWrapper
}
from
'
./wrapper
'
...
...
packages/uni-mp-kuaishou/dist/uni.api.esm.js
浏览文件 @
6f15a5a1
import
{
isArray
,
hasOwn
,
isString
,
isPlainObject
,
isObject
,
capitalize
,
toRawType
,
makeMap
,
isFunction
,
isPromise
,
extend
}
from
'
@vue/shared
'
;
let
vueApp
;
const
createVueAppHooks
=
[];
/**
* 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑
* @param hook
*/
function
onCreateVueApp
(
hook
)
{
// TODO 每个 nvue 页面都会触发
if
(
vueApp
)
{
return
hook
(
vueApp
);
}
createVueAppHooks
.
push
(
hook
);
}
function
invokeCreateVueAppHook
(
app
)
{
vueApp
=
app
;
createVueAppHooks
.
forEach
((
hook
)
=>
hook
(
app
));
}
const
eventChannels
=
{};
const
eventChannelStack
=
[];
let
id
=
0
;
...
...
@@ -661,24 +679,6 @@ const offPushMessage = (fn) => {
}
};
let
vueApp
;
const
createVueAppHooks
=
[];
/**
* 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑
* @param hook
*/
function
onCreateVueApp
(
hook
)
{
// TODO 每个 nvue 页面都会触发
if
(
vueApp
)
{
return
hook
(
vueApp
);
}
createVueAppHooks
.
push
(
hook
);
}
function
invokeCreateVueAppHook
(
app
)
{
vueApp
=
app
;
createVueAppHooks
.
forEach
((
hook
)
=>
hook
(
app
));
}
const
SYNC_API_RE
=
/^
\$
|getLocale|setLocale|sendNativeEvent|restoreGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64/
;
const
CONTEXT_API_RE
=
/^create|Manager$/
;
// Context例外情况
...
...
packages/uni-mp-lark/dist/uni.api.esm.js
浏览文件 @
6f15a5a1
import
{
isArray
,
hasOwn
,
isString
,
isPlainObject
,
isObject
,
capitalize
,
toRawType
,
makeMap
,
isFunction
,
isPromise
,
extend
}
from
'
@vue/shared
'
;
let
vueApp
;
const
createVueAppHooks
=
[];
/**
* 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑
* @param hook
*/
function
onCreateVueApp
(
hook
)
{
// TODO 每个 nvue 页面都会触发
if
(
vueApp
)
{
return
hook
(
vueApp
);
}
createVueAppHooks
.
push
(
hook
);
}
function
invokeCreateVueAppHook
(
app
)
{
vueApp
=
app
;
createVueAppHooks
.
forEach
((
hook
)
=>
hook
(
app
));
}
const
eventChannels
=
{};
const
eventChannelStack
=
[];
let
id
=
0
;
...
...
@@ -661,24 +679,6 @@ const offPushMessage = (fn) => {
}
};
let
vueApp
;
const
createVueAppHooks
=
[];
/**
* 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑
* @param hook
*/
function
onCreateVueApp
(
hook
)
{
// TODO 每个 nvue 页面都会触发
if
(
vueApp
)
{
return
hook
(
vueApp
);
}
createVueAppHooks
.
push
(
hook
);
}
function
invokeCreateVueAppHook
(
app
)
{
vueApp
=
app
;
createVueAppHooks
.
forEach
((
hook
)
=>
hook
(
app
));
}
const
SYNC_API_RE
=
/^
\$
|getLocale|setLocale|sendNativeEvent|restoreGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64/
;
const
CONTEXT_API_RE
=
/^create|Manager$/
;
// Context例外情况
...
...
packages/uni-mp-qq/dist/uni.api.esm.js
浏览文件 @
6f15a5a1
import
{
isArray
,
hasOwn
,
isString
,
isPlainObject
,
isObject
,
capitalize
,
toRawType
,
makeMap
,
isFunction
,
isPromise
,
extend
}
from
'
@vue/shared
'
;
let
vueApp
;
const
createVueAppHooks
=
[];
/**
* 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑
* @param hook
*/
function
onCreateVueApp
(
hook
)
{
// TODO 每个 nvue 页面都会触发
if
(
vueApp
)
{
return
hook
(
vueApp
);
}
createVueAppHooks
.
push
(
hook
);
}
function
invokeCreateVueAppHook
(
app
)
{
vueApp
=
app
;
createVueAppHooks
.
forEach
((
hook
)
=>
hook
(
app
));
}
const
eventChannels
=
{};
const
eventChannelStack
=
[];
let
id
=
0
;
...
...
@@ -661,24 +679,6 @@ const offPushMessage = (fn) => {
}
};
let
vueApp
;
const
createVueAppHooks
=
[];
/**
* 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑
* @param hook
*/
function
onCreateVueApp
(
hook
)
{
// TODO 每个 nvue 页面都会触发
if
(
vueApp
)
{
return
hook
(
vueApp
);
}
createVueAppHooks
.
push
(
hook
);
}
function
invokeCreateVueAppHook
(
app
)
{
vueApp
=
app
;
createVueAppHooks
.
forEach
((
hook
)
=>
hook
(
app
));
}
const
SYNC_API_RE
=
/^
\$
|getLocale|setLocale|sendNativeEvent|restoreGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64/
;
const
CONTEXT_API_RE
=
/^create|Manager$/
;
// Context例外情况
...
...
packages/uni-mp-toutiao/dist/uni.api.esm.js
浏览文件 @
6f15a5a1
import
{
isArray
,
hasOwn
,
isString
,
isPlainObject
,
isObject
,
capitalize
,
toRawType
,
makeMap
,
isFunction
,
isPromise
,
extend
}
from
'
@vue/shared
'
;
let
vueApp
;
const
createVueAppHooks
=
[];
/**
* 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑
* @param hook
*/
function
onCreateVueApp
(
hook
)
{
// TODO 每个 nvue 页面都会触发
if
(
vueApp
)
{
return
hook
(
vueApp
);
}
createVueAppHooks
.
push
(
hook
);
}
function
invokeCreateVueAppHook
(
app
)
{
vueApp
=
app
;
createVueAppHooks
.
forEach
((
hook
)
=>
hook
(
app
));
}
const
eventChannels
=
{};
const
eventChannelStack
=
[];
let
id
=
0
;
...
...
@@ -661,24 +679,6 @@ const offPushMessage = (fn) => {
}
};
let
vueApp
;
const
createVueAppHooks
=
[];
/**
* 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑
* @param hook
*/
function
onCreateVueApp
(
hook
)
{
// TODO 每个 nvue 页面都会触发
if
(
vueApp
)
{
return
hook
(
vueApp
);
}
createVueAppHooks
.
push
(
hook
);
}
function
invokeCreateVueAppHook
(
app
)
{
vueApp
=
app
;
createVueAppHooks
.
forEach
((
hook
)
=>
hook
(
app
));
}
const
SYNC_API_RE
=
/^
\$
|getLocale|setLocale|sendNativeEvent|restoreGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64/
;
const
CONTEXT_API_RE
=
/^create|Manager$/
;
// Context例外情况
...
...
packages/uni-mp-weixin/dist/uni.api.esm.js
浏览文件 @
6f15a5a1
import
{
isArray
,
hasOwn
,
isString
,
isPlainObject
,
isObject
,
capitalize
,
toRawType
,
makeMap
,
isFunction
,
isPromise
,
extend
}
from
'
@vue/shared
'
;
let
vueApp
;
const
createVueAppHooks
=
[];
/**
* 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑
* @param hook
*/
function
onCreateVueApp
(
hook
)
{
// TODO 每个 nvue 页面都会触发
if
(
vueApp
)
{
return
hook
(
vueApp
);
}
createVueAppHooks
.
push
(
hook
);
}
function
invokeCreateVueAppHook
(
app
)
{
vueApp
=
app
;
createVueAppHooks
.
forEach
((
hook
)
=>
hook
(
app
));
}
function
getBaseSystemInfo
()
{
return
wx
.
getSystemInfoSync
()
}
...
...
@@ -625,24 +643,6 @@ const offPushMessage = (fn) => {
}
};
let
vueApp
;
const
createVueAppHooks
=
[];
/**
* 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑
* @param hook
*/
function
onCreateVueApp
(
hook
)
{
// TODO 每个 nvue 页面都会触发
if
(
vueApp
)
{
return
hook
(
vueApp
);
}
createVueAppHooks
.
push
(
hook
);
}
function
invokeCreateVueAppHook
(
app
)
{
vueApp
=
app
;
createVueAppHooks
.
forEach
((
hook
)
=>
hook
(
app
));
}
const
SYNC_API_RE
=
/^
\$
|getLocale|setLocale|sendNativeEvent|restoreGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64/
;
const
CONTEXT_API_RE
=
/^create|Manager$/
;
// Context例外情况
...
...
packages/uni-quickapp-webview/dist/uni.api.esm.js
浏览文件 @
6f15a5a1
import
{
isArray
,
hasOwn
,
isString
,
isPlainObject
,
isObject
,
capitalize
,
toRawType
,
makeMap
,
isFunction
,
isPromise
,
extend
}
from
'
@vue/shared
'
;
let
vueApp
;
const
createVueAppHooks
=
[];
/**
* 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑
* @param hook
*/
function
onCreateVueApp
(
hook
)
{
// TODO 每个 nvue 页面都会触发
if
(
vueApp
)
{
return
hook
(
vueApp
);
}
createVueAppHooks
.
push
(
hook
);
}
function
invokeCreateVueAppHook
(
app
)
{
vueApp
=
app
;
createVueAppHooks
.
forEach
((
hook
)
=>
hook
(
app
));
}
const
eventChannels
=
{};
const
eventChannelStack
=
[];
let
id
=
0
;
...
...
@@ -661,24 +679,6 @@ const offPushMessage = (fn) => {
}
};
let
vueApp
;
const
createVueAppHooks
=
[];
/**
* 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑
* @param hook
*/
function
onCreateVueApp
(
hook
)
{
// TODO 每个 nvue 页面都会触发
if
(
vueApp
)
{
return
hook
(
vueApp
);
}
createVueAppHooks
.
push
(
hook
);
}
function
invokeCreateVueAppHook
(
app
)
{
vueApp
=
app
;
createVueAppHooks
.
forEach
((
hook
)
=>
hook
(
app
));
}
const
SYNC_API_RE
=
/^
\$
|getLocale|setLocale|sendNativeEvent|restoreGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64/
;
const
CONTEXT_API_RE
=
/^create|Manager$/
;
// Context例外情况
...
...
packages/uni-shared/dist/uni-shared.cjs.js
浏览文件 @
6f15a5a1
...
...
@@ -1294,6 +1294,24 @@ const MINI_PROGRAM_PAGE_RUNTIME_HOOKS = /*#__PURE__*/ (() => {
};
})();
let
vueApp
;
const
createVueAppHooks
=
[];
/**
* 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑
* @param hook
*/
function
onCreateVueApp
(
hook
)
{
// TODO 每个 nvue 页面都会触发
if
(
vueApp
)
{
return
hook
(
vueApp
);
}
createVueAppHooks
.
push
(
hook
);
}
function
invokeCreateVueAppHook
(
app
)
{
vueApp
=
app
;
createVueAppHooks
.
forEach
((
hook
)
=>
hook
(
app
));
}
const
E
=
function
()
{
// Keep this empty so it's easier to inherit from
// (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)
...
...
@@ -1477,6 +1495,7 @@ exports.getLen = getLen;
exports
.
getValueByDataPath
=
getValueByDataPath
;
exports
.
initCustomDatasetOnce
=
initCustomDatasetOnce
;
exports
.
invokeArrayFns
=
invokeArrayFns
;
exports
.
invokeCreateVueAppHook
=
invokeCreateVueAppHook
;
exports
.
isAppNVueNativeTag
=
isAppNVueNativeTag
;
exports
.
isAppNativeTag
=
isAppNativeTag
;
exports
.
isBuiltInComponent
=
isBuiltInComponent
;
...
...
@@ -1489,6 +1508,7 @@ exports.isRootHook = isRootHook;
exports
.
normalizeDataset
=
normalizeDataset
;
exports
.
normalizeEventType
=
normalizeEventType
;
exports
.
normalizeTarget
=
normalizeTarget
;
exports
.
onCreateVueApp
=
onCreateVueApp
;
exports
.
once
=
once
;
exports
.
parseEventName
=
parseEventName
;
exports
.
parseQuery
=
parseQuery
;
...
...
packages/uni-shared/dist/uni-shared.d.ts
浏览文件 @
6f15a5a1
import
type
{
App
}
from
'
vue
'
;
import
type
{
ComponentInternalInstance
}
from
'
@vue/runtime-core
'
;
import
{
ComponentOptionsBase
}
from
'
@vue/runtime-core
'
;
import
type
{
ComponentPublicInstance
}
from
'
@vue/runtime-core
'
;
...
...
@@ -122,6 +123,8 @@ export declare function createRpx2Unit(unit: string, unitRatio: number, unitPrec
export
declare
function
createUniEvent
(
evt
:
Record
<
string
,
any
>
):
UniEvent
;
declare
type
CreateVueAppHook
=
(
app
:
App
)
=>
void
;
export
declare
function
customizeEvent
(
str
:
string
):
string
;
export
declare
const
DATA_RE
:
RegExp
;
...
...
@@ -242,6 +245,8 @@ export declare type InsertAction = [typeof ACTION_TYPE_INSERT, number, number, n
export
declare
const
invokeArrayFns
:
(
fns
:
Function
[],
arg
?:
any
)
=>
any
;
export
declare
function
invokeCreateVueAppHook
(
app
:
App
):
void
;
export
declare
function
isAppNativeTag
(
tag
:
string
):
boolean
;
export
declare
function
isAppNVueNativeTag
(
tag
:
string
):
boolean
;
...
...
@@ -476,6 +481,12 @@ export declare const ON_WXS_INVOKE_CALL_METHOD = "onWxsInvokeCallMethod";
export
declare
function
once
<
T
extends
(...
args
:
any
[])
=>
any
>
(
fn
:
T
,
ctx
?:
unknown
):
T
;
/**
* 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑
* @param hook
*/
export
declare
function
onCreateVueApp
(
hook
:
CreateVueAppHook
):
void
;
declare
interface
Options
{
success
?:
(
res
:
any
)
=>
void
;
fail
?:
(
res
:
any
)
=>
void
;
...
...
packages/uni-shared/dist/uni-shared.es.js
浏览文件 @
6f15a5a1
...
...
@@ -1290,6 +1290,24 @@ const MINI_PROGRAM_PAGE_RUNTIME_HOOKS = /*#__PURE__*/ (() => {
};
})();
let
vueApp
;
const
createVueAppHooks
=
[];
/**
* 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑
* @param hook
*/
function
onCreateVueApp
(
hook
)
{
// TODO 每个 nvue 页面都会触发
if
(
vueApp
)
{
return
hook
(
vueApp
);
}
createVueAppHooks
.
push
(
hook
);
}
function
invokeCreateVueAppHook
(
app
)
{
vueApp
=
app
;
createVueAppHooks
.
forEach
((
hook
)
=>
hook
(
app
));
}
const
E
=
function
()
{
// Keep this empty so it's easier to inherit from
// (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)
...
...
@@ -1347,4 +1365,4 @@ function getEnvLocale() {
return
(
lang
&&
lang
.
replace
(
/
[
.:
]
.*/
,
''
))
||
'
en
'
;
}
export
{
ACTION_TYPE_ADD_EVENT
,
ACTION_TYPE_ADD_WXS_EVENT
,
ACTION_TYPE_CREATE
,
ACTION_TYPE_EVENT
,
ACTION_TYPE_INSERT
,
ACTION_TYPE_PAGE_CREATE
,
ACTION_TYPE_PAGE_CREATED
,
ACTION_TYPE_PAGE_SCROLL
,
ACTION_TYPE_REMOVE
,
ACTION_TYPE_REMOVE_ATTRIBUTE
,
ACTION_TYPE_REMOVE_EVENT
,
ACTION_TYPE_SET_ATTRIBUTE
,
ACTION_TYPE_SET_TEXT
,
ATTR_CHANGE_PREFIX
,
ATTR_CLASS
,
ATTR_INNER_HTML
,
ATTR_STYLE
,
ATTR_TEXT_CONTENT
,
ATTR_V_OWNER_ID
,
ATTR_V_RENDERJS
,
ATTR_V_SHOW
,
BACKGROUND_COLOR
,
BUILT_IN_TAGS
,
BUILT_IN_TAG_NAMES
,
COMPONENT_NAME_PREFIX
,
COMPONENT_PREFIX
,
COMPONENT_SELECTOR_PREFIX
,
DATA_RE
,
E$1
as
Emitter
,
EventChannel
,
EventModifierFlags
,
I18N_JSON_DELIMITERS
,
JSON_PROTOCOL
,
LINEFEED
,
MINI_PROGRAM_PAGE_RUNTIME_HOOKS
,
NAVBAR_HEIGHT
,
NODE_TYPE_COMMENT
,
NODE_TYPE_ELEMENT
,
NODE_TYPE_PAGE
,
NODE_TYPE_TEXT
,
NVUE_BUILT_IN_TAGS
,
NVUE_U_BUILT_IN_TAGS
,
ON_ADD_TO_FAVORITES
,
ON_APP_ENTER_BACKGROUND
,
ON_APP_ENTER_FOREGROUND
,
ON_BACK_PRESS
,
ON_ERROR
,
ON_HIDE
,
ON_KEYBOARD_HEIGHT_CHANGE
,
ON_LAUNCH
,
ON_LOAD
,
ON_NAVIGATION_BAR_BUTTON_TAP
,
ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED
,
ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED
,
ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED
,
ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED
,
ON_PAGE_NOT_FOUND
,
ON_PAGE_SCROLL
,
ON_PULL_DOWN_REFRESH
,
ON_REACH_BOTTOM
,
ON_REACH_BOTTOM_DISTANCE
,
ON_READY
,
ON_RESIZE
,
ON_SHARE_APP_MESSAGE
,
ON_SHARE_TIMELINE
,
ON_SHOW
,
ON_TAB_ITEM_TAP
,
ON_THEME_CHANGE
,
ON_UNHANDLE_REJECTION
,
ON_UNLOAD
,
ON_WEB_INVOKE_APP_SERVICE
,
ON_WXS_INVOKE_CALL_METHOD
,
PLUS_RE
,
PRIMARY_COLOR
,
RENDERJS_MODULES
,
RESPONSIVE_MIN_WIDTH
,
SCHEME_RE
,
SELECTED_COLOR
,
SLOT_DEFAULT_NAME
,
TABBAR_HEIGHT
,
TAGS
,
UNI_SSR
,
UNI_SSR_DATA
,
UNI_SSR_GLOBAL_DATA
,
UNI_SSR_STORE
,
UNI_SSR_TITLE
,
UNI_STORAGE_LOCALE
,
UniBaseNode
,
UniCommentNode
,
UniElement
,
UniEvent
,
UniInputElement
,
UniLifecycleHooks
,
UniNode
,
UniTextAreaElement
,
UniTextNode
,
WEB_INVOKE_APPSERVICE
,
WXS_MODULES
,
WXS_PROTOCOL
,
addFont
,
addLeadingSlash
,
cache
,
cacheStringFunction
,
callOptions
,
createIsCustomElement
,
createRpx2Unit
,
createUniEvent
,
customizeEvent
,
debounce
,
decode
,
decodedQuery
,
defaultMiniProgramRpx2Unit
,
defaultNVueRpx2Unit
,
defaultRpx2Unit
,
dynamicSlotName
,
forcePatchProp
,
formatAppLog
,
formatDateTime
,
formatH5Log
,
formatLog
,
getCustomDataset
,
getEnvLocale
,
getLen
,
getValueByDataPath
,
initCustomDatasetOnce
,
invokeArrayFns
,
i
sAppNVueNativeTag
,
isAppNativeTag
,
isBuiltInComponent
,
isComponentInternalInstance
,
isComponentTag
,
isH5CustomElement
,
isH5NativeTag
,
isMiniProgramNativeTag
,
isRootHook
,
normalizeDataset
,
normalizeEventType
,
normalizeTarget
,
once
,
parseEventName
,
parseQuery
,
parseUrl
,
passive
,
plusReady
,
removeLeadingSlash
,
resolveComponentInstance
,
resolveOwnerEl
,
resolveOwnerVm
,
sanitise
,
scrollTo
,
stringifyQuery
,
updateElementStyle
};
export
{
ACTION_TYPE_ADD_EVENT
,
ACTION_TYPE_ADD_WXS_EVENT
,
ACTION_TYPE_CREATE
,
ACTION_TYPE_EVENT
,
ACTION_TYPE_INSERT
,
ACTION_TYPE_PAGE_CREATE
,
ACTION_TYPE_PAGE_CREATED
,
ACTION_TYPE_PAGE_SCROLL
,
ACTION_TYPE_REMOVE
,
ACTION_TYPE_REMOVE_ATTRIBUTE
,
ACTION_TYPE_REMOVE_EVENT
,
ACTION_TYPE_SET_ATTRIBUTE
,
ACTION_TYPE_SET_TEXT
,
ATTR_CHANGE_PREFIX
,
ATTR_CLASS
,
ATTR_INNER_HTML
,
ATTR_STYLE
,
ATTR_TEXT_CONTENT
,
ATTR_V_OWNER_ID
,
ATTR_V_RENDERJS
,
ATTR_V_SHOW
,
BACKGROUND_COLOR
,
BUILT_IN_TAGS
,
BUILT_IN_TAG_NAMES
,
COMPONENT_NAME_PREFIX
,
COMPONENT_PREFIX
,
COMPONENT_SELECTOR_PREFIX
,
DATA_RE
,
E$1
as
Emitter
,
EventChannel
,
EventModifierFlags
,
I18N_JSON_DELIMITERS
,
JSON_PROTOCOL
,
LINEFEED
,
MINI_PROGRAM_PAGE_RUNTIME_HOOKS
,
NAVBAR_HEIGHT
,
NODE_TYPE_COMMENT
,
NODE_TYPE_ELEMENT
,
NODE_TYPE_PAGE
,
NODE_TYPE_TEXT
,
NVUE_BUILT_IN_TAGS
,
NVUE_U_BUILT_IN_TAGS
,
ON_ADD_TO_FAVORITES
,
ON_APP_ENTER_BACKGROUND
,
ON_APP_ENTER_FOREGROUND
,
ON_BACK_PRESS
,
ON_ERROR
,
ON_HIDE
,
ON_KEYBOARD_HEIGHT_CHANGE
,
ON_LAUNCH
,
ON_LOAD
,
ON_NAVIGATION_BAR_BUTTON_TAP
,
ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED
,
ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED
,
ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED
,
ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED
,
ON_PAGE_NOT_FOUND
,
ON_PAGE_SCROLL
,
ON_PULL_DOWN_REFRESH
,
ON_REACH_BOTTOM
,
ON_REACH_BOTTOM_DISTANCE
,
ON_READY
,
ON_RESIZE
,
ON_SHARE_APP_MESSAGE
,
ON_SHARE_TIMELINE
,
ON_SHOW
,
ON_TAB_ITEM_TAP
,
ON_THEME_CHANGE
,
ON_UNHANDLE_REJECTION
,
ON_UNLOAD
,
ON_WEB_INVOKE_APP_SERVICE
,
ON_WXS_INVOKE_CALL_METHOD
,
PLUS_RE
,
PRIMARY_COLOR
,
RENDERJS_MODULES
,
RESPONSIVE_MIN_WIDTH
,
SCHEME_RE
,
SELECTED_COLOR
,
SLOT_DEFAULT_NAME
,
TABBAR_HEIGHT
,
TAGS
,
UNI_SSR
,
UNI_SSR_DATA
,
UNI_SSR_GLOBAL_DATA
,
UNI_SSR_STORE
,
UNI_SSR_TITLE
,
UNI_STORAGE_LOCALE
,
UniBaseNode
,
UniCommentNode
,
UniElement
,
UniEvent
,
UniInputElement
,
UniLifecycleHooks
,
UniNode
,
UniTextAreaElement
,
UniTextNode
,
WEB_INVOKE_APPSERVICE
,
WXS_MODULES
,
WXS_PROTOCOL
,
addFont
,
addLeadingSlash
,
cache
,
cacheStringFunction
,
callOptions
,
createIsCustomElement
,
createRpx2Unit
,
createUniEvent
,
customizeEvent
,
debounce
,
decode
,
decodedQuery
,
defaultMiniProgramRpx2Unit
,
defaultNVueRpx2Unit
,
defaultRpx2Unit
,
dynamicSlotName
,
forcePatchProp
,
formatAppLog
,
formatDateTime
,
formatH5Log
,
formatLog
,
getCustomDataset
,
getEnvLocale
,
getLen
,
getValueByDataPath
,
initCustomDatasetOnce
,
invokeArrayFns
,
i
nvokeCreateVueAppHook
,
isAppNVueNativeTag
,
isAppNativeTag
,
isBuiltInComponent
,
isComponentInternalInstance
,
isComponentTag
,
isH5CustomElement
,
isH5NativeTag
,
isMiniProgramNativeTag
,
isRootHook
,
normalizeDataset
,
normalizeEventType
,
normalizeTarget
,
onCreateVueApp
,
once
,
parseEventName
,
parseQuery
,
parseUrl
,
passive
,
plusReady
,
removeLeadingSlash
,
resolveComponentInstance
,
resolveOwnerEl
,
resolveOwnerVm
,
sanitise
,
scrollTo
,
stringifyQuery
,
updateElementStyle
};
packages/uni-shared/src/index.ts
浏览文件 @
6f15a5a1
...
...
@@ -13,6 +13,7 @@ export * from './debounce'
export
*
from
'
./constants
'
export
*
from
'
./EventChannel
'
export
*
from
'
./lifecycle
'
export
*
from
'
./onCreateVueApp
'
export
{
default
as
Emitter
}
from
'
./TinyEmitter
'
export
*
from
'
./node/locale
'
packages/uni-
vue
/src/onCreateVueApp.ts
→
packages/uni-
shared
/src/onCreateVueApp.ts
浏览文件 @
6f15a5a1
文件已移动
packages/uni-stat/dist/uni-stat.es.js
浏览文件 @
6f15a5a1
var
version
=
"
3.0.0-alpha-3031220220222002
"
;
const
STAT_VERSION
=
version
;
const
STAT_URL
=
'
https://tongji.dcloud.io/uni/stat
'
;
const
STAT_H5_URL
=
'
https://tongji.dcloud.io/uni/stat.gif
'
;
const
PAGE_PVER_TIME
=
1800
;
const
APP_PVER_TIME
=
300
;
const
OPERATING_TIME
=
10
;
const
STAT_VERSION
=
version
;
const
STAT_URL
=
'
https://tongji.dcloud.io/uni/stat
'
;
const
STAT_H5_URL
=
'
https://tongji.dcloud.io/uni/stat.gif
'
;
const
PAGE_PVER_TIME
=
1800
;
const
APP_PVER_TIME
=
300
;
const
OPERATING_TIME
=
10
;
const
DIFF_TIME
=
60
*
1000
*
60
*
24
;
const
statConfig$1
=
{
...
...
@@ -895,15 +895,12 @@ const stat = Stat$1.getInstance();
let
isHide
=
false
;
const
lifecycle
=
{
onLaunch
(
options
)
{
console
.
log
(
'
onLaunch
'
)
stat
.
report
(
options
,
this
);
},
onReady
()
{
console
.
log
(
'
onReady
'
)
stat
.
ready
(
this
);
},
onLoad
(
options
)
{
console
.
log
(
'
onLoad
'
)
stat
.
load
(
options
,
this
);
// 重写分享,获取分享上报事件
if
(
this
.
$scope
&&
this
.
$scope
.
onShareAppMessage
)
{
...
...
@@ -915,17 +912,14 @@ const lifecycle = {
}
},
onShow
()
{
console
.
log
(
'
onShow
'
)
isHide
=
false
;
stat
.
show
(
this
);
},
onHide
()
{
console
.
log
(
'
onHide
'
)
isHide
=
true
;
stat
.
hide
(
this
);
},
onUnload
()
{
console
.
log
(
'
onUnload
'
)
if
(
isHide
)
{
isHide
=
false
;
return
...
...
@@ -938,17 +932,16 @@ const lifecycle = {
};
function
main
()
{
//
if (process.env.NODE_ENV === 'development') {
//
uni.report = function (type, options) {};
//
} else {
if
(
process
.
env
.
NODE_ENV
===
'
development
'
)
{
uni
.
report
=
function
(
type
,
options
)
{};
}
else
{
uni
.
onCreateVueApp
((
app
)
=>
{
console
.
log
(
'
onCreateVueApp
'
)
app
.
mixin
(
lifecycle
);
uni
.
report
=
function
(
type
,
options
)
{
stat
.
sendEvent
(
type
,
options
);
};
});
//
}
}
}
main
();
packages/uni-vue/src/index.ts
浏览文件 @
6f15a5a1
import
{
App
}
from
'
vue
'
import
{
isFunction
}
from
'
@vue/shared
'
import
{
invokeCreateVueAppHook
}
from
'
@dcloudio/uni-shared
'
import
{
applyOptions
}
from
'
./componentOptions
'
import
{
set
}
from
'
./componentInstance
'
import
{
errorHandler
,
initOptionMergeStrategies
}
from
'
./appConfig
'
import
{
uniIdMixin
}
from
'
./uni-id-mixin
'
import
{
invokeCreateVueAppHook
}
from
'
./onCreateVueApp
'
export
{
onCreateVueApp
,
invokeCreateVueAppHook
}
from
'
./onCreateVueApp
'
export
function
initApp
(
app
:
App
)
{
const
appConfig
=
app
.
_context
.
config
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录