From 665de54e567bf37720f697b755aa8ed50057cc22 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Fri, 23 Sep 2022 20:17:16 +0800 Subject: [PATCH] wip(uts): compiler --- packages/uni-app/dist/uni-app.cjs.js | 14 ++++++++------ packages/uni-app/dist/uni-app.es.js | 14 ++++++++------ packages/uni-app/src/uts.ts | 23 +++++++++++++++-------- 3 files changed, 31 insertions(+), 20 deletions(-) diff --git a/packages/uni-app/dist/uni-app.cjs.js b/packages/uni-app/dist/uni-app.cjs.js index 552bece79..d668d81d6 100644 --- a/packages/uni-app/dist/uni-app.cjs.js +++ b/packages/uni-app/dist/uni-app.cjs.js @@ -165,8 +165,8 @@ function normalizeArg(arg) { } return arg; } -function initUtsInstanceMethod(async, opts) { - return initProxyFunction(async, opts); +function initUtsInstanceMethod(async, opts, instanceId) { + return initProxyFunction(async, opts, instanceId); } function getProxy() { if (!proxy) { @@ -235,7 +235,7 @@ function initUtsStaticMethod(async, opts) { opts.method = 's_' + opts.name; } } - return initProxyFunction(async, opts); + return initProxyFunction(async, opts, 0); } const initUtsProxyFunction = initUtsStaticMethod; function initUtsProxyClass({ package: pkg, class: cls, constructor: { params: constructorParams }, methods, props, staticProps, staticMethods, }) { @@ -247,7 +247,10 @@ function initUtsProxyClass({ package: pkg, class: cls, constructor: { params: co constructor(...params) { const target = {}; // 初始化实例 ID - const instanceId = initProxyFunction(false, shared.extend({ name: 'constructor', params: constructorParams }, baseOptions)).apply(null, params); + const instanceId = initProxyFunction(false, shared.extend({ name: 'constructor', params: constructorParams }, baseOptions), 0).apply(null, params); + if (!instanceId) { + throw new Error(`new ${cls} is failed`); + } return new Proxy(this, { get(_, name) { if (!target[name]) { @@ -255,10 +258,9 @@ function initUtsProxyClass({ package: pkg, class: cls, constructor: { params: co if (shared.hasOwn(methods, name)) { const { async, params } = methods[name]; target[name] = initUtsInstanceMethod(!!async, shared.extend({ - id: instanceId, name, params, - }, baseOptions)); + }, baseOptions), instanceId); } else if (props.includes(name)) { // 实例属性 diff --git a/packages/uni-app/dist/uni-app.es.js b/packages/uni-app/dist/uni-app.es.js index 4576bbe9b..665925a7c 100644 --- a/packages/uni-app/dist/uni-app.es.js +++ b/packages/uni-app/dist/uni-app.es.js @@ -133,8 +133,8 @@ function normalizeArg(arg) { } return arg; } -function initUtsInstanceMethod(async, opts) { - return initProxyFunction(async, opts); +function initUtsInstanceMethod(async, opts, instanceId) { + return initProxyFunction(async, opts, instanceId); } function getProxy() { if (!proxy) { @@ -203,7 +203,7 @@ function initUtsStaticMethod(async, opts) { opts.method = 's_' + opts.name; } } - return initProxyFunction(async, opts); + return initProxyFunction(async, opts, 0); } const initUtsProxyFunction = initUtsStaticMethod; function initUtsProxyClass({ package: pkg, class: cls, constructor: { params: constructorParams }, methods, props, staticProps, staticMethods, }) { @@ -215,7 +215,10 @@ function initUtsProxyClass({ package: pkg, class: cls, constructor: { params: co constructor(...params) { const target = {}; // 初始化实例 ID - const instanceId = initProxyFunction(false, extend({ name: 'constructor', params: constructorParams }, baseOptions)).apply(null, params); + const instanceId = initProxyFunction(false, extend({ name: 'constructor', params: constructorParams }, baseOptions), 0).apply(null, params); + if (!instanceId) { + throw new Error(`new ${cls} is failed`); + } return new Proxy(this, { get(_, name) { if (!target[name]) { @@ -223,10 +226,9 @@ function initUtsProxyClass({ package: pkg, class: cls, constructor: { params: co if (hasOwn(methods, name)) { const { async, params } = methods[name]; target[name] = initUtsInstanceMethod(!!async, extend({ - id: instanceId, name, params, - }, baseOptions)); + }, baseOptions), instanceId); } else if (props.includes(name)) { // 实例属性 diff --git a/packages/uni-app/src/uts.ts b/packages/uni-app/src/uts.ts index 8bfbe649c..244c42084 100644 --- a/packages/uni-app/src/uts.ts +++ b/packages/uni-app/src/uts.ts @@ -17,8 +17,12 @@ export function normalizeArg(arg: unknown) { return arg } -function initUtsInstanceMethod(async: boolean, opts: ProxyFunctionOptions) { - return initProxyFunction(async, opts) +function initUtsInstanceMethod( + async: boolean, + opts: ProxyFunctionOptions, + instanceId: number +) { + return initProxyFunction(async, opts, instanceId) } interface Parameter { @@ -165,7 +169,7 @@ function initProxyFunction( companion, params: methodParams, }: ProxyFunctionOptions, - instanceId?: number + instanceId: number ) { const invokeCallback = ({ id, @@ -221,7 +225,7 @@ function initUtsStaticMethod(async: boolean, opts: ProxyFunctionOptions) { opts.method = 's_' + opts.name } } - return initProxyFunction(async, opts) + return initProxyFunction(async, opts, 0) } export const initUtsProxyFunction = initUtsStaticMethod @@ -245,9 +249,12 @@ export function initUtsProxyClass({ // 初始化实例 ID const instanceId = initProxyFunction( false, - extend({ name: 'constructor', params: constructorParams }, baseOptions) + extend({ name: 'constructor', params: constructorParams }, baseOptions), + 0 ).apply(null, params) as number - + if (!instanceId) { + throw new Error(`new ${cls} is failed`) + } return new Proxy(this, { get(_, name) { if (!target[name as string]) { @@ -258,12 +265,12 @@ export function initUtsProxyClass({ !!async, extend( { - id: instanceId, name, params, }, baseOptions - ) + ), + instanceId ) } else if (props.includes(name as string)) { // 实例属性 -- GitLab