提交 4188afe2 编写于 作者: fxy060608's avatar fxy060608

wip(uts): compiler

上级 4bd02b87
{"version":3,"sources":["uni_modules/test-uniplugin/utssdk/app-ios/index.uts","uni_modules/test-uniplugin/utssdk/interface.uts"],"sourcesContent":["import { UIDevice } from 'UIKit'\nimport { CLLocationManager, CLAuthorizationStatus } from 'CoreLocation'\nimport { ShowToast } from '../interface.uts'\n\ntype GetBatteryInfoOptions = {\n name: string\n pwd: number\n success?: (res: UTSJSONObject) => void\n fail?: (res: UTSJSONObject) => void\n complete?: (res: UTSJSONObject) => void\n}\n\nexport default function getBatteryInfo(options: GetBatteryInfoOptions) {\n new UIAlertController(\n (title = title),\n (message = message),\n (preferredStyle = UIAlertController.Style.alert)\n )\n const res = {\n errMsg: 'getBatteryInfo:ok',\n level: UIDevice.current.batteryLevel * 100,\n isCharging: UIDevice.current.batteryState == UIDevice.BatteryState.charging,\n }\n if (options.success != null) {\n options.success!(res)\n }\n if (options.complete != null) {\n options.complete!(res)\n }\n}\n\nexport function test1(callback: () => void): string {\n console.log({ \"a\": \"b\" })\n console.log('test1')\n\n\n\n\n console.log('def ios')\n\n\n console.log('ndef android')\n\n\n\n\n\n console.log('def android || def ios')\n\n\n\n\n console.log(CLLocationManager, CLAuthorizationStatus)\n const a = -3\n console.log(~a)\n return 'test1'\n}\n\nclass Test1 { }\nexport class Test {\n constructor() {\n new Test1()\n }\n test(): string | null {\n if (UTSiOS.macros(\"swift(>=1)\")) {\n console.log(\"swift(>=1)\")\n }\n if (UTSiOS.macros(\"arch(i386) || arch(arm)\")) {\n console.log(\"arch(i386) || arch(arm)\")\n }\n if (UTSiOS.available(\"iOS 14, macOS 11.0, *\")) {\n console.log(\"iOS 14, macOS 11.0, *\")\n } else if (UTSiOS.available(\"iOS 13,*\")) {\n console.log(\"iOS 13,*\")\n } else if (UTSiOS.unavailable(\"tvOS 12\")) {\n console.log(\"tvOS 12\")\n }\n return null\n }\n}\n\nexport async function testAsync() {\n uni.showToast()\n uni.showToast()\n uni.showModel()\n return { a: 1 }\n}\n\nexport const showToast1: ShowToast = (msg) => { }\nexport const showToast2: ShowToast = function (msg) { }\nexport const showToast3: ShowToast = function showToast(msg) { }\n","export type ShowToast = (msg: string) => void\n"],"names":[],"mappings":";;AAAA,aAAgC;AAChC,oBAAuE;;;iBCD3D,eAAa,KAAK,MAAM,KAAK,IAAI;ADIhB;;aAAxB;IACH,WAAA,MAAM,MAAM,EAAA;IACZ,WAAA,KAAK,QAAM,EAAA;IACX,WAAA,aAAW,KAAK,kBAAkB,IAAI,GAAA;IACtC,WAAA,UAAQ,KAAK,kBAAkB,IAAI,GAAA;IACnC,WAAA,cAAY,KAAK,kBAAkB,IAAI,GAAA;;;;;QAJvC,uBAAM,MAAM;QACZ,qBAAK,QAAM;QACX,iCAAW,KAAK,kBAAkB,IAAI;QACtC,2BAAQ,KAAK,kBAAkB,IAAI;QACnC,mCAAY,KAAK,kBAAkB,IAAI;;AACzC;AAEe,YAAS,eAAe,EAAA,SAAS,qBAAqB,EAAE;IACjE,kBACD,OAAQ,OACR,SAAU,SACV,gBAAiB,kBAAkB,KAAK,CAAC,KAAK;IAEjD,IAAM,MAAM;QACV,CAAA,SAAQ;QACR,CAAA,QAAO,SAAS,OAAO,CAAC,YAAY,GAAG,GAAG;QAC1C,CAAA,aAAY,SAAS,OAAO,CAAC,YAAY,IAAI,SAAS,YAAY,CAAC,QAAQ;MAC5E;IACD,IAAI,QAAQ,OAAO,IAAI,GAAI;QACzB,QAAQ,OAAO,EAAE;;IAEnB,IAAI,QAAQ,QAAQ,IAAI,GAAI;QAC1B,QAAQ,QAAQ,EAAE;;AAEtB;AAEO,YAAS,MAAM,EAAA,yBAAgB,IAAI,KAAG,MAAM,CAAC;IAClD,QAAQ,GAAG,CAAC;QAAE,KAAK;MAAK;IACxB,QAAQ,GAAG,CAAC;IAKZ,QAAQ,GAAG,CAAC;IAGZ,QAAQ,GAAG,CAAC;IAMZ,QAAQ,GAAG,CAAC;IAKZ,QAAQ,GAAG,CAAC,mBAAmB;IAC/B,IAAM,IAAI,EAAE;IACZ,QAAQ,GAAG,CAAC,CAAC;IACb,OAAO;AACT;AAEA;;aAAM;AAAQ;AACP;;aAAM;IACX,aAAc;QACR;IACN;IACA,YAAA,UAAQ,MAAM,EAAQ;QACpB;YACE,QAAQ,GAAG,CAAC;cACb;QACD;YACE,QAAQ,GAAG,CAAC;cACb;QACD;YACE,QAAQ,GAAG,CAAC;;YACP;gBACL,QAAQ,GAAG,CAAC;;gBACP;oBACL,QAAQ,GAAG,CAAC;;;;QAEd,OAAO,GAAI;IACb;AACF;AAEO;YAAe,mCAAY;IAC5B;IACA;IACA;IACJ,OAAO;QAAE,CAAA,IAAG,CAAC;MAAE;AACjB;AAEO,WAAM,wBAAwB;GAAC;;AAC/B,WAAM,wBAAwB;CAAU,EAAA,GAAG;;AAC3C,WAAM,wBAAwB;CAAmB,EAAA,GAAG;;AAtF9B;;;IAC3B,WAAA,MAAM,MAAM,EAAA;IACZ,WAAA,KAAK,QAAM,EAAA;IACX,WAAA,SAAQ,aAA8B;IACtC,WAAA,MAAK,aAA8B;IACnC,WAAA,UAAS,aAA8B;AACzC;+BAEuC,EAAA,SAAS,+BAAqB;;;;;SALxD,KAAK;yBAAL;;;SACH,KAAK;sBAAL;;;SACI,KAAK;0BAAL;;;;wBAsBQ,0BAAuB,MAAM;;QAA7B;;;;;;;8BAgCZ,MAAM;;;;;;;;6BC/DS,KAAK,MAAM,KAAK,IAAI;sBAApB;;6BAAA,KAAK,MAAM,KAAK,IAAI;sBAApB;;6BAAA,KAAK,MAAM,KAAK,IAAI;sBAApB;;;;;4CDYc,EAAA,SAAS,+BAAqB;kCAA9B;;qCAmBjB,0BAAuB,MAAM;yBAA7B;;;;;;0CC/BG,KAAK,MAAM,KAAK,IAAI;8BAApB;;0CAAA,KAAK,MAAM,KAAK,IAAI;8BAApB;;0CAAA,KAAK,MAAM,KAAK,IAAI;8BAApB"}
\ No newline at end of file
{"version":3,"sources":["uni_modules/test-uniplugin/utssdk/app-ios/index.uts","uni_modules/test-uniplugin/utssdk/interface.uts"],"sourcesContent":["import { UIDevice } from 'UIKit'\nimport { CLLocationManager, CLAuthorizationStatus } from 'CoreLocation'\nimport { ShowToast } from '../interface.uts'\n\ntype GetBatteryInfoOptions = {\n name: string\n pwd: number\n success?: (res: UTSJSONObject) => void\n fail?: (res: UTSJSONObject) => void\n complete?: (res: UTSJSONObject) => void\n}\n\nexport default function getBatteryInfo(options: GetBatteryInfoOptions) {\n new UIAlertController(\n (title = title),\n (message = message),\n (preferredStyle = UIAlertController.Style.alert)\n )\n const res = {\n errMsg: 'getBatteryInfo:ok',\n level: UIDevice.current.batteryLevel * 100,\n isCharging: UIDevice.current.batteryState == UIDevice.BatteryState.charging,\n }\n if (options.success != null) {\n options.success!(res)\n }\n if (options.complete != null) {\n options.complete!(res)\n }\n}\n\nexport function test1(callback: () => void): string {\n console.log({ \"a\": \"b\" })\n console.log('test1')\n\n\n\n\n console.log('def ios')\n\n\n console.log('ndef android')\n\n\n\n\n\n console.log('def android || def ios')\n\n\n\n\n console.log(CLLocationManager, CLAuthorizationStatus)\n const a = -3\n console.log(~a)\n return 'test1'\n}\n\nclass Test1 { }\nexport class Test {\n constructor() {\n new Test1()\n }\n test(): string | null {\n if (UTSiOS.macros(\"swift(>=1)\")) {\n console.log(\"swift(>=1)\")\n }\n if (UTSiOS.macros(\"arch(i386) || arch(arm)\")) {\n console.log(\"arch(i386) || arch(arm)\")\n }\n if (UTSiOS.available(\"iOS 14, macOS 11.0, *\")) {\n console.log(\"iOS 14, macOS 11.0, *\")\n } else if (UTSiOS.available(\"iOS 13,*\")) {\n console.log(\"iOS 13,*\")\n } else if (UTSiOS.unavailable(\"tvOS 12\")) {\n console.log(\"tvOS 12\")\n }\n return null\n }\n}\n\nexport async function testAsync() {\n uni.showToast()\n uni.showToast()\n uni.showModel()\n return { a: 1 }\n}\n\nexport const showToast1: ShowToast = (msg) => { }\nexport const showToast2: ShowToast = function (msg) { }\nexport const showToast3: ShowToast = function showToast(msg) { }\n","export type ShowToast = (msg: string) => void\n"],"names":[],"mappings":";;AAAA,aAAgC;AAChC,oBAAuE;;;iBCD3D,eAAa,KAAK,MAAM,KAAK,IAAI;ADIhB;;aAAxB;IACH,WAAA,MAAM,MAAM,EAAA;IACZ,WAAA,KAAK,QAAM,EAAA;IACX,WAAA,aAAW,KAAK,kBAAkB,IAAI,GAAA;IACtC,WAAA,UAAQ,KAAK,kBAAkB,IAAI,GAAA;IACnC,WAAA,cAAY,KAAK,kBAAkB,IAAI,GAAA;;;;;QAJvC,uBAAM,MAAM;QACZ,qBAAK,QAAM;QACX,iCAAW,KAAK,kBAAkB,IAAI;QACtC,2BAAQ,KAAK,kBAAkB,IAAI;QACnC,mCAAY,KAAK,kBAAkB,IAAI;;AACzC;AAEe,YAAS,eAAe,EAAA,SAAS,qBAAqB,EAAE;IACjE,kBACD,OAAQ,OACR,SAAU,SACV,gBAAiB,kBAAkB,KAAK,CAAC,KAAK;IAEjD,IAAM,MAAM;QACV,CAAA,SAAQ;QACR,CAAA,QAAO,SAAS,OAAO,CAAC,YAAY,GAAG,GAAG;QAC1C,CAAA,aAAY,SAAS,OAAO,CAAC,YAAY,IAAI,SAAS,YAAY,CAAC,QAAQ;MAC5E;IACD,IAAI,QAAQ,OAAO,IAAI,GAAI;QACzB,QAAQ,OAAO,EAAE;;IAEnB,IAAI,QAAQ,QAAQ,IAAI,GAAI;QAC1B,QAAQ,QAAQ,EAAE;;AAEtB;AAEO,YAAS,MAAM,EAAA,yBAAgB,IAAI,KAAG,MAAM,CAAC;IAClD,QAAQ,GAAG,CAAC;QAAE,KAAK;MAAK;IACxB,QAAQ,GAAG,CAAC;IAKZ,QAAQ,GAAG,CAAC;IAGZ,QAAQ,GAAG,CAAC;IAMZ,QAAQ,GAAG,CAAC;IAKZ,QAAQ,GAAG,CAAC,mBAAmB;IAC/B,IAAM,IAAI,EAAE;IACZ,QAAQ,GAAG,CAAC,CAAC;IACb,OAAO;AACT;AAEA;;aAAM;AAAQ;AACP;;aAAM;IACX,aAAc;QACR;IACN;IACA,YAAA,UAAQ,MAAM,EAAQ;QACpB;YACE,QAAQ,GAAG,CAAC;cACb;QACD;YACE,QAAQ,GAAG,CAAC;cACb;QACD;YACE,QAAQ,GAAG,CAAC;;YACP;gBACL,QAAQ,GAAG,CAAC;;gBACP;oBACL,QAAQ,GAAG,CAAC;;;;QAEd,OAAO,GAAI;IACb;AACF;AAEO;YAAe,mCAAY;IAC5B;IACA;IACA;IACJ,OAAO;QAAE,CAAA,IAAG,CAAC;MAAE;AACjB;AAEO,WAAM,wBAAwB;GAAC;;AAC/B,WAAM,wBAAwB;CAAU,EAAA,GAAG;;AAC3C,WAAM,wBAAwB;CAAmB,EAAA,GAAG;;AAtF9B;;;IAC3B,WAAA,MAAM,MAAM,EAAA;IACZ,WAAA,KAAK,QAAM,EAAA;IACX,WAAA,SAAQ,aAA8B;IACtC,WAAA,MAAK,aAA8B;IACnC,WAAA,UAAS,aAA8B;AACzC;+BAEuC,EAAA,SAAS,+BAAqB;;;;;SALxD,KAAK;yBAAL;;;SACH,KAAK;sBAAL;;;SACI,KAAK;0BAAL;;;;wBAsBQ,0BAAuB,MAAM;;;IAA7B;;;;;;8BAgCZ,MAAM;;;;;;;;6BC/DS,KAAK,MAAM,KAAK,IAAI;sBAApB;;6BAAA,KAAK,MAAM,KAAK,IAAI;sBAApB;;6BAAA,KAAK,MAAM,KAAK,IAAI;sBAApB;;;;;4CDYc,EAAA,SAAS,+BAAqB;kCAA9B;;qCAmBjB,0BAAuB,MAAM;yBAA7B;;;;;;0CC/BG,KAAK,MAAM,KAAK,IAAI;8BAApB;;0CAAA,KAAK,MAAM,KAAK,IAAI;8BAApB;;0CAAA,KAAK,MAAM,KAAK,IAAI;8BAApB"}
\ No newline at end of file
......@@ -88,7 +88,7 @@ public class AnimationViewComponent : UTSComponent<UIView> {
}
public override func __$$init() {
self.__$$watch("path", {
(__newValue, __oldValue) in
(__newValue, __oldValue) -> Void in
var newValue = UTSiOS.convertString(__newValue);
var oldValue = UTSiOS.convertString(__oldValue);
self.path = newValue;
......@@ -97,7 +97,7 @@ public class AnimationViewComponent : UTSComponent<UIView> {
}
});
self.__$$watch("loop", {
(__newValue, __oldValue) in
(__newValue, __oldValue) -> Void in
var newValue = UTSiOS.convertBool(__newValue);
var oldValue = UTSiOS.convertBool(__oldValue);
self.loop = newValue;
......@@ -106,13 +106,13 @@ public class AnimationViewComponent : UTSComponent<UIView> {
}
});
self.__$$watch("autoplay", {
(__newValue, __oldValue) in
(__newValue, __oldValue) -> Void in
var newValue = UTSiOS.convertBool(__newValue);
var oldValue = UTSiOS.convertBool(__oldValue);
self.autoplay = newValue;
});
self.__$$watch("action", {
(__newValue, __oldValue) in
(__newValue, __oldValue) -> Void in
var newValue = UTSiOS.convertString(__newValue);
var oldValue = UTSiOS.convertString(__oldValue);
var action = newValue;
......@@ -131,7 +131,7 @@ public class AnimationViewComponent : UTSComponent<UIView> {
}
});
self.__$$watch("hidden", {
(__newValue, __oldValue) in
(__newValue, __oldValue) -> Void in
var newValue = UTSiOS.convertBool(__newValue);
var oldValue = UTSiOS.convertBool(__oldValue);
self.hidden = newValue;
......
......@@ -92,13 +92,13 @@ public func testAsync() async -> UTSJSONObject {
]);
}
public var showToast1: ShowToast = {
(_ msg) in
(_ msg) -> Void in
};
public var showToast2: ShowToast = {
(_ msg) in
(_ msg) -> Void in
};
public var showToast3: ShowToast = {
(_ msg) in
(_ msg) -> Void in
};
@objc(UTSSDKModulesTestUniPluginGetBatteryInfoOptionsJSONObject)
@objcMembers
......@@ -129,9 +129,9 @@ public func getBatteryInfoByJs(_ options: GetBatteryInfoOptionsJSONObject) {
}
public func test1ByJs(_ callback: UTSCallback) -> String {
return test1({
callback();
}
);
() -> Void in
callback();
});
}
@objc(UTSSDKModulesTestUniPluginTestByJs)
@objcMembers
......
......@@ -17314,6 +17314,10 @@ function resolveSyncResult(res, returnOptions, instanceId, proxy) {
}
if (returnOptions) {
if (returnOptions.type === 'interface' && typeof res.params === 'number') {
// 返回了 0
if (!res.params) {
return null;
}
if (res.params === instanceId && proxy) {
return proxy;
}
......
......@@ -40,6 +40,10 @@ function resolveSyncResult(res, returnOptions, instanceId, proxy) {
}
if (returnOptions) {
if (returnOptions.type === 'interface' && typeof res.params === 'number') {
// 返回了 0
if (!res.params) {
return null;
}
if (res.params === instanceId && proxy) {
return proxy;
}
......
......@@ -234,6 +234,10 @@ function resolveSyncResult(
}
if (returnOptions) {
if (returnOptions.type === 'interface' && typeof res.params === 'number') {
// 返回了 0
if (!res.params) {
return null
}
if (res.params === instanceId && proxy) {
return proxy
}
......
......@@ -72,5 +72,28 @@ describe('uni_modules:uni-ext-api', () => {
).toEqual({
'uni.chooseLocation': ['@/uni_modules/uni-location', 'chooseLocation'],
})
expect(
parseInjects(true, 'app', `@/uni_modules/uni-request`, {
uni: {
request: {
app: {
js: false,
},
},
},
})
).toEqual({
'uni.request': ['@/uni_modules/uni-request', 'request', { js: false }],
})
expect(
parseInjects(true, 'app', `@/uni_modules/uni-request`, {
uni: {
request: {
app: false,
},
},
})
).toEqual({})
})
})
......@@ -2,12 +2,24 @@ import path from 'path'
import fs from 'fs-extra'
import { recursive } from 'merge'
type Define = string | string[] | Record<string, string> | false
type DefineOptions = {
name?: string
app?:
| boolean
| {
js?: boolean
kotlin?: boolean
swift?: boolean
}
[key: string]: any
}
type Define = string | string[] | Record<string, string | DefineOptions> | false
type Defines = {
[name: string]: Define
}
interface Exports {
export interface Exports {
[name: string]: Define | Defines | false
}
......@@ -50,7 +62,11 @@ export function parseUniExtApis(vite = true) {
type Inject = string | string[]
type Injects = {
[name: string]: string | string[] | false
[name: string]:
| string
| [string, string]
| [string, string, DefineOptions['app']]
| false
}
/**
* uni:'getBatteryInfo'
......@@ -95,13 +111,17 @@ export function parseInjects(
}
const injects: Injects = {}
for (const key in rootDefines) {
Object.assign(injects, parseInject(vite, source, 'uni', rootDefines[key]))
Object.assign(
injects,
parseInject(vite, platform, source, 'uni', rootDefines[key])
)
}
return injects
}
export function parseInject(
vite = true,
platform: UniApp.PLATFORM,
source: string,
globalObject: string,
define: Define
......@@ -119,7 +139,22 @@ export function parseInject(
} else {
const keys = Object.keys(define)
keys.forEach((d) => {
injects[globalObject + '.' + d] = [source, define[d]]
if (typeof define[d] === 'string') {
injects[globalObject + '.' + d] = [source, define[d] as string]
} else {
const defineOptions = define[d] as DefineOptions
if (defineOptions[platform] !== false) {
if (platform === 'app') {
injects[globalObject + '.' + d] = [
source,
defineOptions.name || d,
defineOptions.app,
]
} else {
injects[globalObject + '.' + d] = [source, defineOptions.name || d]
}
}
}
})
}
return injects
......
......@@ -10,6 +10,7 @@ import legacyPlugin from '@vitejs/plugin-legacy'
import {
CopyOptions,
InjectOptions,
emptyDir,
initModuleAlias,
initPreContext,
......@@ -94,7 +95,9 @@ export default function uniPlugin(
const injects = parseUniExtApis()
if (Object.keys(injects).length) {
plugins.push(uniViteInjectPlugin('uni:ext-api-inject', injects))
plugins.push(
uniViteInjectPlugin('uni:ext-api-inject', injects as InjectOptions)
)
}
// 仅限 h5
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册