diff --git a/packages/playground/uts/nativeplugins/test-uniplugin/android/index.ts b/packages/playground/uts/nativeplugins/test-uniplugin/android/index.ts deleted file mode 100644 index df8a22fd683cae1074b10f6310f69436b4c10349..0000000000000000000000000000000000000000 --- a/packages/playground/uts/nativeplugins/test-uniplugin/android/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -import IUniLogin, { OnConnect, RegisterOptions } from '../interface' - -export default class UniLogin implements IUniLogin { - //@UniJSMethod({ uiThread: true }) - login(name: string, code: number) { - console.log(name, code) - } - - // {"name":"fxy","callback1":{__type__:"fun",id:1},"callback2":{__type__:"fun",id:1}} - // => RegisterOptions - async register(opts: RegisterOptions) { - opts.callback1(true) - opts.callback2(true) - opts.abc.callback3(true) - } - - onConnect(callback: OnConnect) {} -} diff --git a/packages/playground/uts/nativeplugins/test-uniplugin/android/src/io/dcloud/uniplugin/TestModule.uts b/packages/playground/uts/nativeplugins/test-uniplugin/android/src/io/dcloud/uniplugin/TestModule.uts deleted file mode 100644 index 298f854ec7383cffddc1b934f4146cf4ed148cde..0000000000000000000000000000000000000000 --- a/packages/playground/uts/nativeplugins/test-uniplugin/android/src/io/dcloud/uniplugin/TestModule.uts +++ /dev/null @@ -1,34 +0,0 @@ -import Intent from "android.content.Intent"; -import JSONObject from "com.alibaba.fastjson.JSONObject"; -import UniModule from "io.dcloud.feature.uniapp.common.UniModule"; -import UniJSMethod from "io.dcloud.feature.uniapp.annotation.UniJSMethod"; -import UniJSCallback from "io.dcloud.feature.uniapp.bridge.UniJSCallback"; -import log from "./log"; -export default class TestModule implements UniLogin { - TAG = "TestModule"; - static REQUEST_CODE = 1000; - //run ui thread - @UniJSMethod({ uiThread: true }) - async testAsyncFunc(options: JSONObject, callback?: UniJSCallback) { - log(this.TAG, "testAsyncFunc--$options"); - if (callback != null) { - const data = new JSONObject(); - data["code"] = "success12312"; - callback.invoke(data); - } - } - //run JS thread - @UniJSMethod({ uiThread: false }) - testSyncFunc(options: JSONObject): JSONObject { - const data = new JSONObject(); - data["code"] = "success456"; - return data; - } - override onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { - if (requestCode == TestModule.REQUEST_CODE && data.hasExtra("respond")) { - log(this.TAG, "原生页面返回----" + data.getStringExtra("respond")); - } else { - super.onActivityResult(requestCode, resultCode, data); - } - } -} diff --git a/packages/playground/uts/nativeplugins/test-uniplugin/android/src/io/dcloud/uniplugin/log.uts b/packages/playground/uts/nativeplugins/test-uniplugin/android/src/io/dcloud/uniplugin/log.uts deleted file mode 100644 index f6886d51d994d4285405facb3fa45860ce32e148..0000000000000000000000000000000000000000 --- a/packages/playground/uts/nativeplugins/test-uniplugin/android/src/io/dcloud/uniplugin/log.uts +++ /dev/null @@ -1,4 +0,0 @@ -import Log from "android.util.Log"; -export default function log(tag: string, msg: string) { - Log.e(tag, msg); -} diff --git a/packages/playground/uts/nativeplugins/test-uniplugin/android/src/test.uts b/packages/playground/uts/nativeplugins/test-uniplugin/android/src/test.uts deleted file mode 100644 index f6886d51d994d4285405facb3fa45860ce32e148..0000000000000000000000000000000000000000 --- a/packages/playground/uts/nativeplugins/test-uniplugin/android/src/test.uts +++ /dev/null @@ -1,4 +0,0 @@ -import Log from "android.util.Log"; -export default function log(tag: string, msg: string) { - Log.e(tag, msg); -} diff --git a/packages/playground/uts/nativeplugins/test-uniplugin/android/uni-login.fun.ts b/packages/playground/uts/nativeplugins/test-uniplugin/android/uni-login.fun.ts deleted file mode 100644 index 4c4b53639cb0b2df4779a770d97e2a3f8a874967..0000000000000000000000000000000000000000 --- a/packages/playground/uts/nativeplugins/test-uniplugin/android/uni-login.fun.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { login as Login, register as Register } from '../interface.fun' - -export const login: Login = (name, code) => { - console.log(name, code) -} - -// import { login } from '@/uni_modules/uni-login' -// => const uniLogin = require('class') -// import { UniLogin, test } from '@/uni_modules/uni-login' -// new UniLogin() diff --git a/packages/playground/uts/nativeplugins/test-uniplugin/interface.fun.d.ts b/packages/playground/uts/nativeplugins/test-uniplugin/interface.fun.d.ts deleted file mode 100644 index d6ee64dd13576ef69a766300f0827ec1c7c30ee5..0000000000000000000000000000000000000000 --- a/packages/playground/uts/nativeplugins/test-uniplugin/interface.fun.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { RegisterOptions, OnConnect } from './interface' - -export interface login { - (name: string, code: number): void -} - -export interface register { - (opts: RegisterOptions): Promise -} - -export interface onConnect { - (callback: OnConnect): void -} diff --git a/packages/playground/uts/nativeplugins/test-uniplugin/interface.ts b/packages/playground/uts/nativeplugins/test-uniplugin/interface.ts deleted file mode 100644 index 1de2c53d7b458437aae86d2ebbf4eab92586cd1d..0000000000000000000000000000000000000000 --- a/packages/playground/uts/nativeplugins/test-uniplugin/interface.ts +++ /dev/null @@ -1,19 +0,0 @@ -export type RegisterOptions = { - name: string - callback1: (res: boolean) => void - callback2: (res: boolean) => void - abc: { - callback3: (res: boolean) => void - } -} - -export type OnConnect = () => void - -export default interface IUniLogin { - login: (name: string, code: number) => void - register: (opts: RegisterOptions) => Promise - onConnect: (callback: OnConnect) => void -} - -// import UniLogin from '@uni_modules/uni-login' -// new UniLogin() diff --git a/packages/playground/uts/nativeplugins/test-uniplugin/ios/src/TestSwiftComponent.uts b/packages/playground/uts/nativeplugins/test-uniplugin/ios/src/TestSwiftComponent.uts deleted file mode 100644 index baefbb7a62a7daba3f438d7ee61d190fdb6f4c4a..0000000000000000000000000000000000000000 --- a/packages/playground/uts/nativeplugins/test-uniplugin/ios/src/TestSwiftComponent.uts +++ /dev/null @@ -1,83 +0,0 @@ -// -// TestSwiftComponent.swift -// DCTestSwiftPlugin -// -// Created by Dcloud-XHY on 2022/6/28. -// - -import 'UIKit' -import 'MapKit' - -// 必须添加 @objc(类名),编译器才会生成对应的 oc 方法 -@objc(TestSwiftComponent) -class TestSwiftComponent implements DCUniComponent, MKMapViewDelegate { - mapLoadedEvent = false - showTraffic = false - mapView?: MKMapView = null - - // 初始化方法 - override onCreateComponent( - ref: String, - type: String, - styles: [AnyHashable: Any], - attributes: [AnyHashable: Any], - events: [Any], - uniInstance: DCUniSDKInstance - ) { - // NSDictionary 转换为 swift 的 [AnyHashable : Any] ,解析参数需要使用 [AnyHashable("key")] - this.showTraffic = DCUniConvert.bool( - attributes[AnyHashable('showTraffic')] ?? false - ) - } - - override loadView(): UIView { - this.mapView = MKMapView.init() - return this.mapView! - } - - override viewDidLoad() { - this.mapView!.delegate = this - if (this.showTraffic) { - this.mapView.showsTraffic = true - } - } - - // 监听属性变化方法 - override updateAttributes(attributes: [AnyHashable: Any] =new Dictionary()) { - if (attributes['showsTraffic'] != null) { - this.showTraffic = DCUniConvert.bool( - attributes[AnyHashable('showsTraffic')]! - ) - this.mapView.showsTraffic = this.showTraffic - } - } - - // 监听注册事件方法 - override addEvent(eventName: String) { - if (eventName == 'mapLoaded') { - this.mapLoadedEvent = true - } - } - - override removeEvent(eventName: String) { - if (eventName == 'mapLoaded') { - this.mapLoadedEvent = false - } - } - - @objc public static wx_export_method_0(): String { - return 'focus:' - } - - @objc focus(options: NSDictionary) { - print(options) - } - - // MARK: - MKMapViewDelegate - mapViewDidFinishLoadingMap(mapView: MKMapView) { - if (this.mapLoadedEvent) { - // 回调 event 事件 - this.fireEvent('mapLoaded', { mapLoaded: 'success' }) - } - } -} diff --git a/packages/playground/uts/nativeplugins/test-uniplugin/ios/src/TestSwiftModule.uts b/packages/playground/uts/nativeplugins/test-uniplugin/ios/src/TestSwiftModule.uts deleted file mode 100644 index b2ef25ea23719fd8cf103e4bb328b74a9f2a01b4..0000000000000000000000000000000000000000 --- a/packages/playground/uts/nativeplugins/test-uniplugin/ios/src/TestSwiftModule.uts +++ /dev/null @@ -1,66 +0,0 @@ -// -// TestSwiftModule.swift -// DCTestSwiftPlugin -// -// Created by Dcloud-XHY on 2022/6/27. -// - -//import UIKit - -// 必须添加 @objc(类名),编译器才会生成对应的 oc 方法 -@objc(TestSwiftModule) -class TestSwiftModule extends DCUniModule { - - // 暴露异步方法供js调用: - // 1.必须添加 @objc 前缀, - // 2.使用 public static 静态方法 - // 3.方法名称必须是以 wx_export_method_ 开头,后面随意拼接一个字符保证唯一性即可 - // 4.方法返回实例方法的名称 - // 注意点:swift 方法名称转换为 oc 方法名称时系统会自动将首个参数用 with 拼接到方法名中作为方法名的一部分 如下实例 - // testAsyncFunc(options:callback:) -> testAsyncFuncWithOptions:callback - // js 中调用方法 testAsyncFuncWithOptions(options,callabck) - // 可以在参数前面加上 _ 让编译器忽略拼接参数 - @objc public static wx_export_method_0() : String { - return "testAsyncFunc::" - } - - // 需要暴露的实例方法 - // 1.必须添加 @objc 前缀 - // 2.首个参数需要添加 _ 忽略外部参数 其他参数可选 - @objc testAsyncFunc(options: NSDictionary,callback?: UniModuleKeepAliveCallback) { - print(options) - - if (callback != null) { - callback!("success",false) - } - } - - // 暴露同步方法供js调用: - // 1.必须添加 @objc 前缀, - // 2.使用 public static 静态方法 - // 3.方法名称必须是以 wx_export_method_sync_ 开头,后面随意拼接一个字符保证唯一性即可 - // 4.方法返回实例方法的名称 - // 注意点:swift 方法名称转换为 oc 方法名称时系统会自动将首个参数名首字符大写然后用 with 拼接到方法名中作为方法名的一部分 如下实例 - // testSyncFunc(options:) -> testSyncFuncWithOptions: - // js 中调用方法 var value = testSyncFuncWithOptions(options) - @objc public static wx_export_method_sync_0() : String { - return "testSyncFunc:" - } - - // 需要暴露的实例方法 - // 1.必须添加 @objc 前缀 - // 2.首个参数需要添加 _ 忽略外部参数 - @objc testSyncFunc(options: NSDictionary) : String { - - print(options); - - // 暴露方法内部可以调用其他 swift 方法 - return getSomeString(); - } - - - // 不需要直接暴露给js的方法不需要添加前缀 - getSomeString() : String { - return "getSomeString success" - } -} diff --git a/packages/playground/uts/nativeplugins/test-uniplugin/package.json b/packages/playground/uts/nativeplugins/test-uniplugin/package.json deleted file mode 100644 index bc81161d4f77c907b79062d8fbd2f5c87ff636b8..0000000000000000000000000000000000000000 --- a/packages/playground/uts/nativeplugins/test-uniplugin/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "UTS Plugin", - "id": "DCloud-UTSPlugin", - "version": "0.0.1", - "description": "UTS示例插件", - "main":"interface", - "_dp_type":"nativeplugin", - "_dp_nativeplugin":{ - "android": { - "plugins": [ - { - "type": "module", - "name": "DCloud-UTSPlugin", - "class": "io.dcloud.uniplugin.TestModule" - }, - { - "type": "component", - "name": "uts-richtext", - "class": "io.dcloud.uniplugin.TestComponent" - } - ], - "integrateType": "uts", - "dependencies":[ - { - "id": "com.zzhoujay.richtext:richtext", - "source": "implementation 'com.zzhoujay.richtext:richtext:3.0.7'" - } - ], - "minSdkVersion" : 21 - } - } -} \ No newline at end of file diff --git a/packages/playground/uts/uni_modules/test-uniplugin/app-android/index.uts b/packages/playground/uts/uni_modules/test-uniplugin/app-android/index.uts index 89b4616b86fc43cf79d8688db7e60dd8edc3f9a8..247209d5b95a71047cd20163bfe6102c4b403768 100644 --- a/packages/playground/uts/uni_modules/test-uniplugin/app-android/index.uts +++ b/packages/playground/uts/uni_modules/test-uniplugin/app-android/index.uts @@ -1,8 +1,9 @@ -import IUniLogin, { OnConnect, RegisterOptions } from '../interface.uts' +import IUniLogin from '../interface' +import { OnConnect, RegisterOptions } from '../interface' export default class UniLogin implements IUniLogin { //@UniJSMethod({ uiThread: true }) - + override login(name, code) { console.log(name, code) } diff --git a/packages/playground/uts/uni_modules/test-uniplugin/interface.uts b/packages/playground/uts/uni_modules/test-uniplugin/interface.uts index 1de2c53d7b458437aae86d2ebbf4eab92586cd1d..882817b3cc20e77c04a31c4ba36bfd2055e28ed0 100644 --- a/packages/playground/uts/uni_modules/test-uniplugin/interface.uts +++ b/packages/playground/uts/uni_modules/test-uniplugin/interface.uts @@ -14,6 +14,3 @@ export default interface IUniLogin { register: (opts: RegisterOptions) => Promise onConnect: (callback: OnConnect) => void } - -// import UniLogin from '@uni_modules/uni-login' -// new UniLogin() diff --git a/packages/playground/uts/uni_modules/test-uniplugin/test.ts b/packages/playground/uts/uni_modules/test-uniplugin/test.ts deleted file mode 100644 index 95497e2d9a6bb814847e66807706777b8895dcbc..0000000000000000000000000000000000000000 --- a/packages/playground/uts/uni_modules/test-uniplugin/test.ts +++ /dev/null @@ -1,24 +0,0 @@ -// 接口 -interface IUniLogin { - login(): void -} -// 父类/基类 -class BaseUniLogin { - register() {} -} -// 子类实现 -class UniLogin extends BaseUniLogin implements IUniLogin { - // 实现接口的方法,不能写 override 关键词,因为 override 关键词仅能在实现父类的属性或方法上使用 - login() {} - // 实现或覆盖父类的方法,可写可不写 override - override register(): void {} -} - -async function testAsync(): Promise { - return 1 -} - -async function main() { - const res = await testAsync() - return res -} diff --git a/packages/playground/uts/unpackage/dist/app-plus/uni_modules/test-uniplugin/android/app-android/index.kt b/packages/playground/uts/unpackage/dist/app-plus/uni_modules/test-uniplugin/android/app-android/index.kt new file mode 100644 index 0000000000000000000000000000000000000000..19e00fe173939256e5a6d2cab1b3c95f3b02b04f --- /dev/null +++ b/packages/playground/uts/unpackage/dist/app-plus/uni_modules/test-uniplugin/android/app-android/index.kt @@ -0,0 +1,15 @@ +package index; +import ...interface.interface as IUniLogin; +import ...interface.OnConnect; +import ...interface.RegisterOptions; +open class UniLogin : IUniLogin { + override fun login(name, code) { + console.log(name, code); + } + open fun async register(opts: RegisterOptions) { + opts.callback1(true); + opts.callback2(true); + opts.abc.callback3(true); + } + override fun onConnect(callback: OnConnect) {} +} diff --git a/packages/playground/uts/unpackage/nativeplugins/test-uniplugin-android/android/src/io/dcloud/uniplugin/TestModule.kt b/packages/playground/uts/unpackage/nativeplugins/test-uniplugin-android/android/src/io/dcloud/uniplugin/TestModule.kt deleted file mode 100644 index 0ec405cd092bbfd1a362cb638b38b18692f13c8c..0000000000000000000000000000000000000000 --- a/packages/playground/uts/unpackage/nativeplugins/test-uniplugin-android/android/src/io/dcloud/uniplugin/TestModule.kt +++ /dev/null @@ -1,36 +0,0 @@ -package io.dcloud.uniplugin.TestModule; -import android.content.Intent; -import com.alibaba.fastjson.JSONObject; -import io.dcloud.feature.uniapp.common.UniModule; -import io.dcloud.feature.uniapp.annotation.UniJSMethod; -import io.dcloud.feature.uniapp.bridge.UniJSCallback; -import io.dcloud.uniplugin.log.log; -open class TestModule : UniLogin { - open var TAG = "TestModule"; - @UniJSMethod( uiThread = true ) - open fun async testAsyncFunc(options: JSONObject, callback: UniJSCallback?) { - log(this.TAG, "testAsyncFunc--$options"); - if (callback != null) { - val data = JSONObject(); - data["code"] = "success12312"; - callback.invoke(data); - } - } - @UniJSMethod( uiThread = false ) - open fun testSyncFunc(options: JSONObject): JSONObject { - val data = JSONObject(); - data["code"] = "success456"; - return data; - } - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { - if (requestCode == TestModule.REQUEST_CODE && data.hasExtra("respond")) { - log(this.TAG, "原生页面返回----" + data.getStringExtra("respond")); - } - else { - super.onActivityResult(requestCode, resultCode, data); - } - } - companion object { - var REQUEST_CODE = 1000; - } -} diff --git a/packages/playground/uts/unpackage/nativeplugins/test-uniplugin-android/android/src/io/dcloud/uniplugin/log.kt b/packages/playground/uts/unpackage/nativeplugins/test-uniplugin-android/android/src/io/dcloud/uniplugin/log.kt deleted file mode 100644 index 874213fbdb81e131cf363db881e9b1d2344d18f0..0000000000000000000000000000000000000000 --- a/packages/playground/uts/unpackage/nativeplugins/test-uniplugin-android/android/src/io/dcloud/uniplugin/log.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.dcloud.uniplugin.log; -import android.util.Log; -fun log(tag: String, msg: String) { - Log.e(tag, msg); -} diff --git a/packages/playground/uts/unpackage/nativeplugins/test-uniplugin-android/android/src/test.kt b/packages/playground/uts/unpackage/nativeplugins/test-uniplugin-android/android/src/test.kt deleted file mode 100644 index 2e832fb924a1c57687b22a754af39fb740f6e869..0000000000000000000000000000000000000000 --- a/packages/playground/uts/unpackage/nativeplugins/test-uniplugin-android/android/src/test.kt +++ /dev/null @@ -1,5 +0,0 @@ -package test; -import android.util.Log; -fun log(tag: String, msg: String) { - Log.e(tag, msg); -} diff --git a/packages/playground/uts/unpackage/nativeplugins/test-uniplugin-ios/ios/src/TestSwiftComponent.swift b/packages/playground/uts/unpackage/nativeplugins/test-uniplugin-ios/ios/src/TestSwiftComponent.swift deleted file mode 100644 index 6e167d8fb765e444599bb993c5c1ba275339ca13..0000000000000000000000000000000000000000 --- a/packages/playground/uts/unpackage/nativeplugins/test-uniplugin-ios/ios/src/TestSwiftComponent.swift +++ /dev/null @@ -1,52 +0,0 @@ -import UIKit; -import MapKit; -@objc(TestSwiftComponent) -class TestSwiftComponent : DCUniComponent, MKMapViewDelegate { - var mapLoadedEvent = false; - var showTraffic = false; - var mapView: MKMapView? = nil; - override func onCreateComponent(_ ref: String, _ type: String, _ styles: [AnyHashable: Any], _ attributes: [AnyHashable: Any], _ events: [Any], _ uniInstance: DCUniSDKInstance) { - self.showTraffic = DCUniConvert.bool(attributes[AnyHashable("showTraffic")] ?? false); - } - override func loadView() -> UIView { - self.mapView = MKMapView.init(); - return self.mapView!; - } - override func viewDidLoad() { - self.mapView!.delegate = self; - if (self.showTraffic) { - self.mapView.showsTraffic = true; - } - } - override func updateAttributes(_ attributes: [AnyHashable: Any] = Dictionary()) { - if (attributes["showsTraffic"] != nil) { - self.showTraffic = DCUniConvert.bool(attributes[AnyHashable("showsTraffic")]!); - self.mapView.showsTraffic = self.showTraffic; - } - } - override func addEvent(_ eventName: String) { - if (eventName == "mapLoaded") { - self.mapLoadedEvent = true; - } - } - override func removeEvent(_ eventName: String) { - if (eventName == "mapLoaded") { - self.mapLoadedEvent = false; - } - } - @objc - public static func wx_export_method_0() -> String { - return "focus:"; - } - @objc - func focus(_ options: NSDictionary) { - print(options); - } - func mapViewDidFinishLoadingMap(_ mapView: MKMapView) { - if (self.mapLoadedEvent) { - self.fireEvent("mapLoaded", [ - "mapLoaded": "success" - ]); - } - } -} diff --git a/packages/playground/uts/unpackage/nativeplugins/test-uniplugin-ios/ios/src/TestSwiftModule.swift b/packages/playground/uts/unpackage/nativeplugins/test-uniplugin-ios/ios/src/TestSwiftModule.swift deleted file mode 100644 index 9287b118c1fa285242f1e4d541ded40dac8be936..0000000000000000000000000000000000000000 --- a/packages/playground/uts/unpackage/nativeplugins/test-uniplugin-ios/ios/src/TestSwiftModule.swift +++ /dev/null @@ -1,26 +0,0 @@ -@objc(TestSwiftModule) -class TestSwiftModule : DCUniModule { - @objc - public static func wx_export_method_0() -> String { - return "testAsyncFunc::"; - } - @objc - func testAsyncFunc(_ options: NSDictionary, _ callback: UniModuleKeepAliveCallback?) { - print(options); - if (callback != nil) { - callback!("success", false); - } - } - @objc - public static func wx_export_method_sync_0() -> String { - return "testSyncFunc:"; - } - @objc - func testSyncFunc(_ options: NSDictionary) -> String { - print(options); - return getSomeString(); - } - func getSomeString() -> String { - return "getSomeString success"; - } -} diff --git a/packages/uni-uts-vite/src/plugins/v1.ts b/packages/uni-uts-vite/src/plugins/v1.ts index 3f1da33a890e7e3e1faab5d9db607b9dd0116b5c..8d838f1f20a8073398ef86c15f8f70f5d1950aff 100644 --- a/packages/uni-uts-vite/src/plugins/v1.ts +++ b/packages/uni-uts-vite/src/plugins/v1.ts @@ -11,7 +11,6 @@ import { } from '../../types/types' // 需要区分 android,iOS export function uniUtsV1Plugin(): Plugin { - // TODO 1.0 版本,解析到 uts module 时,动态编译 uts ? let moduleCode: string return { name: 'uni:uts-v1', @@ -29,7 +28,7 @@ export function uniUtsV1Plugin(): Plugin { if (!moduleName) { return } - // 懒加载 uts + // 懒加载 uts 编译器 // eslint-disable-next-line no-restricted-globals const { parse } = require('@dcloudio/uts') const ast = await parse(code) @@ -39,9 +38,12 @@ export function uniUtsV1Plugin(): Plugin { 'utf8' ) } - return moduleCode + code = moduleCode .replace(`__MODULE_NAME__`, moduleName) .replace(`'__MODULE_DEFINE__'`, JSON.stringify(parseModuleDefines(ast))) + // TODO compile uts + + return code }, } } diff --git a/packages/uni-uts-vite/src/utils/compiler.ts b/packages/uni-uts-vite/src/utils/compiler.ts new file mode 100644 index 0000000000000000000000000000000000000000..672424979b229243fcc620327533480080a83a70 --- /dev/null +++ b/packages/uni-uts-vite/src/utils/compiler.ts @@ -0,0 +1,23 @@ +import { parse, runBuild, UtsTarget } from '@dcloudio/uts' +import path from 'path' +export function getUtsCompiler(): { + parse: typeof parse + runBuild: typeof runBuild + UtsTarget: typeof UtsTarget +} { + // eslint-disable-next-line no-restricted-globals + return require('@dcloudio/uts') +} +export function compile(pluginDir: string) { + const { runBuild, UtsTarget } = getUtsCompiler() + runBuild(UtsTarget.KOTLIN, { + input: { + dir: path.join(process.env.UNI_INPUT_DIR, pluginDir), + }, + output: { + dir: path.join(process.env.UNI_OUTPUT_DIR, pluginDir), + sourceMap: true, + extname: '', + }, + }) +} diff --git a/packages/uts-darwin-arm64/uts.darwin-arm64.node b/packages/uts-darwin-arm64/uts.darwin-arm64.node index e87312bab0a1f6b81566d764acfc00a7e036a11f..e467eb5fe50a9c44ac00bfe4995daa9ceba8319f 100755 Binary files a/packages/uts-darwin-arm64/uts.darwin-arm64.node and b/packages/uts-darwin-arm64/uts.darwin-arm64.node differ diff --git a/packages/uts-darwin-x64/uts.darwin-x64.node b/packages/uts-darwin-x64/uts.darwin-x64.node index d1ba6a01dfc2ec5faace289db24965a064f13582..afee7517b5fcd3b8780cdca711dc5beafb2cd99e 100755 Binary files a/packages/uts-darwin-x64/uts.darwin-x64.node and b/packages/uts-darwin-x64/uts.darwin-x64.node differ diff --git a/packages/uts-win32-ia32-msvc/uts.win32-ia32-msvc.node b/packages/uts-win32-ia32-msvc/uts.win32-ia32-msvc.node index 2cfd7d2ebe46785dd2f5ededc0d4b4e71cee3427..4964478c2703d68fc8bfb4411d3e339ac66fa58c 100644 Binary files a/packages/uts-win32-ia32-msvc/uts.win32-ia32-msvc.node and b/packages/uts-win32-ia32-msvc/uts.win32-ia32-msvc.node differ diff --git a/packages/uts-win32-x64-msvc/uts.win32-x64-msvc.node b/packages/uts-win32-x64-msvc/uts.win32-x64-msvc.node index 8f3583af7fa51d3e37faca3c3d9da16bc1544bab..7bef98cbbbc52173b053816c7cfd701726b89b9e 100644 Binary files a/packages/uts-win32-x64-msvc/uts.win32-x64-msvc.node and b/packages/uts-win32-x64-msvc/uts.win32-x64-msvc.node differ diff --git a/packages/uts/src/api.ts b/packages/uts/src/api.ts index 6195e16a51faa37721fc4f753dc5bf3fb0cb5120..25af780ebffc4f2e6948cebe177ba4e9f386bb83 100644 --- a/packages/uts/src/api.ts +++ b/packages/uts/src/api.ts @@ -20,7 +20,10 @@ function resolveOptions(options: UtsOptions) { } if (output.sourceMap === true) { output.sourceMap = output.outDir - } else if (output.sourceMap === false) { + } else if ( + output.sourceMap === false || + typeof output.sourceMap === 'undefined' + ) { output.sourceMap = '' } if (!output.imports) { diff --git a/packages/uts/src/index.ts b/packages/uts/src/index.ts index 85af8b318a98b7a34acd19a8f281a512792c89ad..32e297c41d6ec25ce2cfb135bc1b37cc8a0accdd 100644 --- a/packages/uts/src/index.ts +++ b/packages/uts/src/index.ts @@ -27,8 +27,8 @@ export enum UtsTarget { export type UtsMode = 'dev' | 'build' const UtsTargetDirs = { - [UtsTarget.KOTLIN]: 'android', - [UtsTarget.SWIFT]: 'ios', + [UtsTarget.KOTLIN]: 'app-android', + [UtsTarget.SWIFT]: 'app-ios', } as const export const UtsTargetExtNames = { @@ -58,12 +58,12 @@ export interface ToOptions { /** * 是否生成 sourceMap,为 string 时,表示生成的 sourceMap 目标目录 */ - sourceMap: boolean | string + sourceMap?: boolean | string /** * sourceMap 中是否包含源码 */ inlineSourcesContent?: boolean - extname: string + extname?: string } } @@ -99,6 +99,9 @@ function parseOptions( if (!opts.output.dir) { opts.output.dir = resolveDefaultOutputDir(mode, input.dir) } + if (!opts.output.extname) { + opts.output.extname = UtsTargetExtNames[target] + } opts.silent = opts.silent === true return opts as ToOptions } @@ -106,7 +109,7 @@ function parseOptions( const EXTNAME = '.uts' function resolveSrcDir(target: UtsTarget, dir: string) { - return path.join(dir, UtsTargetDirs[target] + '/src') + return path.join(dir, UtsTargetDirs[target]) } function initInputOptions(_: UtsTarget, root: string): UtsInputOptions { @@ -119,12 +122,12 @@ function initInputOptions(_: UtsTarget, root: string): UtsInputOptions { function initOutputOptions( target: UtsTarget, outDir: string, - sourceMap: string | boolean, + sourceMap: string | boolean | undefined, inlineSourcesContent: boolean ): UtsOutputOptions { return { outDir, - sourceMap, + sourceMap: sourceMap ? sourceMap : false, inlineSourcesContent, extname: UtsTargetExtNames[target], } @@ -227,16 +230,7 @@ interface DoBuildOptions { function doBuild( target: UtsTarget, - { - watch, - silent, - extname, - inputDir, - inputSrcDir, - outputDir, - input, - output, - }: DoBuildOptions + { watch, silent, extname, inputSrcDir, input, output }: DoBuildOptions ) { const files = glob.sync('**/*' + extname, { absolute: true, @@ -252,16 +246,10 @@ function doBuild( } as UtsResult }) ) - ) - .then((res) => { - return copyAssets(UtsTarget.KOTLIN, inputDir, outputDir, extname!).then( - () => res - ) - }) - .then((res) => { - !silent && printUtsResults(res, watch) - return res - }) + ).then((res) => { + !silent && printUtsResults(res, watch) + return res + }) } function build(target: UtsTarget, toOptions: ToOptions) { @@ -286,38 +274,6 @@ function build(target: UtsTarget, toOptions: ToOptions) { }) } -function copyAssets( - target: UtsTarget, - inputDir: string, - outputDir: string, - extname: string -) { - inputDir = path.resolve(inputDir) - outputDir = path.resolve(outputDir) - const kotlinRootDir = path.join(inputDir, UtsTargetDirs[UtsTarget.KOTLIN]) - const swiftRootDir = path.join(inputDir, UtsTargetDirs[UtsTarget.SWIFT]) - return fs.copy(inputDir, outputDir, { - filter(src) { - if (target === UtsTarget.KOTLIN) { - if (src === swiftRootDir) { - return false - } - } else if (target === UtsTarget.SWIFT) { - if (src === kotlinRootDir) { - return false - } - } - if (path.basename(src).startsWith('.')) { - return false - } - if (fs.lstatSync(src).isDirectory()) { - return false - } - return ![extname, '.ts'].includes(path.extname(src)) - }, - }) -} - function buildFile( target: UtsTarget, filename: string, diff --git a/packages/uts/src/types.ts b/packages/uts/src/types.ts index e492213bcf144d13d5fe10639b861c4d545182d5..8a5602b03a61a1b30e9dc8c1b2d7b0aae7380a98 100644 --- a/packages/uts/src/types.ts +++ b/packages/uts/src/types.ts @@ -19,7 +19,7 @@ export type UtsInputOptions = UtsParseOptions & { export type UtsOutputOptions = { outDir: string imports?: string[] - sourceMap: boolean | string + sourceMap?: boolean | string inlineSourcesContent?: boolean extname: string } diff --git a/scripts/test.js b/scripts/test.js index 2197049c7156b65570e8a7e448e95cfb3602731a..bf80ebee9561afadb853a79af43ce789cdcf7103 100644 --- a/scripts/test.js +++ b/scripts/test.js @@ -18,13 +18,13 @@ parse( runBuild(UtsTarget.KOTLIN, { silent: false, input: { - dir: path.resolve(projectDir, 'nativeplugins/test-uniplugin'), + dir: path.resolve(projectDir, 'uni_modules/test-uniplugin'), extname: '.uts', }, output: { dir: path.resolve( projectDir, - 'unpackage/nativeplugins/test-uniplugin-android' + 'unpackage/dist/app-plus/uni_modules/test-uniplugin/android' ), sourceMap: false, inlineSourcesContent: false, @@ -33,11 +33,14 @@ runBuild(UtsTarget.KOTLIN, { runBuild(UtsTarget.SWIFT, { silent: false, input: { - dir: path.resolve(projectDir, 'nativeplugins/test-uniplugin'), + dir: path.resolve(projectDir, 'uni_modules/test-uniplugin'), extname: '.uts', }, output: { - dir: path.resolve(projectDir, 'unpackage/nativeplugins/test-uniplugin-ios'), + dir: path.resolve( + projectDir, + 'unpackage/dist/app-plus/uni_modules/test-uniplugin/ios' + ), sourceMap: false, inlineSourcesContent: false, },